Comment synchroniser la base de données on-prem avec Dynamics 365 en ligne

Ana Neto Nouvelles de l'entreprise, Produits et solutions, Technique 3 Commentaires

Article mis à jour le : 05 mai 2020

Une entreprise en pleine croissance utilise Microsoft Dynamics CRM sur site, intégré à son ERP (Dynamics NAV), SharePoint et un système de comptabilité. Bien sûr, ils voient les avantages de passer à D365 en ligne et au nuage Azure. Mais Microsoft ne fournit pas de solution pratique pour synchroniser les bases de données de Dynamics CRM sur site avec Dynamics 365 en ligne.If Microsoft n'aide pas, comment peuvent-ils synchroniser les données avec Dynamics 365 ? Voici leur solution pour se connecter à la base de données Dynamics 365.

Déplacer Dynamics CRM On-prem vers D365 Online

Bien qu'il soit toujours possible d'avoir un Dynamics 365 sur le déploiement des locauxLa migration de Microsoft Dynamics CRM sur site vers Dynamics 365 en ligne semble plus attrayante pour la plupart des entreprises de nos jours.

Lorsqu'ils comparent le Dynamics 365 en ligne avec le Dynamics 365 sur place, ils constatent le modèle SaaS (Software as a Service) de Dynamics 365 en ligne apporte des avantages évidents :

  • Vous n'avez pas à acheter de matériel ou d'infrastructure et vous n'avez pas à en assurer la maintenance ;
  • Le logiciel est généralement concédé sous licence sur un modèle de paiement continu, plutôt que sur un gros achat unique par siège ;
  • Le SaaS offre souvent un accès universel, vous permettant de vous connecter au logiciel à partir de n'importe quel appareil (ordinateur de bureau, ordinateur portable, téléphone portable) depuis tout endroit disposant d'une connexion Internet ;
  • Le prix initial est généralement beaucoup plus bas que l'achat d'équipements et de logiciels sur place ;
  • SLA de haute disponibilité (c'est-à-dire SLA de disponibilité Microsoft Dynamics 365 99,9%)

Donc, la synchronisation des bases de données sur site avec le Dynamics 365 en ligne devrait être assez facile, non ?

Idéalement, pour migrer de Microsoft Dynamics CRM sur site vers D365 en ligne, vous devriez pouvoir transférer les données directement de la base de données Microsoft Dynamics CRM SQL locale vers la base de données Microsoft D365 SQL distante. Et si, par hasard, vous aviez déjà D365 et que vous vouliez migrer Dynamics 365 sur site vers en ligne, cela devrait être encore plus simple.

En pratique, cependant, ce n'est pas si simple.

Ce que vous offre Microsoft pour passer au Dynamics 365 en ligne

Actuellement, pour aider les clients à déployer les solutions Microsoft pour le cloud, Microsoft propose une assistance via la page FastTrack. Les clients ayant un abonnement éligible à Microsoft 365, Dynamics 365 ou Azure, peuvent utiliser FastTrack sans frais supplémentaires pendant la durée de leur abonnement (lien à la fin de l'article). Vous devez vérifier les critères d'éligibilité actuels pour ce que vous essayez de migrer. Microsoft se base parfois sur le nombre de sièges, parfois sur les revenus.

En avril 2019, Microsoft a également publié "Microsoft Dynamics CRM on-premises à Dynamics 365 Online Migration", un document PDF de 45 pages qui décrit ce que vous devez faire (lien de téléchargement à la fin de l'article). Dans ce document, ils avouent que "jusqu'à récemment, il n'existait aucun mécanisme permettant aux clients de passer facilement de leur déploiement sur site à Dynamics 365 (en ligne)".

Problèmes de synchronisation on-prem avec les bases de données en ligne

Vous pensez que la solution idéale serait de trouver une synchronisation de la base de données Dynamics 365 avec votre Dynamics CRM on-prem.

Le problème est que, généralement, l'exposition des bases de données back-end des services SaaS au monde extérieur est considérée comme une mauvaise pratique et peut entraîner des risques considérables pour la sécurité. C'est pourquoi Microsoft ne donne pas accès à la base de données back-end de D365 en ligne. Au lieu de cela, pour effectuer une interaction de données avec D365 en ligne, Microsoft offre les services API officiels.

Les services API présentent l'avantage de ne pas enfreindre les règles et contraintes internes de l'entreprise. De cette manière, les services API garantissent que les applications clientes n'entravent pas les performances. De plus, ils contribuent à préserver l'intégrité des données et la cohérence de la base de données back-end.
Le développement de processus pour manipuler des données par le biais d'API nécessite des compétences en programmation et du temps. En particulier, du temps pour fouiller dans la documentation afin de définir les paramètres corrects et de faire les appels appropriés aux méthodes ou fonctions fournies par ces interfaces.

Et si vous pouviez simplement exploiter vos compétences en SQL et interagir avec l'API D365 comme vous le feriez avec un SGBD (système de gestion de base de données) ordinaire ?

Et si vous pouviez simplement faire en sorte que Dynamics 365 synchronise la base de données avec SQL Server Management Studio ?

Se connecter à D365 en ligne à partir d'un SGBD local ou de toute application client

Bienvenue toD365 Database Sync Solution! Il s'agit d'une solution spécifique pour la synchronisation des bases de données sur site avec le nuage D365. Elle est basée sur la plate-forme d'intégration Connecting Software Connect Bridge.

Connect Bridge traduit la syntaxe SQL standard ANSI en appels API appropriés. En garantissant que l'accès aux données se fait avec des appels d'API (bien que vous n'ayez pas à vous en soucier), vous protégez l'intégrité de votre système cible. De plus, vous pouvez communiquer facilement avec n'importe quel système cible grâce aux instructions standard SELECT, INSERT, UPDATE et DELETE.

Par conséquent, à partir de votre SGBD local ou de toute application client, vous pouvez vous connecter à D365 en ligne et y introduire des données.

Pour les entreprises qui migrent de Dynamics CRM on-prem vers D365 en ligne, c'est particulièrement pratique dans les situations où des processus entiers ont été écrits sur la base de données SQL on-prem. Heureusement, elles peuvent maintenant être réutilisées en ajoutant Connect Bridge à leur portefeuille.

Il est temps maintenant de donner un exemple pratique.

De n'importe quelle base de données à Dynamics 365 Online

Dans cet exemple, nous allons utiliser la célèbre base de données Adventure Works DW (Datawarehouse) de Microsoft (le télécharger ici). Nous vous montrerons comment vous pouvez facilement intégrer vos processus existants avec Microsoft Dynamics 365 Online (info ici) en utilisant la plate-forme Connect Bridge.

Si vous utilisez le SSMS (Studio de gestion du serveur SQL) pour administrer votre base de données SQL Server, vous pouvez voir le schéma de la base de données dans la fenêtre de l'explorateur d'objets.

Schéma de la base de données dans la fenêtre de l'explorateur d'objets

Plate-forme Connect Bridge vous permet de créer sans effort des connexions de serveur lié à n'importe quel système cible via des connecteurs. Plus de 400 connecteurs sont disponibles. Nous allons nous concentrer sur le connecteur Dynamics 365. Vous trouverez ci-dessous une sélection de connecteurs dans la zone CRM/ERP/Comptabilité.

Connecteurs - Domaine CRM / ERP / Comptabilité

Vous trouverez ci-dessous la connexion au serveur Linked déjà créée dans le SSMS.

Connexion de serveur liée déjà créée dans le SSMS

Notez que nous avons volontairement nommé le serveur lié connectionD365_CRM.And, en développant le nœud catalogues dans l'arborescence, nous pouvons voir l'ensemble du schéma fourni par Dynamics 365, comme vous le verriez en accédant à une base de données traditionnelle.

Vous pouvez ainsi créer n'importe quel type d'intégration ou personnaliser les processus existants en tirant parti de la facilité d'utilisation.

Applicabilité de la solution On-prem à la solution D365 Cloud Sync

Maintenant, vous vous demandez peut-être : pourquoi aurais-je besoin de faire cela en premier lieu ?

Voici deux scénarios courants auxquels vous pouvez vous référer.

Scénario 1 :

Je travaille pour une société qui utilise Microsoft Dynamics CRM On-Premises, et nous sommes en train de migrer vers Microsoft Dynamics 365 Online. Nous avons plusieurs intégrations directement de nos bases de données SQL Server à la base de données SQL Server de Microsoft Dynamics CRM On-Premises.

Mais, je ne peux pas me connecter directement à la base de données Microsoft Dynamics 365 Online :

  • Devrai-je créer tous mes processus à partir de zéro en utilisant le SDK Dynamics CRM de Microsoft ?
  • Devrai-je créer de toutes pièces tous mes processus à l'aide de l'API Web ?
  • Dois-je apprendre le C# pour faire tout cela ?

Scénario 2 :

Je travaille pour une société qui possède un système ERP propriétaire avec une base de données SQL Server comme backend. Nous avons décidé d'adopter Microsoft Dynamics 365 CRM comme système de gestion de la relation client.

Nous aimerions pouvoir alimenter le CRM avec les données existantes de notre système ERP de manière automatisée et maintenir la cohérence des deux côtés.

Faire cela manuellement semble presque impossible puisque nous parlons de dizaines de milliers d'enregistrements par entité (Comptes, Contacts, Produits pour n'en citer que quelques-uns). De plus, il est aisé de travailler avec le langage SQL (Structured Query Language).

Cependant, nous n'avons pas d'expérience approfondie avec d'autres langages de programmation et cadres de travail (C#, API Web, services de repos, etc.) :

  • Devrons-nous engager une société de conseil pour le faire à notre place ?
  • Est-ce que je dépendrai de cette société de conseil pour maintenir et ajouter de nouvelles fonctionnalités au fur et à mesure que mon entreprise change / se développe ?

Heureusement, la réponse à toutes ces questions est non. À ce stade, l'utilisation de l'exemple ci-dessus pourrait bien sonner le glas.

Grâce à l'approche présentée, vous pouvez exploiter massivement vos compétences et processus existants.

Vous n'êtes pas encore convaincu ? Pourquoi ne pas consulter l'exemple ci-dessous, étape par étape ?

Remplissage des comptes en ligne Dynamics 365 à partir de la base de données Adventure Works Table DimCustomer.

Préparation
Créez les déclencheurs suivants :

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

CREATE TRIGGER [dbo].[OnDimCustomerInsert] ON [dbo].[DimCustomer] AFTER INSERT

AS

BEGIN

       SET                               NOCOUNT ON

 

       DECLARE @SQL                      VARCHAR(255)

       DECLARE @AccountId                VARCHAR(255)

       DECLARE @FirstName                VARCHAR(255)

       DECLARE @LastName                 VARCHAR(255)

       DECLARE @MiddleName               VARCHAR(255)

      

       SELECT @FirstName       = [FirstName],

              @LastName        = [LastName],

              @MiddleName      = [MiddleName]

       FROM INSERTED;

       SELECT @SQL = FORMATMESSAGE(‘INSERT INTO ACCOUNT (Name) VALUES(”%s”); SELECT SCOPE_IDENTITY();’,

       @FirstName + ‘-‘ + ‘-‘ + @LastName)

      

       CREATE TABLE #AccountId(ID VARCHAR(255))

       INSERT #AccountId

       EXEC(@SQL) AT D365_CRM

 

       SELECT @AccountId = ID from #AccountId

       UPDATE DimCustomer SET CustomerAlternateKey = @AccountId where FirstName = @FirstName and MiddleName = @MiddleName and LastName = @LastName

 

       PRINT @FirstName + ‘ ‘ + @MiddleName + ‘ ‘ + @LastName;

END

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

CREATE TRIGGER [dbo].[OnDimCustomerUpdate] ON [dbo].[DimCustomer] AFTER UPDATE

AS

BEGIN

       SET                               NOCOUNT ON

 

       DECLARE @SQL                      VARCHAR(255)

       DECLARE @AccountId                VARCHAR(255)

       DECLARE @FirstName                VARCHAR(255)

       DECLARE @LastName                 VARCHAR(255)

       DECLARE @MiddleName               VARCHAR(255)

      

       SELECT @AccountId       = [CustomerAlternateKey],

              @FirstName       = [FirstName],

              @LastName        = [LastName],

              @MiddleName      = [MiddleName]

       FROM INSERTED;

 

       SELECT @SQL = FORMATMESSAGE(‘UPDATE ACCOUNT SET Name=”%s” WHERE ACCOUNTID=”%s”’, @FirstName + ‘-‘ + ‘-‘ + @LastName, @AccountId)

       EXEC(@SQL) AT D365_CRM;

       PRINT @FirstName + ‘ ‘ + @MiddleName + ‘ ‘ + @LastName;

 

END


Votre fenêtre d'exploration des objets SSMS devrait maintenant contenir 2 nouveaux déclencheurs comme suit :

deux nouveaux déclencheurs dans la fenêtre de l'explorateur d'objets SSMS

Ouvrez votre instance Dynamics 365 Online et naviguez vers le module Ventes -> Comptes

Dynamics 365 Comptes

Tests :

Dans le SSMS, ouvrez une nouvelle fenêtre de requête et collez ce qui suit :


INSERT INTO [AdventureWorksDW].[dbo].[DimCustomer] (FirstName, MiddleName, LastName, CustomerAlternateKey) values (‘ABC Technology’, ,‘GMB’, ‘CT0001’);

INSERT INTO [AdventureWorksDW].[dbo].[DimCustomer] (FirstName, MiddleName, LastName, CustomerAlternateKey) values (‘Billy Charity’, ,‘SA’, ‘CT0002’);

INSERT INTO [AdventureWorksDW].[dbo].[DimCustomer] (FirstName, MiddleName, LastName, CustomerAlternateKey) values (‘Tom Cat’, ,‘ORG’, ‘CT0003’);

 

SELECT * FROM DimCustomer WHERE FirstName = ‘ABC Technology’;

SELECT * FROM DimCustomer WHERE FirstName = ‘Billy Charity’;

SELECT * FROM DimCustomer WHERE FirstName = ‘Tom Cat’;


Exécutez les scripts en appuyant sur F5 ou sur le bouton Exécuter dans le SSMS.

Vous devriez maintenant avoir 3 enregistrements supplémentaires insérés dans le DimCustomer Table.

trois enregistrements supplémentaires insérés dans le DimCustomer Table

Retournez à votre compte Dynamics 365 Sales -> Accounts et rafraîchissez l'écran. Bingo !

trois nouveaux comptes créés dans Dynamics 365

3 nouveaux comptes ont été créés dans Dynamics 365, cool non ?

Mais attendez, dans le tableau DimCustomer, le champ CustomerAlternateKey a un nombre étrange. Ce ne sont pas les valeurs que nous avons insérées en premier lieu.

Au lieu de cela, nous avons l'ID unique du compte généré dans Dynamics 365. Comment cela est-il possible ?

Si vous regardez attentivement le déclencheur OnDimCustomerInsert, vous remarquerez que SELECT SCOPE_IDENTITY() ; est le responsable de renvoyer l'identifiant du compte qui sera utilisé pour mettre à jour la table DimCustomer.

Cela sera crucial pour effectuer les mises à jour des comptes existants dans Dynamics 365 lorsqu'un enregistrement est modifié dans la table DimCustomer.

Pour prouver notre point de vue, mettez à jour les enregistrements créés en exécutant dans le SSMS le code suivant :

Après avoir exécuté les mises à jour pour les 3 comptes, voici le résultat dans Dynamics 365.

UPDATE [AdventureWorksDW].[dbo].[DimCustomer] SET LastName = ‘LTD’ WHERE CustomerAlternateKey = ‘account(9a1bc5cb-6ad7-e811-a96f-000d3a2cb90b)’;

NOTE: REPLACE THE STRING account(9a1bc5cb-6ad7-e811-a96f-000d3a2cb90b) WITH THE VALUES GENERATED IN YOUR ENVIRONMENT.

Dynamics 365 Comptes après exécution des mises à jour

Super !

Conclusion

Les exemples ci-dessus sont très simples, mais il n'est pas difficile de visualiser les avantages d'une telle approche.

  • Le maintien du processus est centralisé et isolé
  • Améliorer le processus en modifiant les déclencheurs est un jeu d'enfant
  • Il n'est pas nécessaire d'apprendre une nouvelle technologie / un nouveau langage de programmation

C'est tout. J'espère que vous avez apprécié.

Si vous avez des commentaires, des suggestions, écrivez-les dans l'espace ci-dessous et nous vous répondrons dans les plus brefs délais.

J'espère que vous aurez autant de plaisir à utiliser la plate-forme Connect Bridge que j'en ai eu à écrire cet article.

Pourquoi les clients utilisent le Connect Bridge

Pour le savoir, regardez une courte vidéo :

Vidéo de présentation du Connect Bridge

Article mis à jour le : 05 mai 2020

Ana Neto - Conseiller technique, auteur

Ana Neto
technical conseiller au Connecting Software

Auteur :

Je suis ingénieur en informatique depuis 1997, et plus récemment, j'aime écrire et parler en public.  Vous avez des questions ou des commentaires sur ce poste ou sur le Connect Bridge ? J'aimerais avoir votre avis !

 ana@connecting-software.com


Contributeur : Jefferson Kenji Takahashi, MBA

Commentaires 3

  1. Par exemple, nous avons besoin de transférer les transactions de notre point de vente (données dans des tables SQL) vers le système Business Central. Qu'en est-il du cas d'utilisation où la vente concerne un client et/ou un produit qui n'existe pas dans le système D365 ?

  2. Post
    Autor

    Salut Paul,

    Si vous pouvez obtenir les données de votre point de vente dans les tables SQL et qu'elles suivent une structure que vous pouvez comprendre, alors vous pouvez utiliser Connect Bridge pour tout faire entrer dans Business Central. Si la vente concerne un client et/ou un produit qui n'existe pas dans D365, vous devez décider de ce qu'il faut faire, par exemple vous pouvez utiliser un client ou un produit générique ou en créer de nouveaux à la volée.

    Nous prendrons contact avec vous par le biais du courriel que vous avez indiqué pour explorer cette option avec vous.

    Ana Neto

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *