Intégration SQL de Exchange et de Salesforce

Intégration SQL de Exchange et de Salesforce

Georgii KapanadzeTechnical Leave a Comment

1. Sujet

1.1 Introduction

En raison du succès de notre premier article technique qui peut être trouvé ici nous avons décidé de continuer. Cette fois-ci, nous allons examiner comment l'intégration entre Exchange et Salesforce peut être réalisée de la manière la plus simple. Nous utiliserons des requêtes SQL.

Pour l'intégration, nous utilisons CB Linked Server for Enterprise Applications. Demandez-nous un essai gratuit du produit.

2. Exigences du scénario

Le scénario d'intégration requis ici est de synchroniser entre une table de contacts de la base de données locale, les contacts Exchange 365 et les contacts de la force de vente et d'avoir une réplication immédiate de la table de la base de données locale vers ces 2 systèmes cibles. Cela pourrait être utile pour avoir une sauvegarde des contacts hors ligne ou pour créer un entrepôt de données ou pour d'autres raisons.

3. Flux de travail de base

3.1 Configurer l'analyseur de requêtes CB

La première étape consiste à s'assurer que vous êtes en mesure de vous connecter au système cible (Exchange et SalesForce dans notre scénario) ; la manière la plus simple de le faire est de passer par le CB Query Analyzer. Ici, j'ai déjà configuré mon serveur ConnectBridge via l'outil d'administration pour me connecter à MS Exchange 365 et à SalesForce en créant les groupes et les utilisateurs requis. J'ai créé un nom d'utilisateur appelé "martin"avec mot de passe1234”. Cet utilisateur a le droit de se connecter à Exchange 365 et à SalesForce. Maintenant, à partir de Query Analyzer, je vais créer 2 connexions vers chaque système cible et m'assurer que je peux me connecter avec succès.

Intégration SQL de Exchange et de Salesforce

Figure 1 : Administration des comptes

Intégration SQL de Exchange et Salesforce image 2

Figure 2 : Administration des groupes et des utilisateurs

Image

Figure 3 : Connexions de l'analyseur de requêtes

3.2 Testez vos déclarations

Comme indiqué ci-dessus, nous avons une configuration et une connexion réussies aux deux systèmes cibles. Nous pouvons maintenant tester nos déclarations

3.2.1 Contacts Exchange

Sur mon compte Exchange, j'ai 3 contacts comme indiqué ci-dessous

Image

Figure 4 : Contacts Exchange

Nous allons maintenant tester les 4 opérations de base SÉLECTIONNER, INSÉRER, METTRE À JOUR ET SUPPRIMER

1. Sélection des contacts

En exécutant la déclaration ci-dessous, nous devrions obtenir les 3 contacts indiqués dans la figure 5.

SÉLECTIONNEZ [Prénom], [Nom], [Adresse électronique1] de [Contact] ;
Intégration SQL de Exchange et Salesforce image 5

Figure 5 : Sélection des contacts

2. Insertion d'un contact

En exécutant la déclaration ci-dessous, il faut insérer un nouveau contact comme indiqué dans la figure 6

INSERT INTO Contact([GivenName],[SurName],[Email1EmailAddress]) VALUES ('Peter', 'K.', 'peter@gmail.com') ;
Intégration SQL de Exchange et Salesforce image 6

Figure 6 : Insertion d'un nouveau contact

3. Mise à jour d'un contact

L'exécution de la déclaration ci-dessous devrait mettre à jour le nom de famille du contact que nous avons inséré précédemment, comme indiqué dans la figure 7

UPDATE Contact SET [SurName] = 'Keys' WHERE [Email1EmailAddress] LIKE 'peter@gmail.com' ;
Intégration SQL des images Exchange et Salesforce 7

Figure 7 : Mise à jour du contact

4. Suppression d'un contact

L'exécution de la déclaration ci-dessous doit supprimer le contact nouvellement inséré, comme indiqué dans la figure 8

DELETE FROM Contact WHERE [Email1EmailAddress] LIKE 'peter@gmail.com' ;
Intégration SQL des images Exchange et Salesforce 8

Figure 8 : Suppression d'un contact

3.2.2 Contacts avec les forces de vente

Sur mon compte SalesForce, je dispose de 17 contacts comme indiqué ci-dessous

