Wie synchronisiert man eine Vor-Ort-Datenbank mit Dynamics 365 Online?

Ana Neto Neuigkeiten zum Unternehmen, Produkte und Lösungen, Technisch 3 Kommentare

Artikel zuletzt aktualisiert am: 05. Mai 2020

Ein wachsendes Unternehmen verwendet Microsoft Dynamics CRM vor Ort, integriert mit seinem ERP (Dynamics NAV), SharePoint und einem Buchhaltungssystem. Sicherlich sehen sie die Vorteile eines Umstiegs auf D365 online und die Azure-Cloud. Aber Microsoft stellt keine praktische Lösung zur Verfügung, um die lokalen Datenbanken von Dynamics CRM mit Dynamics 365 online zu synchronisieren.If Microsoft hilft nicht, wie können sie Daten mit Dynamics 365 synchronisieren? Hier ist ihre Lösung zur Verbindung mit der Dynamics 365-Datenbank.

Verschieben Sie Dynamics CRM On-Prem auf D365 Online

Obwohl es immer noch möglich ist, eine Dynamics 365 Einsatz vor OrtDie Migration von Microsoft Dynamics CRM on-premises zu Dynamics 365 online scheint heutzutage für die meisten Unternehmen attraktiver zu sein.

Wenn sie Dynamics 365 online gegen on premise betrachten, sehen sie das Software as a Service (SaaS)-Modell von Dynamics 365 online bringt klare Vorteile:

  • Sie müssen weder Hardware oder Infrastruktur kaufen, noch müssen Sie diese warten;
  • Die Software wird in der Regel im Rahmen eines fortlaufenden Pay-as-you-go-Modells lizenziert und nicht in Form eines großen einmaligen Kaufs pro Sitzplatz;
  • SaaS bietet oft einen universellen Zugang, der es Ihnen ermöglicht, von jedem Gerät (Desktop, Laptop, Mobiltelefon) von jedem Ort mit Internetanschluss aus auf die Software zuzugreifen;
  • Der Anfangspreis ist in der Regel erheblich niedriger als beim Kauf von Ausrüstung und Software vor Ort;
  • Hochverfügbarkeits-SLA (d. h. Microsoft Dynamics 365 99.9% Betriebszeit-SLA)

Die Synchronisierung von Vor-Ort-Datenbanken mit Dynamics 365 online sollte also ziemlich einfach sein, nicht wahr?

Im Idealfall können Sie für die Migration von Microsoft Dynamics CRM On-Premises nach D365 online die Daten direkt vom lokalen Microsoft Dynamics CRM SQL-Datenbank-Backend in die entfernte Microsoft D365 SQL-Datenbank übertragen. Und wenn Sie zufälligerweise bereits über D365 verfügen und Dynamics 365 On-Premises auf Online migrieren möchten, sollte die Migration noch unkomplizierter sein.

In der Praxis ist es jedoch nicht so einfach.

Was Sie von Microsoft erhalten, wenn Sie online zu Dynamics 365 wechseln

Um Kunden bei der Implementierung von Microsoft-Cloud-Lösungen zu unterstützen, bietet Microsoft derzeit Support über die FastTrack-Seite an. Kunden mit berechtigten Abonnements für Microsoft 365, Dynamics 365 oder Azure können FastTrack während der Laufzeit ihres Abonnements ohne zusätzliche Kosten nutzen (Link am Ende des Artikels). Sie müssen die aktuellen Berechtigungskriterien für das, was Sie zu migrieren versuchen, überprüfen. Microsoft legt manchmal die Anzahl der Plätze zugrunde, manchmal die Einnahmen.

Im April 2019 veröffentlichte Microsoft außerdem "Microsoft Dynamics CRM on-premises to Dynamics 365 Online Migration", ein 45-seitiges PDF-Dokument, in dem beschrieben wird, was Sie tun müssen (Download-Link am Ende des Artikels). In diesem Dokument gestehen sie, dass "bis vor kurzem kein Mechanismus zur Verfügung stand, mit dem Kunden ihre Vor-Ort-Bereitstellung problemlos auf Dynamics 365 (online) umstellen konnten".

Probleme bei der Vor-Ort-Synchronisierung mit Online-Datenbanken

Sie denken, die ideale Lösung wäre, eine Dynamics 365-Datenbanksynchronisierung mit Ihrem Dynamics CRM vor Ort zu finden.

