TABLE OF CONTENTS
- Asset Sharing Across Projects
- Further Support
Asset Sharing Across Projects
Overview
This guide outlines the steps required to share assets (e.g., User Migrations) from one project to another in ManagementStudio. The same principles apply to other asset types, such as Applications or Devices.
Note: For additional guidance on multi-project best practices, refer to the Multi-Project: Best Practice article.
How Asset Sharing Works
ManagementStudio enables asset sharing between projects, allowing multiple projects to access common or distinct sets of assets (such as User Migrations). For instance, if Project 1 contains 5,000 User Migrations, some or all of these assets can be shared with other projects.

When an asset is shared from Project 1 to Project 2, the asset is visible in both projects. "Common fields" (e.g., domain, username) will display the same values across all projects; changes to these fields in one project are reflected in all projects where the asset is shared.
"Per project" fields, however, can differ between projects. For example:
- The asset can be at different workflow process steps in each project.
- Priority, migration dates, and statuses can differ by project.
- See the Field Reference section for a full list of per-project fields.

In Administration → [Module] → Details Config, common fields are indicated by a tick in the MP (Multi-Project) column.

Dropdown Lists
- Built-in and custom dropdown lists across all modules are only editable in the initial project.
- In child projects, these fields are read-only.

Built-in dropdown lists for Applications

Custom dropdown lists for Applications
Package Type dropdown in initial project.

Package Type dropdown in child project. Note the dropdown is not available.
App Rationalisation with Cross-Project Sharing
When Apps are shared between Projects, rationalisation behaviour depends on where the decision is made.
It is recommended to use Share All when sharing Apps between Projects.
When using Share Specific, rationalised Apps must be managed manually.
Global and Local Rationalisation
Rationalisation decisions are applied as either Global or Local, depending on the Project context.
Global (G)
- Created in a source Project (a Project that shares Apps to other Projects)
- Applied to all receiving Projects
- Defines the default rationalisation outcome for shared Apps
Local (L)
- Created in a receiving Project (a Project that consumes shared Apps)
- Applied only within that Project
- Does not affect other Projects, including downstream Projects
Example Project Structure
(G) Apps List
→ (L) Win10 Migration
→ (L) Win11 Migration
→ (L) Win11 Pilot
(G) Server 2026 Migration
Rationalisation Behaviour
Global Decision
If a rationalisation is created in a source Project:
- In Apps List:
- Adobe Reader v11 → v12
This decision is applied to:
- Win10 Migration
- Win11 Migration
- Win11 Pilot
All receiving Projects inherit the rationalisation.
Local Decision
If a rationalisation is created in a receiving Project:
- In **Win11 Migration**:
- Adobe Reader v12 → v13
This decision:
- Applies only to **Win11 Migration**
- Is not applied to **Win11 Pilot**
- Does not modify the Global rationalisation
Behaviour Rules
- Projects that **share Apps and do not receive shared Apps** create **Global** rationalisation decisions
- Projects that **receive shared Apps** create **Local** rationalisation decisions, even if they also share Apps further downstream
Key Principle
Rationalisation decisions apply only to:
- The Project in which they are created, or
- Downstream Projects, if created in a source Project
Custom Fields

Custom Fields are common across Projects (i.e. they are Multi-Project)
- Custom Fields (
CustomFlagX,CustomPropertyX,CustomListX, etc.) are common across shared assets and should not be visible in child projects. - If you require custom fields in a multi-project setup, use Project Fields instead.
Project Fields

Project Fields exist per Project (i.e. they are not Multi-Project)
- Project Fields (
ProjectFlagX,ProjectPropertyX,ProjectListX, etc.) exist independently in each project, allowing for project-specific data.
Custom Tabs
- Custom tabs are stored separately in each project.
Licensing
- Only one licence ticket is required per asset, regardless of how many projects it is shared to.
- The maximum number of allowed projects is defined by your licence. Contact your representative to add more projects to your licence if needed.
Setup Steps
1. Set Up a Role Group
Ensure at least two projects are set up. For project creation steps, see the Create a new project article.
- Open the first project.
- Navigate to
Administration → Role Groups → Click here to add new item. - Name the group (e.g.,
Asset Sharing Admin). - Click
Edit Rules. - At the bottom of the permissions list, enable the following options:

Cross Project PermissionsConfigurationShare AssetRemove Asset
- Click
Finished → Save Changes → Save.
Note: Multiple role groups with custom cross-project permissions can be created as needed.
2. Add User Accounts to the Role Group
- Go to
Administration → User Accounts. - Select the user(s), right-click, and choose
Add Roles → [New Role] → Add Roles. - Include the API Connectors account in the new role group.

- Restart the ManagementStudio client.
- Go to
Administrationand confirm that theCross Project Settingsbutton is visible.

