SQL integratie van Exchange en Salesforce

SQL integratie van Exchange en Salesforce

Georgii KapanadzeTechnical Leave a Comment

1. Onderwerp

1.1 Inleiding

Vanwege het succes van ons eerste technische artikel, dat te vinden is hier hebben we besloten om verder te gaan. Deze keer zullen we bekijken hoe een integratie tussen Exchange en Salesforce op een zeer eenvoudige manier kan worden bereikt. We zullen gebruik maken van SQL queries.

Voor de integratie gebruiken we CB Linked Server for Enterprise Applications. Vraag ons om een gratis proefversie van het product.

2. Scenario-eisen

Het integratie scenario dat hier nodig is, is om te synchroniseren tussen een lokale database tabel met contactpersonen, Exchange 365 contactpersonen en SalesForce contactpersonen en om een onmiddellijke replicatie te hebben van de lokale database tabel naar die 2 doelsystemen. Dit kan nuttig zijn om een back-up van contacten offline te hebben of om een data warehouse of om andere redenen te creëren.

3. Basis-Workflow

3.1 De CB Query Analyzer configureren

De eerste stap is ervoor te zorgen dat u in staat bent om verbinding te maken met het doelsysteem (Exchange & SalesForce in ons scenario); gemakkelijkste manier om dat te doen is via CB Query Analyzer. Hier heb ik mijn ConnectBridge server al geconfigureerd via de Administration tool om verbinding te maken met MS Exchange 365 en met SalesForce door de vereiste groepen en gebruikers aan te maken. Ik heb een gebruikersnaam aangemaakt genaamd "martin" met wachtwoord "1234”. Deze gebruiker heeft rechten om verbinding te maken met Exchange 365 en SalesForce. Nu zal ik vanuit Query Analyzer 2 verbindingen maken naar elk doelsysteem en ervoor zorgen dat ik succesvol kan verbinden.

SQL integratie van Exchange en Salesforce

Figuur 1: Rekeningenadministratie

SQL-integratie van Exchange en Salesforce foto 2

Figuur 2: Beheer van groepen en gebruikers

Image

Figuur 3: Query Analyzer Verbindingen

3.2 Test uw verklaringen

Zoals hierboven getoond hebben we een succesvolle configuratie en verbinding met beide doelsystemen. Nu kunnen we onze verklaringen testen

3.2.1 Exchange Contacten

Op mijn Exchange account, heb ik 3 contacten zoals hieronder getoond

Image

Figuur 4: Exchange Contacten

Nu gaan we de 4 basis operaties SELECT, INSERT, UPDATE & DELETE testen

1. Contacten selecteren

Het uitvoeren van het onderstaande statement zou ons de 3 contacten moeten geven die in Figuur 5 worden getoond.

SELECT [GegevenNaam],[SurNaam],[Email1EmailAddress] FROM [Contact];
SQL-integratie van Exchange en Salesforce foto 5

Figuur 5: Contacten selecteren

2. Een contactpersoon invoegen

Door het onderstaande statement uit te voeren wordt een nieuw contact ingevoegd, zoals weergegeven in Figuur 6

INSERT INTO Contact([GivenName],[SurName],[Email1EmailAddress]) VALUES ('Peter','K.', 'peter@gmail.com');
SQL-integratie van Exchange en Salesforce foto 6

Figuur 6: Een nieuw contactpersoon invoegen

3. Een contactpersoon bijwerken

Door het onderstaande statement uit te voeren wordt de achternaam van de contactpersoon die we eerder hebben ingevoegd bijgewerkt, zoals getoond in Figuur 7

UPDATE Contact SET [SurName] = 'Keys' WHERE [Email1EmailAddress] LIKE 'peter@gmail.com';
SQL-integratie van Exchange en Salesforce foto 7

Figuur 7: Contact bijwerken

4. Een contactpersoon verwijderen

Het uitvoeren van het onderstaande statement zou het nieuw ingevoegde contact moeten verwijderen zoals getoond in Figuur 8

DELETE FROM Contact WHERE [Email1EmailAddress] LIKE 'peter@gmail.com';
SQL-integratie van Exchange en Salesforce foto 8

