Why This Is Useful

If you’ve ever needed to know who changed what and when in Microsoft Dataverse, the audit history is your friend.
When auditing is enabled for a table (and optionally for specific columns), Dataverse stores a detailed record of changes — including the old value, the new value, the date/time of the change, and the user who made it.

That opens the door to all kinds of useful automations:

  • Send management an alert email when a high-impact field is changed.
  • Compare before and after values to track specific business logic triggers.
  • Audit changes from specific roles or teams for compliance purposes.
  • Capture historical context in related records for reporting or legal needs.

This is one of those under-the-radar hacks that’s not widely documented, but incredibly powerful once you know how to tap into it from Power Automate.


The Key Idea

We can query audit history directly from Power Automate using an HTTP GET action against the Dataverse Web API.
There are two main flavors:

  1. Whole record audit history – All changes to a record, across all audited columns.
  2. Single column audit history – Just the changes to one audited column.

The trick is knowing the right Web API endpoints and how to pass the correct parameters for your table, column, and record.Using HTTP GET action inside flow

Whole Record Audit History: Use this when you want every audited change for a given record.

<OrganizationURI>/api/data/v9.0/RetrieveRecordChangeHistory(Target=@p1)?@p1={‘@odata.id’:’ <plural-entity-logical-name>(<recordid>)’ }

Example: https://CITRINCOOPERMAN.crm.dynamics.com/api/data/v9.0/RetrieveRecordChangeHistory(Target=@p1)?@p1={‘@odata.id’:’cc_events(f9c79bed-0d70-ed11-9562-000d3a59109e)’}

Single Column Audit History: Use this when you want before/after values for one specific column — for example, if only changes to an “Owner” or “Status” field matter for your automation.

<OrganizationURI>/api/data/v9.0/RetrieveAttributeChangeHistory(Target=@p1,AttributeLogicalName=@p2)?@p1={‘@odata.id’: <plural-entity-logical-name>(<recordid>)’}&@p2=’<column-logical-name>

Example: https://CITRINCOOPERMAN.crm.dynamics.com/api/data/v9.0/RetrieveAttributeChangeHistory(Target=@p1,AttributeLogicalName=@p2)?@p1={‘@odata.id’:’cc_events(f9c79bed-0d70-ed11-9562-000d3a59109e)’}&@p2=’cc_name’

Resources:

https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/retrieveattributechangehistory?view=dataverse-latest

https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/retrieverecordchangehistory?view=dataverse-latest

https://www.bythedevs.com/post/get-record-change-history-of-audited-entities-in-power-automate

Podcast also available on PocketCasts, SoundCloud, Spotify, Google Podcasts, Apple Podcasts, and RSS.

Leave a comment

The Podcast

Join Naomi Ellis as she dives into the extraordinary lives that shaped history. Her warmth and insight turn complex biographies into relatable stories that inspire and educate.

About the podcast