Integrazione SQL di Exchange e Salesforce

Integrazione SQL di Exchange e Salesforce

Georgii KapanadzeTechnical Leave a Comment

1. Argomento

1.1 Introduzione

Grazie al successo del nostro primo articolo tecnico che si può trovare qui abbiamo deciso di continuare. Questa volta daremo un'occhiata a come si può realizzare un'integrazione tra Exchange e Salesforce nel modo più semplice possibile. Utilizzeremo le query SQL.

Per l'integrazione utilizziamo CB Linked Server per applicazioni aziendali. Chiedeteci una prova gratuita del prodotto.

2. 2. Requisiti dello scenario

Lo scenario di integrazione qui richiesto è quello di sincronizzare tra una tabella di contatti del database locale, Exchange 365 contatti e SalesForce e di avere una replica immediata dalla tabella del database locale a questi 2 sistemi di destinazione. Questo potrebbe essere utile per avere un backup dei contatti offline o per creare un data warehouse o per altri motivi.

3. 3. Flusso di lavoro di base

3.1 Configurare l'analizzatore di query CB

Il primo passo è quello di assicurarsi di essere in grado di connettersi al sistema target (Exchange & SalesForce nel nostro scenario); il modo più semplice per farlo è tramite CB Query Analyzer. Qui ho già configurato il mio server ConnectBridge tramite lo strumento di amministrazione per connettermi all'MS Exchange 365 e a SalesForce creando i gruppi e gli utenti richiesti. Ho creato un nome utente chiamato "martin" con password "1234”. Questo utente ha i diritti per connettersi a Exchange 365 e SalesForce. Ora da Query Analyzer creerò 2 connessioni ad ogni sistema di destinazione e mi assicurerò di potermi collegare con successo.

Integrazione SQL di Exchange e Salesforce

Figura 1: Amministrazione dei conti

Integrazione SQL di Exchange e Salesforce immagine 2

Figura 2: Amministrazione di gruppi e utenti

Image

Figura 3: Connessioni dell'analizzatore di interrogazione

3.2 Testare le proprie dichiarazioni

Come mostrato sopra, abbiamo una configurazione e una connessione di successo con entrambi i sistemi di destinazione. Ora possiamo testare le nostre affermazioni

3.2.1 Contatti Exchange

Sul mio conto Exchange, ho 3 contatti come indicato di seguito

Image

Figura 4: Contatti Exchange

Ora testeremo le 4 operazioni di base SELEZIONA, INSERISCI, AGGIORNA & CANCELLA

1. 1. Selezione dei contatti

L'esecuzione della seguente dichiarazione dovrebbe fornirci i 3 contatti mostrati nella Figura 5.

SELEZIONARE [NomeDato],[Cognome],[Email1EmailAddress] DA [Contatto];
Integrazione SQL di Exchange e Salesforce immagine 5

Figura 5: Selezione dei contatti

2. 2. Inserimento di un contatto

Eseguendo la seguente dichiarazione si dovrebbe inserire un nuovo contatto mostrato in Figura 6

INSERT INTO Contact([GivenName],[SurName],[Email1EmailAddress]) VALUES ('Peter','K.', 'peter@gmail.com');
Integrazione SQL di Exchange e Salesforce immagine 6

Figura 6: Inserimento di un nuovo contatto

3. 3. Aggiornamento di un contatto

L'esecuzione della seguente dichiarazione dovrebbe aggiornare il cognome del contatto che abbiamo inserito in precedenza, come mostrato nella Figura 7

UPDATE Contact SET [SurName] = 'Keys' WHERE [Email1EmailAddress] LIKE 'peter@gmail.com';
Integrazione SQL di Exchange e Salesforce immagine 7

Figura 7: Aggiornamento del contatto

4. 4. Cancellare un contatto

Eseguendo la seguente dichiarazione si dovrebbe cancellare il contatto appena inserito come mostrato in Figura 8

DELETE FROM Contact WHERE [Email1EmailAddress] LIKE 'peter@gmail.com';
Integrazione SQL di Exchange e Salesforce immagine 8

