Architecture Trigger, Callback, PowerFX formula columns

Architecture insights on how PowerFX columns and Trigger Condition / Callback Registrations work.

Architecture insights on how PowerFX columns and Trigger Condition / Callback Registrations work. ❓How does the PowerFX formula column work? What are their limitations? ❓ πŸ‘‰ Dataverse implements Sql2PowerFx converter which means PowerFX formula columns are directly mapped to SQL. The same applies to calculated columns; πŸ‘‰ From an SQL perspective formula columns are implemented as non-materialized views meaning their result is not saved anywhere and only obtained when calling a query; πŸ‘‰ Due to their non-materialized nature formula columns can't be audited, trigger workflows and plug-ins. That's also why duplicate detection rules won't work; πŸ‘‰ Formula columns can reach up to 10 levels deep in referencing other tables. They can't refer to themself or create circular references as it would cause never-ending computations. ❓How do trigger conditions work exactly?❓ πŸ‘‰ From an SQL computational standpoint, each change in the Dataverse table is ALWAYS processed by a trigger that pushes updated records via Webhook - this action is not at all visible to Power Platform developers; πŸ‘‰ To trigger a flow, the server-side (Azure) Webhook listener processes changes on provisioned filtering criteria. When they are met, the callback function is called; πŸ‘‰ Only now do we fully enter the Power Automate domain, when the callback function is evaluated against an additional set of criteria called trigger conditions. If those are met as well, we have a flow run that is counted as an action. If not, the action is fully discarded and not visible to the end user. ❗All Dataverse event subscriptions can be seen in the internal Dataverse table called 'callbackregistrations'. This table does not include trigger condition details - for solution-aware flows, those can be found in 'workflows' table.❗ This post was inspired by [Daniel Amundsen](https://www.linkedin.com/feed/update/urn:li:activity:7289416853569826816/#)'s great example of using Dataverse PowerFX columns: building trigger conditions on a related table. It's not straightforward to understand exactly why this works! πŸ‘‡ link to the post in the comments πŸ‘‡ ___ - Daniel Amundsen once again thanks for the inspiration with your post - Trigger Conditions with Related Table Data: [https://www.linkedin.com/posts/daniel-gives-power_powerautomate-microsoft365-workflowautomation-activity-7288524552534388737--zjv](https://www.linkedin.com/posts/daniel-gives-power_powerautomate-microsoft365-workflowautomation-activity-7288524552534388737--zjv)
Browse articles