Managed vs unmanaged solutions and Power Platform Pipelines
The ALM basics every Power Platform team needs: solution types, publishers, environment variables, connection references and automated deployment with Pipelines.
What you'll learn
- When to use managed vs unmanaged solutions
- Set up a publisher and keep one prefix
- Use environment variables and connection references
- Deploy with Pipelines or the PAC CLI
On this page
Moving changes from development to production by hand works — until it doesn't. A few ALM habits make deployments boring, which is exactly what you want.
Managed vs unmanaged
| Unmanaged | Managed | |
|---|---|---|
| Where | Development only | Test, UAT and production |
| Can be edited directly | Yes | No (locked) |
| Removing the solution | Leaves components behind | Removes its components |
Rule of thumb: build in an unmanaged solution in Dev, deploy as managed everywhere else.
Publisher and prefix
Create your own publisher with a short prefix, like pp_, and use it for every component. Never build in the Default Solution — the default publisher's prefix makes cleanup painful later.
Make solutions portable
- Environment variables store values that differ per environment: API URLs, email addresses, feature flags.
- Connection references let flows use a different connection in each environment without editing the flow.
When you import into a new environment, you're prompted to fill these in once.
Deploy with Pipelines
Pipelines in Power Platform give makers a guided "Deploy" button: you define the stages (Dev → Test → Prod) once, and each deployment exports, imports and records history automatically. It's the easiest way to stop manual exports.
Or script it with the PAC CLI
For Azure DevOps or GitHub Actions, the Power Platform CLI does the same job:
pac auth create --name dev --environment https://contoso-dev.crm.dynamics.com
pac solution export --name ContosoCore --path ./out/ContosoCore_managed.zip --managed
pac auth create --name test --environment https://contoso-test.crm.dynamics.com
pac solution import --path ./out/ContosoCore_managed.zip