# Mapping

> Welche Daten zwischen Business Central und Customer Engagement ausgetauscht werden — Übersicht, Datenfluss und vollständige Mapping-Liste.

---

LLMS index: [llms.txt](/llms.txt)

---

<div class="pageinfo pageinfo-primary">

Diese Seite und ihre Unterseiten richten sich an die IT-Administration. Ab hier folgen
Feldnamen, API-Endpunkte und Job-Konfigurationsdetails — für einen fachlichen Überblick
siehe [Architektur](../architektur/) und [Business-Logik](../business-logik/).

</div>


Der Datenaustausch zwischen **Business Central (BC)** und **Customer Engagement (CE / Dataverse)**
läuft vollständig über die **DataBridge**. Sie besteht aus zwei Konfigurationsebenen:

* **Job** — *wann* und *unter welcher Bedingung* etwas übertragen wird
  (Zeitplan, Filter, Reihenfolge, Watermark, Quell-/Zielverbindung)
* **Mapping** — *was* übertragen wird
  (Feldzuordnung Quelle → Ziel inkl. Key-Auflösung und Transformationen)

Aktuell sind **38 Jobs** mit **38 Mappings** und insgesamt **290 Feldzuordnungen** konfiguriert.
Zu jedem Job gehört genau ein Mapping.

## Übersicht — welche Daten werden ausgetauscht?

Auf oberster Ebene lassen sich die Daten in vier Gruppen einteilen:

```mermaid
flowchart LR
  subgraph BC["Business Central"]
    direction TB
    BC1["Stammdaten<br/>Länder · Sprachen · Anreden<br/>Verkäufer · Positionen · Rabattgruppen"]
    BC2["Produkte<br/>Verkaufschancen-Elemente"]
    BC3["Belege<br/>Angebote · Angebotspositionen<br/>Kalkulationselemente"]
    BC4["Abonnements<br/>Serviceobjekte · Servicevereinbarungen"]
    BC5["Geschäftspartner<br/>Firmen · Kontakte"]
    BC6["Verkaufschancen"]
  end

  subgraph CE["Customer Engagement"]
    direction TB
    CE1["Wertelisten<br/>wysa_country · wysa_language · …"]
    CE2["Produkte<br/>product"]
    CE3["Angebote<br/>quote · quotedetail"]
    CE4["Abonnements<br/>wysa_bcserviceobject(commitment)"]
    CE5["Firma / Kontakt<br/>account · contact"]
    CE6["Verkaufschance<br/>opportunity · opportunityproduct"]
  end

  BC1 -->|Referenzdaten| CE1
  BC2 -->|Produkte| CE2
  BC3 -->|Angebote & Preise| CE3
  BC4 -->|Abo-Bestand| CE4
  BC5 <-->|in beide Richtungen| CE5
  CE6 -->|nur CE → BC| BC6
```

Daraus ergeben sich vier grundsätzliche Muster:

| Muster | Richtung | Beispiele | Charakter |
|---|---|---|---|
| **Referenz- und Belegdaten** | BC → CE | Länder, Sprachen, Verkäufer, Produkte, Angebote, Abonnements | BC ist führendes System, CE liest nur |
| **Geschäftspartner** | CE ⇄ BC | Firma, Kontakt | in beide Richtungen: CE legt an und ändert, BC liefert Nummern zurück und überträgt eigene Änderungen nach CE |
| **Verkaufschancen** | CE → BC | Verkaufschance, Verkaufschancen-Produkt | nur CE → BC; BC meldet lediglich die vergebene Nummer zurück (Response-Job), Änderungen in BC kommen nicht nach CE |
| **Löschungen** | BC → CE | alle `*Delete`-Jobs | über das BC-Änderungsprotokoll (`acdlogentries`); Stammdaten werden deaktiviert, Angebote storniert, Angebotspositionen gelöscht |

Der Detailfluss inklusive Response-Jobs und Löschverarbeitung steht unter
[Datenfluss](datenfluss/).