Intégration SQL des images Exchange et Salesforce 9

Figure 9 : Contacts de la force de vente

Nous allons maintenant tester les 4 mêmes opérations de base : SÉLECTIONNER, INSÉRER, MISE À JOUR et SUPPRIMER.

1. Sélection des contacts

L'exécution de la déclaration ci-dessous devrait nous donner les 17 contacts indiqués dans la figure 10.

SÉLECTIONNEZ [Prénom], [Nom], [Courriel] DE [Contact] ;
Intégration SQL de Exchange et Salesforce image 10

Figure 10 : Sélection des contacts

2. Insertion d'un contact

En exécutant la déclaration ci-dessous, il faut insérer un nouveau contact comme indiqué à la figure 11

INSERT INTO Contact([Firstname],[LastName],[Email]) VALUES ('Peter', 'K.', 'peter@gmail.com') ;
Intégration SQL de l'image Exchange et Salesforce 11

Figure 11 : Insertion d'un nouveau contact

3. Mise à jour d'un contact

L'exécution de la déclaration ci-dessous devrait mettre à jour le nom de famille du contact que nous avons inséré précédemment, comme indiqué dans la figure 12

UPDATE Contact SET [LastName] = 'Keys' WHERE [Email] = 'peter@gmail.com' ;
Intégration SQL de l'image Exchange et Salesforce 12

Figure 12 : Mise à jour du contact

4. Suppression d'un contact

L'exécution de la déclaration ci-dessous doit supprimer le contact nouvellement inséré, comme indiqué dans la figure 13

SUPPRIMER DU CONTACT OÙ [Email] = 'peter@gmail.com' ;
Intégration SQL de l'image Exchange et Salesforce 13

Figure 13 : Suppression d'un contact

3.3 Connexion et déclarations de copie

Nous savons maintenant que nous pouvons sélectionner, mettre à jour, insérer et supprimer des contacts de Exchange & SalesForce. Ce que nous devons faire maintenant, c'est copier la chaîne de connexion de Query Analyzer et nos déclarations testées pour les utiliser plus tard dans notre solution MS SQL Server.

Pour copier la connexion à partir de l'analyseur de requêtes, il suffit de cliquer avec le bouton droit de la souris sur la connexion, de cliquer sur Modifier et d'aller dans l'onglet Avancé et de copier le texte à partir de là comme indiqué ci-dessous dans la figure 14.

Intégration SQL de l'image Exchange et Salesforce 14

Figure 14 : Copie de la chaîne de connexion de l'analyseur de requêtes

Voici mes chaînes de connexion pour les deux systèmes cibles.

Exchange

Driver={Media Gateway ODBC Driver};impl='CORBA';host='localhost';port='8087';acc='ACC_EXCH365_CU7';uid='martin';pwd='1234'

SalesForce

Driver={Media Gateway ODBC Driver};IMPL=CORBA;HOST= 'localhost';PORT= '8087';ACC= 'ACC_SALF_CBD';UID= 'martin';PWD= '1234'

Nous sommes maintenant prêts à ouvrir le serveur MS SQL et à commencer à mettre en œuvre notre solution d'intégration du serveur SQL.

4. Présentation de la solution

4.1 Serveur MS SQL

Pour pouvoir travailler avec des sources de données externes via la fonction SQL Server Linked Server, nous devons effectuer les configurations suivantes

1. Démarrez Microsoft SQL Server Management Studio et connectez-vous en utilisant soit l'authentification Windows, soit le nom d'utilisateur et le mot de passe, comme indiqué ci-dessous à la figure 15

Intégration SQL de l'image Exchange et Salesforce 15

Figure 15 : Écran de connexion au studio de gestion du serveur MS SQL

Intégration SQL de l'image Exchange et Salesforce 16

Figure 16 : Propriétés de MSDASQL

2. Naviguer vers Sever Objects -> Serveurs liés -> Fournisseurs -> MSDASQL en développant les nœuds correspondants comme indiqué ci-dessus dans la figure 16. Cliquez avec le bouton droit de la souris sur MSDASQL - Microsoft Data Access SQL - et sélectionnez Propriétés pour afficher le dialogue de la figure 17

Intégration SQL de Exchange et Salesforce image 17

