Das ist eine für den Ausdruck optimierte Ansicht des gesamten Kapitels inkl. Unterseiten. Druckvorgang starten.

Zur Standardansicht zurückkehren.

Mapping

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

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 und Business-Logik.

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:

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:

MusterRichtungBeispieleCharakter
Referenz- und BelegdatenBC → CELänder, Sprachen, Verkäufer, Produkte, Angebote, AbonnementsBC ist führendes System, CE liest nur
GeschäftspartnerCE ⇄ BCFirma, Kontaktin beide Richtungen: CE legt an und ändert, BC liefert Nummern zurück und überträgt eigene Änderungen nach CE
VerkaufschancenCE → BCVerkaufschance, Verkaufschancen-Produktnur CE → BC; BC meldet lediglich die vergebene Nummer zurück (Response-Job), Änderungen in BC kommen nicht nach CE
LöschungenBC → CEalle *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.

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)

OrderMappingJobRichtungQuelle (BC API Page)Ziel (CE Entity)FelderOpsLäuft
110BCCountriescountriesfrombcBC → CEacdcountryregionswysa_country40Zeitplan
115BCLanguageslanguagesfrombcBC → CEacdlanguageswysa_language30Zeitplan
120BCSalutationssalutationsfrombcBC → CEacdsalutationswysa_bcsalutation30Zeitplan
125BCCustomerDiscountGroupscustomerdiscountgroupsfrombcBC → CEacdcustomerdiscgroupswysa_bccustomerdiscountgroup30Zeitplan
130BCSalesPersonssalespersonsfrombcBC → CEacdsalespersonswysa_bcsalesperson, wysa_salesperson40Zeitplan
135BCPositionspositionsfrombcBC → CEacdorganizationallevelswysa_bcposition30Zeitplan
190BCOpportunityElementsopportunityelementsfrombcBC → CEacdopportunityelementsproduct103Zeitplan

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

OrderMappingJobRichtungQuelleZielFelderOpsLäuft
220CEAccountsaccountsnewfromceCE → BCaccountacdcontactscomp144Zeitplan
221BCAccountsResponseaccountsresponsefrombcBC → CEacdcontactscompaccount31per Response-Job
240CEContactscontactsnewfromceCE → BCcontactacdcontacts176Zeitplan
241BCContactsResponsecontactsresponsefrombcBC → CEacdcontactscontact92per Response-Job
260CEOpportunitiesopportunitiesnewfromceCE → BCopportunityacdopportunities84Zeitplan
261BCOpportunitiesResponseopportunitiesresponsefrombcBC → CEacdopportunities, acdcontactsopportunity31per Response-Job
520CEAccountUpdatesaccountupdatesfromceCE → BCaccountacdcontactscomp132Zeitplan
530CEContactsUpdatescontactupdatesfromceCE → BCcontactacdcontacts185Zeitplan
710CEOpportunityProductsopportunityproductsnewfromceCE → BCopportunityproductacdopportunitycalculationelements82Zeitplan
750CEOpportunityProductsUpdatesopportunityproductsupdatesfromceCE → BCopportunityproductacdopportunitycalculationelements62Zeitplan
760BCOpportunityProductsResponseopportunityproductsresponsefrombcBC → CEacdopportunitycalculationelementsopportunityproduct21per Response-Job

Geschäftspartner (BC → CE)

OrderMappingJobRichtungQuelleZielFelderOpsLäuft
410BCAccountsaccountsfrombcBC → CEacdcontactscompaccount185Zeitplan
430BCContactscontactsfrombcBC → CEacdcontactscontact186Zeitplan

Abonnements (BC → CE)

OrderMappingJobRichtungQuelleZielFelderOpsLäuft
550BCServiceObjectsserviceobjectsfrombcBC → CEserviceObjectswysa_bcserviceobject175Zeitplan
560BCServiceCommitmentsservicecommitmentsfrombcBC → CEserviceCommitmentswysa_bcserviceobjectcommitment274Zeitplan

Angebote (BC → CE)

OrderMappingJobRichtungQuelleZielFelderOpsLäuft
610BCSalesQuotessalesquotesfrombcBC → CEacdsalesheadersquote103Zeitplan
620BCSalesCalculationElementssalescalculationelementsfrombcBC → CEacdsalescalculationelementsquotedetail83Zeitplan
625BCSalesQuotesActivateactivatesalesquotesfrombcBC → CEacdlogentriesquote31Zeitplan

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

OrderMappingJobZielVerhalten in CEFelderLäuft
420BCAccountsDeleteaccountsfrombcdeleteaccountdeaktivieren3Zeitplan
440BCContactsDeletecontactsfrombcdeletecontact, accountdeaktivieren3Zeitplan
450BCProductsDeleteproductsfrombcdeleteproductdeaktivieren3Zeitplan
621BCSalesCalculationElementsDeletesalescalculationelementsfrombcdeletequotedetaillöschen1Zeitplan
690BCSalesQuotesDeletesalesquotesfrombcdeletequoteschließen (Storniert)3Zeitplan

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 — die Wertelisten aus Business Central, aus denen die Belege ihre Verknüpfungen bilden:

OrderMappingSeite
110 – 135BCCountries, BCLanguages, BCSalutations, BCCustomerDiscountGroups, BCPositionsWertelisten aus BC
130BCSalesPersonsVerkäufer aus BC
450BCProductsDeleteProdukte deaktivieren

Vollständig dokumentiert sind bisher Firma und Kontakt:

SchrittFirmaKontakt
Aus BC übernehmenBCAccounts (410)BCContacts (430)
Neu nach BCCEAccounts (220)CEContacts (240)
Rückmeldung aus BCBCAccountsResponse (221)BCContactsResponse (241)
Änderungen nach BCCEAccountUpdates (520)CEContactsUpdates (530)
Löschung aus BCBCAccountsDelete (420)BCContactsDelete (440)

Das Angebot läuft ausschließlich von Business Central nach Customer Engagement und schließt damit den Kreis zur Verkaufschance:

SchrittAngebotskopfPositionen
Aus BC übernehmenBCSalesQuotes (610)BCSalesCalculationElements (620)
Statuswechsel aus BCBCSalesQuotesActivate (625)—
Löschung aus BCBCSalesQuotesDelete (690)BCSalesCalculationElementsDelete (621)

Das Abonnement ist ein eigenständiger Bereich, ebenfalls nur von Business Central nach Customer Engagement:

SchrittMapping
Abonnements aus BCBCServiceObjects (550)
Abonnementzeilen aus BCBCServiceCommitments (560)

Eine rein technische, tabellarische Sicht auf alle Jobs in Ausführungsreihenfolge bietet die Sektion Technisches Mapping.

Damit sind alle aktiven Mappings der Integration dokumentiert.

Die Verkaufschance weicht vom Muster ab — sie läuft nur in eine Richtung und hat eine zweite Kette für die Positionen:

SchrittVerkaufschancePositionen
Stammdaten—BCOpportunityElements (190)
Neu nach BCCEOpportunities (260)CEOpportunityProducts (710)
Rückmeldung aus BCBCOpportunitiesResponse (261)BCOpportunityProductsResponse (760)
Änderungen nach BC—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.

1 - Datenfluss

Wie die DataBridge-Jobs ineinandergreifen — Zeitplan, Filter, Response-Jobs und Löschverarbeitung.

Diese Seite richtet sich an die IT-Administration — vertiefende technische Referenz mit Job-Filtersyntax und Zeitplänen.

Diese Seite zeigt, wie die Daten fließen. Welche Felder dabei zugeordnet werden, steht auf den Mapping-Detailseiten.

Grundprinzip

Jeder Job der DataBridge ist ein eigenständiger, zeitgesteuerter Lauf:

flowchart LR
  A["Zeitplan<br/><code>Schedule</code>"] --> B["Quelle lesen<br/><code>SourceConnection</code>"]
  B --> C["Filter anwenden<br/><code>Filter</code> + <code>%watermark%</code>"]
  C --> D["Mapping ausführen<br/>Feldzuordnung + Transformation"]
  D --> E["Key-Auflösung<br/>Datensatz im Ziel finden"]
  E --> F["Schreiben<br/><code>TargetConnection</code>"]
  F --> G["Watermark fortschreiben<br/><code>WatermarkField</code>"]
  G -.->|falls gesetzt| H["Response-Job starten<br/><code>ResponseJob</code>"]

Die Reihenfolge innerhalb eines Laufs steuert das Feld Order (110 – 760). Stammdaten laufen zuerst (110 – 190), damit die Lookups der späteren Jobs (Firma, Angebot, Abo) ihre Referenzdatensätze bereits vorfinden.

Die meisten Jobs laufen alle 2 Minuten (0 */2 * * * *), die Jobs rund um Verkaufschancen und Angebotsaktivierung alle 3 Minuten (0 */3 * * * *).

Gesamtfluss

flowchart TB
  subgraph S1["1 · Stammdaten &nbsp;(Order 110–190)"]
    direction LR
    ST["BC Referenztabellen<br/>Länder · Sprachen · Anreden<br/>Verkäufer · Positionen<br/>Rabattgruppen"] --> STC["CE Wertelisten<br/><code>wysa_country</code>, <code>wysa_language</code>,<br/><code>wysa_bcsalutation</code>, <code>wysa_salesperson</code>, …"]
    IT["BC Verkaufschancen-Elemente<br/><code>acdopportunityelements</code>"] --> ITC["CE <code>product</code>"]
  end

  subgraph S2["2 · Geschäftspartner &nbsp;(Order 220–241, 410–440, 520–530)"]
    direction LR
    CEA["CE <code>account</code> / <code>contact</code>"] -->|"neu: <code>CEAccounts</code>, <code>CEContacts</code>"| BCA["BC <code>acdcontactscomp</code> / <code>acdcontacts</code>"]
    CEA -->|"geändert: <code>CEAccountUpdates</code>, <code>CEContactsUpdates</code>"| BCA
    BCA -->|"Response: Nummer zurück"| CEA
    BCA -->|"<code>BCAccounts</code>, <code>BCContacts</code>"| CEA
  end

  subgraph S3["3 · Verkaufschancen &nbsp;(Order 260–261, 710–760)"]
    direction LR
    CEO["CE <code>opportunity</code><br/><code>opportunityproduct</code>"] -->|"<code>CEOpportunities</code><br/><code>CEOpportunityProducts</code>"| BCO["BC <code>acdopportunities</code><br/><code>acdopportunitycalculationelements</code>"]
    BCO -->|"Response"| CEO
  end

  subgraph S4["4 · Angebote &amp; Abos &nbsp;(Order 550–625)"]
    direction LR
    BCQ["BC <code>acdsalesheaders</code><br/><code>acdsalescalculationelements</code><br/><code>serviceObjects</code> / <code>serviceCommitments</code>"] --> CEQ["CE <code>quote</code> / <code>quotedetail</code><br/><code>wysa_bcserviceobject(commitment)</code>"]
  end

  subgraph S5["5 · Löschungen &nbsp;(Order 420–690)"]
    direction LR
    LOG["BC Änderungsprotokoll<br/><code>acdlogentries</code>"] --> DEL["CE: Datensatz löschen<br/><code>account</code>, <code>contact</code>, <code>product</code>,<br/><code>quote</code> deaktivieren/schließen,<br/><code>quotedetail</code> löschen"]
  end

  S1 --> S2 --> S3 --> S4 --> S5

Muster 1 — Referenzdaten BC → CE

Der einfachste Fall: BC ist führendes System, CE liest nur mit.

sequenceDiagram
  participant BC as Business Central
  participant DB as DataBridge
  participant CE as Customer Engagement
  DB->>BC: GET api page<br/>?$filter=lastModifiedDateTime gt %watermark%
  BC-->>DB: geänderte Datensätze
  DB->>DB: Mapping + Lookup auf CE-Key
  DB->>CE: Upsert (anlegen oder aktualisieren)
  DB->>DB: Watermark = höchstes lastModifiedDateTime

Die Abgrenzung erfolgt über das Watermark: der Job merkt sich den höchsten Wert von WatermarkField (lastModifiedDateTime, Typ datetime) des letzten Laufs und liest beim nächsten Mal nur, was seitdem geändert wurde.

Betroffene Mappings: alle BC*-Mappings außer den Delete- und Response-Varianten.

Die Jobs in Gegenrichtung (CE*-Mappings) brauchen kein Watermark-Feld: Für Dataverse-Quellen nutzt die DataBridge das Change Tracking der Plattform und erhält damit nur die seit dem letzten Lauf geänderten Datensätze.

Muster 2 — CE → BC mit Response-Job

Legt der Vertrieb in CE eine Firma, einen Kontakt oder eine Verkaufschance an, existiert diese in BC noch nicht. BC vergibt beim Anlegen die Nummer und die SystemId — diese müssen zurück nach CE. Genau dafür gibt es den Response-Job:

sequenceDiagram
  participant CE as Customer Engagement
  participant DB as DataBridge
  participant BC as Business Central

  Note over DB: Job "accountsnewfromce" (Order 220)
  DB->>CE: lies account
  Note right of DB: Filter:<br/>wysa_bcsystemid IS NULL<br/>UND wysa_sync2bc = "Freigegeben"
  CE-->>DB: neue, freigegebene Firmen
  DB->>BC: POST acdcontactscomp
  BC-->>DB: number, id (SystemId)

  Note over DB: ResponseJob "accountsresponsefrombc" (Order 221)
  DB->>BC: lies acdcontactscomp
  BC-->>DB: number, id
  DB->>CE: schreibe wysa_bccontactnumber, wysa_bcsystemid
  Note right of CE: Ab jetzt greift<br/>"accountupdatesfromce" (Order 520)

Der entscheidende Mechanismus ist das Feld wysa_bcsystemid:

  • leer → der Datensatz ist BC noch unbekannt → der Neu-Job greift (CEAccounts, CEContacts, CEOpportunities, CEOpportunityProducts)
  • gefüllt → der Datensatz existiert in BC → der Update-Job greift (CEAccountUpdates, CEContactsUpdates, CEOpportunityProductsUpdates)

Zusätzlich muss wysa_sync2bc auf „Freigegeben" stehen — siehe Freigabe nach Business Central.

Response-Jobs sind bewusst mit IsActive = false konfiguriert. Sie werden nicht über den eigenen Zeitplan gestartet, sondern ausschließlich vom vorgelagerten Job über dessen Feld ResponseJob aufgerufen.

Auslösender JobOrderResponse-JobOrder
accountsnewfromce220accountsresponsefrombc221
contactsnewfromce240contactsresponsefrombc241
opportunitiesnewfromce260opportunitiesresponsefrombc261
opportunityproductsnewfromce710opportunityproductsresponsefrombc760

Muster 3 — Löschungen über das Änderungsprotokoll

Ein gelöschter Datensatz taucht in der normalen API Page nicht mehr auf — er kann also nicht per Abgleich erkannt werden. Stattdessen liest die DataBridge das BC-Änderungsprotokoll acdlogentries:

flowchart LR
  DEL["Löschung in BC"] --> LOG["Eintrag in<br/><code>acdlogentries</code><br/>tableId + operation"]
  LOG --> F{"Filter je Job"}
  F -->|"tableId 5050 (Kontakt)"| A["<code>BCAccountsDelete</code><br/><code>BCContactsDelete</code>"]
  F -->|"tableId 72077781 (Artikel)"| P["<code>BCProductsDelete</code>"]
  F -->|"tableId 36 (Angebot)"| Q["<code>BCSalesQuotesDelete</code>"]
  F -->|"tableId 72077783 (Kalkulation)"| K["<code>BCSalesCalculationElementsDelete</code>"]
  A --> X["Mapping setzt<br/><code>statecode</code> / <code>statuscode</code><br/>→ Datensatz wird <b>deaktiviert</b>"]
  P --> X
  Q --> Y["Job-Feld <code>Action = Delete</code><br/>→ Datensatz wird <b>gelöscht</b>"]
  K --> Y

Diese Jobs unterscheiden sich in zwei Punkten von den übrigen:

  • Die Quelle ist immer acdlogentries, nie die Fachtabelle. Der Filter grenzt über tableId die betroffene BC-Tabelle ab, z. B. {{lastModifiedDateTime gt %watermark%}} and tableId eq 5050 für Kontakte/Firmen. Als Schlüssel dient recordId → wysa_bcsystemid.
  • Es gibt zwei Varianten, wie im Ziel reagiert wird:
VarianteJobsVerhalten in CE
Deaktivieren (kein Action-Feld)accountsfrombcdelete, contactsfrombcdelete, productsfrombcdeleteDas Mapping setzt per DefaultValue den statecode auf 1 und den statuscode auf einen Inaktiv-Wert — der Datensatz bleibt erhalten, wird aber inaktiv gesetzt. Firma und Kontakt verwenden den lösungseigenen Statusgrund 799840001, das Produkt den Dataverse-Standardwert 2
Schließen (kein Action-Feld)salesquotesfrombcdeleteDas Mapping setzt statecode = 3 (Geschlossen) und statuscode = 6 (Storniert) — das Angebot bleibt erhalten
Löschen (Action = Delete)salescalculationelementsfrombcdeleteDie DataBridge löscht den Datensatz im Ziel

Stammdaten wie Firma, Kontakt und Produkt werden also nie hart gelöscht — für Historie und referenzielle Integrität in CE ist das wichtig. Angebote werden storniert, nur Angebotspositionen werden entfernt.

Sonderfall — Angebot aktivieren

BCSalesQuotesActivate (Order 625) ist kein Datenabgleich, sondern eine Statusänderung. Der Job liest ebenfalls acdlogentries, filtert aber auf tableId eq 36 and operation eq 'TRANSFERRED' — also auf den Moment, in dem in BC aus einem Angebot ein Auftrag wird — und setzt daraufhin den Status des zugehörigen quote in CE.

Ausführungsreihenfolge und Takt

Die Jobs tragen eine Ordnungsnummer (Order), die festlegt, in welcher Folge sie innerhalb eines Durchlaufs abgearbeitet werden. Darauf beruhen die Reihenfolgeabhängigkeiten der Integration: Stammdaten vor Belegen, Firma vor Kontakt, Kontakt vor Verkaufschance.

OrderJobBereichTakt
110countriesfrombcStammdaten — Länder2 Min
115languagesfrombcStammdaten — Sprachen2 Min
120salutationsfrombcStammdaten — Anreden2 Min
125customerdiscountgroupsfrombcStammdaten — Rabattgruppen2 Min
130salespersonsfrombcStammdaten — Verkäufer2 Min
135positionsfrombcStammdaten — Organisationsebenen2 Min
190opportunityelementsfrombcVerkaufschance — Kalkulationselemente2 Min
220accountsnewfromceFirma — neu nach BC2 Min
↳ 221accountsresponsefrombcFirma — Rückmeldungnach 220
240contactsnewfromceKontakt — neu nach BC2 Min
↳ 241contactsresponsefrombcKontakt — Rückmeldungnach 240
260opportunitiesnewfromceVerkaufschance — neu nach BC2 Min
↳ 261opportunitiesresponsefrombcVerkaufschance — Rückmeldungnach 260
410accountsfrombcFirma — aus BC2 Min
420accountsfrombcdeleteFirma — Löschung2 Min
430contactsfrombcKontakt — aus BC2 Min
440contactsfrombcdeleteKontakt — Löschung2 Min
450productsfrombcdeleteStammdaten — Produkte deaktivieren2 Min
520accountupdatesfromceFirma — Änderungen nach BC2 Min
530contactupdatesfromceKontakt — Änderungen nach BC2 Min
550serviceobjectsfrombcAbonnement — Abonnements2 Min
560servicecommitmentsfrombcAbonnement — Zeilen2 Min
610salesquotesfrombcAngebot — Angebote aus BC2 Min
620salescalculationelementsfrombcAngebot — Positionen aus BC2 Min
621salescalculationelementsfrombcdeleteAngebot — Positionen löschen2 Min
625activatesalesquotesfrombcAngebot — gewonnene Angebote3 Min
690salesquotesfrombcdeleteAngebot — Angebote stornieren2 Min
710opportunityproductsnewfromceVerkaufschance — Positionen neu3 Min
750opportunityproductsupdatesfromceVerkaufschance — Positionen ändern3 Min
↳ 760opportunityproductsresponsefrombcVerkaufschance — Rückmeldungnach 710

Mit ↳ gekennzeichnet sind die vier Response-Jobs. Sie haben keinen eigenen Zeitplan, sondern werden unmittelbar von ihrem auslösenden Job gestartet und folgen damit dessen Takt.

Die Ordnungsnummer sortiert nur innerhalb eines Takts

Das ist die wichtigste Einschränkung an der Tabelle oben: Es gibt zwei Zeitpläne. 23 Jobs laufen alle zwei Minuten, drei alle drei Minuten — und diese drei sind fett hervorgehoben.

flowchart TB
  subgraph M0["Minute 0, 6, 12, 18 …"]
    A0["<b>alle</b> Jobs<br/>2-Minuten- und 3-Minuten-Gruppe<br/>→ Ordnungsnummer gilt durchgehend"]
  end
  subgraph M2["Minute 2, 4, 8, 10 …"]
    A2["nur die 23 Jobs der<br/><b>2-Minuten-Gruppe</b>"]
  end
  subgraph M3["Minute 3, 9, 15, 21 …"]
    A3["nur die 3 Jobs der<br/><b>3-Minuten-Gruppe</b><br/>625, 710, 750"]
  end

Die Ordnungsnummer legt also nur die Folge der Jobs fest, die im selben Tick laufen. Die beiden Gruppen treffen sich alle sechs Minuten.

Praktisch bedeutet das für die drei Jobs im Drei-Minuten-Takt:

JobBraucht Vorarbeit vonKonsequenz
710 · Positionen neu nach BC190 (Kalkulationselemente) und 260 / 261 (Verkaufschance)läuft in einem eigenen Tick — die Vorarbeit stammt aus einem früheren Durchlauf
750 · Positionen ändern710, 760läuft im selben Tick wie 710, hier gilt die Ordnungsnummer
625 · gewonnene Angebote610 (Angebote aus BC)anderer Takt als 610

Weil die Vorgänger-Jobs häufiger laufen als die abhängigen, ist die Vorarbeit in der Praxis immer schon erledigt — nur eben aus einem früheren Durchlauf, nicht aus demselben. Wer eine Reihenfolgeabhängigkeit prüft, sollte deshalb nicht allein auf die Ordnungsnummer schauen, sondern auch auf den Takt.

Die Operationen im Überblick

Sieben Operationen kommen in den Mappings vor. Sie sind das eigentliche Werkzeug der DataBridge — alles, was über eine reine Feld-zu-Feld-Zuordnung hinausgeht, ist eine dieser Operationen.

OperationRichtungWas sie tutWo sie vorkommt
LookupBC → CEmacht aus einem BC-Kürzel eine Dataverse-Verknüpfungüberall in den BC→CE-Mappings
LookupValueCE → BClöst eine Dataverse-Verknüpfung zum BC-Kürzel aufüberall in den CE→BC-Mappings
DefaultValuebeideschreibt einen festen Wert ohne QuellfeldFreigaben, Statuswerte, Kontaktarten, feste GUIDs
ReadFromMessageBC → CEliest einen Wert aus der Antwortnachricht statt aus einer Tabellealle vier Response-Jobs
OptionMappingBC → CEübersetzt einen BC-Textwert in einen Dataverse-Auswahlwertnur BCServiceCommitments
LinkToRecordCE → BCbaut aus der Datensatz-GUID einen aufrufbaren Deep Linknur CEOpportunities
SetNullIfEqualsValueOfFieldBC → CEParameter von Lookup: leert die Referenz bei Selbstbezugnur BCAccounts

Die letzten drei sind Einzelfälle — jede kommt in genau einem Mapping vor. Wer die Konfiguration erweitert, findet dort das jeweilige Muster.

Nächster Schritt

Die Feldzuordnungen der einzelnen Mappings sind in der Mapping-Übersicht gelistet. Die Detailseiten sind nach Datenbereich gegliedert: Stammdaten, Firma, Kontakt, Verkaufschance, Angebot und Abonnement.

2 - Stammdaten

Die Wertelisten aus Business Central — Grundlage für fast jede Zuordnung in den Belegketten.

Bevor eine Firma, ein Kontakt oder ein Angebot abgeglichen werden kann, müssen die Wertelisten stimmen. Business Central schickt in seinen Belegen keine Klartexte, sondern Kürzel: DE für Deutschland, DEU für die Sprache, HERR für die Anrede, MM für den Verkäufer. Aus diesen Kürzeln macht die Integration in Customer Engagement echte Verknüpfungen — und das kann sie nur, wenn die passende Werteliste dort schon vorhanden ist.

Genau dafür gibt es die Stammdaten-Abgleiche. Sie laufen mit den Ordnungsnummern 110 – 190 und damit vor allen Belegketten.

OrderWas kommt anWird gebraucht für
110LänderFirma, Kontakt
115SprachenKontakt
120AnredenKontakt
125DebitorrabattgruppenFirma
130VerkäuferFirma, Kontakt, Verkaufschance, Angebot
135OrganisationsebenenKontakt
190KalkulationselementeVerkaufschance, Angebot
450Löschung von ProduktenProdukt

Die Kalkulationselemente sind fachlich ebenfalls ein Stammdaten-Abgleich, stehen aber bei der Verkaufschance, weil sie nur dort und im Angebot verwendet werden.

Warum die Reihenfolge zählt

flowchart LR
  subgraph S["Stammdaten · 110 – 190"]
    A["Länder"]
    B["Sprachen"]
    C["Anreden"]
    D["Rabattgruppen"]
    E["Verkäufer"]
    F["Organisationsebenen"]
  end
  subgraph B1["Belegketten · ab 220"]
    G["Firma"]
    H["Kontakt"]
    I["Verkaufschance"]
    J["Angebot"]
  end
  S ==>|"Kürzel werden zu<br/>Verknüpfungen"| B1

Alle Stammdaten-Jobs laufen im selben Zwei-Minuten-Takt wie die Belegketten, aber mit niedrigerer Ordnungsnummer — sie sind innerhalb eines Durchlaufs also immer zuerst dran.

Alle Abgleiche folgen demselben Muster

Die sechs Wertelisten-Jobs sind bemerkenswert einheitlich aufgebaut:

Richtungimmer Business Central → Customer Engagement
Taktimmer alle 2 Minuten
Abgrenzungimmer über den Änderungszeitstempel lastModifiedDateTime
Erkennungsmerkmalimmer die BC System-ID
Felderdrei bis vier: System-ID, Kürzel, Bezeichnung
Löschverarbeitungkeine — in BC gelöschte Wertelisteneinträge bleiben in CE stehen

Es gibt keinen Rückweg: Wertelisten werden in Business Central gepflegt, Customer Engagement folgt. Ein in CE angelegter Ländereintrag bleibt dort und wird von keinem Job nach BC übertragen.

Zwei Namenskonventionen für dasselbe Feld

Beim Feld für das BC-Kürzel gibt es zwei Schreibweisen — je nach Werteliste:

Feld für das BC-KürzelWertelisten
wysa_bccodeLänder, Sprachen, Debitorrabattgruppen
wysa_codeAnreden, Verkäufer, Organisationsebenen

Das ist keine Kleinigkeit, denn die Belegketten müssen diese Unterscheidung mitmachen. Jeder Lookup nennt das Nachschlagefeld ausdrücklich:

Auflösung in der BelegketteNachschlagefeld
Landwysa_bccode
Sprachewysa_bccode
Debitorrabattgruppewysa_bccode
Anrede (BC)wysa_code
Verkäufer (BC)wysa_code
Position (BC)wysa_code

Was nicht abgeglichen wird

Nicht jede Tabelle des Datenmodells hat einen Abgleich. Diese hier werden von keinem aktiven Job gefüllt:

TabelleAnzeigenameZustand
wysa_bcClientMandant (BC)kein Job vorhanden — wird manuell gepflegt
wysa_bcProducerHersteller (BC)kein Abgleich — bleibt am Produkt leer
wysa_bcProductCategoryProduktkategorie (BC)kein Abgleich — bleibt am Produkt leer
productProduktkeine Artikel aus BC — nur Kalkulationselemente, siehe unten
wysa_titleTitelkein Abgleich — reine CE-Stammdaten
wysa_salutationAnredevorlagekein Abgleich — reine CE-Stammdaten

Der Mandant (BC) ist dabei der auffälligste Fall: Er wird an Firma, Kontakt, Verkaufschance und Angebot verwendet, kommt aber nicht aus Business Central. Da ihn auch kein Beleg-Mapping schreibt, bleibt das Feld an den übertragenen Datensätzen leer, wenn es nicht in CE gesetzt wird.

Die Produkttabelle wird nur teilweise gefüllt

Technische Zuordnung

Jobs und Mappings
OrderJobMappingZieltabelleFelder
110countriesfrombcBCCountrieswysa_country4
115languagesfrombcBCLanguageswysa_language3
120salutationsfrombcBCSalutationswysa_bcsalutation3
125customerdiscountgroupsfrombcBCCustomerDiscountGroupswysa_bccustomerdiscountgroup3
130salespersonsfrombcBCSalesPersonswysa_bcsalesperson, wysa_salesperson4
135positionsfrombcBCPositionswysa_bcposition3
190opportunityelementsfrombcBCOpportunityElementsproduct10
450productsfrombcdeleteBCProductsDeleteproduct3

Alle Quellen sind API Pages unter singhammerITConsulting/dyce/v2.0/; die Löschverarbeitung liest acdlogentries.

Key-Auflösung — einheitlich über die BC System-ID

Alle sechs Wertelisten-Jobs verwenden denselben Schlüssel:

{
  "KeyType": "CustomKey",
  "KeyName": "wysa_bcsystemidkey",
  "KeyValues": [
    { "keyName": "wysa_bcsystemid", "attributeName": "id", "rank": 1 }
  ]
}

Das unterscheidet sie von den Belegketten: Firma und Kontakt werden über die BC Kontaktnummer gefunden, das Angebot über die Angebotsnummer. Bei den Wertelisten ist der Schlüssel immer die technische System-ID — das Kürzel selbst ist nur ein Datenfeld und könnte sich in BC theoretisch ändern, ohne dass die Zuordnung verloren geht.

Ausnahme ist der Kalkulationselemente-Abgleich (190), der über den Code auflöst.

2.1 - Wertelisten aus Business Central übernehmen

Länder, Sprachen, Anreden, Debitorrabattgruppen und Organisationsebenen kommen aus dem ERP nach Customer Engagement.
RichtungBusiness Central → Customer Engagement
Wannalle 2 Minuten
Betrifftfünf Wertelisten, je ein eigener Abgleich
TechnischJobs countriesfrombc (110), languagesfrombc (115), salutationsfrombc (120), customerdiscountgroupsfrombc (125), positionsfrombc (135)

Der sechste Wertelisten-Abgleich, der Verkäufer (130), hat wegen einer Besonderheit eine eigene Seite.

Was passiert hier?

Jeder dieser fünf Abgleiche holt eine Werteliste aus Business Central nach Customer Engagement — Kürzel und Bezeichnung. Danach kann die Integration in den Belegketten aus einem BC-Kürzel eine echte Verknüpfung machen.

Alle fünf sind gleich aufgebaut: Sie kommen mit drei bis vier Feldern aus, erkennen Einträge über die BC System-ID, laufen im Zwei-Minuten-Takt und übertragen nur, was sich seit dem letzten Lauf geändert hat. Es gibt keinen Rückweg und keine Löschverarbeitung.

Länder

Job countriesfrombc (110) · Zieltabelle Land (wysa_country)

Feld in Business CentralFeld in Customer Engagement
idBC System-ID
CodeBC Code
NameName
ISO-CodeISO 3166-1 alpha-2

Die einzige Werteliste mit einem vierten Feld: Neben dem BC-Kürzel kommt der ISO-Code mit. Damit lassen sich Länder in CE auch dort korrekt darstellen, wo eine normierte Kennung gebraucht wird — etwa in Serienbriefen oder Exporten.

Gebraucht wird die Liste für das Feld Land an Firma, Kontakt und Lead.

Sprachen

Job languagesfrombc (115) · Zieltabelle Sprache (wysa_language)

Feld in Business CentralFeld in Customer Engagement
idBC System-ID
CodeBC Code
NameName

Gebraucht wird die Liste für das Feld Sprache am Kontakt und am Lead — und darüber hinaus für die Anredebildung: Anredevorlagen und Titel hängen jeweils an einer Sprache.

Anreden

Job salutationsfrombc (120) · Zieltabelle Anrede (BC) (wysa_bcsalutation)

Feld in Business CentralFeld in Customer Engagement
idBC System-ID
CodeCode
BeschreibungName

Gebraucht wird die Liste für das Feld Anrede (BC) am Kontakt.

Debitorrabattgruppen

Job customerdiscountgroupsfrombc (125) · Zieltabelle Debitorrabattgruppe (BC) (wysa_bccustomerdiscountgroup)

Feld in Business CentralFeld in Customer Engagement
idBC System-ID
CodeBC Code
BeschreibungName

Gebraucht wird die Liste für das Feld Debitorrabattgruppe an der Firma. Dieses Feld gehört zu denen, die nur aus BC kommen und nie zurückgeschrieben werden — siehe Firma.

Organisationsebenen

Job positionsfrombc (135) · Zieltabelle Position (BC) (wysa_bcposition)

Feld in Business CentralFeld in Customer Engagement
idBC System-ID
CodeCode
BeschreibungName

Gebraucht wird die Liste für das Feld Position (BC) am Kontakt und am Lead — die Entscheidungsebene eines Ansprechpartners.

Worauf zu achten ist

Gelöschte Einträge bleiben in CE stehen

Keiner dieser Abgleiche hat eine Löschverarbeitung. Wird eine Anrede oder ein Land in Business Central gelöscht, bleibt der Eintrag in Customer Engagement bestehen und weiterhin auswählbar. Bei Firma, Kontakt und Produkt gibt es dafür eigene Löschjobs — bei den Wertelisten nicht.

Änderungen am Kürzel sind unkritisch

Weil die Zuordnung über die BC System-ID läuft und nicht über das Kürzel, überlebt ein Eintrag eine Umbenennung in BC: Beim nächsten Lauf wird derselbe CE-Datensatz gefunden und sein Codefeld aktualisiert.

Die Belegketten lösen allerdings über das Kürzel auf. Wird ein Code in BC geändert, zeigen bestehende CE-Datensätze also weiter auf den richtigen Eintrag — neue Belege aus BC bringen aber das neue Kürzel mit, das nach dem Wertelisten-Abgleich ebenfalls stimmt. Weil die Wertelisten vor den Belegen laufen, greift das innerhalb desselben Durchlaufs.

Zwei Schreibweisen für das Codefeld

Länder, Sprachen und Debitorrabattgruppen legen das Kürzel in wysa_bccode ab, Anreden und Organisationsebenen in wysa_code. Die Lookups in den Belegketten berücksichtigen das — siehe Stammdaten.

Technische Details

Die vollständigen technischen Mapping-Tabellen mit Feldzuordnungen, Key-Auflösung und Transformationen stehen auf den technischen Seiten der einzelnen Jobs:

WertelisteTechnische Seite
LänderTechnisches Mapping → countriesfrombc
SprachenTechnisches Mapping → languagesfrombc
AnredenTechnisches Mapping → salutationsfrombc
DebitorrabattgruppenTechnisches Mapping → customerdiscountgroupsfrombc
OrganisationsebenenTechnisches Mapping → positionsfrombc

2.2 - Verkäufer aus Business Central übernehmen

Die Verkäufer aus dem ERP kommen nach Customer Engagement und werden dort automatisch CRM-Benutzern zugeordnet.
RichtungBusiness Central → Customer Engagement
Wannalle 2 Minuten
Betrifftdie Verkäufer aus BC
TechnischJob salespersonsfrombc (130), Mapping BCSalesPersons

Was passiert hier?

Business Central kennt Verkäufer als Kürzel — MM, SK, LB. Dieser Abgleich holt sie nach Customer Engagement, damit die Belegketten aus dem Kürzel eine echte Verknüpfung machen können.

Der Verkäufer ist die meistgenutzte Werteliste der Integration: Er wird an Firma, Kontakt, Verkaufschance und Angebot aufgelöst — und bei Firma und Kontakt sogar in beide Richtungen.

AuflösungRichtung
FirmaBC → CE und CE → BC
Kontaktnur CE → BC
Verkaufschancenur CE → BC
Angebotnur BC → CE

Die E-Mail-Adresse ist mehr als ein Datenfeld

Neben Kürzel und Bezeichnung überträgt dieser Abgleich die E-Mail-Adresse des Verkäufers. Sie ist der Schlüssel zu einer Automatik in Customer Engagement: Über die E-Mail-Adresse wird der BC-Verkäufer dem passenden CRM-Benutzer zugeordnet.

flowchart LR
  A["Verkäufer in BC<br/>Code + E-Mail"] --> B["Verkäufer (BC) in CE"]
  B -->|"Zuordnung über<br/>die E-Mail-Adresse"| C["CRM-Benutzer<br/>oder Team"]
  C --> D["Besitzer von Firma,<br/>Kontakt, Verkaufschance"]

Das ist der Grund, warum dieser Abgleich fachlich mehr Gewicht hat als die übrigen Wertelisten: Aus ihm folgt, wem ein Datensatz in CE gehört. Beschrieben ist die Automatik unter Stammdaten und Anzeige.

Welche Felder kommen an?

Feld in Business CentralFeld in Customer Engagement
idBC System-ID
CodeCode
E-MailE-Mail
AnzeigenameName

Die E-Mail-Adresse landet im Feld wysa_emailaddress. An diesem Feld hängt die automatische Benutzerzuordnung, siehe Datenmodell.

Die Telefonnummer wird nicht übertragen

Das Feld Telefon am Verkäufer (BC) ist nicht Teil dieses Mappings. Es kann in CE gepflegt werden und wird vom Abgleich nicht überschrieben.

Gelöschte Verkäufer bleiben stehen

Wie bei allen Wertelisten gibt es keine Löschverarbeitung. Ein in Business Central gelöschter Verkäufer bleibt in CE bestehen und weiterhin auswählbar.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → salespersonsfrombc.

2.3 - Produkte deaktivieren

In Business Central gelöschte Artikel werden in Customer Engagement inaktiv gesetzt.
RichtungBusiness Central → Customer Engagement
Wannalle 2 Minuten
BetrifftArtikel, die in BC gelöscht wurden
TechnischJob productsfrombcdelete (450), Mapping BCProductsDelete

Was passiert hier?

Wird in Business Central ein Artikel gelöscht, wird das zugehörige Produkt in Customer Engagement deaktiviert — es bleibt erhalten und wird nur inaktiv gesetzt.

Der Weg führt über das Änderungsprotokoll von BC, weil ein gelöschter Artikel in der normalen Schnittstelle nicht mehr auftaucht. Wiedererkannt wird das Produkt über die BC System-ID.

flowchart LR
  A["Artikel in BC gelöscht"] --> B["Eintrag im<br/>Änderungsprotokoll"]
  B --> C["Produkt in CE über die<br/>BC System-ID gefunden"]
  C --> D["Produkt wird <b>deaktiviert</b>"]

Damit folgt das Produkt dem Muster von Firma und Kontakt: deaktivieren, nicht löschen. An einem Produkt hängen Angebotspositionen und Verkaufschancenpositionen — ein hartes Löschen würde diese Historie zerstören.

Was sich am Produkt ändert

FeldWert danach
StatusInaktiv
StatusgrundInaktiv (Dataverse-Standardwert)

Artikel werden nicht übernommen

Artikel aus Business Central werden nicht nach Customer Engagement übertragen. Die Produkttabelle wird ausschließlich über die Kalkulationselemente aus BC (190) gefüllt; alles andere ist manuell erfasst. Dieser Schritt betrifft deshalb nur Produkte, die eine BC System-ID aus der Artikeltabelle tragen — in der Praxis also keine manuell erfassten Produkte und keine Kalkulationselemente.

Worauf zu achten ist

Reaktivieren erfolgt in CE

Ein in CE deaktiviertes Produkt wird vom Abgleich nicht wieder aktiviert. Soll es weiter verwendet werden, wird es in CE manuell reaktiviert.

Deaktivierte Produkte in bestehenden Positionen

Ein inaktives Produkt bleibt in bereits erfassten Verkaufschancen- und Angebotspositionen verknüpft. Es lässt sich nur nicht mehr neu auswählen. Das ist der Zweck des Deaktivierens gegenüber dem Löschen.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → productsfrombcdelete.

3 - Firma

Wie Firmen zwischen Customer Engagement und Business Central abgeglichen werden — Gesamtbild und die fünf Schritte im Detail.

Firmen werden zwischen Customer Engagement und Business Central in beide Richtungen abgeglichen. Der Vertrieb legt eine Firma in CE an, gibt sie frei, und sie erscheint im ERP — oder ein Debitor entsteht in BC und taucht kurz darauf in CE auf. Beides ist möglich, und beides greift ineinander.

Diese Seite zeigt das Gesamtbild. Die fünf Schritte, aus denen der Abgleich besteht, sind je auf einer eigenen Seite beschrieben:

SchrittWas passiertWann
Aus BC übernehmenBC-Firmen kommen nach CEalle 2 Minuten
Neu nach BCin CE angelegte, freigegebene Firmen werden in BC angelegtalle 2 Minuten
Rückmeldung aus BCBC meldet Nummer und Id zurückdirekt nach der Anlage
Änderungen nach BCÄnderungen in CE gehen nach BCalle 2 Minuten
Löschung aus BCin BC gelöschte Firmen werden in CE deaktiviertalle 2 Minuten

Kontakt und Verkaufschance funktionieren nach demselben Muster.

Der Kreislauf

flowchart TB
  START(["Firma entsteht"]) --> Q{"Wo?"}

  Q -->|"in CE angelegt"| C1["Feld <b>BC System-ID</b><br/>ist noch leer"]
  Q -->|"in BC angelegt"| B1["<b>Aus BC übernehmen</b><br/>Firma erscheint in CE"]

  C1 --> C2{"<b>Sync zu BC</b><br/>freigegeben?"}
  C2 -->|nein| WAIT["Firma bleibt in CE —<br/>nichts wird übertragen"]
  C2 -->|ja| C3["<b>Neu nach BC</b><br/>Firma wird in BC angelegt"]

  C3 --> C4["<b>Rückmeldung aus BC</b><br/>Kontaktnummer und<br/>BC System-ID kommen zurück"]

  B1 --> SYNC["Firma existiert in beiden Systemen"]
  C4 --> SYNC

  SYNC --> U1["Änderung in CE<br/><b>Änderungen nach BC</b>"]
  SYNC --> U2["Änderung in BC<br/><b>Aus BC übernehmen</b>"]
  U1 --> SYNC
  U2 --> SYNC

  SYNC --> D1["Firma in BC gelöscht"]
  D1 --> D2["<b>Löschung aus BC</b><br/>Firma in CE wird deaktiviert"]

Die entscheidende Weiche: das Feld „BC System-ID"

Zwei Schritte übertragen Firmen von CE nach BC — welcher greift, entscheidet allein die Frage, ob Business Central die Firma schon kennt. Erkennbar ist das am Feld BC System-ID (wysa_bcsystemid):

Feld ist …BedeutungEs greift
leerBC kennt die Firma noch nichtNeu nach BC — die Firma wird angelegt
gefülltBC kennt die FirmaÄnderungen nach BC — die Firma wird aktualisiert

Beide Schritte setzen zusätzlich voraus, dass Sync zu BC auf „Ja" steht. Ohne diese Freigabe passiert gar nichts — siehe Freigabe nach Business Central.

Gefüllt wird die BC System-ID nur durch die Rückmeldung aus BC oder beim Übernehmen aus BC. Genau deshalb ist sie der verlässliche Nachweis, dass eine Firma im ERP angekommen ist — und genau darauf baut die Freigaberegel für Kontakte auf: Ein Kontakt darf erst freigegeben werden, wenn die BC System-ID seiner Firma gefüllt ist.

Welche Felder laufen in welche Richtung?

Der Abgleich ist nicht symmetrisch. Einige Felder gehören fachlich ins ERP und kommen nur von dort; zwei werden nur beim ersten Anlegen gesetzt.

Feld in CEAus BC übernehmenNeu nach BCÄnderungen nach BC
Name 1 (BC)✓✓✓
Name 2 (BC)✓✓✓
Straße 1 / Straße 2✓✓✓
Postleitzahl / Ort✓✓✓
Land✓✓✓
Telefon✓✓✓
E-Mail✓✓✓
Website✓✓✓
Verkäufer (BC)✓✓✓
BC Debitorennummer✓––
BC Kreditorennummer✓––
Debitorrabattgruppe✓––
Übergeordnete Firma✓––
Sync zu BC✓––
BC Kontaktnummer✓––
BC System-ID✓––

Vier Aussagen lassen sich daraus ableiten:

Adresse, Kommunikation, Name und Verkäufer laufen in beide Richtungen. Wer zuletzt speichert, gewinnt. Es gibt keine Konfliktauflösung.

Debitornummer, Kreditornummer, Debitorrabattgruppe und übergeordnete Firma gehören Business Central. Sie entstehen im ERP und werden nur nach CE übertragen. Wer sie in CE ändert, ändert nichts in BC — und die Änderung wird beim nächsten Abgleich wieder überschrieben.

Der Firmenname in CE wird nicht abgeglichen. Der BC-Name landet im Feld Name 1 (BC), nicht im Standardfeld Firmenname. Beide dürfen also voneinander abweichen — in CE kann ein Marketingname stehen, in BC der Handelsregistername.

Kontaktart und Anrede werden nur beim Anlegen gesetzt. Werden sie später in BC geändert, bleibt die Änderung erhalten — der Schritt Änderungen nach BC fasst diese Felder nicht an.

Was in der Praxis zu beachten ist

Technische Zuordnung

Jobs und Mappings dieser Kette
OrderJobMappingSeite
220accountsnewfromceCEAccountsNeu nach BC
221accountsresponsefrombcBCAccountsResponseRückmeldung aus BC
410accountsfrombcBCAccountsAus BC übernehmen
420accountsfrombcdeleteBCAccountsDeleteLöschung aus BC
520accountupdatesfromceCEAccountUpdatesÄnderungen nach BC

Beteiligte Tabellen: Dataverse account ⇄ BC API Page singhammerITConsulting/dyce/v2.0/acdcontactscomp; Löschungen über singhammerITConsulting/dyce/v2.0/acdlogentries.

Schlüssel je Schritt

Jeder Schritt findet den Zieldatensatz über einen anderen Schlüssel:

SchrittSchlüssel im ZielTyp
Aus BC übernehmenwysa_bccontactnumber ← BC numberCustomKey wysa_bccodekey
Neu nach BCBC dataverseId ← CE accountidFilter
Rückmeldung aus BCCE accountid aus der AntwortnachrichtPrimaryKey
Änderungen nach BCBC id ← CE wysa_bcsystemidId
Löschung aus BCwysa_bcsystemid ← Log recordIdCustomKey wysa_bcsystemidkey

Der Wechsel der Schlüsselstrategie hat einen Grund: Beim ersten Übertragen aus CE gibt es noch keine BC-Id. Deshalb legt der Anlage-Schritt die CE-GUID im BC-Feld dataverseId ab und findet den Datensatz darüber wieder — das macht ihn wiederholbar, ohne Dubletten zu erzeugen. Sobald die wysa_bcsystemid zurückgemeldet ist, wird direkt über sie adressiert.

Auflösung von Referenzen (Land, Verkäufer, Rabattgruppe)
RichtungOperationWirkung
BC → CELookupBC-Code (z. B. DE) wird zur Dataverse-Referenz auf wysa_country
CE → BCLookupValueDataverse-Referenz wird über wysa_bccode zum BC-Code aufgelöst

Beide arbeiten über den Alternate Key wysa_bccodekey bzw. das Feld wysa_bccode der jeweiligen Werteliste. Der Verkäufer bildet die Ausnahme: dort heißt das Codefeld wysa_code.

Daraus folgt eine harte Reihenfolgeabhängigkeit: Die Stammdaten-Jobs für Länder (110), Rabattgruppen (125) und Verkäufer (130) müssen vor den Firmen-Jobs laufen — sonst läuft der Lookup ins Leere und das Feld bleibt in CE leer.

3.1 - Firmen aus Business Central übernehmen

Neue und geänderte Firmen aus dem ERP erscheinen in Customer Engagement.
RichtungBusiness Central → Customer Engagement
Wannalle 2 Minuten
Betrifftalle Firmenkontakte, die in BC seit dem letzten Lauf geändert wurden
TechnischJob accountsfrombc (410), Mapping BCAccounts

Was passiert hier?

Wird in Business Central ein Firmenkontakt angelegt oder geändert, erscheint er kurz darauf in Customer Engagement. Existiert die Firma dort schon, werden ihre Felder aktualisiert; existiert sie noch nicht, wird sie neu angelegt.

Wiedererkannt wird eine Firma an ihrer BC Kontaktnummer. Sie ist die Klammer zwischen beiden Systemen — nicht der Firmenname.

Der Abgleich holt bei jedem Lauf nur, was sich seit dem letzten Mal geändert hat. Ein Vollabgleich findet nicht statt.

Welche Felder kommen an?

Feld in Business CentralFeld in Customer EngagementAnmerkung
Nr.BC KontaktnummerErkennungsmerkmal — verbindet beide Systeme
idBC System-IDtechnischer Schlüssel des ERP
NameName 1 (BC)nicht das Feld Firmenname — siehe unten
Name 2Name 2 (BC)
AdresseStraße 1
Adresse 2Straße 2
PLZPostleitzahl
OrtOrt
Länder-/RegionscodeLandwird zur Verknüpfung auf die Länderliste aufgelöst
Telefonnr.Telefon
E-MailE-Mail
HomepageWebsite
Debitor Nr.BC Debitorennummernur aus BC — CE ändert das nie
Kreditor Nr.BC Kreditorennummernur aus BC
DebitorrabattgruppeDebitorrabattgruppenur aus BC, als Verknüpfung
VerkäufercodeVerkäufer (BC)wird zur Verknüpfung auf den Verkäufer aufgelöst
UnternehmensnameÜbergeordnete Firmaals Verknüpfung, siehe unten
—Sync zu BCwird automatisch auf „Ja" gesetzt

Worauf zu achten ist

Der Firmenname wird nicht überschrieben

Der Name aus BC landet im Feld Name 1 (BC) — nicht im Standardfeld Firmenname. Was in CE als Firmenname gepflegt ist, bleibt also unangetastet. Das ist gewollt: In CE darf der geläufige Marktname stehen, in BC der vollständige Name aus dem Handelsregister.

Die Firma wird automatisch für BC freigegeben

Das Feld Sync zu BC wird auf „Ja" gesetzt. Das ist folgerichtig — die Firma existiert im ERP ja bereits — hat aber eine Konsequenz: Ab sofort werden auch Änderungen aus CE zurück nach BC übertragen, und die Kontakte dieser Firma dürfen freigegeben werden.

Vier Felder kommen nur aus BC

Debitornummer, Kreditornummer, Debitorrabattgruppe und die übergeordnete Firma sind ERP-Daten. Sie werden nie von CE nach BC zurückgeschrieben. Eine Änderung in CE hat keine Wirkung und wird beim nächsten Abgleich überschrieben.

Verknüpfungen brauchen aktuelle Stammdaten

Land, Verkäufer und Debitorrabattgruppe kommen aus BC als Kürzel und werden in CE zu echten Verknüpfungen aufgelöst. Fehlt das passende Stammdatum in CE — etwa ein neu in BC angelegter Verkäufer —, bleibt das Feld an der Firma leer. Die Stammdatenlisten werden vor den Firmen abgeglichen, sodass das normalerweise innerhalb desselben Laufs zusammenfindet.

Firmen sind nie ihre eigene übergeordnete Firma

In Business Central trägt ein Firmenkontakt sich selbst als Unternehmen ein. Ohne Sonderbehandlung entstünde in CE eine Firma, die auf sich selbst verweist. Der Abgleich erkennt diesen Fall und lässt das Feld Übergeordnete Firma dann leer.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → accountsfrombc.

3.2 - Neue Firmen nach Business Central übertragen

In Customer Engagement angelegte und freigegebene Firmen werden im ERP angelegt.
RichtungCustomer Engagement → Business Central
Wannalle 2 Minuten
BetrifftFirmen, die freigegeben sind und in BC noch nicht existieren
TechnischJob accountsnewfromce (220), Mapping CEAccounts

Was passiert hier?

Der Vertrieb legt eine Firma in Customer Engagement an. Zunächst bleibt sie dort — das ERP erfährt nichts davon. Erst wenn das Feld Sync zu BC auf „Ja" gesetzt wird, wird die Firma beim nächsten Lauf in Business Central angelegt.

Zwei Bedingungen müssen gleichzeitig erfüllt sein:

  1. Sync zu BC steht auf „Ja"
  2. das Feld BC System-ID ist noch leer — BC kennt die Firma also noch nicht

Ist die BC System-ID bereits gefüllt, greift stattdessen Änderungen nach BC.

Unmittelbar nach dem Anlegen läuft die Rückmeldung aus BC und trägt Kontaktnummer und BC System-ID in CE nach. Erst danach gilt die Firma als „in BC angekommen".

flowchart LR
  A["Firma in CE angelegt"] --> B{"Sync zu BC<br/>= Ja?"}
  B -->|nein| C["nichts passiert"]
  B -->|ja| D{"BC System-ID<br/>leer?"}
  D -->|nein| E["Änderungen nach BC<br/>greift stattdessen"]
  D -->|ja| F["Firma wird in BC angelegt"]
  F --> G["Rückmeldung aus BC<br/>füllt Kontaktnummer<br/>und BC System-ID"]

Welche Felder gehen nach BC?

Feld in Customer EngagementFeld in Business CentralAnmerkung
Name 1 (BC)Namenicht das Feld Firmenname
Name 2 (BC)Name 2
Straße 1Adresse
Straße 2Adresse 2
PostleitzahlPLZ
OrtOrt
LandLänder-/Regionscodedie Verknüpfung wird zum BC-Kürzel aufgelöst
TelefonTelefonnr.
E-MailE-Mail
WebsiteHomepage
Verkäufer (BC)Verkäufercodedie Verknüpfung wird zum BC-Kürzel aufgelöst
(Firma-Datensatz)Dataverse Idtechnische Klammer, siehe unten
—Kontaktartfest auf „Company"
—Anredecodefest auf „MANDANT"

Worauf zu achten ist

Der Name muss in „Name 1 (BC)" stehen

Übertragen wird Name 1 (BC), nicht das Standardfeld Firmenname. Ist Name 1 (BC) leer, kommt die Firma ohne Namen in BC an. Wer eine Firma für BC freigibt, sollte dieses Feld also gefüllt haben.

Debitornummer und Rabattgruppe werden nicht mitgeschickt

Debitornummer, Kreditornummer, Debitorrabattgruppe und die übergeordnete Firma werden nicht nach BC übertragen. Diese Daten entstehen im ERP und fließen nur von dort nach CE zurück. Was in CE in diesen Feldern steht, spielt für die Übertragung keine Rolle.

Kontaktart und Anrede werden nur einmal gesetzt

Beim Anlegen wird die Kontaktart fest auf „Company" gesetzt, damit BC den Datensatz als Firmenkontakt und nicht als Person führt; der Anredecode wird auf „MANDANT" gesetzt. Beide Felder werden später nie wieder angefasst — eine spätere Änderung in BC bleibt also erhalten.

Doppelte Anlage ist ausgeschlossen

Läuft der Abgleich zweimal, bevor die Rückmeldung eingetroffen ist, entsteht in BC trotzdem keine zweite Firma. Der Datensatz wird über die in BC hinterlegte Dataverse Id wiedererkannt.

Erst die Firma, dann der Kontakt

Ein Kontakt kann in BC nur angelegt werden, wenn seine Firma dort bereits existiert. Die Freigabe eines Kontakts wird deshalb abgelehnt, solange die BC System-ID seiner Firma leer ist — siehe Freigabe nach Business Central.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → accountsnewfromce.

3.3 - Rückmeldung aus Business Central

Nach der Anlage im ERP kommen Kontaktnummer und BC System-ID zurück nach Customer Engagement.
RichtungBusiness Central → Customer Engagement
Wannunmittelbar nach jeder Neuanlage — kein eigener Zeitplan
Betrifftgenau die Firmen, die gerade in BC angelegt wurden
TechnischJob accountsresponsefrombc (221), Mapping BCAccountsResponse

Was passiert hier?

Wenn eine Firma neu nach BC übertragen wird, vergibt Business Central dabei zwei Werte, die Customer Engagement noch nicht kennen kann:

  • die BC Kontaktnummer aus dem Nummernkreis des ERP
  • die BC System-ID, den technischen Schlüssel des Datensatzes

Dieser Schritt trägt beides in CE nach. Er läuft direkt im Anschluss an die Anlage und wertet dabei die Antwort von Business Central aus — es ist keine erneute Abfrage.

sequenceDiagram
  participant CE as Customer Engagement
  participant BC as Business Central
  CE->>BC: neue Firma anlegen
  BC-->>CE: Antwort mit Kontaktnummer und BC System-ID
  Note over CE: Rückmeldung trägt beides<br/>an der Firma nach

Warum das der wichtigste Schritt der Kette ist

Die BC System-ID ist mehr als eine technische Kennung — sie ist der Nachweis, dass die Firma im ERP angekommen ist. Solange sie leer ist, gilt die Firma als „noch nicht in BC". Erst wenn sie gefüllt ist, ändert sich das Verhalten der gesamten Kette:

vorhernachher
BC Kontaktnummerleergefüllt
BC System-IDleergefüllt
Zuständig für ÜbertragungenNeu nach BCÄnderungen nach BC
Kontakte dieser Firmadürfen nicht freigegeben werdendürfen freigegeben werden

Genau darauf baut die Freigaberegel auf: Ein gesetztes Häkchen bei Sync zu BC bedeutet nur „soll übertragen werden". Eine gefüllte BC System-ID bedeutet „ist übertragen". Siehe Freigabe nach Business Central.

Welche Felder kommen zurück?

Feld in Business CentralFeld in Customer Engagement
Nr.BC Kontaktnummer
idBC System-ID

Mehr nicht. Alle fachlichen Daten hat CE ja bereits — sie wurden gerade erst dorthin übertragen.

Worauf zu achten ist

Es dauert zwei Durchläufe

Anlage und Rückmeldung gehören zusammen, laufen aber nacheinander. Wer eine Firma freigibt und gleich danach in CE nachsieht, findet die BC System-ID unter Umständen noch nicht — und kann die zugehörigen Kontakte deshalb noch nicht freigeben. Nach spätestens zwei Durchläufen ist der Zustand stabil.

Bleibt die Rückmeldung aus, hängt die Firma fest

Ohne gefüllte BC System-ID gilt die Firma weiterhin als „nicht in BC vorhanden". Sie würde beim nächsten Lauf erneut zur Anlage angeboten — dass dabei keine Dublette entsteht, verhindert die Wiedererkennung über die Dataverse Id. Bleibt der Zustand über mehrere Läufe bestehen, ist das ein Hinweis auf einen Fehler bei der Übertragung und sollte geprüft werden.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → accountsresponsefrombc.

3.4 - Änderungen nach Business Central übertragen

Änderungen an bereits im ERP bekannten Firmen werden von Customer Engagement nach Business Central übertragen.
RichtungCustomer Engagement → Business Central
Wannalle 2 Minuten
Betrifftfreigegebene Firmen, die in BC bereits existieren
TechnischJob accountupdatesfromce (520), Mapping CEAccountUpdates

Was passiert hier?

Sobald eine Firma in beiden Systemen existiert, hält dieser Schritt Business Central auf dem Stand von Customer Engagement. Er ist das Gegenstück zu Aus BC übernehmen — dieselben Felder, nur andersherum.

Erfasst werden Firmen, bei denen beides zutrifft:

  1. Sync zu BC steht auf „Ja"
  2. das Feld BC System-ID ist gefüllt — BC kennt die Firma also

Ist die BC System-ID leer, greift stattdessen Neu nach BC. Die beiden Schritte schließen sich gegenseitig aus.

Welche Felder gehen nach BC?

Feld in Customer EngagementFeld in Business Central
Name 1 (BC)Name
Name 2 (BC)Name 2
Straße 1Adresse
Straße 2Adresse 2
PostleitzahlPLZ
OrtOrt
LandLänder-/Regionscode
TelefonTelefonnr.
E-MailE-Mail
WebsiteHomepage
Verkäufer (BC)Verkäufercode

