PL-400 study materials
PL-400 study resources

PL-400: Create and configure Power Apps

PL-400 · Work through your exam, one topic at a time.

All guide sections

Create and configure Power Apps

App type drives configuration

Model-driven apps are generated from the data model: you assemble an app module, a sitemap, forms, views, charts, dashboards and the command bar, and the platform enforces security and accessibility for you. Canvas apps are built control by control, connect to many data sources, and are the right choice for offline mobile use and bespoke UI. Custom pages host canvas content inside a model-driven app when neither alone fits.

Model-driven configuration

Forms come as main, quick create, quick view and card. Views decide which columns appear in grids and in lookup dialogs. App modules choose which tables, forms, views and business process flows a group of users sees, and the sitemap controls navigation. Command bar buttons are added with the modern command designer or Ribbon Workbench; prefer commands that call a flow or a custom page over classic script where the requirement allows.

Canvas configuration

Know the variable types: global (Set), context (UpdateContext), collections (Collect, ClearCollect), and named formulas for app-wide read-only values. Keep OnStart minimal, because every user waits for it. Package reusable UI as canvas components or PCF controls rather than copying screens.

Delegation

The biggest canvas trap. When a function cannot be delegated, Power Apps retrieves only the first N rows (500 by default, configurable to 2,000) and filters them locally, silently returning wrong results. Keep filters delegable: compare columns to scalars, avoid wrapping columns in functions inside Filter, and confirm which aggregates the source can delegate.

Worked example

A user reports that a gallery shows only the first 500 orders. Raising the row limit is not the fix. Rewrite the query so the filter is delegable - a simple comparison on an indexed column - or move the query server-side into a flow or a Dataverse view that returns only the needed rows.