🔒 Guided

Pre-launch preview. Authorised access only.

Incorrect code

Guided by A Guide to Cloud
Explore AB-900 AI-901
Guided PL-400 Domain 2
Domain 2 — Module 2 of 3 67%
7 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 2: Build Power Platform Solutions Premium ⏱ ~13 min read

Solutions & Layers: ALM Foundations

Master Power Platform's solution system — the backbone of professional development. Learn managed vs unmanaged solutions, solution layering, dependencies, and environment variables.

Solutions: the container for everything

☕ Simple explanation

Think of a solution as a shipping container.

When you move house, you do not carry items one by one. You pack them into labelled boxes: “kitchen”, “bedroom”, “office”. Each box contains related items and has a list of what is inside.

A Power Platform solution is a container that holds your apps, flows, tables, plug-ins, connectors — everything that makes up your project. You build in a solution, export it as a file, and import it into another environment. No solution = no way to move your work from dev to production.

Managed vs unmanaged is the key distinction: unmanaged is your “working copy” (editable), managed is the “sealed package” (deployed, protected from changes).

Solutions are the fundamental unit of application lifecycle management (ALM) in Power Platform. Every customisation — tables, apps, flows, plug-ins, security roles, connection references — should exist within a solution for proper deployment management.

Solutions support layering: multiple solutions can modify the same component, and Dataverse resolves conflicts through a defined merge algorithm. Understanding layers is essential for troubleshooting “why does this field look different in production?” questions.

Managed solutions are deployed to target environments with all components locked (no direct edits). Unmanaged solutions are used in development environments where components need to be modified. The export process determines the type — the same solution can be exported as either managed or unmanaged.

Managed vs unmanaged solutions

The #1 ALM rule: develop in unmanaged, deploy as managed
FeatureUnmanaged SolutionManaged Solution
Used inDevelopment environmentsTest, UAT, and production environments
Components editable?Yes — full edit accessNo — locked, cannot be directly modified
Can be deleted?Components remain in environment after solution deleteAll components removed when solution is uninstalled
Upgrade pathNo formal upgrade — just re-exportSupports staged upgrades with version numbers
Dependency trackingLoose — easy to break dependencies accidentallyStrict — enforced at import time
Best practiceONLY in dev environmentsALL non-dev environments (test, UAT, prod)

The golden rule

Develop unmanaged → Export as managed → Import managed into production

Never import unmanaged solutions into production. If you do, components become part of the “unmanaged layer” and cannot be cleanly removed or upgraded. This is one of the most common mistakes tested on the exam.

Solution layering

When multiple solutions modify the same component, Dataverse uses layering to resolve which version wins.

Layer order (bottom to top):

  1. System — Base Dataverse components (Microsoft’s defaults)
  2. Managed solutions — In order of import (first imported = lowest layer)
  3. Unmanaged customisations — Always on top (highest priority)

The top layer wins. If two managed solutions both modify the same form, the one imported last takes priority. Unmanaged customisations always override everything.

💡 Scenario: Elena debugs a form layout mystery

Elena Vasquez at Meridian Healthcare receives a complaint: “The Patient form used to show the Insurance section at the top, but now it’s at the bottom.”

She checks solution layers and finds:

  1. Base system — default form layout
  2. Claims Solution v1.0 (managed) — added Insurance section at the top
  3. HR Solution v2.0 (managed, imported after Claims) — reorganised the form, moving Insurance to the bottom

The fix: either update Claims Solution to v1.1 (reimport after HR Solution to take priority) or coordinate with the HR team to not modify the Patient form.

Exam lesson: When asked “why did a customisation disappear?”, check solution layers first.

Solution dependencies

Solutions can depend on components in other solutions. Dependencies must be managed carefully.

Types of dependencies:

  • Required component — your solution uses a table or column defined in another solution
  • Solution dependency — your solution explicitly requires another solution to be installed first
  • Internal dependency — components within the same solution depend on each other

Managing dependencies:

  • Run pac solution check before export to identify broken references
  • Use solution segmentation — include only the components you need, not entire tables
  • Document dependencies in your solution’s description
  • Import required solutions first, then dependent solutions

Environment variables

Environment variables store values that change between environments — URLs, feature flags, email addresses, thresholds.

Variable TypeExample UseStored Value
TextAPI endpoint URLhttps://api.prod.example.com
NumberApproval threshold10000
Yes/NoFeature flagtrue
JSONComplex configurationStructured config object
Data sourceConnection referencePoints to a specific connector
SecretAPI key (stored in Azure Key Vault)Key Vault reference

How they work across environments:

  • Definition travels with the solution (name, type, description)
  • Current value is environment-specific (set during or after import)
  • This separation means your solution works in any environment without hardcoded values
💡 Exam tip: Environment variables vs hardcoded values

If an exam question mentions values that differ between dev, test, and production (API URLs, email addresses, thresholds), the answer is almost always environment variables. Hardcoded values in flows, apps, or code create deployment failures when moving between environments.

The secret type is especially important — it stores sensitive values like API keys in Azure Key Vault, not in the solution itself.

Question

What happens when you delete an unmanaged solution?

Click or press Enter to reveal answer

Answer

The solution container is removed, but all components REMAIN in the environment as part of the unmanaged layer. This is why you should never develop in unmanaged solutions in production — the components cannot be cleanly removed.

Click to flip back

Question

What is solution layering in Dataverse?

Click or press Enter to reveal answer

Answer

When multiple solutions modify the same component, Dataverse resolves the conflict using layers. Bottom to top: System (Microsoft defaults) → Managed solutions (in import order) → Unmanaged customisations (always on top). The top layer wins. This explains why a customisation might 'disappear' after importing another solution.

Click to flip back

Question

What is an environment variable of type Secret?

Click or press Enter to reveal answer

Answer

A Secret environment variable stores sensitive values (API keys, passwords, connection strings) in Azure Key Vault instead of directly in the solution. The variable references the Key Vault secret, so the actual value never appears in the solution file or in the Dataverse database.

Click to flip back

Question

Why should you never import unmanaged solutions into production?

Click or press Enter to reveal answer

Answer

Unmanaged components become part of the unmanaged layer and cannot be cleanly removed by uninstalling the solution. They override managed customisations (unmanaged is always the top layer) and create maintenance headaches. Always export as managed for non-dev environments.

Click to flip back

Knowledge Check

Elena imports two managed solutions into the production environment: Solution A (version 1.0, contains a modified Contact form) and then Solution B (version 2.0, also modifies the Contact form). A maker then manually edits the Contact form in the unmanaged layer. Which version of the Contact form is displayed to users?

Knowledge Check

A developer needs to configure a cloud flow that sends error alerts to different email addresses in dev (developer@company.com), test (qa-team@company.com), and production (ops-team@company.com). How should the email address be stored?

🎬 Video coming soon

Next up: CI/CD Pipelines for Power Platform — automating deployments with Power Platform Pipelines and Build Tools.

← Previous

Environment Setup & Security Troubleshooting

Next →

CI/CD Pipelines for Power Platform

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.