Elf fachliche Felder — dieselben, die auch in die Gegenrichtung laufen.

Worauf zu achten ist

Es gibt keine Konfliktauflösung

Diese elf Felder werden in beide Richtungen abgeglichen. Wird dieselbe Firma gleichzeitig in CE und in BC geändert, gewinnt schlicht der spätere Schreibvorgang. Ein Abgleich Feld für Feld oder eine Warnung findet nicht statt.

Anrede und Kontaktart werden bewusst nicht überschrieben

Anders als beim Anlegen schickt dieser Schritt Kontaktart und Anredecode nicht mit. Wird die Anrede in BC angepasst, bleibt sie erhalten. Würde sie mitgeschickt, würde sie bei jedem Lauf wieder auf den Vorgabewert zurückgesetzt.

ERP-Felder bleiben unberührt

Debitornummer, Kreditornummer, Debitorrabattgruppe und übergeordnete Firma werden nicht zurückgeschrieben. Wer diese Felder in CE ändert, ändert nichts in BC — und die Änderung wird beim nächsten Abgleich aus BC überschrieben.

Deaktivierte Firmen bleiben erfasst

Wurde eine Firma in BC gelöscht und daraufhin in CE deaktiviert, bleiben Freigabe und BC System-ID stehen. Da dieser Schritt nur diese beiden Felder prüft, fällt der Datensatz weiterhin in seinen Zuständigkeitsbereich.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → accountupdatesfromce.

3.5 - Löschung in Business Central nachvollziehen

Wird eine Firma im ERP gelöscht, wird sie in Customer Engagement deaktiviert — nicht gelöscht.
RichtungBusiness Central → Customer Engagement
Wannalle 2 Minuten
BetrifftFirmen, die in BC gelöscht wurden
TechnischJob accountsfrombcdelete (420), Mapping BCAccountsDelete

Was passiert hier?

Wird eine Firma in Business Central gelöscht, wird sie in Customer Engagement deaktiviert — sie bleibt also erhalten und wird nur inaktiv gesetzt. Als Statusgrund wird festgehalten, dass die Löschung aus BC kam.

flowchart LR
  A["Firma in BC gelöscht"] --> B["Eintrag im<br/>Änderungsprotokoll von BC"]
  B --> C["Abgleich liest das Protokoll"]
  C --> D["Firma in CE wird<br/><b>deaktiviert</b>"]

Der Weg über das Änderungsprotokoll ist notwendig, weil eine gelöschte Firma in der normalen Schnittstelle nicht mehr auftaucht — sie könnte durch Abgleich gar nicht mehr gefunden werden. Das Protokoll hält dagegen fest, dass etwas gelöscht wurde.

Wiedererkannt wird die Firma über die BC System-ID — anders als beim Übernehmen aus BC, das über die BC Kontaktnummer geht. Das Protokoll kennt nur die System-ID des gelöschten Datensatzes.

Warum nicht gelöscht wird

An einer Firma hängen Kontakte, Verkaufschancen, Angebote und Aktivitäten. Ein hartes Löschen würde diese Historie zerstören oder von Dataverse ohnehin abgelehnt. Die Firma inaktiv zu setzen erhält den Zusammenhang und macht zugleich sichtbar, dass sie im ERP nicht mehr existiert.

Anders verhalten sich Angebotspositionen: Sie werden tatsächlich gelöscht, weil sie vollständig aus BC nachgeführt werden. Angebote selbst werden storniert. Siehe Datenfluss.

Was sich an der Firma ändert

FeldWert danach
StatusInaktiv
Statusgrund„in Business Central gelöscht"

Alle übrigen Felder bleiben unverändert — auch Sync zu BC und die BC System-ID.

Worauf zu achten ist

Reaktivieren geht nicht automatisch

Wird die Firma in BC erneut angelegt, bekommt sie dort eine neue System-ID und Kontaktnummer. Sie kommt dann als neue Firma nach CE — die deaktivierte bleibt daneben stehen. Eine automatische Zusammenführung gibt es nicht.

Dasselbe Verhalten bei Kontakt und Produkt

Kontakte (contactsfrombcdelete, 440) und Produkte (productsfrombcdelete, 450) werden nach demselben Muster deaktiviert statt gelöscht.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → accountsfrombcdelete.

4 - Kontakt

Wie Kontakte zwischen Customer Engagement und Business Central abgeglichen werden — Gesamtbild und die fünf Schritte im Detail.

Kontakte werden nach demselben Muster abgeglichen wie Firmen: in beide Richtungen, im Zwei-Minuten-Takt, gesteuert über die Freigabe Sync zu BC und die BC System-ID.

Ein Unterschied ist aber grundlegend: Ein Kontakt hängt an seiner Firma. Business Central kann einen Kontakt nur anlegen, wenn dessen Firma dort bereits existiert. Das prägt den gesamten Ablauf.

SchrittWas passiertWann
Aus BC übernehmenBC-Kontakte kommen nach CEalle 2 Minuten
Neu nach BCin CE angelegte, freigegebene Kontakte werden in BC angelegtalle 2 Minuten
Rückmeldung aus BCBC meldet Nummer, Id und Adressdaten zurückdirekt nach der Anlage
Änderungen nach BCÄnderungen in CE gehen nach BCalle 2 Minuten
Löschung aus BCin BC gelöschte Kontakte werden in CE deaktiviertalle 2 Minuten

Der Kreislauf

flowchart TB
  START(["Kontakt entsteht"]) --> Q{"Wo?"}

  Q -->|"in CE angelegt"| C0{"Firma bereits<br/>in BC?"}
  Q -->|"in BC angelegt"| B1["<b>Aus BC übernehmen</b><br/>Kontakt erscheint in CE"]

  C0 -->|nein| BLOCK["Freigabe wird abgelehnt —<br/>erst die Firma übertragen"]
  C0 -->|ja| C1["Feld <b>BC System-ID</b><br/>ist noch leer"]

  C1 --> C2{"<b>Sync zu BC</b><br/>freigegeben?"}
  C2 -->|nein| WAIT["Kontakt bleibt in CE"]
  C2 -->|ja| C3["<b>Neu nach BC</b><br/>Kontakt wird in BC angelegt"]

  C3 --> C4["<b>Rückmeldung aus BC</b><br/>BC Kontaktnummer, BC System-ID<br/>und Adressdaten kommen zurück"]

  B1 --> SYNC["Kontakt existiert in beiden Systemen"]
  C4 --> SYNC

  SYNC --> U1["Änderung in CE<br/><b>Änderungen nach BC</b>"]
  SYNC --> U2["Änderung in BC<br/><b>Aus BC übernehmen</b>"]
  U1 --> SYNC
  U2 --> SYNC

  SYNC --> D1["Kontakt in BC gelöscht"]
  D1 --> D2["<b>Löschung aus BC</b><br/>Kontakt in CE wird deaktiviert"]

Erst die Firma, dann der Kontakt

Das ist die zentrale Regel — und der wichtigste Unterschied zur Firma:

Ein Kontakt darf erst freigegeben werden, wenn die BC System-ID seiner Firma gefüllt ist.

Ein gesetztes Häkchen bei Sync zu BC an der Firma genügt nicht. Es bedeutet nur „soll übertragen werden". Erst die gefüllte BC System-ID beweist, dass die Firma im ERP angekommen ist. Die Lösung setzt das aktiv durch: Die Freigabe eines Kontakts wird abgelehnt, solange die Firma nicht nachweislich in BC existiert. Dasselbe gilt beim Umhängen eines Kontakts an eine andere Firma.

Ausführlich beschrieben ist die Regel unter Freigabe nach Business Central.

Die Weiche: das Feld „BC System-ID"

Wie bei der Firma entscheidet die BC System-ID, welcher Schritt greift:

Feld ist …BedeutungEs greift
leerBC kennt den Kontakt noch nichtNeu nach BC
gefülltBC kennt den KontaktÄnderungen nach BC

Beide setzen zusätzlich die Freigabe über Sync zu BC voraus.

Welche Felder laufen in welche Richtung?

Feld in CEAus BC übernehmenNeu nach BCÄnderungen nach BC
Vorname, Zweiter Vorname, Nachname✓✓✓
Anrede (BC)✓✓✓
Sprache✓✓✓
Straße 1 / Straße 2✓✓✓
Postleitzahl / Ort✓✓✓
Land✓✓✓
Geschäftlich (Telefon)✓✓✓
Mobiltelefon✓✓✓
E-Mail✓✓✓
Firmenname (übergeordnete Firma)✓✓✓
Position (BC)✓––
Verkäufer (BC)–✓✓
Sync zu BC✓––
BC Kontaktnummer✓––
BC System-ID✓––

Zwölf Felder laufen glatt in beide Richtungen. Die drei hervorgehobenen verdienen einen zweiten Blick.

Die übergeordnete Firma ist hier bidirektional

Beim Kontakt wird die Zuordnung zur Firma in beide Richtungen abgeglichen — anders als bei der Firma, wo die übergeordnete Firma nur aus BC kommt. Wird ein Kontakt in CE an eine andere Firma gehängt, geht das nach BC; und umgekehrt.

Aufgelöst wird über die BC Kontaktnummer der Firma. Fehlt sie — weil die Firma noch nicht in BC ist —, kann die Zuordnung nicht gebildet werden. Genau deshalb greift die Freigaberegel oben.

Zwei Felder laufen nur in eine Richtung

FeldRichtungKonsequenz
Position (BC) — die Organisationsebene aus BCnur BC → CEEine Änderung in CE geht nicht nach BC und wird beim nächsten Abgleich überschrieben
Verkäufer (BC)nur CE → BCDer in BC hinterlegte Verkäufer wird beim Übernehmen nicht nach CE geholt

Was in der Praxis zu beachten ist

Unterschiede zur Firma auf einen Blick

FirmaKontakt
Kontaktart in BCCompanyPerson
Übergeordnete Firmanur BC → CEbidirektional
NameName 1 / Name 2 (BC), Firmenname bleibt unberührtVorname / Zweiter Vorname / Nachname, Standardfelder
Rückmeldung aus BC2 Felder (Nummer, Id)9 Felder — zusätzlich Adressdaten
Freigabe abhängig von—BC System-ID der Firma
Anredefester Vorgabewert MANDANTVerweis auf die BC-Anredeschlüssel

Technische Zuordnung

Jobs und Mappings dieser Kette
OrderJobMappingSeite
240contactsnewfromceCEContactsNeu nach BC
241contactsresponsefrombcBCContactsResponseRückmeldung aus BC
430contactsfrombcBCContactsAus BC übernehmen
440contactsfrombcdeleteBCContactsDeleteLöschung aus BC
530contactupdatesfromceCEContactsUpdatesÄnderungen nach BC

Beteiligte Tabellen: Dataverse contact ⇄ BC API Page singhammerITConsulting/dyce/v2.0/acdcontacts; Löschungen über singhammerITConsulting/dyce/v2.0/acdlogentries.

Schlüssel je Schritt
SchrittSchlüssel im ZielTyp
Aus BC übernehmenwysa_bccontactnumber ← BC numberCustomKey wysa_bccodekey
Neu nach BCBC dataverseId ← CE contactidFilter
Rückmeldung aus BCCE contactid aus der AntwortnachrichtPrimaryKey
Änderungen nach BCBC id ← CE wysa_bcsystemidId
Löschung aus BCwysa_bcsystemid ← Log recordIdCustomKey wysa_bcsystemidkey

Identisch zur Firma.

Auflösung von Referenzen

Der Kontakt löst mehr Referenzen auf als die Firma — fünf statt drei:

CE-FeldWertelisteCodefeldStammdaten-Job
Land (wysa_address1_countryid)wysa_countrywysa_bccodecountriesfrombc (110)
Sprache (wysa_language)wysa_languagewysa_bccodelanguagesfrombc (115)
Anrede BC (wysa_salutationbcid)wysa_bcsalutationwysa_codesalutationsfrombc (120)
Verkäufer BC (wysa_bcsalespersonid)wysa_bcsalespersonwysa_codesalespersonsfrombc (130)
Position BC (wysa_bcpositionid)wysa_bcpositionwysa_codepositionsfrombc (135)
Firma (parentcustomerid)accountwysa_bccontactnumber—

Die Stammdaten-Jobs 110 – 135 laufen vor den Kontakt-Jobs (240 / 430), sodass die Wertelisten innerhalb desselben Laufs aktuell sind.

4.1 - Kontakte aus Business Central übernehmen

Neue und geänderte Kontakte aus dem ERP erscheinen in Customer Engagement.
RichtungBusiness Central → Customer Engagement
Wannalle 2 Minuten
Betrifftalle Kontakte, die in BC seit dem letzten Lauf geändert wurden
TechnischJob contactsfrombc (430), Mapping BCContacts

Was passiert hier?

Wird in Business Central ein Kontakt angelegt oder geändert, erscheint er kurz darauf in Customer Engagement. Existiert der Kontakt dort schon, werden seine Felder aktualisiert; existiert er noch nicht, wird er neu angelegt.

Wiedererkannt wird ein Kontakt an seiner BC Kontaktnummer — nicht am Namen.

Der Abgleich holt bei jedem Lauf nur, was sich seit dem letzten Mal geändert hat.

Welche Felder kommen an?

Feld in Business CentralFeld in Customer EngagementAnmerkung
Nr.BC KontaktnummerErkennungsmerkmal — verbindet beide Systeme
idBC System-IDtechnischer Schlüssel des ERP
VornameVorname
Zweiter VornameZweiter Vorname
NachnameNachname
AnredecodeAnrede (BC)wird zur Verknüpfung auf die BC-Anredeschlüssel aufgelöst
SprachcodeSprachewird zur Verknüpfung auf die Sprachliste aufgelöst
OrganisationsebenePosition (BC)wird zur Verknüpfung aufgelöst — nur aus BC
UnternehmensnameFirmenname (übergeordnete Firma)wird über die BC Kontaktnummer der Firma aufgelöst
AdresseStraße 1
Adresse 2Straße 2
PLZPostleitzahl
OrtOrt
Länder-/RegionscodeLandwird zur Verknüpfung auf die Länderliste aufgelöst
Telefonnr.Geschäftlich (Telefon)
Mobiltelefonnr.Mobiltelefon
E-MailE-Mail
—Sync zu BCwird automatisch auf „Ja" gesetzt

Worauf zu achten ist

Die Firma muss zuerst da sein

Die Zuordnung zur Firma wird über deren BC Kontaktnummer hergestellt. Ist die Firma in CE noch nicht vorhanden — etwa weil der Firmen-Abgleich noch nicht gelaufen ist —, bleibt das Feld Firmenname am Kontakt leer. Da die Firmen-Jobs (410) vor den Kontakt-Jobs (430) laufen, findet das normalerweise innerhalb desselben Laufs zusammen.

Der Verkäufer wird nicht mitgeholt

Anders als bei der Firma holt dieser Schritt den Verkäufer (BC) nicht aus BC ab — obwohl er in der Gegenrichtung übertragen wird. Was in CE im Feld Verkäufer (BC) steht, stammt also aus CE selbst, nicht aus dem ERP.

Die Funktion wird nicht mitgeholt

Auch das Standardfeld Position (die Funktion als Freitext) wird nicht aus BC geholt. Übertragen wird nur Position (BC), die Organisationsebene — das ist ein anderes Feld. Siehe die Warnung in der Kontakt-Übersicht.

Der Kontakt wird automatisch für BC freigegeben

Das Feld Sync zu BC wird auf „Ja" gesetzt. Ab sofort werden also auch Änderungen aus CE zurück nach BC übertragen.

Verknüpfungen brauchen aktuelle Stammdaten

Anrede, Sprache, Organisationsebene und Land kommen aus BC als Kürzel und werden in CE zu Verknüpfungen aufgelöst. Fehlt das passende Stammdatum, bleibt das Feld leer. Die Stammdatenlisten werden vorher abgeglichen.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → contactsfrombc.

4.2 - Neue Kontakte nach Business Central übertragen

In Customer Engagement angelegte und freigegebene Kontakte werden im ERP angelegt.
RichtungCustomer Engagement → Business Central
Wannalle 2 Minuten
BetrifftKontakte, die freigegeben sind und in BC noch nicht existieren
TechnischJob contactsnewfromce (240), Mapping CEContacts

Was passiert hier?

Der Vertrieb legt einen Kontakt in Customer Engagement an. Sobald das Feld Sync zu BC auf „Ja" gesetzt ist, wird er beim nächsten Lauf in Business Central angelegt — als Personenkontakt, zugeordnet zu seiner Firma.

Zwei Bedingungen müssen erfüllt sein:

  1. Sync zu BC steht auf „Ja"
  2. das Feld BC System-ID ist noch leer

Ist die BC System-ID bereits gefüllt, greift stattdessen Änderungen nach BC.

Vorher: die Firma muss in BC sein

Business Central kann einen Kontakt nur anlegen, wenn dessen Firma dort schon existiert. Deshalb lässt sich ein Kontakt gar nicht erst freigeben, solange die BC System-ID seiner Firma leer ist — die Lösung lehnt die Freigabe ab.

flowchart LR
  A["Kontakt in CE angelegt"] --> B{"BC System-ID<br/>der <b>Firma</b> gefüllt?"}
  B -->|nein| C["Freigabe wird abgelehnt"]
  B -->|ja| D{"Sync zu BC<br/>= Ja?"}
  D -->|nein| E["nichts passiert"]
  D -->|ja| F["Kontakt wird in BC angelegt"]
  F --> G["Rückmeldung aus BC"]

Wird die Firma freigegeben und sind ihre Kontakte ebenfalls freigegeben, ordnet sich das über die Ausführungsreihenfolge von selbst: Die Firma wird in Durchlauf 1 angelegt und zurückgemeldet, die Kontakte folgen im nächsten Durchlauf. Siehe Freigabe nach Business Central.

Welche Felder gehen nach BC?

Feld in Customer EngagementFeld in Business CentralAnmerkung
VornameVorname
Zweiter VornameZweiter Vorname
NachnameNachname
Anrede (BC)Anredecodedie Verknüpfung wird zum BC-Kürzel aufgelöst
SpracheSprachcodedie Verknüpfung wird zum BC-Kürzel aufgelöst
Firmenname (übergeordnete Firma)Unternehmensnamewird zur BC Kontaktnummer der Firma aufgelöst
Verkäufer (BC)Verkäufercodedie Verknüpfung wird zum BC-Kürzel aufgelöst
Straße 1Adresse
Straße 2Adresse 2
PostleitzahlPLZ
OrtOrt
LandLänder-/Regionscodedie Verknüpfung wird zum BC-Kürzel aufgelöst
Geschäftlich (Telefon)Telefonnr.
MobiltelefonMobiltelefonnr.
E-MailE-Mail
(Kontakt-Datensatz)Dataverse Idtechnische Klammer
—Kontaktartfest auf „Person"

Worauf zu achten ist

Die Funktion wird nicht mitgeschickt

Das Standardfeld Position (die Funktion als Freitext) ist weder bei der Neuanlage noch beim Ändern Teil der Übertragung. Die Funktion bleibt in CE.

Die Organisationsebene wird nicht mitgeschickt

Position (BC) — die Organisationsebene — läuft nur von BC nach CE. Was in CE in diesem Feld steht, hat auf BC keine Wirkung.

Ohne Firma keine Zuordnung

Die Zuordnung zur Firma wird über deren BC Kontaktnummer aufgelöst. Ist sie leer, kommt der Kontakt ohne Firmenzuordnung in BC an. Die Freigaberegel verhindert das normalerweise — beim Umhängen an eine noch nicht übertragene Firma ist aber Vorsicht geboten.

Doppelte Anlage ist ausgeschlossen

Läuft der Abgleich zweimal, bevor die Rückmeldung eingetroffen ist, entsteht in BC trotzdem kein zweiter Kontakt. Der Datensatz wird über die in BC hinterlegte Dataverse Id wiedererkannt.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → contactsnewfromce.

4.3 - Rückmeldung aus Business Central

Nach der Anlage im ERP kommen Kontaktnummer, BC System-ID und die von BC ergänzten Adressdaten zurück.
RichtungBusiness Central → Customer Engagement
Wannunmittelbar nach jeder Neuanlage — kein eigener Zeitplan
Betrifftgenau die Kontakte, die gerade in BC angelegt wurden
TechnischJob contactsresponsefrombc (241), Mapping BCContactsResponse

Was passiert hier?

Wenn ein Kontakt neu nach BC übertragen wird, vergibt Business Central zwei Werte, die Customer Engagement noch nicht kennen kann:

  • die BC Kontaktnummer aus dem Nummernkreis des ERP
  • die BC System-ID, den technischen Schlüssel des Datensatzes

Beim Kontakt kommt aber noch etwas hinzu: Business Central schickt auch die Adressdaten zurück.

Warum Adressdaten zurückkommen

Legt man in Business Central einen Personenkontakt an und ordnet ihn einem Unternehmen zu, übernimmt BC dessen Adresse, sofern der Kontakt keine eigene hat. Der Datensatz in BC sieht danach also anders aus, als CE ihn abgeschickt hat.

Damit beide Systeme übereinstimmen, holt dieser Schritt die Adressdaten in dem Zustand zurück, den BC ihnen gegeben hat, und schreibt sie in CE.

sequenceDiagram
  participant CE as Customer Engagement
  participant BC as Business Central
  CE->>BC: neuer Kontakt (ggf. ohne Adresse)
  Note over BC: BC ergänzt die Adresse<br/>aus dem Unternehmen
  BC-->>CE: Nummer, System-ID<br/>und die ergänzte Adresse
  Note over CE: Kontakt wird nachgezogen

Bei der Firma ist das nicht nötig — dort kommen nur Nummer und Id zurück.

Welche Felder kommen zurück?

Feld in Business CentralFeld in Customer Engagement
Nr.BC Kontaktnummer
idBC System-ID
AdresseStraße 1
Adresse 2Straße 2
PLZPostleitzahl
OrtOrt
Länder-/RegionscodeLand
Telefonnr.Geschäftlich (Telefon)

Warum das der wichtigste Schritt der Kette ist

Die BC System-ID ist der Nachweis, dass der Kontakt im ERP angekommen ist. Erst wenn sie gefüllt ist, ändert sich das Verhalten der Kette:

vorhernachher
BC Kontaktnummerleergefüllt
BC System-IDleergefüllt
Zuständig für ÜbertragungenNeu nach BCÄnderungen nach BC

Worauf zu achten ist

In CE erfasste Adressdaten können überschrieben werden

Da BC die Adresse ergänzt und zurückschickt, kann eine in CE erfasste abweichende Adresse durch die BC-Fassung ersetzt werden. Wer eine vom Firmensitz abweichende Kontaktadresse pflegt, sollte nach der ersten Übertragung prüfen, ob sie erhalten geblieben ist.

Es dauert zwei Durchläufe

Anlage und Rückmeldung laufen nacheinander. Bis BC Kontaktnummer und System-ID in CE stehen, vergeht ein weiterer Durchlauf.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → contactsresponsefrombc.

4.4 - Änderungen nach Business Central übertragen

Änderungen an bereits im ERP bekannten Kontakten werden von Customer Engagement nach Business Central übertragen.
RichtungCustomer Engagement → Business Central
Wannalle 2 Minuten
Betrifftfreigegebene Kontakte, die in BC bereits existieren
TechnischJob contactupdatesfromce (530), Mapping CEContactsUpdates

Was passiert hier?

Sobald ein Kontakt in beiden Systemen existiert, hält dieser Schritt Business Central auf dem Stand von Customer Engagement.

Erfasst werden Kontakte, bei denen beides zutrifft:

  1. Sync zu BC steht auf „Ja"
  2. das Feld BC System-ID ist gefüllt

Ist die BC System-ID leer, greift stattdessen Neu nach BC. Die beiden Schritte schließen sich gegenseitig aus.

Welche Felder gehen nach BC?

Feld in Customer EngagementFeld in Business Central
VornameVorname
Zweiter VornameZweiter Vorname
NachnameNachname
Anrede (BC)Anredecode
SpracheSprachcode
Firmenname (übergeordnete Firma)Unternehmensname
Verkäufer (BC)Verkäufercode
Straße 1Adresse
Straße 2Adresse 2
PostleitzahlPLZ
OrtOrt
LandLänder-/Regionscode
Geschäftlich (Telefon)Telefonnr.
MobiltelefonMobiltelefonnr.
E-MailE-Mail

Worauf zu achten ist

Die Funktion wird nicht übertragen

Position (die Funktion als Freitext) ist weder Teil der Neuanlage noch dieses Schritts. Die Funktion eines Kontakts wird also in keine Richtung abgeglichen — in BC gepflegte Werte bleiben dort, in CE gepflegte bleiben in CE.

Umhängen an eine andere Firma geht nach BC

Anders als bei der Firma ist die Zuordnung zur übergeordneten Firma beim Kontakt bidirektional. Wird ein Kontakt in CE an eine andere Firma gehängt, wird das nach BC übertragen — aufgelöst über die BC Kontaktnummer der neuen Firma.

Ist die neue Firma noch nicht in BC, kann die Zuordnung nicht gebildet werden. Die Lösung lehnt das Umhängen deshalb ab, solange die BC System-ID der neuen Firma leer ist — siehe Freigabe nach Business Central.

Die Organisationsebene bleibt unberührt

Position (BC) — die Organisationsebene — wird nicht zurückgeschrieben. Sie kommt nur aus BC. Eine Änderung in CE hat keine Wirkung und wird beim nächsten Abgleich überschrieben.

Die Kontaktart wird bewusst nicht überschrieben

Anders als beim Anlegen schickt dieser Schritt die Kontaktart nicht mit. Eine in BC vorgenommene Anpassung bleibt erhalten.

Es gibt keine Konfliktauflösung

Die fachlichen Felder werden in beide Richtungen abgeglichen. Wird derselbe Kontakt gleichzeitig in CE und BC geändert, gewinnt der spätere Schreibvorgang.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → contactupdatesfromce.

4.5 - Löschung in Business Central nachvollziehen

Wird ein Kontakt im ERP gelöscht, wird er in Customer Engagement deaktiviert — nicht gelöscht.
RichtungBusiness Central → Customer Engagement
Wannalle 2 Minuten
BetrifftKontakte, die in BC gelöscht wurden
TechnischJob contactsfrombcdelete (440), Mapping BCContactsDelete

Was passiert hier?

Wird ein Kontakt in Business Central gelöscht, wird er in Customer Engagement deaktiviert — er bleibt also erhalten und wird nur inaktiv gesetzt.

Der Weg führt über das Änderungsprotokoll von BC: Ein gelöschter Kontakt taucht in der normalen Schnittstelle nicht mehr auf und könnte durch Abgleich gar nicht gefunden werden. Das Protokoll hält dagegen fest, dass etwas gelöscht wurde.

Wiedererkannt wird der Kontakt über die BC System-ID — anders als beim Übernehmen aus BC, das über die BC Kontaktnummer geht. Das Protokoll kennt nur die System-ID des gelöschten Datensatzes.

Firma und Kontakt teilen sich dieselbe BC-Tabelle

In Business Central liegen Firmenkontakte und Personenkontakte in derselben Tabelle. Das Änderungsprotokoll unterscheidet sie nicht — beim Löschen entsteht in beiden Fällen derselbe Eintragstyp.

Deshalb lesen zwei Jobs dieselben Protokolleinträge und sortieren sie über die BC System-ID selbst auseinander:

flowchart LR
  A["Kontakt oder Firma<br/>in BC gelöscht"] --> B["Eintrag im<br/>Änderungsprotokoll"]
  B --> C["<b>Löschung aus BC (Firma)</b><br/>sucht in den Firmen"]
  B --> D["<b>Löschung aus BC (Kontakt)</b><br/>sucht in den Kontakten"]
  C --> E["gefunden → deaktivieren"]
  C --> F["nicht gefunden →<br/>nichts passiert"]
  D --> G["gefunden → deaktivieren"]
  D --> H["nicht gefunden →<br/>nichts passiert"]

Ein gelöschter Personenkontakt wird nur vom Kontakt-Job gefunden, eine gelöschte Firma nur vom Firmen-Job. Der jeweils andere läuft ins Leere und tut nichts. Das ist kein Fehler, sondern der Mechanismus.

Warum nicht gelöscht wird

An einem Kontakt hängen Verkaufschancen, Angebote und Aktivitäten. Ein hartes Löschen würde diese Historie zerstören. Den Kontakt inaktiv zu setzen erhält den Zusammenhang und macht zugleich sichtbar, dass er im ERP nicht mehr existiert.

Was sich am Kontakt ändert

FeldWert danach
StatusInaktiv
Statusgrund„in Business Central gelöscht"

Alle übrigen Felder bleiben unverändert — auch Sync zu BC und die BC System-ID.

Der Kontakt bleibt im Abgleich nach BC

Da Freigabe und BC System-ID stehen bleiben, fällt der deaktivierte Kontakt weiterhin in den Zuständigkeitsbereich von Änderungen nach BC — dieser Schritt prüft nur diese beiden Felder, nicht den Status.

Reaktivieren geht nicht automatisch

Wird der Kontakt in BC erneut angelegt, bekommt er dort eine neue System-ID und Kontaktnummer. Er kommt dann als neuer Kontakt nach CE — der deaktivierte bleibt daneben stehen. Eine automatische Zusammenführung gibt es nicht.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → contactsfrombcdelete.

5 - Verkaufschance

Wie Verkaufschancen und ihre Positionen nach Business Central übertragen werden — Gesamtbild und die Schritte im Detail.

Die Verkaufschance ist die dritte Stufe der Freigabekette: Firma → Kontakt → Verkaufschance. Und sie ist der erste Datenbereich, der grundlegend anders funktioniert als Firma und Kontakt:

Die Verkaufschance läuft nur von Customer Engagement nach Business Central.

Es gibt keine Übernahme aus BC und keine Löschverarbeitung. Verkaufschancen entstehen im Vertrieb, nicht im ERP — Business Central braucht sie nur, um daraus Angebote zu erzeugen.

Dazu kommt eine zweite, eigene Kette für die Positionen (Verkaufschancenprodukte), die anders getaktet ist und ein anderes Freigabefeld nutzt.

