πŸ”’ Guided

Pre-launch preview. Authorised access only.

Incorrect code

Guided by A Guide to Cloud
Explore AB-900 AI-901
Guided PL-400 Domain 1
Domain 1 β€” Module 3 of 5 60%
3 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 1: Create a Technical Design Free ⏱ ~12 min read

Designing UX Components: Canvas, PCF & Client Scripts

Power Platform offers three ways to build custom user experiences. Learn when to choose canvas components, PCF code components, or client scripts β€” and how to design them for reuse across solutions.

Three paths to custom UX

β˜• Simple explanation

Think of three types of car customisation.

Canvas components are like bolt-on accessories β€” a new steering wheel cover, custom floor mats. Anyone can install them, they are easy to swap, but they only work inside canvas apps.

PCF code components are like a custom engine modification. They require a mechanic (developer) with TypeScript skills, but they work in both canvas and model-driven apps β€” and they can do things no standard part can do.

Client scripts are like rewiring the dashboard electronics. JavaScript code that runs inside model-driven apps, controlling form behaviour, field visibility, and validation. Powerful but specific to model-driven forms.

The exam tests whether you pick the right customisation approach for each scenario.

Power Platform provides three distinct approaches for building custom user experiences, each with different capabilities, hosting requirements, and developer skill sets:

Canvas components are low-code reusable UI elements built with Power Fx inside canvas apps. They support custom properties (input/output/function/event), encapsulate logic, and can be shared via component libraries.

PCF (Power Apps Component Framework) code components are TypeScript/React components that follow a defined lifecycle (init, updateView, getOutputs, destroy). They can target field-level or dataset-level bindings and run in both canvas and model-driven apps.

Client scripts are JavaScript files registered as web resources in model-driven apps. They respond to form events (OnLoad, OnSave, OnChange), manipulate form controls via the Client API (formContext), and can call the Dataverse Web API directly.

Decision matrix: Which component type?

Choose based on where the component runs and what skills you have
FactorCanvas ComponentPCF Code ComponentClient Script
LanguagePower Fx (no-code)TypeScript + ReactJavaScript
Runs inCanvas apps onlyCanvas + model-driven appsModel-driven apps only
Skill levelMaker (citizen developer)Pro developerPro developer
ReusabilityComponent library (canvas)Solution package (any app)Web resource (model-driven)
External APIsVia connectors in the host appVia Web API feature in PCFVia Xrm.WebApi or fetch
Access to deviceLimited (camera via control)Device API (camera, location, barcode)No
Custom renderingPower Fx layout onlyFull HTML/CSS/React renderingDOM manipulation (fragile)
Best forReusable form sections, branded inputsRich visualisations, custom grids, mapsForm logic, field visibility, validation

Quick decision flow

Ask these questions in order:

  1. Does it need to work in a model-driven app? β†’ If yes, use PCF or client script (not canvas component)
  2. Is it purely form logic (show/hide, validate, set values)? β†’ Client script
  3. Does it need custom visual rendering? β†’ PCF code component
  4. Is it a reusable form section for canvas apps only? β†’ Canvas component
  5. Does it need device access (camera, GPS)? β†’ PCF code component (Device API)
πŸ’‘ Scenario: Marcus chooses the right component

Marcus Chen is an ISV developer at NovaSoft Solutions. He is building a product catalogue app that will be sold on AppSource. The catalogue needs:

  1. A custom star-rating control that works in both canvas and model-driven apps β†’ PCF component β€” needs to work cross-app and needs custom rendering
  2. A branded header section reused across 5 canvas apps β†’ Canvas component library β€” canvas-only, reusable across apps, no code needed
  3. Auto-populate a β€œRegion” field when the user selects a country on a model-driven form β†’ Client script β€” form-level logic in model-driven app, no custom rendering needed

Each requirement maps to a different component type based on where it runs and what it does.

Designing for reuse

The best components are built once and used many times. Here are design principles for each type:

Canvas components

  • Use custom properties β€” input properties for configuration, output properties for data, function properties for callbacks
  • Keep components stateless where possible β€” pass data in, emit events out
  • Component libraries let you share components across multiple canvas apps in the same environment
  • Version carefully β€” updating a library component updates all apps that use it

PCF code components

  • Design the manifest first β€” the ControlManifest.Input.xml defines what data the component accepts and returns
  • Field vs dataset binding β€” field components bind to a single column; dataset components bind to a view or collection
  • Package as a solution β€” PCF components travel in Dataverse solutions for ALM
  • Avoid tight coupling β€” don’t hardcode table names or column names; use the manifest to accept them as parameters

Client scripts

  • One web resource per feature area β€” don’t put all scripts in one massive file
  • Use the formContext pattern β€” never use the deprecated Xrm.Page; always receive executionContext and call getFormContext()
  • Register event handlers through the form designer β€” not in code (makes them visible to other makers)
  • Namespace your functions β€” NovaSoft.Claims.onLoad() not onLoad() to avoid conflicts
Question

When should you use a PCF component instead of a canvas component?

Click or press Enter to reveal answer

Answer

Use PCF when: (1) the component must work in model-driven apps, (2) you need custom HTML/CSS rendering, (3) you need device access (camera, GPS, barcode), or (4) you need to call the Dataverse Web API directly from the component. Canvas components are limited to Power Fx and canvas apps only.

Click to flip back

Question

What is the difference between field-level and dataset-level PCF components?

Click or press Enter to reveal answer

Answer

A field-level PCF component binds to a single column value (e.g., a star-rating control bound to a number field). A dataset-level component binds to a collection of records (e.g., a custom grid or chart showing multiple rows). The binding type is defined in the component manifest.

Click to flip back

Question

Why should you use formContext instead of Xrm.Page in client scripts?

Click or press Enter to reveal answer

Answer

Xrm.Page is deprecated. formContext is the modern pattern β€” you receive the execution context in your event handler, call getFormContext(), and use that to interact with form controls. It also supports multi-session apps where multiple forms may be open simultaneously.

Click to flip back

Knowledge Check

Marcus needs to build a barcode scanner control that works in both canvas apps and model-driven apps. The control should open the device camera, scan a barcode, and return the scanned value to the form field. Which approach should he use?

Knowledge Check

A consulting team needs to add form validation to a model-driven app: when the Priority field changes to 'Critical', the Description field must become required and a notification banner must appear. Which approach is most appropriate?

🎬 Video coming soon

Next up: Designing Platform Extensions β€” custom connectors, plug-ins, custom APIs, and Power Fx functions.

← Previous

Security by Design: Auth, Roles & DLP

Next β†’

Designing Platform Extensions: Connectors, Plug-ins & APIs

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.