Solution history and rollback strategies in Dataverse
How to track solution changes over time and roll back when promotions go wrong — solution history table, backup-first patterns, and the limits of native rollback in Dataverse.
When a production solution promotion goes wrong — a workflow regression, a broken plug-in, an incorrect form change — the question becomes: how do we get back to the previous state quickly? Dataverse provides some native rollback capabilities but with important limits. A robust rollback strategy combines native features with deployment discipline.
Solution history. Dataverse maintains a Solution History record for each import:
- Solution name and version.
- Type (managed/unmanaged).
- Operation (Install, Upgrade, Update, Patch, Uninstall).
- Start and end timestamps.
- Status (success, failed).
- Linked solution file.
Navigation: Power Platform admin centre → environment → Solutions → History; or in maker portal.
Each history record corresponds to one promotion. Auditable trail of what was installed when. The history doesn't include unmanaged-solution changes — only solution-aware operations.
Solution layers. Multiple managed solutions can layer over the same component (table, column, form). The active layer shows which solution's customisation is currently active. When a solution is uninstalled, its layer is removed, exposing the layer beneath.
This is the foundation of rollback: if Solution v2 introduces a bug, uninstalling it (or installing v1 as a higher version) re-exposes v1's behaviour.
The four rollback approaches.
1. Solution version rollback (managed solutions). Install the previous version as a managed solution upgrade:
- Take the previous managed solution package (
MySolution_1.0.0.0.zip). - Import to the broken environment.
- The platform replaces v2 with v1.
- Data is preserved (rows aren't deleted on solution rollback).
This is the cleanest rollback when the previous package is archived. It requires archiving every production package before its successor lands — pipeline practice.
2. Solution patch reversal. If the change was a patch (not a new version), reverse-patching is more nuanced. Often easier to uninstall the patch (if uninstall is supported) than to apply a counter-patch.
3. Manual repair in the UI. Open the broken environment in the maker portal; revert the specific changes that broke. Risky and error-prone; only viable for tiny issues. Doesn't update solution metadata cleanly — drift between solution and environment results.
4. Restore from backup. Each environment has automated system backups (typically every few hours, retained 7–28 days depending on tier). Restoring rolls the environment back to a backup timestamp — including data changes since.
This is the nuclear option:
- Wipes all data created since the backup.
- Acceptable for some severe cases where data corruption accompanies the bad deployment.
- Not acceptable for most production rollbacks because of data loss.
Backup-first pattern. Before every production solution import:
- Take a manual backup (the admin centre supports this).
- Note the backup label.
- Import the solution.
- If the import fails or produces unexpected behaviour, restore the backup.
This is the safety net; configure it as a mandatory pipeline step before any production import.
Pre-deployment validation. The cheaper rollback is the one you don't need:
- Test environment — every solution lands in test before prod; smoke tests run.
- Solution checker — static analysis catches many regressions before deployment.
- Automated tests — Easy Repro framework, custom Power Fx tests, or external test harnesses; run before promotion.
- Approval gates — admin must sign off on prod imports.
A robust pre-prod testing discipline reduces production rollback frequency by an order of magnitude.
Tracking changes outside solutions. Some changes don't go through solutions:
- Direct database operations by users with admin rights.
- Power Apps and flows edited directly in prod.
- Workflow / business rule changes edited without solution awareness.
These changes don't appear in solution history; rolling them back requires backups or re-editing. The Managed Environments setting "block direct production changes" mitigates this.
Common pitfalls.
- Previous package not archived. Can't rollback because the v1 package was lost.
- Backup retention period misunderstood. Backups only last so long; major regressions discovered weeks later have no backup option.
- Data created since the bad deployment is valuable. Restoring loses it; manual repair of v2 with care to preserve data is the only path.
- Cascading dependencies. Solution A's rollback breaks Solution B that depended on changes in A. Solutions should be released together and rolled back together for related changes.
- Async work in flight. Rolling back while async jobs are processing creates inconsistent state.
Operational rule. Build the rollback path explicitly:
- Archive every production solution package in a versioned artifact store.
- Pre-import backup mandatory before any production solution import.
- Document the rollback procedure as runbook.
- Test the rollback periodically in a sandbox.
A team that has never rehearsed a rollback discovers in the middle of an incident that their plan doesn't work. The rehearsal is the value, not just the documentation.
Related guides
- Solution Checker and App Checker in Power PlatformHow Solution Checker analyses Dataverse solutions for issues — categories of findings, integration with Managed Environments, and how App Checker complements it for canvas apps.
- Solution dependencies and managed layer conflictsHow solution dependencies work in the Power Platform — required components, layer stacking, conflict resolution, and the maintenance discipline.
- Solution import / export pipelines for DataverseHow to automate Dataverse solution promotion through dev / test / prod — Power Platform CLI, Build Tools, GitHub Actions, and Power Platform Pipelines.
- Solution patches vs solution upgradesHow patches and upgrades differ in Power Platform solution lifecycle — what each does, when to use which, and the trade-offs across layers.
- ALM with GitHub Actions for Power PlatformHow to run Power Platform CI/CD with GitHub Actions — Microsoft's official workflows, source structure, and the differences from Azure DevOps.