Figuur 8: Contact verwijderen

3.2.2 Salesforce Contacten

Op mijn SalesForce account, heb ik 17 contacten zoals hieronder weergegeven

SQL-integratie van Exchange en Salesforce foto 9

Figuur 9: Contactpersonen van SalesForce

Nu gaan we dezelfde 4 basis operaties SELECT, INSERT, UPDATE & DELETE testen.

1. Contacten selecteren

Het uitvoeren van het onderstaande statement zou ons de 17 contacten moeten opleveren die in Figuur 10 worden getoond.

SELECT [Voornaam],[Achternaam],[E-mail] FROM [Contact];
SQL-integratie van Exchange en Salesforce foto 10

Figuur 10: Contactpersonen selecteren

2. Een contactpersoon invoegen

Door het onderstaande statement uit te voeren wordt een nieuw contact ingevoegd, zoals getoond in Figuur 11

INSERT INTO Contact([Voornaam],[Achternaam],[E-mail]) VALUES ('Peter', 'K.', 'peter@gmail.com');
SQL-integratie van Exchange en Salesforce foto 11

Figuur 11: Een nieuw contactpersoon invoegen

3. Een contactpersoon bijwerken

Door het onderstaande statement uit te voeren wordt de achternaam van de contactpersoon die we eerder hebben ingevoegd bijgewerkt, zoals getoond in Figuur 12

UPDATE Contact SET [LastName] = 'Keys' WHERE [Email] = 'peter@gmail.com';
SQL-integratie van Exchange en Salesforce foto 12

Figuur 12: Contact bijwerken

4. Een contactpersoon verwijderen

Het uitvoeren van het onderstaande statement zou het nieuw ingevoegde contact moeten verwijderen zoals getoond in Figuur 13

DELETE FROM Contact WHERE [Email] = 'peter@gmail.com';
SQL-integratie van Exchange en Salesforce foto 13

Figuur 13: Contact verwijderen

3.3 Kopieerverbinding en verklaringen

Nu weten we dat we in staat zijn om contacten te selecteren, updaten, invoegen en verwijderen uit Exchange & SalesForce. Wat we nu moeten doen is het kopiëren van de connection string van Query Analyzer en onze geteste statements om ze later te gebruiken in onze MS SQL Server Solution.

Om de verbinding van query analyzer te kopiëren, hoeven we alleen maar met de rechtermuisknop op de verbinding te klikken, op Bewerken te klikken en naar het tabblad Geavanceerd te gaan en daar de tekst te kopiëren, zoals hieronder in Figuur 14 is te zien.

SQL-integratie van Exchange en Salesforce foto 14

Figuur 14: Connectiestring kopiëren vanuit Query Analyzer

Hier zijn mijn verbindingsstrings voor beide doelsystemen.

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'

Nu zijn we klaar om MS SQL Server te openen en te beginnen met de implementatie van onze SQL Server integratie oplossing.

4. Doorloop van de oplossing

4.1 MS SQL Server

Om te kunnen werken met externe gegevensbronnen via de SQL Server Linked Server functie, moeten we de volgende configuraties uitvoeren

1. Start Microsoft SQL Server Management Studio en meld u aan met Windows-authenticatie of gebruikersnaam en wachtwoord, zoals getoond in Figuur 15

SQL-integratie van Exchange en Salesforce foto 15

Afbeelding 15: MS SQL Server Management Studio Aanmeldscherm

SQL-integratie van Exchange en Salesforce foto 16

Figuur 16: MSDASQL-eigenschappen

2. Navigeer naar Sever-objecten -> Gekoppelde servers -> Providers -> MSDASQL door de overeenkomstige knooppunten uit te vouwen, zoals hierboven in Figuur 16 is aangegeven. Klik met de rechter muisknop op MSDASQL - Microsoft Data Access SQL - en selecteer Eigenschappen om het dialoogvenster in figuur 17 te tonen

SQL-integratie van Exchange en Salesforce foto 17

Figuur 17: MSDASQL Eigenschappen Instellingen

