Today I’m introducing a new open-source tool for the Dataverse called Power Automate Assistant. This will grow to include more features but I’m starting by addressing a big limitation in the Create / Update triggers in Power Automate.
Currently, if you have a flow configured to run on 10 fields and one of them changes, you don’t know which of the 10 triggered it. Not only that, but due to quirks in how fields are considered updated, it’s possible none of those fields actually changed but it still registers as an update (specifically, this can happen with SDK calls performing updates with extra fields and I’ve seen it a million times).
I built Power Automate Assistant to address these challenges, which not only tell you what fields changed but also cut down on the number of flow runs due to ghost updates. This tool is open source and available through the MIT license.
The Dataverse considers a field as having changed even if the value doesn’t actually change. We can’t control that. What we can do though, is create a new field and control when and how that is changed. By ensuring only true changes are tracked, we can bypass unnecessary flow triggers.
Here’s how it works:
In this example, we have a flow that runs when a Contact is created or updated, if the First Name or Email changes.
- Create a new text field on your entity (afk_ModifiedFields). In this case I’ll stick with 100 characters, but it should be as long as all the schema names for the fields you’re tracking.
- Install the Power Automate Assistant and configure it on the contact so it runs any time the First Name and Email changes.
- When those fields are updated, the tool will evaluate the field values to ensure it actually changed. If the fields have changed, it’ll update the new text field (afk_ModifiedFields) with the field names that changed.
- Configure your flow to run on afk_ModifiedFields.
What happens now?
With this setup, if you update the contact’s email address and save the record, your new text field will say “emailaddress1”. If the first name changed, it’ll say “firstname”. If both changed, it’ll say “emailaddress1,firstname”.
By setting your flow to run on that text field, we can ensure it only triggers if we have a real change, and on top of that, you can treat that new text field as an array and see what fields triggered the update and take actions accordingly.
Where do I get it?
Managed and unmanaged solutions and source code is available at https://github.com/akaskela/PowerAutomateAssistant
Step-by-step instructions in the wiki on Github https://github.com/akaskela/PowerAutomateAssistant/wiki/TrueFieldChange