Managed solution changes not showing after import? Check the layers
The import worked, but the app behaves the old way. A layer sits above your solution's: find it in the solution layers, then remove it or fix it at source.
DataverseFix a problem9 min read
You import a new version of a managed solution into test or production, and the import succeeds. But the form, view or column still behaves the way it did before, as if the managed solution changes never arrived. Microsoft's troubleshooting page describes exactly this after an upgrade or update. The new value is in the environment, but it isn't on the top layer, and for most components only the top layer decides what people see. The fix depends on what's above it.
- A solution import or upgrade finishes without errors.
- A component in it, such as a form, view or column, still works the old way in the target environment.
- The same component works the new way in the environment you exported from.
Why the new version doesn't take effect
Dataverse keeps each component's changes in layers:
- Managed layers. The system layer is at the bottom. Each managed solution you install goes above the ones installed before it, so a later solution can change an earlier one.
- The unmanaged layer. Unmanaged solutions and direct edits made in the environment all share one layer, and it sits above every managed layer.
For most components, what the component does at runtime comes from the top layer. Microsoft lists the exceptions: model-driven apps, forms and site maps merge their layers instead. So when you upgrade your solution, its layer gets the new value, but if anything sits above your solution's layer, that layer still decides the behaviour. Microsoft names two causes: an unmanaged change on top, or another managed solution on top.
- Step 1You import the new version of your managed solution
- Step 2Open the component's solution layers and read the top row
- Step 3Top layer unmanaged: remove the unmanaged change, or import again with overwrite
- Step 4Another managed solution on top: change it in its own source and import it again
- Step 5Your new value is the top layer and takes effect
Check the solution layers
- Sign in to Power Apps in the target environment and open Solutions.
- Open a solution that contains the component that isn't behaving.
- Select the component and open its solution layers. Microsoft's steps reach the command from the command bar, or from the menu next to the component.
- The page lists every layer for the component, with the most recent at the top. Look at the top row:
- If its Solution column says Unmanaged layer, it's cause 1.
- If the top row is a managed solution other than yours, it's cause 2.
- To see what a layer changed, select it. The Properties pane opens. Updated shows only the properties that layer changed; All shows every property.
Comparing the top layer's properties with your solution's layer shows you exactly which value is winning.
Cause 1: an unmanaged change on top
Someone, or something, changed the component directly in the target environment. That change lives in the unmanaged layer, so it stays on top through every upgrade of your managed solution.
You have two ways out.
Remove the unmanaged layer
- On the solution layers page, select the row for the unmanaged layer.
- Select Remove active customizations on the command bar.
The managed layer below then becomes the top layer, and your new value takes effect.
Warning
Removing active customizations can't be undone, and Microsoft warns that data tied to the unmanaged change can be lost. If the unmanaged layer is the component's only layer, this command can't remove it; the component itself is unmanaged and would have to be deleted instead.
Import again with overwrite
Importing again with the overwrite option copies the incoming value into the unmanaged layer, so the top layer now matches your solution. Microsoft's pages describe the result a little differently:
- The troubleshooting page says the incoming value is copied into the active layer, and that the active layer still exists afterwards.
- The upgrade page says the option overwrites or removes unmanaged customizations on the solution's components.
Either way, three limits apply, per Microsoft:
- Where it's offered. Not in the import pane in Power Apps: Microsoft's current import steps and screenshot show only the solution actions and the plug-in option, and the table of option names on Microsoft's performance page shows no option for it in the user interface. Use the
--force-overwriteswitch ofpac solution import, or theOverwriteUnmanagedCustomizationsoption of the import API. The upgrade page also says the classic import experience offers it, but gives no steps for reaching it. - Not for merged components. The option doesn't affect components that merge layers instead of replacing them: forms, site maps, the ribbon and model-driven apps. For those, remove the unmanaged layer instead.
- It's slow. Microsoft's performance recommendations say overwriting makes imports much slower and discourage it.
pac solution import --path .\MySolution_managed.zip --force-overwrite
The command above follows the switch names in Microsoft's pac solution reference; it wasn't run for this guide.
Where unexpected unmanaged layers come from
A direct edit in the target makes one. Microsoft documents two more that nobody made on purpose:
- A table without a fallback form. If a table in the managed solution has no fallback form set, the import makes an unmanaged layer on one of its main forms to mark it as the fallback. Set the fallback form in the source before you export.
- Dataflows. Microsoft notes that dataflows create unmanaged layers, even where unmanaged customizations are blocked.
Cause 2: another managed solution on top
If the top row is another managed solution, that solution was installed after yours and changes the same component. Overwriting doesn't help here. Microsoft's example shows that the overwrite option only reaches the unmanaged layer, so the other managed solution keeps winning.
Fix it in that solution's source environment:
- Change the component in that solution to the value you want, export a new version and import it into the target.
- Or remove the component from that solution, export a new version and import it as an upgrade, so it stops changing the component.
Microsoft also mentions deleting the top layer, without saying how. For a managed layer, the documented way to remove it is to uninstall that solution; Microsoft says the managed solution below it then takes effect.
Warning
Deleting a managed solution deletes every component in it, and their data. Don't uninstall a solution just to clear one layer unless you mean to remove all of it.
If the other solution comes from a vendor or another team, ask its publisher. Microsoft's upgrade page says to follow the publisher's guidance when you update a solution you got from someone else.
Other reasons the change didn't arrive
If the layers look right, check these documented cases:
- It was an unmanaged solution. Microsoft says an imported unmanaged solution arrives as a draft, and you must publish it before it's active. A managed solution arrives published.
- You chose update, not upgrade. An update leaves components that the new version no longer has. An upgrade deletes them. So a column or form you removed in the source can still be there after an update.
- A form is missing after an unmanaged import. Microsoft explains that a form exported without changes can be marked as unmodified in the solution file, and is then left out of the import.
Stop it happening again
- Block unmanaged customizations. An admin can turn on this environment setting in the Power Platform admin center. It's off by default. It blocks importing unmanaged solutions, creating new components and making unmanaged changes to managed ones, but still lets you remove unmanaged layers. Microsoft lists apps and features that might not work as expected with it turned on, so check that list first.
- Set fallback forms on your tables before you export.
- Make changes in development and bring them through your solution, not by editing in test or production.
Do
- Read the top row of the solution layers before you change anything.
- Compare the top layer's properties with yours to see which value wins.
- Fix a managed layer on top in its own source environment.
Don't
- Don't expect overwrite to beat another managed solution.
- Don't use overwrite for forms, site maps or apps; remove the unmanaged layer instead.
- Don't remove active customizations until you've noted what they changed.
Related solution guides
- Clear a component's dependencies also uses solution layers, to find the top solution that blocks a delete.
- InvokerConnectionOverrideFailed is another case where an unmanaged layer gets in the way.
- Missing dependencies when you move a flow into a solution covers imports that fail outright.
- "Cannot start the requested operation" is a lock while another solution operation runs.
Sources
- Changes aren't effective after solution import — Microsoft Learn
- Solution layers: view layers and remove an unmanaged layer — Microsoft Learn
- Solution layers and merge behavior: which components merge — Microsoft Learn
- Upgrade or update a solution: overwrite customizations option — Microsoft Learn
- An active unmanaged layer is created after you import a managed solution — Microsoft Learn
- Import solutions — Microsoft Learn
- Performance recommendations for solution imports — Microsoft Learn
- pac solution import — Microsoft Learn
- A form doesn't appear in the target environment after importing an unmanaged solution — Microsoft Learn
- Block unmanaged customizations in Dataverse — Microsoft Learn
Add LowCodeStacks as a preferred source on Google
Did this fix it?
Comments
No comments yet. Share what worked for you.
Sign in to comment. Comments show under a display name you choose, never your email.