πŸ”’ Guided

Pre-launch preview. Authorised access only.

Incorrect code

Guided by A Guide to Cloud
Explore AB-900 AI-901
Guided PL-400 Domain 3
Domain 3 β€” Module 1 of 2 50%
9 of 26 overall

PL-400 Study Guide

Domain 1: Create a Technical Design

  • Solution Architecture: What Goes Where Free
  • Security by Design: Auth, Roles & DLP Free
  • Designing UX Components: Canvas, PCF & Client Scripts Free
  • Designing Platform Extensions: Connectors, Plug-ins & APIs Free
  • Integration & Automation Blueprints Free

Domain 2: Build Power Platform Solutions

  • Environment Setup & Security Troubleshooting
  • Solutions & Layers: ALM Foundations
  • CI/CD Pipelines for Power Platform

Domain 3: Implement Power Apps Improvements

  • Advanced Power Fx & Canvas Components
  • Troubleshoot & Optimise Apps

Domain 4: Extend the User Experience

  • Client Scripting: Form Events & the Client API
  • Commands, Buttons & Custom Page Navigation
  • PCF Components: Build & Lifecycle
  • PCF Components: Package, Deploy & Advanced Features

Domain 5: Extend the Platform

  • The Plug-in Pipeline: How Dataverse Processes Events Free
  • Writing Plug-ins: Business Logic, Service & Registration
  • Custom APIs & Business Events
  • Custom Connectors: OpenAPI & Authentication
  • Custom Connectors: Azure, Policies & Code
  • Dataverse APIs: Web API & Organisation Service
  • Azure Functions for Power Platform
  • Cloud Flows: Dataverse Triggers & Expressions
  • Cloud Flows: Security, Errors & Child Flows

Domain 6: Develop Integrations

  • Publishing Dataverse Events
  • Service Endpoints: Webhooks, Service Bus & Event Hub
  • Data Sync: Change Tracking, Alternate Keys & Upsert

PL-400 Study Guide

Domain 1: Create a Technical Design

  • Solution Architecture: What Goes Where Free
  • Security by Design: Auth, Roles & DLP Free
  • Designing UX Components: Canvas, PCF & Client Scripts Free
  • Designing Platform Extensions: Connectors, Plug-ins & APIs Free
  • Integration & Automation Blueprints Free

Domain 2: Build Power Platform Solutions

  • Environment Setup & Security Troubleshooting
  • Solutions & Layers: ALM Foundations
  • CI/CD Pipelines for Power Platform

Domain 3: Implement Power Apps Improvements

  • Advanced Power Fx & Canvas Components
  • Troubleshoot & Optimise Apps

Domain 4: Extend the User Experience

  • Client Scripting: Form Events & the Client API
  • Commands, Buttons & Custom Page Navigation
  • PCF Components: Build & Lifecycle
  • PCF Components: Package, Deploy & Advanced Features

Domain 5: Extend the Platform

  • The Plug-in Pipeline: How Dataverse Processes Events Free
  • Writing Plug-ins: Business Logic, Service & Registration
  • Custom APIs & Business Events
  • Custom Connectors: OpenAPI & Authentication
  • Custom Connectors: Azure, Policies & Code
  • Dataverse APIs: Web API & Organisation Service
  • Azure Functions for Power Platform
  • Cloud Flows: Dataverse Triggers & Expressions
  • Cloud Flows: Security, Errors & Child Flows

Domain 6: Develop Integrations

  • Publishing Dataverse Events
  • Service Endpoints: Webhooks, Service Bus & Event Hub
  • Data Sync: Change Tracking, Alternate Keys & Upsert
Domain 3: Implement Power Apps Improvements Premium ⏱ ~13 min read

Advanced Power Fx & Canvas Components

Go beyond basic formulas. Learn complex Power Fx patterns, build reusable component libraries, and integrate Power Automate flows directly from canvas apps.

Power Fx for developers

β˜• Simple explanation

Think of Power Fx as Excel formulas on steroids.

If you have ever written a VLOOKUP or an IF formula in a spreadsheet, you already know the basics of Power Fx. But Power Fx goes much further β€” it handles tables, records, collections, API calls, and even imperative (step-by-step) logic.

As a PL-400 developer, you need to know the advanced patterns: named formulas that calculate once and share across the app, imperative formulas that run steps in sequence, and component libraries that let you build a control once and reuse it in every app.

Power Fx is a low-code, strongly-typed, functional formula language used across Power Platform β€” canvas apps, model-driven app commanding, Dataverse calculated columns, and Power Automate desktop flows.

For PL-400, you must go beyond basic formulas: implement imperative patterns (Set, UpdateContext, Navigate, Collect, Patch), write complex data transformations (ForAll, AddColumns, RenameColumns, GroupBy), understand delegation (server-side vs client-side evaluation), and build component libraries with custom properties (input, output, function, event).

The integration between canvas apps and Power Automate cloud flows is also tested β€” calling flows from Power Fx, passing parameters, and handling async responses.

Advanced Power Fx patterns

Named formulas