SchrittWas passiertWann
Neu nach BCfreigegebene Verkaufschancen werden in BC angelegtalle 2 Minuten
Rückmeldung aus BCBC meldet Verkaufschancennummer und System-ID zurückdirekt nach der Anlage
Kalkulationselemente aus BCdie in Positionen verwendbaren Elemente kommen nach CEalle 2 Minuten
Positionen neu nach BCfreigegebene Positionen werden in BC angelegtalle 3 Minuten
Rückmeldung PositionenBC meldet die System-ID der Position zurückdirekt nach der Anlage
Positionsänderungen nach BCÄnderungen an Positionen gehen nach BCalle 3 Minuten

Der Ablauf

flowchart TB
  subgraph VC["Verkaufschance"]
    A["Verkaufschance in CE angelegt"] --> B{"Kontakt bereits<br/>in BC?"}
    B -->|nein| BLOCK["Freigabe wird abgelehnt"]
    B -->|ja| C{"<b>Sync zu BC</b><br/>freigegeben?"}
    C -->|nein| WAIT["bleibt in CE"]
    C -->|ja| D["<b>Neu nach BC</b><br/>Verkaufschance wird angelegt"]
    D --> E["<b>Rückmeldung aus BC</b><br/>BC Verkaufschancennummer<br/>und BC System-ID"]
  end

  subgraph POS["Positionen"]
    E --> F{"<b>Sync zu BC</b> an der<br/>Position freigegeben?"}
    F -->|ja| G["<b>Positionen neu nach BC</b>"]
    G --> H["<b>Rückmeldung Positionen</b><br/>BC System-ID der Position"]
    H --> I["<b>Positionsänderungen nach BC</b><br/>Menge und Beträge"]
  end

  ELEM["<b>Kalkulationselemente aus BC</b><br/>füllen die Produktliste"] -.->|"Voraussetzung"| G

Erst Firma, dann Kontakt, dann Verkaufschance

Business Central kann eine Verkaufschance nur anlegen, wenn ihr Kontakt dort existiert — und den Kontakt nur, wenn dessen Firma existiert. Die Freigaberegel setzt das in beiden Stufen durch:

FreizugebenVoraussetzung
KontaktBC System-ID der Firma ist gefüllt
VerkaufschanceBC Kontaktnummer des Kontakts ist gefüllt

Eine Verkaufschance ohne Kontakt kann gar nicht übertragen werden — die Freigabe wird abgelehnt. Ausführlich unter Freigabe nach Business Central.

Was nach der Anlage passiert — und was nicht

Zwei Freigabefelder mit unterschiedlichem Namen

Verkaufschance und Position tragen jeweils ein eigenes Feld Sync zu BC — technisch sind es aber zwei verschieden benannte Felder:

DatensatzAnzeigenameLogical Name
VerkaufschanceSync zu BCwysa_sync2bc
VerkaufschancenproduktSync zu BCwysa_SynctoBC

Beide arbeiten mit demselben Wert für „Ja". Beim Erstellen von Auswertungen oder Automatisierungen ist die abweichende Schreibweise zu beachten — siehe Datenmodell.

Positionen verweisen nicht auf Artikel, sondern auf Kalkulationselemente

Eine Verkaufschancenposition zeigt in CE auf einen Datensatz der Produkttabelle. Gefüllt wird diese Tabelle über die Kalkulationselemente aus BC (190).

Für Positionen sind nur diese Elemente verwendbar — Business Central erwartet in der Position einen Elementcode, keine Artikelnummer. Am Produkt kennzeichnet das Feld Verkaufschancen-Element (wysa_OppElement), welche Datensätze dafür zulässig sind.

Welche Felder gehen nach BC?

Verkaufschance

Feld in Customer EngagementFeld in Business Central
ThemaBeschreibung
BeschreibungErweiterte Beschreibung
Voraussichtliches AbschlussdatumErwartetes Abschlussdatum
Voraussichtlicher UmsatzErwarteter Umsatz
FirmaUnternehmensnummer des Kontakts
KontaktKontaktnummer
Verkäufer (BC)Verkäufercode
(Link auf den CE-Datensatz)Dynamics-Sales-Link

Acht Felder — deutlich weniger als bei Firma und Kontakt. Business Central braucht von einer Verkaufschance nur das Nötigste, um daraus ein Angebot zu erzeugen.

Position

Feld in Customer EngagementFeld in Business CentralNeu nach BCÄnderungen nach BC
VerkaufschanceVerkaufschancennummer✓✓
ProduktElementcode✓✓
MengeMenge✓✓
BC BetragBetrag (LW)✓✓
BC Betrag inkl. MwSt.Betrag inkl. MwSt. (LW)✓✓
BeschreibungBeschreibung✓✓
MargeDeckungsbeitrag (LW)✓✓

Beide Schritte übertragen denselben Feldsatz; auch Beschreibung und Marge gehen bei späteren Änderungen mit nach BC.

Unterschiede zu Firma und Kontakt

Firma / KontaktVerkaufschancePosition
Richtungbidirektionalnur CE → BCnur CE → BC
Übernahme aus BC✓––
Änderungspfad✓–✓
Löschverarbeitung✓ deaktivieren––
Taktalle 2 Minutenalle 2 Minutenalle 3 Minuten
Freigabefeldwysa_sync2bcwysa_sync2bcwysa_SynctoBC

Technische Zuordnung

Jobs und Mappings dieser Ketten
OrderJobMappingSeite
190opportunityelementsfrombcBCOpportunityElementsKalkulationselemente aus BC
260opportunitiesnewfromceCEOpportunitiesNeu nach BC
261opportunitiesresponsefrombcBCOpportunitiesResponseRückmeldung aus BC
710opportunityproductsnewfromceCEOpportunityProductsPositionen neu nach BC
750opportunityproductsupdatesfromceCEOpportunityProductsUpdatesPositionsänderungen nach BC
760opportunityproductsresponsefrombcBCOpportunityProductsResponseRückmeldung Positionen

Beteiligte Tabellen:

DataverseBusiness Central API Page
opportunity.../acdopportunities
opportunityproduct.../acdopportunitycalculationelements
product.../acdopportunityelements

Alle API Pages unter singhammerITConsulting/dyce/v2.0/.

Schlüssel je Schritt
SchrittSchlüssel im ZielTyp
Neu nach BCBC dataverseId ← CE opportunityidFilter
Rückmeldung aus BCCE opportunityid aus der AntwortnachrichtPrimaryKey
Kalkulationselemente aus BCwysa_bccode ← BC codeCustomKey
Positionen neu nach BCBC systemId ← CE wysa_bcsystemidId
Rückmeldung PositionenCE opportunityproductid aus der AntwortnachrichtPrimaryKey
Positionsänderungen nach BCBC id ← CE wysa_bcsystemidId

Bemerkenswert: Die Verkaufschance folgt dem bekannten Muster aus Firma und Kontakt — Anlage über dataverseId, danach über die BC System-ID. Die Positionen tun das nicht: Sie verwenden schon bei der Anlage KeyType: Id auf ein Feld, das der Filter des Jobs als leer voraussetzt. Es gibt bei ihnen also keine Wiedererkennung über eine mitgeschickte CE-GUID. Was das für wiederholte Läufe bedeutet, steht auf Positionen neu nach BC.

Auflösung von Referenzen
CE-FeldNachschlagetabelleNachschlagefeld
Firma (parentaccountid)accountwysa_bccontactnumber
Kontakt (parentcontactid)contactwysa_bccontactnumber
Verkäufer BC (wysa_bcsalespersonid)wysa_bcsalespersonwysa_code
Verkaufschance (opportunityid)opportunitywysa_bcopportunitynumber
Produkt (productid)productwysa_bccode

Alle mit LookupType: Attribute und UseCache: true — außer der Verkaufschance: Sie wird ohne Cache aufgelöst (UseCache: false), damit eine gerade erst zurückgemeldete BC Verkaufschancennummer sofort gefunden wird. Die letzten beiden erklären, warum die Reihenfolge zählt: Eine Position kann erst übertragen werden, wenn die Verkaufschance ihre BC Verkaufschancennummer hat und das Produkt seinen BC Code — deshalb laufen die Positions-Jobs (710 – 760) ganz am Ende und die Kalkulationselemente (190) ganz am Anfang.

5.1 - Neue Verkaufschancen nach Business Central übertragen

In Customer Engagement angelegte und freigegebene Verkaufschancen werden im ERP angelegt.
RichtungCustomer Engagement → Business Central
Wannalle 2 Minuten
BetrifftVerkaufschancen, die freigegeben sind und in BC noch nicht existieren
TechnischJob opportunitiesnewfromce (260), Mapping CEOpportunities

Was passiert hier?

Der Vertrieb arbeitet die Verkaufschance in Customer Engagement aus. Sobald sie kaufmännisch tragfähig ist und ein Angebot entstehen soll, wird Sync zu BC auf „Ja" gesetzt — und die Verkaufschance beim nächsten Lauf in Business Central angelegt.

Zwei Bedingungen müssen erfüllt sein:

  1. Sync zu BC steht auf „Ja"
  2. das Feld BC System-ID ist noch leer

Unmittelbar danach läuft die Rückmeldung aus BC und trägt BC Verkaufschancennummer und BC System-ID nach.

Vorher: der Kontakt muss in BC sein

Business Central hängt eine Verkaufschance an einen Kontakt. Existiert der dort nicht, kann die Verkaufschance nicht angelegt werden. Die Lösung lehnt die Freigabe deshalb ab, solange die BC Kontaktnummer des Kontakts leer ist — und ganz ohne Kontakt ohnehin.

flowchart LR
  A["Verkaufschance in CE"] --> B{"Kontakt vorhanden?"}
  B -->|nein| X["Freigabe wird abgelehnt"]
  B -->|ja| C{"BC Kontaktnummer<br/>des Kontakts gefüllt?"}
  C -->|nein| X
  C -->|ja| D{"Sync zu BC = Ja?"}
  D -->|nein| E["nichts passiert"]
  D -->|ja| F["Verkaufschance wird<br/>in BC angelegt"]

Das ist die dritte Stufe der Kette Firma → Kontakt → Verkaufschance, beschrieben unter Freigabe nach Business Central.

Welche Felder gehen nach BC?

Feld in Customer EngagementFeld in Business CentralAnmerkung
ThemaBeschreibungder Titel der Verkaufschance
BeschreibungErweiterte Beschreibungder Freitext der Verkaufschance
Voraussichtliches AbschlussdatumErwartetes Abschlussdatum
Voraussichtlicher UmsatzErwarteter Umsatzin CE je nach Konfiguration berechnet
FirmaUnternehmensnummer des Kontaktswird zur BC Kontaktnummer der Firma aufgelöst
KontaktKontaktnummerwird zur BC Kontaktnummer des Kontakts aufgelöst
Verkäufer (BC)Verkäufercodewird zum BC-Kürzel aufgelöst
(der CE-Datensatz selbst)Dynamics-Sales-Linkklickbarer Link zurück ins CRM
(der CE-Datensatz selbst)Dataverse Idtechnische Klammer

Neun Zuordnungen — die schlankste Übertragung der ganzen Integration. Business Central braucht von einer Verkaufschance nur, was es zur Angebotserstellung benötigt.

Worauf zu achten ist

Die Übertragung baut aus der Datensatz-GUID einen vollständigen Deep Link auf die Verkaufschance in Customer Engagement und legt ihn in BC im Feld Dynamics-Sales-Link ab. Wer im ERP an der Verkaufschance arbeitet, springt damit direkt in den CRM-Datensatz.

Nach der Anlage stehen die Daten in BC still

Es gibt keinen aktiven Änderungspfad für die Verkaufschance. Wird das Thema, die Firma, der Kontakt oder der Verkäufer nachträglich in CE geändert, kommt das nicht in Business Central an. Der dortige Stand bleibt auf dem Zeitpunkt der Anlage.

Die zugehörigen Positionen werden dagegen laufend abgeglichen.

Der voraussichtliche Umsatz kann berechnet sein

Das übertragene Feld Voraussichtlicher Umsatz wird in CE je nach Konfiguration manuell erfasst oder aus den Positionen bzw. dem führenden Angebot berechnet — siehe Beträge und Margen. Übertragen wird der Wert, der beim Lauf im Feld steht.

Doppelte Anlage ist ausgeschlossen

Läuft der Abgleich zweimal, bevor die Rückmeldung eingetroffen ist, entsteht in BC trotzdem keine zweite Verkaufschance — der Datensatz wird über die in BC hinterlegte Dataverse Id wiedererkannt.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → opportunitiesnewfromce.

5.2 - Rückmeldung aus Business Central

Nach der Anlage im ERP kommen Verkaufschancennummer und BC System-ID zurück nach Customer Engagement.
RichtungBusiness Central → Customer Engagement
Wannunmittelbar nach jeder Neuanlage — kein eigener Zeitplan
Betrifftgenau die Verkaufschancen, die gerade in BC angelegt wurden
TechnischJob opportunitiesresponsefrombc (261), Mapping BCOpportunitiesResponse

Was passiert hier?

Wenn eine Verkaufschance neu nach BC übertragen wird, vergibt Business Central zwei Werte, die Customer Engagement noch nicht kennen kann:

  • die BC Verkaufschancennummer aus dem Nummernkreis des ERP
  • die BC System-ID, den technischen Schlüssel des Datensatzes

Dieser Schritt trägt beides in CE nach. Er wertet dabei die Antwort von Business Central aus — es ist keine erneute Abfrage.

sequenceDiagram
  participant CE as Customer Engagement
  participant BC as Business Central
  CE->>BC: neue Verkaufschance anlegen
  BC-->>CE: Antwort mit Verkaufschancennummer<br/>und BC System-ID
  Note over CE: Rückmeldung trägt beides<br/>an der Verkaufschance nach

Welche Felder kommen zurück?

Feld in Business CentralFeld in Customer Engagement
Nr.BC Verkaufschancennummer
idBC System-ID

Warum dieser Schritt die Positionen erst möglich macht

Bei Firma und Kontakt ist die Rückmeldung vor allem der Nachweis, dass der Datensatz im ERP angekommen ist. Bei der Verkaufschance hat sie darüber hinaus eine ganz konkrete Funktion: Ohne die BC Verkaufschancennummer lässt sich keine Position übertragen.

Business Central adressiert eine Verkaufschancenposition über die Nummer ihrer Verkaufschance. Der Schritt Positionen neu nach BC löst dazu das Feld BC Verkaufschancennummer auf. Ist es leer, findet die Position ihr Ziel nicht.

vorhernachher
BC Verkaufschancennummerleergefüllt
BC System-IDleergefüllt
Positionenkönnen nicht übertragen werdenkönnen übertragen werden

Da die Positions-Jobs mit Order 710 – 760 deutlich hinter der Verkaufschance (260 / 261) laufen, greift das innerhalb desselben Durchlaufs.

Worauf zu achten ist

Bleibt die Rückmeldung aus, hängt die ganze Kette

Ohne BC System-ID gilt die Verkaufschance als „nicht in BC vorhanden" und würde beim nächsten Lauf erneut zur Anlage angeboten — dass dabei keine Dublette entsteht, verhindert die Wiedererkennung über die Dataverse Id. Gleichzeitig bleibt die BC Verkaufschancennummer leer, sodass auch keine Position übertragen werden kann. Bleibt der Zustand über mehrere Läufe bestehen, sollte das geprüft werden.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → opportunitiesresponsefrombc.

5.3 - Kalkulationselemente aus Business Central übernehmen

Die Bausteine, aus denen eine Verkaufschance kalkuliert wird, kommen als Produkte nach Customer Engagement.
RichtungBusiness Central → Customer Engagement
Wannalle 2 Minuten
Betrifftdie Verkaufschancen-Elemente aus BC
TechnischJob opportunityelementsfrombc (190), Mapping BCOpportunityElements

Was passiert hier?

Business Central kalkuliert eine Verkaufschance nicht aus Artikeln, sondern aus Verkaufschancen-Elementen — gröberen Bausteinen wie „Lizenzen", „Einführung" oder „Betrieb", die jeweils eigene buchhalterische Dimensionen tragen.

Dieser Schritt holt diese Elemente nach Customer Engagement, damit sie dort in Verkaufschancenpositionen ausgewählt werden können.

Sie landen in der Produkttabelle

Das ist die Besonderheit dieses Schritts:

Die Kalkulationselemente werden in CE als Produkte angelegt — in der Standard-Produkttabelle.

Am Produkt kennzeichnet das Feld Verkaufschancen-Element (wysa_OppElement), welche Datensätze in einer Verkaufschancenposition verwendet werden dürfen. Der Abgleich schreibt dieses Feld nicht selbst; eine Geschäftsregel am Produkt setzt es auf „Ja", sobald der BC Dimension 1 Wert gefüllt ist — also bei jedem aus BC übernommenen Element.

Welche Felder kommen an?

Feld in Business CentralFeld in Customer EngagementAnmerkung
CodeBC CodeErkennungsmerkmal — verbindet beide Systeme
systemIdBC System-IDtechnischer Schlüssel des ERP
BeschreibungBeschreibungBezeichnung des Elements
Dimension 1 CodeBC Dimension 1 Codebuchhalterische Dimension
Dimension 1 WertBC Dimension 1 Wert
Dimension 2 CodeBC Dimension 2 Code
Dimension 2 WertBC Dimension 2 Wert
—Standardeinheitfester Vorgabewert
—Einheitengruppefester Vorgabewert
—Produktstrukturfest auf „Produkt"

Wiedererkannt wird ein Element über den BC Code.

Worauf zu achten ist

Die Dimensionen wandern mit

Jedes Element bringt bis zu zwei buchhalterische Dimensionen samt Werten mit. Sie werden am Produkt gespeichert und laufen später mit der Position nach BC zurück — so bleibt die Kalkulation kontierbar.

Ohne diesen Schritt keine Positionen

Eine Verkaufschancenposition wird nach BC über den Elementcode übertragen, den sie aus dem verknüpften Produkt zieht. Fehlt das Element in CE, kann die Position nicht angelegt werden. Dieser Schritt läuft alle zwei Minuten, die Positions-Jobs alle drei — die Elemente sind also stets vorab verarbeitet, siehe Ausführungsreihenfolge und Takt.

Warum dieser Schritt hier steht

Fachlich ist er ein Stammdaten-Abgleich und läuft im Stammdatenblock. Dokumentiert ist er hier, weil die Elemente, die er liefert, ausschließlich in Verkaufschancenpositionen und Angebotspositionen verwendet werden. Die übrigen Stammdaten-Abgleiche stehen unter Stammdaten.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → opportunityelementsfrombc.

5.4 - Neue Positionen nach Business Central übertragen

Freigegebene Verkaufschancenpositionen werden als Kalkulationszeilen im ERP angelegt.
RichtungCustomer Engagement → Business Central
Wannalle 3 Minuten
BetrifftPositionen, die freigegeben sind und in BC noch nicht existieren
TechnischJob opportunityproductsnewfromce (710), Mapping CEOpportunityProducts

Was passiert hier?

Die Positionen einer Verkaufschance — in CE die Verkaufschancenprodukte — werden in Business Central als Kalkulationszeilen der Verkaufschance angelegt. Aus ihnen entsteht dort später das Angebot.

Zwei Bedingungen müssen erfüllt sein:

  1. Sync zu BC an der Position steht auf „Ja"
  2. das Feld BC System-ID der Position ist noch leer

Zwei Voraussetzungen an anderen Datensätzen

Eine Position adressiert ihr Ziel in BC über zwei Werte, die sie sich aus verknüpften Datensätzen holt:

flowchart LR
  P["Position in CE"] --> A["Verkaufschance<br/><b>BC Verkaufschancennummer</b>"]
  P --> B["Produkt<br/><b>BC Code</b>"]
  A --> Z["Kalkulationszeile in BC"]
  B --> Z
WertKommt vonGefüllt durch
Verkaufschancennummerder VerkaufschanceRückmeldung aus BC (261)
Elementcodedem verknüpften ProduktKalkulationselemente aus BC (190)

Fehlt einer der beiden, findet die Position ihr Ziel nicht.

Sichergestellt ist das über den Takt: Verkaufschance und Kalkulationselemente laufen alle zwei Minuten, dieser Schritt alle drei. Die Vorarbeit ist also stets erledigt — allerdings aus einem früheren Durchlauf, nicht aus demselben. Siehe Ausführungsreihenfolge und Takt.

Welche Felder gehen nach BC?

Feld in Customer EngagementFeld in Business CentralAnmerkung
VerkaufschanceVerkaufschancennummerwird zur BC Verkaufschancennummer aufgelöst
ProduktElementcodewird zum BC Code des Elements aufgelöst
MengeMenge
BeschreibungBeschreibung
BC BetragBetrag (LW)Nettobetrag der Position
BC Betrag inkl. MwSt.Betrag inkl. MwSt. (LW)Bruttobetrag
MargeDeckungsbeitrag (LW)

„LW" steht für Landeswährung — Business Central führt diese Beträge in der Währung des Buchungskreises.

Worauf zu achten ist

Beschreibung und Marge gehen auch bei Änderungen mit

Beschreibung und Marge sind sowohl Teil dieses Schritts als auch des Schritts Positionsänderungen nach BC. Werden sie später in CE geändert, kommt das in Business Central an.

Wiedererkennung über die BC System-ID

Anders als Firma, Kontakt und Verkaufschance schickt dieser Schritt keine Dataverse Id mit. Die Position wird in Business Central über die BC System-ID adressiert, die anschließend über die Rückmeldung nach CE kommt.

Die Freigabe folgt der Verkaufschance

Das Feld Sync zu BC an der Position (wysa_SynctoBC) folgt der Freigabe der Verkaufschance — es muss nicht je Position einzeln gesetzt werden. Zu beachten ist der abweichende technische Feldname gegenüber der Verkaufschance (wysa_sync2bc), siehe Übersicht.

Anderer Takt als die übrigen Schritte

Die Positions-Jobs laufen alle 3 Minuten, nicht alle 2 wie der Rest der Integration. Zusammen mit der Reihenfolge bedeutet das: Zwischen der Freigabe einer Verkaufschance und dem Ankommen ihrer Positionen in BC können einige Minuten liegen.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → opportunityproductsnewfromce.

5.5 - Rückmeldung der Positionen aus Business Central

Nach der Anlage der Kalkulationszeile meldet BC deren System-ID zurück.
RichtungBusiness Central → Customer Engagement
Wannunmittelbar nach jeder Neuanlage einer Position — kein eigener Zeitplan
Betrifftgenau die Positionen, die gerade in BC angelegt wurden
TechnischJob opportunityproductsresponsefrombc (760), Mapping BCOpportunityProductsResponse

Was passiert hier?

Wenn eine Position neu nach BC übertragen wird, vergibt Business Central für die entstandene Kalkulationszeile eine System-ID. Dieser Schritt trägt sie an der Position in Customer Engagement nach.

sequenceDiagram
  participant CE as Customer Engagement
  participant BC as Business Central
  CE->>BC: neue Kalkulationszeile anlegen
  BC-->>CE: Antwort mit System-ID
  Note over CE: Rückmeldung trägt die<br/>BC System-ID an der Position nach

Welche Felder kommen zurück?

Feld in Business CentralFeld in Customer Engagement
systemIdBC System-ID

Nur ein Feld — die knappste Rückmeldung der ganzen Integration. Eine eigene Nummer vergibt Business Central für Kalkulationszeilen nicht; sie sind über ihre Verkaufschancennummer und den Elementcode adressierbar.

Warum dieser Schritt entscheidend ist

Die BC System-ID ist die Weiche zwischen Anlegen und Ändern:

vorhernachher
BC System-ID der Positionleergefüllt
ZuständigPositionen neu nach BC (710)Positionsänderungen nach BC (750)

Solange sie leer bleibt, gilt die Position als „nicht in BC vorhanden" und wird beim nächsten Lauf erneut zur Anlage angeboten. Da die Positionen — anders als Firma, Kontakt und Verkaufschance — keine Wiedererkennung über eine mitgeschickte CE-GUID haben, ist diese Rückmeldung ihre einzige Absicherung gegen wiederholtes Anlegen. Siehe die Hinweise auf Positionen neu nach BC.

Worauf zu achten ist

Der Änderungsjob läuft vor dem Anlagejob

Ein Blick auf die Reihenfolge lohnt: Der Änderungsjob trägt Order 750, der Anlagejob 710 und dieser Rückmeldeschritt 760.

OrderJobRolle
710opportunityproductsnewfromcePositionen anlegen
750opportunityproductsupdatesfromcePositionen ändern
760opportunityproductsresponsefrombcSystem-ID zurückmelden

Alle drei liegen im Drei-Minuten-Takt, laufen also tatsächlich im selben Tick — hier greift die Ordnungsnummer. Innerhalb eines Durchlaufs wird demnach erst angelegt, dann geändert, dann die System-ID nachgetragen.

Eine frisch angelegte Position hat beim Änderungsjob desselben Durchlaufs noch keine System-ID und fällt dort nicht in den Filter — sie wird erst im nächsten Durchlauf für Änderungen erfasst. Für die Praxis ist das ohne Folgen, weil die Anlage alle Werte bereits mitgeschickt hat.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → opportunityproductsresponsefrombc.

5.6 - Positionsänderungen nach Business Central übertragen

Änderungen an bereits im ERP bekannten Verkaufschancenpositionen gehen nach Business Central.
RichtungCustomer Engagement → Business Central
Wannalle 3 Minuten
Betrifftfreigegebene Positionen, die in BC bereits existieren
TechnischJob opportunityproductsupdatesfromce (750), Mapping CEOpportunityProductsUpdates

Was passiert hier?

Ändert sich an einer Position die Menge, die Beschreibung oder ein Betrag, geht das nach Business Central. Dieser Schritt ist damit der einzige aktive Änderungspfad im Bereich Verkaufschance — für die Verkaufschance selbst gibt es keinen, siehe Übersicht.

Erfasst werden Positionen, bei denen beides zutrifft:

  1. Sync zu BC an der Position steht auf „Ja"
  2. das Feld BC System-ID der Position ist gefüllt

Ist die BC System-ID leer, greift stattdessen Positionen neu nach BC.

Welche Felder gehen nach BC?

Feld in Customer EngagementFeld in Business Central
VerkaufschanceVerkaufschancennummer
ProduktElementcode
MengeMenge
BeschreibungBeschreibung
BC BetragBetrag (LW)
BC Betrag inkl. MwSt.Betrag inkl. MwSt. (LW)
MargeDeckungsbeitrag (LW)

Sieben fachliche Felder — dieselben wie bei der Anlage.

Worauf zu achten ist

Beschreibung und Marge gehen auch bei Änderungen mit

Anlage (710) und Änderung (750) übertragen denselben Feldsatz — inklusive Beschreibung und Marge. Wird eine davon später in CE geändert, kommt das in Business Central an.

Die Zuordnung wird bei jedem Lauf neu aufgelöst

Verkaufschancennummer und Elementcode sind Teil jeder Übertragung — sie werden also bei jeder Änderung erneut aus Verkaufschance und Produkt aufgelöst. Wird eine Position in CE auf ein anderes Produkt umgestellt, geht das damit auch nach BC.

Der Änderungsjob läuft vor der Rückmeldung

Innerhalb eines Durchlaufs ist die Reihenfolge: anlegen (710) → ändern (750) → System-ID zurückmelden (760). Da alle drei im Drei-Minuten-Takt liegen, greift die Ordnungsnummer hier wirklich.

Eine frisch angelegte Position hat beim Änderungsjob desselben Durchlaufs noch keine System-ID und fällt dort nicht in den Filter. Sie wird erst im nächsten Durchlauf für Änderungen erfasst — ohne praktische Folge, weil die Anlage alle Werte bereits mitgeschickt hat.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → opportunityproductsupdatesfromce.

6 - Angebot

Wie Angebote und ihre Positionen aus Business Central nach Customer Engagement kommen — Gesamtbild und die Schritte im Detail.

Das Angebot schließt den großen Kreis der Integration. Die Verkaufschance geht von Customer Engagement nach Business Central — dort entsteht daraus das kaufmännische Dokument, und dieses kommt zurück:

Das Angebot läuft ausschließlich von Business Central nach Customer Engagement.

In CE wird kein Angebot erfasst und keines nach BC übertragen. Kalkulation, Preise, Rabatte und Belegnummern gehören ins ERP; Customer Engagement führt das Angebot nur mit, damit der Vertrieb Pipeline und Abschluss im CRM sieht.

flowchart LR
  A["Verkaufschance in CE"] -->|"Verkaufschance<br/>nach BC"| B["Verkaufschance in BC"]
  B -->|"Angebot erstellen<br/>(in BC)"| C["Angebot in BC"]
  C -->|"<b>Angebot nach CE</b>"| D["Angebot in CE"]
  D -.->|"verknüpft mit"| A
SchrittWas passiertWann
Angebote aus BCAngebotsköpfe kommen nach CEalle 2 Minuten
Positionen aus BCdie Kalkulationszeilen kommen nach CEalle 2 Minuten
Gewonnene Angebote aus BCin BC beauftragte Angebote werden in CE gewonnenalle 3 Minuten
Positionen löschenin BC gelöschte Positionen werden in CE gelöschtalle 2 Minuten
Angebote stornierenin BC gelöschte Angebote werden in CE geschlossen (Storniert)alle 2 Minuten

Der Ablauf

flowchart TB
  Q["Angebot in BC angelegt<br/>oder geändert"] --> S1["<b>Angebote aus BC</b><br/>Angebotskopf nach CE"]
  S1 --> V{"Verkaufschance<br/>über BC-Nummer<br/>gefunden?"}
  V -->|ja| VK["Angebot hängt an<br/>der Verkaufschance"]
  V -->|nein| FREI["Angebot ohne<br/>Verkaufschance"]

  S1 --> S2["<b>Positionen aus BC</b><br/>Kalkulationszeilen nach CE"]

  VK --> T{"In BC in einen<br/>Auftrag überführt?"}
  FREI --> T
  T -->|"ja — Status TRANSFERRED"| W["<b>Gewonnene Angebote aus BC</b><br/>Angebot wird <b>Gewonnen</b>"]

  Q --> DEL["Angebot in BC gelöscht"]
  DEL --> D1["<b>Stornierung</b><br/>Angebot wird in CE<br/><b>geschlossen / storniert</b>"]
  Q --> DELP["Position in BC gelöscht"]
  DELP --> D2["<b>Löschung</b><br/>Position wird in CE<br/><b>gelöscht</b>"]

