14 Sep’15

Dynamics CRMCRM 2015 Update 1 – Change Tracking Feature

What is Change Tracking?

Change Tracking feature is introduced in CRM 2015 Spring update, to retrieve the changes occurred in Entity records. It helps to keep data synchronized between CRM and other systems in a performant way. This feature is very helpful in building incremental load ETLs packages.

How it works?

How Change Tracking Works

Where this feature can be useful?

If you have external systems where you take backup of CRM data, by using this feature you can build logic to only get updated data instead of pulling all the data. By doing this overall execution of ETL will be reduced drastically.

Things to be considered while using this feature

  1. Only one entity will be tracked in retrieve changes, this means, if your record contains lookup to another entity, then changes in the another entity will not be tracked while retrieving changes for this entity.
  2. The validity of Token is 90 days. The token expires after every 90 days and new request after 90 days will be considered as fresh request resulting in retrieving all the data.
  3. This feature does not track intermediate changes. For e.g., if you are tracking an Account entity changes, and if a record updates 3-4 times before you request for entity changes, it will retrieve only latest value.
  4. Records are retrieved in the order determined by server side logic. Usually, created/updated records are retrieved before deleted records. For e.g., if 200 records are updated/created and 50 are deleted, then entity collection of 250 records will be retrieved where first 200 records are either updated/created and remaining are deleted.

How to use/enable Change Tracking?

  1. Enable Change Tracking on entity you want track.

    How to Enable Change Tracking for Entity

    Note: This feature is available only for online organizations which are updated to CRM 2015 Update 1. On-Premise environments do not have this feature at this point.

Sample Code

string token;

// Initialize page number.
int pageNumber = 1;
List<Entity> initialrecords = new List<Entity>();

// Retrieve records by using Change Tracking feature.
RetrieveEntityChangesRequest request = new RetrieveEntityChangesRequest();
request.EntityName = _customBooksEntityName.ToLower();
request.Columns = new ColumnSet("sample_bookcode", "sample_name", "sample_author");
request.PageInfo = new PagingInfo() { Count = 5000, PageNumber = 1, ReturnTotalRecordCount = false };

// Initial Synchronization. Retrieves all records as well as token value.
Console.WriteLine("Initial synchronization....retrieving all records.");
while (true)
    RetrieveEntityChangesResponse response = (RetrieveEntityChangesResponse)_serviceProxy.Execute(request);

    initialrecords.AddRange(response.EntityChanges.Changes.Select(x => (x as NewOrUpdatedItem).NewOrUpdatedEntity).ToArray());
    initialrecords.ForEach(x => Console.WriteLine("initial record id:{0}", x.Id));
    if (!response.EntityChanges.MoreRecords)
        // Store token for later query
        token = response.EntityChanges.DataToken;

    // Increment the page number to retrieve the next page.
    // Set the paging cookie to the paging cookie returned from current results.
    request.PageInfo.PagingCookie = response.EntityChanges.PagingCookie;
Written by

Team Member


2 thoughts on “CRM 2015 Update 1 – Change Tracking Feature”

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.

Want to streamline your business processes?

  • This field is for validation purposes and should be left unchanged.

Recent Articles

  • Dynamics 365 Client Diagnostics

    15 March’ 2018

    Main cause of Performance Issues: Bandwidth and latency are the primary characteristics which affects the performance o...

    Read more
  • Closing Blind Shift in MPOS and CPOS in Dynamics 365 for Retail

    15 March’ 2018

    Manual For closing Blind shift in POS: Blind shifts terminate the currently ongoing shift and when logged in a new shif...

    Read more
  • Persistent Filters in the Power BI Service

    13 March’ 2018

    Introduction: The feature is finally release, and it is power BI has announced general availability of persistent filt...

    Read more
  • Cause and Solution for Scribe MSMQ not receiving Message from AX

    10 March’ 2018

    Issue: Microsoft Message Queuing (MSMQ) service running on Server might be unable to receive messages. Therefore, messa...

    Read more
  • User Privileges on SharePoint – D365 Document Integration

    10 March’ 2018

    Overview: Often, we wonder what could be wrong where we see a generic error on Documents in Dynamics 365. Something lik...

    Read more