List contract must be compliant to install add-in

Uncategorized

The list contract of an addin is used purely as a contract, not to generate configuration.

  • Configuration can no longer be lost by installing an addin. It will show as an error or it will be merged if possible.
  • It will prevent surprising bugs. Addins cannot be installed to generate fields. They need to be configured mannually and put in the right place, or generated with Deployment Tools.
  • Packages need to be internally consistent. The workspace manifest (.xml file) and the list contract need to correspond.
  • A package's workspace manifest is the source of truth, and it needs to be installed first. In the package config, the workspace features need to come before all addin features.

If the contract is violated, an error is thrown which shows the changes that need to be made.
The message looks like this:

An error occurred while importing add-in Common.TransitionTemplates: Add-in contract violation.
Some parts of this add-in's contract need to be configured separately before it can be installed:
Actions
     In List: FillInTemplates
         Create DisplayType: EmtGeneral
         Create DisplayType: EmtCheckListHidden
         Create DisplayType: EmtRecepientsVisible
         Create DisplayType: EmtFieldValuesVisible
         Create DisplayType: EmtFieldPatternVisible
     In List: TargetLists
         Create ListChildTab: StatusFlowTemplates
     In List: TransitionTemplates
         Create ListChildTab: ApprovalTemplates
         Create ListChildTab: FillInTemplates

There is Contract deployment feature to validate, upload, or materialize a contract. It is integrated in the Deployment Tools CLI.