3. Configure Permissions on the Target Project
- Repeat steps 1 and 2 for each project that will participate in asset sharing.
4. Set Up Asset Sharing
- Navigate to
Administration → Cross Project Settings. - Configure the following options:
| Setting | Description |
|---|---|
Share From | Source project. |
Share To | Target project. |
Module to Share | Select the asset type to share. |
How to Share | Sharing method.All To: Share all assets from source to target.All to & Back: Share all assets both ways.Specific To: Share selected assets from source to target.Specific To & Back: Share selected assets both ways.Ignore: Disable this rule. |
Cascade Archive | Archiving the asset in the parent project also archives it in the child. Note: Only archiving from the parent triggers cascading. Contacts are excluded. |
Cascade Delete | Deleting the asset in the parent project also deletes it in the child. Note: Only deleting from the parent triggers cascading. Contacts are excluded and deleted permanently across all projects. |
Remove | Removes the cross-project sharing rule. |

- Click
Save Changes. - Click
Sync Assets Now.
5. Share Assets
Specific Assets
If How to Share is set to Specific To or Specific To & Back, only selected assets will be shared.
Steps:
- Navigate to the relevant module (e.g.,
User Migrations → All User Migrations). - Select the assets to share.
- Right-click and select
Cross Project Sharing → Share to Project → [Target Project].

- Click
Share.

All Assets
If How to Share is set to All To or All To & Back, all assets in the specified module are shared automatically—no further action is required.
Field Reference
The following table outlines which fields are common across projects (values always the same) and which are per project (values can differ).
Common Fields
| User Migrations | Applications | Devices | Mailboxes | Bespoke |
|---|---|---|---|---|
| AdSid | AceCategory | AdSid | AdSid | AdSid |
| All Custom Fields | All Custom Fields | All Custom Fields | All Custom Fields | All Custom Fields |
| AzObjectId | AlsoKnownAs | AssetTag | CreatedById | BespokeId |
| CreatedById | AppEdition | AzDeviceId | CreatedOn | BespokeName1 |
| CreatedOn | AppId | AzObjectId | Description | BespokeName2 |
| Description | AppName | BuildVersion | BespokeName3 | |
| Domain | AppStatusId | CreatedById | Email2 | CreatedById |
| AppVendor | CreatedOn | FontIcon | CreatedOn | |
| Email2 | AppVersion | Description | LegacyId | Description |
| EmployeeId | ArchitectureId | DeskNumber | LocationId | |
| FirstName | ComplexityId | DeviceArchitecture | MailId | Email2 |
| FontIcon | CreatedById | DeviceId | MailName1 | FontIcon |
| LastName | CreatedOn | DeviceTypeId | MailName2 | LegacyId |
| LegacyId | CustomerId | Domain | MailName3 | LocationId |
| LocationId | Description | MigrationDate1 | MigrationDate1 | |
| MigrationDate1 | Email2 | MigrationDate2 | MigrationDate2 | |
| MigrationDate2 | Email2 | FloorNumber | MigrationTypeId | MigrationTypeId |
| MigrationId | EndOfLifeDate | FontIcon | PriorityId | PriorityId |
| MigrationTypeId | FontIcon | HostName | RandomKey | RandomKey |
| PhoneNo | InTuneId | InTuneId | StatusId | StatusId |
| PriorityId | IsCoreApp | IpAddress | ||
| RandomKey | IsStoreApp | LegacyId | ||
| SamAccount | LanguageId | LocationId | ||
| StatusId | LegacyId | MacAddress | ||
| UserPrincipalName | LocalisationId | Make | ||
| OwnedById | Memory | |||
| PackagedById | MigrationDate1 | |||
| PackageTypeId | MigrationDate2 | |||
| PackagingSiteId | MigrationTypeId | |||
| PkgVerMajor | Model | |||
| PkgVerMinor | OperatingSystem | |||
| PkgVerPatch | OsAceLabel | |||
| PriorityId | OsEoLActiveSupportDate | |||
| RandomKey | OsEoLSecuritySupportDate | |||
| RequiredDate | OsIsPastEoL | |||
| SupersededBy | PriorityId | |||
| VersionBuild | Processor | |||
| VersionMajor | RandomKey | |||
| VersionMinor | SerialNumber | |||
| VersionRevision | ServicePack | |||
| WarrantyDate | SmBiosGuid | |||
| StatusId |
Per Project Fields (apply to all modules):
- All Project Fields
- Process
- Subprocess
- ProcessStatus
- EnteredProcessOn
- DeployUnit
- DeployUnitSlotStart
- SelfScheduleLocked
- AssignedToId
- DelegateTo1Id
- DelegateTo2Id
- PreventNewLinks
- IsArchived
- IsDeleted
- IsLocked
Further Support
For additional support, visit the ManagementStudio Service Desk to search the knowledge base or raise a support ticket.
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article