PL-900 Objective 3.3: Build a Model-Driven App
PL-900 Exam Focus: This objective covers model-driven app development including creating apps from Dataverse tables, customizing forms that present record data, creating and modifying views for filtered lists, and sharing apps with appropriate security. Understanding the metadata-driven approach where tables, forms, and views configuration automatically generates user interfaces is essential. Model-driven apps prioritize data structure over visual design, letting Dataverse definitions drive application behavior.
Model-Driven App Development Overview
Building model-driven apps represents a fundamentally different development approach compared to canvas apps, focusing on data structure and business logic rather than pixel-perfect interface design. Makers define which Dataverse tables the application manages, configure forms displaying record details, create views presenting filtered lists, and organize navigation through sitemaps. The Power Platform generates responsive user interfaces automatically based on these metadata configurations, ensuring consistent design language and behavior without manual screen design. This approach accelerates development for data-centric business applications while maintaining professional appearance and accessibility standards automatically.
The model-driven methodology particularly benefits scenarios with complex data relationships, extensive business logic, and sophisticated security requirements. Applications automatically respect Dataverse relationships, enabling intuitive navigation between related records through subgrids and lookups. Business rules, workflows, and plugins execute consistently regardless of how users access data. Security roles defined in Dataverse control which records users can view, create, modify, or delete without custom permission code in applications. These integrated capabilities make model-driven apps powerful tools for comprehensive business applications managing significant data complexity.
Creating Model-Driven Apps from Tables
Prerequisites and Environment Requirements
Model-driven app creation requires a Dataverse environment containing the tables the application will manage. Unlike canvas apps that connect to diverse data sources, model-driven apps exclusively use Dataverse, leveraging its relationship capabilities, security model, and business logic infrastructure. Organizations typically use existing standard tables from the Common Data Model for common business entities or create custom tables for specialized requirements. Makers need Environment Maker or System Administrator roles providing permissions to create apps and access tables within environments.
Proper table design precedes app creation, with well-structured tables including appropriate columns, relationships to other tables, business rules enforcing data quality, and security roles controlling access. Tables should represent clear business entities like customers, orders, projects, or cases with logical column types and relationship patterns. Model-driven apps surface these table definitions through generated interfaces, so table structure directly impacts user experience. Investing time in thoughtful table design before app creation ensures intuitive, functional applications without extensive customization requirements.
Using the App Designer
The model-driven app designer provides a visual interface for configuring which tables participate in applications, which forms and views are available, and how navigation organizes access to app functionality. Makers start by creating new model-driven apps through the Power Apps maker portal, choosing blank templates or starting from existing solutions. The designer presents pages representing different aspects of configuration including table selection, form and view assignments, and sitemap organization. Changes preview in real-time, showing how configurations affect user experience without requiring app publication for every modification.
Adding tables to apps happens through table selection interfaces where makers browse available Dataverse tables, selecting those relevant to the app's purpose. The designer automatically includes default main forms and system views for selected tables, providing functional starting points that makers customize as needed. Tables can be added to multiple apps, with each app potentially configuring different forms, views, or navigation for the same underlying tables. This flexibility enables specialized apps for different departments or workflows while maintaining consistent underlying data structures.
Configuring the Sitemap
Sitemaps define app navigation structure, organizing tables, dashboards, and other components into logical hierarchies that users navigate through app menus. The sitemap designer uses a three-level hierarchy: areas represent major functional sections appearing as top-level navigation tabs, groups organize related items within areas, and subitems represent individual tables, views, or dashboards users access. A Sales area might contain Customers and Opportunities groups, with each group listing relevant tables and views as subitems providing direct access to specific data perspectives.
Effective sitemap design groups related functionality together, making apps intuitive without extensive training. Common patterns include organizing by business process stages (lead management, opportunity management, quote management), by entity type (people, transactions, documents), or by user role (sales, service, management). Navigation labels use business terminology rather than technical table names, helping users understand purposes without knowing database structures. Sitemaps can include external URLs launching related systems or documentation, integrating model-driven apps into broader application ecosystems.
Modifying Forms
Form Types and Selection
Model-driven apps use several specialized form types serving distinct purposes in the user experience. Main forms provide comprehensive record views containing all relevant fields, related record subgrids, and business process flows, used for detailed record viewing and editing. Quick Create forms enable rapid record creation through lightweight dialogs containing essential fields only, appearing in contexts where users need to create related records without full navigation. Quick View forms display read-only information about related records in pop-ups or embedded on parent forms, providing context without leaving current screens. Card forms present summarized record information in compact layouts for reference scenarios.
Tables can have multiple main forms serving different user roles or process stages. Form order configuration determines which form displays by default when users open records, while security roles can restrict which users see specific forms. Users with access to multiple forms switch between them through form selector dropdowns, choosing layouts best matching their current needs. This multi-form capability enables role-specific experiences showing only relevant fields and related data for each user type without requiring separate applications or complex conditional visibility logic.
Using the Form Designer
The form designer provides a visual interface for customizing how record data displays, with makers dragging fields from field explorers onto form sections, repositioning elements, and configuring properties through property panes. Forms organize into tabs (major sections users navigate between), sections (logical groupings within tabs), and columns (side-by-side field arrangement). This hierarchical structure helps organize large amounts of information comprehensibly, preventing single-screen information overload through logical categorization and progressive disclosure.
Field configuration includes setting labels (display names different from technical column names), marking fields required or optional, making fields read-only to prevent modification, setting default values accelerating data entry, and defining visibility rules showing or hiding fields based on other field values. These configurations happen through visual interfaces without coding, enabling business analysts to implement sophisticated behaviors. Form designers also add components like subgrids displaying related records, timelines showing activity history, quick view controls surfacing related record information, and web resources embedding custom functionality.
Form Customization Capabilities
Common Form Modifications:
- Adding and removing fields: Makers control which table columns appear on forms, removing irrelevant fields that clutter interfaces and adding custom fields created for specific business needs. Field explorer shows all available table columns with drag-and-drop addition to forms.
- Organizing with tabs and sections: Complex forms split information across multiple tabs (General, Details, Related) with sections within tabs creating visual groupings. Tabs can be expanded or collapsed by default, implementing progressive disclosure patterns.
- Subgrids for related records: One-to-many relationships display through subgrids showing related records inline. Customer forms show order subgrids, project forms display task subgrids, and case forms present activity subgrids, all configurable with specific views and layouts.
- Business rules: No-code logic validates data, sets field values automatically, shows or hides sections based on conditions, or displays messages guiding users. Business rules execute in real-time as users interact with forms, providing immediate feedback and enforcement.
- Business process flows: Multi-stage workflows embed directly on forms, showing process progress and required fields for each stage. Users advance through stages as processes progress, with visibility into completion status and remaining requirements.
Creating and Modifying Views
View Types and Purposes
Views serve as saved queries presenting filtered, sorted lists of table records throughout model-driven apps. System views are defined by Microsoft or system administrators, available to all users and appearing in standard navigation. Public views are created by makers, shared organization-wide but allowing users to create personal copies for individual customization. Personal views enable individual users to save custom queries for frequently accessed data subsets without administrator involvement. Each view type serves different needs, with system views providing baseline perspectives, public views standardizing common organizational queries, and personal views supporting individual work patterns.
Views appear throughout applications in multiple contexts: as main lists users navigate from sitemap items, in lookup dialogs when users select related records, as subgrid contents displaying related data on forms, and in chart underlying data sources. This pervasive use makes view design critical to overall user experience, with well-designed views enabling efficient data discovery and poor views forcing users to scroll through irrelevant records or repeatedly apply same filters. Understanding where and how views appear helps makers create appropriate perspectives for each use case.
View Configuration Elements
View design involves multiple configuration elements working together to present appropriate data subsets. Column selection determines which table fields appear in the list, with makers balancing information density against readability. Too few columns force users to open records frequently to see basic information, while too many columns create wide, hard-to-scan lists. Sort order establishes default record sequencing, typically ordering by modification date, name, priority, or other relevant fields. Primary sort columns can have secondary sorts as tiebreakers, ensuring predictable ordering.
Filter criteria restrict which records appear in views, implementing queries that match specific conditions. Active records views filter out inactive or deleted records. My Records views show only records owned by current users. High Priority views display records marked with urgent flags. Date-based filters show records created this week, modified today, or due in the next 30 days. Complex filters combine multiple conditions using AND/OR logic, creating sophisticated queries matching precise business scenarios. Filter visibility can be user-editable, allowing filtering within predetermined parameters, or fixed, showing only specified record sets.
Using the View Designer
The view designer provides visual interfaces for configuring view columns, sorts, and filters without writing SQL queries or understanding database syntax. Makers select columns from field lists, seeing immediate previews of how views appear to users. Column properties include width (fixed or flexible), display names (overriding default labels), and custom formatting options. Column order establishes left-to-right sequence, with most important information typically leftmost since users scan lists that direction naturally.
Advanced view capabilities include grouping records by field values (grouping cases by status or priority), calculated columns showing values derived from other fields, and custom controls altering how specific fields display (showing progress bars for percentages or icons for statuses). View access can be controlled through security roles, with different users seeing different default views based on permissions. Views also connect to charts, with chart data coming from underlying view queries, enabling consistent filtering between visualizations and underlying record lists.
Sharing Model-Driven Apps
Security Model Integration
Model-driven app sharing integrates tightly with Dataverse security roles, requiring users to have both app access and appropriate table permissions. Unlike canvas apps where sharing grants app usage rights directly, model-driven apps check security role assignments determining what users can do with app tables. This dual-layer approach ensures users can only access data they're authorized to see and perform only actions their roles permit, maintaining organizational security policies automatically without custom permission code in applications.
Security roles define privileges for tables including read (view records), write (modify records), create (add new records), delete (remove records), append (associate related records), and assign (change record ownership). These privileges have scope levels: user (only own records), business unit (records in user's BU), parent/child business units (hierarchical access), or organization (all records). This granular control enables sophisticated permission models matching organizational structures, with sales representatives accessing their own accounts while managers access their team's accounts and executives accessing all accounts.
App Sharing Process
Sharing model-driven apps begins in the Power Apps maker portal where makers select apps and choose share options. Unlike canvas app sharing that specifies user or co-owner permissions, model-driven app sharing assigns users to security roles providing necessary table access. Makers add users or Azure AD security groups, selecting appropriate security roles that grant required permissions. The sharing interface validates that selected roles provide app access and sufficient table permissions, warning if users might not see expected functionality due to role limitations.
Recommended practice involves creating custom security roles specifically for applications rather than using default system roles. Custom roles include exact privileges needed for app functionality without excessive permissions that violate least-privilege principles. For a customer service app, roles might include Service Agent (read/write cases, read accounts and contacts), Service Manager (all agent privileges plus case assignment and deletion), and Service Administrator (full access including app customization). This role-based approach scales better than individual user permissions, with new employees automatically receiving appropriate access through role assignment.
App Publication and Distribution
Published model-driven apps appear in users' Power Apps mobile app and web portal automatically based on security role assignments. Unlike canvas apps requiring explicit sharing with each user, model-driven apps become available to anyone with roles granting app access permissions. This automatic discovery ensures users find apps relevant to their roles without manual distribution or communication about app availability. Apps can also embed into SharePoint pages or Teams channels, integrating into existing workflows.
App URLs provide direct links enabling bookmarks or shortcuts bypassing Power Apps portal navigation. These persistent links remain stable across app updates, ensuring bookmarks continue working as apps evolve. Organizations distribute app URLs through intranet portals, email communications, or Teams messages, guiding users to relevant applications. Deep linking can open specific records or views directly, enabling communications that link to particular data contexts like "review this high-priority case" or "approve this pending order."
Real-World Model-Driven App Scenarios
Scenario 1: Customer Service Case Management
Requirements: Support team needs comprehensive application tracking customer cases from creation through resolution with complete activity history.
Implementation: Model-driven app uses Case, Account, Contact, and Knowledge Article tables. Main case form displays customer information, case details, resolution notes, and activity timeline. Subgrids show related cases and knowledge articles. Views include My Active Cases, High Priority Cases, Cases Due Today, and Recently Resolved Cases. Business process flow guides analysts through case diagnosis, solution implementation, and customer confirmation stages.
Sharing: Support Analyst role grants read/write access to own cases plus read access to accounts and contacts. Support Manager role adds case assignment and organization-wide case visibility. Service Administrator role includes full customization privileges.
Scenario 2: Project and Task Tracking
Requirements: Project managers track multiple projects with associated tasks, resources, and milestones across departments.
Implementation: Model-driven app manages Project, Task, Resource, and Milestone tables with relationships connecting them. Project main form includes tabs for details, tasks (subgrid), resources (subgrid), and milestones (subgrid). Quick Create forms enable rapid task addition without leaving project context. Views include Active Projects, My Projects, Projects by Department, Overdue Tasks, and Upcoming Milestones. Sitemap organizes into Planning, Execution, and Reporting areas.
Sharing: Project Team Member role provides read access to assigned projects and write access to own tasks. Project Manager role adds project creation, task assignment, and team-level visibility. Portfolio Manager role provides cross-department project access.
Scenario 3: Sales Opportunity Management
Requirements: Sales organization manages leads through qualification, opportunity development, and quote generation with forecasting visibility.
Implementation: Model-driven app leverages standard Account, Contact, Lead, and Opportunity tables from Common Data Model. Forms show relationship hierarchies with accounts having multiple contacts and opportunities. Business process flow guides qualification stages from lead through opportunity close. Multiple opportunity forms serve different sales stages: Early Stage (basic info), Proposal Stage (detailed requirements), and Final Stage (contract details). Views filter by sales stage, expected close date, and revenue ranges. Dashboard displays pipeline metrics.
Sharing: Sales Representative role grants access to owned leads/opportunities with read access to all accounts. Sales Manager role adds team member's record visibility and opportunity reassignment capabilities. Sales Executive role provides organization-wide read access for forecasting and reporting.
Best Practices for Model-Driven App Development
Table Design Considerations
- Start with data model: Design tables, relationships, and business rules before creating apps to ensure solid foundation
- Use standard tables: Leverage Common Data Model tables when they fit requirements for proven designs and Dynamics 365 compatibility
- Create custom tables thoughtfully: Only create custom tables for genuinely unique entities not covered by standard tables
- Establish naming conventions: Use consistent, business-friendly names for tables and columns that users recognize
- Document customizations: Maintain clear documentation of custom tables, fields, and business rules for maintenance and knowledge transfer
Form Design Principles
- Prioritize essential information: Place most important fields at top of forms where users see them immediately without scrolling
- Group related fields: Use sections and tabs to organize information logically by topic or workflow stage
- Minimize required fields: Only make fields required when truly necessary, avoiding frustration from prevented form saves
- Include helpful labels: Use clear, descriptive field labels and add descriptions providing context for complex fields
- Test with actual users: Validate forms with people who will use them daily, incorporating feedback before deployment
View Design Guidelines
- Create task-focused views: Design views matching how users actually work rather than exposing all possible fields
- Balance column count: Show enough information for decision-making without overwhelming wide, crowded lists
- Apply sensible defaults: Set default views and sorts matching most common usage patterns
- Enable personal views: Allow users to create personal views for individual work patterns beyond standard views
- Review and refine: Regularly review view usage analytics and user feedback, refining views based on actual behavior
Exam Preparation Tips
Key Concepts to Master
- Dataverse requirement: Model-driven apps require Dataverse tables; they cannot use other data sources
- Automatic interface generation: Forms and views generate interfaces automatically from metadata configuration
- Form types: Understand main, quick create, quick view, and card forms serve different purposes
- View purposes: Views filter and display record lists throughout apps in navigation, lookups, and subgrids
- Sitemap structure: Navigation organizes through areas, groups, and subitems hierarchically
- Security role sharing: Sharing requires assigning security roles providing table access, not just app permissions
Practice Questions
Sample PL-900 Exam Questions:
- What must exist before creating a model-driven app?
- Which form type enables rapid record creation with essential fields only?
- What model-driven app component defines navigation structure organizing tables and views?
- Where do you customize which columns appear in record lists throughout a model-driven app?
- What determines whether users can access a model-driven app and its data?
PL-900 Success Tip: Focus on understanding the metadata-driven approach where table structures and configurations automatically generate interfaces. Know that model-driven apps require Dataverse, forms display record details, views show filtered lists, and sitemaps organize navigation. Remember security roles control both app access and data permissions. Practice identifying which component (form, view, sitemap) addresses specific requirements in scenario questions.
Hands-On Practice Lab
Lab Objective
Build a functional model-driven app with customized forms and views. This lab requires Power Apps maker portal access with Dataverse environment containing sample tables.
Lab Activities
Activity 1: Create Model-Driven App from Tables
- Access app designer: Navigate to Power Apps maker portal and create new model-driven app
- Add tables: Select two or three related Dataverse tables (like Account and Contact, or custom tables from previous labs)
- Configure sitemap: Organize tables into logical navigation structure with areas and groups
- Preview app: Use preview feature to see how app appears and test navigation between tables
Activity 2: Customize Forms
- Open form designer: Access main form for one of your app tables
- Modify fields: Add relevant fields, remove unnecessary ones, and reorganize for logical flow
- Create sections: Organize fields into sections with descriptive labels
- Add business rule: Create simple business rule making a field required based on another field's value
Activity 3: Create Custom Views
- Access view designer: Open view configuration for one of your tables
- Create new view: Build custom public view with specific columns, filters, and sort order
- Configure columns: Select 4-6 most relevant columns for your view purpose
- Apply filters: Add filter criteria restricting view to specific record subset
Activity 4: Share the App
- Publish app: Save and publish your model-driven app
- Review security roles: Examine existing security roles and their table permissions
- Share app: Add a colleague or test user with appropriate security role
- Verify access: Have recipient confirm they can launch app and access data appropriately
Lab Outcomes
After completing this lab, you'll have practical experience building model-driven apps from tables, customizing forms with fields and business rules, creating views with filters and columns, and sharing apps with security roles. This hands-on knowledge demonstrates core model-driven app development capabilities tested in the PL-900 exam and prepares you for building data-centric business applications.
Frequently Asked Questions
What do you need to create a model-driven app?
Creating model-driven apps requires a Dataverse environment with appropriate tables containing the data the app will manage. Makers select existing standard tables from the Common Data Model or custom tables created for specific business needs. Unlike canvas apps that can connect to various data sources, model-driven apps are built exclusively on Dataverse, leveraging its relationship management, security model, and business logic capabilities. Makers need Environment Maker or System Administrator roles to create model-driven apps, with permissions to access and modify the selected tables.
How do you add tables to a model-driven app?
Tables are added to model-driven apps through the app designer interface by selecting tables from available Dataverse tables in the environment. Makers choose which tables the app manages, with the designer automatically including default forms and views for each selected table. The sitemap configuration determines how tables appear in app navigation, organizing them into areas, groups, and subitems that create logical menu structures. Adding a table makes its data accessible throughout the app, with users navigating to table views, opening records in forms, and creating new records through the standard interface.
What are the different form types in model-driven apps?
Model-driven apps use several form types serving different purposes: Main forms provide comprehensive record views with all relevant fields and related data for detailed editing. Quick Create forms enable rapid record creation with essential fields only, appearing as dialogs without full navigation. Quick View forms display read-only information about related records in pop-ups or on parent forms. Card forms present summarized information in compact layouts for quick reference. Main forms are most common for regular record management, while quick forms optimize specific interactions like fast data entry or reviewing related information without leaving current context.
How do you customize model-driven app forms?
Forms are customized through the form designer by dragging fields from the field explorer onto form sections, removing unnecessary fields, reorganizing field positions, adding tabs and sections for logical grouping, and configuring field properties like required status, visibility, or read-only settings. Business rules can be created directly from forms to implement validation, set default values, or show/hide fields based on conditions. Subgrids display related table records on parent forms, showing one-to-many relationships. Form customization happens at the table level, applying across all apps using those tables, ensuring consistency while allowing different form selections per app if needed.
What is the purpose of views in model-driven apps?
Views define how lists of table records display throughout model-driven apps, specifying which columns appear, sort order, filters restricting visible records, and grouping for organized presentation. They provide different perspectives on data matching common use cases like Active Records, My Records, or Recently Modified Records. System views are available to all users, public views are organization-wide but customizable, and personal views allow individual users to create private queries. Views appear in app navigation, record selection dialogs, lookups, and subgrids, making them fundamental to how users discover and access data across the application.
Can you have multiple forms for the same table?
Yes, tables can have multiple main forms serving different purposes or user roles. Organizations create role-specific forms showing only relevant fields for each job function, process-stage forms displaying appropriate fields for current workflow stages, or simplified vs comprehensive forms for different user sophistication levels. Form order determines default forms shown to users, while security roles can restrict which forms specific users see. Users with access to multiple forms can switch between them through form selector dropdowns. This multi-form capability enables tailored experiences without creating separate apps or duplicating tables for different user groups.
How do you share model-driven apps?
Model-driven apps are shared by assigning security roles to users that grant both app access and appropriate table permissions. Unlike canvas apps with user/co-owner permissions, model-driven app access comes through Dataverse security roles controlling what users can see and do within apps. Makers share apps from Power Apps maker portal by selecting apps and adding users or security groups, but users also need security roles providing read, write, create, or delete permissions on app tables. This dual-layer security ensures users can launch apps and access data appropriately based on their organizational roles and responsibilities.
What is a sitemap in model-driven apps?
The sitemap defines app navigation structure, organizing tables, views, dashboards, and external resources into hierarchical menus. It consists of areas (top-level navigation groups), groups (subsections within areas), and subitems (individual navigation entries). For example, a Sales area might contain Customers and Opportunities groups with related tables and views as subitems. Sitemaps control what appears in app navigation panes, how items are organized, and what users see when selecting menu options. Effective sitemap design groups related functionality logically, making apps intuitive and reducing user training requirements through clear organizational patterns.
Written by Joe De Coppi - Last Updated November 14, 2025