Figure 17 : Paramètres des propriétés MSDASQL

3. Nous devons nous assurer que les paramètres/options suivants sont vérifiés :

a. Niveau zéro uniquement: Pour des raisons de sécurité, nous devons nous assurer que seuls les fournisseurs OLE DB qui sont conformes à l'interface OLE DB de niveau 0 sont pris en charge.

b. Autoriser l'entrée en matièreLe but est de permettre au(x) fournisseur(s) de données - "sources de données externes" - d'être instancié(s) en tant que serveur in-process - "dans le même processus que MS SQL Server". Nous devons faire cela pour éviter de passer des informations d'authentification entre MS SQL Server et le fournisseur et pour pouvoir travailler avec des types de données comme (varchar(max), nvarchar(max), varbinary(max), text, ntext, ou image). Sans activer cette option, nous ne pourrons pas obtenir une donnée de type image de Exchange - par exemple - et l'insérer dans notre base de données MS SQL Server.

4. Nous devons maintenant permettre à MS SQL Server de se connecter aux fournisseurs externes et d'exécuter des requêtes pour interroger les données des fournisseurs externes qui utilisent l'OLEDB - appelons-les "Sources de données externes de l'OLEDB”. Nous le ferons en trois étapes :

a. Nous devons ouvrir une nouvelle fenêtre de requête en cliquant sur le bouton "Nouvelle requête" comme indiqué dans la figure 18 ci-dessous. Peu importe la base de données active, car ce que nous allons faire va affecter toute l'installation de MS SQL Server et, à son tour, chacune des bases de données qui s'y trouvent. Comme le montre le schéma ci-dessous, j'ai "master" comme base de données active/cible

Intégration SQL de l'image Exchange et Salesforce 18

Figure 18 : Analyseur de requêtes MS SQL Server

b. Nous devons reconfigurer MS SQL Server afin de pouvoir modifier/configurer ses options avancées. Pour ce faire, nous allons exécuter une procédure stockée appelée "sp_configure" - c'est une procédure stockée système préinstallée - et nous allons spécifiquement "montrer les options avancées" - en définissant cette option à 1. Pour ce faire, nous tapons "exec sp_configure 'show advanced options', 1 ; reconfigure" et nous appuyons sur F5 pour exécuter. Si tout se passe bien, vous devriez obtenir un message similaire à celui de la Figure 19 ci-dessous

Figure 19 : MS SQL Server - Affichage des options avancées

Intégration SQL de l'image Exchange et Salesforce 19

c. Nous devons maintenant permettre à MS SQL Server d'interroger ces "Sources de données externes de l'OLEDB" en utilisant quelque chose appelé "Requêtes ad hoc distribuées". Par défaut, MS SQL Server ne permet pas les "Ad Hoc Distributed Queries", nous devons donc reconfigurer cette option avancée - c'est pourquoi nous avons fait l'étape précédente - en exécutant la procédure stockée "sp_configure" en passant le paramètre "Ad Hoc Distributed Queries" et la valeur 1 pour l'activer. Si tout va bien, vous devriez obtenir un message similaire à celui de la Figure 20 ci-dessous après avoir exécuté "exec sp_configure 'Ad Hoc Distributed Queries', 1 ; reconfigure".

Intégration SQL de l'image Exchange et Salesforce 20

Figure 20 : MS SQL Server - Activation des requêtes distribuées ad hoc

Nous pouvons maintenant ajouter autant de serveurs liés que nous le souhaitons, puisque notre serveur MS SQL est correctement configuré pour le permettre.

4.2 Configuration du serveur lié MS Exchange

1. naviguez vers Sever Objects -> Serveurs liés. Cliquer sur le bouton droit de la souris Serveurs liés et choisir Nouveau serveur lié comme le montre la figure 21 ci-dessous

Intégration SQL de l'image Exchange et Salesforce 21

Figure 21 : MS SQL Server - Ajouter un nouveau serveur lié

2. Dans la nouvelle boîte de dialogue du serveur lié, comme le montre la figure 22 ci-dessous, vous devez fournir ce qui suit :

a. Nom du serveur liéPour le nom de la personne, je choisis Exchange365_CU7.

b. Fournisseurdoit être "Microsoft OLE DB Providers for ODBC Drivers", car ConnectBridge utilise ODBC.

c. Chaîne de fournisseurs: ici, nous collons la chaîne de connexion que nous avons copiée précédemment de l'Analyseur de requêtes.

Intégration SQL de l'image Exchange et Salesforce 22

Figure 22 : MS SQL Server - Configuration d'un nouveau serveur lié - Général

3) Il faut maintenant établir une relation entre l'utilisateur qui utilise ou accède à MS SQL Server et l'utilisateur qui utilise ou accède à CB. L'utilisateur utilisant MS SQL Server est appelé Local Login (dans notre scénario, c'est "sa") et l'utilisateur utilisant / accédant à CB est appelé Remote User (dans notre scénario, c'est Martin avec login martin). C'est ce que nous devons configurer, et pour ce faire, nous cliquons sur "sécurité"pour afficher le dialogue de la figure 23 ci-dessous

Intégration SQL de l'image Exchange et Salesforce

Figure 23 : MS SQL Server - Configuration d'un nouveau serveur lié - Sécurité

4. Lorsque la boîte de dialogue ci-dessus s'affiche, nous cliquons sur le bouton Ajouter et nous saisissons le nom d'utilisateur local et l'utilisateur distant comme nous l'avons convenu. C'est ce que j'ai fait ici, à la figure 24

Intégration SQL de l'image Exchange et Salesforce 24

Figure 24 : MS SQL Server - Configuration d'un nouveau serveur lié - Logins

5. Je sais que vous voulez clore le dialogue, mais attendez ! Nous devons faire un pas de plus. Maintenant, nous devons aller à "Options du serveurL'onglet " à gauche " permet d'afficher le dialogue de la figure 25 ci-dessous et d'activer 2 fonctionnalités

a. RPCpour activer un certain dispositif de sécurité dont nous aurions besoin lorsque nous utilisons un dispositif existant appelé Serveur à distance - ne vous inquiétez pas pour l'instant - pour que la validation de la connexion entre CB et MS SQL Server soit possible

b. RPC Outpour permettre "Appel de procédure à distance"Nous devons en effet permettre à nos procédures stockées de fonctionner à distance

Intégration SQL de l'image Exchange et Salesforce 25

Figure 25 : MS SQL Server - Configuration d'un nouveau serveur lié - Options du serveur

6. Maintenant, nous cliquons sur OK et c'est terminé ! Oui ! Nous avons configuré le serveur MS SQL pour qu'il se connecte à Exchange. Maintenant nous pouvons voir la plate-forme Exchange comme une base de données dans MS SQL Server, nous pouvons voir le tableau appelé Contacts, nous pouvons montrer une liste de contacts de Exchange, tout cela, sans avoir à accéder à la base de données Exchange comme vous pouvez le voir dans la figure 26 ci-dessous

Intégration SQL de Exchange et de Salesforce

Figure 26 : MS SQL Server - Serveur lié configuré avec succès

4.3 Test du serveur lié MS Exchange

Avant de développer notre solution d'intégration, nous devons nous assurer que nous sommes en mesure d'effectuer la manipulation des données de base sur MS Exchange via notre serveur lié nouvellement configuré.

1. Sélection des contacts

L'exécution de la déclaration ci-dessous devrait nous donner les 3 contacts du MS Exchange.

CHOISIR Prénom, Nom, Courriel1Adresse électronique DE L'ÉCHANGE365_CU7...Contact ;

Pourquoi le "..." ? Parce qu'il suit la syntaxe SERVER.DATABASE.SCHEMA.TABLE et comme vous avez pu le voir sur la figure 26 ci-dessus, notre serveur est Exchange365_CU7, notre base de données est "sans nom", notre schéma est "sans nom" et enfin notre table est Contacts.

Intégration SQL de Exchange et de Salesforce

Figure 27 : Sélection des contacts

2. Insertion d'un contact

En exécutant la déclaration ci-dessous, vous devez insérer un nouveau contact.