Das Problem ist, dass im Allgemeinen die Offenlegung von Backend-Datenbanken von SaaS-Diensten nach außen als schlechte Praxis gilt und erhebliche Sicherheitsrisiken mit sich bringen kann. Daher bietet Microsoft keinen Online-Zugriff auf die Back-End-Datenbank von D365 an. Stattdessen bietet Microsoft für die Online-Dateninteraktion mit D365 die offiziellen API-Dienste an.

API-Dienste bieten den Vorteil, dass interne Geschäftsregeln und -zwänge nicht verletzt werden. Auf diese Weise stellen die API-Dienste sicher, dass Client-Anwendungen die Leistung nicht beeinträchtigen. Darüber hinaus tragen sie dazu bei, die Datenintegrität und Konsistenz der Back-End-Datenbank zu erhalten.
Die Entwicklung von Prozessen zur Datenmanipulation über APIs erfordert Programmierkenntnisse und Zeit. Insbesondere Zeit, um sich in die Dokumentation zu vertiefen, um die richtigen Parameter einzustellen und die entsprechenden Aufrufe an die Methoden oder Funktionen zu machen, die von solchen Schnittstellen bereitgestellt werden.

Was wäre, wenn Sie einfach Ihre SQL-Kenntnisse nutzen und mit der D365-API interagieren könnten, wie Sie es mit einem normalen DBMS (Datenbankmanagementsystem) tun würden?

Was wäre, wenn Sie Dynamics 365 einfach die Datenbank mit SQL Server Management Studio synchronisieren lassen könnten?

Verbindung mit D365 Online von einem lokalen DBMS oder einer Client-Anwendung aus

Willkommen toD365 Database Sync Solution! Hierbei handelt es sich um eine spezifische Lösung für die Synchronisierung von lokalen Datenbanken mit der D365-Wolke. Sie basiert auf der Integrationsplattform Connect Bridge von Connecting Software.

Connect Bridge übersetzt die ANSI-Standard-SQL-Syntax in die entsprechenden API-Aufrufe. Indem sichergestellt wird, dass der Datenzugriff über API-Aufrufe erfolgt (obwohl Sie sich darüber keine Gedanken machen müssen), bleibt die Integrität Ihres Zielsystems gesichert. Außerdem erhalten Sie die einfache Kommunikation mit jedem Zielsystem über die Standard-Anweisungen SELECT, INSERT, UPDATE und DELETE.

Daher können Sie sich von Ihrem lokalen DBMS oder einer beliebigen Client-Anwendung aus online mit D365 verbinden und Daten in D365 eingeben.

Für Unternehmen, die von Dynamics CRM on-prem auf D365 online migrieren, ist es besonders praktisch in Situationen, in denen sie ganze Prozesse gegen die SQL-Datenbank on-prem schreiben ließen. Glücklicherweise können sie jetzt wiederverwendet werden, indem sie Connect Bridge in ihr Portfolio aufnehmen.

Jetzt ist es Zeit für ein praktisches Beispiel.

Von jeder Datenbank zu Dynamics 365 Online

In diesem Beispiel verwenden wir die berühmte Adventure Works DW (Datawarehouse)-Datenbank von Microsoft (hier herunterladen). Wir zeigen Ihnen, wie Sie Ihre bestehenden Prozesse einfach mit Microsoft Dynamics 365 Online integrieren können (Infos hier) unter Verwendung der Connect Bridge-Plattform.

Wenn Sie SSMS verwenden (SQL Server-Verwaltungsstudio), um Ihre SQL Server-Datenbank zu verwalten, können Sie das Schema der Datenbank im Objekt-Explorer-Fenster sehen.

Schema der Datenbank im Fenster Objekt-Explorer

Brückenplattform verbinden ermöglicht es Ihnen, über Konnektoren mühelos Linked Server-Verbindungen zu beliebigen Zielsystemen zu erstellen. Es sind mehr als 400 Konnektoren verfügbar. Wir werden uns auf den Dynamics 365-Konnektor konzentrieren. Nachstehend finden Sie eine Auswahl der Konnektoren im Bereich CRM/ERP/Buchhaltung.

Konnektoren - Bereich CRM / ERP / Buchhaltung

Unten finden Sie die bereits in SSMS erstellte Linked-Server-Verbindung.

