Learn › Power Apps & Platform › 4 · ALM & operations

Solutions and application lifecycle management

Solutions are the Power Platform's unit of packaging and deployment — the way to move apps, flows and tables between environments properly. Managed vs unmanaged is the ALM decision that separates a real lifecycle from copy-paste.

Solutions are the deployment unit

A solution is a container of components — apps, flows, tables, security roles, connection references, environment variables — that you export from one environment and import into another. It is how you move work from dev to test to prod without rebuilding by hand. Everything serious lives in a solution.

Managed vs unmanaged

Unmanaged Managed
Editable Yes — this is your source/dev form No — locked in the target
Where Development environments Test and production
Deletion Deleting removes definitions, not artifacts Uninstalling cleanly removes the components
Layering N/A Supports managed layers/patches

The discipline: develop unmanaged, deploy managed. Editing directly in production (an unmanaged change there) is the anti-pattern that destroys any lifecycle — you can no longer tell source from deployed.

Pipelines and connection references / environment variables

Pipelines (in Power Platform, or Azure DevOps / GitHub with the Power Platform Build Tools) automate export→import across dev/test/prod. Two solution components make this clean: connection references (bind to the right connection per environment) and environment variables (parameterise URLs, IDs, settings per environment) — so the same managed solution behaves correctly in each stage without edits.

Failure modes

  • Editing in production. Unmanaged changes made directly in prod cannot be reconciled with dev — the source of truth is lost.
  • Everything in the default solution. Apps/flows built outside a solution can't be cleanly moved or versioned — the sprawl root.
  • Hard-coded environment specifics. URLs/IDs baked into components instead of environment variables break on import.
  • No source control. Solutions not exported to git have no history, no review, no rollback.

What to watch (proofs)

  • Solutions per environment and managed/unmanaged state: Get-SolutionList / the Dataverse solutions table, or pac solution list — unmanaged solutions in production are the finding.
  • Assets outside solutions: apps/flows (Get-AdminPowerApp / Get-AdminFlow) not in any solution — unmanaged sprawl.
  • Pipeline/deployment history: pipeline run records or Build Tools logs — proof that promotion is governed, not manual.
  • Environment variables and connection references bound correctly per stage (solution inspection) — the parameterisation that keeps prod behaving.

PowerShell for this concept

  • Get-SolutionList
  • Get-AdminPowerApp
  • Get-AdminFlow

Discussion

No messages yet — start the thread.

Sign in with your email to join the discussion — we send a one-time link, no password.