Skip to main content
Version: Latest (4.63.0)

Mapping Sheet Overview

The Mapping Sheet is the Excel workbook in which you define how a source system maps onto a target system:

  • Structures: which source folder goes to which target folder
  • Content types: which source content type becomes which target content type
  • Metadata fields: which source property fills which target field, and how
  • Principals: which source user or group becomes which target user or group
  • Permissions: which source permission becomes which target permission level

The mapping decisions themselves are always yours. The Populate Mapping Sheet flow prefills the workbook with everything found in the extracted source and target, so you start from a complete inventory instead of an empty sheet.

Always start from the template

The Mapping Sheet is a specific workbook that ships with the Transformation Accelerator. Use this workbook. Don't rename it, and don't replace it with another file. An empty or self-made Excel file won't work. The dropdowns, formulas, named ranges and key columns the mapping depends on exist only in the template.

Workflow​

StepWhat you doResult
1Extract the source and the target to MongoDB with their connectors.Source and target data are in two databases.
2Find the path of the Mapping Sheet that the transformation uses. Keep the file where it is and don't rename it.The workbook the transformation will read.
3Run Populate Mapping Sheet with mappingSheetPath set to that same path.The source columns and the target lookup sheets are filled.
4Map: pick a target from the 🟨 dropdowns and fill in the 🟩 settings.Every source row has a target.
5Resolve every 🟥 red and 🟧 amber cell (Validation checks).A complete, consistent mapping.
Populate first, then map

Populate Mapping Sheet overwrites every sheet it writes to, including the mapping choices you already made on those sheets. Run it once before you start mapping. If you need to run it again later, back up the workbook first and carry your mapping over afterwards.

Sheets at a glance​

The workbook has a Legend sheet, five mapping sheets you work in, and five target lookup sheets that feed the dropdowns.

Mapping sheetWhat you mapDropdown reads fromPrefilled by the flow from
StructuresSource folders → target foldersTarget StructuresSource CONTAINER objects
Content TypesSource content types → target content typesTarget Content TypesDistinct content types of source CONTAINER and RECORD objects
Metadata FieldsSource properties → target fields, with rulesTarget MetadataEvery property path used per source content type
PrincipalsSource users and groups → target users and groupsTarget PrincipalsSource PRINCIPAL objects
PermissionsSource permissions → target permission levelsTarget PermissionsDistinct permission values in source ACL objects

Color legend​

Every column has a color that tells you who is responsible for it.

ColorMeaningWhat you do
🟦 BlueSource sideFilled by Populate Mapping Sheet. You can also type or paste values here.
🟨 YellowTarget choicePick from the dropdown. Never type free text.
⬜ Grey, italicFormulaFills in automatically. Never edit.
🟩 GreenManual target-side settingFill in by hand where needed.

The validation checks use two more colors:

ColorMeaning
🟥 RedError. The row won't map correctly until it's fixed.
🟧 AmberWarning. Something is missing, or a value will be ignored.

Ground rules​

  • Columns with a * in the header are key columns. Never rename or delete them.
  • Don't touch the (helper) columns. They're hidden and drive the dropdowns and the checks.
  • Don't map in the Target … sheets. They're lookup lists. Every dropdown reads from them.
  • Formulas, dropdowns and checks cover rows 2 to 10,000. Rows below that won't work.
  • Multi-value cells. Four columns accept a list of values: Kind and Source SystemName on Content Types, and Kind(s) and Source Content Types SystemName on Metadata Fields. Separate the values with commas. Spaces around the separators are ignored.

Sheet reference​

Maps source folders to target folders. The flow prefills one row per source folder down to sourceDepth levels.

ColumnColorDescription
*Source ID🟦ID of the source folder.
Source Name🟦System name of the source folder.
Source Path🟦Full hierarchy path of the source folder.
Only contents🟦TRUE / FALSE. Migrate the folder's contents without the folder itself.
Only documents🟦TRUE / FALSE. Migrate only the documents in the folder, not its subfolders.
Target🟨Target folder, shown as Name (Path).
Target ID⬜ID of the chosen target folder.
Target Name⬜Name of the chosen target folder.
Target Path⬜Path of the chosen target folder.
Target Type⬜Type of the chosen target folder.
Branch🟩Optional branch setting for this folder.

