About the series
This series will introduce you to two major areas related to Outlook Synchronization in Microsoft Dynamics CRM for Outlook:
Concepts & Rules
- 
Dynamics CRM Outlook client: Scenarios and Synchronization Rules 
- 
Dynamics CRM Outlook client: Organization DB table structures - Server side 
- 
Dynamics CRM Outlook client: Organization DB table structures - Client side 
- 
Dynamics CRM Outlook client: Settings that affect Synchronization & Tracking 
Troubleshooting
- 
Dynamics CRM Outlook client: Highlights and Simple Methodology for troubleshooting 
- 
Dynamics CRM Outlook client: Simple list of Troubleshooting Tools 
- 
Dynamics CRM Outlook client: Synchronization Scenarios - Changes to items in Outlook (ACT) 
- 
Dynamics CRM Outlook client: Synchronization Scenarios - Changes to items in Dynamics CRM (ACT) 
- 
Dynamics CRM Outlook client: Synchronization Scenarios - Track an item in Outlook (ACT) 
- 
Dynamics CRM Outlook client: Synchronization Scenarios - Merging overlapping changes 
Introduction
In order to further understand the Outlook Synchronization, let’s look at the organization database table structures of the Outlook Synchronization.
Microsoft Dynamics CRM for Microsoft Outlook stores and relies on tables structures from:
- 
Server-side: there are a couples of tables into the ordinary SQL Server organization database. 
- 
Client-side: the add-in also writes information to the client-side database files. 
For this article, let’s review the important tables for the server-side perspective.
Note: the described table structures are defined as follows for Dynamics CRM 2015 version and earlier. Dynamics CRM 2016 version and above has deployed meaningful changes. We will discuss this in detail in upcoming sections.
Subscription
Maps the system users with SyncEntry tables that they have.
| Column | Description | 
| SubscriptionId | matches the registry key HKCU\Software\Microsoft\MSCRMClient\{ORGID}\OutlookSyncSubscriptionId | 
| MachineName | identifies the machine for this sync subscription | 
| SystemUserId | identifies the user for this sync subscription | 
| SubscriptionType | 0 – Offline, 1 – Outlook, 2 – ABP | 
| SyncEntryTableName | contains the reference to SyncEntry tables | 
SyncEntry_<SubscriptionID>
Contains data related to the sync status for records sync’d with Outlook.
| Column | Description | 
| ObjectID | GUID of the record being synchronized to Outlook | 
| ObjectTypeCode | object type code of the entity for the record | 
| SyncState | 0 – Successfully moved to the client 1 – Needs to be moved to the client or updated 2 – Needs to be deleted from the client | 
SubscriptionClients
Contains data relating to each of the client machines.
| Column | Description | 
| ClientId | matches the registry key HKCU\Software\Microsoft\MSCRMClient\{ORGID}\OutlookSyncClientId | 
| MachineName | identifies the machine for this sync subscription | 
| SubscriptionId | matches the registry key HKCU\Software\Microsoft\MSCRMClient\{ORGID}\OutlookSyncSubscriptionId | 
| IsPrimaryClient | 1 – Means this is the primary sync client for this user | 
SubscriptionSyncInfo
Contains data about the previous synchronizations attempts for a client.
| Column | Description | 
| StartTime/EndTime | tracks the timestamps for that sync event | 
| DeletedObjectCount | how many records were deleted/removed | 
| InsertObjectCount | how many records were added | 
| SubsciptionId | the specific subscription for this sync event | 
| SyncResult | 0 – Failure 1 – Success | 
| DataSize | size of the data in bytes | 
Other tables
- 
SubscriptionStatistics_<SubscriptionId> Tracks the entity types for that subscription and flags whether a full sync is needed 
- 
SubscriptionManuallyTrackedObject Tracks the records in Outlook that were manually tracked 
- 
SubscriptionTrackingDeletedObject Tracks records that have been deleted 
There are a couple of other tables that support the Field Mapping feature:
- 
SyncAttributeMapping Tracks the sync direction and mapping between CRM and Exchange attributes 
- 
SyncAttributeMappingProfile Tracks the profile which defines sync attribute mapping 
- 
SystemUserSyncMappingProfiles This table stores the mapping between the SyncAttributeMappingProfile table and SystemUser table. 
- 
TeamSyncAttributeMappingProfiles This table stores the mapping between the SyncAttributeMappingProfile table and the Team Table. 
- 
PrincipalSyncAttributeMappingAccessMap This table stores the final mappings for a principal (user/team). 
 
		
 Like
Like Report
Report
*This post is locked for comments