Fact

Unmanaged Power Platform Means Fix in Prod

Why solution drift and low ALM maturity turn every remediation into a high-risk change.

  • 5 min read

In short

When a production Power Platform application runs as an unmanaged solution, often in the Default environment, there is no safe path to change it. Edits are made directly in production, development and production drift apart, and there is no reliable test or rollback. The result is that every remediation, including small ones, becomes a high-risk change. Application lifecycle management is the control that fixes this. It is a delivery safety mechanism, not administrative overhead.

The situation this describes

A business-critical app has grown organically. It does useful work and people depend on it. Underneath, the governance tells a different story:

  • the production workload runs in the Default environment;
  • the solution is unmanaged;
  • changes have been made directly in production over time;
  • the development copy, if one exists, no longer matches production;
  • there is no defined test environment and no release process.

None of this prevents the app from running today. It prevents the app from being changed safely tomorrow.

Why this is the binding constraint

The common assumption is that the risk lies in the app’s features. The more important risk is structural: the absence of a safe change pipeline.

Findings:

  • Unmanaged solutions are intended as the development format. Microsoft’s guidance is to develop in unmanaged solutions and deploy managed solutions to every environment that is not a development environment. Running production on unmanaged solutions inverts that model.
  • Direct edits in production create drift. Once production has diverged from any development copy, there is no clean source from which to rebuild or to base a tested change.
  • Without separate development and test environments, there is nowhere to validate a change before it reaches users. The first real test of any fix is in production, in front of the people relying on it.

Impacts:

  • every change carries regression risk, because it cannot be tested in a representative environment first;
  • there is no reliable rollback, because there is no clean prior version to return to;
  • improvement slows, because the safe thing to do is often to change nothing;
  • knowledge concentrates in whoever last touched production, increasing key-person dependency;
  • the natural behaviour becomes “fix in prod”, which compounds the drift it came from.

This is the same operating-model failure that shows up across platforms: a control that was skipped to move faster early on becomes the reason the system is now hard to change.

Governance as a delivery control, not bureaucracy

The objection to ALM is usually that it adds process to a low-code platform that was meant to be fast. That framing is wrong. The purpose of the controls below is to make change faster and safer over time, not to slow makers down.

The minimum healthy pattern is well documented:

  1. Separate environments. At least development and production, and preferably a test environment between them, so a change can be validated end to end before it reaches users.
  2. Managed solutions downstream. Develop in an unmanaged solution; export and deploy a managed solution to test and production. Treat the managed solution as a build artefact, not something edited in place.
  3. A defined release path. A repeatable way to promote a change from development to production, whether through Power Platform pipelines or a broader DevOps process, so deployment itself is testable.
  4. Environment and maker controls. Clarity on who can create environments, who can deploy, and where production workloads are allowed to run, so the Default environment stops being a production host by accident.

These are control points, not ceremony. Each one removes a specific failure mode named above.

Remediating an environment already in this state

Where an unmanaged production app already exists, the path is incremental and should be treated as a managed change in its own right:

  • establish a development environment and recover a clean unmanaged source;
  • stand up a test environment for validation;
  • convert the production deployment to a managed solution with a defined release pipeline;
  • reconcile and retire the drift between environments deliberately, not in a single risky cut-over;
  • record the change so the new baseline is understood and supportable.

The objective is a state where the next fix is a routine, tested deployment rather than a live edit with held breath.

Practitioner checklist

  • Is any production workload running in the Default environment?
  • Is the production solution managed or unmanaged?
  • Does a clean development source exist, and does it match production?
  • Is there a test environment, or does production serve as the first test?
  • Can a change be rolled back to a known prior version?
  • Who is permitted to create environments and deploy to production?
  • When a fix is needed urgently, is the safe option available, or is “fix in prod” the only option?

If the honest answer to the last question is that production is the only place to make changes, ALM is not optional overhead. It is the missing safety control.

The pattern

Low ALM maturity does not announce itself as a problem until something needs to change. At that point, the absence of separate environments, managed solutions, and a release path turns an ordinary fix into a high-risk event. Governance here is not bureaucracy layered on a fast platform. It is the difference between a system you can improve safely and one you are afraid to touch.

Further reading / references

Next step

A Discovery Review can identify the changes that are currently being made live, the controls that are missing, and the smallest safe path to improve the release process. Book a Discovery Review.