Sådan virker Outlook synkronisering

Som jeg tidligere har beskrevet, i mine kommentarer til Opdateringspakke 7, er der sket nogle fundamentale ændringer omkring Outlook og MS CRM, herunder specielt omkring synkronisering. Dette indlæg handler om netop dette.

Læs evt. også indlægget Gentage synkronisering af slettede kontaktpersoner i Outlook...

Hvad er det nye?

Den største nyhed er, at der nu anvendes SQL Server Compact Edition, på klienterne, til håndtering af synkronisering mellem Outlook og MS CRM. Det er ikke selve dataene, der lagres i SQL Compact-databaserne, men alene synkroniseringsoplysninger.

Hvis man har installeret MS CRM til Outlook uden offline-adgang, lagres dataene i Outlook (MAPI).
Hvis man har installeret MS CRM til Outlook med offline-adgang, lagres dataene henholdsvis SQL Server Express (som er installeret på klienten) og i Outlook (MAPI).

Hvordan håndteres synkroniseringen?

Synkroniseringen håndteres forskelligt. Dette afhænger af hvor man har oprettet eller opdateret sine data, da dette jo kan foregå i såvel Outlook som i webbrugerfladen til MS CRM.

Synkronisering af data oprettet eller redigeret i Outlook

Hvis man f.eks. har oprettet en Kontaktperson i Outlook, som skal synkroniseres over i MS CRM, skal man huske at spore denne "Spor i CRM". Hvis man har redigeret f.eks. en Kontaktperson, som allerede er sporet i MS CRM skal man ikke gøre yderligere.

Synkroniseringen fra Outlook til MS CRM foregår på følgende måde:

I de enkelte trin foregår følgende:

  1. Man opretter eller redigerer f.eks. en Kontaktperson. Hvis denne ikke er sporet "Spor til CRM" skal dette gøres.
     
  2. MS CRM til Outlook identificerer oprettelsen eller ændringen af Kontaktpersonen og...
      
  3. ...opdaterer tabellerne OutlookSyncTable og IDMappingTable opdateres, så Outlook er opdateret med hvad der er synkroniseret.
     
  4. Når synkroniseringen igangsættes (manuelt eller automatisk).
     
  5. Synkroniseringsprocessen sørger for, at opdatere MS CRM, herunder også tabellen SyncEntry_<GUID>.
     

Synkronisering af data oprettet eller redigeret i MS CRM

Hvis man f.eks. har oprettet eller redigeret en Kontaktperson i MS CRM, som skal synkroniseres over i Outlook, skal man, som sådan intet gøre.

Synkroniseringen fra MS CRM til Outlook foregår på følgende måde:

I de enkelte trin foregår følgende:

  1. MS CRM til Outlook (synkroniseringsprocessen) kalder prepareSync() processen på MS CRM Serveren.
     
  2. Processen prepareSync() undersøger hvad der skal synkroniseres, herunder hvad der tidligere er synkroniseret og hvilke objekter (f.eks. Kontaktpersoner) der er oprettet eller opdateret siden sidste synkronisering. Der kigges bl.a. i tabellen SyncEntry_<GUID>, hvor GUID er klientens unikke synkroniseringsID.
     
  3. Processen prepareSync() returnerer liste med ændringer i MS CRM. Denne sammenlignes med tabellerne OutlookSyncTable og IDMappingTable, og ændringer i forhold til disse udgør den egentlige nettoliste over elementer der skal synkroniseres.
     
  4. Tabellerne OutlookSyncTable og IDMappingTable opdateres, så Outlook er opdateret med hvad der er synkroniseret.
     
  5. Processen postSync() kaldes med en liste over de elementer der skal synkroniseres, og bl.a. tabellen SyncEntry_<GUID> opdateres.
     
  6. Outlook opdateres med de elementer som enten er nye eller opdaterede i MS CRM
     

Information om SQL Server Compact-databaserne

SQL Server Compact-databaserne er på klienten, altså derpå hvor MS CRM til Outlook er installeret, og findes på følgende lokation:

  • %AppData%\Microsoft\MSCRM\Client

Når man ikke har opsat MS CRM til Outllok med Offline-mulighed, så vil der eksisterer 2 databaser i mappen, nemlig:

  • EmailCache.sdf: Håndterer E-mail som er sendt fra MS CRM via Outlook.
  • OutlookSyncCache.sdf: Håndterer synkroniseringen af data mellem Outlook og MS CRM.