3. We moeten ervoor zorgen dat de volgende instellingen/opties zijn aangevinkt:

a. Alleen niveau nul: Om veiligheidsredenen moeten wij ervoor zorgen dat alleen OLE DB providers die voldoen aan niveau 0 van de OLE DB interface worden ondersteund.

b. In behandeling nemen toestaan: om de dataprovider(s) - "externe gegevensbronnen" - te laten instantiëren als een in-process server - "in hetzelfde proces als MS SQL Server". We moeten dat doen om te voorkomen dat authenticatie-informatie tussen MS SQL Server en de provider wordt doorgegeven en om te kunnen werken met datatypes als varchar(max), nvarchar(max), varbinary(max), tekst, ntext of image). Zonder deze optie kunnen we bijvoorbeeld geen gegevens van het type afbeelding uit Exchange halen en invoegen in onze MS SQL Server Database.

4. Nu moeten we MS SQL Server in staat stellen om verbinding te maken met externe providers en queries uit te voeren om gegevens op te vragen bij externe providers die OLEDB gebruiken - laten we ze "Externe OLEDB gegevensbronnen”. We zullen dat in 3 stappen doen:

a. We moeten een nieuw Query venster openen door op de New Query knop te klikken zoals in Figuur 18 hieronder is weergegeven. Het maakt niet uit welke database actief is, want wat we gaan doen heeft invloed op de gehele MS SQL Server installatie en op elke database daarin. Zoals hieronder te zien is, heb ik "master" als de actieve/doel database

SQL-integratie van Exchange en Salesforce foto 18

Figuur 18: MS SQL Server Query Analyzer

b. We moeten MS SQL Server opnieuw configureren zodat we de geavanceerde opties kunnen wijzigen/configureren. Daartoe gaan we een opgeslagen procedure genaamd "sp_configure" uitvoeren - het is een vooraf geïnstalleerde systeem opgeslagen procedure - en we gaan specifiek "show advanced options" - door deze optie in te stellen op 1. Om dat te doen typen we "exec sp_configure 'show advanced options', 1; reconfigure" en drukken op F5 om uit te voeren. Als alles goed gaat, zou u een bericht moeten krijgen dat lijkt op het bericht in Figuur 19 hieronder

Afbeelding 19: MS SQL Server - Geavanceerde opties weergeven

SQL-integratie van Exchange en Salesforce foto 19

c. Nu moeten we MS SQL Server toestaan om deze "Externe OLEDB gegevensbronnen" met behulp van iets genaamd "Ad hoc gedistribueerde zoekopdrachten". Standaard staat MS SQL Server de "Ad Hoc Distributed Queries" niet toe. Daarom moeten we deze geavanceerde optie opnieuw configureren - daarom hebben we de vorige stap uitgevoerd - door de opgeslagen procedure "sp_configure" uit te voeren met de instelling "Ad Hoc Distributed Queries" en de waarde 1 om deze in te schakelen. Als alles goed gaat, krijgt u na het uitvoeren van "exec sp_configure 'Ad Hoc Distributed Queries', 1; reconfigure" een bericht dat lijkt op het bericht in figuur 20 hieronder.

SQL-integratie van Exchange en Salesforce foto 20

Figuur 20: MS SQL Server - Ad hoc gedistribueerde query's inschakelen

Nu kunnen we zoveel Linked Server toevoegen als we willen, aangezien onze MS SQL Server goed geconfigureerd is om dat toe te laten.

4.2 Configureren van MS Exchange Gekoppelde Server

1. Navigeer naar Sever-objecten -> Gekoppelde servers. Klik met de rechtermuisknop op Gekoppelde Servers en kies Nieuwe gekoppelde server zoals weergegeven in onderstaande figuur 21

SQL-integratie van Exchange en Salesforce foto 21

Figuur 21: MS SQL Server - Nieuwe gekoppelde server toevoegen

2. In het nieuwe "Linked Server" dialoogvenster, zoals getoond in Figuur 22 hieronder, moet u het volgende opgeven:

a. Naam gekoppelde server: kan elke geldige naam zijn, ik kies Exchange365_CU7.

b. Aanbieder: moet zijn "Microsoft OLE DB Providers for ODBC Drivers", aangezien ConnectBridge ODBC gebruikt.

c. Aanbieder String: hier plakken we de verbindings string die we eerder van query Analyzer hebben gekopieerd.

SQL-integratie van Exchange en Salesforce foto 22

Figuur 22: MS SQL Server - Nieuwe gekoppelde server configureren - Algemeen

3.Nu moeten we een relatie leggen tussen de gebruiker die MS SQL Server gebruikt/toegang heeft en de gebruiker die CB gebruikt/toegang heeft. De gebruiker die MS SQL Server gebruikt, heet Local Login (in ons scenario is dat "sa") en de gebruiker die CB gebruikt/toegang heeft, heet Remote User (in ons scenario is dat Martin met login martin). Dit is wat we moeten configureren, en om dat te doen klikken we op "veiligheid" tabblad om het dialoogvenster in Figuur 23 hieronder te tonen

SQL-integratie van Exchange en Salesforce foto

Figuur 23: MS SQL Server - Nieuwe gekoppelde server configureren - Beveiliging

4. Wanneer het bovenstaande dialoogvenster wordt weergegeven, klikken we op de knop Toevoegen en typen we de Lokale Login en de Remote Gebruiker in zoals we hebben afgesproken. Dat is wat ik hier gedaan heb in Figuur 24

SQL-integratie van Exchange en Salesforce foto 24

Figuur 24: MS SQL Server - Nieuwe gekoppelde server configureren - Aanmelden

5. Oké, ik weet dat je het dialoogvenster wilt sluiten, maar wacht! We moeten nog één stap doen. Nu moeten we naar "Server Opties" tabblad aan de linkerkant om het dialoogvenster in Figuur 25 hieronder te tonen en 2 functies in te schakelen

a. RPC: om een bepaalde veiligheidsfunctie in te schakelen die we nodig hebben als we een oude functie gebruiken genaamd Server op afstand - maak je er nu geen zorgen over - zodat login validatie tussen CB en MS SQL Server mogelijk is

b. RPC uit: om "Remote Procedure Call" eigenschap, omdat we moeten toestaan dat onze opgeslagen procedures op afstand kunnen draaien

SQL-integratie van Exchange en Salesforce foto 25

Figuur 25: MS SQL Server - Nieuwe gekoppelde server configureren - Serveropties

6. Nu klikken we op okay en we zijn klaar! Ja! We hebben MS SQL Server geconfigureerd om verbinding te maken met Exchange. Nu kunnen we het Exchange platform zien als een database in MS SQL Server, we kunnen de tabel Contacts zien, we kunnen een lijst van contacten van Exchange laten zien, dit alles, zonder toegang tot de Exchange database zoals u kunt zien in Figuur 26 hieronder

SQL integratie van Exchange en Salesforce

Figuur 26: MS SQL Server - Gekoppelde server met succes geconfigureerd

4.3 Testen MS Exchange gekoppelde server

Alvorens onze integratie-oplossing te ontwikkelen, moeten wij er zeker van zijn dat wij in staat zijn de Basic Data manipulatie uit te voeren op MS Exchange via onze nieuw geconfigureerde Linked Server.

1. Contacten selecteren

Het uitvoeren van het onderstaande statement zou ons de 3 contacten van MS Exchange moeten geven.

SELECT GivenName, SurName, Email1EmailAddress FROM EXCHANGE365_CU7...Contact;

Waarom de "..."? Omdat het de syntax volgt SERVER.DATABASE.SCHEMA.TABLE en zoals je kon zien in Figuur 26 hierboven, is onze Server Exchange365_CU7, onze database is "zonder naam" ons schema is "zonder naam" en tenslotte is onze tabel Contacts.

SQL integratie van Exchange en Salesforce

Figuur 27: Contacten selecteren

2. Een contactpersoon invoegen

Door het onderstaande statement uit te voeren, wordt een nieuw contact toegevoegd.