Figura 8: Cancellazione del contatto

3.2.2 Contatti forza vendita

Sul mio account SalesForce, ho 17 contatti come indicato di seguito

Integrazione SQL di Exchange e Salesforce immagine 9

Figura 9: Contatti SalesForce

Ora testeremo le stesse 4 operazioni di base SELEZIONARE, INSERIRE, AGGIORNARE & CANCELLARE.

1. 1. Selezione dei contatti

L'esecuzione della seguente dichiarazione dovrebbe fornirci i 17 contatti mostrati nella Figura 10.

SELEZIONARE [Nome],[Cognome],[Email] DA [Contatto];
Integrazione SQL di Exchange e Salesforce immagine 10

Figura 10: Selezione dei contatti

2. 2. Inserimento di un contatto

Eseguendo la seguente dichiarazione si dovrebbe inserire un nuovo contatto mostrato in Figura 11

INSERT INTO Contact([Firstname],[LastName],[Email]) VALUES ('Peter','K.', 'peter@gmail.com');
Integrazione SQL di Exchange e Salesforce immagine 11

Figura 11: Inserimento di un nuovo contatto

3. 3. Aggiornamento di un contatto

L'esecuzione della seguente dichiarazione dovrebbe aggiornare il cognome del contatto che abbiamo inserito in precedenza, come mostrato in Figura 12

UPDATE Contact SET [LastName] = 'Keys' WHERE [Email] = 'peter@gmail.com';
Integrazione SQL di Exchange e Salesforce immagine 12

Figura 12: Aggiornamento del contatto

4. 4. Cancellare un contatto

Eseguendo la seguente dichiarazione si dovrebbe cancellare il contatto appena inserito come mostrato in Figura 13

DELETE FROM Contact WHERE [Email] = 'peter@gmail.com';
Integrazione SQL di Exchange e Salesforce immagine 13

Figura 13: Cancellazione del contatto

3.3 Copiare il collegamento e le dichiarazioni

Ora sappiamo che siamo in grado di selezionare, aggiornare, inserire e cancellare i contatti da Exchange & SalesForce. Quello che dobbiamo fare ora è copiare la stringa di connessione da Query Analyzer e le nostre dichiarazioni testate per utilizzarle successivamente nella nostra soluzione MS SQL Server.

Per copiare la connessione dall'analizzatore di interrogazione, basta cliccare con il tasto destro del mouse sulla connessione, cliccare su Modifica e andare alla scheda Avanzate e copiare il testo da lì come mostrato in Figura 14.

Integrazione SQL di Exchange e Salesforce immagine 14

Figura 14: Copia della stringa di connessione da Query Analyzer

Ecco le mie stringhe di connessione per entrambi i sistemi di destinazione.

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'.

Ora siamo pronti per aprire MS SQL Server e iniziare ad implementare la nostra soluzione di integrazione SQL Server.

4. 4. Soluzione Passeggiata della soluzione

4.1 MS SQL Server

Per poter lavorare con fonti di dati esterne tramite la funzione SQL Server Linked Server, dobbiamo fare le seguenti configurazioni

1. 2. Avviare Microsoft SQL Server Management Studio ed effettuare il login utilizzando l'autenticazione di Windows o il nome utente e la password come mostrato di seguito nella Figura 15

Integrazione SQL di Exchange e Salesforce immagine 15

Figura 15: Schermata di accesso a MS SQL Server Management Studio Login

Integrazione SQL di Exchange e Salesforce immagine 16

Figura 16: Proprietà MSDASQL

2. 2. Navigare verso Oggetti Sever -> Server collegati -> Fornitori -> MSDASQL espandendo i nodi corrispondenti come mostrato in Figura 16. Cliccare con il tasto destro del mouse su MSDASQL - Microsoft Data Access SQL - e selezionare Proprietà per mostrare la finestra di dialogo in Figura 17

Integrazione SQL di Exchange e Salesforce immagine 17

Figura 17: Impostazioni delle proprietà MSDASQL