Bereits in SSMS erstellte verknüpfte Server-Verbindung

Beachten Sie, dass wir den verlinkten Server absichtlich connection  genannt haben.D365_CRM.And, durch Erweitern des Kataloge-Knotens in der TreeView können wir das gesamte von Dynamics 365 bereitgestellte Schema sehen, so wie Sie es auch beim Zugriff auf eine herkömmliche Datenbank sehen würden.

Damit sind Sie in der Lage, jede Art von Integration zu erstellen oder bestehende Prozesse unter Nutzung der Benutzerfreundlichkeit anzupassen.

Anwendbarkeit der On-prem für die D365 Cloud Sync-Lösung

Jetzt fragen Sie sich vielleicht: Warum sollte ich das überhaupt tun müssen?

Hier sind zwei häufige Szenarien, auf die Sie sich beziehen können.

Szenario 1:

Ich arbeite für ein Unternehmen, das Microsoft Dynamics CRM On-Premises verwendet, und wir sind dabei, auf Microsoft Dynamics 365 Online zu migrieren. Wir haben mehrere Integrationen direkt von unseren SQL Server-Datenbanken in die SQL Server-Datenbank von Microsoft Dynamics CRM On-Premises.

Aber ich kann keine direkte Verbindung mit der Microsoft Dynamics 365 Online-Datenbank herstellen:

  • Werde ich alle meine Prozesse mit dem Dynamics CRM SDK von Microsoft von Grund auf neu erstellen müssen?
  • Werde ich alle meine Prozesse mit der Web-API von Grund auf neu erstellen müssen?
  • Muss ich C# lernen, um all dies zu tun?

Szenario 2:

Ich arbeite für ein Unternehmen, das ein proprietäres ERP-System mit einer SQL-Server-Datenbank als Backend hat. Wir haben uns für Microsoft Dynamics 365 CRM als unser Kundenbeziehungsmanagementsystem entschieden.

Wir möchten in der Lage sein, das CRM mit vorhandenen Daten aus unserem ERP-System auf automatisierte Weise zu füllen und beide Seiten konsistent zu halten.

Dies manuell zu tun scheint fast unmöglich, da es sich um Zehntausende von Datensätzen pro Entität handelt (Konten, Kontakte, Produkte, um nur einige zu nennen). Ausserdem ist es bequem, mit der Sprache SQL (Structured Query Language) zu arbeiten.