EXEC ('INSERT INTO Contact([GegevenNaam], [SurNaam], [Email1EmailAddress])
VALUES ("Peter", "K.", "peter@gmail.com");") AT EXCHANGE365_CU7;
SQL-integratie van Exchange en Salesforce foto 28

Figuur 28: Een nieuw contactpersoon invoegen

3. Een contactpersoon bijwerken

Door het onderstaande statement uit te voeren wordt de achternaam van de contactpersoon die we eerder hebben ingevoegd bijgewerkt

EXEC('UPDATE Contact SET [SurName] = "Keys" WHERE [Email1EmailAddress] LIKE
"peter@gmail.com";") BIJ EXCHANGE365_CU7;
SQL-integratie van Exchange en Salesforce foto 29

Figuur 29: Contact bijwerken

4. Een contactpersoon verwijderen

Het uitvoeren van het onderstaande statement zou het nieuw ingevoegde contact moeten verwijderen

EXEC ('DELETE FROM Contact WHERE [Email1EmailAddress] LIKE
"peter@gmail.com";") BIJ EXCHANGE365_CU7;
SQL-integratie van Exchange en Salesforce foto 30

Figuur 30: Contact verwijderen

4.4 SalesForce Linked Server configureren

We gaan de stappen volgen van sectie "4.2 MS Exchange Linked Server Configureren" behalve natuurlijk dat we de Connection String voor SalesForce gaan gebruiken. Na het volgen van deze stappen zou uw Linked Server met succes moeten zijn geconfigureerd zoals hieronder wordt getoond.

SQL-integratie van Exchange en Salesforce foto 31

Figuur 31: SalesForce Linked Server met succes geconfigureerd

4.5 Testen van Salesforce Linked Server

Zoals we eerder ook met MS Exchange Linked Server hebben gedaan, moeten we ervoor zorgen dat we de Basic Data Manipulation-taken kunnen uitvoeren via de SalesForce Linked Server.

Om de gids in te korten, test figuur 32 hieronder alle volgende beweringen

1. Contacten selecteren

Het uitvoeren van het onderstaande statement zou ons de contacten van SalesForce moeten geven.

SELECT GivenName, SurName, Email1EmailAddress FROM EXCHANGE365_CU7...Contact;

2. Een contactpersoon invoegen

Door het onderstaande statement uit te voeren, wordt een nieuw contact toegevoegd.

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

3. Een contactpersoon bijwerken

Door het onderstaande statement uit te voeren wordt de achternaam van de contactpersoon die we eerder hebben ingevoegd bijgewerkt

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

4. Een contactpersoon verwijderen

Het uitvoeren van het onderstaande statement zou het nieuw ingevoegde contact moeten verwijderen

EXEC ('DELETE FROM Contact WHERE [Email1EmailAddress] LIKE
"peter@gmail.com";") BIJ EXCHANGE365_CU7;
SQL-integratie van Exchange en Salesforce foto 32

Figuur 32: Testen van SalesForce Linked Server

4.6 Lokale Database tabel

Vanaf hier, moeten we een actuele lokale database hebben op onze lokale MS SQL Server. Als u er al een hebt, dan kunt u die gebruiken, anders moeten we een nieuwe database creëren. Ik heb een database aangemaakt genaamd ConnectingSoftware met 1 tabel genaamd LocalContacts. In die tabel is er slechts één record zoals hieronder getoond in Figuur 33.

Figuur 33: Tabel met lokale contacten

4.7 Replicatietabel trigger

SQL-integratie van Exchange en Salesforce foto 33

De eerste stap in onze oplossing is het repliceren van de wijzigingen in onze Lokale database tabel naar zowel SalesForce als Exchange. we gaan dit implementeren via tabel trigger.

SQL Script voor de trigger wordt hieronder getoond:

CREATE TRIGGER [dbo].[trgSyncContact]
OP [dbo].[LocalContacts]
NA INVOEGEN, BIJWERKEN, VERWIJDEREN
AS
BEGIN
declareer @Operation varchar(50)
@Voornaam nvarchar(max)
@LastName nvarchar(max) vastleggen
@Email declareren varchar(255)
@Deleted_FirstName nvarchar(max) vastleggen
@Verwijderde_LastName nvarchar(max) vastleggen
@Verwijderd_Email varchar(255) verklaren

ALS KOLOMMEN_BIJGEWERKT() > 0
BEGIN
--als we bijgewerkte kolommen hebben, dan hebben we ofwel een record ingevoegd of verwijderd
record
IF EXISTS (SELECT * FROM DELETED)
BEGIN
--als we waarden hebben verwijderd, dan was het een update operatie
SELECT @FirstName = inserted.FirstName, @LastName =
inserted.LastName, @Email = inserted.Email,
@Deleted_FirstName = deleted.FirstName,
@Deleted_LastName = deleted.LastName, @Deleted_Email =
verwijderd.Email
FROM deleted, inserted
--SalesForce
Exec ('UPDATE Contact SET FirstName = ?, LastName = ?, Email = ?
WHERE FirstName = ? en LastName = ? en Email = ?",
@FirstName, @LastName, @Email, @Deleted_FirstName,
@Deleted_LastName, @Deleted_Email) bij SALESFORCE_CBD;
--Exchange
EXEC ('UPDATE Contact SET GivenName = ?, SurName = ?
Email1EmailAddress = ? WHERE GivenName = ? en SurName =
? en Email1EmailAddress = ?", @FirstName, @LastName,
@Email, @Deleted_FirstName, @Deleted_LastName,
@Deleted_Email) bij EXCHANGE365_CU7;
END
ELSE
BEGIN
--als het geen update operatie was, dan was het een insert
SELECT @FirstName = FirstName, @LastName = LastName, @Email =
Email
FROM ingevoegd
--SalesForce
Exec ('Voeg in Contact (Voornaam, Achternaam, Email) waarden
(?,?,?)", @FirstName, @LastName, @Email) op
SALESFORCE_CBD;
--MS Exchange
EXEC ('Voeg in Contact (Voornaam, SurName,
Email1EmailAddress) values(?,?,?)", @FirstName,
@LastName, @Email) bij EXCHANGE365_CU7;
END
END
ELSE
BEGIN
--als de bewerking niet bijwerken/invoegen was dan was het verwijderen
SELECT @Deleted_Email = Email FROM deleted
--SalesForce
Exec ("Delete From Contact Where Email = ?", @Deleted_Email) op
SALESFORCE_CBD;
--MS Exchange
Exec ("Delete From Contact Where Email1EmailAddress = ?
@Deleted_Email) in EXCHANGE365_CU7;
END
EINDE

Waarschuwing: na het uitvoeren van het bovenstaande script, moeten we niets invoegen in de lokale database tabel totdat we synchroniseren tussen onze 2 doelsystemen (Exchange en SalesForce) en onze lokale database, anders kunnen we per ongeluk dubbele records krijgen omdat de logica hier niet controleert of een nieuw record al bestond op die doelsystemen.

4.8 Synchronisatie opgeslagen procedure

De tweede stap in onze oplossing is de synchronisatie tussen MS Exchange, SalesForce en onze tabel met lokale contactpersonen, zodat elk systeem dezelfde set contactpersonen heeft.

Om dat te doen gaan we een opgeslagen procedure schrijven. De logica van de procedure is om:

1. Zeer belangrijk om de trigger die we hierboven hebben aangemaakt uit te schakelen "omdat we de synchronisatie doen, moeten we de automatische replicatie die door de trigger wordt geïmplementeerd niet inschakelen"

2. Synchroniseer tussen SalesForce en mijn database
Het e-mailadres van een contactpersoon gebruiken als een overeenstemmende sleutel; Is er een contactpersoon in SalesForce en niet in mijn tabel Local Contacts?

a. Ja: Contact toevoegen aan mijn lokale contactpersonen tabel

b. Nee: Werk de voornaam en achternaam van een contactpersoon bij in mijn tabel met lokale contactpersonen

3. Synchroniseer tussen MS Exchange & mijn database
Gebruik het e-mailadres van een contactpersoon als een sleutel die overeenkomt; Is er een contactpersoon op Exchange en niet in mijn Local Contacts tabel?

a. Ja: Contact toevoegen aan mijn lokale contactpersonen tabel

b. Nee: Werk de voornaam en achternaam van een contactpersoon bij in mijn tabel met lokale contactpersonen

Op dit punt bevat mijn lokale tabel Contactpersonen alle contactpersonen uit zowel SalesForce als MS Exchange, naast de records die oorspronkelijk in de tabel stonden. Nu moeten we elk doelsysteem bijwerken met de contactpersonen van het andere doelsysteem en de lokale database

4. Update contacten op SalesForce (door contacten uit Exchange & mijn lokale tabel)

Het e-mailadres van een contactpersoon gebruiken als een overeenstemmende sleutel; Is er een contactpersoon in mijn tabel Local Contacts en niet in SalesForce?

a. Ja: Contact toevoegen aan SalesForce

b. Nee: Werk de voornaam en achternaam van een contactpersoon bij in SalesForce

5. Update contacten op Exchange (door contacten uit SalesForce & mijn lokale tabel)

Het e-mailadres van een contactpersoon gebruiken als een sleutel die overeenkomt; Is er een contactpersoon in mijn Local Contacts tabel en niet op Exchange?

a. Ja: Contact toevoegen aan MS Exchange

b. Nee: Werk de voornaam en achternaam van een contactpersoon bij op Exchange

6. Nu kunnen we de trigger inschakelen die we eerder hebben uitgeschakeld, zodat de automatische replicatie weer AAN is.

Het volgende SQL script zal de hierboven besproken logica implementeren

CREATE PROCEDURE [dbo].[uspInitSync]
-- Voeg hier de parameters voor de opgeslagen procedure toe
AS
BEGIN
-- SET NOCOUNT ON toegevoegd om te voorkomen dat extra result sets
-- interfereren met SELECT statements.
SET NOCOUNT ON;

--uitschakelen van trigger zodat, tijdens het invoegen vanuit SalesForce we niet eindigen in
--het opnieuw toevoegen van de contacten aan SalesForce
DISABLE TRIGGER [trgSyncContact] ON LocalContacts;

--gegevens van SalesForce samenvoegen in LocalDB
DECLARE @ImportedContacts Tabel(Voornaam nvarchar(max), Achternaam
nvarchar(max), E-mail varchar(255));

-contactpersonen bijwerken/invoegen in LocalDB met SalesForce als bron
MERGE LocalContacts AS doel
USING (SELECT voornaam, achternaam, e-mail FROM SalesForce_CBD...Contact)
ALS bron
ON (target.Email LIKE source.Email)
WANNEER GEVONDEN DAN
UPDATE SET FirstName = bron.FirstName, LastName =
bron.LastName
INDIEN NIET GEVONDEN DAN
INSERT (FirstName, LastName, Email)
VALUES (bron.voornaam, bron.achternaam, bron.e-mail)
OUTPUT ingevoegde.voornaam, ingevoegde.achternaam, ingevoegde.e-mail
INTO @ImportedContacts;

-geïntegreerde contacten in LocalDB van SalesForce weergeven
selecteer * uit @ImportedContacts;

-update/invoegen contacten in LocalDB met Exchange als bron
MERGE LocalContacts AS doel
USING (SELECT GivenName, SurName, Email1EmailAddress FROM
EXCHANGE365_CU7...Contact) AS source
ON (target.Email LIKE source.Email1EmailAddress)
WANNEER GEVONDEN DAN
UPDATE SET FirstName = bron.GivenName, LastName =
bron.SurName
INDIEN NIET GEVONDEN DAN
INSERT (FirstName, LastName, Email)
VALUES (bron.GivenName, bron.SurName,
bron.Email1EmailAddress)
OUTPUT ingevoegde.voornaam, ingevoegde.achternaam, ingevoegde.e-mail
INTO @ImportedContacts;

-ingebrachte contacten weergeven met behulp van tabelvariabele
selecteer * uit @ImportedContacts;

--kopieer nu alles naar SalesForce & Exchange zodat ze een exacte kopie hebben
-vanuit LocalDB nadat LocalDB gesynchroniseerd is met alle systemen
--Ik moet cursour en if gebruiken omdat het gebruik van insert....select....where not
--exists niet werkte met remote tabellen en ook merge niet werkt met
--remote tabellen
declareer @FirstName nvarchar(max)
@LastName nvarchar(max) opgeven
@Email varchar(255) verklaren
@SQL nvarchar(max) verklaren

DECLARE Contacts_cursor CURSOR FAST_FORWARD FOR
SELECT Voornaam, Achternaam, E-mail van LocalContacts;

OPEN Contacts_cursor
FETCH NEXT FROM Contacts_cursor INTO @FirstName, @LastName, @Email
TERWIJL @@FETCH_STATUS = 0
BEGIN
IF EXISTS (SELECT Email1EmailAddress FROM EXCHANGE365_CU7...Contact
WHERE Email1EmailAddress LIKE @Email)
EXEC ('UPDATE Contact SET GivenName = ?, SurName = ? WHERE
Email1EmailAddress = ?", @FirstName, @LastName, @Email)
in EXCHANGE365_CU7;
ELSE
EXEC ('Voeg in Contact (Gegevennaam, SurNaam,
Email1EmailAddress) values(?,?,?)", @FirstName,
@LastName, @Email) in EXCHANGE365_CU7;

IF EXISTS (SELECT Email FROM SalesForce_CBD...Contact WHERE Email LIKE
@Email)
Exec ('UPDATE Contact SET FirstName = ?, LastName = ? WHERE
Email = ?", @FirstName, @LastName, @Email) op
SalesForce_CBD;
ELSE
Exec ('Voeg in Contact (Voornaam, Achternaam, Email) waarden
(?,?,?)", @FirstName, @LastName, @Email) bij
SalesForce_CBD;

FETCH NEXT FROM Contacts_cursor INTO @FirstName, @LastName, @Email
END
CLOSE Contacts_cursor;
DEALLOCATE Contacts_cursor;

--activeer trigger zodat elke wijziging wordt weerspiegeld in online LOB
ENABLE TRIGGER [trgSyncContact] ON LocalContacts;
END

5. Oplossing in actie

De eerste stap is nu om de synchronisatie opgeslagen procedure "uspInitSync" uit te voeren, zoals hieronder getoond, de opgeslagen procedure werd zonder fouten uitgevoerd.

SQL-integratie van Exchange en Salesforce foto 34

Figuur 34: de opgeslagen synchronisatieprocedure uitvoeren

We konden ook zien dat er nieuwe contacten waren toegevoegd aan MS Exchange

SQL-integratie van Exchange en Salesforce foto 35

Figuur 35: Updates op MS Exchange

En nieuwe contacten toegevoegd aan SalesForce

SQL-integratie van Exchange en Salesforce foto 36

Figuur 36: Updates op SalesForce

En onze lokale database tabel heeft nu nieuwe contacten

SQL-integratie van Exchange en Salesforce foto 37

Figuur 37: Updates in de tabel Local Contacts

We kunnen de automatische replicatie ook in actie zien

1. Invoegen contact uit lokale database, verwijdert het uit SalesForce en Exchange

SQL-integratie van Exchange en Salesforce foto 38

Figuur 38: Replicatie invoegen

2. Updaten van contact in lokale database werkt het bij in SalesForce en Exchange

SQL-integratie van Exchange en Salesforce foto 39

Figuur 39: Update replicatie

3. Verwijderen van contactpersoon uit lokale database, verwijdert het uit SalesForce en Exchange

SQL-integratie van Exchange en Salesforce foto 40

Figuur 40: Replicatie verwijderen

6. Opmerkingen over de oplossing

We hebben geprobeerd de logica van de oplossing zo eenvoudig mogelijk te houden, maar de logica kan verder worden verbeterd en aangepast voor betere prestaties en complexere functies.

Meer info over dit product vindt u op de productpagina van CB Linked Server for Enterprise Applications.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

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

I agree to these terms.