TABLE OF CONTENTS
Overview
This article walks through the required steps to share assets (User Migrations in this case) from one project to another. The same principals can be applied where other asset types (e.g. Applications, Devices) need to be shared.
See also Multi-Project: Best Practice
How it Works
ManagementStudio supports asset sharing between projects. This is a hugely beneficial feature as it allows multiple projects to run concurrently with some or all of the assets (User Migrations etc) shared from one project to another. For example if there are 5,000 User Migrations in Project 1, some (or all) of these can be shared with one (or many) other projects.
Key Concept
When an asset is shared from Project 1 to Project 2, you are effectively making the same asset visible in both projects. This means that the 'common fields' of the asset (such as the domain and username for a User Migration) will be the same across all projects. If any of these fields are changed in one project, the change will be seen in all other projects where the asset has been shared.
However 'per project' fields of the asset can be different. For example:
- The asset can be in a different workflow process step in each project
- The priority can be different in each project
- The migration date can differ
- See below for a full list of 'per project' assets
In Administration -> [Module] -> Details Config the Common Fields are indicated by a tick in the MP (Multi-Project) column:
Custom Tabs
Custom tabs are stored separately in each project.
Licencing
One of the benefits of cross project asset sharing is that only one licence ticket is consumed for each asset regardless of how many projects it has been shared to. This means that the same set of users can be managed across multiple projects with no impact on licencing. Note that the number of allowed projects is set in the licence. Please contact you representative if you would like more projects added to the licence.
Setup Steps
1. Setup Role Group
Ensure that you have at least two projects setup in ManagementStudio. Please refer to this article for more info on how to Create a new project.
- Open the first project
- Browse to Administration -> Role Groups -> Click here to add new item
- Add a suitable name such as Asset Sharing Admin
- Click Edit Rules
- Scroll to the bottom of the permissions list and select these three options:
- Click Finished -> Save Changes -> Save
Note that it's possible to setup multiple Role Groups with more granular Cross Project Permissions if required.
2. Add User Accounts(s) to new Role Group
- Add the relevant account(s) to the new Role Group: Administration -> User Accounts -> Select the user(s) -> Right-click -> Add Roles -> Choose the new role -> Add Roles
- Note - In addition, add the Api Connectors account to the new Role Group.
- Restart the ManagementStudio client
- Browse to Administration
- Validate that the Cross Project Sharing button is visible
3. Configure the Permissions on the Second Project
- Repeat steps 1 and 2 above for the second (and third etc. if required) ManagementStudio project
4. Setup Asset Sharing in Projects
- Browse to Administration -> Cross Project Settings
- Select the required options (1)
Setting | Description |
---|---|
Share From | Choose the source project |
Share To | Choose the target project |
Module to Share | Choose which assets should be shared |
How to Share | All To: Share all the assets from the source to the target |
All to & Back: Share all the assets from the source to the target, and from the target to the source | |
Specific To: Allows individual assets to be shared from the source to the target project. Adds a "Share To" option to the Grid Context Menu | |
Specific To & Back: Allows individual assets to be shared from either project to the other. Adds a "Share To" option to the Grid Context Menu | |
Ignore: Disable this rule | |
Cascade Archive | If the item is archived in the "Share From" (parent) Project. Cascade this archive to the "Share To" (child projects). This will archive the item in the "Share To" (child projects) projects. |
Cascade Delete | If the item is Deleted in the "Share From" (parent) Project. Cascade this delete to the "Share To" (child projects). This will remove the item from the "Share To" (child projects) projects. Note: The item must be in the Delete Queue of the 'Share From' project for the delete to cascade, if the item is fully deleted from the 'Share From' project before a sync has run then this will not be reflected in the 'Share To' projects. |
Remove | To remove the entry |
Example setup:
- Click Save Changes (2)
- Click Sync Assets Now (3)
5. Share Assets
Specific Assets
If the How to Share option is set to Specific To or Specific To & Back then only assets which have been explicitly shared will be available across multiple projects. These are the steps required to share assets with this setup:
- Browse to the module where assets should be shared from, e.g. User Migrations -> All User Migrations
- Select the assets to be shared on the grid
- Right-click the assets
- Scroll down to Cross Project Sharing (1)->Share to Project (2)->Select the required project (3)
- Click Share
All Assets
If the How to Share option is set to share All To or All To & Back then there is no need to nominate which assets are shared.
Field Reference
User Migrations | Applications | Devices | Mailboxes | Bespoke |
---|---|---|---|---|
Common fields: Values always the same across different projects | ||||
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: Can vary in each project (apply to all modules) | ||||
Process | ||||
Subprocess | ||||
ProcessStatus | ||||
EnteredProcessOn | ||||
DeployUnit | ||||
DeployUnitSlotStart | ||||
SelfScheduleLocked | ||||
AssignedToId | ||||
DelegateTo1Id | ||||
DelegateTo2Id | ||||
PreventNewLinks | ||||
IsArchived | ||||
IsDeleted | ||||
IsLocked |
Further Support
If you require further support, please visit ManagementStudio's Service Desk to search the knowledge base or create a new support ticket.