Study guide

12.1 Configuring Cloud Flow Actions

Microsoft Certified: Intelligent Applications Builder Associate AB-410

Track your progress as you read

Finished sections get a check mark.

1 Introduction

1.1 About the AB-410 Exam 1.2 How to Use This Study Guide

2 Chapter 2: Designing Power Platform Solutions with AI-Enabled Tools

2.1 Analyzing Requirements and Identifying Components 2.2 Evaluating Built-in Agents for Business Solutions 2.3 Recommending Extensibility Options

3 Chapter 3: Environments and ALM Strategy

3.1 Recommending Environment Types 3.2 Solution and Application Lifecycle Management Strategy

4 Chapter 4: Dataverse Tables and Columns

4.1 Creating and Editing Tables in the Data Workspace 4.2 Configuring Table Properties 4.3 Creating and Modifying Columns

5 Chapter 5: Relationships, AI Data Features, and Data Security

5.1 Configuring Table Relationships 5.2 Configuring Prompt Columns and Row Summaries 5.3 Configuring Public Views and Main Forms 5.4 Configuring Dataverse Security

6 Chapter 6: Model-Driven App Forms and Views

6.1 Creating and Configuring Forms for Model-Driven Apps 6.2 Creating and Configuring Views for Model-Driven Apps 6.3 Creating Generative Pages with Natural Language

7 Chapter 7: Composing, Securing, and Visualizing Model-Driven Apps

7.1 Composing a Model-Driven App 7.2 Configuring Access to Model-Driven Apps, Forms, and Views 7.3 Model-Driven App Charts and Dashboards

8 Chapter 8: Creating and Designing Canvas Apps

8.1 Creating a Canvas App Using Data 8.2 Designing for Accessibility, Performance, Responsiveness, and Usability 8.3 Automating Business Processes from Canvas Apps

9 Chapter 9: Canvas App Components, Variables, and Error Handling

9.1 Reusable Components, Named Formulas, and User-Defined Functions 9.2 Managing Variables and Collections 9.3 Implementing Error Handling in Canvas Apps

10 Chapter 10: Testing Canvas Apps and Creating Agents from Apps

10.1 Testing Canvas Apps with Monitor 10.2 Creating a Copilot Studio Agent from a Canvas App

11 Chapter 11: Cloud Flow Triggers, Connectors, and Approvals

11.1 Recommending Cloud Flow Triggers 11.2 Evaluating and Recommending Connectors 11.3 Managing Approvals with Cloud Flows

12 Chapter 12: Cloud Flow Actions, Control, and Troubleshooting

12.1 Configuring Cloud Flow Actions 12.2 Implementing Flow Control with Conditions and Loops 12.3 Testing and Troubleshooting Cloud Flows

13 Chapter 13: Building Prompts in AI Hub

13.1 Building Prompts from Templates or from Blank 13.2 Adding Inputs to a Prompt 13.3 Adding Knowledge to a Prompt

14 Chapter 14: Prompt Settings, Models, and Consuming AI

14.1 Customizing Prompt Settings and Models 14.2 Consuming Prompts in Apps and Cloud Flows 14.3 Consuming AI Models in Apps and Cloud Flows

15 Chapter 15: Business Rules and Business Process Flows

15.1 Configuring Business Rules 15.2 Configuring Business Process Flows

16 Chapter 16: Calculated Columns and Business Logic Strategy

16.1 Calculated, Rollup, and Formula Columns 16.2 Evaluating Use Cases for Business Logic

12.1 Configuring Cloud Flow Actions

Key Takeaways Explain This Topic AI

Dynamic content tokens are just workflow definition language expressions underneath — Peek code on any action reveals the real @{...} syntax.

coalesce() returns the first non-null value in its argument list and is the standard guard for nullable Dataverse columns.

A variable must be created with Initialize variable at the top level of the flow before any Set, Increment, or Append action can use it.

Select reshapes every item in an array while Filter array keeps items intact and only reduces the count — the exam swaps these two constantly.

List rows OData filters use lowercase logical column names and single-quoted strings, for example statecode eq 0 and revenue gt 100000.

Last updated: July 2026

