Populate Mapping Sheet
Populate Mapping Sheet prefills the Mapping Sheet with the data from the extracted source and target. It fills the 🟦 source columns of the five mapping sheets and all five Target … lookup sheets. It doesn't make any mapping choices.
Before you run it​
- The source and the target are extracted to MongoDB with their connectors, each in its own database.
- The target extraction includes the target's
CONTENTTYPEandPRINCIPALobjects. For SharePoint Online (spo), it also includes thepermissionLevelrecords. - You know the path of the Mapping Sheet that the transformation uses.
What it writes​
The flow processes the sheets in the order below. It overwrites each sheet it writes to.
| Step | Source-side sheet | Target-side sheet | What is collected |
|---|---|---|---|
| 1 | Structures | Target Structures | CONTAINER objects up to sourceDepth / targetDepth levels deep, sorted by path. |
| 2 | Principals | Target Principals | All PRINCIPAL objects. |
| 3 | Content Types | Target Content Types | Source: every distinct content type per kind (CONTAINER, RECORD). Target: every CONTENTTYPE object. |
| 4 | Metadata Fields | Target Metadata | Source: every property path under source.properties, per kind and content type. Target: every field of every CONTENTTYPE. |
| 5 | Permissions | Target Permissions | Source: every distinct permission value in the ACL objects. Target: depends on targetSystem. |
How the source property paths are collected
For every CONTAINER and RECORD, the flow walks source.properties recursively and writes one row per leaf value. Each combination of kind, content type and property path is written once. Nested objects produce dotted paths. For example, source.properties.author.name appears as author.name in Source DisplayName, and as the full path in Source Content Store Path.
How Target Content Types handles duplicate display names
The Content Types → Target dropdown selects by display name. The flow therefore writes only the first target content type for each display name. If two target content types share a display name, only one of them appears on Target Content Types.
Settings​
mongoConnection​
The MongoDB connection string for the source, including the name of the database.
Example: mongodb://user:password@localhost:27017/source
mongoConnectionTarget​
The MongoDB connection string for the target, including the name of the database.
Example: mongodb://user:password@localhost:27017/target
mappingSheetPath​
The path to the Mapping Sheet that the transformation uses. Use exactly the same path, so the transformation reads the sheet you populated. Don't rename the file.
Example: C:/Migrations/Mapping Sheet.xlsx
sourceDepth​
The maximum folder depth that is included on Structures.
Depth is counted from the absolute path stored in the content store, not from the root folder of the connector. Every path segment counts as one level, including the drive letter.
You set the root of a File System source connector to C:\Users\user\Documents\testData. testData is the root folder in your content store, but its depth is 5: C:, Users, user, Documents, testData.
To include testData plus two levels below it, set sourceDepth to 7.
| Folder | Depth |
|---|---|
C:/Users/user/Documents/testData | 5 |
C:/Users/user/Documents/testData/Projects | 6 |
C:/Users/user/Documents/testData/Projects/2024 | 7 |
C:/Users/user/Documents/testData/Projects/2024/Q1 | 8, excluded |
In the content store, paths always use / as the separator, also for Windows sources. A folder whose name contains / is counted incorrectly.
Example: 8
targetDepth​
The maximum folder depth that is included on Target Structures. It's counted the same way as sourceDepth.
Example: 8
excludedPropertiesPaths​
Optional. An array of property paths to leave out of Metadata Fields. Use the full path, including source.properties.. The property and everything nested below it are skipped.
Example: ["source.properties.acls"]
targetSystem​
Required. The target system. Accepted values: alfresco, documentum, netdocuments, opentextcs, spo. If it's empty or contains an unsupported value, the flow stops with an error at the start and doesn't write anything. It decides how Target Permissions is filled and how ContentStorePath is built on Target Metadata.
| Value | Target Permissions | ContentStorePath |
|---|---|---|
spo | Read from the target: RECORD objects with content type permissionLevel. | target.properties.<systemName> |
alfresco | Fixed list: Consumer, Contributor, Editor, Collaborator, Coordinator | target.properties.<id> |
netdocuments | Fixed list: administer, cabDefault, edit, noAccess, share, view | target.properties.<id> |
opentextcs | Fixed list: see, see_contents, modify, edit_attributes, add_items, reserve, add_major_version, delete_versions, delete, edit_permissions | target.properties.<id> |
documentum | No fixed list yet. The sheet is left empty, so fill it in by hand. | target.properties.<id> |
| any other value | The flow logs an error and leaves the sheet empty. | target.properties.<id> |