[object Object]

A user reports that the “Industry” field is missing from the Account form. You open the form designer, the field is there. They refresh, it is still missing. You are looking at a layer override, and the customization stack is lying to one of you.

Read the layer stack first

Every customizable component in Dataverse is a stack of layers. The active layer is what users see. Order from bottom to top: System, Managed solutions in install order, Unmanaged solution. The top layer wins.

Use Solution Layers in make.powerapps.com: open the solution, find the component, click the three dots, choose “See solution layers.” You get a stack with timestamp and solution name per layer. If the topmost layer is not the one you expect, you have your answer.

For programmatic inspection, query the msdyn_componentlayer virtual entity or use the RetrieveSolutionsImportLog message. Both return layer order, so you can script a daily diff.

The unmanaged-on-top trap

The single most common conflict: someone made an unmanaged change in production. That change creates an unmanaged active layer that overrides every future managed import. Your dev solution exports cleanly, imports succeed, but the production form never updates because the unmanaged layer wins.

Fix path: open the component in the unmanaged solution, click “Remove active customizations.” This deletes the unmanaged layer and surfaces the next managed layer. Test with a non-critical field first; the action is reversible only by re-applying the customization.

Multi-publisher chaos

If three managed solutions from different publishers all touch the Account form, the last one imported wins. This is non-deterministic across environments because import order can differ. Two fixes:

  1. Consolidate publishers. One owner per table whenever possible.
  2. Use solution patches and segmented solutions to scope changes to specific columns, reducing collision surface area.

Test layers before promoting

Before importing into production, run a dry-run import in a clone environment and compare layers. PowerShell with the PowerApps CLI:

pac solution check --path solution.zip
pac solution import --path solution.zip --activate-plugins --skip-dependency-check false

Then export the layer report and diff against the previous import. If the active layer changes for any field that should not have moved, abort.

Lock down production

The lasting fix is process. Disable customization in production environments via the admin center: set “Solution checker” to required and use Power Platform pipelines so unmanaged edits in prod become impossible. If a hotfix is required, do it in a hotfix branch in dev and patch forward, never inline.

When you must override

Sometimes the override is intentional, like a customer hiding a vendor field. Document it in the solution description, name the unmanaged layer with a OVERRIDE- prefix, and add it to a quarterly review list so it does not become forgotten technical debt.

What to do this week: run a layer report on your top 10 customized tables in production and identify every unmanaged active layer. Remove or document each one.

[object Object]
Share