Every cloud flow is, at its core, a trigger followed by a chain of actions . On the AB-410 exam you are expected to know not just what each action does, but how data moves between actions — which means mastering the difference between dynamic content and expressions , knowing the built-in data operation actions cold, and being precise about what each Microsoft Dataverse connector action can and cannot do.

Dynamic content vs expressions

Dynamic content is the picker panel in make.powerautomate.com that lists outputs from previous steps — for example, Subject from When a new email arrives or Account Name from a Dataverse trigger. Dynamic content is convenient, but it can only point at an existing value. When you need to transform, combine, or compute a value, you write an expression using the workflow definition language (WDL) , the same function syntax that underlies Azure Logic Apps. Every dynamic content token you pick is really just a WDL expression under the hood; select Peek code on any action to see the raw @variables('name') or @{triggerOutputs()?['body/subject']} syntax.

Functions you must recognize on sight:

  • Function Purpose Example
  • concat() Join two or more strings concat('INV-', variables('Number'))
  • utcNow() Current date and time in UTC utcNow() returns 2026-07-18T20:49:37Z
  • addDays() Add (or subtract) days from a timestamp addDays(utcNow(), 30)
  • formatDateTime() Format a timestamp with a pattern formatDateTime(utcNow(), 'yyyy-MM-dd')
  • coalesce() Return the first non-null argument coalesce(triggerOutputs()?['body/nickname'], 'No nickname')
  • json() Parse a string into a JSON object json(variables('rawText'))
  • length() Count array items or string characters length(outputs('List_rows')?['body/value'])

Exam trap: coalesce() is the standard answer whenever a scenario mentions a column that may be null or may not exist. A plain dynamic-content reference to a missing value causes null-propagation failures downstream; coalesce() supplies the fallback.

Variables

A variable must be created with Initialize variable before it can be used, and initialization can only happen at the top level of a flow — never inside a Condition, Switch, or loop. Supported types are Boolean, Integer, Float, String, Object, and Array . After initialization you mutate it with:

  • Set variable — overwrite the value entirely
  • Increment variable / Decrement variable — add or subtract a number (Integer and Float only)
  • Append to array variable / Append to string variable — grow a collection or string, typically inside a loop

Variables are scoped to a single flow run; they are never shared across runs or across flows.

Data operations

The Data Operation connector is a set of code-free reshaping actions:

Action What it does

Compose Holds any input — a value, expression, or object; often used as a scratch pad to inspect expression output

  • Select Projects an array into a new array with a different shape, including renamed keys, using map mode
  • Filter array Returns the subset of an array matching a basic condition or an advanced @ expression

Parse JSON Converts a JSON payload into typed dynamic content; requires a schema — select Generate from sample and paste a sample payload

  • Create CSV table Renders an array as CSV text, ready to save as a file
  • Create HTML table Renders an array as an HTML table, ideal for email bodies
  • Join Flattens an array into one string with a delimiter, such as comma-separated email addresses

Exam trap: Select changes the shape of every item; Filter array changes the count of items but keeps each item intact. Questions love to swap these two.

Dataverse actions

The Microsoft Dataverse connector exposes the core row operations. Know the exact action names:

Add a new row — creates a row in the chosen table and returns its ID.

Update a row — updates an existing row; you must supply the Row ID (a GUID). You cannot update by email address or name — retrieve the GUID first.

Get a row by ID — retrieves a single row by GUID, optionally narrowed with Select columns .

List rows — retrieves many rows using Filter rows (an OData filter such as statecode eq 0 and revenue gt 100000 ), Select columns , Sort by , Top count , Expand Query (pull columns from related tables through lookup navigation properties), plus pagination settings.

Relate rows / Unrelate rows — link or unlink two existing rows (commonly for many-to-many relationships) without touching their other columns.

Perform a bound action — runs a Dataverse action scoped to one specific row, such as a custom close-or-escalate action.

Perform an unbound action — runs a global Dataverse action that is not tied to any row.

Exam trap: OData filters require the table's logical (lowercase) column names and single quotes around string literals: fullname eq 'Ada Lovelace' . Display names or double quotes produce an error.

Configure run after

Every action's Settings → Configure run after defines which predecessor outcomes allow it to execute: is successful (the default), has failed , is skipped , and has timed out . This is the mechanism behind error-handling branches and the try-catch pattern covered in the next section — an action configured to run only after has failed is, functionally, your catch block.