Managed properties are the difference between an ISV solution that customers extend safely and one that gets force-customized into chaos within six months. They are also the difference between a platform team that ships a stable internal product and one that fights regression every release.
What you can actually lock
Managed properties are per-component flags shipped inside a managed solution. Common ones:
IsCustomizableon tables, columns, forms, views, chartsCanCreateAttributes,CanCreateForms,CanCreateViewson tablesCanModifyAdditionalSettingson entitiesCanBeDeleted,CanBeRenamedon most components- Process step properties that prevent reordering
You set them in the managed properties dialog inside the solution, before exporting as managed. Once in a customer environment, only the original publisher can change them, via an updated managed solution.
The strategy: lock the contract, free the surface
The lasting pattern: lock anything that is part of your solution’s API contract. Free anything that is presentation.
Locked: table schema names, column data types, plugin registrations, business logic that downstream code depends on, security role definitions you ship.
Free: form layouts, view columns and order, dashboards, ribbon customizations on system commands, additional columns on your tables, additional views.
This lets customers brand and extend without breaking your upgrade path.
Avoid the all-locked trap
A lot of v1 ISV solutions ship with everything set to non-customizable because it feels safe. Customers immediately discover they cannot add a single field, then either escalate constantly or fork your solution. Both outcomes are bad.
If you must ship locked, add explicit extension points: a “Customer Extension” solution that depends on yours and exposes a safe surface area where additions are encouraged.
Plan for upgrades
Managed properties travel with your solution. If you ship version 2 with IsCustomizable = true on a column that was previously locked, customer customizations become possible. Reversing direction (locking what was open) blocks future imports if customers customized in the meantime.
The rule: open up over time, never close down. Plan your initial managed property posture as the most restrictive version you will ever ship.
Test with a partner environment
Maintain a “customer simulator” environment. Install your managed solution, then have a partner team make realistic customizations. Try shipping the next version. Anything that breaks reveals a managed property mistake.
Document the contract
Ship a one-page managed properties manifest with your solution: which tables and columns are extensible, which are locked, which extension points are supported. Customers will read it; their AEs will quote it back to you when something changes.
Tooling
Use the XrmToolBox plugin “Managed Properties Updater” or scripted Web API calls to bulk-set properties before export. Manual click-through on a 200-component solution is how mistakes happen.
What to do this week: list every component your solution exposes, mark each as “contract” or “presentation,” and align managed properties to that classification before your next release.