Cross-Tenant mailbox migration in Microsoft 365 Exchange Online
In questo articolo parleremo di una feature molto attesa dagli amministratori di Exchange Online, nell’ultima edizione del Microsoft Ignite 2020 è stata annunciata quella che viene definita “Cross Tenant mailbox migration in public preview”. Prima di questo annuncio, quando si aveva la necessità di spostare una mailbox da un Tenant all’altro, la procedura era quella di riportare la mailbox On-Premises per poi eseguire la migrazione di quest’ultima su un nuovo Tenant.
Con il “Cross-Tenant mailbox migration”, ora è possibile trasferire mailbox da un Tenant all’altro senza troppe dipendenze sull’infrastruttura On-Premises. Questo rimuove la necessità di riportare On-Premises la mailbox da migrare sul nuovo Tenant.
In genere, in fase di acquisizione di un’azienda viene la necessità di migrare la mailbox da un tenant di Microsoft 365 all’altro. L’operazione effettuata dell’amministratore del Tenant “Target” viene definita “Pull move”, similare alla migrazione da Organizzazione On-Premises a Microsoft 365.
Le migrazioni Cross-Tenant delle mailbox permettono agli amministratori di avere un’esperienza di gestione del processo praticamente identica a quella a cui sono già abituati. Sarà infatti possibile poter utilizzare il classico Exchange Control Panel di Exchange Online per creare i batch di migrazione, oppure con il ben noto CMDLET “New-MigrationBatch” in PowerShell, tutto questo ovviamente con le dovute permission assegnate all’identità utente con privilegi amministrativi che sta eseguendo le operazioni di migrazione. Il processo di migrazione prevede i check di autorizzazione sul “Source” Tenant durante tutto il processo di spostamento degli items della mailbox interessata.
Il Cross-Tenant mailbox migration è supportato nei seguenti scenari:
- Tenant to Tenant Cloud Only
- Tenant Hybrid to Tenant Cloud Only
- Tenant Cloud Only to Tenant Hybrid
Prerequisiti
- Azure Key Vault: il Cross-Tenant migration richiede l’utilizzo dell’Azure Key Vault, questo verrà utilizzato per archiviare il certificato che verrà utilizzato per l’autenticazione e l’autorizzazione della migrazione delle mailbox Cross-Tenant, per questo motivo sarà necessario essere in possesso di una sottoscrizione di Azure e di Azure Key Vault. Per maggiori informazioni su Azure Key Vault potete visitare la pagina https://docs.microsoft.com/it-it/azure/key-vault/basic-concepts
- Utenti con permessi amministrativi sui Tenant: prima di iniziare, dovremo verificare di disporre delle autorizzazioni necessarie per l’esecuzione degli script che serviranno per configurare l’Azure Key Vault, registrazione di una nuova applicazione su Azure Active Directory (“Target” Tenant) con i permessi di migrare le mailbox dal “Source” Tenant, creazione endpoint di migrazione Exchange Online e configurazione regole di Organization Sharing tra “Source” Tenant e “Target” Tenant.
- Mail-Enabled Security Group su “Source” Tenant: quest’oggetto in fase di configurazione verrà utilizzato dal “Target” Tenant come riferimento della lista di Mailbox che potranno essere migrate.
- Tenant ID del “Source Tenant”: in fase di configurazione del “Target” Tenant sarà necessario essere il possesso del Tenant ID del Source Tenant, per trovare il Tenant ID sarà necessario eseguire il login sull’Admin Center di Microsoft 365 e andare su https://aad.portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/Properties.
Figura 1 – Flusso Di Migrazione Cross-Tenant
Le attività di configurazione saranno effettuate tramite due script che ci vengono forniti da Microsoft, il primo è “SetupCrossTenantRelationshipForTargetTenant.ps1” e verrà eseguito sul “Target” Tenant, il secondo è “SetupCrossTenantRelationshipForResourceTenant.ps1” e verrà eseguito sul “Source” Tenant. Su GitHub trovate gli script forniti da Microsoft per questa preview. Dopo l’esecuzione con i parametri corretti si potrà procedere con la creazione dei batch di migrazione delle mailbox.
Esempio esecuzione script Target Tenant:
1 |
.\SetupCrossTenantRelationshipForTargetTenant.ps1 -ResourceTenantDomain M365x832185.onmicrosoft.com -ResourceTenantAdminEmail admin@technical365.blog -TargetTenantDomain M365x293780.onmicrosoft.com -ResourceTenantId ff1063e1-1a98-47a1-ab8b-2253b6ea8eff -SubscriptionId 63528299-499f-48c9-bcf3-06f1451154d9 -ResourceGroup "RgCrossTenantTechnical" -KeyVaultName "CrossTenantTechnical" -KeyVaultLocation "West Europe" -CertificateName "Technical365-AlbanoLala-cert" -CertificateSubject "CN=Technical365_AlbanoLala" -AzureAppPermissions Exchange, MSGraph -UseAppAndCertGeneratedForSendingInvitation -KeyVaultAuditStorageAccountName "keyvaultauditstorage" -KeyVaultAuditStorageResourceGroup "DemoTechnnical" |
Esempio esecuzione script Source Tenant:
1 |
.\SetupCrossTenantRelationshipForResourceTenant.ps1 -SourceMailboxMovePublishedScopes "Cross-Tenant Migration" -ResourceTenantDomain M365x832185.onmicrosoft.com -TargetTenantDomain M365x293780.onmicrosoft.com -ApplicationId d14363fe-187f-4207-99ca-761f43072b34 -TargetTenantId 4sdkfo933-3904-sd93-bf9a-sdi39402834 |
Analisi dei Parametri dei due script forniti dalla casa di Redmond:
-
Target Tenant Script
- ResourceTenantDomain, dominio del “Source” Tenant su Foresta Onmicrosoft (contoso.onmicrosoft.com).
- ResourceTenantAdminEmail, smtp Address Amministratore “Source” Tenant, verrà utilizzata per ricevere la richiesta dall’applicazione registrata su “Target” Tenant per i permessi di migrazione delle mailbox.
- TargetTenantDomain, dominio del “Target” Tenant su Foresta Onmicrosoft (fabrikam.onmicrosoft.com)
- ResourceTenantID, ID “Source” Tenant come anticipato in precedenza lo trovate al link https://aad.portal.azure.com/
- SubscriptionId, ID della sottoscrizione Azure del “Target” Tenant.
- ResourceGroup, Azure resource group “Target” Tenant che conterrà il key vault.
- KeyVaultName, Istanza Azure Key Vault che conterrà il certificato generato.
- KeyVaultLocation, Region Azure Key Vault.
- CertificateName, nome certificato generato su Key Vault “Target” Tenant.
- CertificateSubject, Subject Name (es. contoso_fabrikam) del certificato generato e contenuto su Azure Key Vault.
- AzureAppPermissions, permessi necessari per la migrazione delle mailbox Cross-Tenant, come Exchange o MSGraph (Exchange per la migrazione delle mailbox, MSGraph per utilizzare l’applicazione registrata su “Target Tenant” per mandare il link con l’invito all’amministratore del “Source” Tenant).
- UseAppAndCertGeneratedForSendingInvitation, paramentro necessario all’invio dell’invito tramite lo script senza necessità di chiedere nuovamente le credenziali dell’amministratore del “Target” Tenant.
- KeyVaultAuditStorageAccountName, storage account dove saranno contenuti i log dell’Azure Key Vault appena creato.
- KeyVaultAuditStorageResourceGroup, resource group che conterrà lo storage account con all’interno i log dell’Azure Key Vault appena creato.
-
Source Tenant Script
- SourceMailboxMovePublishedScopes, Mail-enabled security group appena creato su “Source” Tenant con all’interno le identità/mailbox coinvolte nella migrazione Cross-Tenant
- ResourceTenantDomain, dominio del “Source” Tenant su Foresta Onmicrosoft (contoso.onmicrosoft.com).
- TargetTenantDomain, dominio del “Target” Tenant su Foresta Onmicrosoft (fabrikam.onmicrosoft.com).
- ApplicationId, ID dell’applicazione creata nel “Target” Tenant per la migrazione delle mailbox.
- TargetTenantId, ID del “Target” Tenant.
Preparazione dei Tenant:
-
Target Tenant:
- Nuovo Azure Resource Group, se non esiste con il valore assegnato al parametro di riferimento ne verrà creato uno nuovo (script).
- Nuovo Key Vault, se non esiste con il valore assegnato al parametro di riferimento ne verrà creato uno nuovo (script).
- Nuova Azure Access Policy per l’applicazione Office 365 Online Mailbox Migration (script).
- Nuovo certificato, se non ne viene specificato uno esistente (script).
- Nuova Applicazione Azure Active Directory (script).
- Il certificato appena creato assegnato all’applicazione dedicata alla migrazione (script).
- I permessi di migrazione delle mailbox verranno assegnate all’applicazione (script).
- L’amministratore del “Target” Tenant dà i permessi necessari all’applicazione creata nel proprio Tenant (manuale).
- Una “relationship” a livello di Organizzazione viene creata sul “Target” Tenant (script).
- Un endpoint di migrazione viene creato sul “Target” Tenant (script).
-
Source Tenant:
- L’amministratore del “Source” Tenant accetterà l’invito di accettazione dei permessi per la migrazion delle mailbox da parte dell’applicazione registrata sul “Target” Tenant (manuale).
- L’amministratore del “Source” Tenant procederà con la creazione di un mail-enabled security group, all’interno del quale andrà a mettere la lista di mailbox che intende migrare (manuale).
- Una “relationship” a livello di Organizzazione viene creata sul “Target” Tenant (script).
- L’amministratore del “Source” Tenant accetterà l’invito di accettazione dei permessi per la migrazion delle mailbox da parte dell’applicazione registrata sul “Target” Tenant (manuale).
Step sul “Target” Tenant:
Figura 2 – Creazione Azure Key Vault
Figura 3 – Riassunto Azure Key Vault
Apriamo powershell, ci spostiamo nella directory contenente i due script forniti da Microsoft e importiamo il modulo di Exchange Online e Azure Active Directory:
1 2 |
Import-Module ExchangeOnlineshell Import-Module AzureAD |
Figura 4 – Esecuzione Script “Target” Tenant
Figura 5 – Immissione credenziali Amministratore “Target” Tenant
Dopo aver eseguito lo script dedicato al “Target” Tenant inseriremo le credenziali dell’amministratore del “Target” Tenant.
Figura 6 – URL autorizzazioni Amministratore “Target” Tenant
Figura 7 – Applicazione creata su “Target” Tenant
Figura 8 – Finestra autorizzazioni Amministratore “Target” Tenant
Figura 9 – API permissions assegnate all’applicazione creata
A questo punto, lo script si fermerà e vi chiederà di accettare la richiesta di permessi di migrazione delle mailbox da parte dell’applicazione appena creata. Questa richiesta la potrete accettare utilizzando la prima URL che vi verrà fornita in output dallo script appena eseguito. Quando avrete utilizzato l’URL vi troverete davanti alla finestra con la lista di autorizzazioni da accettare.
Figura 10 – Esecuzione Script “Target” Tenant
Richiesta credenziali amministratore Target Tenant per la creazione delle Relationship a livello di Organizzazioni.
Figura 11 – Riepilogo Relationship Organizzazioni e Endpoint di Migrazione delle Mailbox
Configurazione del “Target” Tenant terminata.
Step sul “Target” Tenant:
Figura 12 – Invito da parte del “Target” Tenant all’amministratore del “Source” Tenant tramite e-mail
La prima cosa da fare a inizio configurazione del “Source” Tenant è quello di accettare l’invito da parte dell’applicazione (M365x293780_Friends_M365x832185_6451) creata nel “Target” Tenant.
Figura 13 – Riassunto Permessi
Figura 14 – Riassunto Organization Relationship con evidenziato l’application ID aggiunto al “Source” Tenant
Dopo aver accettato l’invito dell’applicazione del “Target” Tenant procediamo con l’esecuzione dello script sul “Source” Tenant
Figura 15 – Esecuzione Script “Target” Tenant
Configurazione del “Source” Tenant terminata.
Verifichiamo la configurazione sui due Tenant:
Target Tenant
1 |
Get-OrganizationRelationship <source tenant organization name> | fl name, DomainNames, MailboxMoveEnabled, MailboxMoveCapability |
Figura 16 – Riepilogo Organizzazione “Target” Tenant
1 |
Get-MigrationEndpoint M365x293780_M365x832185_3708 | fl Identity, RemoteTenant, ApplicationId, AppSecretKeyVaultUrl |
Figura 17 – Riepilogo Endpoint di Migrazione “Target” Tenant
Source Tenant
1 |
Get-OrganizationRelationship | fl name, MailboxMoveEnabled, MailboxMoveCapability, MailboxMovePublishedScopes, OauthApplicationId |
Figura 18 – Riepilogo Organizzazione “Source” Tenant
Preparazione identità su Target Tenant per la migrazione Cross-Tenant
Prerequisiti
I seguenti attributi devono essere configurati sulle identità del “Target” Tenant.
Per ogni mailbox che verrà migrata da un Tenant all’altro, andrà creato un oggetto “MailUser” nel “Target” Tenant:
-
Il Target MailUser dovrà avere configurati i seguenti attributi:
- ExchangeGUID – il GUID della mailbox di partenza deve conincidere con l’identità del “Target” Tenant, altrimenti la migrazione non andrà a buon fine.
- ArchiveGUID – Il GUID dell’archivio (in caso lo aveste abilitato sulla mailbox da migrare) deve coincidere, altrimenti la migrazione non andrà a buon fine.
- LegacyExchangeDN – Questo attributo è presente nella mailbox di partenza, deve essere copiato e utilizzato come “x500 address” sull’identità di destinazione.
- UserPrincipalName – L’UPN della nuova identità avrà suffisso DNS uguale al dominio del “Target” Tenant, ad esempio [email protected]
- Primary SMTPAddress – Il primary smtp address avrà come domino, il dominio primario del “Target” Tenant, ad esempio [email protected]
- TargetAdress/ExternalEmailAddress – L’oggetto MailUser creato nel “Target” Tenant avrà come domino nell’external address il dominio di secondo livello su foresta Onmicrosoft del “Source” Tenant, ad esempio utente@ M365x832185.onmicrosoft.com
- Sarà fondamentale assicurarsi di non eseguire migrazioni su identità nel “Target” Tenant con attributo “ExchangeGuid” già presente causa precedenti mailbox, se così fosse la migrazione non andrebbe a buon fine.
Figura 19 – Esempio ExchangeGUID “Source” Tenant
Figura 20 – Esempio Conf ExchangeGUID su identità “Target” Tenant
Figura 21 – Get ExchangeGUID configurato su “Source” Tenant
Figura 22 – ProxyAdresses MailUser “Source” Tenant
Figura 23 – MailUser creati su “Target” Tenant
Figura 24 – ProxyAdresses MailUser “Target” Tenant
Facciamo un esempio di test di Migrazione:
Figura 25 – Nuovo Exchange Admin Center, lo utilizzeremo per la migrazione Cross-Tenant
Figura 26 – Nuovo Admin Center Exchange Online
Figura 27 – Nuovo Batch Di migrazione
Figura 28 – Scegliamo il nome del batch di migrazione
Figura 29 – Scegliamo Cross Tenant Migration come tipologia di migrazione
Figura 30 – Scegliamo l’endpoint di migrazione
Figura 31 – Scegliamo il dominio di destinazione del “Target” Tenant
Figura 32 – Scegliamo la schedulazione del batch
Figura 33 – Batch creato correttamente
Figura 34 – Migrazione Cross Tenant in corso
Dopo aver terminato tutte le operazioni necessarie sui Tenant interessati sarà possibile seguire la procedura tramite GUI come appena descritto, ma sarà anche possibile automatizzare il tutto tramite classico CMDLET New-MigrationBatch.
Conclusioni
Questa preview era molto attesa dagli amministratori di Exchange Online, soprattutto per scenari che riguardano acquisizioni di azienda che hanno già le proprie mailbox su Microsoft 365. Storicamente gli amministratori di Exchange Online erano costretti a eseguire un offboard della mailbox dal “Source” Tenant per poi in seguito importarla nel “Target” Tenant. Con questa feature in preview potete testare una soluzione che se ben sfruttata potra ottimizzare di gran lunga i tempi di migrazione degli item da un Tenant all’altro senza la necessità di utilizzare tool di terze parti a pagamento.