Cloud Flows: Dataverse Triggers & Expressions
Build smart automations with Dataverse triggers and complex expressions. Learn trigger configuration, filtering, retry policies, and the expression language for Power Automate.
Making flows that react intelligently
Think of a Dataverse trigger as a doorbell camera.
It watches for specific events (someone approaches the door) and triggers an action (record video, send notification). But a smart camera does not trigger for every movement ā it filters: only trigger for people, not cars or animals. It also has a retry plan: if the notification fails to send, try again in 30 seconds.
Expressions are the brains of your flow. They transform data, make decisions, and calculate values. Think of them like formulas in a spreadsheet ā but for flow actions.
Dataverse trigger configuration
| Trigger | Fires When | Key Settings |
|---|---|---|
| When a row is added | New record created | Table name, scope (org/BU/user) |
| When a row is added, modified or deleted | Any CRUD operation | Change type (added/modified/deleted), column filter, row filter |
| When an action is performed | Custom API or bound action called | Table name, action name |
Trigger filters (critical for performance)
Without filters: The flow triggers on EVERY change to the table ā even changes your flow does not care about. This wastes flow runs and can cause throttling.
With filters: The flow only triggers when specific conditions are met:
| Filter Type | How to Configure | Example |
|---|---|---|
| Column filter | Select specific columns | Only trigger when statuscode or priority changes |
| Row filter | OData $filter expression | statuscode eq 1 ā only trigger for Active records |
| Scope | Organisation, Business Unit, User | Organisation = all records; User = only records owned by the flow owner |
OData filter examples
// Only trigger for high-priority orders
priority eq 1
// Only trigger for records in specific region
regioncode eq 'NZ' and statuscode eq 1
// Only trigger for records with value over $10,000
totalamount gt 10000
Exam tip: Column filters prevent infinite loops
A common exam scenario: āA flow triggers when a record is modified. The flow updates a field on that same record. This creates an infinite loop.ā The fix: use a column filter to trigger ONLY when specific fields change ā not the field your flow updates.
Example: Flow triggers when statuscode changes. Flow updates processeddate. Since processeddate is not in the column filter, the update does not re-trigger the flow.
Complex expressions
Power Automate expressions use functions for data transformation:
String functions
// Concatenate
concat('Hello, ', triggerOutputs()?['body/firstname'], '!')
// Format a date
formatDateTime(triggerOutputs()?['body/createdon'], 'dd MMM yyyy')
// Extract substring
substring(variables('orderNumber'), 0, 3)
// Replace text
replace(body('Get_item')?['description'], 'OLD', 'NEW')
Conditional expressions
// If-then-else
if(equals(triggerOutputs()?['body/priority'], 1), 'Critical', 'Normal')
// Coalesce (first non-null value)
coalesce(triggerOutputs()?['body/preferredname'], triggerOutputs()?['body/firstname'])
// Null check
if(empty(triggerOutputs()?['body/email']), 'No email', triggerOutputs()?['body/email'])
Date/time functions
// Add days to a date
addDays(utcNow(), 7)
// Difference between dates
div(sub(ticks(variables('endDate')), ticks(variables('startDate'))), 864000000000)
// Start of month
startOfMonth(utcNow())
Retry policies
Actions in Power Automate can be configured with retry policies for transient failures:
| Policy | Behaviour | Best For |
|---|---|---|
| Default | 4 retries with exponential intervals | Most actions |
| Fixed interval | Retry at set intervals (e.g., every 30s) | When you know recovery time |
| Exponential | Increasing intervals (1s, 2s, 4s, 8sā¦) | API rate limiting |
| None | No retry ā fail immediately | When retries would cause duplicates |
A cloud flow triggers when any record in the Contact table is modified. The flow updates the 'Last Processed' field on the same Contact. Users report that the flow runs hundreds of times per minute. What is the root cause and fix?
š¬ Video coming soon
Next up: Cloud Flows: Security, Errors & Child Flows ā managing sensitive data, error handling patterns, and reusable flow logic.