Zwei Besonderheiten gegenüber den anderen Bereichen

Positionen werden wirklich gelöscht

Firma, Kontakt und Produkt werden bei einer Löschung in BC nur deaktiviert — an ihnen hängt Historie. Angebote werden geschlossen und storniert, Angebotspositionen dagegen tatsächlich gelöscht:

DatenbereichVerhalten bei Löschung in BC
Firma, Kontakt, Produktdeaktivieren (Status Inaktiv)
Angebotschließen (Status Geschlossen, Statusgrund Storniert)
Angebotspositionlöschen

Das stornierte Angebot bleibt an der Verkaufschance nachvollziehbar, zählt aber nicht mehr als offen. Eine Position ist dagegen eine reine Kopie der BC-Kalkulationszeile; existiert sie in BC nicht mehr, hat sie keinen Wert. Technisch trägt nur der Positions-Job Action = Delete — siehe Datenfluss.

Der Abschluss kommt aus dem ERP

Ob ein Angebot gewonnen ist, entscheidet Business Central: Wird der Beleg dort in einen Auftrag überführt, meldet das Änderungsprotokoll den Vorgang TRANSFERRED. Der Schritt Gewonnene Angebote aus BC setzt das Angebot in CE daraufhin auf Gewonnen.

Der Vertrieb muss den Abschluss also nicht doppelt pflegen. Was daraus weiter folgt — etwa das optionale Gewinnen der verknüpften Verkaufschance — steht unter Abschluss von Angebot und Verkaufschance.

Wie ein Angebot seine Zuordnungen findet

Ein Angebotskopf bringt aus BC nur Nummern und Codes mit. Drei davon werden in CE zu Verknüpfungen aufgelöst:

flowchart LR
  Q["Angebot aus BC"] -->|"Verkaufschancennummer"| O["Verkaufschance"]
  Q -->|"<b>Kontaktnummer</b>"| A["Firma"]
  Q -->|"Verkäufercode"| S["Verkäufer (BC)"]
ZuordnungAufgelöst überVoraussetzung
VerkaufschanceBC Verkaufschancennummerdie Verkaufschance wurde nach BC übertragen und zurückgemeldet
FirmaBC Kontaktnummerdie Firma wurde nach BC übertragen und hat ihre Kontaktnummer zurückgemeldet
Verkäufer (BC)VerkäufercodeStammdaten-Job 130 ist gelaufen

Positionen enthalten Kalkulationselemente, keine Artikel

Die Angebotspositionen in CE werden aus den Kalkulationselementen des BC-Belegs gefüllt — denselben Bausteinen, die auch die Verkaufschancenpositionen verwenden.

Die eigentlichen Artikelzeilen eines BC-Angebots werden nicht übertragen. Angebote in CE zeigen also die Kalkulation, nicht die Artikelaufstellung.

Welche Felder kommen an?

Angebotskopf

Feld in Business CentralFeld in Customer Engagement
Nr.Angebotsnummer
idBC System-ID
BuchungsbeschreibungName
VerkaufschancennummerVerkaufschance
Verkauf an Unternehmenskontaktnr.Kunde
VerkäufercodeVerkäufer (BC)
AuftragsdatumGültig ab
Angebot gültig bisGültig bis
Betrag inkl. MwSt.BC Gesamtbetrag inkl. MwSt.
StatusBC Status

Angebotsposition

Feld in Business CentralFeld in Customer Engagement
systemIdBC System-ID
BelegnummerAngebot
ElementcodeProdukt
BeschreibungBeschreibung
MengeMenge
Zeilenbetrag (LW)BC Betrag
Zeilenbetrag inkl. MwSt. (LW)BC Betrag inkl. MwSt.
—Einheit (fester Vorgabewert)

Was der Abgleich nicht liefert

Mehrere Felder des Datenmodells werden von diesen Schritten nicht gefüllt. Sie entstehen in Customer Engagement selbst:

FeldWoher es kommt
BC Gesamtbetrag (netto)aus den Positionen aufsummiert
Margeaus den Zeilenmargen aufsummiert
Angebotsklassifizierungbeim Anlegen in CE bestimmt (Erst- oder weiteres Angebot)
Archivierte VersionenStandard-Funktion von Dynamics 365 Sales bei Angebots-Revisionen, keine DataBridge-Funktion — es gibt nichts zu übertragen
BC Deckungsbeitrag (Position)wird von keinem Job befüllt — Marge steht deshalb bei aus BC übernommenen Angeboten immer auf 0,00, siehe Angebotspositionen aus Business Central

Die ersten drei sind unter Beträge und Margen und Abschluss beschrieben.

Technische Zuordnung

Jobs und Mappings dieser Kette
OrderJobMappingSeite
610salesquotesfrombcBCSalesQuotesAngebote aus BC
620salescalculationelementsfrombcBCSalesCalculationElementsPositionen aus BC
621salescalculationelementsfrombcdeleteBCSalesCalculationElementsDeletePositionen löschen
625activatesalesquotesfrombcBCSalesQuotesActivateGewonnene Angebote aus BC
690salesquotesfrombcdeleteBCSalesQuotesDeleteAngebote stornieren

Beteiligte Tabellen:

Business Central API PageDataverse
.../acdsalesheadersquote
.../acdsalescalculationelementsquotedetail
.../acdlogentriesquote, quotedetail

Alle unter singhammerITConsulting/dyce/v2.0/.

Schlüssel je Schritt
SchrittSchlüssel im ZielAlternate Key
Angebote aus BCquotenumber ← BC numberwysa_quotenumberkey
Positionen aus BCwysa_bcsystemid ← BC systemIdwysa_bcsystemidkey
Gewonnene Angebote aus BCwysa_bcsystemid ← Log recordIdwysa_bcsystemidkey
Positionen löschenwysa_bcsystemid ← Log recordIdwysa_bcsystemidkey
Angebote stornierenwysa_bcsystemid ← Log recordIdwysa_bcsystemidkey

Der Angebotskopf ist der einzige Datensatz der ganzen Integration, der über eine fachliche Belegnummer adressiert wird und nicht über die BC System-ID — die Angebotsnummer in CE ist dieselbe wie in BC. Die Löschjobs müssen dagegen über die System-ID gehen, weil das Änderungsprotokoll nur diese kennt.

Protokoll-Tabellen der Log-basierten Jobs
JobtableIdBC-Tabellezusätzlicher Filter
625 activatesalesquotesfrombc36Verkaufskopfoperation eq 'TRANSFERRED'
690 salesquotesfrombcdelete36Verkaufskopfoperation eq 'DELETE'
621 salescalculationelementsfrombcdelete72077783Kalkulationselementeoperation eq 'DELETE'

Die Jobs 625 und 690 lesen dieselben Protokolleinträge und trennen sich allein über das Feld operation: TRANSFERRED führt zum Gewinnen, DELETE zum Stornieren.

6.1 - Angebote aus Business Central übernehmen

Angebotsköpfe aus dem ERP erscheinen in Customer Engagement und hängen sich an ihre Verkaufschance.
RichtungBusiness Central → Customer Engagement
Wannalle 2 Minuten
Betrifftalle BC-Verkaufsbelege der Art Angebot, die seit dem letzten Lauf geändert wurden
TechnischJob salesquotesfrombc (610), Mapping BCSalesQuotes

Was passiert hier?

Sobald in Business Central ein Angebot angelegt oder geändert wird, erscheint es in Customer Engagement — mit Nummer, Betrag, Gültigkeit und Zuordnung zu Verkaufschance und Kunde. Existiert das Angebot in CE schon, werden seine Felder aktualisiert.

Wiedererkannt wird ein Angebot über die Angebotsnummer. Sie ist in beiden Systemen dieselbe — das Angebot ist damit der einzige Datensatz der Integration, der über eine fachliche Belegnummer verbunden ist und nicht über einen technischen Schlüssel.

Der Job liest ausschließlich Belege der Art Angebot; Aufträge und Rechnungen bleiben außen vor.

Welche Felder kommen an?

Feld in Business CentralFeld in Customer EngagementAnmerkung
Nr.AngebotsnummerErkennungsmerkmal — in beiden Systemen gleich
idBC System-IDtechnischer Schlüssel des ERP
BuchungsbeschreibungNamedie Bezeichnung des Angebots in CE
VerkaufschancennummerVerkaufschancewird zur Verknüpfung aufgelöst
Verkauf an Unternehmenskontaktnr.Kundewird zur Verknüpfung auf die Firma aufgelöst
VerkäufercodeVerkäufer (BC)wird zur Verknüpfung aufgelöst
AuftragsdatumGültig ab
Angebot gültig bisGültig bis
Betrag inkl. MwSt.BC Gesamtbetrag inkl. MwSt.Bruttosumme des Belegs
StatusBC Statussteuert das automatische Gewinnen

Worauf zu achten ist

So schließt sich der Kreis zur Verkaufschance

Das Angebot findet seine Verkaufschance über die BC Verkaufschancennummer — genau jenes Feld, das die Rückmeldung aus BC an der Verkaufschance gefüllt hat.

Damit ist der Weg vollständig: Die Verkaufschance geht von CE nach BC, bekommt dort eine Nummer, aus ihr entsteht ein Angebot, und das Angebot kommt über dieselbe Nummer zurück und hängt sich an die richtige Verkaufschance.

Wird in Business Central ein Angebot ohne Bezug zu einer Verkaufschance erstellt, kommt es in CE ohne diese Verknüpfung an — es ist dann ein freistehendes Angebot.

Der Kunde wird über die BC Kontaktnummer gefunden

Der Nettobetrag kommt nicht mit

Übertragen wird nur der Bruttobetrag (BC Gesamtbetrag inkl. MwSt.). Das Feld BC Gesamtbetrag (netto) und die Marge werden in CE aus den Angebotspositionen aufsummiert — siehe Beträge und Margen.

Der Status entscheidet über den Abschluss

Das Feld BC Status trägt den Bearbeitungsstand des Belegs aus BC. Meldet Business Central den Wert TRANSFERRED — das Angebot wurde in einen Auftrag überführt —, wird das Angebot in CE gewonnen. Das erledigt der Schritt Gewonnene Angebote aus BC; die Folgewirkungen sind unter Abschluss von Angebot und Verkaufschance beschrieben.

Angebote werden nicht nach BC zurückgeschrieben

Es gibt keinen Weg von CE nach BC. Was am Angebot in CE geändert wird, bleibt dort und wird beim nächsten Abgleich aus BC überschrieben. Das Angebot ist eine Kopie des BC-Belegs.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → salesquotesfrombc.

6.2 - Angebotspositionen aus Business Central übernehmen

Die Kalkulationszeilen eines BC-Angebots erscheinen als Angebotspositionen in Customer Engagement.
RichtungBusiness Central → Customer Engagement
Wannalle 2 Minuten
Betrifftdie Kalkulationselemente von BC-Belegen der Art Angebot
TechnischJob salescalculationelementsfrombc (620), Mapping BCSalesCalculationElements

Was passiert hier?

Ein Angebot in Business Central wird aus Kalkulationselementen aufgebaut — Bausteinen wie „Lizenzen", „Einführung" oder „Betrieb", die jeweils Menge und Betrag tragen. Dieser Schritt holt sie als Angebotspositionen nach Customer Engagement.

Wiedererkannt wird eine Position über die BC System-ID der Kalkulationszeile.

Es sind Kalkulationselemente, keine Artikelzeilen

Das ist der wichtigste Punkt zum Verständnis:

In Customer Engagement zeigt ein Angebot die Kalkulation des BC-Belegs, nicht seine Artikelaufstellung.

Ein BC-Angebot hat beides: Verkaufszeilen mit Artikeln und darüber die Kalkulation aus Elementen. Übertragen wird nur die Kalkulation.

Die Elemente sind dieselben, die auch die Verkaufschancenpositionen verwenden. Sie kommen über Kalkulationselemente aus BC (Job 190) als Produkte nach CE. Damit ist die Kalkulation über die gesamte Kette hinweg vergleichbar: dieselben Bausteine in der Verkaufschance wie später im Angebot.

Welche Felder kommen an?

Feld in Business CentralFeld in Customer EngagementAnmerkung
systemIdBC System-IDErkennungsmerkmal
BelegnummerAngebotwird über die Angebotsnummer aufgelöst
ElementcodeProduktwird über den BC Code des Elements aufgelöst
BeschreibungBeschreibung
MengeMenge
Zeilenbetrag (LW)BC BetragNettobetrag der Position
Zeilenbetrag inkl. MwSt. (LW)BC Betrag inkl. MwSt.Bruttobetrag
—Einheitfester Vorgabewert

„LW" steht für Landeswährung.

Worauf zu achten ist

Zwei Zuordnungen müssen gelingen

flowchart LR
  P["Kalkulationszeile aus BC"] -->|"Belegnummer"| Q["Angebot in CE"]
  P -->|"Elementcode"| E["Produkt in CE"]
ZuordnungAufgelöst überVoraussetzung
AngebotAngebotsnummerAngebote aus BC (610) ist gelaufen
ProduktBC Code des ElementsKalkulationselemente aus BC (190) ist gelaufen

Beide Vorgänger-Jobs laufen früher (190 und 610 gegenüber 620), sodass das innerhalb desselben Durchlaufs zusammenfindet. Fehlt eines der beiden Ziele, kann die Position nicht korrekt eingehängt werden.

Der Deckungsbeitrag kommt nicht mit

Das Datenmodell führt an der Angebotsposition ein Feld BC Deckungsbeitrag (wysa_bcProfit). Dieser Abgleich füllt es nicht — die Position kommt nur mit Netto- und Bruttobetrag an.

Eine feste Einheiten-GUID

Die Einheit der Position wird mit einem fest hinterlegten Wert gesetzt.

Löschungen laufen über einen eigenen Job

Wird eine Kalkulationszeile in BC gelöscht, verschwindet sie aus dieser Schnittstelle und kann durch Abgleich nicht mehr gefunden werden. Das erledigt Positionen löschen (621) über das Änderungsprotokoll — und zwar durch echtes Löschen, nicht durch Deaktivieren.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → salescalculationelementsfrombc.

6.3 - Gewonnene Angebote aus Business Central

Wird ein Angebot im ERP in einen Auftrag überführt, wird es in Customer Engagement gewonnen.
RichtungBusiness Central → Customer Engagement
Wannalle 3 Minuten
BetrifftAngebote, die in BC in einen Auftrag überführt wurden
TechnischJob activatesalesquotesfrombc (625), Mapping BCSalesQuotesActivate

Was passiert hier?

Wird ein Angebot in Business Central in einen Auftrag überführt, ist es kaufmännisch gewonnen. Business Central schreibt diesen Vorgang in sein Änderungsprotokoll — als Vorgang TRANSFERRED. Dieser Schritt liest das Protokoll und setzt das Angebot in Customer Engagement auf Gewonnen.

flowchart LR
  A["Angebot in BC<br/>in Auftrag überführt"] --> B["Eintrag im Änderungsprotokoll<br/>Vorgang <b>TRANSFERRED</b>"]
  B --> C["Angebot in CE über die<br/>BC System-ID gefunden"]
  C --> D["<b>BC Status</b> = TRANSFERRED<br/>Angebot wird <b>Gewonnen</b>"]

Der Abschluss wird nicht doppelt gepflegt

Das ist die fachliche Kernaussage dieses Schritts:

Führendes System für den Auftrag ist Business Central. Customer Engagement folgt.

Der Vertrieb muss ein gewonnenes Angebot in CE nicht von Hand abschließen. Der Abschluss im ERP genügt — und weil er dort an die Auftragserstellung gebunden ist, kann in CE kein Angebot als gewonnen gelten, dem im ERP kein Auftrag gegenübersteht.

Was sich am Angebot ändert

FeldWert danach
StatusGewonnen
BC StatusTRANSFERRED

Alle übrigen Felder bleiben unverändert.

Was daraus weiter folgt

Das Feld BC Status ist mehr als eine Notiz — an ihm hängt weitere Logik in Customer Engagement:

  • Ist die Einstellung wysa_WinQuoteAndOpportunity aktiv, wird zusätzlich die verknüpfte Verkaufschance gewonnen, mit dem Angebotsbetrag als tatsächlichem Umsatz.
  • Ohne diese Einstellung bleibt der Abschluss der Verkaufschance eine bewusste Handlung des Vertriebs.

Beschrieben ist das unter Abschluss von Angebot und Verkaufschance und Konfiguration.

Worauf zu achten ist

Zwei Jobs lesen dasselbe Protokoll

Dieser Schritt und Angebote stornieren lesen beide die Protokolleinträge zur BC-Tabelle Verkaufskopf. Sie trennen sich allein über die Art des Vorgangs:

Vorgang im ProtokollJobWirkung in CE
TRANSFERREDdieser Schritt (625)Angebot wird gewonnen
DELETEAngebote stornieren (690)Angebot wird storniert

Andere Vorgangsarten werden von keinem der beiden Jobs verarbeitet.

Der Takt weicht ab

Dieser Job läuft alle 3 Minuten, die übrigen Angebots-Jobs alle 2. Zwischen der Auftragserstellung in BC und dem gewonnenen Angebot in CE können damit einige Minuten liegen.

Ein Rückweg existiert nicht

Wird der Auftrag in BC storniert, gibt es keinen Job, der das Angebot in CE wieder öffnet. Der Vorgang ist einseitig.

Verlieren funktioniert anders

Der Verlust kommt nicht aus BC, sondern wird in Customer Engagement entschieden: Wird eine Verkaufschance auf Verloren gesetzt, schließt die Lösung ihre Angebote mit — siehe Abschluss. Ein Mapping ist daran nicht beteiligt.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → activatesalesquotesfrombc.

6.4 - Angebotspositionen löschen

In Business Central gelöschte Kalkulationszeilen werden in Customer Engagement gelöscht.
RichtungBusiness Central → Customer Engagement
Wannalle 2 Minuten
BetrifftKalkulationszeilen, die in BC gelöscht wurden
TechnischJob salescalculationelementsfrombcdelete (621), Mapping BCSalesCalculationElementsDelete

Was passiert hier?

Wird in Business Central eine Kalkulationszeile aus einem Angebot entfernt, wird die zugehörige Angebotsposition in Customer Engagement gelöscht.

flowchart LR
  A["Kalkulationszeile<br/>in BC gelöscht"] --> B["Eintrag im Änderungsprotokoll<br/>Vorgang <b>DELETE</b>"]
  B --> C["Position in CE über die<br/>BC System-ID gefunden"]
  C --> D["Position wird <b>gelöscht</b>"]

Der Weg über das Änderungsprotokoll ist nötig, weil eine gelöschte Zeile in der normalen Schnittstelle nicht mehr auftaucht und durch Abgleich nicht gefunden werden könnte.

Hier wird wirklich gelöscht

Anders als bei Firma, Kontakt und Produkt wird nicht deaktiviert, sondern gelöscht:

DatenbereichVerhalten bei Löschung in BC
Firma, Kontakt, Produktdeaktivieren
Angebotspositionlöschen

Das ist folgerichtig. Eine Angebotsposition in CE ist eine reine Kopie der BC-Zeile — sie trägt keine eigene Information, an ihr hängt keine Historie, und eine inaktive Position würde die Summenbildung des Angebots nur verfälschen. Ohne Löschen bliebe eine in BC gestrichene Leistung im CE-Angebot stehen.

Worauf zu achten ist

Das Angebot wird neu summiert

Gesamtbetrag und Marge eines Angebots werden in CE aus den Positionen aufsummiert. Nach dem Löschen einer Position ändern sich diese Summen — siehe Beträge und Margen.

Ein Wiederherstellen gibt es nicht

Die Position ist in CE endgültig entfernt. Wird die Zeile in BC erneut angelegt, kommt sie über Positionen aus BC als neue Position mit neuer BC System-ID zurück.

Beim Löschen des ganzen Angebots

Wird in BC nicht eine Zeile, sondern das ganze Angebot gelöscht, greift Angebote stornieren (690). Das Angebot wird in CE nicht gelöscht, sondern geschlossen — seine Positionen bleiben daher erhalten, sofern BC nicht für jede Zeile einen eigenen Protokolleintrag schreibt und dieser Job anspringt.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → salescalculationelementsfrombcdelete.

6.5 - In BC gelöschte Angebote stornieren

In Business Central gelöschte Angebote werden in Customer Engagement geschlossen und als storniert markiert.
RichtungBusiness Central → Customer Engagement
Wannalle 2 Minuten
BetrifftAngebote, die in BC gelöscht wurden
TechnischJob salesquotesfrombcdelete (690), Mapping BCSalesQuotesDelete

Was passiert hier?

Wird ein Angebot in Business Central gelöscht, bleibt es in Customer Engagement erhalten, wird aber geschlossen und bekommt den Statusgrund Storniert. Es ist danach schreibgeschützt und taucht in keiner Auswertung offener Angebote mehr auf.

flowchart LR
  A["Angebot in BC gelöscht"] --> B["Eintrag im Änderungsprotokoll<br/>Vorgang <b>DELETE</b>"]
  B --> C["Angebot in CE über die<br/>BC System-ID gefunden"]
  C --> D["Angebot wird <b>geschlossen</b><br/>Statusgrund <b>Storniert</b>"]

Stornieren statt Löschen

DatenbereichVerhalten bei Löschung in BC
Firma, Kontakt, Produktdeaktivieren — an ihnen hängt Historie
Angebotschließen / stornieren — der Vorgang bleibt nachvollziehbar
Angebotspositionlöschen — sie ist eine Kopie der BC-Kalkulationszeile

Früher wurde das Angebot in CE hart gelöscht. Jetzt bleibt es als stornierter Datensatz stehen: Man sieht an der Verkaufschance weiterhin, dass es ein Angebot gab und dass es in BC verworfen wurde. Weil das Angebot geschlossen ist, zählt es in der Pipeline nicht mehr als offen.

Worauf zu achten ist

Die Positionen bleiben am Angebot

Da das Angebot nicht mehr gelöscht wird, werden seine Positionen auch nicht mehr automatisch mit entfernt. Löscht BC beim Löschen des Angebots auch die Kalkulationszeilen einzeln, greift zusätzlich Positionen löschen; sonst bleiben die Positionen am stornierten Angebot sichtbar.

Was mit der Verkaufschance passiert

Die Verkaufschance bleibt unberührt. Das stornierte Angebot bleibt mit ihr verknüpft.

Kein Wiederöffnen aus BC

Ein in BC gelöschtes Angebot kommt nicht zurück. Wird in BC ein neues Angebot angelegt, kommt es mit neuer Nummer und neuer BC System-ID als eigenständiger Datensatz nach CE.

Zwei Jobs lesen dasselbe Protokoll

Dieser Schritt und Gewonnene Angebote aus BC lesen beide die Protokolleinträge zur BC-Tabelle Verkaufskopf und trennen sich über die Art des Vorgangs:

VorgangJobWirkung
DELETEdieser Schritt (690)Angebot wird storniert
TRANSFERREDGewonnene Angebote (625)Angebot wird gewonnen

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → salesquotesfrombcdelete.

7 - Abonnement

Wie wiederkehrend abgerechnete Leistungen und ihre Vertragsdetails aus Business Central nach Customer Engagement kommen.

Ein Abonnement bildet eine wiederkehrend abgerechnete Leistung ab: eine Lizenz, einen Cloud-Service, einen Wartungsvertrag. Diese Daten entstehen in der Abonnementverwaltung von Business Central — Customer Engagement führt sie mit, damit der Vertrieb Bestand, Laufzeiten und Kündigungsfristen im Blick hat.

Abonnements laufen ausschließlich von Business Central nach Customer Engagement.

Es gibt keinen Rückweg und keine Löschverarbeitung. Der Bereich besteht aus zwei Schritten, die aufeinander aufbauen:

SchrittWas passiertWann
Abonnements aus BCdie abonnierte Leistung selbstalle 2 Minuten
Abonnementzeilen aus BCLaufzeiten, Preise, Kündigungsfristenalle 2 Minuten

Zwei Ebenen

flowchart TB
  BC["Abonnementverwaltung<br/>in Business Central"]
  BC -->|"550 · <b>Abonnements aus BC</b>"| A["<b>Abonnement</b><br/>Was ist abonniert?<br/>Produkt, Menge, Seriennummer,<br/>Bereitstellungszeitraum"]
  BC -->|"560 · <b>Abonnementzeilen aus BC</b>"| Z["<b>Abonnementzeile</b><br/>Zu welchen Bedingungen?<br/>Laufzeit, Preis, Rabatt,<br/>Kündigungsfrist"]
  Z -->|"über die<br/>Abonnementnummer"| A

Ein Abonnement kann mehrere Zeilen mit unterschiedlichen Laufzeiten und Abrechnungsrhythmen haben. Die Zeile findet ihr Abonnement über die Abonnementnummer — deshalb muss Schritt 550 vor Schritt 560 laufen, was die Ordnungsnummern sicherstellen.

Rechnungsempfänger und Leistungsnehmer

Die fachlich interessanteste Eigenschaft dieses Bereichs: Das Abonnement trennt zwei Rollen, die in Konzernstrukturen auseinanderfallen.

RolleBedeutungKommt aus BC von
Rechnungsempfängerwer bezahltRechnungsadresse des Belegs
Leistungsnehmerwer die Leistung nutztLieferadresse des Belegs

Beide werden je als Firma und Kontakt übertragen — vier Verknüpfungen pro Abonnement. Business Central liefert dafür vier Kontaktnummern, die in CE aufgelöst werden.

Was in Customer Engagement bleibt

Nicht alle Felder der beiden Tabellen kommen aus Business Central. Diese werden CE-seitig gepflegt oder durch Automatik gefüllt:

FeldTabelleBemerkung
VerkaufschanceAbonnementUrsprung des Abonnements — Zuordnung in CE
MitbewerberAbonnementaktueller Anbieter, falls die Leistung abgelöst werden soll
LeaderstellungAbonnementStichtag der Leadgenerierung
Anzahl ZeilenAbonnementAnzahl der zugehörigen Abonnementzeilen
Produkt (Verweis)Abonnementsiehe unten
Abzurechnendes ProduktAbonnementzeile—
WährungAbonnementzeile—

Das passt zum Zweck des Bereichs: Business Central liefert den Vertragsbestand, Customer Engagement ergänzt die Vertriebssicht — aus einem auslaufenden Abonnement kann ein Lead entstehen, und dazu gehören Verkaufschance und Mitbewerber.

Worauf zu achten ist

Die Abonnementart wird fest gesetzt

Das Feld Abonnementart wird bei jedem Lauf auf einen festen Vorgabewert gesetzt — Business Central liefert dazu nichts. Eine Unterscheidung nach Ausprägung findet über diesen Abgleich also nicht statt; eine in CE geänderte Abonnementart wird beim nächsten Lauf überschrieben.

Die Quellen liegen außerhalb der dyce-Schnittstelle

Alle übrigen Abgleiche lesen API Pages der Singhammer-Erweiterung unter singhammerITConsulting/dyce/v2.0/. Die beiden Abonnement-Jobs lesen stattdessen serviceObjects und serviceCommitments — die Schnittstelle der Abonnementverwaltung von Business Central selbst.

Praktische Folge: Dieser Bereich hängt an einer anderen Erweiterung als der Rest der Integration. Wird sie in BC nicht bereitgestellt, laufen die beiden Jobs ins Leere, während alles andere weiterarbeitet.

Kündigung möglich bis ist das wichtigste Datum

Von den 27 Feldern der Abonnementzeile ist eines für den Vertrieb entscheidend: Kündigung möglich bis. Es nennt den konkreten Stichtag, bis zu dem der Kunde kündigen kann — und damit den Zeitpunkt, an dem eine Verlängerung spätestens verhandelt sein muss. Alle übrigen Laufzeit- und Fristenfelder sind die Herleitung dazu.

Technische Zuordnung

Jobs und Mappings dieser Kette
OrderJobMappingZieltabelleFelderSeite
550serviceobjectsfrombcBCServiceObjectswysa_bcserviceobject17Abonnements aus BC
560servicecommitmentsfrombcBCServiceCommitmentswysa_bcserviceobjectcommitment27Abonnementzeilen aus BC

Mit 44 Feldzuordnungen ist das der umfangreichste Datenbereich der Integration.

Quellen: serviceObjects und serviceCommitments — nicht unter singhammerITConsulting/dyce/v2.0/ wie alle übrigen Abgleiche.

Schlüssel je Schritt
SchrittSchlüssel im ZielAlternate Key
Abonnements aus BCwysa_number ← BC nowysa_numberkey
Abonnementzeilen aus BCwysa_bcsystemid ← BC systemIdwysa_bcsystemidkey

Auffällig ist die Uneinheitlichkeit: Das Abonnement wird über seine fachliche Nummer adressiert — wie das Angebot —, die Zeile über die BC System-ID, wie die Angebotsposition. Beide Konventionen kommen also innerhalb desselben Bereichs vor.

Auflösung von Referenzen
FeldZieltabelleNachschlagefeldAlternate Key
Rechnungsempfänger Kontaktcontactwysa_bccontactnumberwysa_bccodekey
Rechnungsempfänger Firmaaccountwysa_bccontactnumberwysa_bccodekey
Leistungsnehmer Kontaktcontactwysa_bccontactnumberwysa_bccodekey
Leistungsnehmer Firmaaccountwysa_bccontactnumberwysa_bccodekey
Abonnement (an der Zeile)wysa_bcserviceobjectwysa_numberwysa_numberkey

Damit setzen die Abonnements voraus, dass Firmen und Kontakte bereits abgeglichen sind. Die Ordnungsnummern 550 und 560 liegen hinter den Kontakt-Jobs (430 / 440), sodass das innerhalb desselben Durchlaufs zusammenfindet.

Feldnamen im Datenmodell

Das Datenmodell schreibt Logical Names in einer lesefreundlichen Schreibweise (z. B. wysa_NextBilling für wysa_nextbillingdate). Die folgende Übersicht ordnet die Felder dieses Mappings den Bezeichnungen im Datenmodell zu — getrennt nach Abonnementzeile und dem übergeordneten Abonnement, da beide Entitäten hier zusammenkommen.

Felder der Abonnementzeile (wysa_bcServiceObjectCommitment, dieses Mapping):