3. Dobbiamo assicurarci che le seguenti impostazioni/opzioni siano controllate:

a. Solo livello zero: Per motivi di sicurezza dobbiamo garantire che siano supportati solo i provider OLE DB conformi all'interfaccia OLE DB di livello 0.

b. Consentire l'inprocess: consentire ai provider di dati - "fonti di dati esterne" - di essere istanziati come server in-process - "nello stesso processo di MS SQL Server". Ciò è necessario per evitare il passaggio di informazioni di autenticazione tra MS SQL Server e il provider e per poter lavorare con tipi di dati come (varchar(max), nvarchar(max), varbinary(max), text, ntext o image). Senza l'abilitazione di questa opzione, non sarà possibile ottenere un dato di tipo immagine da Exchange - ad esempio - e inserirlo nel nostro database MS SQL Server.

4. Ora dobbiamo consentire a MS SQL Server di connettersi a provider esterni ed eseguire query per interrogare i dati di provider esterni che utilizzano l'OLEDB - chiamiamoli " ".Fonti di dati OLEDB esterne”. Lo faremo in 3 passi:

a. Dobbiamo aprire una nuova finestra Query facendo clic sul pulsante New Query (Nuova Query) come mostrato nella Figura 18 qui sotto. Non importa quale database sia attivo, perché ciò che faremo avrà un impatto sull'intera installazione di MS SQL Server e, a sua volta, su tutti i database presenti. Come mostrato di seguito ho "master" come database attivo/target

Integrazione SQL di Exchange e Salesforce immagine 18

Figura 18: MS SQL Server Query Analyzer

b. Dobbiamo riconfigurare MS SQL Server in modo da poter modificare/configurare le sue opzioni avanzate. Per fare ciò, dobbiamo eseguire una stored procedure chiamata "sp_configure" - è una stored procedure di sistema preinstallata - e dobbiamo specificare "show advanced options" (mostra opzioni avanzate), impostando questa opzione su 1. Per fare ciò, digitiamo "exec sp_configure 'show advanced options', 1; reconfigure" e premiamo F5 per eseguire. Se tutto è andato per il verso giusto, si dovrebbe ottenere un messaggio simile a quello della Figura 19 qui sotto

Figura 19: MS SQL Server - Visualizzazione delle opzioni avanzate

Integrazione SQL di Exchange e Salesforce immagine 19

c. Ora dobbiamo permettere a MS SQL Server di interrogare quelli "Fonti di dati OLEDB esterne"usando qualcosa chiamato"Quesiti distribuiti ad hoc". Per impostazione predefinita, MS SQL Server non consente le "Ad Hoc Distributed Queries", pertanto è necessario riconfigurare questa opzione avanzata - ecco perché abbiamo eseguito il passaggio precedente - eseguendo la stored procedure "sp_configure" passando l'impostazione "Ad Hoc Distributed Queries" e il valore 1 per abilitarla. Se tutto è andato per il verso giusto, dopo l'esecuzione di "exec sp_configure 'Ad Hoc Distributed Queries', 1; reconfigure" si dovrebbe ottenere un messaggio simile a quello della Figura 20 che segue.

Integrazione SQL di Exchange e Salesforce immagine 20

Figura 20: MS SQL Server - Abilitazione delle query distribuite ad hoc

Ora possiamo aggiungere tutti i Linked Server che vogliamo, dato che il nostro MS SQL Server è correttamente configurato per consentirlo.

4.2 Configurazione del server collegato MS Exchange

1. Navigare verso Oggetti Sever -> Server collegati. Cliccare con il tasto destro del mouse su Server collegati e scegliere Nuovo server collegato come mostrato nella seguente Figura 21

Integrazione SQL di Exchange e Salesforce immagine 21

Figura 21: MS SQL Server - Aggiunta di un nuovo server collegato

2. 2. Nella nuova finestra di dialogo del nuovo Linked Server, come mostrato nella Figura 22 qui sotto, è necessario fornire quanto segue:

a. Nome del server collegatopotrebbe essere qualsiasi nome valido, scelgo Exchange365_CU7.

