Gentage synkronisering af slettede kontaktpersoner i Outlook

Synkronisering er blevet mere stabil, hurtigere og mere smidig med Opdateringspakke 7. I indlægget Sådan virker Outlook synkronisering efter Opdateringspakke 7 kan du læse hvordan de nye synkroniseringsmekanismer fungerer.

Dette indlæg handler om den problemstilling, der opstår hvis man sletter en kontaktperson, som er synkroniseret fra MS CRM til Outlook. Problemet består i, at slettede kontaktpersoner ikke, som udgangspunkt, vil blive synkroniseret igen, hvilket jo er ærgerligt hvis man er kommet til at slette kontaktpersonerne ved en fejl.

Et eksempel

I MS CRM er der oprettet 3 Kontaktpersoner:

De 3 Kontaktpersoner er synkroniseret over i Outlook:

 

Problemerne begynder...

I Outlook slettes nu 2 af de 3 Kontaktpersoner, så der kun er 1 Kontaktperson tilbage:

Hvis man, i Outlook, synkronisere igen (Benyt menuen CRM, Synkroniser med CRM), får man følgende meddelelse:

Meddelelsen indikerer, at 3 Kontaktpersoner er synkroniseret, men kun 1 Kontaktperson vises i Outlook.
 

Hvad er problemet?

Lad os kigge lidt på teknikken bagved synkroniseringen. I indlægget Sådan virker Outlook synkronisering efter Opdateringspakke 7 kan du læse hvordan de nye synkroniseringsmekanismer fungerer.

Der er to steder vi skal kigge nærmere på:

  1. I SQL Server Compact-databasen OutlookSyncCache.sdf, hvor vi skal have identificeret hvorfor de manglende Kontaktpersoner ikke synkroniseres.
     
  2. I <organisation>_MSCRM, hvor vi skal have identificeret nogle synkroniseringstabeller.

 

1. Synkroniseringstabellerne i databasen OutlookSyncCache.sdf

Databasen OutlookSyncCache.sdf finder du på klienten i mappen %AppData%\Microsoft\MSCRM\Client.
Da det er en SQL Server Compact Edition 3.0-database kan du benytte SQL Server 2008 Management Studio til at åbne databasen. Hvis du ikke allerede har denne kan du hente en gratis Express-udgave

Åbn derefter OutlookSyncCache.sdf.

Databasen indeholder følgende tabeller:

Opret en forespørgsel (Højreklik på øverste linje og vælg New Query).
Indtast følgende: select * from IdMappingTable
Klik på knappen Execute

Du vil nu se følgende resultat:

Ovenstående forespørgsel viser de 3 Kontaktpersoner, der er synkroniseret til Outlook.
Feltet Type indeholder ObjectTypeCode 2, hvilket er Kontaktpersoner.
Feltet IsDeletedLocally viser, at 2 af Kontaktpersonerne er slettet i Outlook (tallet 1, som er lig med True), og det er bl.a. derfor disse ikke synkroniseret til Outlook ved fremtidige synkroniseringer.
 

2. Identifikation af synkroniseringstabeller i <organisation>_MSCRM

Det er ikke nok at kigge på klientens OutlookSyncCache, vi skal også lige kigge på synkroniseringstabellerne i MS CRM-databasen <organisation>_MSCRM. Man kan identificerer synkroniseringstabellen på 2 måder - i Registreringsdatabasen eller MS CRM SQL Server:

Registreringsdatabasen
I Registreringsdatabasen kig under HKEY_CURRENT_USER\Software\Microsoft\MSCRMClient, og læg mærke til GUID'et. I dette tilfælde er det {B07B70C3-3D42-DF11-97CB-0003FF365955}.

MS CRM SQL Server
Åbn databasen <organisation>_MSCRM og opret evt. følgende forespørgsel (View):

SELECT     dbo.SystemUserBase.FullName, dbo.Subscription.SyncEntryTableName, dbo.SubscriptionClients.SubscriptionId
FROM         dbo.Subscription INNER JOIN
                      dbo.SubscriptionClients ON dbo.Subscription.SubscriptionId = dbo.SubscriptionClients.SubscriptionId INNER JOIN
                      dbo.SystemUserBase ON dbo.Subscription.SystemUserId = dbo.SystemUserBase.SystemUserId

Kørslen af forespørgslen giver følgende resultat:

Som det ses hedder synkroniseringstabellen SyncEntry_b07b70c33d42df1197cb0003ff365955, samme GUID fandt vi også i Registreringsdatabasen tidligere, dog uden bindestreger. Alle klienter, der er opsat til synkronisering (med eller uden offline-mulighed) har en SyncEntry_<GUID>-tabel.

Tabellen SyncEntry_b07b70c33d42df1197cb0003ff365955 indeholder følgende:

Indholdet er identisk med det vi tidligere fandt i Outlook's SQL Server Compact-database OutlookSyncCache i tabellen IdMappingTable.
 

Så skal Kontaktpersonerne gendannes...

Efterfølgende handler det om at få genskabt de 2 Kontaktpersoner i Outlook. Dette gøres på følgende måde:

  1. Slet de 2 registreringer, i SQL Server Compact-database OutlookSyncCache i tabellen IdMappingTable, som indeholder posterne hvor IsDeletedLocally er sat til 1. Dette gøres ved at:
    1. Oprette en oprette en forespørgsel (Højreklik på øverste linje og vælg New Query)
    2. Indtast følgende: delete from IdMappingTable where IsDeletedLocally = 1
    3. Klik på knappen Execute
       
  2. Slet alle registreringer i tabellen SyncEntry_b07b70c33d42df1197cb0003ff365955 (I databasen <organisation>_MSCRM). Dette kan evt. gøres med forespørgslen delete from [SyncEntry_b07b70c33d42df1197cb0003ff365955]
     
  3. I Outlook gennemføres en manuel synkronisering ved at vælge CRM, Synkroniser med CRM

De 2 slettede Kontaktpersoner skulle nu gerne være gendannet, således at Outlook nu indeholder alle 3 Kontaktpersoner igen.

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.