## Vollständige Liste der Mappings

Sortiert nach der Ausführungsreihenfolge (`Order`) des zugehörigen Jobs.
„Felder" = Anzahl der Feldzuordnungen, „Ops" = davon mit Transformation
(Lookup, OptionSet, Concat, …).

### Stammdaten und Produkte (BC → CE)

| Order | Mapping | Job | Richtung | Quelle (BC API Page) | Ziel (CE Entity) | Felder | Ops | Läuft |
|---|---|---|---|---|---|---|---|---|
| 110 | [`BCCountries`](stammdaten/wertelisten/) | `countriesfrombc` | BC → CE | `acdcountryregions` | `wysa_country` | 4 | 0 | Zeitplan |
| 115 | [`BCLanguages`](stammdaten/wertelisten/) | `languagesfrombc` | BC → CE | `acdlanguages` | `wysa_language` | 3 | 0 | Zeitplan |
| 120 | [`BCSalutations`](stammdaten/wertelisten/) | `salutationsfrombc` | BC → CE | `acdsalutations` | `wysa_bcsalutation` | 3 | 0 | Zeitplan |
| 125 | [`BCCustomerDiscountGroups`](stammdaten/wertelisten/) | `customerdiscountgroupsfrombc` | BC → CE | `acdcustomerdiscgroups` | `wysa_bccustomerdiscountgroup` | 3 | 0 | Zeitplan |
| 130 | [`BCSalesPersons`](stammdaten/bcsalespersons/) | `salespersonsfrombc` | BC → CE | `acdsalespersons` | `wysa_bcsalesperson`, `wysa_salesperson` | 4 | 0 | Zeitplan |
| 135 | [`BCPositions`](stammdaten/wertelisten/) | `positionsfrombc` | BC → CE | `acdorganizationallevels` | `wysa_bcposition` | 3 | 0 | Zeitplan |
| 190 | [`BCOpportunityElements`](verkaufschance/bcopportunityelements/) | `opportunityelementsfrombc` | BC → CE | `acdopportunityelements` | `product` | 10 | 3 | Zeitplan |

### Geschäftspartner und Verkaufschancen (CE → BC, mit Response)

| Order | Mapping | Job | Richtung | Quelle | Ziel | Felder | Ops | Läuft |
|---|---|---|---|---|---|---|---|---|
| 220 | [`CEAccounts`](firma/ceaccounts/) | `accountsnewfromce` | CE → BC | `account` | `acdcontactscomp` | 14 | 4 | Zeitplan |
| 221 | [`BCAccountsResponse`](firma/bcaccountsresponse/) | `accountsresponsefrombc` | BC → CE | `acdcontactscomp` | `account` | 3 | 1 | per Response-Job |
| 240 | [`CEContacts`](kontakt/cecontacts/) | `contactsnewfromce` | CE → BC | `contact` | `acdcontacts` | 17 | 6 | Zeitplan |
| 241 | [`BCContactsResponse`](kontakt/bccontactsresponse/) | `contactsresponsefrombc` | BC → CE | `acdcontacts` | `contact` | 9 | 2 | per Response-Job |
| 260 | [`CEOpportunities`](verkaufschance/ceopportunities/) | `opportunitiesnewfromce` | CE → BC | `opportunity` | `acdopportunities` | 8 | 4 | Zeitplan |
| 261 | [`BCOpportunitiesResponse`](verkaufschance/bcopportunitiesresponse/) | `opportunitiesresponsefrombc` | BC → CE | `acdopportunities`, `acdcontacts` | `opportunity` | 3 | 1 | per Response-Job |
| 520 | [`CEAccountUpdates`](firma/ceaccountupdates/) | `accountupdatesfromce` | CE → BC | `account` | `acdcontactscomp` | 13 | 2 | Zeitplan |
| 530 | [`CEContactsUpdates`](kontakt/cecontactsupdates/) | `contactupdatesfromce` | CE → BC | `contact` | `acdcontacts` | 18 | 5 | Zeitplan |
| 710 | [`CEOpportunityProducts`](verkaufschance/ceopportunityproducts/) | `opportunityproductsnewfromce` | CE → BC | `opportunityproduct` | `acdopportunitycalculationelements` | 8 | 2 | Zeitplan |
| 750 | [`CEOpportunityProductsUpdates`](verkaufschance/ceopportunityproductsupdates/) | `opportunityproductsupdatesfromce` | CE → BC | `opportunityproduct` | `acdopportunitycalculationelements` | 6 | 2 | Zeitplan |
| 760 | [`BCOpportunityProductsResponse`](verkaufschance/bcopportunityproductsresponse/) | `opportunityproductsresponsefrombc` | BC → CE | `acdopportunitycalculationelements` | `opportunityproduct` | 2 | 1 | per Response-Job |