b. Fornitoredeve essere "Microsoft OLE DB Providers for ODBC Drivers", poiché ConnectBridge sta utilizzando ODBC.

c. Stringa del fornitoreQui incolliamo la stringa di connessione che abbiamo copiato in precedenza da query Analyzer.

Integrazione SQL di Exchange e Salesforce immagine 22

Figura 22: MS SQL Server - Configurazione di un nuovo server collegato - Generale

3.Ora dobbiamo stabilire una relazione tra l'utente che utilizza/accede a MS SQL Server e l'utente che utilizza/accede a CB. L'utente che utilizza MS SQL Server si chiama Local Login (nel nostro scenario è "sa") e l'utente che utilizza/accede al CB si chiama Remote User (nel nostro scenario è Martin con login martin). Questo è ciò che dobbiamo configurare, e per farlo clicchiamo".sicurezza" per mostrare la finestra di dialogo nella Figura 23 qui sotto

Integrazione SQL dell'immagine Exchange e Salesforce

Figura 23: MS SQL Server - Configurazione di un nuovo server collegato - Sicurezza

4. Quando viene visualizzata la finestra di dialogo di cui sopra, facciamo clic sul pulsante Aggiungi e digitiamo il Login locale e l'utente remoto come concordato. Questo è quello che ho fatto qui in Figura 24

Integrazione SQL di Exchange e Salesforce immagine 24

Figura 24: MS SQL Server - Configurazione di un nuovo server collegato - Loghi

5. Ok, so che vuoi chiudere il dialogo, ma aspetta, dobbiamo fare un altro passo. Ora dobbiamo andare su "...Opzioni del server" sul lato sinistro per mostrare la finestra di dialogo in Figura 25 qui sotto e abilitare 2 funzioni

a. RPCper attivare una certa funzione di sicurezza di cui avremmo bisogno quando utilizziamo una funzione legacy chiamata Server remoto - non preoccupatevi ora - in modo che la convalida del login tra CB e MS SQL Server sia possibile

b. RPC Out: per abilitare "Chiamata di procedura a distanza", in quanto dobbiamo permettere alle nostre procedure memorizzate di funzionare in remoto

Integrazione SQL di Exchange e Salesforce immagine 25

Figura 25: MS SQL Server - Configurazione di un nuovo server collegato - Opzioni del server

6. Ora clicchiamo bene e abbiamo finito! Sì! Abbiamo configurato MS SQL Server per la connessione a Exchange. Ora possiamo vedere la piattaforma Exchange come un database in MS SQL Server, possiamo vedere la tabella chiamata Contatti, possiamo mostrare una lista di contatti da Exchange, tutto questo, senza accedere al database Exchange come si può vedere nella Figura 26 qui sotto

Integrazione SQL di Exchange e Salesforce

Figura 26: MS SQL Server - Server collegato configurato con successo

4.3 Test del server collegato MS Exchange

Prima di sviluppare la nostra soluzione di integrazione, dobbiamo essere sicuri di essere in grado di eseguire la manipolazione dei dati di base su MS Exchange tramite il nostro Linked Server appena configurato.

1. 1. Selezione dei contatti

L'esecuzione della seguente dichiarazione dovrebbe fornirci i 3 contatti dell'MS Exchange.

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

Perché il "..."? Perché segue la sintassi SERVER.DATABASE.SCHEMA.TABLE e come si può vedere dalla Figura 26 sopra, il nostro Server è Exchange365_CU7, il nostro database è "senza nome" il nostro schema è "senza nome" e infine la nostra tabella è Contatti.

Integrazione SQL di Exchange e Salesforce

Figura 27: Selezione dei contatti

2. 2. Inserimento di un contatto

Eseguendo la seguente dichiarazione si dovrebbe inserire un nuovo contatto.

EXEC ('INSERT INTO Contact([GivenName], [SurName], [Email1EmailAddress])
VALUES ("Peter", "K.", "peter@gmail.com");') AT EXCHANGE365_CU7;
Integrazione SQL di Exchange e Salesforce immagine 28

Figura 28: Inserimento di un nuovo contatto

3. 3. Aggiornamento di un contatto

L'esecuzione della seguente dichiarazione dovrebbe aggiornare il cognome del contatto che abbiamo inserito in precedenza

EXEC('UPDATE Contact SET [SurName] = "Keys" WHERE [Email1EmailAddress] LIKE
"peter@gmail.com";') IN EXCHANGE365_CU7;
Integrazione SQL di Exchange e Salesforce immagine 29

Figura 29: Aggiornamento del contatto

4. 4. Cancellare un contatto

Eseguendo la seguente dichiarazione si dovrebbe cancellare il contatto appena inserito

EXEC ('DELETE FROM Contact WHERE [Email1EmailAddress] LIKE
"peter@gmail.com";') IN EXCHANGE365_CU7;
Integrazione SQL di Exchange e Salesforce immagine 30

Figura 30: Cancellazione del contatto

4.4 Configurazione di SalesForce Linked Server

Seguiremo i passi della sezione "4.2 Configurazione di MS Exchange Linked Server", eccetto naturalmente l'utilizzo della Stringa di Connessione per SalesForce. Dopo aver seguito questi passi, il vostro Linked Server dovrebbe essere configurato con successo come mostrato di seguito.

Integrazione SQL di Exchange e Salesforce immagine 31

Figura 31: Server di SalesForce Linked Server Configurato con successo

4.5 Test di Salesforce Linked Server

Come abbiamo fatto in precedenza anche con MS Exchange Linked Server, dobbiamo assicurarci di essere in grado di eseguire i compiti di base di manipolazione dei dati tramite il server collegato di SalesForce.

Per abbreviare la guida, la Figura 32 qui sotto sta testando tutte le seguenti affermazioni

1. 1. Selezione dei contatti

L'esecuzione della seguente dichiarazione dovrebbe fornirci i contatti di SalesForce.

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

2. 2. Inserimento di un contatto

Eseguendo la seguente dichiarazione si dovrebbe inserire un nuovo contatto.

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

3. 3. Aggiornamento di un contatto

L'esecuzione della seguente dichiarazione dovrebbe aggiornare il cognome del contatto che abbiamo inserito in precedenza

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

4. 4. Cancellare un contatto

Eseguendo la seguente dichiarazione si dovrebbe cancellare il contatto appena inserito

EXEC ('DELETE FROM Contact WHERE [Email1EmailAddress] LIKE
"peter@gmail.com";') IN EXCHANGE365_CU7;
Integrazione SQL di Exchange e Salesforce immagine 32

Figura 32: Test del server collegato SalesForce

4.6 Tabella database locale

Da qui, abbiamo bisogno di avere un vero e proprio database locale sul nostro Local MS SQL Server. Se ne avete già uno, allora potreste usarlo, altrimenti dobbiamo creare un nuovo Database. Ho creato un Database chiamato ConnectingSoftware con 1 tabella chiamata LocalContacts. In quella tabella c'è un solo record come mostrato in Figura 33.

Figura 33: Tabella dei contatti locali

4.7 Trigger della tabella di replica

Integrazione SQL di Exchange e Salesforce immagine 33

Il primo passo della nostra soluzione è quello di replicare le modifiche nella nostra tabella del database locale sia a SalesForce che a Exchange.

Di seguito viene mostrato lo script SQL per il trigger:

CREARE TRIGGER [dbo]. [trgSyncContact].
ON [dbo]. [LocalContacts].
DOPO L'INSERIMENTO, L'AGGIORNAMENTO, LA CANCELLAZIONE
AS
INIZIO
dichiarare @Operazione varchar(50)
dichiarare @NomeNome nvarchar(max)
dichiarare @LastName nvarchar(max)
dichiarare @Email varchar(255)
dichiarare @Deleted_FirstName_FirstName nvarchar(max)
dichiarare @Cancellato_LastNameName nvarchar(max)
dichiarare @Deleted_Email varchar(255)

SE COLONNE_AGGIORNATE() > 0
INIZIO
--se abbiamo aggiornato le colonne, allora abbiamo inserito o cancellato una colonna
Registrare
SE ESISTE (SELEZIONARE * DA CANCELLATO)
INIZIO
--se abbiamo cancellato dei valori, allora si è trattato di un'operazione di aggiornamento
SELECT @FirstName = inserito.FirstName, @LastName =
Inserito.LastName, @Email = inserito.Email,
@Deleted_FirstName = cancellato.FirstName,
@Deleted_LastName = cancellato.LastName, @Deleted_Email =
cancellato.e-mail
DA cancellato, inserito
--SalesForce
Exec ('UPDATE Contact SET FirstName = ?, LastName = ?, Email = ?
WHERE FirstName = ? e LastName = ? e Email = ?',
@FirstName, @LastName, @Email, @Deleted_FirstName,
@Deleted_LastName, @Deleted_Email) presso SALESFORCE_CBD;
--Exchange
EXEC ('UPDATE Contact SET GivenName = ?, SurName = ?,
Email1EmailAddress = ? DOVE GivenName = ? e SurName =
e Email1EmailAddress = ?', @FirstName, @LastName,
@Email, @Cancellato_Nome_PrimoNome, @Cancellato_LastName,
@Cancellato_Email) in EXCHANGE365_CU7;
FINE
ELSE
INIZIO
--se non era un'operazione di aggiornamento, allora è stato inserito
SELEZIONA @FirstName = Nome, @LastName = Cognome, @Email =
Invia un'e-mail a
DA inserito
--SalesForce
Exec ('Inserisci nei valori di Contact (FirstName, LastName, Email)
(?,?,?,?)', @FirstName, @LastName, @Email) a
SALESFORCE_CBD;
--MS Exchange
EXEC ('Inserisci nel contatto (GivenName, SurName,
Valori Email1EmailAddress) (?,?,?,?)', @FirstName,
@LastName, @Email) a EXCHANGE365_CU7;
FINE
FINE
ELSE
INIZIO
--se l'operazione non è stata aggiornata/inserita, allora è stata cancellata
SELECT @Deleted_Email = Email DA cancellato
--SalesForce
Exec ('Delete From Contact Where Email = ?', @Deleted_Email) a
SALESFORCE_CBD;
--MS Exchange
Exec ('Cancella dal contatto dove Email1EmailAddress = ?',
@Cancellati_Email) a EXCHANGE365_CU7;
FINE
FINE

Attenzione: dopo aver eseguito lo script di cui sopra, non dovremmo inserire nulla dalla tabella del database locale fino a quando non ci sincronizziamo tra i nostri 2 sistemi di destinazione (Exchange e SalesForce) e il nostro database locale, altrimenti potremmo finire per duplicare accidentalmente i record, poiché la logica qui non controlla se un nuovo record esisteva già su quei sistemi di destinazione.

4.8 Procedura di sincronizzazione memorizzata

Il secondo passo della nostra soluzione è la sincronizzazione tra MS Exchange, SalesForce e la nostra tabella dei contatti locali, in modo che ogni sistema abbia la stessa serie di contatti.

Per farlo scriveremo una procedura memorizzata. La logica della procedura è quella di:

1. Molto importante per disabilitare il trigger che abbiamo creato sopra "poiché stiamo facendo la sincronizzazione, non dobbiamo abilitare la replica automatica implementata dal trigger".

2. Sincronizzare tra SalesForce e il mio database
Utilizzo dell'indirizzo e-mail del contatto come chiave di corrispondenza; C'è un contatto su SalesForce e non nella mia tabella dei Contatti locali?

a. Sì: Aggiungi un contatto alla mia tabella dei contatti locali

b. No: Aggiornare il nome e il cognome del contatto nella mia tabella dei contatti locali

3. 3. Sincronizzare tra MS Exchange e il mio database
Utilizzo dell'indirizzo e-mail del contatto come chiave di corrispondenza; C'è un contatto su Exchange e non nella mia tabella dei Contatti locali?

a. Sì: Aggiungi un contatto alla mia tabella dei contatti locali

b. No: Aggiornare il nome e il cognome del contatto nella mia tabella dei contatti locali

A questo punto, la mia tabella Contatti locale ha tutti i contatti sia di SalesForce che di MS Exchange oltre ai record che erano originariamente nella tabella. Ora abbiamo bisogno di aggiornare ogni sistema di destinazione dai contatti dell'altro sistema di destinazione e dal database locale

4. Aggiornare i contatti su SalesForce (tramite i contatti di Exchange e la mia tabella locale)

Utilizzo dell'indirizzo e-mail del contatto come chiave di corrispondenza; C'è un contatto nella mia tabella dei Contatti locali e non su SalesForce?

a. Sì: Aggiungi un contatto a SalesForce

b. No: Aggiorna il nome e il cognome del contatto su SalesForce

5. Aggiornare i contatti su Exchange (tramite i contatti di SalesForce & my local table)

Utilizzo dell'indirizzo e-mail del contatto come chiave di corrispondenza; C'è un contatto nella mia tabella dei Contatti locali e non su Exchange?

a. Sì: Aggiungere un contatto all'MS Exchange

b. No: Aggiornare nome e cognome del contatto su Exchange

6. Ora, possiamo attivare il trigger che abbiamo disabilitato in precedenza, quindi la replica automatica è di nuovo attiva.

Il seguente script SQL implementerà la logica discussa sopra

PROCEDURA DI CREAZIONE [dbo]. [uspInitSync].
-- Aggiungete qui i parametri per la procedura memorizzata
AS
INIZIO
-- SET NOCOUNT ON aggiunto per evitare che set di risultati extra da
-- interferendo con le dichiarazioni di SELEZIONE.
IMPOSTARE NOCOUNT ON;

--disattivare il trigger in modo che, pur inserendo da SalesForce non finiamo in
--aggiungere di nuovo i contatti a SalesForce
DISABILITA TRIGGER [trgSyncContact] ON LocalContacts;

--mettere insieme i record da SalesForce a LocalDB
DICHIARAZIONE @ImportatoTabella dei contatti(NomeNome nvarchar(max), Cognome
nvarchar(max), Email varchar(255));

-aggiornare / inserire contatti in LocalDB utilizzando SalesForce come fonte
MERGE LocalContacts AS target
UTILIZZO (SELEZIONARE Nome, Cognome, Email DA SalesForce_CBD...Contatto)
AS fonte
ON (target.Email LIKE source.Email)
SE ABBINATO ALLORA
UPDATE SET FirstName = fonte.FirstName, LastName =
fonte.cognome
QUANDO NON È ABBINATO, ALLORA
INSERIRE (Nome, Cognome, Email)
VALORI (fonte: nome, cognome, origine, e-mail)
USCITA inserito.Nome, inserito.Cognome, inserito.Email
INTO @ImportedContacts;

--mostrate i contatti inseriti in LocalDB da SalesForce
selezionare * da @ImportedContacts;

-aggiornare / inserire contatti nel LocalDB utilizzando Exchange come sorgente
MERGE LocalContacts AS target
UTILIZZO (SELEZIONA NOME, Cognome, Email1EmailAddress DA
EXCHANGE365_CU7...Contatto) AS fonte
ON (target.Email LIKE source.Email1EmailAddress)
SE ABBINATO ALLORA
UPDATE SET FirstName = fonte.GivenName, LastName =
fonte.SurName
QUANDO NON È ABBINATO, ALLORA
INSERIRE (Nome, Cognome, Email)
VALORI (fonte.GivenName, fonte.SurName,
source.Email1EmailAddress)
USCITA inserito.Nome, inserito.Cognome, inserito.Email
INTO @ImportedContacts;

--display contatti inseriti utilizzando la variabile della tabella
selezionare * da @ImportedContacts;

--ora copia tutto su SalesForce & Exchange in modo che abbiano una copia esatta
--dal LocalDB dopo che il LocalDB è sincronizzato con tutti i sistemi
--Devo usare cursour e se, perché usando insert....select.... dove non c'è
--esiste non funzionava con i tavoli remoti e anche la fusione non funziona con
--tavole a distanza
Dichiarare @NomeNome nvarchar(max)
dichiarare @LastName nvarchar(max)
dichiarare @Email varchar(255)
dichiarare @SQL nvarchar(max)

DICHIARAZIONE Contatti_cursore CURSORE FAST_FORWARD PER
SELEZIONA Nome, Cognome, Email da LocalContacts;

APRI Contatti_cursore
FETCH NEXT DA CONTATTI_cursor INTO @Nome, @LastName, @Email
MENTRE @@FETCH_STATUS = 0
INIZIO
SE ESISTE (SELEZIONARE Email1EmailAddress DA EXCHANGE365_CU7...Contatto
DOVE DOVE Email1EmailAddress LIKE @Email)
EXEC ('UPDATE Contact SET GivenName = ?, SurName = ? DOVE
Email1EmailAddress = ?', @FirstName, @LastName, @Email)
al EXCHANGE365_CU7;
ELSE
EXEC ('Inserisci nel contatto (GivenName, SurName,
Valori Email1EmailAddress) (?,?,?,?)', @FirstName,
@LastName, @Email) a EXCHANGE365_CU7;

SE ESISTE (SELEZIONARE e-mail da SalesForce_CBD...Contattate DOVE PIACEREVOLE e-mail
@Email)
Exec ('UPDATE Contact SET FirstName = ?, LastName = ? DOVE
Email = ?', @FirstName, @LastName, @Email) a
SalesForce_CBD;
ELSE
Exec ('Inserisci nei valori di Contact (FirstName, LastName, Email)
(?,?,?,?)', @FirstName, @LastName, @Email) a
SalesForce_CBD;

FETCH NEXT DA CONTATTI_cursor INTO @Nome, @LastName, @Email
FINE
CHIUDI Contatti_cursore;
Contatti_cursore;

--attivare il trigger in modo che ogni modifica si rifletta nel LOB online
TRIGGER ANABILE [trgSyncContact] ON LocalContacts;
FINE

5. 5. Soluzione in azione

Ora il primo passo è quello di eseguire la procedura di sincronizzazione memorizzata "uspInitSync" come mostrato di seguito, la procedura memorizzata è stata eseguita senza errori.

Integrazione SQL di Exchange e Salesforce immagine 34

Figura 34: esecuzione della procedura di sincronizzazione memorizzata

Abbiamo anche potuto constatare l'aggiunta di nuovi contatti all'MS Exchange

Integrazione SQL di Exchange e Salesforce immagine 35

Figura 35: Aggiornamenti su MS Exchange

E nuovi contatti aggiunti a SalesForce

Integrazione SQL di Exchange e Salesforce immagine 36

Figura 36: Aggiornamenti su SalesForce

E la nostra tabella del database locale sta avendo nuovi contatti

Integrazione SQL di Exchange e Salesforce immagine 37

Figura 37: Aggiornamenti nella tabella dei contatti locali

Possiamo vedere la replica automatica in azione anche

1. 2. Inserendo il contatto dal database locale, lo cancella da SalesForce e Exchange

Integrazione SQL di Exchange e Salesforce immagine 38

Figura 38: Inserire la replica

2. L'aggiornamento del contatto nel database locale lo aggiorna in SalesForce e Exchange

Integrazione SQL di Exchange e Salesforce immagine 39

Figura 39: Aggiornamento della replica

3. 3. Cancellare il contatto dal database locale, lo cancella da SalesForce e Exchange

Integrazione SQL di Exchange e Salesforce immagine 40

Figura 40: Cancellare la replica

6. Note sulla soluzione

Abbiamo cercato di mantenere la logica della soluzione il più semplice possibile, ma la logica potrebbe essere ulteriormente migliorata e perfezionata per ottenere prestazioni migliori e caratteristiche più complesse.

Potete trovare maggiori informazioni su questo prodotto nella pagina del prodotto di CB Linked Server for Enterprise Applications.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

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