Domain 5 β€” Module 8 of 9 89%
22 of 26 overall
Domain 5: Extend the Platform Free ⏱ ~13 min read

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

Simple explanation

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

TriggerFires WhenKey Settings
When a row is addedNew record createdTable name, scope (org/BU/user)
When a row is added, modified or deletedAny CRUD operationChange type (added/modified/deleted), column filter, row filter
When an action is performedCustom API or bound action calledTable 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 TypeHow to ConfigureExample
Column filterSelect specific columnsOnly trigger when statuscode or priority changes
Row filterOData $filter expressionstatuscode eq 1 β€” only trigger for Active records
ScopeOrganisation, Business Unit, UserOrganisation = 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:

PolicyBehaviourBest For
Default4 retries with exponential intervalsMost actions
Fixed intervalRetry at set intervals (e.g., every 30s)When you know recovery time
ExponentialIncreasing intervals (1s, 2s, 4s, 8s…)API rate limiting
NoneNo retry β€” fail immediatelyWhen retries would cause duplicates
Question

How do you prevent a cloud flow from creating an infinite loop when it modifies its own trigger table?

Click or press Enter to reveal answer

Answer

Use column filters on the trigger. Only trigger when specific fields change (e.g., 'statuscode'). The flow's own updates to other fields (e.g., 'processeddate') will not re-trigger the flow because those fields are not in the column filter.

Click to flip back

Question

What is the coalesce() expression in Power Automate?

Click or press Enter to reveal answer

Answer

coalesce() returns the first non-null value from a list of arguments. Example: coalesce(preferredName, firstName, 'Unknown') returns preferredName if it exists, otherwise firstName, otherwise 'Unknown'. Useful for handling optional fields with fallback values.

Click to flip back

Question

What retry policy should you use when calling an API that returns HTTP 429 (rate limit)?

Click or press Enter to reveal answer

Answer

Exponential backoff β€” increasing intervals between retries (1s, 2s, 4s, 8s...). This gives the API time to recover and reduces the chance of hitting the rate limit again. The Retry-After header from the 429 response should be respected when available.

Click to flip back

Knowledge Check

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?

Next up: Cloud Flows: Security, Errors & Child Flows β€” managing sensitive data, error handling patterns, and reusable flow logic.