PL-200: Power Platform Functional Consultant Study Guide
The PL-200: Microsoft Power Platform Functional Consultant exam validates your ability to configure Microsoft Dataverse, build apps with Power Apps, automate processes with Power Automate, create chatbots in Copilot Studio, and analyze data with Power BI. It targets functional consultants who gather requirements, design and configure solutions, and manage Power Platform implementations. Expect 40-60 questions over 120 minutes with a passing score of 700 (on a 1000-point scale).
Domain 1: Configure Microsoft Dataverse
- Dataverse is the foundational, secure, scalable relational data platform for Power Platform; it stores data in tables (rows/columns) and enforces enterprise-grade security and server-side business logic.
- Security roles define privileges (Create, Read, Write, Delete, Append, Append To, Assign, Share) per table; each privilege has an access level scope: None, User (own), Business Unit, Parent:Child BU, or Organization (full circle).
- Column-level (field-level) security controls which COLUMNS a user can see/edit, not which ROWS - row visibility is governed by security-role access levels and record ownership/sharing.
- If a security role grants no Delete privilege on a table, delete is blocked for that user regardless of who owns the record.
- Business rules run on the form (client) AND can run server-side; they validate data, set/clear field values, show error messages, and set fields required - without code. Real-time/synchronous workflows and Dataverse plug-ins handle more complex synchronous logic.
- Relationship types: one-to-many (1:N) and many-to-many (N:N). A lookup column implements the 'many' side of a 1:N relationship; N:N uses an intersect (relationship) table.
- A solution is the ALM container that packages customizations (tables, apps, flows, roles, etc.) to export from one environment and import into another. Unmanaged solutions are editable for development; managed solutions are locked/packaged for deployment to test/prod.
- Environments are containers for apps, flows, and data, each with its own security and an optional Dataverse database; use separate dev/test/prod environments to isolate the ALM lifecycle.
- Business process flows are guided, staged processes that lead users through ordered stages and steps to complete a record consistently.
- Data Loss Prevention (DLP) policies are configured in the Power Platform admin center to classify connectors as Business, Non-Business, or Blocked, preventing data from crossing groups within the same flow/app.
- Auditing should be enabled only on required tables and columns, with an audit log retention period set so old logs auto-delete and storage stays controlled.
- Large binary content (files, attachments, images) consumes File capacity via File or Image columns; reduce database capacity pressure by bulk-deleting stale records on a recurring schedule.
- Virtual tables (virtual entities) surface external data in Dataverse in real time without copying/importing it, so the data stays in the source system.
- To reduce capacity costs, consolidate into fewer environments and clean up unused environments and stale data; default environment should not be used for production workloads.
Domain 2: Create Apps with Power Apps
- Model-driven apps are metadata-driven: they auto-generate responsive UI from the Dataverse schema, surfacing the site map (navigation), tables, forms, views, dashboards, and business process flows - ideal for data-centric, process-driven scenarios.
- Canvas apps give pixel-level control over layout and styling with Power Fx formulas bound to controls; ideal for task-specific or role-specific experiences and can connect to many data sources (Dataverse, SharePoint, SQL, connectors).
- Choose model-driven when you need rich relationships, role-based security, standardized forms/views, and scalability; choose canvas for a custom, tailored UI.
- Delegation: use delegable functions and operators (Filter, Search, LookUp with supported operators) so query work is pushed to the data source; non-delegable functions cap results at the delegation row limit (default 500, max 2000).
- Improve canvas performance: reduce controls and data sources on the first screen, minimize OnStart data loads, select only needed columns, and cache data once in a collection/variable for reuse.
- Patch(Accounts, Defaults(Accounts), {Name: txtName.Text}) creates a new record; Patch with an existing record updates it. Filter(Accounts, Revenue > 50000) returns matching rows.
- Set(varGlobal, value) creates a global variable; UpdateContext({var: value}) sets a screen-scoped context variable; the screen's OnVisible property runs each time a screen is shown.
- Collect(colItems, {Name: "A"}) appends to a collection; ClearCollect(colItems, Accounts) clears then loads a collection in one step.
- Offline support: use local collections with SaveData/LoadData, or Dataverse mobile offline, to keep working without connectivity and sync changes when reconnected.
- Share a model-driven app by granting users/groups access AND assigning the appropriate security roles; share a canvas app with users/groups and ensure they have access to the underlying connections.
- Use Monitor and the App Checker to diagnose performance, delegation warnings, accessibility, and formula errors in canvas apps.
- Build a control once in a component library and reference it across multiple apps to enable reuse and centralized updates.
- Embed a custom page (canvas-based) inside a model-driven app to deliver bespoke, pixel-perfect screens within an otherwise metadata-driven experience.
- User().Email, User().FullName, and User() return information about the signed-in user; store it once (e.g., Set(varUser, User().Email)) to avoid repeated calls.
Domain 3: Automate with Power Automate
- Power Automate automates workflows with triggers (events/schedules) and actions across services; flows connect to hundreds of connectors for tasks like notifications, approvals, and data sync.
- Three cloud flow trigger types: automated (event-triggered, e.g., a Dataverse row is added/modified/deleted), scheduled (recurring on a defined cadence), and instant (manually run via button or from an app).
- Connectors are proxies/definitions that expose a service's API to flows and apps, handling authentication and data formatting through a standardized interface.
- Environment variables parameterize configuration (URLs, site IDs, connection references) so a solution moves between dev/test/prod without hard-coding values.
- Error handling: configure 'Configure run after' settings (run on succeeded/failed/skipped/timed out), wrap actions in Scopes, and set retry policies (default, fixed interval, or exponential backoff) on individual actions.
- The Approvals action is a built-in workflow that requests and captures approve/reject decisions from users and waits for the response.
- Desktop flows (Power Automate Desktop) provide robotic process automation (RPA) to automate legacy/UI-based applications that lack APIs.
- Prefer a Dataverse trigger (When a row is added, modified, or deleted) over a scheduled poll for near real-time automation and lower API consumption.
- Add a trigger condition or precondition check so a flow runs only when relevant data actually changed, avoiding unnecessary runs.
- Optimize loops: enable concurrency control on Apply to each for parallel iterations, and use the Filter rows (OData) query plus column selection in List rows to filter/select server-side and reduce action count.
- Extract shared logic into a reusable child flow and call it from multiple parent flows to avoid duplication; the child flow must use the Power Apps V2 / manually triggered pattern with a Respond action.
- A flow callable from a chatbot or Power Apps must reside in the same solution/environment and use the correct Power Apps (V2) trigger and a Respond to a Power App or flow action.
- Common expressions: concat(triggerBody()?['first'], ' ', triggerBody()?['last']) joins strings; formatDateTime('2026-06-01','dd/MM/yyyy') formats dates; outputs('Compose') and triggerOutputs()?['body/value'] reference action/trigger outputs.
- DLP policies categorize connectors as Business vs Non-Business; a flow cannot combine connectors from different groups, which governs how data may flow between services.
Domain 4: Implement Power Virtual Agents / Copilot Studio
- Microsoft Copilot Studio (formerly Power Virtual Agents) is a no-code/low-code platform for building chatbots that answer questions and trigger actions through a visual topic-based interface.
- Topics are conversation units triggered by trigger phrases; add varied trigger phrases and define entities so a topic matches diverse user phrasing and extracts data from utterances.
- Generative answers ground chatbot responses in knowledge sources (websites, SharePoint, documents, Dataverse) so the bot can answer questions you did not author as explicit topics.
- Use authored topics with explicit trigger phrases for governed, deterministic processes; use generative answers for broad, open-ended FAQ coverage.
- A 'Call an action' node lets a topic call a Power Automate flow or connector to perform tasks like creating a Dataverse record, passing inputs and returning outputs into the conversation.
- A flow called from a topic must be in the same solution/environment and use the Power Apps V2 trigger with a Respond action so inputs/outputs map correctly.
- Publish one bot to multiple channels from the same bot - for example, the Microsoft Teams channel and a custom website (embed snippet) channel - without rebuilding it.
- Use the Test bot pane and topic-level testing to validate conversation behavior before publishing changes.
- Analytics surface key metrics: resolution rate, escalation rate, and abandon rate per topic, helping you find topics that need improvement.
- Improve resolution rate by structuring topics well and offering clear quick replies so users get answers within a single session.
- Licensing: assign Copilot Studio authoring licenses only to bot makers, and use the appropriate plan/capacity for end-user sessions (billed by messages/sessions).
- Escalation/handoff transfers a conversation to a live agent (e.g., via Omnichannel/Dynamics 365 Customer Service) when the bot cannot resolve a request.
- The Power Platform admin center governs bot environments, DLP, and tenant settings, while Copilot Studio governs the bot content (topics, entities, knowledge, channels).
- Power BI dashboards and reports can be embedded into model-driven or canvas apps to surface analytics inside the application experience.
Domain 5: Analyze Data with Power BI
- A Power BI dataset (semantic model) is the core artifact containing the data model: table relationships, calculated columns, and DAX measures; reports and dashboards query against it.
- Power Query (M language) is the transformation/cleaning layer that runs before data reaches the model - remove columns, change types, merge, filter; Table.SelectRows(Source, each [Status] <> "Cancelled") filters rows.
- Query folding pushes Power Query transformation steps down to the source as native queries; preserve folding to minimize data transferred and refresh time.
- Reduce model size and improve performance by removing unused columns and reducing high-cardinality columns (e.g., split or round full-precision timestamps) in Power Query before import.
- Incremental refresh refreshes only new/changed partitions instead of the whole dataset, dramatically reducing refresh time for large fact tables.
- Storage modes: Import caches data in-memory for fast visuals (with scheduled refresh latency); DirectQuery queries the source live for large/fresh data; Composite mixes both.
- A star schema (one fact table related to conformed dimension tables) is the recommended model design for performance and simpler DAX.
- Total Sales = SUM(Sales[Amount]) is a DAX measure; measures are evaluated in filter context and are the basis of all aggregations and time-intelligence calculations.
- Dataflows are reusable Power Query running in the Power BI service; build a dataflow once and have multiple datasets/reports reuse the same prepared data.
- Publish reports to a workspace, then distribute curated content to broad audiences via a Power BI app, granting Viewer access to consumers.
- Workspace roles: Admin (full control), Member (publish/share, manage content), Contributor (create/edit content, cannot publish the app), and Viewer (read-only consume).
- Row-Level Security (RLS): define roles with DAX filter expressions and map users to roles in the service; workspace members with edit/admin access bypass RLS unless treated as Viewers.
- Scheduled refresh updates an imported dataset on a defined cadence; an on-premises data gateway (standard mode) is required to refresh datasets connected to on-premises sources.
- Viewers who cannot see a report typically lack access to the underlying dataset/semantic model or the data source credentials are not shared; certified/endorsed shared semantic models can be reused via live connection.
PL-200 exam tips
- Watch the privilege-vs-access-level distinction: privileges (Create/Read/Write/Delete) decide WHAT actions, while access levels (User/BU/Org) decide WHICH records. Column-level security is a separate, field-scoped control.
- On 'choose the right tool' questions, default to the lowest-effort native option: business rules before flows before code; Dataverse trigger before scheduled poll; model-driven for data-centric, canvas for custom UI.
- Memorize the delegation rule: non-delegable functions silently cap at the row limit (default 500). If a question describes missing records in a large data source, the fix is to redesign with delegable functions/filters.
- For performance questions in any product, the answer almost always reduces work at the source: query folding and incremental refresh (Power BI), Filter rows OData and column selection (Power Automate), fewer controls/columns and collections (Power Apps).
- Read case-study and yes/no questions carefully - they often hinge on one detail (a missing privilege, wrong scope, gateway requirement, or solution/environment mismatch). Eliminate options that violate a hard rule rather than picking the first plausible one.
Study guide FAQ
What is the format and passing score for PL-200?
PL-200 runs 120 minutes with roughly 40-60 questions (multiple choice, multi-select, drag-and-drop, and often a case study). You need a scaled score of 700 out of 1000 to pass. Microsoft does not publish a fixed question count, and items may be added or retired over time.
How much real hands-on experience do I need before taking PL-200?
Microsoft positions this as an associate-level exam for functional consultants. You should be comfortable configuring Dataverse, building both model-driven and canvas apps, creating cloud flows and approvals, building a basic Copilot Studio bot, and publishing a Power BI report with RLS. Hands-on practice in a developer/trial environment is far more valuable than memorization.
Is the exam still about Power Virtual Agents or Copilot Studio?
Power Virtual Agents has been rebranded as Microsoft Copilot Studio. The core concepts tested are unchanged - topics, trigger phrases, entities, calling Power Automate flows, channels, and analytics - but generative answers grounded in knowledge sources are now emphasized. Expect either name to appear in questions.
Which domain should I focus on most?
Configure Microsoft Dataverse is the largest and most foundational domain, and security, solutions/ALM, and relationships appear throughout the other domains too. Apps with Power Apps and Automate with Power Automate are the next heaviest. Do not skip Power BI or Copilot Studio - together they make up a meaningful share, and they reward a few clear facts (RLS, gateways, channels, trigger phrases).