Databasen OutlookSyncCache.sdf indeholder følgende tabeller:

  • EmailSyncTable: Håndterer synkronisering af E-mail.
  • IdMappingTable: Holder styr på hvad samt status på det der er synkroniseret.
  • OutlookSyncTable: Holder styr på bl.a. hvad der er slettet og derfor skal fjernes eller ikke synkroniseres.

Tabellen IdMappingTable indeholder følgende kolonner/felter:

Kolonne Datatype
MapId Primary Key
CrmId uniqueidentifier
EntryId nvarchar (400)
ObjectType int
DeletedLocally bit
Linked bit
Visited bit
VerifiedTime datetime

Kolonnen DeletedLocally indikerer om man har slettet et element, f.eks. en Kontaktperson, fra Outlook. Er dette tilfældet vil denne ikke blive synkroniseret igen, hvilket kan "drille" lidt hvis man gerne vil have elementer synkroniseret igen. Denne problemstilling har jeg lavet et særlig tillæg om, læs mere om at Gentage synkronisering af slettede kontaktpersoner i Outlook...

Tabellen OutlookSyncTable indeholder følgende kolonner/felter:

Kolonne Datatype
ChangeId Primary Key
MapId Foreign Key
OutlookTimestamp datetime
OutlookChange int
CrmTimestamp datetime
CrmChange int

Kolonnerne OutlookTimestamp og CrmTimestamp identificerer hvilke elementer der er blevet opdateret sidst, hvilket har indflydelse på synkroniseringen. Den seneste overskriver den tidligere.
Kolonnerne OutlookChange og CrmChange identificerer i hvilke programmer (Outlook eller MS CRM) dataene er blevet ændret.

Læs evt. mere i følgende (Engelsk): Outlook_Synchronization_in_MS_CRM_4.0.pdf (504,98 kb)

Bliv medlem af CRMUG DK

De regionale afdelinger i CRMUG giver mulighed for a mødes med andre medlemmer af CRMUG i dit lokalområde. Hermed får du mulighed for at mødes ansigt til ansigt og vidensdele med andre brugere af Microsoft Dynamics CRM i dit område.

Læs mere den Danske afdeling af CRMUG...

Om Henrik Jensen

Jeg har altid fingeren på pulsen når det drejer sig om Microsofts produkter & teknologier, og især når det handler om Microsoft Dynamics CRM.

Henrik Jensen

Jeg har arbejdet professionelt i IT-branchen mere end 25 års, deraf mere end 18 år med CRM-systemer, og samtidig indehaver af mere end 50 Microsoft-certificeringer.

Mobil: +45 20 300 300
E-mail: hj@easyconsult.dk

EASYConsult ApS

Læs mere...

Downloads, værktøjer, installation og JScript

Downloade komponenter til MS CRM:
    • Microsoft Dynamics CRM 4.0
    • Microsoft Dynamics CRM 2011
    • Microsoft Dynamics CRM 2013
    • Microsoft Dynamics CRM 2015
    • Microsoft Dynamics CRM 2016

Liste over Opdateringspakker (Rollups):
    • Microsoft Dynamics CRM 4.0
    • Microsoft Dynamics CRM 2011
    • Microsoft Dynamics CRM 2013
    • Microsoft Dynamics CRM 2015
    • Microsoft Dynamics CRM 2016

Værktøjer til MS CRM:
    • Liste med værktøjer til MS CRM

Krav og opsætninger til installation:
    • Krav og opsætninger MS CRM 2011
    • Krav og opsætninger MS CRM 2013
    • Krav og opsætninger MS CRM 2015
    • Krav og opsætninger MS CRM 2016

JScript eksempelkode:
    • JScript eksempelkode

Diverse værktøjer:
    • Sysinternals
    • PowerShell og MS CRM 2011

Månedsliste

Forbehold

Alt hvad du læser på denne blog er alene udtryk for mine egne holdninger og meninger, og kan ikke henføres til andet end som så.

De løsninger jeg fremstiller på denne blog er ikke nødvendigvis testet i et driftsmiljø. Hvis du gør brug af mine løsninger er det på eget ansvar.