### Geschäftspartner (BC → CE)

| Order | Mapping | Job | Richtung | Quelle | Ziel | Felder | Ops | Läuft |
|---|---|---|---|---|---|---|---|---|
| 410 | [`BCAccounts`](firma/bcaccounts/) | `accountsfrombc` | BC → CE | `acdcontactscomp` | `account` | 18 | 5 | Zeitplan |
| 430 | [`BCContacts`](kontakt/bccontacts/) | `contactsfrombc` | BC → CE | `acdcontacts` | `contact` | 18 | 6 | Zeitplan |

### Abonnements (BC → CE)

| Order | Mapping | Job | Richtung | Quelle | Ziel | Felder | Ops | Läuft |
|---|---|---|---|---|---|---|---|---|
| 550 | [`BCServiceObjects`](abonnement/bcserviceobjects/) | `serviceobjectsfrombc` | BC → CE | `serviceObjects` | `wysa_bcserviceobject` | 17 | 5 | Zeitplan |
| 560 | [`BCServiceCommitments`](abonnement/bcservicecommitments/) | `servicecommitmentsfrombc` | BC → CE | `serviceCommitments` | `wysa_bcserviceobjectcommitment` | 27 | 4 | Zeitplan |

### Angebote (BC → CE)

| Order | Mapping | Job | Richtung | Quelle | Ziel | Felder | Ops | Läuft |
|---|---|---|---|---|---|---|---|---|
| 610 | [`BCSalesQuotes`](angebot/bcsalesquotes/) | `salesquotesfrombc` | BC → CE | `acdsalesheaders` | `quote` | 10 | 3 | Zeitplan |
| 620 | [`BCSalesCalculationElements`](angebot/bcsalescalculationelements/) | `salescalculationelementsfrombc` | BC → CE | `acdsalescalculationelements` | `quotedetail` | 8 | 3 | Zeitplan |
| 625 | [`BCSalesQuotesActivate`](angebot/bcsalesquotesactivate/) | `activatesalesquotesfrombc` | BC → CE | `acdlogentries` | `quote` | 3 | 1 | Zeitplan |

### Löschungen (BC → CE, Quelle immer das Änderungsprotokoll `acdlogentries`)

| Order | Mapping | Job | Ziel | Verhalten in CE | Felder | Läuft |
|---|---|---|---|---|---|---|
| 420 | [`BCAccountsDelete`](firma/bcaccountsdelete/) | `accountsfrombcdelete` | `account` | deaktivieren | 3 | Zeitplan |
| 440 | [`BCContactsDelete`](kontakt/bccontactsdelete/) | `contactsfrombcdelete` | `contact`, `account` | deaktivieren | 3 | Zeitplan |
| 450 | [`BCProductsDelete`](stammdaten/bcproductsdelete/) | `productsfrombcdelete` | `product` | deaktivieren | 3 | Zeitplan |
| 621 | [`BCSalesCalculationElementsDelete`](angebot/bcsalescalculationelementsdelete/) | `salescalculationelementsfrombcdelete` | `quotedetail` | löschen | 1 | Zeitplan |
| 690 | [`BCSalesQuotesDelete`](angebot/bcsalesquotesdelete/) | `salesquotesfrombcdelete` | `quote` | schließen (Storniert) | 3 | Zeitplan |