Named formulas define values once and reuse them across the app. They recalculate automatically when dependencies change.

// In App.Formulas (app-level named formulas)
ActiveEmployees = Filter(Employees, Status = "Active");
TotalSalary = Sum(ActiveEmployees, Salary);
AverageAge = Average(ActiveEmployees, Age);

Why named formulas matter:

  • Calculate once, use everywhere (no redundant Filter calls on every screen)
  • Automatically recalculate when source data changes
  • Reduce formula complexity on individual controls

Imperative vs declarative patterns

PatternDeclarativeImperative
Style”What the result should be""What steps to take”
KeywordsFilter, Sort, Sum, AverageSet, Collect, Patch, Navigate
WhereProperties (Items, Text, Visible)Behaviors (OnSelect, OnChange, OnStart)
ExampleFilter(Orders, Status = "Open")Collect(Cart, ThisItem); Navigate(Checkout)

Power Automate integration from canvas apps

Canvas apps can call cloud flows to perform actions the app cannot do directly β€” like sending emails, calling external APIs, or running long computations.

How it works:

  1. Create a cloud flow with β€œPower Apps (V2)” trigger
  2. Define input parameters the app will send
  3. Define output parameters the flow will return
  4. In the canvas app, call the flow: MyFlow.Run(param1, param2)
  5. Handle the response: Set(varResult, MyFlow.Run(param1, param2))

Best practices:

  • Use flows for operations that should not run client-side (email, external API, data processing)
  • Keep flow calls asynchronous when possible (do not block the user)
  • Handle errors: wrap in IfError() to catch flow failures gracefully
  • Pass only the minimum data needed (not entire records)
πŸ’‘ Scenario: Kai builds a submission flow integration

Kai builds a canvas app for logistics staff to submit shipment requests. When a user taps β€œSubmit”:

  1. The app calls SubmitShipment.Run(ShipmentID, DestinationCode, Priority)
  2. The flow validates the destination against a reference table, calculates estimated cost, and creates a record in the Shipment table
  3. The flow returns {Success: true, EstimatedCost: 450, TrackingNumber: "TRK-29381"}
  4. The app displays the tracking number and cost

Why a flow? The validation requires calling an external API (shipping provider) and creating a Dataverse record with calculated fields β€” operations that are cleaner and more maintainable in a flow than in Power Fx formulas.

Building component libraries

Component libraries let you build reusable controls that can be shared across multiple canvas apps.

Component anatomy

Every canvas component has:

  • Custom input properties β€” data the host app passes into the component
  • Custom output properties β€” data the component passes back to the host app
  • Custom function properties β€” callbacks the host app can call (e.g., Reset())
  • Custom event properties β€” events the component can raise (e.g., OnItemSelected)

Design principles

  • Single responsibility β€” each component does one thing well
  • Configurable via properties β€” do not hardcode colours, labels, or data sources
  • Stateless preferred β€” accept data through input properties, emit results through output properties
  • Test independently β€” components should work in isolation before using them in an app
Question

What is a named formula in Power Fx?

Click or press Enter to reveal answer

Answer

A named formula defines a reusable, automatically recalculating expression at the app level (in App.Formulas). Example: ActiveEmployees = Filter(Employees, Status = 'Active'). It calculates once and is available everywhere in the app without redundant formula evaluation.

Click to flip back

Question

How do you call a Power Automate flow from a canvas app?

Click or press Enter to reveal answer

Answer

Use the flow name as a function: MyFlow.Run(parameter1, parameter2). The flow must have a 'Power Apps (V2)' trigger with defined input parameters. To capture the response: Set(varResult, MyFlow.Run(param1, param2)). Wrap in IfError() to handle failures gracefully.

Click to flip back

Question

What are the four types of custom properties in a canvas component?

Click or press Enter to reveal answer

Answer

Input (data passed in from the host app), Output (data returned to the host app), Function (callable methods the host app can invoke, e.g., Reset), and Event (callbacks the component can raise, e.g., OnItemSelected). Together, they form the component's API.

Click to flip back

Knowledge Check

Kai builds a canvas app that displays a filtered list of shipments. The same filter (Status = 'Active' AND Region = varUserRegion) is used on three different screens, where varUserRegion is set from the user's profile at app start. What is the best approach to avoid redundant evaluation?

Knowledge Check

A canvas app needs to send an email with an attachment when the user taps a button. The attachment is a PDF generated from form data. Where should this logic be implemented?

🎬 Video coming soon

Next up: Troubleshoot & Optimise Apps β€” using Monitor and browser tools to debug issues, and optimising performance with delegation and pre-loading.

← Previous

CI/CD Pipelines for Power Platform

Next β†’

Troubleshoot & Optimise Apps

Guided

I learn, I simplify, I share.

A Guide to Cloud YouTube Feedback

© 2026 Sutheesh. All rights reserved.

Guided is an independent study resource and is not affiliated with, endorsed by, or officially connected to Microsoft. Microsoft, Azure, and related trademarks are property of Microsoft Corporation. Always verify information against Microsoft Learn.