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.

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→→

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.

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.

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.

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.

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.

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.

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 - 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.

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

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.

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).

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.

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.

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" }
  }]
}

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.

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.

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.

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

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

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

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).

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.

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.

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).

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.

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.

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.

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.

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.

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.