Sample: Synchronize data with external systems using change tracking

This sample code shows how to retrieve changes from an entity and synchronize data with external systems by using the RetrieveEntityChanges message with the RetrieveEntityChangesRequest and RetrieveEntityChangesResponse classes. You can download the sample from here.

Note

This sample applies to both Dynamics 365 Customer Engagement (on-premises) and Dataverse.

For more information about the feature that this sample demonstrates, see Use change tracking to synchronize data with external systems.

How to run this sample

To obtain a local copy of all samples and build them, follow these steps:

  1. Download or clone the Samples repo so that you have a local copy.
  2. (Optional) Edit the dataverse/App.config file to define a connection string specifying the instance/organization you want to connect to.
  3. Open the sample solution in Visual Studio and press F5 to run the sample. After you specify a connection string in dataverse/App.config, any sample you run will use that connection information.

If you don't specify a connection string in dataverse/App.config file, a dialog opens each time you run the sample, and you'll need to enter information about which instance or org you want to connect to and which credentials you want to use. This dialog caches previous connections so that you can choose a previously used connection.

What this sample does

The RetrieveEntityChanges message is intended to be used in a scenario where data from an external system is synchronized and the capability to use change tracking can be used to detect and reconcile data changes.

Without a separate system required to fully replicate this scenario, this sample simulates the scenario by performing two requests. In between the requests some data is changed so that the second request will return data about what was changed over time.

How this sample works

In order to simulate the scenario described in What this sample does, the sample will do the following:

Setup

  1. Import a managed solution (ChangeTrackingSample_1_0_0_0_managed.zip) that creates a sample_book entity that has an alternate key named sample_bookcode. Verify that the indexes to support the alternate key are active
  2. 10 initial sample_book entity records are created so that changes to those entities can be tracked.

Demonstrate

  1. Perform initial request and cache the results, including the DataToken
  2. Update the records created in Setup
  3. Perform a second request, this time passing the DataVersion with the DataToken value retrieved from the initial request.
  4. Show the entity changes returned by the second request

Clean up

Display an option to delete the managed solution imported in Setup, which removes the sample_book entity and all the data created in the sample. The deletion is optional in case you want to examine the entities and data created by the sample. You can manually delete the ChangeTrackingSample to achieve the same result.