Cross Project Asset Sharing

Modified on Tue, 30 Jan 2024 at 08:26 AM

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.


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.

  • 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 (and third etc. if required) ManagementStudio project

4. Setup Asset Sharing in Projects

  • Browse to Administration -> Cross Project Settings
  • Select the required options


SettingDescription
Share FromChoose the source project
Share ToChoose the target project
Module to ShareChoose which assets should be shared
How to ShareAll 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 DeleteIf 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.



Example setup:


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
  • Right-click the assets


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 MigrationsApplicationsDevicesMailboxesBespoke
Common fields: Values always the same across different projects
AdSidAceCategoryAdSidAdSidAdSid
All Custom FieldsAll Custom FieldsAll Custom FieldsAll Custom FieldsAll Custom Fields
AzObjectIdAlsoKnownAsAssetTagCreatedByIdBespokeId
CreatedByIdAppEditionAzDeviceIdCreatedOnBespokeName1
CreatedOnAppIdAzObjectIdDescriptionBespokeName2
DescriptionAppNameBuildVersionEmailBespokeName3
DomainAppStatusIdCreatedByIdEmail2CreatedById
EmailAppVendorCreatedOnFontIconCreatedOn
Email2AppVersionDescriptionLegacyIdDescription
EmployeeIdArchitectureIdDeskNumberLocationIdEmail
FirstNameComplexityIdDeviceArchitectureMailIdEmail2
FontIconCreatedByIdDeviceIdMailName1FontIcon
LastNameCreatedOnDeviceTypeIdMailName2LegacyId
LegacyIdCustomerIdDomainMailName3LocationId
LocationIdDescriptionEmailMigrationDate1MigrationDate1
MigrationDate1EmailEmail2MigrationDate2MigrationDate2
MigrationDate2Email2FloorNumberMigrationTypeIdMigrationTypeId
MigrationIdEndOfLifeDateFontIconPriorityIdPriorityId
MigrationTypeIdFontIconHostNameRandomKeyRandomKey
PhoneNoInTuneIdInTuneIdStatusIdStatusId
PriorityIdIsCoreAppIpAddress

RandomKeyIsStoreAppLegacyId

SamAccountLanguageIdLocationId

StatusIdLegacyIdMacAddress

UserPrincipalNameLocalisationIdMake


OwnedByIdMemory


PackagedByIdMigrationDate1


PackageTypeIdMigrationDate2


PackagingSiteIdMigrationTypeId


PkgVerMajorModel


PkgVerMinorOperatingSystem


PkgVerPatchOsAceLabel


PriorityIdOsEoLActiveSupportDate

RandomKeyOsEoLSecuritySupportDate

RequiredDateOsIsPastEoL


SupersededByPriorityId


VersionBuildProcessor


VersionMajorRandomKey


VersionMinorSerialNumber


VersionRevisionServicePack


WarrantyDateSmBiosGuid



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