Study guide
5.3 Embedding Canvas Apps in Model-Driven Forms
Microsoft Power Platform Functional Consultant PL-200
Track your progress as you read
Finished sections get a check mark.
1 Chapter 1: Dataverse Tables, Relationships & Core Columns
1.1 Dataverse Table Types, Properties & Ownership 1.2 Table Relationships & Cascading Rules 1.3 Column Types, Formats, Primary Keys & Alternate Keys 1.4 Rollup, Calculated & Formula Columns with Power Fx
2 Chapter 2: Dataverse Data Management & Governance
2.1 Dataverse Search, Quick Find & Relevance Indexing 2.2 Auditing Configuration & Log Management 2.3 Duplicate Detection Rules & Settings 2.4 Bulk Record Operations, Data Import, Export & Templates
3 Chapter 3: Dataverse Security Model & Access Control
3.1 Business Units, Ownership Models & Modern BU Matrix 3.2 Security Roles, Privileges & Depth Levels 3.3 Teams Architecture: Owner, Access, and Microsoft Entra (AAD) Group Teams 3.4 Column-Level Security & Hierarchy Security Models
4 Chapter 4: Model-Driven App Fundamentals & Information Architecture
4.1 Model-Driven App Design, Site Map Navigation & Modern App Designer 4.2 Form Types: Main, Quick Create, Quick View & Card Forms 4.3 View Configuration, System Views, Personal Views & Filters
5 Chapter 5: Advanced Model-Driven App Components & Custom Pages
5.1 Custom Pages & Modern Commanding with Power Fx 5.2 Form Component Controls & Specialized UX Elements 5.3 Embedding Canvas Apps in Model-Driven Forms 5.4 Embedding Power BI Reports, Dashboards & Tiles
6 Chapter 6: Canvas Apps Structure, Formulas & Data Operations
6.1 Canvas App Architecture, Screens, Containers & Controls 6.2 Power Fx Formulas, Delegation & Data Source Limits 6.3 Variables (Context, Global), Collections & State Management 6.4 Triggering Power Automate Cloud Flows from Canvas Apps
7 Chapter 7: Power Pages Site Design, Navigation & Content
7.1 Power Pages Design Studio & Site Structure 7.2 Power Pages Templates, Styling & Responsive Layouts 7.3 Web Pages, Navigation Menus & Content Snippets
8 Chapter 8: Power Pages Data Integration, Forms & Web Roles
8.1 Power Pages Lists, Basic Forms & Advanced Forms 8.2 Table Permissions, Web Roles & Page Access Security 8.3 External Identity Providers & Authentication Configuration
9 Chapter 9: Power Automate Cloud Flow Fundamentals & Triggers
9.1 Cloud Flow Types: Automated, Instant, Scheduled & Desktop Overview 9.2 Dataverse Connector Triggers & Operational Filters 9.3 Standard Connectors, Custom Connectors & Connection References
10 Chapter 10: Cloud Flow Actions, Expressions & Logic Controls
10.1 Logic Controls: Conditions, Switches, Apply to Each & Do Until Loops 10.2 Variables, Data Operations & Dynamic Content Manipulation 10.3 Power Automate Expression Language (WDL / Functions) 10.4 Error Handling, Configure Run After & Scope Controls
11 Chapter 11: Business Process Flows & Guided Processes
11.1 Business Process Flow Architecture, Stages, Steps & Data Steps 11.2 Branching Rules & Multi-Entity Business Process Flows 11.3 BPF Action Steps, Workflows & Cloud Flow Execution 11.4 BPF Security Roles, Order & Process Lifecycle
12 Chapter 12: Classic Workflows, Business Rules & Modern Logic Extensibility
12.1 Classic Dataverse Workflows: Real-Time vs. Background (Async) 12.2 Business Rules: Scope & Actions 12.3 Low-Code Plug-ins in Dataverse: Automated vs. Instant 12.4 Troubleshooting Automations, Run History & Analytics
13 Chapter 13: Power Platform Environment Architecture & Security
13.1 Environment Types: Default, Sandbox, Production, Trial, Developer 13.2 Environment Governance, Groups, Routing & Capacity Management 13.3 Data Loss Prevention (DLP) Policies & Connector Classifications
14 Chapter 14: Application Lifecycle Management (ALM) & Solutions
14.1 Unmanaged vs. Managed Solutions & Solution Layering Mechanics 14.2 Solution Components, Dependencies, Publishers & Prefixes 14.3 Exporting, Importing, Upgrading & Patches 14.4 Solution Checker, App Checker & ALM Best Practices
15 Chapter 15: Enterprise Interoperability & Service Integration
15.1 Exchange / Server-Side Synchronization & Email Integration 15.2 SharePoint & OneDrive Document Management Integration 15.3 Microsoft Word & Excel Document Templates
16 Chapter 16: Copilot, AI Capabilities & Exam Strategy
16.1 Copilot Studio & Generative AI across Power Platform 16.2 AI Builder Prebuilt & Custom Models in Apps and Flows 16.3 PL-200 Exam Strategy, Time Management & Question Analysis
5.3 Embedding Canvas Apps in Model-Driven Forms
Key Takeaways Explain This Topic AI
Embedded Canvas Apps allow developers to host customized canvas screens directly within a model-driven form section via the Canvas App control bound to a single-line text column.
The ModelDrivenFormIntegration control acts as the communication bridge, exposing the active model-driven record context through [@ModelDrivenFormIntegration].Item.
The OnDataRefresh property of ModelDrivenFormIntegration executes Power Fx actions whenever the parent model-driven form is saved or refreshed.
While Custom Pages represent the modern, responsive standard for model-driven UI extensions, Embedded Canvas Apps remain essential for legacy composite form scenarios requiring iframe-based canvas embedding.
Embedded Canvas Apps must be shared with the same security roles or Entra ID groups as the model-driven app to prevent authentication and access errors.
Last updated: August 2026
Embedding Canvas Apps in Model-Driven Forms
While model-driven applications excel at structured data entry and automated business process flows, specific operational scenarios demand rich, composite user interfaces that connect to external line-of-business systems, display complex graphical components, or incorporate interactive calculations. Prior to the introduction of Custom Pages, Embedded Canvas Apps established the architectural pattern for bringing canvas capabilities directly onto model-driven forms.
For the PL-200 exam, functional consultants must thoroughly understand how embedded canvas apps operate, how the specialized ModelDrivenFormIntegration control bridges host context, how to handle data refresh lifecycles, and how embedded canvas apps compare to modern Custom Pages.
1. Embedded Canvas Apps Architecture & Integration Mechanism
An Embedded Canvas App is hosted within an isolated <iframe> element inside a section or tab of a model-driven form. It communicates with the host Dataverse form through a specialized client-side integration channel. +-----------------------------------------------------------------------------------+
- | EMBEDDED CANVAS APP INTEGRATION ARCHITECTURE |
- | |
- | [MODEL-DRIVEN FORM SHELL] |
- | +------------------------------------------------------------------------------+ |
- | | Account Name: Contoso Corp | Account Number: AC-9021 | |
- | | | |
- | | +-- [IFRAME: EMBEDDED CANVAS APP] --------------------------------------+ | |
- | | | | | |
- | | | [ModelDrivenFormIntegration Control] | | |
- | | | | | | |
- | | | +---> [@ModelDrivenFormIntegration].Item | | |
- | | | | (Exposes Account Name, Number, GUID, etc.) | | |
- | | | v | | |
- | | | +-------------------+ +------------------------------------+ | | |
- | | | | External SQL Data | | Power Automate / REST API Services | | | |
- | | | +-------------------+ +------------------------------------+ | | |
- | | +----------------------------------------------------------------------+ | |
- | +------------------------------------------------------------------------------+ |
- +-----------------------------------------------------------------------------------+
- Configuration Mechanics
Column Binding Requirement: An embedded canvas app must be bound to a column on the host form—typically a Single Line of Text column (such as the primary name column name or a dedicated custom placeholder text column).
Adding the Control: In the form designer, the consultant selects the column, adds the Canvas App component, and selects Customize to launch the Canvas Studio.
App ID Parameter: Dataverse automatically generates a unique Canvas App definition linked to the form XML via its App Name and App ID (GUID).
2. The ModelDrivenFormIntegration Control & Context Passing
When a canvas app is created through the model-driven form designer, Dataverse automatically inserts a specialized root control named ModelDrivenFormIntegration . This control acts as the bi-directional communication bridge between the Dataverse form shell and the canvas app engine. +-----------------------------------------------------------------------------------+
- | MODELDRIVENFORMINTEGRATION DATA FLOW |
- | |
- | [Host Record Form: Account "Northwind Traders" (ID: 8a9b...)] |
- | | |
- | v |
- | [ModelDrivenFormIntegration Control] |
- | | |
- | +---> [@ModelDrivenFormIntegration].Item |
- | | - Returns typed record object of "Northwind Traders" |
- | | - Direct access: [@ModelDrivenFormIntegration].Item.Telephone1 |
- | | |
- | +---> OnDataRefresh Event |
- | - Triggers when Host Form is Saved or Refreshed |
- | - Power Fx: Refresh(Accounts); Refresh(SQLExternalOrders) |
- +-----------------------------------------------------------------------------------+
- Context Properties
[@ModelDrivenFormIntegration].Item :
Returns the active record currently displayed on the model-driven form as a strongly typed Dataverse record object.
Used directly in canvas formulas to filter related data, set default values, or display header details: // Gallery Items property querying external SQL orders matching current Account Number
- Filter(
- 'External ERP Orders',
- CustomerAccountNumber = [@ModelDrivenFormIntegration].Item.accountnumber
- )
[@ModelDrivenFormIntegration].SelectedRecord :
Legacy property referencing the active row. In modern implementations, [@ModelDrivenFormIntegration].Item is the recommended syntax.
The OnDataRefresh Event Handler
When a user edits fields on the parent model-driven form and clicks Save , or clicks the form's Refresh button, the host form notifies the embedded canvas app by firing the OnDataRefresh event.
Formula Execution: The consultant authors Power Fx formulas in ModelDrivenFormIntegration.OnDataRefresh to synchronize local collections and external data sources with the updated host record: // ModelDrivenFormIntegration.OnDataRefresh Formula
- Refresh(Accounts);
- Set(varCurrentAccount, [@ModelDrivenFormIntegration].Item);
- ClearCollect(
- colLiveSensorData,
- IoTDeviceConnector.GetTelemetry(varCurrentAccount.cr123_deviceguid)
- );
- Notify("Embedded sensor telemetry synchronized with host record.", NotificationType.Information)
- 3. Embedded Canvas Apps vs. Standalone Custom Pages
With the release of Custom Pages, Microsoft established a modern standard for embedding canvas-like flexibility into model-driven apps. Understanding when to use Custom Pages versus Embedded Canvas Apps is a frequent focus on the PL-200 exam. +-----------------------------------------------------------------------------------+
- | CUSTOM PAGES VS. EMBEDDED CANVAS APPS COMPARISON |
- | |
- | [CUSTOM PAGES (MODERN STANDARD)] [EMBEDDED CANVAS APPS (LEGACY PATTERN)] |
- | - Native React/Fluent UI shell - Hosted in nested <iframe> |
- | - Full page, Center Dialog, Side Pane - Embedded only inside form tab/section |
- | - Responsive auto-layout by default - Fixed aspect ratio (Phone/Tablet) |
- | - Solution component page type - Bound to single text column XML |
- | - High performance, fast rendering - Slower iframe initialization |
- | - Param("recordId") context passing - ModelDrivenFormIntegration.Item |
- +-----------------------------------------------------------------------------------+
- Detailed Architectural Comparison
- Dimension Standalone Custom Pages (Modern) Embedded Canvas Apps (Classic)
- Hosting Architecture Native Model-Driven Shell (React/Fluent UI) Nested HTML <iframe> on form
- Hosting Targets Full Page, Center Dialog Modal, Side Pane Form Section / Tab ONLY
- Context Passing Param("recordId") or Navigate() params [@ModelDrivenFormIntegration].Item
- Responsive Layout Responsive Auto-Layout Containers (Fluid) Fixed aspect ratio (Phone/Tablet scale)
- Performance & Load Fast (Shared runtime with model-driven app) Slower (Separate iframe runtime bootstrap)
- ALM Packaging First-class Solution Page component Canvas App + Form XML control binding
- Navigation Scope Multi-page, global app navigation Bound to specific host form lifecycle
Tip
Exam Guidance: When a question describes creating a new responsive UI extension, modal dialog wizard, or docked side pane, Custom Pages is the correct architectural choice. Embedded Canvas Apps are primarily utilized when maintaining legacy forms or embedding canvas UIs strictly within a single form tab.
4. ALM, Solution Packaging & Security Governance
Deploying embedded canvas apps across development, test, and production environments requires strict adherence to Application Lifecycle Management (ALM) principles. +-----------------------------------------------------------------------------------+
- | EMBEDDED CANVAS APP ALM & SHARING PIPELINE |
- | |
- | [DEVELOPMENT ENVIRONMENT] |
- | - Add Table + Form XML + Canvas App to Same Solution |
- | - Use Connection References & Environment Variables |
- | | |
- | v [Export as Managed Solution] |
- | [TEST / PRODUCTION ENVIRONMENT] |
- | - Import Managed Solution |
- | - Canvas App ID & Form XML bindings resolved automatically |
- | | |
- | v |
- | [SECURITY SHARING GOVERNANCE] |
- | - Model-Driven App: Assigned to Security Role (e.g., Sales Rep) |
- | - Embedded Canvas App: MUST ALSO BE SHARED with same Security Role / AAD Group! |
- +-----------------------------------------------------------------------------------+
- Key ALM Best Practices
Unified Solution Packaging: Always add the host Table, the Model-Driven Form, and the Canvas App component into the same Dataverse Solution . This ensures relative component dependencies are preserved when exporting and importing managed solutions.
Connection References: Any connectors used inside the embedded canvas app (e.g., SQL Server, Office 365, SharePoint) must use Connection References and Environment Variables rather than hardcoded connection strings.
Dual Security Role Sharing:
Granting a user a Dataverse Security Role that allows access to the Model-Driven App does NOT automatically grant access to the embedded canvas app.
Administrators must explicitly Share the embedded canvas app with the corresponding Dataverse Security Roles or Microsoft Entra ID (Azure AD) security groups. If not shared, users will see a permissions error ( "You don't have permission to view this app" ) inside the form iframe.