FeldIm MappingIm Datenmodell
Zeilennummerwysa_contractlinenumberwysa_LineNumber
Verlängerungslaufzeitwysa_extensiontermwysa_RenewalTerm
Leistungsbeginn / -endewysa_servicestartdate / wysa_serviceenddatewysa_ServiceStart / wysa_ServiceEnd
Nächste Berechnungwysa_nextbillingdatewysa_NextBilling
Abrechnungszeitraumwysa_billingbaseperiodwysa_BillingPeriod
Berechnungsbasiswysa_calculationbaseamountwysa_CalculationBase

Felder des übergeordneten Abonnements (wysa_bcServiceObject, aus Abonnements aus BC übernehmen):

FeldIm MappingIm Datenmodell
Einheitwysa_uomwysa_Uom
Bereitstellung vonwysa_provisionstartdatewysa_ProvisioningStart
Bereitstellung biswysa_provisionenddatewysa_ProvisioningEnd
Rechnungsempfänger Firmawysa_billtocustomeridwysa_BillToAccountId
Leistungsnehmer Firmawysa_endusercustomeridwysa_EndUserAccountId

Einheit ist ein reines Textfeld, kein Verweis auf einen Einheiten-Datensatz.

Zusätzlich schreibt das Mapping ein Feld wysa_entrynumber an der Abonnementzeile, das im Datenmodell nicht aufgeführt ist.

7.1 - Abonnements aus Business Central übernehmen

Die abonnierten Leistungen kommen aus der Abonnementverwaltung des ERP nach Customer Engagement.
RichtungBusiness Central → Customer Engagement
Wannalle 2 Minuten
Betrifftalle Abonnements, die in BC seit dem letzten Lauf geändert wurden
TechnischJob serviceobjectsfrombc (550), Mapping BCServiceObjects

Was passiert hier?

Dieser Schritt holt die abonnierten Leistungen aus Business Central: was abonniert ist, in welcher Menge, mit welcher Seriennummer, für welchen Bereitstellungszeitraum — und für wen.

Die kaufmännischen Bedingungen dazu, also Laufzeiten, Preise und Kündigungsfristen, kommen im zweiten Schritt: Abonnementzeilen aus BC.

Wiedererkannt wird ein Abonnement über die Abonnementnummer.

Welche Felder kommen an?

Feld in Business CentralFeld in Customer EngagementAnmerkung
Nr.NummerErkennungsmerkmal
Nr.(Name des Datensatzes)dieselbe Nummer, zusätzlich als Anzeigename
systemIdBC System-IDtechnischer Schlüssel des ERP
Herkunftsnr.Produktnummerals Text — kein Verweis, siehe unten
BeschreibungProduktbeschreibung
MengeMenge
EinheitEinheit
Seriennr.Seriennummer
VersionVersion
Bereitstellung vonBereitstellung von
Bereitstellung bisBereitstellung bis
Rechnung an Kontaktnr.Rechnungsempfänger Kontaktwird zur Verknüpfung aufgelöst
Rechnung an Unternehmenskontaktnr.Rechnungsempfänger Firmawird zur Verknüpfung aufgelöst
Liefern an Kontaktnr.Leistungsnehmer Kontaktwird zur Verknüpfung aufgelöst
Liefern an Unternehmenskontaktnr.Leistungsnehmer Firmawird zur Verknüpfung aufgelöst
KundenreferenzKundenreferenz
—Abonnementartfester Vorgabewert

Worauf zu achten ist

Vier Verknüpfungen für zwei Rollen

Das Abonnement trennt, wer bezahlt und wer nutzt — in Konzernstrukturen sind das verschiedene Firmen. Business Central liefert dafür die Rechnungs- und die Lieferadresse des Belegs, jeweils als Kontakt- und als Unternehmenskontaktnummer:

flowchart LR
  BC["Abonnement in BC"] -->|"Rechnung an<br/>Kontaktnr."| A["Rechnungsempfänger<br/>Kontakt"]
  BC -->|"Rechnung an<br/>Unternehmenskontaktnr."| B["Rechnungsempfänger<br/>Firma"]
  BC -->|"Liefern an<br/>Kontaktnr."| C["Leistungsnehmer<br/>Kontakt"]
  BC -->|"Liefern an<br/>Unternehmenskontaktnr."| D["Leistungsnehmer<br/>Firma"]

Alle vier werden über die BC Kontaktnummer aufgelöst — auch die beiden auf Firmen. Das ist die zuverlässigere Variante gegenüber der Debitorennummer, die das Angebot verwendet: Die Kontaktnummer ist an jeder nach BC übertragenen Firma vorhanden.

Ist eine Firma oder ein Kontakt in CE nicht auffindbar, bleibt die entsprechende Verknüpfung leer — das Abonnement wird trotzdem angelegt. Da die Kontakt-Jobs (430) vor diesem Schritt laufen, findet das normalerweise innerhalb desselben Durchlaufs zusammen.

Die Produktnummer kommt als Text, nicht als Verweis

Produktnummer und Produktbeschreibung werden als Text übertragen. Das Feld Produkt — der eigentliche Verweis auf den Produktdatensatz — bleibt leer.

Die Nummer steht in zwei Feldern

Die Abonnementnummer wird doppelt geschrieben: einmal in das Fachfeld Nummer, über das auch die Zuordnung läuft, und einmal in das Namensfeld des Datensatzes. Damit erscheint in Listen und Verknüpfungen die Nummer als Bezeichnung — das Abonnement hat keinen sprechenden Namen.

Die Abonnementart wird bei jedem Lauf gesetzt

Das Feld Abonnementart wird mit einem festen Vorgabewert befüllt; Business Central liefert dazu nichts. Eine in CE geänderte Abonnementart wird beim nächsten Abgleich wieder überschrieben.

Vier Felder kommen nicht aus BC

Verkaufschance, Mitbewerber, Leaderstellung und Anzahl Zeilen sind nicht Teil dieses Mappings — sie werden in Customer Engagement gepflegt oder durch Automatik gefüllt. Das ist der Vertriebsteil des Abonnements: Aus einem auslaufenden Vertrag kann ein Lead entstehen, und dazu gehört, wer der aktuelle Anbieter ist.

Keine Löschverarbeitung

Wird ein Abonnement in Business Central gelöscht, bleibt es in CE stehen — ohne Kennzeichnung. Siehe die Warnung auf der Übersicht.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → serviceobjectsfrombc.

7.2 - Abonnementzeilen aus Business Central übernehmen

Laufzeiten, Preise, Rabatte und Kündigungsfristen der Abonnements kommen nach Customer Engagement.
RichtungBusiness Central → Customer Engagement
Wannalle 2 Minuten
Betrifftalle Abonnementzeilen, die in BC seit dem letzten Lauf geändert wurden
TechnischJob servicecommitmentsfrombc (560), Mapping BCServiceCommitments

Was passiert hier?

Während das Abonnement sagt, was abonniert ist, sagt die Abonnementzeile, zu welchen Bedingungen: Laufzeit, Kündigungsfrist, Preis, Rabatt und Abrechnungsturnus.

Ein Abonnement kann mehrere Zeilen haben — etwa eine Grundlizenz mit Zweijahreslaufzeit und einen Support-Baustein mit jährlicher Verlängerung.

Mit 27 Feldzuordnungen ist das das umfangreichste Mapping der ganzen Integration. Wiedererkannt wird eine Zeile über die BC System-ID.

Welche Felder kommen an?

Zuordnung

Feld in Business CentralFeld in Customer Engagement
systemIdBC System-ID
Abonnementnr.Abonnement (Verknüpfung)
Vertragsnr.Vertragsnummer
Vertragszeilennr.Zeilennummer
Zeilennr.Eintragsnummer
BeschreibungBeschreibung
PaketcodePaketcode

Laufzeit und Fristen

Feld in Business CentralFeld in Customer Engagement
AnfangslaufzeitAnfangslaufzeit
VerlängerungslaufzeitVerlängerungslaufzeit
KündigungsfristKündigungsfrist
Kündigung möglich bisKündigung möglich bis
LeistungsbeginnLeistungsbeginn
LeistungsendeLeistungsende
Laufzeit bisLaufzeit bis

Abrechnung

Feld in Business CentralFeld in Customer EngagementAnmerkung
Nächstes BerechnungsdatumNächste Berechnung
AbrechnungsrhythmusAbrechnungsrhythmus
AbrechnungsbasiszeitraumAbrechnungszeitraum
Abrechnung überAbrechnung überText wird zum Auswahlwert
PartnerPartnerText wird zum Auswahlwert

Preis und Rabatt

Feld in Business CentralFeld in Customer EngagementAnmerkung
PreisPreis
MengeMenge
RabattRabattJa/Nein — Text wird zum Auswahlwert
RabattbetragRabattbetrag
Rabatt %Rabatt Prozent
BerechnungsbasisbetragBerechnungsbasis
BerechnungsbasisBerechnungsbasis Prozent
LeistungsbetragLeistungsbetrag

Worauf zu achten ist

Kündigung möglich bis ist das entscheidende Feld

Von allen 27 Feldern ist dieses das wichtigste für den Vertrieb: Es nennt den konkreten Stichtag, bis zu dem der Kunde kündigen kann — und damit den Zeitpunkt, an dem eine Verlängerung spätestens verhandelt sein muss.

Anfangslaufzeit, Verlängerungslaufzeit und Kündigungsfrist sind die Regelwerke dahinter; Business Central rechnet daraus das Datum aus und liefert es fertig. Customer Engagement muss nichts nachrechnen.

Die Zeile hängt an der Abonnementnummer

Die Verknüpfung zum Abonnement wird über die Abonnementnummer aufgelöst. Ist das Abonnement in CE noch nicht vorhanden, bleibt die Verknüpfung leer — die Zeile wird trotzdem angelegt und stünde dann ohne Bezug da.

Da Abonnements aus BC mit Order 550 vor diesem Schritt (560) läuft, findet das normalerweise innerhalb desselben Durchlaufs zusammen.

Drei Felder werden von Text in Auswahlwerte übersetzt

Business Central liefert Abrechnung über, Partner und Rabatt als Text. In Customer Engagement sind das Auswahlfelder, weshalb hier die Operation OptionMapping zum Einsatz kommt — die es sonst nirgends in der Integration gibt:

FeldWert in BCWert in CE
Abrechnung überContractVertrag
SalesVerkauf
PartnerCustomerKunde
VendorLieferant
RabatttrueJa
falseNein

Zwei Felder für die Berechnungsbasis, gekreuzt benannt

Hier ist beim Lesen der Konfiguration Vorsicht geboten: Das BC-Feld Berechnungsbasisbetrag geht in das CE-Feld Berechnungsbasis, das BC-Feld Berechnungsbasis dagegen in Berechnungsbasis Prozent. Die Namen kreuzen sich also. Fachlich passt es — BC führt unter Berechnungsbasis einen Prozentsatz —, beim Prüfen eines Datensatzes ist es aber leicht zu verwechseln.

Drei Nummernfelder

Die Zeile bringt drei verschiedene Nummern mit: Vertragsnummer, Zeilennummer (aus der Vertragszeile) und Eintragsnummer (aus der Zeilennummer des Belegs). Für die Zuordnung ist keine davon relevant — die läuft über die BC System-ID.

Währung und abzurechnendes Produkt fehlen

Die Felder Währung und Abzurechnendes Produkt sind nicht Teil dieses Mappings. Preis, Rabattbetrag und Leistungsbetrag kommen also ohne Währungsangabe an; in CE gilt dann, was am Datensatz voreingestellt ist.

Keine Löschverarbeitung

Wird eine Abonnementzeile in Business Central gelöscht, bleibt sie in CE stehen. Siehe die Warnung auf der Übersicht.

Technische Details

Die vollständige technische Mapping-Tabelle mit Feldzuordnungen, Key-Auflösung und Transformationen steht unter Technisches Mapping → servicecommitmentsfrombc.

8 - Technisches Mapping

Rein technische Referenz aller DataBridge-Jobs in Ausführungsreihenfolge: Job, Mapping, Richtung, Zeitplan und Feldzuordnung.

Diese Sektion ist die technische Referenz zur DataBridge-Integration zwischen Business Central und Customer Engagement — für alle, die die Konfiguration warten, erweitern oder im Fehlerfall nachvollziehen müssen. Sie ergänzt die fachliche Doku der anderen Bereiche um eine vollständige, tabellarische Sicht auf Jobs und Feldzuordnungen, ohne die fachlichen Zusammenhänge zu erklären.

Sortiert nach der Ausführungsreihenfolge (Order) des jeweiligen Jobs. Response-Jobs laufen ohne eigenen Zeitplan; sie werden vom auslösenden Job über das Feld ResponseJob unmittelbar danach aufgerufen und stehen deshalb an ihrer Order-Position in der Kette.

OrderJobMappingRichtungLäuftTechnische SeiteFachliche Doku
110countriesfrombcBCCountriesBC → CEZeitplan→→
115languagesfrombcBCLanguagesBC → CEZeitplan→→
120salutationsfrombcBCSalutationsBC → CEZeitplan→→
125customerdiscountgroupsfrombcBCCustomerDiscountGroupsBC → CEZeitplan→→
130salespersonsfrombcBCSalesPersonsBC → CEZeitplan→→
135positionsfrombcBCPositionsBC → CEZeitplan→→
190opportunityelementsfrombcBCOpportunityElementsBC → CEZeitplan→→
220accountsnewfromceCEAccountsCE → BCZeitplan→→
221accountsresponsefrombcBCAccountsResponseBC → CEper Response-Job→→
240contactsnewfromceCEContactsCE → BCZeitplan→→
241contactsresponsefrombcBCContactsResponseBC → CEper Response-Job→→
260opportunitiesnewfromceCEOpportunitiesCE → BCZeitplan→→
261opportunitiesresponsefrombcBCOpportunitiesResponseBC → CEper Response-Job→→
410accountsfrombcBCAccountsBC → CEZeitplan→→
420accountsfrombcdeleteBCAccountsDeleteBC → CEZeitplan→→
430contactsfrombcBCContactsBC → CEZeitplan→→
440contactsfrombcdeleteBCContactsDeleteBC → CEZeitplan→→
450productsfrombcdeleteBCProductsDeleteBC → CEZeitplan→→
520accountupdatesfromceCEAccountUpdatesCE → BCZeitplan→→
530contactupdatesfromceCEContactsUpdatesCE → BCZeitplan→→
550serviceobjectsfrombcBCServiceObjectsBC → CEZeitplan→→
560servicecommitmentsfrombcBCServiceCommitmentsBC → CEZeitplan→→
610salesquotesfrombcBCSalesQuotesBC → CEZeitplan→→
620salescalculationelementsfrombcBCSalesCalculationElementsBC → CEZeitplan→→
621salescalculationelementsfrombcdeleteBCSalesCalculationElementsDeleteBC → CEZeitplan→→
625activatesalesquotesfrombcBCSalesQuotesActivateBC → CEZeitplan→→
690salesquotesfrombcdeleteBCSalesQuotesDeleteBC → CEZeitplan→→
710opportunityproductsnewfromceCEOpportunityProductsCE → BCZeitplan→→
750opportunityproductsupdatesfromceCEOpportunityProductsUpdatesCE → BCZeitplan→→
760opportunityproductsresponsefrombcBCOpportunityProductsResponseBC → CEper Response-Job→→

8.1 - 110 · countriesfrombc

Technisches Mapping des Jobs countriesfrombc (BCCountries).
EigenschaftWert
Order110
Jobcountriesfrombc
MappingBCCountries
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)acdcountryregions aus singhammerITConsulting/dyce/v2.0
Zieltabellewysa_country
Zeitplan0 */2 * * * *
Filter{{lastModifiedDateTime gt %watermark%}} and code ne ''
WatermarklastModifiedDateTime (Typ datetime)
Response-Job—
Fachliche DokuWertelisten aus BC

Feldzuordnung

QuellfeldZielfeldOperationDetails
codewysa_bccode——
idwysa_bcsystemid— · Schlüssel—
isoCodewysa_iso31661alpha2——
namewysa_name——

Alternate Key

{
  "keyType": "CustomKey",
  "keyName": "wysa_bcsystemidkey",
  "keyValues": [
    {
      "attributeName": "id",
      "keyName": "wysa_bcsystemid",
      "rank": 1
    }
  ],
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Vergleich mit anderen Wertelisten-Jobs

Alle fünf Wertelisten-Jobs (countriesfrombc, languagesfrombc, salutationsfrombc, customerdiscountgroupsfrombc, positionsfrombc) teilen dieselbe Konfiguration — Zeitplan, Quell- und Zielverbindung, Watermark und Basisfilter — und unterscheiden sich nur in Quelltabelle, Zieltabelle und Filter-Zusatz:

OrderJobAPI PageZieltabelleFilter-Zusatz
110countriesfrombcacdcountryregionswysa_countrycode ne ''
115languagesfrombcacdlanguageswysa_language—
120salutationsfrombcacdsalutationswysa_bcsalutation—
125customerdiscountgroupsfrombcacdcustomerdiscgroupswysa_bccustomerdiscountgroup—
135positionsfrombcacdorganizationallevelswysa_bcposition—

countriesfrombc ist der einzige der fünf Jobs mit einem Filter-Zusatz (code ne ''). Keines der fünf Mappings enthält eine Transformation.

Auflösung in den Belegketten

wysa_country wird über wysa_bccode aufgelöst — in Firma und Kontakt, je in beide Richtungen. Die BC→CE-Auflösung verwendet die Operation Lookup über den Alternate Key wysa_bccodekey, die CE→BC-Auflösung die Operation LookupValue mit UseCache: true.

8.2 - 115 · languagesfrombc

Technisches Mapping des Jobs languagesfrombc (BCLanguages).
EigenschaftWert
Order115
Joblanguagesfrombc
MappingBCLanguages
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)acdlanguages aus singhammerITConsulting/dyce/v2.0
Zieltabellewysa_language
Zeitplan0 */2 * * * *
Filter{{lastModifiedDateTime gt %watermark%}}
WatermarklastModifiedDateTime (Typ datetime)
Response-Job—
Fachliche DokuWertelisten aus BC

Feldzuordnung

QuellfeldZielfeldOperationDetails
codewysa_bccode——
idwysa_bcsystemid— · Schlüssel—
namewysa_name——

Alternate Key

{
  "keyType": "CustomKey",
  "keyName": "wysa_bcsystemidkey",
  "keyValues": [
    {
      "attributeName": "id",
      "keyName": "wysa_bcsystemid",
      "rank": 1
    }
  ],
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Vergleich mit anderen Wertelisten-Jobs

Alle fünf Wertelisten-Jobs (countriesfrombc, languagesfrombc, salutationsfrombc, customerdiscountgroupsfrombc, positionsfrombc) teilen dieselbe Konfiguration — Zeitplan, Quell- und Zielverbindung, Watermark und Basisfilter — und unterscheiden sich nur in Quelltabelle, Zieltabelle und Filter-Zusatz:

OrderJobAPI PageZieltabelleFilter-Zusatz
110countriesfrombcacdcountryregionswysa_countrycode ne ''
115languagesfrombcacdlanguageswysa_language—
120salutationsfrombcacdsalutationswysa_bcsalutation—
125customerdiscountgroupsfrombcacdcustomerdiscgroupswysa_bccustomerdiscountgroup—
135positionsfrombcacdorganizationallevelswysa_bcposition—

Keines der fünf Mappings enthält eine Transformation.

Auflösung in den Belegketten

wysa_language wird über wysa_bccode aufgelöst — am Kontakt, in beide Richtungen. Die BC→CE-Auflösung verwendet die Operation Lookup über den Alternate Key wysa_bccodekey, die CE→BC-Auflösung die Operation LookupValue mit UseCache: true.

8.3 - 120 · salutationsfrombc

Technisches Mapping des Jobs salutationsfrombc (BCSalutations).
EigenschaftWert
Order120
Jobsalutationsfrombc
MappingBCSalutations
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)acdsalutations aus singhammerITConsulting/dyce/v2.0
Zieltabellewysa_bcsalutation
Zeitplan0 */2 * * * *
Filter{{lastModifiedDateTime gt %watermark%}}
WatermarklastModifiedDateTime (Typ datetime)
Response-Job—
Fachliche DokuWertelisten aus BC

Feldzuordnung

QuellfeldZielfeldOperationDetails
codewysa_code——
descriptionwysa_name——
idwysa_bcsystemid— · Schlüssel—

Alternate Key

{
  "keyType": "CustomKey",
  "keyName": "wysa_bcsystemidkey",
  "keyValues": [
    {
      "attributeName": "id",
      "keyName": "wysa_bcsystemid",
      "rank": 1
    }
  ],
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Vergleich mit anderen Wertelisten-Jobs

Alle fünf Wertelisten-Jobs (countriesfrombc, languagesfrombc, salutationsfrombc, customerdiscountgroupsfrombc, positionsfrombc) teilen dieselbe Konfiguration — Zeitplan, Quell- und Zielverbindung, Watermark und Basisfilter — und unterscheiden sich nur in Quelltabelle, Zieltabelle und Filter-Zusatz:

OrderJobAPI PageZieltabelleFilter-Zusatz
110countriesfrombcacdcountryregionswysa_countrycode ne ''
115languagesfrombcacdlanguageswysa_language—
120salutationsfrombcacdsalutationswysa_bcsalutation—
125customerdiscountgroupsfrombcacdcustomerdiscgroupswysa_bccustomerdiscountgroup—
135positionsfrombcacdorganizationallevelswysa_bcposition—

Keines der fünf Mappings enthält eine Transformation.

Auflösung in den Belegketten

wysa_bcsalutation wird über wysa_code aufgelöst — am Kontakt, in beide Richtungen. Die BC→CE-Auflösung verwendet die Operation Lookup über den Alternate Key wysa_bccodekey, die CE→BC-Auflösung die Operation LookupValue mit UseCache: true.

8.4 - 125 · customerdiscountgroupsfrombc

Technisches Mapping des Jobs customerdiscountgroupsfrombc (BCCustomerDiscountGroups).
EigenschaftWert
Order125
Jobcustomerdiscountgroupsfrombc
MappingBCCustomerDiscountGroups
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)acdcustomerdiscgroups aus singhammerITConsulting/dyce/v2.0
Zieltabellewysa_bccustomerdiscountgroup
Zeitplan0 */2 * * * *
Filter{{lastModifiedDateTime gt %watermark%}}
WatermarklastModifiedDateTime (Typ datetime)
Response-Job—
Fachliche DokuWertelisten aus BC

Feldzuordnung

QuellfeldZielfeldOperationDetails
codewysa_bccode——
descriptionwysa_name——
idwysa_bcsystemid— · Schlüssel—

Alternate Key

{
  "keyType": "CustomKey",
  "keyName": "wysa_bcsystemidkey",
  "keyValues": [
    {
      "attributeName": "id",
      "keyName": "wysa_bcsystemid",
      "rank": 1
    }
  ],
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Vergleich mit anderen Wertelisten-Jobs

Alle fünf Wertelisten-Jobs (countriesfrombc, languagesfrombc, salutationsfrombc, customerdiscountgroupsfrombc, positionsfrombc) teilen dieselbe Konfiguration — Zeitplan, Quell- und Zielverbindung, Watermark und Basisfilter — und unterscheiden sich nur in Quelltabelle, Zieltabelle und Filter-Zusatz:

OrderJobAPI PageZieltabelleFilter-Zusatz
110countriesfrombcacdcountryregionswysa_countrycode ne ''
115languagesfrombcacdlanguageswysa_language—
120salutationsfrombcacdsalutationswysa_bcsalutation—
125customerdiscountgroupsfrombcacdcustomerdiscgroupswysa_bccustomerdiscountgroup—
135positionsfrombcacdorganizationallevelswysa_bcposition—

Keines der fünf Mappings enthält eine Transformation.

Auflösung in den Belegketten

wysa_bccustomerdiscountgroup wird über wysa_bccode aufgelöst — an der Firma, nur BC → CE, über die Operation Lookup mit dem Alternate Key wysa_bccodekey. Dieses Feld gehört zu denen, die nur aus BC kommen und nie zurückgeschrieben werden.

8.5 - 130 · salespersonsfrombc

Technisches Mapping des Jobs salespersonsfrombc (BCSalesPersons).
EigenschaftWert
Order130
Jobsalespersonsfrombc
MappingBCSalesPersons
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)acdsalespersons aus singhammerITConsulting/dyce/v2.0
Zieltabellewysa_bcsalesperson
Zeitplan0 */2 * * * *
Filter{{lastModifiedDateTime gt %watermark%}}
WatermarklastModifiedDateTime (Typ datetime)
Response-Job—
Fachliche DokuVerkäufer aus BC

Feldzuordnung

QuellfeldZielfeldOperationDetails
idwysa_bcsystemid— · Schlüssel—
codewysa_code——
displayNamewysa_name——
eMailwysa_emailaddress——

Alternate Key

{
  "keyType": "CustomKey",
  "keyName": "wysa_bcsystemidkey",
  "keyValues": [
    {
      "attributeName": "id",
      "keyName": "wysa_bcsystemid",
      "rank": 1
    }
  ],
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Auflösung in den Belegketten

Das Nachschlagefeld ist stets wysa_code, nicht wysa_bccode:

MappingRichtungOperation
BCAccountsBC → CELookup über wysa_bccodekey
CEAccounts, CEAccountUpdatesCE → BCLookupValue
CEContacts, CEContactsUpdatesCE → BCLookupValue
CEOpportunitiesCE → BCLookupValue
BCSalesQuotesBC → CELookup über wysa_bccodekey

Beobachtungen

Auffällig ist, dass BCContacts den Verkäufer nicht aus BC abholt, obwohl beide CE→BC-Mappings des Kontakts ihn senden.

8.6 - 135 · positionsfrombc

Technisches Mapping des Jobs positionsfrombc (BCPositions).
EigenschaftWert
Order135
Jobpositionsfrombc
MappingBCPositions
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)acdorganizationallevels aus singhammerITConsulting/dyce/v2.0
Zieltabellewysa_bcposition
Zeitplan0 */2 * * * *
Filter{{lastModifiedDateTime gt %watermark%}}
WatermarklastModifiedDateTime (Typ datetime)
Response-Job—
Fachliche DokuWertelisten aus BC

Feldzuordnung

QuellfeldZielfeldOperationDetails
codewysa_code——
descriptionwysa_name——
idwysa_bcsystemid— · Schlüssel—

Alternate Key

{
  "keyType": "CustomKey",
  "keyName": "wysa_bcsystemidkey",
  "keyValues": [
    {
      "attributeName": "id",
      "keyName": "wysa_bcsystemid",
      "rank": 1
    }
  ],
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Vergleich mit anderen Wertelisten-Jobs

Alle fünf Wertelisten-Jobs (countriesfrombc, languagesfrombc, salutationsfrombc, customerdiscountgroupsfrombc, positionsfrombc) teilen dieselbe Konfiguration — Zeitplan, Quell- und Zielverbindung, Watermark und Basisfilter — und unterscheiden sich nur in Quelltabelle, Zieltabelle und Filter-Zusatz:

OrderJobAPI PageZieltabelleFilter-Zusatz
110countriesfrombcacdcountryregionswysa_countrycode ne ''
115languagesfrombcacdlanguageswysa_language—
120salutationsfrombcacdsalutationswysa_bcsalutation—
125customerdiscountgroupsfrombcacdcustomerdiscgroupswysa_bccustomerdiscountgroup—
135positionsfrombcacdorganizationallevelswysa_bcposition—

Keines der fünf Mappings enthält eine Transformation.

Auflösung in den Belegketten

wysa_bcposition wird über wysa_code aufgelöst — am Kontakt und am Lead, nur BC → CE, über die Operation Lookup mit dem Alternate Key wysa_bccodekey.

8.7 - 190 · opportunityelementsfrombc

Technisches Mapping des Jobs opportunityelementsfrombc (BCOpportunityElements).
EigenschaftWert
Order190
Jobopportunityelementsfrombc
MappingBCOpportunityElements
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)acdopportunityelements aus singhammerITConsulting/dyce/v2.0
Zieltabelleproduct
Zeitplan0 */2 * * * *
Filter{{systemModifiedAt gt %watermark%}}
WatermarksystemModifiedAt (Typ datetime)
Response-Job—
Fachliche DokuVerkaufschancen-Elemente aus BC

Feldzuordnung

QuellfeldZielfeldOperationDetails
codewysa_bccode— · Schlüssel—
—defaultuomidDefaultValue= 946e49c5-b59d-41c6-b47a-da4ecbfa95fc
—defaultuomscheduleidDefaultValue= 1b706c12-f34a-4826-8b3c-0628b5df2ba2
—productstructureDefaultValue= 1
descriptiondescription——
dimension1Codewysa_bcdimension1code——
dimension1ValueCodewysa_bcdimension1valuecode——
dimension2Codewysa_bcdimension2code——
dimension2ValueCodewysa_bcdimension2valuecode——
systemIdwysa_bcsystemid——

Alternate Key