Wir haben jedoch keine tiefgreifende Erfahrung mit anderen Programmiersprachen und Frameworks (C#, Web API's, Rest Services, etc.):

  • Werden wir ein Beratungsunternehmen beauftragen müssen, das dies für uns erledigt?
  • Werde ich von dieser Beratungsfirma abhängig sein, wenn es darum geht, neue Funktionen beizubehalten und hinzuzufügen, wenn sich mein Unternehmen ändert oder wächst?

Dankenswerterweise lautet die Antwort auf alle diese Fragen nein. An diesem Punkt könnte die Verwendung des obigen Beispiels ein Glockenläuten sein.

Mit dem vorgestellten Ansatz können Sie Ihre vorhandenen Fähigkeiten und Prozesse massiv nutzen.

Sind Sie noch nicht überzeugt? Sehen Sie sich doch das nachstehende Schritt-für-Schritt-Beispiel an.

Befüllen von Dynamics 365 Online-Konten aus der Adventure Works-Datenbank Tabelle DimCustomer.

Vorbereitung
Erstellen Sie die folgenden Auslöser:

–*****************************************************************************

SCHAFFEN TRIGGER [dbo].[OnDimKundenBeilage] ON [dbo].[DimKunde] NACH EINFÜGEN

AS

BEGINN

       SET                               NOKONTO ON

 

       ERKLÄRUNG @SQL                      VARCHAR(255)

       ERKLÄRUNG @KontoId                VARCHAR(255)

       ERKLÄRUNG @Vorname                VARCHAR(255)

       ERKLÄRUNG @Nachname                 VARCHAR(255)

       ERKLÄRUNG @MittlererName               VARCHAR(255)

      

       AUSWAHL @Vorname       = [Vorname],

              @Nachname        = [Nachname],

              @MittlererName      = [MittlererName]

       VON EINGESETZT;

       AUSWAHL @SQL = FORMATMITTEILUNG('IN DEN KONTO (Name) WERTE EINFÜGEN("%s"); SELECT SCOPE_IDENTITY();'.,

       @Vorname + ‘-‘ + ‘-‘ + @Nachname)

      

       SCHAFFEN TABELLE #KontoId(ID VARCHAR(255))

       EINFÜGEN #KontoId

       EXEC(@SQL) AT D365_CRM

 

       AUSWAHL @KontoId = ID von #KontoId

       AKTUALISIEREN DimKunde SET KundenAlternativeSchlüssel = @KontoId wo Vorname = @Vorname und MittlererName = @MittlererName und Nachname = @Nachname

 

       DRUCKEN @Vorname + ‘ ‘ + @MittlererName + ‘ ‘ + @Nachname;

END

–*****************************************************************************

SCHAFFEN TRIGGER [dbo].[OnDimKundenUpdate] ON [dbo].[DimKunde] NACH AKTUALISIEREN

AS

BEGINN

       SET                               NOKONTO ON

 

       ERKLÄRUNG @SQL                      VARCHAR(255)

       ERKLÄRUNG @KontoId                VARCHAR(255)

       ERKLÄRUNG @Vorname                VARCHAR(255)

       ERKLÄRUNG @Nachname                 VARCHAR(255)

       ERKLÄRUNG @MittlererName               VARCHAR(255)

      

       AUSWAHL @Buchhaltung-Id       = [KundenAlternativschlüssel],

              @Vorname       = [Vorname],

              @Nachname        = [Nachname],

              @MittlererName      = [MittlererName]

       VON EINGESETZT;

 

       AUSWAHL @SQL = FORMATMITTEILUNG('AKTUALISIERUNG KONTO SET Name="%s" WHERE ACCOUNTID="%s"'., @Vorname + ‘-‘ + ‘-‘ + @Nachname, @KontoId)

       EXEC(@SQL) AT D365_CRM;

       DRUCKEN @Vorname + ‘ ‘ + @MittlererName + ‘ ‘ + @Nachname;

 

END


Ihr SSMS-Objekt-Explorer-Fenster sollte jetzt 2 neue Auslöser wie folgt enthalten:

zwei neue Auslöser im SSMS-Objekt-Explorer-Fenster

Öffnen Sie Ihre Dynamics 365 Online-Instanz und navigieren Sie zum Modul Vertrieb -> Konten

Dynamik 365 Konten

Prüfung:

Öffnen Sie in SSMS ein neues Abfragefenster und fügen Sie Folgendes ein:


EINFÜGEN INTO [AdventureWorksDW].[dbo].[DimKunde] (Vorname, MittlererName, Nachname, KundenAlternativeSchlüssel) Werte ('ABC-Technologie'., ,GMB, 'CT0001'.);

EINFÜGEN INTO [AdventureWorksDW].[dbo].[DimKunde] (Vorname, MittlererName, Nachname, KundenAlternativeSchlüssel) Werte (Billy Wohltätigkeitsorganisation, ,'SA'., 'CT0002'.);

EINFÜGEN INTO [AdventureWorksDW].[dbo].[DimKunde] (Vorname, MittlererName, Nachname, KundenAlternativeSchlüssel) Werte (Kater, ,ORG, 'CT0003'.);

 

AUSWAHL * VON DimKunde WO Vorname = 'ABC-Technologie'.;

AUSWAHL * VON DimKunde WO Vorname = Billy Wohltätigkeitsorganisation;

AUSWAHL * VON DimKunde WO Vorname = Kater;


Führen Sie die Skripte aus, indem Sie F5 oder die Schaltfläche Ausführen in SSMS drücken.

Sie sollten nun 3 zusätzliche Datensätze in die DimCustomer-Tabelle eingefügt haben.

drei zusätzliche Datensätze, die in die DimCustomer-Tabelle eingefügt wurden

Navigieren Sie zurück zu Ihrem Dynamics 365 Sales -> Accounts und aktualisieren Sie das Bild. Volltreffer!

drei neue Konten in Dynamics 365 erstellt

3 neue Konten wurden in Dynamics 365 erstellt, cool oder?

Aber warten Sie, in der Tabelle DimCustomer hat das Feld CustomerAlternateKey eine seltsame Nummer. Es sind nicht die Werte, die wir an erster Stelle eingefügt haben.

Stattdessen haben wir die eindeutige ID des in Dynamics 365 generierten Kontos. Wie ist das möglich?

Wenn Sie sich den Trigger OnDimCustomerInsert genau ansehen, werden Sie feststellen, dass SELECT SCOPE_IDENTITY(); für die Rückgabe der Konto-ID verantwortlich ist, die zur Aktualisierung der Tabelle DimCustomer verwendet wird.

Das wird entscheidend sein, um Aktualisierungen an bestehenden Konten in Dynamics 365 durchzuführen, wenn ein Datensatz in der Tabelle DimCustomer geändert wird.

Um unseren Standpunkt zu beweisen, aktualisieren Sie die Datensätze, die durch Ausführen des folgenden Codes in SSMS erstellt wurden:

AKTUALISIEREN [AdventureWorksDW].[dbo].[DimKunde] SET Nachname = LTD WO KundenAlternativeSchlüssel = 'Konto(9a1bc5cb-6ad7-e811-a96f-000d3a2cb90b)'.;

ANMERKUNG: ERSETZEN SIE DIE ZEICHENFOLGE Konto(9a1bc5cb-6ad7-e811-a96f-000d3a2cb90b) MIT DEN IN IHRER UMGEBUNG GENERIERTEN WERTEN.

Nach Ausführung der Aktualisierungen für die 3 Konten ist hier das Ergebnis in Dynamics 365.

Dynamics 365 Konten nach Ausführung von Aktualisierungen

Wie süß!

Schlussfolgerung

Die obigen Beispiele sind sehr einfach, es ist jedoch nicht schwer, sich die Vorteile eines solchen Ansatzes vorzustellen.

  • Die Aufrechterhaltung des Prozesses ist zentralisiert und isoliert
  • Die Verbesserung des Prozesses durch Modifizierung der Auslöser ist ein Kinderspiel
  • Es besteht keine Notwendigkeit, eine neue Technologie / Programmiersprache zu erlernen

Das war's. Ich hoffe, es hat Ihnen gefallen.

Wenn Sie Kommentare oder Vorschläge haben, schreiben Sie sie in das untenstehende Feld, und wir werden Ihnen so schnell wie möglich antworten.

Ich hoffe, Sie haben genauso viel Spaß mit der Connect Bridge-Plattform, wie ich diesen Artikel geschrieben habe.

Warum Kunden Connect Bridge verwenden

Sehen Sie sich ein kurzes Video an, um dies herauszufinden:

Connect Bridge-Präsentationsvideo

Artikel zuletzt aktualisiert am: 05. Mai 2020

Ana Neto - Technische Beraterin, Autorin

Ana Neto
technical Berater bei Connecting Software

Autor:

Ich bin seit 1997 als Software-Ingenieur tätig, mit einer neueren Liebe zum Schreiben und öffentlichen Reden.  Haben Sie Fragen oder Anmerkungen zu diesem Beitrag oder zu Connect Bridge? Ich würde mich über Ihr Feedback freuen!

 ana@connecting-software.com


Beitragender: Jefferson Kenji Takahashi, MBA

Anmerkungen 3

  1. Sieht interessant aus - wie sieht es mit der Durchsetzung von Geschäftsregeln aus? z.B. haben wir den Bedarf, Transaktionen von unserem POS (Daten in SQL-Tabellen) in Business Central zu bekommen - wie sieht es also mit dem Anwendungsfall aus, wenn der Verkauf einen Kunden und/oder ein Produkt betrifft, das in D365 nicht existiert?

  2. Post
    Autor

    Hallo Paul,

    Wenn Sie die Daten, die Sie von Ihrem POS haben, in den SQL-Tabellen abrufen können und diese einer Struktur folgen, die Sie verstehen können, dann können Sie Connect Bridge um alles in Business Central zu bekommen. Wenn der Verkauf einen Kunden und/oder ein Produkt betrifft, der/das in D365 nicht existiert, müssen Sie entscheiden, was zu tun ist, z.B. könnten Sie einen generischen Kunden oder ein generisches Produkt verwenden oder Sie könnten neue Kunden oder Produkte spontan anlegen.

    Wir werden uns über die von Ihnen angegebene E-Mail mit Ihnen in Verbindung setzen, um diese Option mit Ihnen zu prüfen.

    Ana Neto

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.