EXEC ('INSERT INTO Contact([GivenName], [SurName], [Email1EmailAddress])
VALUES ("Peter", "K.", "peter@gmail.com");') AT EXCHANGE365_CU7 ;
Intégration SQL de l'image Exchange et Salesforce 28

Figure 28 : Insertion d'un nouveau contact

3. Mise à jour d'un contact

L'exécution de la déclaration ci-dessous doit mettre à jour le nom de famille du contact que nous avons inséré précédemment

EXEC('UPDATE Contact SET [SurName] = "Keys" WHERE [Email1EmailAddress] LIKE
"peter@gmail.com";') À L'ADRESSE EXCHANGE365_CU7 ;
Intégration SQL de l'image Exchange et Salesforce 29

Figure 29 : Mise à jour des contacts

4. Suppression d'un contact

L'exécution de la déclaration ci-dessous doit supprimer le contact nouvellement inséré

EXEC ('DELETE FROM Contact WHERE [Email1EmailAddress] LIKE
"peter@gmail.com";') À L'ADRESSE EXCHANGE365_CU7 ;
Intégration SQL de l'image Exchange et Salesforce 30

Figure 30 : Suppression d'un contact

4.4 Configuration du serveur lié à SalesForce

Nous allons suivre les étapes de la section "4.2 Configuration du serveur lié MS Exchange", sauf bien sûr que nous allons utiliser la chaîne de connexion pour SalesForce. Après avoir suivi ces étapes, votre serveur lié devrait être configuré avec succès comme indiqué ci-dessous.

Intégration SQL de l'image Exchange et Salesforce 31

Figure 31 : Configuration réussie du serveur lié à SalesForce

4.5 Test du serveur lié à Salesforce

Comme nous l'avons fait auparavant également avec le serveur lié MS Exchange, nous devons nous assurer que nous sommes en mesure d'effectuer les tâches de manipulation des données de base via le serveur lié à la force de vente.

Pour raccourcir le guide, la figure 32 ci-dessous teste toutes les déclarations suivantes

1. Sélection des contacts

L'exécution de la déclaration ci-dessous devrait nous donner les contacts de SalesForce.

CHOISIR Prénom, Nom, Courriel1Adresse électronique DE L'ÉCHANGE365_CU7...Contact ;

2. Insertion d'un contact

En exécutant la déclaration ci-dessous, vous devez insérer un nouveau contact.

EXEC ('INSERT INTO Contact([GivenName], [SurName], [Email1EmailAddress])
VALUES ("Peter", "K.", "peter@gmail.com");') AT EXCHANGE365_CU7 ;

3. Mise à jour d'un contact

L'exécution de la déclaration ci-dessous doit mettre à jour le nom de famille du contact que nous avons inséré précédemment

EXEC('UPDATE Contact SET [SurName] = "Keys" WHERE [Email1EmailAddress] LIKE
"peter@gmail.com";') À L'ADRESSE EXCHANGE365_CU7 ;

4. Suppression d'un contact

L'exécution de la déclaration ci-dessous doit supprimer le contact nouvellement inséré

EXEC ('DELETE FROM Contact WHERE [Email1EmailAddress] LIKE
"peter@gmail.com";') À L'ADRESSE EXCHANGE365_CU7 ;
Intégration SQL de l'image Exchange et Salesforce 32

Figure 32 : Test du serveur lié à SalesForce

4.6 Tableau des bases de données locales

À partir de là, nous devons disposer d'une véritable base de données locale sur notre serveur MS SQL local. Si vous en avez déjà une, vous pouvez l'utiliser sinon nous devons créer une nouvelle base de données. J'ai créé une base de données appelée ConnectingSoftware avec une table appelée LocalContacts. Dans cette table, il n'y a qu'un seul enregistrement, comme le montre la figure 33 ci-dessous.

Figure 33 : Tableau des contacts locaux

4.7 Déclenchement du tableau de réplication

Intégration SQL de l'image Exchange et Salesforce 33

La première étape de notre solution consiste à reproduire les modifications apportées à la table de notre base de données locale à la fois pour SalesForce et Exchange. Nous allons mettre en œuvre cette solution via le déclencheur de la table.

Le script SQL pour le déclencheur est présenté ci-dessous :

CREATE TRIGGER [dbo] [trgSyncContact]
ON [dbo] [Contacts locaux]
APRÈS INSERTION, MISE À JOUR, SUPPRESSION
AS
DÉBUT
déclarer @Opération varchar(50)
déclarer @FirstName nvarchar(max)
déclarer @LastName nvarchar(max)
déclarer @Email varchar(255)
déclarer @Deleted_FirstName nvarchar(max)
déclarer @Deleted_LastName nvarchar(max)
déclarer @Deleted_Email varchar(255)

SI COLUMNS_UPDATED() > 0
DÉBUT
--si nous avons mis à jour des colonnes, alors nous avons soit inséré soit supprimé un
record
S'IL EXISTE (SÉLECTIONNEZ * DE SUPPRIMÉ)
DÉBUT
--si nous avons supprimé des valeurs, alors il s'agissait d'une opération de mise à jour
SELECT @FirstName = inséré.FirstName, @LastName =
inserted.LastName, @Email = inserted.Email,
@Deleted_FirstName = supprimé.FirstName,
@Deleted_LastName = supprimé.LastName, @Deleted_Email =
supprimé.Email
De supprimé, inséré
--SalesForce
Exec ('UPDATE Contact SET FirstName = ?, LastName = ?, Email = ?
OÙ Prénom = ? et Nom = ? et Email = ?
@Prénom, @Nom, @Email, @Prénom_supprimé,
@Deleted_LastName, @Deleted_Email) à SALESFORCE_CBD ;
--Exchange
EXEC ('UPDATE Contact SET GivenName = ?, SurName = ?,
Adresse électronique1 = ? WHERE GivenName = ? et SurName =
? et Email1EmailAddress = ?', @FirstName, @LastName,
@Email, @Deleted_FirstName, @Deleted_LastName,
@Deleted_Email) à EXCHANGE365_CU7 ;
FIN
ELSE
DÉBUT
--si ce n'était pas une opération de mise à jour, alors c'était une insertion
SELECT @FirstName = Prénom, @LastName = Nom, @Email =
Courriel
DE inséré
--SalesForce
Les valeurs de l'option Exec ('Insérer dans Contact (FirstName, LastName, Email)
( ?,?, ?)', @FirstName, @LastName, @Email) à
SALESFORCE_CBD ;
--MS Exchange
EXEC ('Insérer dans Contact (Prénom, Nom de famille,
Email1EmailAddress) valeurs( ?,?, ?)', @FirstName,
@LastName, @Email) à EXCHANGE365_CU7 ;
FIN
FIN
ELSE
DÉBUT
--si l'opération n'a pas été mise à jour/insérée alors elle a été supprimée
SELECT @Deleted_Email = Email FROM supprimé
--SalesForce
Exec ("Delete From Contact Where Email = ?", @Deleted_Email) à
SALESFORCE_CBD ;
--MS Exchange
Exec ("Delete From Contact Where Email1EmailAddress = ?",
@Deleted_Email) à EXCHANGE365_CU7 ;
FIN
FIN

Attention : après avoir exécuté le script ci-dessus, nous ne devons rien insérer de la table de la base de données locale tant que nous n'avons pas synchronisé nos 2 systèmes cibles (Exchange et SalesForce) avec notre base de données locale, sinon nous pourrions nous retrouver avec des enregistrements accidentellement dupliqués puisque la logique ici ne vérifie pas si un nouvel enregistrement a déjà existé sur ces systèmes cibles.

4.8 Procédure de synchronisation stockée

La deuxième étape de notre solution consiste à synchroniser entre MS Exchange, SalesForce et notre table de contacts locaux, de sorte que chaque système ait le même ensemble de contacts.

Pour ce faire, nous allons rédiger une procédure stockée. La logique de la procédure est de :

1. Très important pour désactiver le déclencheur que nous avons créé ci-dessus "comme nous faisons la synchronisation, nous ne devons pas activer la réplication automatique mise en œuvre par le déclencheur".

2. Synchroniser entre SalesForce et ma base de données
Utilisation de l'adresse électronique du contact comme clé de correspondance ; Y a-t-il un contact sur SalesForce et non dans mon tableau des contacts locaux ?

a. Oui : ajouter un contact à mon tableau des contacts locaux

b. Non : Mettre à jour le prénom et le nom du contact dans mon tableau des contacts locaux

3. Synchroniser entre MS Exchange et ma base de données
Utilisation de l'adresse électronique du contact comme clé de correspondance ; Y a-t-il un contact sur Exchange et non dans mon tableau des contacts locaux ?

a. Oui : ajouter un contact à mon tableau des contacts locaux

b. Non : Mettre à jour le prénom et le nom du contact dans mon tableau des contacts locaux

À ce stade, ma table de contacts locale dispose de tous les contacts de SalesForce et de MS Exchange en plus des enregistrements qui figuraient à l'origine dans la table. Nous devons maintenant mettre à jour chaque système cible en y ajoutant les contacts de l'autre système cible et la base de données locale

4. Mise à jour des contacts sur SalesForce (par les contacts de Exchange & ma table locale)

Utilisation de l'adresse électronique du contact comme clé de correspondance ; Y a-t-il un contact dans mon tableau des contacts locaux et non dans SalesForce ?

a. Oui : ajouter un contact à la force de vente

b. Non : Mettre à jour le prénom et le nom du contact sur SalesForce

5. Mise à jour des contacts sur Exchange (par les contacts de SalesForce & ma table locale)

Utilisation de l'adresse électronique du contact comme clé de correspondance ; Y a-t-il un contact dans mon tableau des contacts locaux et non sur Exchange ?

a. Oui : ajouter un contact à la MS Exchange

b. Non : Mettre à jour le prénom et le nom du contact sur Exchange

6. Maintenant, nous pouvons activer le déclencheur que nous avons désactivé précédemment, de sorte que la réplication automatique est de nouveau activée.

Le script SQL suivant mettra en œuvre la logique décrite ci-dessus

PROCÉDURE DE CRÉATION [dbo] [uspInitSync]
-- Ajoutez ici les paramètres de la procédure stockée
AS
DÉBUT
-- Ajout de l'option SET NOCOUNT ON pour éviter que des ensembles de résultats supplémentaires
-- interférant avec les déclarations SELECT.
METTRE NOCOUNT ON ;

-désactiver le déclencheur afin que, lors de l'insertion de la SalesForce, nous n'endurions pas
--en ajoutant à nouveau les contacts à la SalesForce
DISABLE TRIGGER [trgSyncContact] ON LocalContacts ;

--fusionner les dossiers de SalesForce à LocalDB
DECLARE @ImportedContacts Table(FirstName nvarchar(max), LastName
nvarchar(max), Email varchar(255)) ;

--mettre à jour / insérer des contacts dans LocalDB en utilisant SalesForce comme source
MERGE LocalContacts AS target
UTILISATION (SÉLECTIONNER le prénom, le nom, le courriel de SalesForce_CBD...Contact)
Source AS
ON (cible.Email LIKE source.Email)
LORSQU'ILS SONT APPARIÉS, ALORS
MISE À JOUR DU PRÉNOM = source.Prénom, Nom =
source.Nom de famille
LORSQU'IL N'Y A PAS DE CORRESPONDANCE À CE MOMENT-LÀ
INSERER (Prénom, Nom, Courriel)
VALEURS (source.Prénom, source.Nom, source.Courriel)
OUTPUT inséré.Prénom, inséré.Nom, inséré.Courriel
INTO @ImportedContacts ;

-montrer les contacts insérés dans LocalDB de SalesForce
sélectionnez * à partir de @ImportedContacts ;

--mettre à jour / insérer des contacts dans la LocalDB en utilisant Exchange comme source
MERGE LocalContacts AS target
UTILISATION (SÉLECTIONNER le prénom, le nom de famille, l'adresse électronique1 DE
EXCHANGE365_CU7...Contact) AS source
ON (target.Email LIKE source.Email1EmailAddress)
LORSQU'ILS SONT APPARIÉS, ALORS
MISE À JOUR DU PRÉNOM = source.Prénom, Nom =
source.Nom de famille
LORSQU'IL N'Y A PAS DE CORRESPONDANCE À CE MOMENT-LÀ
INSERER (Prénom, Nom, Courriel)
VALEURS (source.Nom.Prénom, source.Nom,
source.Email1EmailAddress)
OUTPUT inséré.Prénom, inséré.Nom, inséré.Courriel
INTO @ImportedContacts ;

--afficher les contacts insérés en utilisant une variable de table
sélectionnez * à partir de @ImportedContacts ;

--copiez maintenant tout à SalesForce & Exchange pour qu'ils aient une copie exacte
--de LocalDB après que LocalDB soit synchronisé avec tous les systèmes
-Je dois utiliser le curseur et si parce qu'utiliser l'insert....sélectionner....où pas
--existe ne fonctionnait pas avec les tables distantes et aussi fusionner ne fonctionne pas avec
--tables distantes
Déclarer @FirstName nvarchar(max)
déclarer @LastName nvarchar(max)
déclarer @Email varchar(255)
déclarer @SQL nvarchar(max)

DECLARE Contacts_cursor CURSOR FAST_FORWARD FOR
SÉLECTIONNER le prénom, le nom, le courriel de LocalContacts ;

OPEN Contacts_cursor
RECHERCHEZ LE SUIVANT DE CONTACTS_cursor DANS @Prénom, @Nom, @Email
ALORS QUE @@FETCH_STATUS = 0
DÉBUT
SI EXISTE (SÉLECTIONNER L'ADRESSE ÉLECTRONIQUE1 DE L'ÉCHANGE365_CU7...Contact
OÙ Email1Adresse électronique LIKE @Email)
EXEC ('UPDATE Contact SET GivenName = ?, SurName = ? OÙ
Email1EmailAddress = ?', @FirstName, @LastName, @Email)
à l'adresse EXCHANGE365_CU7 ;
ELSE
EXEC ('Insérer dans Contact (Prénom, Nom de famille,
Email1EmailAddress) valeurs( ?,?, ?)', @FirstName,
@LastName, @Email) à EXCHANGE365_CU7 ;

SI EXISTE (SÉLECTIONNER L'E-Mail de SalesForce_CBD...Contacter OÙ l'E-Mail EST LIÉ
@Email)
Exec ('UPDATE Contact SET FirstName = ?, LastName = ? OÙ
Email = ?', @FirstName, @LastName, @Email) à
SalesForce_CBD ;
ELSE
Les valeurs de l'option Exec ('Insérer dans Contact (FirstName, LastName, Email)
( ?,?, ?)', @FirstName, @LastName, @Email) à
SalesForce_CBD ;

RECHERCHEZ LE SUIVANT DE CONTACTS_cursor DANS @Prénom, @Nom, @Email
FIN
Fermer le curseur Contacts ;
DEALLOCATE Contacts_cursor ;

--activer le déclencheur afin que toute modification soit prise en compte dans la LPP en ligne
ENABLE TRIGGER [trgSyncContact] ON LocalContacts ;
FIN

5. La solution en action

La première étape consiste maintenant à exécuter la procédure de synchronisation stockée "uspInitSync" comme indiqué ci-dessous, la procédure stockée a été exécutée sans erreur.

Intégration SQL de l'image Exchange et Salesforce 34

Figure 34 : exécution de la procédure de synchronisation stockée

Nous avons également pu constater que de nouveaux contacts ont été ajoutés au MS Exchange

Intégration SQL de l'image Exchange et Salesforce 35

Figure 35 : Mises à jour sur le MS Exchange

Et de nouveaux contacts ajoutés à la SalesForce

Intégration SQL de l'image Exchange et Salesforce 36

Figure 36 : Mises à jour sur SalesForce

Et notre table de base de données locale a maintenant de nouveaux contacts

Intégration SQL de l'image Exchange et Salesforce 37

Figure 37 : Mises à jour du tableau des contacts locaux

Nous pouvons voir la réplication automatique en action également

1. Insérer un contact dans la base de données locale, le supprimer de SalesForce et Exchange

Intégration SQL de l'image Exchange et Salesforce 38

Figure 38 : Insérer une réplique

2. La mise à jour du contact dans la base de données locale le met à jour dans SalesForce et Exchange

Intégration SQL de l'image Exchange et Salesforce 39

Figure 39 : Réplication de la mise à jour

3. Supprimer un contact de la base de données locale, le supprimer de SalesForce et Exchange

Intégration SQL de l'image Exchange et Salesforce 40

Figure 40 : Suppression de la réplication

6. Notes sur la solution

Nous avons essayé de garder la logique de la solution aussi simple que possible, cependant la logique pourrait être améliorée et modifiée pour de meilleures performances et des fonctionnalités plus complexes.

Vous pouvez trouver plus d'informations sur ce produit sur la page produit de CB Linked Server for Enterprise Applications.

Laisser un commentaire

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

For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.