{
  "keyType": "CustomKey",
  "keyName": "wysa_bccode",
  "keyValues": [
    {
      "attributeName": "code",
      "keyName": "wysa_bccode",
      "rank": 1
    }
  ],
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Transformationen im Detail

Drei Vorgabewerte ohne Quellfeld:

{
  "Operations": [{
    "Name": "DefaultValue",
    "Parameters": { "DefaultValue": "946e49c5-b59d-41c6-b47a-da4ecbfa95fc" }
  }]
}
ZielfeldWertBedeutung
defaultuomid946e49c5-b59d-41c6-b47a-da4ecbfa95fcStandardeinheit — umgebungsspezifische GUID
defaultuomscheduleid1b706c12-f34a-4826-8b3c-0628b5df2ba2Einheitengruppe — umgebungsspezifische GUID
productstructure1Dataverse-Standardwert für Produkt (nicht Produktfamilie oder Bundle)

Die beiden GUIDs existieren nur in der Umgebung, für die das Mapping angelegt wurde, und müssen bei jedem Umgebungswechsel angepasst werden.

Beobachtungen

  • Das Watermark-Feld heißt hier systemModifiedAt, nicht lastModifiedDateTime wie in den übrigen BC→CE-Jobs.
  • Abweichend von den übrigen Mappings steht in keyName der Feldname wysa_bccode, nicht der Name eines Alternate Key wie wysa_bccodekey.

8.8 - 220 · accountsnewfromce

Technisches Mapping des Jobs accountsnewfromce (CEAccounts).
EigenschaftWert
Order220
Jobaccountsnewfromce
MappingCEAccounts
RichtungCE → BC
QuellverbindungCRM_Test
ZielverbindungBC_Test
Quelltabelle (API)account aus BC_Test-seitig, kein API-Pfad
Zieltabelleacdcontactscomp
Zeitplan0 */2 * * * *
FilterJSON-Filter: IsNull(wysa_bcsystemid) UND OptionSetValue(wysa_sync2bc=799840000)
Watermark—
Response-Jobaccountsresponsefrombc
Fachliche DokuNeue Firma nach BC

Feldzuordnung

QuellfeldZielfeldOperationDetails
accountiddataverseId— · Schlüssel—
address1_citycity——
address1_line1address——
address1_line2address2——
address1_postalcodepostCode——
—contactTypeDefaultValue= Company
—salutationCodeDefaultValue= MANDANT
emailaddress1eMail——
telephone1phoneNumber——
websiteurlhomePage——
_wysa_address1_countryidcountryRegionCodeLookupValueliest wysa_bccode aus wysa_country über wysa_address1_countryid
wysa_bcname1displayName——
wysa_bcname2name2——
_wysa_bcsalespersonidsalespersonCodeLookupValueliest wysa_code aus wysa_bcsalesperson über wysa_bcsalespersonid

Alternate Key

{
  "keyType": "Filter",
  "keyValues": [
    {
      "attributeName": "id",
      "keyName": "dataverseId",
      "rank": 1
    }
  ],
  "keyAttributeFromExisting": "id",
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Filter im Detail

{
  "Operations": [
    { "Name": "IsNull", "Parameters": { "SourceField": "wysa_bcsystemid" } },
    { "Name": "OptionSetValue",
      "Parameters": { "SourceField": "wysa_sync2bc", "Value": 799840000 } }
  ]
}

Transformationen im Detail

Land (_wysa_address1_countryid → countryRegionCode) — Umkehrung des Lookups aus accountsfrombc: Die Dataverse-Referenz wird über das Feld wysa_bccode der Werteliste wysa_country zum BC-Code aufgelöst. UseCache: true sorgt dafür, dass die Werteliste je Lauf nur einmal gelesen wird.

{
  "Operations": [{
    "Name": "LookupValue",
    "Parameters": {
      "LookupType": "Attribute",
      "SourceField": "wysa_address1_countryid",
      "LookupTable": "wysa_country",
      "LookupField": "wysa_bccode",
      "UseCache": true
    }
  }]
}

Verkäufer (_wysa_bcsalespersonid → salespersonCode) — identisches Muster, Nachschlagetabelle wysa_bcsalesperson, Nachschlagefeld wysa_code.

Kontaktart und Anrede — ohne Quellfeld, feste Werte Company bzw. MANDANT per DefaultValue. Da CEAccountUpdates diese Felder nicht enthält, werden sie ausschließlich bei der Neuanlage gesetzt.

Beobachtungen

Die Alternate Key auf dataverseId macht den Job wiederholbar: Läuft er zweimal, bevor der Response-Job (accountsresponsefrombc) die wysa_bcsystemid zurückgeschrieben hat, entsteht in BC keine Dublette.

8.9 - 221 · accountsresponsefrombc

Technisches Mapping des Jobs accountsresponsefrombc (BCAccountsResponse).
EigenschaftWert
Order221
Jobaccountsresponsefrombc
MappingBCAccountsResponse
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)acdcontactscomp aus singhammerITConsulting/dyce/v2.0
Zieltabelleaccount
Zeitplan—, wird von accountsnewfromce über ResponseJob ausgelöst
Filter{{lastModifiedDateTime gt %watermark%}}
Watermarkmodifiedon (Typ datetime)
Response-Job—
Fachliche DokuRückmeldung aus BC (Firma)

Feldzuordnung

QuellfeldZielfeldOperationDetails
_accountidaccountidReadFromMessage · Schlüsselaus Antwortnachricht
idwysa_bcsystemid——
numberwysa_bccontactnumber——

Alternate Key

{
  "keyType": "PrimaryKey",
  "keyName": "_accountid",
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Transformationen im Detail

Die Operation ReadFromMessage ist parameterlos. Sie weist die DataBridge an, den Wert nicht aus einer Tabelle zu lesen, sondern aus der Antwortnachricht des vorangegangenen Aufrufs (accountsnewfromce):

{ "Operations": [{ "Name": "ReadFromMessage" }] }

Möglich ist die Primärschlüssel-Auflösung, weil CEAccounts die CE-GUID im BC-Feld dataverseId mitgeschickt hat. BC gibt sie in der Antwort zurück, und ReadFromMessage liest sie von dort als _accountid aus.

Vergleich mit anderen Jobs

IsActive = false ist bei Response-Jobs kein Hinweis auf einen abgeschalteten Job. Sie laufen nicht nach eigenem Zeitplan, sondern werden vom auslösenden Job gestartet und verarbeiten dessen Antwortnachricht. Dasselbe Muster findet sich bei mehreren Job-Paaren:

Auslösender JobOrderResponse-JobOrder
accountsnewfromce220accountsresponsefrombc221
contactsnewfromce240contactsresponsefrombc241
opportunitiesnewfromce260opportunitiesresponsefrombc261
opportunityproductsnewfromce710opportunityproductsresponsefrombc760

8.10 - 240 · contactsnewfromce

Technisches Mapping des Jobs contactsnewfromce (CEContacts).
EigenschaftWert
Order240
Jobcontactsnewfromce
MappingCEContacts
RichtungCE → BC
QuellverbindungCRM_Test
ZielverbindungBC_Test
Quelltabelle (API)contact aus BC_Test-seitig, kein API-Pfad
Zieltabelleacdcontacts
Zeitplan0 */2 * * * *
FilterJSON-Filter: IsNull(wysa_bcsystemid) UND OptionSetValue(wysa_sync2bc=799840000)
Watermark—
Response-Jobcontactsresponsefrombc
Fachliche DokuNeuer Kontakt nach BC

Feldzuordnung

QuellfeldZielfeldOperationDetails
address1_citycity——
address1_line1address——
address1_line2address2——
address1_postalcodepostCode——
contactiddataverseId— · Schlüssel—
—contactTypeDefaultValue= Person
emailaddress1eMail——
firstnamefirstName——
lastnamesurname——
middlenamemiddleName——
mobilephonemobilePhoneNumber——
_parentcustomeridcompanyNumberLookupValueliest wysa_bccontactnumber aus account über parentcustomerid
telephone1phoneNumber——
_wysa_address1_countryidcountryRegionCodeLookupValueliest wysa_bccode aus wysa_country über wysa_address1_countryid
_wysa_bcsalespersonid.wysa_codesalespersonCodeLookupValueliest wysa_code aus wysa_bcsalesperson über wysa_bcsalespersonid
_wysa_language.wysa_bccodelanguageCodeLookupValueliest wysa_bccode aus wysa_language über wysa_language
_wysa_salutationbcid.wysa_codesalutationCodeLookupValueliest wysa_code aus wysa_bcsalutation über wysa_salutationbcid

Alternate Key

{
  "keyType": "Filter",
  "keyValues": [
    {
      "attributeName": "id",
      "keyName": "dataverseId",
      "rank": 1
    }
  ],
  "keyAttributeFromExisting": "id",
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Die CE-GUID wird in das BC-Feld dataverseId geschrieben; ein bereits angelegter Datensatz wird über einen Filter auf dieses Feld wiedergefunden. Das macht den Job wiederholbar, ohne Dubletten zu erzeugen.

Weitere technische Details

Transformationen im Detail

Alle fünf LookupValue-Operationen arbeiten mit LookupType: Attribute und UseCache: true und unterscheiden sich nur in Nachschlagetabelle und -feld:

QuellfeldNachschlagetabelleNachschlagefeld
wysa_address1_countryidwysa_countrywysa_bccode
wysa_languagewysa_languagewysa_bccode
wysa_salutationbcidwysa_bcsalutationwysa_code
wysa_bcsalespersonidwysa_bcsalespersonwysa_code
parentcustomeridaccountwysa_bccontactnumber

Beispiel übergeordnete Firma:

{
  "Operations": [{
    "Name": "LookupValue",
    "Parameters": {
      "LookupType": "Attribute",
      "SourceField": "parentcustomerid",
      "LookupTable": "account",
      "LookupField": "wysa_bccontactnumber",
      "UseCache": true
    }
  }]
}

Kontaktart — ohne Quellfeld, fester Wert Person per DefaultValue. Da CEContactsUpdates das Feld nicht enthält, wird es ausschließlich bei der Neuanlage gesetzt.

8.11 - 241 · contactsresponsefrombc

Technisches Mapping des Jobs contactsresponsefrombc (BCContactsResponse).
EigenschaftWert
Order241
Jobcontactsresponsefrombc
MappingBCContactsResponse
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)acdcontacts aus singhammerITConsulting/dyce/v2.0
Zieltabellecontact
Zeitplan—, wird von contactsnewfromce über ResponseJob ausgelöst
Filter{{lastModifiedDateTime gt %watermark%}}
Watermarkmodifiedon (Typ datetime)
Response-Job—
Fachliche DokuRückmeldung aus BC (Kontakt)

Feldzuordnung

QuellfeldZielfeldOperationDetails
address2address1_line2——
addressaddress1_line1——
cityaddress1_city——
_contactidcontactidReadFromMessage · Schlüsselaus Antwortnachricht
countryRegionCodewysa_address1_countryidLookup→ wysa_country über wysa_bccodekey (countryRegionCode → wysa_bccode)
idwysa_bcsystemid——
numberwysa_bccontactnumber——
phoneNumbertelephone1——
postCodeaddress1_postalcode——

Alternate Key

{
  "keyType": "PrimaryKey",
  "keyName": "_contactid",
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Möglich, weil contactsnewfromce die CE-GUID im BC-Feld dataverseId mitgeschickt hat. BC gibt sie in der Antwort zurück; die Operation ReadFromMessage liest sie von dort als contactid aus.

IsActive = false ist bei diesem Job kein Hinweis auf einen abgeschalteten Job — Response-Jobs laufen nicht nach eigenem Zeitplan, sondern werden vom auslösenden Job (contactsnewfromce, Order 240, über dessen Feld ResponseJob) gestartet.

Weitere technische Details

Vergleich mit anderen Jobs

Der Länder-Lookup (countryRegionCode → wysa_address1_countryid) ist identisch zu dem in contactsfrombc: Zieltabelle wysa_country, Schlüsselfeld wysa_bccode, Alternate Key wysa_bccodekey.

Dasselbe Response-Muster (auslösender Job → Response-Job) findet sich auch bei anderen Objekten:

Auslösender JobOrderResponse-JobOrderFelder
accountsnewfromce220accountsresponsefrombc2213
contactsnewfromce240contactsresponsefrombc2419
opportunitiesnewfromce260opportunitiesresponsefrombc2613
opportunityproductsnewfromce710opportunityproductsresponsefrombc7602

Beobachtungen

Der Kontakt ist der einzige Bereich, in dem die Rückmeldung mehr als die Schlüssel zurückträgt (9 Feldzuordnungen statt 2–3 bei den anderen Objekten).

8.12 - 260 · opportunitiesnewfromce

Technisches Mapping des Jobs opportunitiesnewfromce (CEOpportunities).
EigenschaftWert
Order260
Jobopportunitiesnewfromce
MappingCEOpportunities
RichtungCE → BC
QuellverbindungCRM_Test
ZielverbindungBC_Test
Quelltabelle (API)opportunity aus BC_Test-seitig, kein API-Pfad
Zieltabelleacdopportunities
Zeitplan0 */2 * * * *
FilterJSON-Filter: IsNull(wysa_bcsystemid) UND OptionSetValue(wysa_sync2bc=799840000)
Watermark—
Response-Jobopportunitiesresponsefrombc
Fachliche DokuNeue Verkaufschance nach BC

Feldzuordnung

QuellfeldZielfeldOperationDetails
_URLdynamicsSalesLinkLinkToRecordDeep-Link (baseUrl konfiguriert)
descriptionextendedDescription——
estimatedclosedateexpectedCloseDate——
estimatedvalueexpectedRevenue——
namedescription——
opportunityiddataverseId— · Schlüssel—
_parentaccountid.wysa_bccontactnumbercontactCompanyNumberLookupValueliest wysa_bccontactnumber aus account über parentaccountid
_parentcontactid.wysa_bccontactnumbercontactNumberLookupValueliest wysa_bccontactnumber aus contact über parentcontactid
_wysa_bcsalespersonid.wysa_codesalespersonCodeLookupValueliest wysa_code aus wysa_bcsalesperson über wysa_bcsalespersonid

Alternate Key

{
  "keyType": "Filter",
  "keyValues": [
    {
      "attributeName": "id",
      "keyName": "dataverseId",
      "rank": 1
    }
  ],
  "keyAttributeFromExisting": "Id",
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Transformationen im Detail

Deep Link (_URL → dynamicsSalesLink) — die Operation LinkToRecord setzt aus einer Basisadresse und der GUID des Datensatzes eine aufrufbare URL zusammen. Sie kommt in der gesamten Integration nur hier vor.

{
  "Operations": [{
    "Name": "LinkToRecord",
    "Parameters": {
      "BaseUrl": "https://dsyr-salescentral.crm4.dynamics.com/main.aspx?appid=1fb84e94-89dd-ef11-8ee9-7c1e527610c5&pagetype=entityrecord"
    }
  }]
}

Umgebungsadresse und App-ID sind fest hinterlegt.

Firma und Kontakt — beide werden über die BC Kontaktnummer des jeweiligen Datensatzes aufgelöst. Business Central kennt Firmen und Personen in derselben Kontakttabelle, deshalb ist das Nachschlagefeld in beiden Fällen dasselbe:

QuellfeldNachschlagetabelleNachschlagefeldZielfeld
parentaccountidaccountwysa_bccontactnumbercontactCompanyNumber
parentcontactidcontactwysa_bccontactnumbercontactNumber
wysa_bcsalespersonidwysa_bcsalespersonwysa_codesalespersonCode

Alle drei mit LookupType: Attribute und UseCache: true. Beispiel Kontakt:

{
  "Operations": [{
    "Name": "LookupValue",
    "Parameters": {
      "LookupType": "Attribute",
      "SourceField": "parentcontactid",
      "LookupTable": "contact",
      "LookupField": "wysa_bccontactnumber",
      "UseCache": true
    }
  }]
}

Ist eines der beiden Nachschlagefelder leer, kann die Zuordnung nicht gebildet werden — genau das verhindert die Freigaberegel.

Beobachtungen

  • keyAttributeFromExisting steht hier auf Id mit großem I, in den Mappings von Firma und Kontakt auf id. Ob das eine Rolle spielt, hängt davon ab, wie die DataBridge den Wert auswertet.

8.13 - 261 · opportunitiesresponsefrombc

Technisches Mapping des Jobs opportunitiesresponsefrombc (BCOpportunitiesResponse).
EigenschaftWert
Order261
Jobopportunitiesresponsefrombc
MappingBCOpportunitiesResponse
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)acdopportunities aus singhammerITConsulting/dyce/v2.0
Zieltabelleopportunity
Zeitplan—, wird von opportunitiesnewfromce über ResponseJob ausgelöst
Filter{{lastModifiedDateTime gt %watermark%}}
WatermarklastModifiedDateTime (Typ datetime)
Response-Job—
Fachliche DokuRückmeldung aus BC (Verkaufschance)

Feldzuordnung

QuellfeldZielfeldOperationDetails
idwysa_bcsystemid——
numberwysa_bcopportunitynumber——
_opportunityidopportunityidReadFromMessage · Schlüsselaus Antwortnachricht

Alternate Key

{
  "keyType": "PrimaryKey",
  "keyName": "_opportunityid",
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Vergleich mit anderen Jobs

Dasselbe Muster (Anlage-Job löst Response-Job über ResponseJob aus, PrimaryKey über eine per ReadFromMessage zurückgelesene GUID) findet sich bei mehreren Objekten:

Auslösender JobOrderResponse-JobOrderFelder
accountsnewfromce220accountsresponsefrombc2213
contactsnewfromce240contactsresponsefrombc2419
opportunitiesnewfromce260opportunitiesresponsefrombc2613
opportunityproductsnewfromce710opportunityproductsresponsefrombc7602

Beobachtungen

  • IsActive = false ist bei diesem Job kein Hinweis auf einen abgeschalteten Job — Response-Jobs laufen nicht nach eigenem Zeitplan, sondern werden vom auslösenden Job gestartet und verarbeiten dessen Antwortnachricht.
  • Der PrimaryKey funktioniert nur, weil CEOpportunities die CE-GUID im BC-Feld dataverseId mitgeschickt hat. BC gibt sie in der Antwort zurück; die Operation ReadFromMessage liest sie von dort als opportunityid aus.

8.14 - 410 · accountsfrombc

Technisches Mapping des Jobs accountsfrombc (BCAccounts).
EigenschaftWert
Order410
Jobaccountsfrombc
MappingBCAccounts
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)acdcontactscomp aus singhammerITConsulting/dyce/v2.0
Zieltabelleaccount
Zeitplan0 */2 * * * *
Filter{{lastModifiedDateTime gt %watermark%}}
WatermarklastModifiedDateTime (Typ datetime)
Response-Job—
Fachliche DokuFirma aus BC übernehmen

Feldzuordnung

QuellfeldZielfeldOperationDetails
address2address1_line2——
addressaddress1_line1——
cityaddress1_city——
companyNumberparentaccountidLookup→ account über wysa_bccodekey (companyNumber → wysa_bccontactnumber); NULL wenn = Feld number
countryRegionCodewysa_address1_countryidLookup→ wysa_country über wysa_bccodekey (countryRegionCode → wysa_bccode)
customerDiscountGroupwysa_bccustomerdiscountgroupidLookup→ wysa_bccustomerdiscountgroup über wysa_bccodekey (customerDiscountGroup → wysa_bccode)
customerNumberwysa_bccustomernumber——
—wysa_sync2bcDefaultValue= 799840000
displayNamewysa_bcname1——
eMailemailaddress1——
homePagewebsiteurl——
idwysa_bcsystemid——
name2wysa_bcname2——
numberwysa_bccontactnumber— · Schlüssel—
phoneNumbertelephone1——
postCodeaddress1_postalcode——
salespersonCodewysa_bcsalespersonidLookup→ wysa_bcsalesperson über wysa_bccodekey (salespersonCode → wysa_code)
vendorNumberwysa_bcvendornumber——

Alternate Key

{
  "keyType": "CustomKey",
  "keyName": "wysa_bccodekey",
  "keyValues": [
    {
      "attributeName": "number",
      "keyName": "wysa_bccontactnumber",
      "rank": 1
    }
  ],
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Transformationen im Detail

Voraussetzungen der Lookups — Land (countryRegionCode), Debitorrabattgruppe (customerDiscountGroup) und Verkäufer (salespersonCode) setzen voraus, dass die jeweilige Stammdatentabelle bereits gefüllt ist:

LookupZieltabelleVoraussetzung
Landwysa_countryJob countriesfrombc (110)
Debitorrabattgruppewysa_bccustomerdiscountgroupJob customerdiscountgroupsfrombc (125)
Verkäuferwysa_bcsalespersonJob salespersonsfrombc (130)

Übergeordnete Firma (companyNumber → parentaccountid) — Lookup auf account selbst, mit SetNullIfEqualsValueOfField. Der Parameter setzt die Referenz auf leer, wenn companyNumber und number identisch sind — genau der Fall, in dem sich ein BC-Firmenkontakt selbst als Unternehmen einträgt.

{
  "Operations": [{
    "Name": "Lookup",
    "Parameters": {
      "SetNullIfEqualsValueOfField": "number",
      "TargetTable": "account",
      "TargetKey": {
        "KeyType": "CustomKey",
        "KeyName": "wysa_bccodekey",
        "KeyValues": [
          { "keyName": "wysa_bccontactnumber", "attributeName": "companyNumber", "rank": 1 }
        ]
      }
    }
  }]
}

Freigabe (wysa_sync2bc) — ohne Quellfeld, fester Wert 799840000 („Ja"):

{
  "Operations": [{
    "Name": "DefaultValue",
    "Parameters": { "DefaultValue": "799840000" }
  }]
}

8.15 - 420 · accountsfrombcdelete

Technisches Mapping des Jobs accountsfrombcdelete (BCAccountsDelete).
EigenschaftWert
Order420
Jobaccountsfrombcdelete
MappingBCAccountsDelete
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)acdlogentries aus singhammerITConsulting/dyce/v2.0
Zieltabelleaccount
Zeitplan0 */2 * * * *
Filter{{lastModifiedDateTime gt %watermark%}} and tableId eq 5050
WatermarklastModifiedDateTime (Typ datetime)
Response-Job—
Fachliche DokuLöschung aus BC (Firma)

Feldzuordnung

QuellfeldZielfeldOperationDetails
DefaultstatecodeDefaultValue= 1
DefaultstatuscodeDefaultValue= 799840001
recordIdwysa_bcsystemid— · Schlüssel—

Alternate Key

{
  "keyType": "CustomKey",
  "keyName": "wysa_bcsystemidkey",
  "keyValues": [
    {
      "attributeName": "recordId",
      "keyName": "wysa_bcsystemid",
      "rank": 1
    }
  ],
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Transformationen im Detail

statecode = 1 ist der Dataverse-Standardwert für Inaktiv:

{
  "Operations": [{
    "Name": "DefaultValue",
    "Parameters": { "DefaultValue": "1" }
  }]
}

Der Statusgrund statuscode = 799840001 stammt aus dem lösungseigenen Nummernbereich ab 799840000.

Vergleich mit anderen Jobs

Das Action-Feld dieses Jobs ist leer, deshalb wird deaktiviert statt gelöscht. Die Der Positions-Job salescalculationelementsfrombcdelete trägt dagegen Action = Delete und löscht tatsächlich. salesquotesfrombcdelete hat wie dieser Job kein Action-Feld und schließt das Angebot als Storniert.

8.16 - 430 · contactsfrombc

Technisches Mapping des Jobs contactsfrombc (BCContacts).
EigenschaftWert
Order430
Jobcontactsfrombc
MappingBCContacts
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)acdcontacts aus singhammerITConsulting/dyce/v2.0
Zieltabellecontact
Zeitplan0 */2 * * * *
Filter{{lastModifiedDateTime gt %watermark%}}
WatermarklastModifiedDateTime (Typ datetime)
Response-Job—
Fachliche DokuKontakt aus BC übernehmen

Feldzuordnung

QuellfeldZielfeldOperationDetails
address2address1_line2——
addressaddress1_line1——
cityaddress1_city——
companyNumberparentcustomeridLookup→ account über wysa_bccodekey (companyNumber → wysa_bccontactnumber)
countryRegionCodewysa_address1_countryidLookup→ wysa_country über wysa_bccodekey (countryRegionCode → wysa_bccode)
—wysa_sync2bcDefaultValue= 799840000
eMailemailaddress1——
firstNamefirstname——
idwysa_bcsystemid——
languageCodewysa_languageLookup→ wysa_language über wysa_bccodekey (languageCode → wysa_bccode)
middleNamemiddlename——
mobilePhoneNumbermobilephone——
numberwysa_bccontactnumber— · Schlüssel—
organizationalLevelCodewysa_bcpositionidLookup→ wysa_bcposition über wysa_bccodekey (organizationalLevelCode → wysa_code)
phoneNumbertelephone1——
postCodeaddress1_postalcode——
salutationCodewysa_salutationbcidLookup→ wysa_bcsalutation über wysa_bccodekey (salutationCode → wysa_code)
surnamelastname——

Alternate Key

{
  "keyType": "CustomKey",
  "keyName": "wysa_bccodekey",
  "keyValues": [
    {
      "attributeName": "number",
      "keyName": "wysa_bccontactnumber",
      "rank": 1
    }
  ],
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Identisch zum Vorgehen bei der Firma.

Weitere technische Details

Transformationen im Detail

Alle fünf Lookups folgen demselben Aufbau — sie unterscheiden sich nur in Zieltabelle und Schlüsselfeld:

QuellfeldZieltabelleSchlüsselfeldAlternate Key
countryRegionCodewysa_countrywysa_bccodewysa_bccodekey
languageCodewysa_languagewysa_bccodewysa_bccodekey
salutationCodewysa_bcsalutationwysa_codewysa_bccodekey
organizationalLevelCodewysa_bcpositionwysa_codewysa_bccodekey
companyNumberaccountwysa_bccontactnumberwysa_bccodekey

Beispiel Anrede:

{
  "Operations": [{
    "Name": "Lookup",
    "Parameters": {
      "TargetTable": "wysa_bcsalutation",
      "TargetKey": {
        "KeyType": "CustomKey",
        "KeyName": "wysa_bccodekey",
        "KeyValues": [
          { "keyName": "wysa_code", "attributeName": "salutationCode", "rank": 1 }
        ]
      }
    }
  }]
}

Beobachtungen

Übergeordnete Firma (companyNumber → parentcustomerid) — der Lookup zeigt auf account und löst über die BC Kontaktnummer der Firma auf. Anders als beim gleichnamigen Lookup der Firma gibt es hier kein SetNullIfEqualsValueOfField — ein Personenkontakt trägt sich nicht selbst als Unternehmen ein, der Sonderfall kann also nicht auftreten.

Freigabe (wysa_sync2bc) — fester Wert 799840000 („Ja") per DefaultValue.

8.17 - 440 · contactsfrombcdelete

Technisches Mapping des Jobs contactsfrombcdelete (BCContactsDelete).
EigenschaftWert
Order440
Jobcontactsfrombcdelete
MappingBCContactsDelete
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)acdlogentries aus singhammerITConsulting/dyce/v2.0
Zieltabellecontact
Zeitplan0 */2 * * * *
Filter{{lastModifiedDateTime gt %watermark%}} and tableId eq 5050
WatermarklastModifiedDateTime (Typ datetime)
Response-Job—
Fachliche DokuLöschung aus BC (Kontakt)

Feldzuordnung

QuellfeldZielfeldOperationDetails
DefaultstatecodeDefaultValue= 1
DefaultstatuscodeDefaultValue= 799840001
recordIdwysa_bcsystemid— · Schlüssel—

Alternate Key

{
  "keyType": "CustomKey",
  "keyName": "wysa_bcsystemidkey",
  "keyValues": [
    {
      "attributeName": "recordId",
      "keyName": "wysa_bcsystemid",
      "rank": 1
    }
  ],
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Vergleich mit anderen Jobs

Die Quelle ist die API Page acdlogentries, gefiltert auf tableId 5050 — die BC-Tabelle Kontakt, in der Firmen- und Personenkontakte gemeinsam liegen. Derselbe Filter (tableId 5050) steht auch im Firmen-Job accountsfrombcdelete (Order 420); beide Jobs lesen dieselben Protokolleinträge und sortieren sie über die Zieltabelle bzw. den Schlüssel selbst auseinander.

Das Mapping BCContactsDelete folgt derselben Struktur wie BCAccountsDelete — dieselben drei Feldzuordnungen, dieselben Werte für statecode/statuscode —, adressiert aber die Zieltabelle contact statt account.

Beobachtungen

Action ist leer konfiguriert, deshalb wird deaktiviert, nicht gelöscht. statecode = 1 ist der Dataverse-Standardwert für Inaktiv. Der Statusgrund 799840001 stammt aus dem lösungseigenen Nummernbereich ab 799840000 — siehe Wertelisten.

8.18 - 450 · productsfrombcdelete

Technisches Mapping des Jobs productsfrombcdelete (BCProductsDelete).
EigenschaftWert
Order450
Jobproductsfrombcdelete
MappingBCProductsDelete
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)acdlogentries aus singhammerITConsulting/dyce/v2.0
Zieltabelleproduct
Zeitplan0 */2 * * * *
Filter{{lastModifiedDateTime gt %watermark%}} and tableId eq 72077781
WatermarklastModifiedDateTime (Typ datetime)
Response-Job—
Fachliche DokuProdukte deaktivieren

Feldzuordnung

QuellfeldZielfeldOperationDetails
DefaultstatecodeDefaultValue= 1
DefaultstatuscodeDefaultValue= 2
recordIdwysa_bcsystemid— · Schlüssel—

Alternate Key

{
  "keyType": "CustomKey",
  "keyName": "wysa_bcsystemidkey",
  "keyValues": [
    {
      "attributeName": "recordId",
      "keyName": "wysa_bcsystemid",
      "rank": 1
    }
  ],
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Transformationen im Detail

Die beiden DefaultValue-Operationen setzen den Datensatz auf inaktiv:

{
  "Operations": [{
    "Name": "DefaultValue",
    "Parameters": { "DefaultValue": "1" }
  }]
}

Anders als die Löschjobs von Firma, Kontakt und Angebot hat dieser Job keinen Zusatzfilter auf operation eq 'DELETE'. Er verarbeitet damit jeden Protokolleintrag zu dieser Tabelle — auch eine bloße Änderung — als Deaktivierung.

Vergleich mit anderen Jobs

Jobstatecodestatuscode
accountsfrombcdelete (420)1799840001 — lösungseigen
contactsfrombcdelete (440)1799840001 — lösungseigen
productsfrombcdelete (450)12 — Dataverse-Standard

8.19 - 520 · accountupdatesfromce

Technisches Mapping des Jobs accountupdatesfromce (CEAccountUpdates).
EigenschaftWert
Order520
Jobaccountupdatesfromce
MappingCEAccountUpdates
RichtungCE → BC
QuellverbindungCRM_Test
ZielverbindungBC_Test
Quelltabelle (API)account aus BC_Test-seitig, kein API-Pfad
Zieltabelleacdcontactscomp
Zeitplan0 */2 * * * *
FilterJSON-Filter: NotNull(wysa_bcsystemid) UND OptionSetValue(wysa_sync2bc=799840000)
Watermark—
Response-Job—
Fachliche DokuÄnderungen nach BC (Firma)

Feldzuordnung

QuellfeldZielfeldOperationDetails
accountiddataverseId——
address1_citycity——
address1_line1address——
address1_line2address2——
address1_postalcodepostCode——
emailaddress1eMail——
telephone1phoneNumber——
websiteurlhomePage——
_wysa_address1_countryidcountryRegionCodeLookupValueliest wysa_bccode aus wysa_country über wysa_address1_countryid
wysa_bcname1displayName——
wysa_bcname2name2——
_wysa_bcsalespersonidsalespersonCodeLookupValueliest wysa_code aus wysa_bcsalesperson über wysa_bcsalespersonid
wysa_bcsystemidid— · Schlüssel—

Alternate Key

{
  "keyType": "Id",
  "keyName": "wysa_bcsystemid",
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Filter im Detail

{
  "Operations": [
    { "Name": "NotNull", "Parameters": { "SourceField": "wysa_bcsystemid" } },
    { "Name": "OptionSetValue",
      "Parameters": { "SourceField": "wysa_sync2bc", "Value": 799840000 } }
  ]
}

Beide Lookups (countryRegionCode, salespersonCode) laufen mit LookupType: Attribute und UseCache: true.

Vergleich mit anderen Jobs

CEAccounts (220)CEAccountUpdates (520)
SchlüsselKeyType: Filter über dataverseIdKeyType: Id über wysa_bcsystemid
contactType✓ DefaultValue = Company–
salutationCode✓ DefaultValue = MANDANT–
Response-Job✓ accountsresponsefrombc–
Feldzuordnungen1413

8.20 - 530 · contactupdatesfromce

Technisches Mapping des Jobs contactupdatesfromce (CEContactsUpdates).
EigenschaftWert
Order530
Jobcontactupdatesfromce
MappingCEContactsUpdates
RichtungCE → BC
QuellverbindungCRM_Test
ZielverbindungBC_Test
Quelltabelle (API)contact aus BC_Test-seitig, kein API-Pfad
Zieltabelleacdcontacts
Zeitplan0 */2 * * * *
FilterJSON-Filter: NotNull(wysa_bcsystemid) UND OptionSetValue(wysa_sync2bc=799840000)
Watermark—
Response-Job—
Fachliche DokuÄnderungen nach BC (Kontakt)

Feldzuordnung

QuellfeldZielfeldOperationDetails
address1_citycity——
address1_line1address——
address1_line2address2——
address1_postalcodepostCode——
contactiddataverseId——
emailaddress1eMail——
firstnamefirstName——
lastnamesurname——
middlenamemiddleName——
mobilephonemobilePhoneNumber——
_parentcustomeridcompanyNumberLookupValueliest wysa_bccontactnumber aus account über parentcustomerid
telephone1phoneNumber——
_wysa_address1_countryidcountryRegionCodeLookupValueliest wysa_bccode aus wysa_country über wysa_address1_countryid
_wysa_bcsalespersonid.wysa_codesalespersonCodeLookupValueliest wysa_code aus wysa_bcsalesperson über wysa_bcsalespersonid
wysa_bcsystemidid— · Schlüssel—
_wysa_language.wysa_bccodelanguageCodeLookupValueliest wysa_bccode aus wysa_language über wysa_language
_wysa_salutationbcid.wysa_codesalutationCodeLookupValueliest wysa_code aus wysa_bcsalutation über wysa_salutationbcid

Alternate Key

{
  "keyType": "Id",
  "keyName": "wysa_bcsystemid",
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Das Feld wysa_bcsystemid wird auf id gemappt und dient gleichzeitig als Schlüssel. Der Umweg über dataverseId entfällt.

Weitere technische Details

Vergleich mit anderen Jobs

Die fünf LookupValue-Operationen sind identisch zu denen in contactsnewfromce.

Unterschied zu contactsnewfromce (240):

contactsnewfromce (240)contactupdatesfromce (530)
SchlüsselKeyType: Filter über dataverseIdKeyType: Id über wysa_bcsystemid
contactType✓ DefaultValue = Person–
Response-Job✓ contactsresponsefrombc–
Feldzuordnungen1717

8.21 - 550 · serviceobjectsfrombc

Technisches Mapping des Jobs serviceobjectsfrombc (BCServiceObjects).
EigenschaftWert
Order550
Jobserviceobjectsfrombc
MappingBCServiceObjects
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)serviceObjects aus microsoft/subsBilling/v1.0
Zieltabellewysa_bcserviceobject
Zeitplan0 */2 * * * *
Filter{{lastModifiedDateTime gt %watermark%}}
WatermarklastModifiedDateTime (Typ datetime)
Response-Job—
Fachliche DokuAbonnements aus BC

Feldzuordnung

QuellfeldZielfeldOperationDetails
billToContactNowysa_billtocontactidLookup→ contact über wysa_bccodekey (billToContactNo → wysa_bccontactnumber)
billToCompanyContactNowysa_billtocustomeridLookup→ account über wysa_bccodekey (billToCompanyContactNo → wysa_bccontactnumber)
customerReferencewysa_customerreference——
descriptionwysa_productdescription——
shipToContactNowysa_endusercontactidLookup→ contact über wysa_bccodekey (shipToContactNo → wysa_bccontactnumber)
shipToCompanyContactNowysa_endusercustomeridLookup→ account über wysa_bccodekey (shipToCompanyContactNo → wysa_bccontactnumber)
sourceNowysa_productnumber——
nowysa_name——
nowysa_number— · Schlüssel—
provisionEndDatewysa_provisionenddate——
provisionStartDatewysa_provisionstartdate——
quantityDecimalwysa_quantity——
serialNowysa_serialnumber——
systemIdwysa_bcsystemid——
unitOfMeasurewysa_uom——
versionwysa_version——
nullwysa_subscriptiontypeDefaultValue= 799840000

Alternate Key

{
  "keyType": "CustomKey",
  "keyName": "wysa_numberkey",
  "keyValues": [
    {
      "attributeName": "no",
      "keyName": "wysa_number",
      "rank": 1
    }
  ],
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Transformationen im Detail

Vier Lookups, alle über das Feld wysa_bccontactnumber und den Alternate Key wysa_bccodekey:

QuellfeldZieltabelleZielfeld
billToContactNocontactwysa_billtocontactid
billToCompanyContactNoaccountwysa_billtocustomerid
shipToContactNocontactwysa_endusercontactid
shipToCompanyContactNoaccountwysa_endusercustomerid

Beispiel Rechnungsempfänger Firma:

{
  "Operations": [{
    "Name": "Lookup",
    "Parameters": {
      "TargetTable": "account",
      "TargetKey": {
        "KeyType": "CustomKey",
        "KeyName": "wysa_bccodekey",
        "KeyValues": [
          { "keyName": "wysa_bccontactnumber", "attributeName": "billToCompanyContactNo", "rank": 1 }
        ]
      }
    }
  }]
}

Abonnementart — ohne Quellfeld, fester Wert:

{
  "Operations": [{
    "Name": "DefaultValue",
    "Parameters": { "DefaultValue": "799840000" }
  }]
}

Der Wert 799840000 stammt aus dem lösungseigenen Nummernbereich — siehe Wertelisten.

Beobachtungen

Die Quelle liegt nicht unter singhammerITConsulting/dyce/v2.0/ wie alle übrigen Abgleiche, sondern ist die Schnittstelle der Abonnementverwaltung von Business Central selbst.

Adressiert wird über die fachliche Abonnementnummer, nicht über die BC System-ID — anders als bei den Wertelisten und anders als bei den Abonnementzeilen (servicecommitmentsfrombc).

8.22 - 560 · servicecommitmentsfrombc

Technisches Mapping des Jobs servicecommitmentsfrombc (BCServiceCommitments).
EigenschaftWert
Order560
Jobservicecommitmentsfrombc
MappingBCServiceCommitments
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)serviceCommitments aus microsoft/subsBilling/v1.0
Zieltabellewysa_bcserviceobjectcommitment
Zeitplan0 */2 * * * *
Filter{{lastModifiedDateTime gt %watermark%}}
WatermarklastModifiedDateTime (Typ datetime)
Response-Job—
Fachliche DokuAbonnementzeilen aus BC

Feldzuordnung

QuellfeldZielfeldOperationDetails
billingBasePeriodwysa_billingbaseperiod——
billingRhythmwysa_billingrhythm——
calculationBaseAmountwysa_calculationbaseamount——
calculationBasewysa_calculationbasepercent——
cancellationPossibleUntilwysa_cancellationpossibleuntil——
contractLineNowysa_contractlinenumber——
contractNowysa_contractnumber——
descriptionwysa_description——
discountAmountwysa_discountamount——
discountPctgwysa_discountpercent——
discountwysa_discountOptionMappingWerte: true→1, false→0
extensionTermwysa_extensionterm——
initialTermwysa_initialterm——
invoicingViawysa_invoicingviaOptionMappingWerte: Contract→799840000, Sales→799840001
lineNowysa_entrynumber——
nextBillingDatewysa_nextbillingdate——
noticePeriodwysa_noticeperiod——
packageCodewysa_packagecode——
partnerwysa_partnerOptionMappingWerte: Customer→799840000, Vendor→799840001
pricewysa_price——
quantityDecimalwysa_quantity——
serviceAmountwysa_serviceamount——
serviceEndDatewysa_serviceenddate——
serviceObjectNowysa_serviceobjectidLookup→ wysa_bcserviceobject über wysa_numberkey (serviceObjectNo → wysa_number)
serviceStartDatewysa_servicestartdate——
systemIdwysa_bcsystemid— · Schlüssel—
termUntilwysa_termuntil——

Alternate Key

{
  "keyType": "CustomKey",
  "keyName": "wysa_bcsystemidkey",
  "keyValues": [
    {
      "attributeName": "systemId",
      "keyName": "wysa_bcsystemid",
      "rank": 1
    }
  ],
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Transformationen im Detail

Abonnement (serviceObjectNo → wysa_serviceobjectid) — Lookup auf die Abonnementtabelle über die Abonnementnummer:

{
  "Operations": [{
    "Name": "Lookup",
    "Parameters": {
      "TargetTable": "wysa_bcserviceobject",
      "TargetKey": {
        "KeyType": "CustomKey",
        "KeyName": "wysa_numberkey",
        "KeyValues": [
          { "keyName": "wysa_number", "attributeName": "serviceObjectNo", "rank": 1 }
        ]
      }
    }
  }]
}

OptionMapping — übersetzt BC-Textwerte in Dataverse-Auswahlwerte. Die Operation kommt nur in diesem Mapping vor:

{
  "Operations": [{
    "Name": "OptionMapping",
    "Parameters": {
      "Mapping": [
        { "Key": "Contract", "Value": "799840000" },
        { "Key": "Sales", "Value": "799840001" }
      ]
    }
  }]
}
ZielfeldZuordnung
wysa_invoicingviaContract → 799840000, Sales → 799840001
wysa_partnerCustomer → 799840000, Vendor → 799840001
wysa_discounttrue → 1, false → 0

Bei wysa_discount sind die Zielwerte 1 und 0 — es ist ein Ja/Nein-Feld, keine lösungseigene Werteliste.

Werte, die in der Zuordnungstabelle nicht vorkommen, sind nicht abgedeckt.

Beobachtungen

Wie beim Abonnement liegt die Quelle nicht unter singhammerITConsulting/dyce/v2.0/.

Anders als das Abonnement (serviceobjectsfrombc), das über seine fachliche Nummer adressiert wird, wird diese Zeile über die BC System-ID adressiert.

8.23 - 610 · salesquotesfrombc

Technisches Mapping des Jobs salesquotesfrombc (BCSalesQuotes).
EigenschaftWert
Order610
Jobsalesquotesfrombc
MappingBCSalesQuotes
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)acdsalesheaders aus singhammerITConsulting/dyce/v2.0
Zieltabellequote
Zeitplan0 */2 * * * *
Filter{{lastModifiedDateTime gt %watermark%}} and documentType eq 'Quote'
WatermarklastModifiedDateTime (Typ datetime)
Response-Job—
Fachliche DokuAngebotskopf aus BC

Feldzuordnung

QuellfeldZielfeldOperationDetails
amountIncludingVATwysa_bctotalamountvat——
idwysa_bcsystemid——
numberquotenumber— · Schlüssel—
opportunityNumberopportunityidLookup→ opportunity über wysa_bcopportunitynumberkey (opportunityNumber → wysa_bcopportunitynumber)
orderDateeffectivefrom——
postingDescriptionname——
quoteValidUntilDateeffectiveto——
salespersonCodewysa_bcsalespersonidLookup→ wysa_bcsalesperson über wysa_bccodekey (salespersonCode → wysa_code)
sellToCompanyContactNumbercustomeridLookup→ account über wysa_bccodekey (sellToCompanyContactNumber → wysa_bccontactnumber)
statuswysa_bcstatus——

Alternate Key

{
  "keyType": "CustomKey",
  "keyName": "wysa_quotenumberkey",
  "keyValues": [
    {
      "attributeName": "number",
      "keyName": "quotenumber",
      "rank": 1
    }
  ],
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Transformationen im Detail

Drei Lookups, jeder über einen Alternate Key:

QuellfeldZieltabelleSchlüsselfeldAlternate Key
opportunityNumberopportunitywysa_bcopportunitynumberwysa_bcopportunitynumberkey
sellToCompanyContactNumberaccountwysa_bccontactnumberwysa_bccodekey
salespersonCodewysa_bcsalespersonwysa_codewysa_bccodekey

Verkaufschance:

{
  "Operations": [{
    "Name": "Lookup",
    "Parameters": {
      "TargetTable": "opportunity",
      "TargetKey": {
        "KeyType": "CustomKey",
        "KeyName": "wysa_bcopportunitynumberkey",
        "KeyValues": [
          { "keyName": "wysa_bcopportunitynumber", "attributeName": "opportunityNumber", "rank": 1 }
        ]
      }
    }
  }]
}

Kunde — seit der Umstellung über die Kontaktnummer (wysa_bccontactnumber) statt über die Debitorennummer:

{
  "Operations": [{
    "Name": "Lookup",
    "Parameters": {
      "TargetTable": "account",
      "TargetKey": {
        "KeyType": "CustomKey",
        "KeyName": "wysa_bccodekey",
        "KeyValues": [
          { "keyName": "wysa_bccontactnumber", "attributeName": "sellToCompanyContactNumber", "rank": 1 }
        ]
      }
    }
  }]
}

Beobachtungen

Die API Page liefert alle Verkaufsbelege; die Einschränkung auf Angebote erfolgt über documentType eq 'Quote' im Filter.

Der Schlüssel ist das Standardfeld quotenumber — die Angebotsnummer —, aufgelöst über den Alternate Key wysa_quotenumberkey. In allen anderen Bereichen wird über wysa_bcsystemid oder wysa_bccontactnumber adressiert.

8.24 - 620 · salescalculationelementsfrombc

Technisches Mapping des Jobs salescalculationelementsfrombc (BCSalesCalculationElements).
EigenschaftWert
Order620
Jobsalescalculationelementsfrombc
MappingBCSalesCalculationElements
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)acdsalescalculationelements aus singhammerITConsulting/dyce/v2.0
Zieltabellequotedetail
Zeitplan0 */2 * * * *
Filter{{systemModifiedAt gt %watermark%}} and documentType eq 'Quote'
WatermarksystemModifiedAt (Typ datetime)
Response-Job—
Fachliche DokuAngebotspositionen aus BC

Feldzuordnung

QuellfeldZielfeldOperationDetails
—uomidDefaultValue= 946e49c5-b59d-41c6-b47a-da4ecbfa95fc
descriptiondescription——
documentNoquoteidLookup→ quote über wysa_quotenumberkey (documentNo → quotenumber)
lineAmountInclVATLCYwysa_bcamountvat——
lineAmountLCYwysa_bcamount——
opportunityElementCodeproductidLookup→ product über wysa_bccode (opportunityElementCode → wysa_bccode)
quantityquantity——
systemIdwysa_bcsystemid— · Schlüssel—

Alternate Key

{
  "keyType": "CustomKey",
  "keyName": "wysa_bcsystemidkey",
  "keyValues": [
    {
      "attributeName": "systemId",
      "keyName": "wysa_bcsystemid",
      "rank": 1
    }
  ],
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Transformationen im Detail

QuellfeldZieltabelleSchlüsselfeldAlternate Key
documentNoquotequotenumberwysa_quotenumberkey
opportunityElementCodeproductwysa_bccodewysa_bccode

Angebot:

{
  "Operations": [{
    "Name": "Lookup",
    "Parameters": {
      "TargetTable": "quote",
      "TargetKey": {
        "KeyType": "CustomKey",
        "KeyName": "wysa_quotenumberkey",
        "KeyValues": [
          { "keyName": "quotenumber", "attributeName": "documentNo", "rank": 1 }
        ]
      }
    }
  }]
}

Produkt — hier steht in KeyName der Feldname wysa_bccode statt eines Alternate-Key-Namens; dasselbe Muster wie in BCOpportunityElements.

Einheit:

{
  "Operations": [{
    "Name": "DefaultValue",
    "Parameters": { "DefaultValue": "946e49c5-b59d-41c6-b47a-da4ecbfa95fc" }
  }]
}

Dieselbe GUID wie defaultuomid in BCOpportunityElements.

Beobachtungen

Das Watermark-Feld heißt systemModifiedAt — wie beim Job 190, aber anders als in den übrigen BC→CE-Jobs (lastModifiedDateTime).

8.25 - 621 · salescalculationelementsfrombcdelete

Technisches Mapping des Jobs salescalculationelementsfrombcdelete (BCSalesCalculationElementsDelete).
EigenschaftWert
Order621
Jobsalescalculationelementsfrombcdelete
MappingBCSalesCalculationElementsDelete
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)acdlogentries aus singhammerITConsulting/dyce/v2.0
Zieltabellequotedetail
Zeitplan0 */2 * * * *
Filter{{lastModifiedDateTime gt %watermark%}} and tableId eq 72077783 and operation eq 'DELETE'
WatermarklastModifiedDateTime (Typ datetime)
Response-Job—
Fachliche DokuLöschung Angebotsposition aus BC

Feldzuordnung

QuellfeldZielfeldOperationDetails
recordIdwysa_bcsystemid— · Schlüssel—

Alternate Key

{
  "keyType": "CustomKey",
  "keyName": "wysa_bcsystemidkey",
  "keyValues": [
    {
      "attributeName": "recordId",
      "keyName": "wysa_bcsystemid",
      "rank": 1
    }
  ],
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Beobachtungen

Das Feld Action = Delete ist der Unterschied zu den Löschjobs von Firma und Kontakt: Dort ist es leer, und das Mapping setzt stattdessen den Status auf inaktiv.

Eine einzige Zuordnung — mehr braucht ein Löschjob nicht. Der Schlüssel identifiziert den Datensatz, Action = Delete erledigt den Rest. Keine Statusfelder, keine Vorgabewerte.

8.26 - 625 · activatesalesquotesfrombc

Technisches Mapping des Jobs activatesalesquotesfrombc (BCSalesQuotesActivate).
EigenschaftWert
Order625
Jobactivatesalesquotesfrombc
MappingBCSalesQuotesActivate
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)acdlogentries aus singhammerITConsulting/dyce/v2.0
Zieltabellequote
Zeitplan0 */3 * * * *
Filter{{lastModifiedDateTime gt %watermark%}} and tableId eq 36 and operation eq 'TRANSFERRED'
WatermarklastModifiedDateTime (Typ datetime)
Response-Job—
Fachliche DokuStatuswechsel Angebot aus BC

Feldzuordnung

QuellfeldZielfeldOperationDetails
DefaultstatecodeDefaultValue= 2
operationwysa_bcstatus——
recordIdwysa_bcsystemid— · Schlüssel—

Alternate Key

{
  "keyType": "CustomKey",
  "keyName": "wysa_bcsystemidkey",
  "keyValues": [
    {
      "attributeName": "recordId",
      "keyName": "wysa_bcsystemid",
      "rank": 1
    }
  ],
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Transformationen im Detail

{
  "Operations": [{
    "Name": "DefaultValue",
    "Parameters": { "DefaultValue": "2" }
  }]
}

statecode = 2 ist der Dataverse-Standardwert für ein Angebot im Status Gewonnen.

Das Feld operation wird unverändert in wysa_bcstatus geschrieben — durch den Filter des Jobs kann dort nur der Wert TRANSFERRED ankommen. Auf dieses Feld reagiert die Logik in Customer Engagement, die das Angebot und optional die Verkaufschance abschließt.

Beobachtungen

Anders als salesquotesfrombc, das über die Angebotsnummer adressiert, muss dieser Job über die BC System-ID gehen — das Änderungsprotokoll kennt nur diese. Voraussetzung ist also, dass der Abgleich 610 die System-ID am Angebot gefüllt hat.

8.27 - 690 · salesquotesfrombcdelete

Technisches Mapping des Jobs salesquotesfrombcdelete (BCSalesQuotesDelete).
EigenschaftWert
Order690
Jobsalesquotesfrombcdelete
MappingBCSalesQuotesDelete
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)acdlogentries aus singhammerITConsulting/dyce/v2.0
Zieltabellequote
Zeitplan0 */2 * * * *
Filter{{lastModifiedDateTime gt %watermark%}} and tableId eq 36 and operation eq 'DELETE'
WatermarklastModifiedDateTime (Typ datetime)
Response-Job—
ActionNewUpdate (kein Delete)
Fachliche DokuStornierung Angebot aus BC

Feldzuordnung

QuellfeldZielfeldOperationDetails
recordIdwysa_bcsystemid— · Schlüssel—
—statecodeDefaultValue= 3 (Geschlossen)
—statuscodeDefaultValue= 6 (Storniert)

Alternate Key

{
  "keyType": "CustomKey",
  "keyName": "wysa_bcsystemidkey",
  "keyValues": [
    {
      "attributeName": "recordId",
      "keyName": "wysa_bcsystemid",
      "rank": 1
    }
  ],
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Vergleich mit anderen Jobs

OrderJobZieltabelleActionWirkung
420accountsfrombcdeleteaccount—deaktivieren
440contactsfrombcdeletecontact—deaktivieren
450productsfrombcdeleteproduct—deaktivieren
621salescalculationelementsfrombcdeletequotedetailDeletelöschen
690salesquotesfrombcdeletequote—schließen (Storniert)

Nur noch die Angebotspositionen werden hart gelöscht. Das Angebot selbst wird seit der Überarbeitung der Mappings nicht mehr gelöscht, sondern über zwei Festwerte auf Geschlossen / Storniert gesetzt.

Festwerte für den Status

statecode und statuscode haben kein Quellfeld (Default) und werden fest gesetzt — 3 = Geschlossen, 6 = Storniert (Standard-Statusgrund des Angebots in Dataverse):

{
  "Operations": [{
    "Name": "DefaultValue",
    "Parameters": { "DefaultValue": "3" }
  }]
}
{
  "Operations": [{
    "Name": "DefaultValue",
    "Parameters": { "DefaultValue": "6" }
  }]
}

Beobachtungen

Adressiert wird über die BC System-ID, nicht über die Angebotsnummer wie in salesquotesfrombc — das Änderungsprotokoll kennt nur die System-ID. Voraussetzung ist also, dass der Abgleich 610 sie am Angebot gefüllt hat.

8.28 - 710 · opportunityproductsnewfromce

Technisches Mapping des Jobs opportunityproductsnewfromce (CEOpportunityProducts).
EigenschaftWert
Order710
Jobopportunityproductsnewfromce
MappingCEOpportunityProducts
RichtungCE → BC
QuellverbindungCRM_Test
ZielverbindungBC_Test
Quelltabelle (API)opportunityproduct aus BC_Test-seitig, kein API-Pfad
Zieltabelleacdopportunitycalculationelements
Zeitplan0 */3 * * * *
FilterJSON-Filter: IsNull(wysa_bcsystemid) UND OptionSetValue(wysa_synctobc=799840000)
Watermark—
Response-Jobopportunityproductsresponsefrombc
Fachliche DokuNeue Verkaufschancen-Position nach BC

Feldzuordnung

QuellfeldZielfeldOperationDetails
descriptiondescription——
wysa_marginprofitLCY——
wysa_bcamountamountLCY——
wysa_bcamountvatamountIncludingVATLCY——
_opportunityid.wysa_bcopportunitynumberopportunityNoLookupValueliest wysa_bcopportunitynumber aus opportunity über opportunityid (kein Cache)
_productid.wysa_bccodeopportunityElementCodeLookupValueliest wysa_bccode aus product über productid
quantityquantity——
wysa_bcsystemidsystemId— · Schlüssel—

Alternate Key

{
  "keyType": "Id",
  "keyName": "wysa_bcsystemid",
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Transformationen im Detail

Beide Lookups mit LookupType: Attribute:

QuellfeldNachschlagetabelleNachschlagefeldZielfeld
opportunityidopportunitywysa_bcopportunitynumberopportunityNo
productidproductwysa_bccodeopportunityElementCode
{
  "Operations": [{
    "Name": "LookupValue",
    "Parameters": {
      "LookupType": "Attribute",
      "SourceField": "opportunityid",
      "LookupTable": "opportunity",
      "LookupField": "wysa_bcopportunitynumber",
      "UseCache": false
    }
  }, {
    "Name": "LookupValue",
    "Parameters": {
      "LookupType": "Attribute",
      "SourceField": "productid",
      "LookupTable": "product",
      "LookupField": "wysa_bccode",
      "UseCache": true
    }
  }]
}

Die beiden Lookups unterscheiden sich im Cache-Verhalten: Die Verkaufschancennummer wird ohne Cache aufgelöst (UseCache: false), der Produktcode mit Cache (UseCache: true). Genau diese beiden Auflösungen begründen die Reihenfolgeabhängigkeit: opportunity liefert die Nummer erst nach opportunitiesresponsefrombc (261), product den Code erst nach dem Abgleich in opportunityelementsfrombc (190). Beide Vorgänger laufen im Zwei-Minuten-Takt, dieser Job im Drei-Minuten-Takt.

Beobachtungen

  • Das Feld wysa_bcsystemid wird auf systemId gemappt und dient als Schlüssel — obwohl der Filter des Jobs voraussetzt, dass es leer ist. Es gibt keinen dataverseId-Umweg wie bei Firma, Kontakt und Verkaufschance.
  • Dieser Job schreibt den Schlüssel in das BC-Feld systemId, der Job opportunityproductsupdatesfromce in das Feld id — dieselbe API Page, zwei verschiedene Feldnamen.
  • Der Filter verwendet wysa_synctobc ohne „2", abweichend vom Feldnamen wysa_sync2bc an der Verkaufschance.

8.29 - 750 · opportunityproductsupdatesfromce

Technisches Mapping des Jobs opportunityproductsupdatesfromce (CEOpportunityProductsUpdates).
EigenschaftWert
Order750
Jobopportunityproductsupdatesfromce
MappingCEOpportunityProductsUpdates
RichtungCE → BC
QuellverbindungCRM_Test
ZielverbindungBC_Test
Quelltabelle (API)opportunityproduct aus BC_Test-seitig, kein API-Pfad
Zieltabelleacdopportunitycalculationelements
Zeitplan0 */3 * * * *
FilterJSON-Filter: NotNull(wysa_bcsystemid) UND OptionSetValue(wysa_synctobc=799840000)
Watermark—
Response-Job—
Fachliche DokuÄnderungen nach BC (Verkaufschancen-Position)

Feldzuordnung

QuellfeldZielfeldOperationDetails
descriptiondescription——
wysa_marginprofitLCY——
wysa_bcamountamountLCY——
wysa_bcamountvatamountIncludingVATLCY——
_opportunityidopportunityNoLookupValueliest wysa_bcopportunitynumber aus opportunity über opportunityid (kein Cache)
_productidopportunityElementCodeLookupValueliest wysa_bccode aus product über productid
quantityquantity——
wysa_bcsystemidid— · Schlüssel—

Alternate Key

{
  "keyType": "Id",
  "keyName": "wysa_bcsystemid",
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Vergleich mit anderen Jobs

opportunityproductsnewfromce (710)opportunityproductsupdatesfromce (750)
Schlüssel-ZielfeldsystemIdid
Response-Job✓ opportunityproductsresponsefrombc–
Feldzuordnungen88

Beide Lookups sind identisch zu denen in opportunityproductsnewfromce:

QuellfeldNachschlagetabelleNachschlagefeld
opportunityidopportunitywysa_bcopportunitynumber
productidproductwysa_bccode

Beide mit LookupType: Attribute; die Verkaufschancennummer ohne Cache (UseCache: false), der Produktcode mit Cache (UseCache: true) — wie in opportunityproductsnewfromce.

Beobachtungen

  • Das Feld wysa_bcsystemid wird auf id gemappt. Der Anlage-Job opportunityproductsnewfromce schreibt denselben Schlüssel in das Feld systemId derselben API Page — zwei verschiedene Zielfeldnamen für denselben Zweck.

8.30 - 760 · opportunityproductsresponsefrombc

Technisches Mapping des Jobs opportunityproductsresponsefrombc (BCOpportunityProductsResponse).
EigenschaftWert
Order760
Jobopportunityproductsresponsefrombc
MappingBCOpportunityProductsResponse
RichtungBC → CE
QuellverbindungBC_Test
ZielverbindungCRM_Test
Quelltabelle (API)acdopportunitycalculationelements aus singhammerITConsulting/dyce/v2.0
Zieltabelleopportunityproduct
Zeitplan—, wird von opportunityproductsnewfromce über ResponseJob ausgelöst
Filter{{lastModifiedDateTime gt %watermark%}}
WatermarklastModifiedDateTime (Typ datetime)
Response-Job—
Fachliche DokuRückmeldung aus BC (Verkaufschancen-Position)

Feldzuordnung

QuellfeldZielfeldOperationDetails
systemIdwysa_bcsystemid——
_opportunityproductidopportunityproductidReadFromMessage · Schlüsselaus Antwortnachricht

Alternate Key

{
  "keyType": "PrimaryKey",
  "keyName": "_opportunityproductid",
  "ignoreEmptySourceKey": false,
  "keyRank": 0
}

Weitere technische Details

Beobachtungen

  • IsActive = false ist kein Hinweis auf einen abgeschalteten Job — Response-Jobs laufen nicht nach eigenem Zeitplan, sondern werden vom auslösenden Job (opportunityproductsnewfromce, 710) über dessen Feld ResponseJob gestartet.
  • Bei Firma, Kontakt und Verkaufschance funktioniert PrimaryKey, weil das jeweilige Anlage-Mapping die CE-GUID im Feld dataverseId mitgeschickt hat und BC sie zurückgibt. Das Anlage-Mapping der Positionen (CEOpportunityProducts) enthält kein dataverseId — woraus die DataBridge hier den Primärschlüssel bezieht, geht aus der Konfiguration nicht hervor und sollte im System nachvollzogen werden.