Platform SDK: Exchange Server

The Process of Synchronization

The synchronization process begins when the agent process is started. This agent process may be a Windows NT service started by the system or a process run from a command prompt. Once the agent process is running, it performs two initialization steps:

The agent communicates with the collector only during this initialization. At all other times the agent communicates only with the synchronizer.

Once initialization has been completed, the agent makes periodic calls to the synchronizer requesting it to perform a defined synchronization. The synchronizer gathers and sends the changes and in turn makes a request to the collector to import the changes. The collector at the receiving information store imports the changes and, if the import was successful, sends a message indicating success. Following each successful import the synchronizer updates the synchronization state. This process continues until the requested synchronization is complete. The synchronizer then replies to the agent with a task-completion notification.

Two-way Replication

This process is similar for both synchronization and two-way replication. However, synchronization requires a single agent, collector, synchronizer, and synchronization state, while two-way replication requires a second collector, synchronizer, and synchronization state. The second synchronization state in a two-way replication is used by the synchronizer to verify that changes passed from one information store are not being returned, thus avoiding circular synchronization.

Two-way replication of information stores

During two-way replication, state information is shared between the collector and synchronizer pair of a single information store and not between the collector and synchronizer pair that are exchanging data.

Inter-site and inter-organization synchronization has additional complexity because of its distributed nature. The potential lack of network connectivity means that a direct connection between the collector and the synchronizer is not practical. In such cases a proxy collector must store the changes locally and propagate the changes to the remote site. An agent at the remote site can import the changes into the information store using the remote site collector. How the changes are propagated is an implementation decision for the designer of the collector at the receiving store.

Microsoft Exchange Server has implemented ICS using two collectors and two synchronizers. One collector/synchronizer pair is used for the hierarchy table of the folder being synchronized, and the other pair is used for the contents table of that folder.