Synchronisation in wenigen Schritten individuell erweitern

Seit einigen Wochen lässt sich die Synchronisation zwischen Business Central und Sales in wenigen Schritten erweitern. Dies funktioniert sowohl mit einzelnen Feldern, die in Standardtabellen hinzugefügt wurden, als auch mit gänzlich neuen Tabellen und deren Feldern.

1.1     Felder in Sales und Business Central erstellen

In Sales neue Felder in einer Entität anlegen damit diese ggf. für die Synchronisation berücksichtigt werden können.

Evtl. in Business Central ebenfalls neue Felder oder neue Tabellen erstellen, wenn diese mit Sales synchronisiert werden sollen.

1.2      Unterschiede in Sales/BC ermitteln und Tableextension erstellen

Folgendes Powershell Script ausführen:

USERNAME, PROJEKTORDNER, CRMNAME entsprechend ersetzen. Die im ersten Schritt angepasste CRM/Sales Entität ersetzen im Script  ($Entities).
Gegebenenfalls den Pfad zur altpgen.exe anpassen.
(Der Code zum kopieren ist im Anhang)

Das Ausführen dieses Scripts macht einen Abgleich zwischen dem Entitätstand in CRM/Sales und den entsprechenden Tabellen in Business Central.
Außerdem wird automatisch eine Table Extension durch das Script erstellt, welche die neuen Felder in CRM/Sales beinhaltet.

Die Felder mit dem Prefix „new_“ stellen hier die händisch erstellten Felder in CRM/Sales dar.

1.1     Felder der automatischen Synchronisationseinrichtung hinzufügen

In Business Central wird eine Codeunit mit einem Eventsubscriber benötigt.
Hier besteht nun die Möglichkeit eigene Tabellen dem CRM/Sales Mapping, aber auch bestehende Tabellen um weitere Felder zu erweitern.

Der Eventsubscriber wird getriggert, wenn die CRM Synchronisationseinstellungen zurückgesetzt werden.
In dem Aufruf lassen sich komplette Tabellen der Synchronisation hinzufügen, aber auch nur einzelne Felder von bereits synchronisierten Tabellen ergänzen.

Die Hilfsfunktion „InsertIntegrationFieldMapping“ fügt eine Verbindung eines BC und eines CRM/Sales Felds einer Tabelle/Entität hinzu.
Die Hilfsfunktion „InsertIntegrationTableMapping“ fügt eine beliebige Tabelle der Integrationstabellen hinzu.
Der Code zum kopieren ist im Anhang.

1.1     Synchronisation Triggern in Business Central

Damit die hinzugefügten Tabellen nun auch von der CRM Synchronisation berücksichtigt werden, muss die Synchronisation einmal zurückgesetzt werden.
Dafür wird die Seite „Common Data Service: Verbindungseinrichtung“ geöffnet und folgende Action ausgeführt: „Standard-Synchronisierungskonfiguration verwenden“.

Sobald die Konfiguration zurückgesetzt wurde, erscheinen die eigens hinzugefügten Felder (und Tabellen) in der Integrationstabellenzuordnung:

Anhang: Powershell Script zum Kopieren:

$ALProjectpath = “C:\Users\WINUSERNAME\Desktop\PROJEKTNAME”

$PackageCacheSymbolsPath = “C:\Users\WINUSERNAME\Desktop\PROJEKTNAME\.alpackages”

$CDSServiceURL = “https://CRMNAME.crm4.dynamics.com”

$Entities = “account”

$altpgen = “C:\Users\WINUSERNAME\.vscode\extensions\ms-dynamics-smb.al-6.1.381323\bin\altpgen.exe”

$BaseID = 50140

$arg = “-project:$ALProjectpath -packagecachepath:$PackageCacheSymbolsPath -serviceuri:$CDSServiceURL -entities:$Entities -baseid:$BaseID”

$command = New-Object “Diagnostics.ProcessStartInfo”

$command.FileName = $altpgen

$command.Arguments = $arg

$command.UseShellExecute = $false

[diagnostics.process]::start($command)