Data storage and organization in SharePoint
Instance
An instance of d.velop contracts for Microsoft 365 is kept in a site collection. The site collection must be exclusively available to the instance. In order to ensure error-free operation, editing the structures in this site collection is only permitted within the framework of this data model in accordance with the documentation. The majority of the structures are provided automatically during the installation, after which some individual options must be implemented manually.
Contract files
A contract file is the logical combination of several items:
Contract cover (document folder, metadata)
Documents
Tasks
Optional: Individual sub-items (e.g. notes, costs etc.)
These items are distributed in SharePoint in different lists and libraries.
Physical storage of the contract file
A document folder is the basis for the contract file. The document folder metadata is considered the properties of the contract file. The basic content type for contracts is ecsContractContentType and is based on the content type document folder. When the document folder is saved, a unique ContractID is generated that specifies the name of the document folder. The ContractID is also stored as a property in the document folder and is the link field to additional lists (tasks, individual lists). The document folder is assigned to the contract libraries as a content type.
Contract documents
The contract documents are stored in the document folder and thus automatically inherit all properties. The contract documents are by default assigned the content type ecsContractDocumentContentType, which is based on the content type document. ecsContractDocumentContentType is assigned to the contract libraries as a content type.
Standard properties of the contract file
The properties of the contract file are specified by the fields of the ecsContractContentType content type. The fields stored in this content category are available for all contract types. The type of a contract is indicated by the field Contract type. The available values are represented in the term store by terms within a given term set. The status of a contract is indicated by the field Contract status. The available values are represented in the term store by terms within a given term set.
Organizational assignment
The field Organizational assignment can be used to assign contracts in corporate structures. The field is created by default, the possible values are managed in the term set ecsContractOrganization in the term store. To use the field, it must be added to the standard content type ecsContractContentType.
Contract types
The available contract types are represented by terms within the term set ecsContractTypeTerm in the term store. By default, the ecsContractContentType content type is used for new contract file.
The contract types can be assigned to corresponding content types via the configuration.
Individual fields
Contract categories can use other fields in addition to the system fields.
All individual fields are displayed in the user interface in the Details area. Standard fields are displayed in the Master data area. Fields that should only be valid for certain contract types must be assigned to the corresponding content types. This new content type must inherit from the basic content type ecsContractContentType.
Document types
Document types are mapped using the field Document type. The available document types are represented by terms within the term set ecsDocumentTypeTerm in the term store. By default, the content category ecsContractDocumentContentType is used for new contract documents. The document types can be assigned to corresponding content types via the configuration.
Tasks
Tasks are created in additional lists and have the content type ecsTasksContentType. They are assigned to a contract file by the system field ContractID. The status of a task is indicated by Task status. The available statuses are mapped in the term store via terms within the term set ecsContractTaskState.
Individual sub-items
Individual sub-items are created in additional lists. For individual sub-item a separate content type should be created that inherits from ecsContractCustomListBaseContentType. They are assigned to a contract file by the system field ContractID. The individual lists can be integrated into d.velop contracts for Microsoft 365 via the instance configuration.
Scaling of lists and libraries
Since the data of d.velop contracts for Microsoft 365 are stored in SharePoint Online, a comparison with the limits of SharePoint Online should be carried out as part of the planning for the introduction. A list can be found here on: https://docs.microsoft.com/en-us/office365/servicedescriptions/sharepoint-online-service-description/sharepoint-online-limits or https://docs.microsoft.com/de-de/sharepoint/search-limits
During development, the limits documented by Microsoft were taken into account and the product was optimized accordingly.
The following restriction is particularly relevant for the structure of contract management: Individual permissions in a library, https://docs.microsoft.com/en-us/office365/servicedescriptions/sharepoint-online-service-description/sharepoint-online-limits#unique-permissions-for-items-in-a-list-or-library.
The absolute limit is 50,000 individual permissions per library; the recommendation is 5,000 individual permissions. To comply with the recommended limit, all items of a contract are grouped into subfolders and permissions are set at folder level. Starting from 5,000 folders, an additional list or library is used programmatically. By default, this affects the lists or libraries contracts and tasks. The behavior is also applied to individual lists.