Use managed properties

You can control which of your managed solution components are customizable by using managed properties. By default, all custom solution components are customizable. Each solution component has a Can be customized (IsCustomizable) property. As long as this property value is set to true, more properties specific to the type of solution component can be specified. If you set the IsCustomizable.Value property to false, after the solution is installed as a managed solution the solution component will not be customizable.

Managed properties ensure that only a solution from the same publisher will be able to change the component. Managed properties will only affect managed components and does not force this in the development environments where the component is still unmanaged. The use of the IsCustomized managed property is intended to ensure that no other solution layer from any other publisher, and no active customizations can be done on the component once it is installed as a managed solution.

The following table lists some managed properties for a subset of available solution components.

Component Display Name Property
Entity Can be customized IsCustomizable.Value
Entity Display name can be modified IsRenameable.Value
Entity Can be related entity in relationship CanBeRelatedEntityInRelationship.Value(Read Only)
Entity Can be primary entity in relationship CanBePrimaryEntityInRelationship.Value(Read Only)
Entity Can be in many-to-many relationship CanBeInManyToMany.Value(Read Only)
Entity New forms can be created CanCreateForms.Value
Entity New charts can be created CanCreateCharts.Value
Entity New views can be created CanCreateViews.Value
Entity Can change any other entity properties not represented by a managed property CanModifyAdditionalSettings.Value
Entity Can create attributes CanCreateAttributes.Value
Field (Attribute) Can be customized IsCustomizable.Value
Field (Attribute) Display name can be modified IsRenameable.Value
Field (Attribute) Can change requirement level RequiredLevel.CanBeChanged

Note:

RequiredLevelis the only managed property to use the CanBeChangedproperty.
Field (Attribute) Can change any other attribute properties not represented by a managed property CanModifyAdditionalSettings.Value
Entity Relationship Can be customized IsCustomizable.Value
Form Can be customized SystemForm.IsCustomizable.Value
Chart Can be customized SavedQueryVisualization.IsCustomizable.Value
View Can be customized SavedQuery.IsCustomizable.Value
Option Set Can be customized IsCustomizable.Value
Web Resource Can be customized WebResource.IsCustomizable.Value
Workflow Can be customized Workflow.IsCustomizable.Value
Workflow Is Custom Processing Step Allowed For Other Publishers Workflow.IsCustomProcessingStepAllowedForOtherPublishers.Value
Assembly Can be customized SdkMessageProcessingStep.IsCustomizable.Value
Assembly Registration Can be customized ServiceEndpoint.IsCustomizable.Value
E-mail Template Can be customized Template.IsCustomizable.Value
KB Article Template Can be customized KbArticleTemplate.IsCustomizable.Value
Contract Template Can be customized ContractTemplate.IsCustomizable.Value
Mail Merge Template Can be customized MailMergeTemplate.IsCustomizable.Value
Dashboard Can be customized SystemForm.IsCustomizable.Value
Security Roles Can be customized Role.IsCustomizable.Value
System Form Can be deleted CanBeDeleted.Value
System Query Can be deleted CanBeDeleted.Value

Workflow Is Custom Processing Step Allowed For Other Publishers

This managed property controls whether plug-in steps registered by 3rd parties for messages created by custom process actions will run. The default value is false, which means plug-in steps registered which do not use the same solution publisher will not run. When this is true, the publisher of the custom process action allows registered plug-in registration steps to run.

Update managed properties

After you release your managed solution, you may decide that you want to change the managed properties. You can only change managed properties to make them less restrictive. For example, after your initial release you can decide to allow customization of an entity.

You update managed properties for your solution by releasing an update to your solution with the changed managed properties. Your managed solution can only be updated by another managed solution associated with the same publisher record as the original managed solution. If your update includes a change in managed properties to make them more restrictive, those managed property changes will be ignored but other changes in the update will be applied.

Because the original publisher is a requirement to update managed properties for a managed solution, any unmanaged solution cannot be associated with a publisher that has been used to install a managed solution.

Note

This means you will not be able to develop an update for your solution by using an organization where your managed solution is installed.

Check managed properties

Use IsComponentCustomizableRequest to check whether a solution component is customizable. Alternatively, you can check the solution component properties but you must consider that the ultimate determination of the meaning depends on the values of several properties. Each solution component has an IsCustomizable property. When a solution component is installed as part of a managed solution, the IsManaged property will be true. Managed properties are only enforced for managed solutions. When checking managed properties to determine if an individual solution component is customizable, you must check both the IsCustomizableand IsManaged properties. A solution component where IsCustomizableis false and IsManagedis false, is customizable.

Entity and attribute have more managed properties in addition to IsCustomizable. These managed properties are not updated if IsCustomizable is set to false. This means that in addition to checking the individual managed property, you must also check the IsCustomizable property to see if the managed property is being enforced.

See also

Managed properties