Views:

Applies to Product – Microsoft Dataverse


What’s happening?
The customer has unmanaged layers of components in the production environment and seeks to understand the differences between the unmanaged and managed layers before proceeding with the removal of the unmanaged layer.


Reason:
Advisory and education.


Resolution:
🔍 Key Differences: Managed vs. Unmanaged Layers
Unmanaged Layers:

  • Represent direct customizations made in an environment, typically during development.
  • Exist at the top of the solution layering stack, meaning they override managed layers at runtime.
  • Are editable and can be changed directly in the environment.
  • Should be considered the "source" during development and are often checked into source control.
Managed Layers:
  • Are created by importing managed solutions, typically built and exported from development environments.
  • Are locked down—components cannot be edited directly.
  • Are used in production, UAT, and test environments to ensure consistency and control.
  • Serve as the build artifact in an Application Lifecycle Management (ALM) process.

⚠️ Why Unmanaged Layers in Production Are Risky
  • They can override managed behavior, leading to unpredictable runtime behavior.
  • They complicate solution upgrades and patching, often causing import errors like:
“A managed solution cannot overwrite the [component] which has an unmanaged base instance”.
  • They reduce visibility and auditability, making it harder to track changes.

Best Practices for Removing Unmanaged Layers
  1. Use the “Remove Active Customizations” Feature:
    • This reverts unmanaged changes on components that also have a managed layer.
    • It’s safe and supported, especially when preparing for managed-only environments.
  2. Enable “Block Unmanaged Customizations”:
    • This Power Platform setting prevents future unmanaged changes in production.
    • It ensures all changes come through approved ALM processes.
  3. Convert to Managed Solutions:
    • Create a single unmanaged solution in development that includes all components.
    • Export it as managed and import into production to unify the layer stack.
  4. Backup and Clean Up:
    • Before removing unmanaged layers, back up the environment.
    • Remove unused tables or components to simplify the solution.