Das ist eine für den Ausdruck optimierte Ansicht des gesamten Kapitels inkl. Unterseiten.
Druckvorgang starten.
Zur Standardansicht zurückkehren.
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.
| Order | Job | Mapping | Richtung | Läuft | Technische Seite | Fachliche Doku |
|---|
| 110 | countriesfrombc | BCCountries | BC → CE | Zeitplan | → | → |
| 115 | languagesfrombc | BCLanguages | BC → CE | Zeitplan | → | → |
| 120 | salutationsfrombc | BCSalutations | BC → CE | Zeitplan | → | → |
| 125 | customerdiscountgroupsfrombc | BCCustomerDiscountGroups | BC → CE | Zeitplan | → | → |
| 130 | salespersonsfrombc | BCSalesPersons | BC → CE | Zeitplan | → | → |
| 135 | positionsfrombc | BCPositions | BC → CE | Zeitplan | → | → |
| 190 | opportunityelementsfrombc | BCOpportunityElements | BC → CE | Zeitplan | → | → |
| 220 | accountsnewfromce | CEAccounts | CE → BC | Zeitplan | → | → |
| 221 | accountsresponsefrombc | BCAccountsResponse | BC → CE | per Response-Job | → | → |
| 240 | contactsnewfromce | CEContacts | CE → BC | Zeitplan | → | → |
| 241 | contactsresponsefrombc | BCContactsResponse | BC → CE | per Response-Job | → | → |
| 260 | opportunitiesnewfromce | CEOpportunities | CE → BC | Zeitplan | → | → |
| 261 | opportunitiesresponsefrombc | BCOpportunitiesResponse | BC → CE | per Response-Job | → | → |
| 410 | accountsfrombc | BCAccounts | BC → CE | Zeitplan | → | → |
| 420 | accountsfrombcdelete | BCAccountsDelete | BC → CE | Zeitplan | → | → |
| 430 | contactsfrombc | BCContacts | BC → CE | Zeitplan | → | → |
| 440 | contactsfrombcdelete | BCContactsDelete | BC → CE | Zeitplan | → | → |
| 450 | productsfrombcdelete | BCProductsDelete | BC → CE | Zeitplan | → | → |
| 520 | accountupdatesfromce | CEAccountUpdates | CE → BC | Zeitplan | → | → |
| 530 | contactupdatesfromce | CEContactsUpdates | CE → BC | Zeitplan | → | → |
| 550 | serviceobjectsfrombc | BCServiceObjects | BC → CE | Zeitplan | → | → |
| 560 | servicecommitmentsfrombc | BCServiceCommitments | BC → CE | Zeitplan | → | → |
| 610 | salesquotesfrombc | BCSalesQuotes | BC → CE | Zeitplan | → | → |
| 620 | salescalculationelementsfrombc | BCSalesCalculationElements | BC → CE | Zeitplan | → | → |
| 621 | salescalculationelementsfrombcdelete | BCSalesCalculationElementsDelete | BC → CE | Zeitplan | → | → |
| 625 | activatesalesquotesfrombc | BCSalesQuotesActivate | BC → CE | Zeitplan | → | → |
| 690 | salesquotesfrombcdelete | BCSalesQuotesDelete | BC → CE | Zeitplan | → | → |
| 710 | opportunityproductsnewfromce | CEOpportunityProducts | CE → BC | Zeitplan | → | → |
| 750 | opportunityproductsupdatesfromce | CEOpportunityProductsUpdates | CE → BC | Zeitplan | → | → |
| 760 | opportunityproductsresponsefrombc | BCOpportunityProductsResponse | BC → CE | per Response-Job | → | → |
1 - 110 · countriesfrombc
Technisches Mapping des Jobs countriesfrombc (BCCountries).
| Eigenschaft | Wert |
|---|
| Order | 110 |
| Job | countriesfrombc |
| Mapping | BCCountries |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | acdcountryregions aus singhammerITConsulting/dyce/v2.0 |
| Zieltabelle | wysa_country |
| Zeitplan | 0 */2 * * * * |
| Filter | {{lastModifiedDateTime gt %watermark%}} and code ne '' |
| Watermark | lastModifiedDateTime (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Wertelisten aus BC |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
code | wysa_bccode | — | — |
id | wysa_bcsystemid | — · Schlüssel | — |
isoCode | wysa_iso31661alpha2 | — | — |
name | wysa_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:
| Order | Job | API Page | Zieltabelle | Filter-Zusatz |
|---|
| 110 | countriesfrombc | acdcountryregions | wysa_country | code ne '' |
| 115 | languagesfrombc | acdlanguages | wysa_language | — |
| 120 | salutationsfrombc | acdsalutations | wysa_bcsalutation | — |
| 125 | customerdiscountgroupsfrombc | acdcustomerdiscgroups | wysa_bccustomerdiscountgroup | — |
| 135 | positionsfrombc | acdorganizationallevels | wysa_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.
2 - 115 · languagesfrombc
Technisches Mapping des Jobs languagesfrombc (BCLanguages).
| Eigenschaft | Wert |
|---|
| Order | 115 |
| Job | languagesfrombc |
| Mapping | BCLanguages |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | acdlanguages aus singhammerITConsulting/dyce/v2.0 |
| Zieltabelle | wysa_language |
| Zeitplan | 0 */2 * * * * |
| Filter | {{lastModifiedDateTime gt %watermark%}} |
| Watermark | lastModifiedDateTime (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Wertelisten aus BC |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
code | wysa_bccode | — | — |
id | wysa_bcsystemid | — · Schlüssel | — |
name | wysa_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:
| Order | Job | API Page | Zieltabelle | Filter-Zusatz |
|---|
| 110 | countriesfrombc | acdcountryregions | wysa_country | code ne '' |
| 115 | languagesfrombc | acdlanguages | wysa_language | — |
| 120 | salutationsfrombc | acdsalutations | wysa_bcsalutation | — |
| 125 | customerdiscountgroupsfrombc | acdcustomerdiscgroups | wysa_bccustomerdiscountgroup | — |
| 135 | positionsfrombc | acdorganizationallevels | wysa_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.
3 - 120 · salutationsfrombc
Technisches Mapping des Jobs salutationsfrombc (BCSalutations).
| Eigenschaft | Wert |
|---|
| Order | 120 |
| Job | salutationsfrombc |
| Mapping | BCSalutations |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | acdsalutations aus singhammerITConsulting/dyce/v2.0 |
| Zieltabelle | wysa_bcsalutation |
| Zeitplan | 0 */2 * * * * |
| Filter | {{lastModifiedDateTime gt %watermark%}} |
| Watermark | lastModifiedDateTime (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Wertelisten aus BC |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
code | wysa_code | — | — |
description | wysa_name | — | — |
id | wysa_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:
| Order | Job | API Page | Zieltabelle | Filter-Zusatz |
|---|
| 110 | countriesfrombc | acdcountryregions | wysa_country | code ne '' |
| 115 | languagesfrombc | acdlanguages | wysa_language | — |
| 120 | salutationsfrombc | acdsalutations | wysa_bcsalutation | — |
| 125 | customerdiscountgroupsfrombc | acdcustomerdiscgroups | wysa_bccustomerdiscountgroup | — |
| 135 | positionsfrombc | acdorganizationallevels | wysa_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.
4 - 125 · customerdiscountgroupsfrombc
Technisches Mapping des Jobs customerdiscountgroupsfrombc (BCCustomerDiscountGroups).
| Eigenschaft | Wert |
|---|
| Order | 125 |
| Job | customerdiscountgroupsfrombc |
| Mapping | BCCustomerDiscountGroups |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | acdcustomerdiscgroups aus singhammerITConsulting/dyce/v2.0 |
| Zieltabelle | wysa_bccustomerdiscountgroup |
| Zeitplan | 0 */2 * * * * |
| Filter | {{lastModifiedDateTime gt %watermark%}} |
| Watermark | lastModifiedDateTime (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Wertelisten aus BC |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
code | wysa_bccode | — | — |
description | wysa_name | — | — |
id | wysa_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:
| Order | Job | API Page | Zieltabelle | Filter-Zusatz |
|---|
| 110 | countriesfrombc | acdcountryregions | wysa_country | code ne '' |
| 115 | languagesfrombc | acdlanguages | wysa_language | — |
| 120 | salutationsfrombc | acdsalutations | wysa_bcsalutation | — |
| 125 | customerdiscountgroupsfrombc | acdcustomerdiscgroups | wysa_bccustomerdiscountgroup | — |
| 135 | positionsfrombc | acdorganizationallevels | wysa_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.
5 - 130 · salespersonsfrombc
Technisches Mapping des Jobs salespersonsfrombc (BCSalesPersons).
| Eigenschaft | Wert |
|---|
| Order | 130 |
| Job | salespersonsfrombc |
| Mapping | BCSalesPersons |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | acdsalespersons aus singhammerITConsulting/dyce/v2.0 |
| Zieltabelle | wysa_bcsalesperson |
| Zeitplan | 0 */2 * * * * |
| Filter | {{lastModifiedDateTime gt %watermark%}} |
| Watermark | lastModifiedDateTime (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Verkäufer aus BC |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
id | wysa_bcsystemid | — · Schlüssel | — |
code | wysa_code | — | — |
displayName | wysa_name | — | — |
eMail | wysa_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:
| Mapping | Richtung | Operation |
|---|
BCAccounts | BC → CE | Lookup über wysa_bccodekey |
CEAccounts, CEAccountUpdates | CE → BC | LookupValue |
CEContacts, CEContactsUpdates | CE → BC | LookupValue |
CEOpportunities | CE → BC | LookupValue |
BCSalesQuotes | BC → CE | Lookup ü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.
6 - 135 · positionsfrombc
Technisches Mapping des Jobs positionsfrombc (BCPositions).
| Eigenschaft | Wert |
|---|
| Order | 135 |
| Job | positionsfrombc |
| Mapping | BCPositions |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | acdorganizationallevels aus singhammerITConsulting/dyce/v2.0 |
| Zieltabelle | wysa_bcposition |
| Zeitplan | 0 */2 * * * * |
| Filter | {{lastModifiedDateTime gt %watermark%}} |
| Watermark | lastModifiedDateTime (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Wertelisten aus BC |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
code | wysa_code | — | — |
description | wysa_name | — | — |
id | wysa_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:
| Order | Job | API Page | Zieltabelle | Filter-Zusatz |
|---|
| 110 | countriesfrombc | acdcountryregions | wysa_country | code ne '' |
| 115 | languagesfrombc | acdlanguages | wysa_language | — |
| 120 | salutationsfrombc | acdsalutations | wysa_bcsalutation | — |
| 125 | customerdiscountgroupsfrombc | acdcustomerdiscgroups | wysa_bccustomerdiscountgroup | — |
| 135 | positionsfrombc | acdorganizationallevels | wysa_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.
7 - 190 · opportunityelementsfrombc
Technisches Mapping des Jobs opportunityelementsfrombc (BCOpportunityElements).
| Eigenschaft | Wert |
|---|
| Order | 190 |
| Job | opportunityelementsfrombc |
| Mapping | BCOpportunityElements |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | acdopportunityelements aus singhammerITConsulting/dyce/v2.0 |
| Zieltabelle | product |
| Zeitplan | 0 */2 * * * * |
| Filter | {{systemModifiedAt gt %watermark%}} |
| Watermark | systemModifiedAt (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Verkaufschancen-Elemente aus BC |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
code | wysa_bccode | — · Schlüssel | — |
| — | defaultuomid | DefaultValue | = 946e49c5-b59d-41c6-b47a-da4ecbfa95fc |
| — | defaultuomscheduleid | DefaultValue | = 1b706c12-f34a-4826-8b3c-0628b5df2ba2 |
| — | productstructure | DefaultValue | = 1 |
description | description | — | — |
dimension1Code | wysa_bcdimension1code | — | — |
dimension1ValueCode | wysa_bcdimension1valuecode | — | — |
dimension2Code | wysa_bcdimension2code | — | — |
dimension2ValueCode | wysa_bcdimension2valuecode | — | — |
systemId | wysa_bcsystemid | — | — |
Alternate Key
{
"keyType": "CustomKey",
"keyName": "wysa_bccode",
"keyValues": [
{
"attributeName": "code",
"keyName": "wysa_bccode",
"rank": 1
}
],
"ignoreEmptySourceKey": false,
"keyRank": 0
}
Weitere technische Details
Drei Vorgabewerte ohne Quellfeld:
{
"Operations": [{
"Name": "DefaultValue",
"Parameters": { "DefaultValue": "946e49c5-b59d-41c6-b47a-da4ecbfa95fc" }
}]
}
| Zielfeld | Wert | Bedeutung |
|---|
defaultuomid | 946e49c5-b59d-41c6-b47a-da4ecbfa95fc | Standardeinheit — umgebungsspezifische GUID |
defaultuomscheduleid | 1b706c12-f34a-4826-8b3c-0628b5df2ba2 | Einheitengruppe — umgebungsspezifische GUID |
productstructure | 1 | Dataverse-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 - 220 · accountsnewfromce
Technisches Mapping des Jobs accountsnewfromce (CEAccounts).
| Eigenschaft | Wert |
|---|
| Order | 220 |
| Job | accountsnewfromce |
| Mapping | CEAccounts |
| Richtung | CE → BC |
| Quellverbindung | CRM_Test |
| Zielverbindung | BC_Test |
| Quelltabelle (API) | account aus BC_Test-seitig, kein API-Pfad |
| Zieltabelle | acdcontactscomp |
| Zeitplan | 0 */2 * * * * |
| Filter | JSON-Filter: IsNull(wysa_bcsystemid) UND OptionSetValue(wysa_sync2bc=799840000) |
| Watermark | — |
| Response-Job | accountsresponsefrombc |
| Fachliche Doku | Neue Firma nach BC |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
accountid | dataverseId | — · Schlüssel | — |
address1_city | city | — | — |
address1_line1 | address | — | — |
address1_line2 | address2 | — | — |
address1_postalcode | postCode | — | — |
| — | contactType | DefaultValue | = Company |
| — | salutationCode | DefaultValue | = MANDANT |
emailaddress1 | eMail | — | — |
telephone1 | phoneNumber | — | — |
websiteurl | homePage | — | — |
_wysa_address1_countryid | countryRegionCode | LookupValue | liest wysa_bccode aus wysa_country über wysa_address1_countryid |
wysa_bcname1 | displayName | — | — |
wysa_bcname2 | name2 | — | — |
_wysa_bcsalespersonid | salespersonCode | LookupValue | liest 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 } }
]
}
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.
9 - 221 · accountsresponsefrombc
Technisches Mapping des Jobs accountsresponsefrombc (BCAccountsResponse).
| Eigenschaft | Wert |
|---|
| Order | 221 |
| Job | accountsresponsefrombc |
| Mapping | BCAccountsResponse |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | acdcontactscomp aus singhammerITConsulting/dyce/v2.0 |
| Zieltabelle | account |
| Zeitplan | —, wird von accountsnewfromce über ResponseJob ausgelöst |
| Filter | {{lastModifiedDateTime gt %watermark%}} |
| Watermark | modifiedon (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Rückmeldung aus BC (Firma) |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
_accountid | accountid | ReadFromMessage · Schlüssel | aus Antwortnachricht |
id | wysa_bcsystemid | — | — |
number | wysa_bccontactnumber | — | — |
Alternate Key
{
"keyType": "PrimaryKey",
"keyName": "_accountid",
"ignoreEmptySourceKey": false,
"keyRank": 0
}
Weitere technische Details
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 Job | Order | Response-Job | Order |
|---|
accountsnewfromce | 220 | accountsresponsefrombc | 221 |
contactsnewfromce | 240 | contactsresponsefrombc | 241 |
opportunitiesnewfromce | 260 | opportunitiesresponsefrombc | 261 |
opportunityproductsnewfromce | 710 | opportunityproductsresponsefrombc | 760 |
10 - 240 · contactsnewfromce
Technisches Mapping des Jobs contactsnewfromce (CEContacts).
| Eigenschaft | Wert |
|---|
| Order | 240 |
| Job | contactsnewfromce |
| Mapping | CEContacts |
| Richtung | CE → BC |
| Quellverbindung | CRM_Test |
| Zielverbindung | BC_Test |
| Quelltabelle (API) | contact aus BC_Test-seitig, kein API-Pfad |
| Zieltabelle | acdcontacts |
| Zeitplan | 0 */2 * * * * |
| Filter | JSON-Filter: IsNull(wysa_bcsystemid) UND OptionSetValue(wysa_sync2bc=799840000) |
| Watermark | — |
| Response-Job | contactsresponsefrombc |
| Fachliche Doku | Neuer Kontakt nach BC |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
address1_city | city | — | — |
address1_line1 | address | — | — |
address1_line2 | address2 | — | — |
address1_postalcode | postCode | — | — |
contactid | dataverseId | — · Schlüssel | — |
| — | contactType | DefaultValue | = Person |
emailaddress1 | eMail | — | — |
firstname | firstName | — | — |
lastname | surname | — | — |
middlename | middleName | — | — |
mobilephone | mobilePhoneNumber | — | — |
_parentcustomerid | companyNumber | LookupValue | liest wysa_bccontactnumber aus account über parentcustomerid |
telephone1 | phoneNumber | — | — |
_wysa_address1_countryid | countryRegionCode | LookupValue | liest wysa_bccode aus wysa_country über wysa_address1_countryid |
_wysa_bcsalespersonid.wysa_code | salespersonCode | LookupValue | liest wysa_code aus wysa_bcsalesperson über wysa_bcsalespersonid |
_wysa_language.wysa_bccode | languageCode | LookupValue | liest wysa_bccode aus wysa_language über wysa_language |
_wysa_salutationbcid.wysa_code | salutationCode | LookupValue | liest 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
Alle fünf LookupValue-Operationen arbeiten mit LookupType: Attribute und
UseCache: true und unterscheiden sich nur in Nachschlagetabelle und -feld:
| Quellfeld | Nachschlagetabelle | Nachschlagefeld |
|---|
wysa_address1_countryid | wysa_country | wysa_bccode |
wysa_language | wysa_language | wysa_bccode |
wysa_salutationbcid | wysa_bcsalutation | wysa_code |
wysa_bcsalespersonid | wysa_bcsalesperson | wysa_code |
parentcustomerid | account | wysa_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.
11 - 241 · contactsresponsefrombc
Technisches Mapping des Jobs contactsresponsefrombc (BCContactsResponse).
| Eigenschaft | Wert |
|---|
| Order | 241 |
| Job | contactsresponsefrombc |
| Mapping | BCContactsResponse |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | acdcontacts aus singhammerITConsulting/dyce/v2.0 |
| Zieltabelle | contact |
| Zeitplan | —, wird von contactsnewfromce über ResponseJob ausgelöst |
| Filter | {{lastModifiedDateTime gt %watermark%}} |
| Watermark | modifiedon (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Rückmeldung aus BC (Kontakt) |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
address2 | address1_line2 | — | — |
address | address1_line1 | — | — |
city | address1_city | — | — |
_contactid | contactid | ReadFromMessage · Schlüssel | aus Antwortnachricht |
countryRegionCode | wysa_address1_countryid | Lookup | → wysa_country über wysa_bccodekey (countryRegionCode → wysa_bccode) |
id | wysa_bcsystemid | — | — |
number | wysa_bccontactnumber | — | — |
phoneNumber | telephone1 | — | — |
postCode | address1_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 Job | Order | Response-Job | Order | Felder |
|---|
accountsnewfromce | 220 | accountsresponsefrombc | 221 | 3 |
contactsnewfromce | 240 | contactsresponsefrombc | 241 | 9 |
opportunitiesnewfromce | 260 | opportunitiesresponsefrombc | 261 | 3 |
opportunityproductsnewfromce | 710 | opportunityproductsresponsefrombc | 760 | 2 |
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).
12 - 260 · opportunitiesnewfromce
Technisches Mapping des Jobs opportunitiesnewfromce (CEOpportunities).
| Eigenschaft | Wert |
|---|
| Order | 260 |
| Job | opportunitiesnewfromce |
| Mapping | CEOpportunities |
| Richtung | CE → BC |
| Quellverbindung | CRM_Test |
| Zielverbindung | BC_Test |
| Quelltabelle (API) | opportunity aus BC_Test-seitig, kein API-Pfad |
| Zieltabelle | acdopportunities |
| Zeitplan | 0 */2 * * * * |
| Filter | JSON-Filter: IsNull(wysa_bcsystemid) UND OptionSetValue(wysa_sync2bc=799840000) |
| Watermark | — |
| Response-Job | opportunitiesresponsefrombc |
| Fachliche Doku | Neue Verkaufschance nach BC |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
_URL | dynamicsSalesLink | LinkToRecord | Deep-Link (baseUrl konfiguriert) |
description | extendedDescription | — | — |
estimatedclosedate | expectedCloseDate | — | — |
estimatedvalue | expectedRevenue | — | — |
name | description | — | — |
opportunityid | dataverseId | — · Schlüssel | — |
_parentaccountid.wysa_bccontactnumber | contactCompanyNumber | LookupValue | liest wysa_bccontactnumber aus account über parentaccountid |
_parentcontactid.wysa_bccontactnumber | contactNumber | LookupValue | liest wysa_bccontactnumber aus contact über parentcontactid |
_wysa_bcsalespersonid.wysa_code | salespersonCode | LookupValue | liest 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
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:
| Quellfeld | Nachschlagetabelle | Nachschlagefeld | Zielfeld |
|---|
parentaccountid | account | wysa_bccontactnumber | contactCompanyNumber |
parentcontactid | contact | wysa_bccontactnumber | contactNumber |
wysa_bcsalespersonid | wysa_bcsalesperson | wysa_code | salespersonCode |
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.
13 - 261 · opportunitiesresponsefrombc
Technisches Mapping des Jobs opportunitiesresponsefrombc (BCOpportunitiesResponse).
| Eigenschaft | Wert |
|---|
| Order | 261 |
| Job | opportunitiesresponsefrombc |
| Mapping | BCOpportunitiesResponse |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | acdopportunities aus singhammerITConsulting/dyce/v2.0 |
| Zieltabelle | opportunity |
| Zeitplan | —, wird von opportunitiesnewfromce über ResponseJob ausgelöst |
| Filter | {{lastModifiedDateTime gt %watermark%}} |
| Watermark | lastModifiedDateTime (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Rückmeldung aus BC (Verkaufschance) |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
id | wysa_bcsystemid | — | — |
number | wysa_bcopportunitynumber | — | — |
_opportunityid | opportunityid | ReadFromMessage · Schlüssel | aus 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 Job | Order | Response-Job | Order | Felder |
|---|
accountsnewfromce | 220 | accountsresponsefrombc | 221 | 3 |
contactsnewfromce | 240 | contactsresponsefrombc | 241 | 9 |
opportunitiesnewfromce | 260 | opportunitiesresponsefrombc | 261 | 3 |
opportunityproductsnewfromce | 710 | opportunityproductsresponsefrombc | 760 | 2 |
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.
14 - 410 · accountsfrombc
Technisches Mapping des Jobs accountsfrombc (BCAccounts).
| Eigenschaft | Wert |
|---|
| Order | 410 |
| Job | accountsfrombc |
| Mapping | BCAccounts |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | acdcontactscomp aus singhammerITConsulting/dyce/v2.0 |
| Zieltabelle | account |
| Zeitplan | 0 */2 * * * * |
| Filter | {{lastModifiedDateTime gt %watermark%}} |
| Watermark | lastModifiedDateTime (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Firma aus BC übernehmen |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
address2 | address1_line2 | — | — |
address | address1_line1 | — | — |
city | address1_city | — | — |
companyNumber | parentaccountid | Lookup | → account über wysa_bccodekey (companyNumber → wysa_bccontactnumber); NULL wenn = Feld number |
countryRegionCode | wysa_address1_countryid | Lookup | → wysa_country über wysa_bccodekey (countryRegionCode → wysa_bccode) |
customerDiscountGroup | wysa_bccustomerdiscountgroupid | Lookup | → wysa_bccustomerdiscountgroup über wysa_bccodekey (customerDiscountGroup → wysa_bccode) |
customerNumber | wysa_bccustomernumber | — | — |
| — | wysa_sync2bc | DefaultValue | = 799840000 |
displayName | wysa_bcname1 | — | — |
eMail | emailaddress1 | — | — |
homePage | websiteurl | — | — |
id | wysa_bcsystemid | — | — |
name2 | wysa_bcname2 | — | — |
number | wysa_bccontactnumber | — · Schlüssel | — |
phoneNumber | telephone1 | — | — |
postCode | address1_postalcode | — | — |
salespersonCode | wysa_bcsalespersonid | Lookup | → wysa_bcsalesperson über wysa_bccodekey (salespersonCode → wysa_code) |
vendorNumber | wysa_bcvendornumber | — | — |
Alternate Key
{
"keyType": "CustomKey",
"keyName": "wysa_bccodekey",
"keyValues": [
{
"attributeName": "number",
"keyName": "wysa_bccontactnumber",
"rank": 1
}
],
"ignoreEmptySourceKey": false,
"keyRank": 0
}
Weitere technische Details
Voraussetzungen der Lookups — Land (countryRegionCode), Debitorrabattgruppe
(customerDiscountGroup) und Verkäufer (salespersonCode) setzen voraus, dass die
jeweilige Stammdatentabelle bereits gefüllt ist:
| Lookup | Zieltabelle | Voraussetzung |
|---|
| Land | wysa_country | Job countriesfrombc (110) |
| Debitorrabattgruppe | wysa_bccustomerdiscountgroup | Job customerdiscountgroupsfrombc (125) |
| Verkäufer | wysa_bcsalesperson | Job 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" }
}]
}
15 - 420 · accountsfrombcdelete
Technisches Mapping des Jobs accountsfrombcdelete (BCAccountsDelete).
| Eigenschaft | Wert |
|---|
| Order | 420 |
| Job | accountsfrombcdelete |
| Mapping | BCAccountsDelete |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | acdlogentries aus singhammerITConsulting/dyce/v2.0 |
| Zieltabelle | account |
| Zeitplan | 0 */2 * * * * |
| Filter | {{lastModifiedDateTime gt %watermark%}} and tableId eq 5050 |
| Watermark | lastModifiedDateTime (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Löschung aus BC (Firma) |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
Default | statecode | DefaultValue | = 1 |
Default | statuscode | DefaultValue | = 799840001 |
recordId | wysa_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
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.
16 - 430 · contactsfrombc
Technisches Mapping des Jobs contactsfrombc (BCContacts).
| Eigenschaft | Wert |
|---|
| Order | 430 |
| Job | contactsfrombc |
| Mapping | BCContacts |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | acdcontacts aus singhammerITConsulting/dyce/v2.0 |
| Zieltabelle | contact |
| Zeitplan | 0 */2 * * * * |
| Filter | {{lastModifiedDateTime gt %watermark%}} |
| Watermark | lastModifiedDateTime (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Kontakt aus BC übernehmen |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
address2 | address1_line2 | — | — |
address | address1_line1 | — | — |
city | address1_city | — | — |
companyNumber | parentcustomerid | Lookup | → account über wysa_bccodekey (companyNumber → wysa_bccontactnumber) |
countryRegionCode | wysa_address1_countryid | Lookup | → wysa_country über wysa_bccodekey (countryRegionCode → wysa_bccode) |
| — | wysa_sync2bc | DefaultValue | = 799840000 |
eMail | emailaddress1 | — | — |
firstName | firstname | — | — |
id | wysa_bcsystemid | — | — |
languageCode | wysa_language | Lookup | → wysa_language über wysa_bccodekey (languageCode → wysa_bccode) |
middleName | middlename | — | — |
mobilePhoneNumber | mobilephone | — | — |
number | wysa_bccontactnumber | — · Schlüssel | — |
organizationalLevelCode | wysa_bcpositionid | Lookup | → wysa_bcposition über wysa_bccodekey (organizationalLevelCode → wysa_code) |
phoneNumber | telephone1 | — | — |
postCode | address1_postalcode | — | — |
salutationCode | wysa_salutationbcid | Lookup | → wysa_bcsalutation über wysa_bccodekey (salutationCode → wysa_code) |
surname | lastname | — | — |
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
Alle fünf Lookups folgen demselben Aufbau — sie unterscheiden sich nur in Zieltabelle
und Schlüsselfeld:
| Quellfeld | Zieltabelle | Schlüsselfeld | Alternate Key |
|---|
countryRegionCode | wysa_country | wysa_bccode | wysa_bccodekey |
languageCode | wysa_language | wysa_bccode | wysa_bccodekey |
salutationCode | wysa_bcsalutation | wysa_code | wysa_bccodekey |
organizationalLevelCode | wysa_bcposition | wysa_code | wysa_bccodekey |
companyNumber | account | wysa_bccontactnumber | wysa_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.
17 - 440 · contactsfrombcdelete
Technisches Mapping des Jobs contactsfrombcdelete (BCContactsDelete).
| Eigenschaft | Wert |
|---|
| Order | 440 |
| Job | contactsfrombcdelete |
| Mapping | BCContactsDelete |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | acdlogentries aus singhammerITConsulting/dyce/v2.0 |
| Zieltabelle | contact |
| Zeitplan | 0 */2 * * * * |
| Filter | {{lastModifiedDateTime gt %watermark%}} and tableId eq 5050 |
| Watermark | lastModifiedDateTime (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Löschung aus BC (Kontakt) |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
Default | statecode | DefaultValue | = 1 |
Default | statuscode | DefaultValue | = 799840001 |
recordId | wysa_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.
18 - 450 · productsfrombcdelete
Technisches Mapping des Jobs productsfrombcdelete (BCProductsDelete).
| Eigenschaft | Wert |
|---|
| Order | 450 |
| Job | productsfrombcdelete |
| Mapping | BCProductsDelete |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | acdlogentries aus singhammerITConsulting/dyce/v2.0 |
| Zieltabelle | product |
| Zeitplan | 0 */2 * * * * |
| Filter | {{lastModifiedDateTime gt %watermark%}} and tableId eq 72077781 |
| Watermark | lastModifiedDateTime (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Produkte deaktivieren |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
Default | statecode | DefaultValue | = 1 |
Default | statuscode | DefaultValue | = 2 |
recordId | wysa_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
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
| Job | statecode | statuscode |
|---|
accountsfrombcdelete (420) | 1 | 799840001 — lösungseigen |
contactsfrombcdelete (440) | 1 | 799840001 — lösungseigen |
productsfrombcdelete (450) | 1 | 2 — Dataverse-Standard |
19 - 520 · accountupdatesfromce
Technisches Mapping des Jobs accountupdatesfromce (CEAccountUpdates).
| Eigenschaft | Wert |
|---|
| Order | 520 |
| Job | accountupdatesfromce |
| Mapping | CEAccountUpdates |
| Richtung | CE → BC |
| Quellverbindung | CRM_Test |
| Zielverbindung | BC_Test |
| Quelltabelle (API) | account aus BC_Test-seitig, kein API-Pfad |
| Zieltabelle | acdcontactscomp |
| Zeitplan | 0 */2 * * * * |
| Filter | JSON-Filter: NotNull(wysa_bcsystemid) UND OptionSetValue(wysa_sync2bc=799840000) |
| Watermark | — |
| Response-Job | — |
| Fachliche Doku | Änderungen nach BC (Firma) |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
accountid | dataverseId | — | — |
address1_city | city | — | — |
address1_line1 | address | — | — |
address1_line2 | address2 | — | — |
address1_postalcode | postCode | — | — |
emailaddress1 | eMail | — | — |
telephone1 | phoneNumber | — | — |
websiteurl | homePage | — | — |
_wysa_address1_countryid | countryRegionCode | LookupValue | liest wysa_bccode aus wysa_country über wysa_address1_countryid |
wysa_bcname1 | displayName | — | — |
wysa_bcname2 | name2 | — | — |
_wysa_bcsalespersonid | salespersonCode | LookupValue | liest wysa_code aus wysa_bcsalesperson über wysa_bcsalespersonid |
wysa_bcsystemid | id | — · 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üssel | KeyType: Filter über dataverseId | KeyType: Id über wysa_bcsystemid |
contactType | ✓ DefaultValue = Company | – |
salutationCode | ✓ DefaultValue = MANDANT | – |
| Response-Job | ✓ accountsresponsefrombc | – |
| Feldzuordnungen | 14 | 13 |
20 - 530 · contactupdatesfromce
Technisches Mapping des Jobs contactupdatesfromce (CEContactsUpdates).
| Eigenschaft | Wert |
|---|
| Order | 530 |
| Job | contactupdatesfromce |
| Mapping | CEContactsUpdates |
| Richtung | CE → BC |
| Quellverbindung | CRM_Test |
| Zielverbindung | BC_Test |
| Quelltabelle (API) | contact aus BC_Test-seitig, kein API-Pfad |
| Zieltabelle | acdcontacts |
| Zeitplan | 0 */2 * * * * |
| Filter | JSON-Filter: NotNull(wysa_bcsystemid) UND OptionSetValue(wysa_sync2bc=799840000) |
| Watermark | — |
| Response-Job | — |
| Fachliche Doku | Änderungen nach BC (Kontakt) |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
address1_city | city | — | — |
address1_line1 | address | — | — |
address1_line2 | address2 | — | — |
address1_postalcode | postCode | — | — |
contactid | dataverseId | — | — |
emailaddress1 | eMail | — | — |
firstname | firstName | — | — |
lastname | surname | — | — |
middlename | middleName | — | — |
mobilephone | mobilePhoneNumber | — | — |
_parentcustomerid | companyNumber | LookupValue | liest wysa_bccontactnumber aus account über parentcustomerid |
telephone1 | phoneNumber | — | — |
_wysa_address1_countryid | countryRegionCode | LookupValue | liest wysa_bccode aus wysa_country über wysa_address1_countryid |
_wysa_bcsalespersonid.wysa_code | salespersonCode | LookupValue | liest wysa_code aus wysa_bcsalesperson über wysa_bcsalespersonid |
wysa_bcsystemid | id | — · Schlüssel | — |
_wysa_language.wysa_bccode | languageCode | LookupValue | liest wysa_bccode aus wysa_language über wysa_language |
_wysa_salutationbcid.wysa_code | salutationCode | LookupValue | liest 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üssel | KeyType: Filter über dataverseId | KeyType: Id über wysa_bcsystemid |
contactType | ✓ DefaultValue = Person | – |
| Response-Job | ✓ contactsresponsefrombc | – |
| Feldzuordnungen | 17 | 17 |
21 - 550 · serviceobjectsfrombc
Technisches Mapping des Jobs serviceobjectsfrombc (BCServiceObjects).
| Eigenschaft | Wert |
|---|
| Order | 550 |
| Job | serviceobjectsfrombc |
| Mapping | BCServiceObjects |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | serviceObjects aus microsoft/subsBilling/v1.0 |
| Zieltabelle | wysa_bcserviceobject |
| Zeitplan | 0 */2 * * * * |
| Filter | {{lastModifiedDateTime gt %watermark%}} |
| Watermark | lastModifiedDateTime (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Abonnements aus BC |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
billToContactNo | wysa_billtocontactid | Lookup | → contact über wysa_bccodekey (billToContactNo → wysa_bccontactnumber) |
billToCompanyContactNo | wysa_billtocustomerid | Lookup | → account über wysa_bccodekey (billToCompanyContactNo → wysa_bccontactnumber) |
customerReference | wysa_customerreference | — | — |
description | wysa_productdescription | — | — |
shipToContactNo | wysa_endusercontactid | Lookup | → contact über wysa_bccodekey (shipToContactNo → wysa_bccontactnumber) |
shipToCompanyContactNo | wysa_endusercustomerid | Lookup | → account über wysa_bccodekey (shipToCompanyContactNo → wysa_bccontactnumber) |
sourceNo | wysa_productnumber | — | — |
no | wysa_name | — | — |
no | wysa_number | — · Schlüssel | — |
provisionEndDate | wysa_provisionenddate | — | — |
provisionStartDate | wysa_provisionstartdate | — | — |
quantityDecimal | wysa_quantity | — | — |
serialNo | wysa_serialnumber | — | — |
systemId | wysa_bcsystemid | — | — |
unitOfMeasure | wysa_uom | — | — |
version | wysa_version | — | — |
null | wysa_subscriptiontype | DefaultValue | = 799840000 |
Alternate Key
{
"keyType": "CustomKey",
"keyName": "wysa_numberkey",
"keyValues": [
{
"attributeName": "no",
"keyName": "wysa_number",
"rank": 1
}
],
"ignoreEmptySourceKey": false,
"keyRank": 0
}
Weitere technische Details
Vier Lookups, alle über das Feld wysa_bccontactnumber und den Alternate Key
wysa_bccodekey:
| Quellfeld | Zieltabelle | Zielfeld |
|---|
billToContactNo | contact | wysa_billtocontactid |
billToCompanyContactNo | account | wysa_billtocustomerid |
shipToContactNo | contact | wysa_endusercontactid |
shipToCompanyContactNo | account | wysa_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).
22 - 560 · servicecommitmentsfrombc
Technisches Mapping des Jobs servicecommitmentsfrombc (BCServiceCommitments).
| Eigenschaft | Wert |
|---|
| Order | 560 |
| Job | servicecommitmentsfrombc |
| Mapping | BCServiceCommitments |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | serviceCommitments aus microsoft/subsBilling/v1.0 |
| Zieltabelle | wysa_bcserviceobjectcommitment |
| Zeitplan | 0 */2 * * * * |
| Filter | {{lastModifiedDateTime gt %watermark%}} |
| Watermark | lastModifiedDateTime (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Abonnementzeilen aus BC |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
billingBasePeriod | wysa_billingbaseperiod | — | — |
billingRhythm | wysa_billingrhythm | — | — |
calculationBaseAmount | wysa_calculationbaseamount | — | — |
calculationBase | wysa_calculationbasepercent | — | — |
cancellationPossibleUntil | wysa_cancellationpossibleuntil | — | — |
contractLineNo | wysa_contractlinenumber | — | — |
contractNo | wysa_contractnumber | — | — |
description | wysa_description | — | — |
discountAmount | wysa_discountamount | — | — |
discountPctg | wysa_discountpercent | — | — |
discount | wysa_discount | OptionMapping | Werte: true→1, false→0 |
extensionTerm | wysa_extensionterm | — | — |
initialTerm | wysa_initialterm | — | — |
invoicingVia | wysa_invoicingvia | OptionMapping | Werte: Contract→799840000, Sales→799840001 |
lineNo | wysa_entrynumber | — | — |
nextBillingDate | wysa_nextbillingdate | — | — |
noticePeriod | wysa_noticeperiod | — | — |
packageCode | wysa_packagecode | — | — |
partner | wysa_partner | OptionMapping | Werte: Customer→799840000, Vendor→799840001 |
price | wysa_price | — | — |
quantityDecimal | wysa_quantity | — | — |
serviceAmount | wysa_serviceamount | — | — |
serviceEndDate | wysa_serviceenddate | — | — |
serviceObjectNo | wysa_serviceobjectid | Lookup | → wysa_bcserviceobject über wysa_numberkey (serviceObjectNo → wysa_number) |
serviceStartDate | wysa_servicestartdate | — | — |
systemId | wysa_bcsystemid | — · Schlüssel | — |
termUntil | wysa_termuntil | — | — |
Alternate Key
{
"keyType": "CustomKey",
"keyName": "wysa_bcsystemidkey",
"keyValues": [
{
"attributeName": "systemId",
"keyName": "wysa_bcsystemid",
"rank": 1
}
],
"ignoreEmptySourceKey": false,
"keyRank": 0
}
Weitere technische Details
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" }
]
}
}]
}
| Zielfeld | Zuordnung |
|---|
wysa_invoicingvia | Contract → 799840000, Sales → 799840001 |
wysa_partner | Customer → 799840000, Vendor → 799840001 |
wysa_discount | true → 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.
23 - 610 · salesquotesfrombc
Technisches Mapping des Jobs salesquotesfrombc (BCSalesQuotes).
| Eigenschaft | Wert |
|---|
| Order | 610 |
| Job | salesquotesfrombc |
| Mapping | BCSalesQuotes |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | acdsalesheaders aus singhammerITConsulting/dyce/v2.0 |
| Zieltabelle | quote |
| Zeitplan | 0 */2 * * * * |
| Filter | {{lastModifiedDateTime gt %watermark%}} and documentType eq 'Quote' |
| Watermark | lastModifiedDateTime (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Angebotskopf aus BC |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
amountIncludingVAT | wysa_bctotalamountvat | — | — |
id | wysa_bcsystemid | — | — |
number | quotenumber | — · Schlüssel | — |
opportunityNumber | opportunityid | Lookup | → opportunity über wysa_bcopportunitynumberkey (opportunityNumber → wysa_bcopportunitynumber) |
orderDate | effectivefrom | — | — |
postingDescription | name | — | — |
quoteValidUntilDate | effectiveto | — | — |
salespersonCode | wysa_bcsalespersonid | Lookup | → wysa_bcsalesperson über wysa_bccodekey (salespersonCode → wysa_code) |
sellToCompanyContactNumber | customerid | Lookup | → account über wysa_bccodekey (sellToCompanyContactNumber → wysa_bccontactnumber) |
status | wysa_bcstatus | — | — |
Alternate Key
{
"keyType": "CustomKey",
"keyName": "wysa_quotenumberkey",
"keyValues": [
{
"attributeName": "number",
"keyName": "quotenumber",
"rank": 1
}
],
"ignoreEmptySourceKey": false,
"keyRank": 0
}
Weitere technische Details
Drei Lookups, jeder über einen Alternate Key:
| Quellfeld | Zieltabelle | Schlüsselfeld | Alternate Key |
|---|
opportunityNumber | opportunity | wysa_bcopportunitynumber | wysa_bcopportunitynumberkey |
sellToCompanyContactNumber | account | wysa_bccontactnumber | wysa_bccodekey |
salespersonCode | wysa_bcsalesperson | wysa_code | wysa_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.
24 - 620 · salescalculationelementsfrombc
Technisches Mapping des Jobs salescalculationelementsfrombc (BCSalesCalculationElements).
| Eigenschaft | Wert |
|---|
| Order | 620 |
| Job | salescalculationelementsfrombc |
| Mapping | BCSalesCalculationElements |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | acdsalescalculationelements aus singhammerITConsulting/dyce/v2.0 |
| Zieltabelle | quotedetail |
| Zeitplan | 0 */2 * * * * |
| Filter | {{systemModifiedAt gt %watermark%}} and documentType eq 'Quote' |
| Watermark | systemModifiedAt (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Angebotspositionen aus BC |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
| — | uomid | DefaultValue | = 946e49c5-b59d-41c6-b47a-da4ecbfa95fc |
description | description | — | — |
documentNo | quoteid | Lookup | → quote über wysa_quotenumberkey (documentNo → quotenumber) |
lineAmountInclVATLCY | wysa_bcamountvat | — | — |
lineAmountLCY | wysa_bcamount | — | — |
opportunityElementCode | productid | Lookup | → product über wysa_bccode (opportunityElementCode → wysa_bccode) |
quantity | quantity | — | — |
systemId | wysa_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
| Quellfeld | Zieltabelle | Schlüsselfeld | Alternate Key |
|---|
documentNo | quote | quotenumber | wysa_quotenumberkey |
opportunityElementCode | product | wysa_bccode | wysa_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).
25 - 621 · salescalculationelementsfrombcdelete
Technisches Mapping des Jobs salescalculationelementsfrombcdelete (BCSalesCalculationElementsDelete).
| Eigenschaft | Wert |
|---|
| Order | 621 |
| Job | salescalculationelementsfrombcdelete |
| Mapping | BCSalesCalculationElementsDelete |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | acdlogentries aus singhammerITConsulting/dyce/v2.0 |
| Zieltabelle | quotedetail |
| Zeitplan | 0 */2 * * * * |
| Filter | {{lastModifiedDateTime gt %watermark%}} and tableId eq 72077783 and operation eq 'DELETE' |
| Watermark | lastModifiedDateTime (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Löschung Angebotsposition aus BC |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
recordId | wysa_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.
26 - 625 · activatesalesquotesfrombc
Technisches Mapping des Jobs activatesalesquotesfrombc (BCSalesQuotesActivate).
| Eigenschaft | Wert |
|---|
| Order | 625 |
| Job | activatesalesquotesfrombc |
| Mapping | BCSalesQuotesActivate |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | acdlogentries aus singhammerITConsulting/dyce/v2.0 |
| Zieltabelle | quote |
| Zeitplan | 0 */3 * * * * |
| Filter | {{lastModifiedDateTime gt %watermark%}} and tableId eq 36 and operation eq 'TRANSFERRED' |
| Watermark | lastModifiedDateTime (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Statuswechsel Angebot aus BC |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
Default | statecode | DefaultValue | = 2 |
operation | wysa_bcstatus | — | — |
recordId | wysa_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
{
"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.
27 - 690 · salesquotesfrombcdelete
Technisches Mapping des Jobs salesquotesfrombcdelete (BCSalesQuotesDelete).
| Eigenschaft | Wert |
|---|
| Order | 690 |
| Job | salesquotesfrombcdelete |
| Mapping | BCSalesQuotesDelete |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | acdlogentries aus singhammerITConsulting/dyce/v2.0 |
| Zieltabelle | quote |
| Zeitplan | 0 */2 * * * * |
| Filter | {{lastModifiedDateTime gt %watermark%}} and tableId eq 36 and operation eq 'DELETE' |
| Watermark | lastModifiedDateTime (Typ datetime) |
| Response-Job | — |
| Action | NewUpdate (kein Delete) |
| Fachliche Doku | Stornierung Angebot aus BC |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
recordId | wysa_bcsystemid | — · Schlüssel | — |
| — | statecode | DefaultValue | = 3 (Geschlossen) |
| — | statuscode | DefaultValue | = 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
| Order | Job | Zieltabelle | Action | Wirkung |
|---|
| 420 | accountsfrombcdelete | account | — | deaktivieren |
| 440 | contactsfrombcdelete | contact | — | deaktivieren |
| 450 | productsfrombcdelete | product | — | deaktivieren |
| 621 | salescalculationelementsfrombcdelete | quotedetail | Delete | löschen |
| 690 | salesquotesfrombcdelete | quote | — | 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.
28 - 710 · opportunityproductsnewfromce
Technisches Mapping des Jobs opportunityproductsnewfromce (CEOpportunityProducts).
| Eigenschaft | Wert |
|---|
| Order | 710 |
| Job | opportunityproductsnewfromce |
| Mapping | CEOpportunityProducts |
| Richtung | CE → BC |
| Quellverbindung | CRM_Test |
| Zielverbindung | BC_Test |
| Quelltabelle (API) | opportunityproduct aus BC_Test-seitig, kein API-Pfad |
| Zieltabelle | acdopportunitycalculationelements |
| Zeitplan | 0 */3 * * * * |
| Filter | JSON-Filter: IsNull(wysa_bcsystemid) UND OptionSetValue(wysa_synctobc=799840000) |
| Watermark | — |
| Response-Job | opportunityproductsresponsefrombc |
| Fachliche Doku | Neue Verkaufschancen-Position nach BC |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
description | description | — | — |
wysa_margin | profitLCY | — | — |
wysa_bcamount | amountLCY | — | — |
wysa_bcamountvat | amountIncludingVATLCY | — | — |
_opportunityid.wysa_bcopportunitynumber | opportunityNo | LookupValue | liest wysa_bcopportunitynumber aus opportunity über opportunityid (kein Cache) |
_productid.wysa_bccode | opportunityElementCode | LookupValue | liest wysa_bccode aus product über productid |
quantity | quantity | — | — |
wysa_bcsystemid | systemId | — · Schlüssel | — |
Alternate Key
{
"keyType": "Id",
"keyName": "wysa_bcsystemid",
"ignoreEmptySourceKey": false,
"keyRank": 0
}
Weitere technische Details
Beide Lookups mit LookupType: Attribute:
| Quellfeld | Nachschlagetabelle | Nachschlagefeld | Zielfeld |
|---|
opportunityid | opportunity | wysa_bcopportunitynumber | opportunityNo |
productid | product | wysa_bccode | opportunityElementCode |
{
"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.
29 - 750 · opportunityproductsupdatesfromce
Technisches Mapping des Jobs opportunityproductsupdatesfromce (CEOpportunityProductsUpdates).
| Eigenschaft | Wert |
|---|
| Order | 750 |
| Job | opportunityproductsupdatesfromce |
| Mapping | CEOpportunityProductsUpdates |
| Richtung | CE → BC |
| Quellverbindung | CRM_Test |
| Zielverbindung | BC_Test |
| Quelltabelle (API) | opportunityproduct aus BC_Test-seitig, kein API-Pfad |
| Zieltabelle | acdopportunitycalculationelements |
| Zeitplan | 0 */3 * * * * |
| Filter | JSON-Filter: NotNull(wysa_bcsystemid) UND OptionSetValue(wysa_synctobc=799840000) |
| Watermark | — |
| Response-Job | — |
| Fachliche Doku | Änderungen nach BC (Verkaufschancen-Position) |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
description | description | — | — |
wysa_margin | profitLCY | — | — |
wysa_bcamount | amountLCY | — | — |
wysa_bcamountvat | amountIncludingVATLCY | — | — |
_opportunityid | opportunityNo | LookupValue | liest wysa_bcopportunitynumber aus opportunity über opportunityid (kein Cache) |
_productid | opportunityElementCode | LookupValue | liest wysa_bccode aus product über productid |
quantity | quantity | — | — |
wysa_bcsystemid | id | — · 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-Zielfeld | systemId | id |
| Response-Job | ✓ opportunityproductsresponsefrombc | – |
| Feldzuordnungen | 8 | 8 |
Beide Lookups sind identisch zu denen in opportunityproductsnewfromce:
| Quellfeld | Nachschlagetabelle | Nachschlagefeld |
|---|
opportunityid | opportunity | wysa_bcopportunitynumber |
productid | product | wysa_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.
30 - 760 · opportunityproductsresponsefrombc
Technisches Mapping des Jobs opportunityproductsresponsefrombc (BCOpportunityProductsResponse).
| Eigenschaft | Wert |
|---|
| Order | 760 |
| Job | opportunityproductsresponsefrombc |
| Mapping | BCOpportunityProductsResponse |
| Richtung | BC → CE |
| Quellverbindung | BC_Test |
| Zielverbindung | CRM_Test |
| Quelltabelle (API) | acdopportunitycalculationelements aus singhammerITConsulting/dyce/v2.0 |
| Zieltabelle | opportunityproduct |
| Zeitplan | —, wird von opportunityproductsnewfromce über ResponseJob ausgelöst |
| Filter | {{lastModifiedDateTime gt %watermark%}} |
| Watermark | lastModifiedDateTime (Typ datetime) |
| Response-Job | — |
| Fachliche Doku | Rückmeldung aus BC (Verkaufschancen-Position) |
Feldzuordnung
| Quellfeld | Zielfeld | Operation | Details |
|---|
systemId | wysa_bcsystemid | — | — |
_opportunityproductid | opportunityproductid | ReadFromMessage · Schlüssel | aus 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.