Target turns 🟥 red while a source row has no target, and green once it has one. This lets you see at a glance which folders still need a target.

Validation checks​

The template checks your mapping as you work. Resolve every colored cell before you continue with the transformation.

SheetCellColorMeaningFix
StructuresTarget🟥The source folder has no target.Pick a target folder.
Metadata FieldsTarget Content Type🟧The source content type isn't mapped on Content Types.Map it on Content Types.
Metadata FieldsTarget Content Type🟥The source content types in this row map to different target content types.Split the row, or align the mapping on Content Types.
Metadata FieldsTarget to Target Type🟥The chosen field doesn't exist on the row's current target content type. This usually happens after a content type mapping change.Pick the field again from the dropdown.
Metadata FieldsParameter🟥Rule is fixed or sheet, but there's no parameter.Fill in the parameter.
Metadata FieldsParameter🟧There's a parameter, but no rule, so it's ignored.Set a rule or clear the parameter.
Metadata FieldsSource Content Store Path🟧The path is missing on a row that needs it, or set on a fixed row that won't use it.Add or clear the path.
Metadata FieldsMax Length🟧Max length is set on a non-text target field.Clear it.

Populate Mapping Sheet flow​

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 CONTENTTYPE and PRINCIPAL objects. For SharePoint Online (spo), it also includes the permissionLevel records.
  • 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.

StepSource-side sheetTarget-side sheetWhat is collected
1StructuresTarget StructuresCONTAINER objects up to sourceDepth / targetDepth levels deep, sorted by path.
2PrincipalsTarget PrincipalsAll PRINCIPAL objects.
3Content TypesTarget Content TypesSource: every distinct content type per kind (CONTAINER, RECORD). Target: every CONTENTTYPE object.
4Metadata FieldsTarget MetadataSource: every property path under source.properties, per kind and content type. Target: every field of every CONTENTTYPE.
5PermissionsTarget PermissionsSource: 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://localhost:27017/source

mongoConnectionTarget​

The MongoDB connection string for the target, including the name of the database.

Example: mongodb://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/Contoso/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.

Example

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.

FolderDepth
C:/Users/user/Documents/testData5
C:/Users/user/Documents/testData/Projects6
C:/Users/user/Documents/testData/Projects/20247
C:/Users/user/Documents/testData/Projects/2024/Q18, 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​

The target system. It decides how Target Permissions is filled and how ContentStorePath is built on Target Metadata.

ValueTarget PermissionsContentStorePath
spoRead from the target: RECORD objects with content type permissionLevel.target.properties.<systemName>
alfrescoFixed list: Consumer, Contributor, Editor, Collaborator, Coordinatortarget.properties.<id>
netdocumentsFixed list: administer, cabDefault, edit, noAccess, share, viewtarget.properties.<id>
opentextcsFixed list: see, see_contents, modify, edit_attributes, add_items, reserve, add_major_version, delete_versions, delete, edit_permissionstarget.properties.<id>
documentumNo fixed list yet. The sheet is left empty, so fill it in by hand.target.properties.<id>
any other valueThe flow logs an error and leaves the sheet empty.target.properties.<id>

Troubleshooting​

A dropdown is empty

The matching Target … sheet is empty. Check that the target was extracted to mongoConnectionTarget, and that the grey formula columns (Display, Key, Label) on the target sheet are still in place.

A target field is missing from the Metadata Fields dropdown

The dropdown shows at most 15 fields per target content type. Also check that *ContentType on Target Metadata matches the *SystemName on Target Content Types exactly.

A target content type is missing from Target Content Types

Another target content type has the same display name. The flow keeps only the first one. Add the missing one by hand, with a unique display name.

Target Permissions is empty

targetSystem is empty, has an unsupported value, or is documentum. For spo, check that the permissionLevel records were extracted.

My mapping disappeared after running the flow again

Populate Mapping Sheet overwrites the sheets it writes to. Back up the workbook before you run the flow again, and carry your mapping over afterwards.