> **Was in der Spalte Läuft steht**
>
> **Zeitplan** heißt: Der Job wird nach seinem eigenen Zeitplan gestartet — alle zwei oder
> alle drei Minuten. **Per Response-Job** betrifft die vier Rückmelde-Jobs: Sie haben
> keinen eigenen Zeitplan, sondern werden unmittelbar von ihrem auslösenden Job über das
> Feld `ResponseJob` aufgerufen.
> 
> Welcher Job in welcher Folge und in welchem Takt läuft, steht unter
> [Datenfluss](datenfluss/#ausführungsreihenfolge-und-takt).



## Detailseiten

Die Detailseiten sind nach **Datenbereich** gegliedert, nicht nach Job. Jeder Bereich hat
eine Übersichtsseite mit dem Gesamtbild und darunter je eine Seite pro Schritt.

Grundlage aller Belegketten sind die [**Stammdaten**](stammdaten/) — die Wertelisten aus
Business Central, aus denen die Belege ihre Verknüpfungen bilden:

| Order | Mapping | Seite |
|---|---|---|
| 110 – 135 | `BCCountries`, `BCLanguages`, `BCSalutations`, `BCCustomerDiscountGroups`, `BCPositions` | [Wertelisten aus BC](stammdaten/wertelisten/) |
| 130 | [`BCSalesPersons`](stammdaten/bcsalespersons/) | [Verkäufer aus BC](stammdaten/bcsalespersons/) |
| 450 | [`BCProductsDelete`](stammdaten/bcproductsdelete/) | [Produkte deaktivieren](stammdaten/bcproductsdelete/) |


Vollständig dokumentiert sind bisher **Firma** und **Kontakt**:

| Schritt | [Firma](firma/) | [Kontakt](kontakt/) |
|---|---|---|
| Aus BC übernehmen | [`BCAccounts`](firma/bcaccounts/) (410) | [`BCContacts`](kontakt/bccontacts/) (430) |
| Neu nach BC | [`CEAccounts`](firma/ceaccounts/) (220) | [`CEContacts`](kontakt/cecontacts/) (240) |
| Rückmeldung aus BC | [`BCAccountsResponse`](firma/bcaccountsresponse/) (221) | [`BCContactsResponse`](kontakt/bccontactsresponse/) (241) |
| Änderungen nach BC | [`CEAccountUpdates`](firma/ceaccountupdates/) (520) | [`CEContactsUpdates`](kontakt/cecontactsupdates/) (530) |
| Löschung aus BC | [`BCAccountsDelete`](firma/bcaccountsdelete/) (420) | [`BCContactsDelete`](kontakt/bccontactsdelete/) (440) |

Das [**Angebot**](angebot/) läuft ausschließlich von Business Central nach Customer
Engagement und schließt damit den Kreis zur Verkaufschance:

| Schritt | Angebotskopf | Positionen |
|---|---|---|
| Aus BC übernehmen | [`BCSalesQuotes`](angebot/bcsalesquotes/) (610) | [`BCSalesCalculationElements`](angebot/bcsalescalculationelements/) (620) |
| Statuswechsel aus BC | [`BCSalesQuotesActivate`](angebot/bcsalesquotesactivate/) (625) | — |
| Löschung aus BC | [`BCSalesQuotesDelete`](angebot/bcsalesquotesdelete/) (690) | [`BCSalesCalculationElementsDelete`](angebot/bcsalescalculationelementsdelete/) (621) |


Das [**Abonnement**](abonnement/) ist ein eigenständiger Bereich, ebenfalls nur von
Business Central nach Customer Engagement:

| Schritt | Mapping |
|---|---|
| Abonnements aus BC | [`BCServiceObjects`](abonnement/bcserviceobjects/) (550) |
| Abonnementzeilen aus BC | [`BCServiceCommitments`](abonnement/bcservicecommitments/) (560) |

Eine rein technische, tabellarische Sicht auf alle Jobs in Ausführungsreihenfolge bietet
die Sektion [Technisches Mapping](technisches-mapping/).

Damit sind alle aktiven Mappings der Integration dokumentiert.

Die [**Verkaufschance**](verkaufschance/) weicht vom Muster ab — sie läuft nur in eine
Richtung und hat eine zweite Kette für die Positionen:

| Schritt | Verkaufschance | Positionen |
|---|---|---|
| Stammdaten | — | [`BCOpportunityElements`](verkaufschance/bcopportunityelements/) (190) |
| Neu nach BC | [`CEOpportunities`](verkaufschance/ceopportunities/) (260) | [`CEOpportunityProducts`](verkaufschance/ceopportunityproducts/) (710) |
| Rückmeldung aus BC | [`BCOpportunitiesResponse`](verkaufschance/bcopportunitiesresponse/) (261) | [`BCOpportunityProductsResponse`](verkaufschance/bcopportunityproductsresponse/) (760) |
| Änderungen nach BC | — | [`CEOpportunityProductsUpdates`](verkaufschance/ceopportunityproductsupdates/) (750) |
| Löschung aus BC | — | — |

### Aufbau einer Detailseite

Jede Schrittseite ist zweigeteilt: zuerst die fachliche Sicht, danach die technische.

1. **Steckbrief** — Richtung, Takt, Betroffene, technische Zuordnung
2. **Was passiert hier?** — der Vorgang in Prosa
3. **Welche Felder?** — Feldtabelle mit Anzeigenamen beider Systeme
4. **Worauf zu achten ist** — fachliche Besonderheiten und Stolperfallen
5. **Technische Details** — aufklappbar: Job-Konfiguration, Key-Auflösung,
   technische Feldnamen, Transformationen als JSON

Wer die Lösung anwendet, liest die ersten vier Punkte. Wer sie wartet oder erweitert,
klappt den fünften auf.

Die technischen Grundlagen (Jobs, Konnektoren, Transformationen) stehen in der
[DataBridge-Dokumentation](https://databridge.docs.dsyr.de/).

---

Section pages:

- [Datenfluss](/docs/mapping/datenfluss/): Wie die DataBridge-Jobs ineinandergreifen — Zeitplan, Filter, Response-Jobs und Löschverarbeitung.
- [Stammdaten](/docs/mapping/stammdaten/): Die Wertelisten aus Business Central — Grundlage für fast jede Zuordnung in den Belegketten.
- [Firma](/docs/mapping/firma/): Wie Firmen zwischen Customer Engagement und Business Central abgeglichen werden — Gesamtbild und die fünf Schritte im Detail.
- [Kontakt](/docs/mapping/kontakt/): Wie Kontakte zwischen Customer Engagement und Business Central abgeglichen werden — Gesamtbild und die fünf Schritte im Detail.
- [Verkaufschance](/docs/mapping/verkaufschance/): Wie Verkaufschancen und ihre Positionen nach Business Central übertragen werden — Gesamtbild und die Schritte im Detail.
- [Angebot](/docs/mapping/angebot/): Wie Angebote und ihre Positionen aus Business Central nach Customer Engagement kommen — Gesamtbild und die Schritte im Detail.
- [Abonnement](/docs/mapping/abonnement/): Wie wiederkehrend abgerechnete Leistungen und ihre Vertragsdetails aus Business Central nach Customer Engagement kommen.
- [Technisches Mapping](/docs/mapping/technisches-mapping/): Rein technische Referenz aller DataBridge-Jobs in Ausführungsreihenfolge: Job, Mapping, Richtung, Zeitplan und Feldzuordnung.
