ALMBeginner

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.

Prerequisites

  • At least two environments, for example Dev and Test
  • System customizer or admin rights

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
  1. Managed vs unmanaged
  2. Publisher and prefix
  3. Make solutions portable
  4. Deploy with Pipelines
  5. Or script it with the PAC CLI

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

UnmanagedManaged
WhereDevelopment onlyTest, UAT and production
Can be edited directlyYesNo (locked)
Removing the solutionLeaves components behindRemoves 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:

Terminal
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
J / K next or previous article

Jagadeesan P

Found this useful? I share new guides on LinkedIn.

Follow