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.
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
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.
- 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
- 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 ManagementStudio project
4. Setup Asset Sharing
Reference: 'Common' and 'Per Project' Fields
User Migrations | Applications | Devices | Mailboxes | Bespoke |
---|---|---|---|---|
Common fields: Values always the same across different projects | ||||
MigrationId | AppId | DeviceId | MailId | BespokeId |
FirstName | AppVendor | HostName | MailName1 | BespokeName1 |
LastName | AppName | Domain | MailName2 | BespokeName2 |
SamAccount | AppVersion | AssetTag | MailName3 | BespokeName3 |
Domain | VersionMajor | CustomDataId | AdSid | AdSid |
AdSid | VersionMinor | MigrationDate1 | CustomDataId | CustomDataId |
EmployeeId | VersionBuild | MigrationDate2 | MigrationDate1 | MigrationDate1 |
VersionRevision | MigrationDate2 | MigrationDate2 | ||
Email2 | AppEdition | Email2 | ||
PhoneNo | CustomerId | DeviceArchitecture | Email2 | Email2 |
CustomDataId | AlsoKnownAs | OperatingSystem | PriorityId | StatusId |
MigrationDate1 | BuildVersion | StatusId | PriorityId | |
MigrationDate2 | Email2 | DeskNumber | MigrationTypeId | MigrationTypeId |
PriorityId | Description | FloorNumber | LocationId | LocationId |
StatusId | CustomDataId | Memory | LegacyId | LegacyId |
MigrationTypeId | SupersededBy | MacAddress | Description | Description |
LocationId | PkgVerMajor | Make | CreatedById | CreatedById |
LegacyId | PkgVerMinor | Model | CreatedOn | CreatedOn |
Description | PkgVerPatch | DeviceTypeId | FontIcon | FontIcon |
CreatedById | IsCoreApp | PriorityId | RandomKey | RandomKey |
CreatedOn | AppStatusId | StatusId | ||
FontIcon | LocalisationId | MigrationTypeId | ||
RandomKey | ArchitectureId | LocationId | ||
UserPrincipalName | ComplexityId | LegacyId | ||
AzObjectId | LanguageId | AdSid | ||
PackageTypeId | SmBiosGuid | |||
PackagingSiteId | Processor | |||
PriorityId | SerialNumber | |||
LegacyId | ServicePack | |||
OwnedById | IpAddress | |||
PackagedById | Description | |||
CreatedById | CreatedById | |||
CreatedOn | CreatedOn | |||
RequiredDate | FontIcon | |||
EndOfLifeDate | RandomKey | |||
WarrantyDate | AzObjectId | |||
FontIcon | InTuneId | |||
RandomKey | AzDeviceId | |||
AceCategory | OsAceLabel | |||
IsStoreApp | OsEoLActiveSupportDate | |||
InTuneId | OsEoLSecuritySupportDate | |||
OsIsPastEoL | ||||
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 |