Most Dynamics 365 CRM environments we look at were not designed badly. They grew. A form change here, a plugin there, a quick fix directly in production before an important deadline. After a few years, nobody is sure what is deployed where, and every release feels risky.
The good news: this is fixable step by step, while the business keeps working. Below are the warning signs and the approach we use.
Signs your environment needs a clean-up
- Every deployment to production feels risky, and someone always tests “just in case” after hours.
- UAT and production no longer match, so a successful test in UAT does not tell you much.
- Customisations are unmanaged and made directly in production, often by several people.
- Plugins run on old .NET Framework versions and nobody wants to touch them.
- Automations break silently: workflows and flows fail, and users notice before IT does.
- Duplicate and inconsistent data erode trust in the CRM, and teams keep their own spreadsheets.
- Your internal team spends more time firefighting than improving the system.
If three or more of these sound familiar, a clean-up will pay back quickly.
How we approach it
1. Inventory
We export the solutions from every environment and compare them: entities, fields, forms, views, plugins, workflows, Power Automate flows, web resources and security roles. The output is a simple map of what exists, where, and what is no longer used.
2. Target solution structure
We agree on a structure that fits your team: usually a small number of solutions split by area, with a clear publisher prefix, managed solutions in UAT and production, and unmanaged only in development.
3. Align the environments
Development becomes the single source of truth. Differences between environments are resolved one by one, starting with the components that change most often.
4. Upgrade the code
Plugins and custom workflow activities are moved to supported versions, deprecated features are removed, and the code goes into source control with automated builds.
5. A release process your team can trust
Solutions are exported and deployed through a pipeline, for example in Azure DevOps or GitHub Actions, with a simple checklist for each release. From that point on, no changes go directly to production.
What you get at the end
- releases that are predictable and repeatable,
- environments you can trust for testing,
- code that your team, or any partner, can safely change,
- time for your team to improve the CRM instead of keeping it alive.
We do this work either as a fixed-scope clean-up project or by adding Dynamics 365 developers to your team. Read more about our Dynamics 365 work.

Appstronauts
Need senior .NET, JavaScript or Dynamics 365 engineers on your team?
Book 30 minutes with Rado, our co-founder. Tell us what your team needs and get a straight answer on whether we can help.
Book a call with Rado How team extension works →