In Focus
No items found.
thinformatics
Back to the blog
Allgemein
Compliance
Exchange Online
Microsoft 365
Microsoft Purview
Migrations
PowerShell

Tenant-to-Tenant – PST based Exchange Migration automation approach – Part I

Inspired by the article „Exchange Online Tenant to Tenant migration with free Microsoft methods!“ by Alexander Holmset I’ve decided to write this article as a kind of addition to the explained Exchange Content Migration Method. Even though I think that an Exchange migration using the preview Method Cross-tenant...

Jakob Schaefer
Jakob Schaefer
Consultant & SME Team GRC[br]Governance, Risk & Compliance
November 16, 2022
5 Minuten
Reading time

Inspired by the article „Exchange Online Tenant to Tenant migration with free Microsoft methods!“ by Alexander Holmset I’ve decided to write this article as a kind of addition to the explained Exchange Content Migration Method.

Even though I think that an Exchange migration using the preview Method Cross-tenant mailbox migration – Microsoft 365 Enterprise | Microsoft Learn is a better approach to get Tenant to Tenant migrations done and fulfill user expectations, there might be situations where you can not use that approach. If you e.g. already have existing mailboxes in both (source and destination tenant) and maybe even content in the target user profiles, you have to choose another migration method.

In this article series I will explain how to use the PST Export / Import method, Alex explains in his article step by step, in a more automated way to also get done more bigger and more complex migrations.

PST Migration downsides

If you have to get the migration done using a pst based approach you were confronted with the downsides of this method. The PST only contains the content of the mailbox and not all the other mailbox-related settings like

Permissions: Mailbox Full-Access and SendAs Permissions for users and groups, Mailbox Folder Permissions

Settings & Configurations: Like E-Mail Aliases, Forwarding-Settings and Message Copies, Like RegionalSettings, Calendar-Processing

Other issues that come up in PST Based Migrations are e.g. scheduling of cohorts, end-user expectations of migration results, pst->user mappings, data integrity of the pst files, automation in exchange online-based pst migration scenarios, etc.

This list and more are reasons why you should prefer another kind of migration. But, as learned from real life, sometimes you don’t have a choice about which methods you are able to use. I will try to explain an approach that helps to mitigate some of the named downsides and make pst based Exchange migration results better.

While starting this article and reviewing my existing scripts etc. I recognized that it will be too much stuff to explain in one article. Furthermore, no migration scenario equals the other. That’s why I’ve decided to make a series from it to make the single components and methods more accessible and modular to fit other requirements.

Prepare PST Migration

In this first part of the article series, I will show you an essential step for the preparation of an automated pst migration approach. To be able to migrate not only mailbox content but also configurations and settings (like permissions, forwarding, regional settings, …) additionally you first need to dump the configuration before.

A PST Migration for a relevant mass of users and data Is nothing you handle in a few hours. So I’ve chosen a pragmatic way to export all settings and configurations in XML files, to be able to actualize &/ reapply them at a later point in time.

After finishing the following you will have files stored in user directories that contain all relevant settings and configurations of mailboxes in your exchange online environment with the aim to be able to reapply them in the destination environment

Exchange Online Migration. Also in that well-matured scenario, some settings and configurations will not be applied (like forwarding settings, some group-based permissions, etc.). I think that this kind of report is usable in a lot of scenarios.

By the way: I developed this approach originally as an addition to an Exchange OnPrem -> Exchange Online Migration. Also in that well-matured scenario, some settings and configurations will not be applied (like forwarding settings, some group-based permissions, etc.). I think that this kind of report is usable in a lot of scenarios.

Besides configurations, we will also report mailbox folder statistics to be able to identify missing content if users complain cause they can not find their folders which they maybe had favorited before.

All you need to get this job done is an Exchange Admin and PowerShell with the Exchange Online module. To be able to just handle named mailboxes I’ve used a CSV which contains the primary E-Mail Address of all mailboxes that should be reported. My CSV looks like this:

EmailAddress

DiegoS@nkq6.onmicrosoft.com

HenriettaM@nkq6.onmicrosoft.com

LeeG@nkq6.onmicrosoft.com

You could generate the CSV e.g. by exporting DistributionGroup Memberships using this command:

Get-DistributionGroupMember MBXToMigrate |select @{Name="EMailAddresses"; Expression={$_.PrimarySMTPAddress}} |export-csv c:\temp\mbxusers.csv -Delimiter ';' -NoClobber -NoTypeInformation

When you have created the CSV you just need to download the following script from GitHub:

thinBlog/Report-MailboxConfiguration.ps1 at main · thinformatics/thinBlog (github.com)

Within the script just need to modify the vars for:

$CSVPath = Path the CSV described above

$ReportBasePath = Path where the XML should be saved

Afterward, run the script, log on to the source Tenant, and sit back while the script is running through all named mailboxes and creates the XML Files.

The result were folders, named like the primary E-Mail Address of the exported users. In these folders, the XML Files were stored which contain the different relevant settings and configurations.

You can prove them by importing and outputting them again into PowerShell with a command like this:

MBXSettings=Import-Clixml -Path 'C:\git\thinBlog\pst ex import\Export\DiegoS@nkq6.onmicrosoft.com\MBXSettings_DiegoS@nkq6.onmicrosoft.com.xml'
$MBXSettings | select *

Now we have stored all relevant settings of the mailboxes which we need to export. You can repeat this as long as you have access to the source environment to be able later to reapply the latest settings again.

Next

In the next articles of this series, I will show you how to export and import the pst files again supported by automation using Azure Blob Storage and New-MailboxImportRequest. Afterward, we will reapply some settings using PowerShell to demonstrate the possibilities of this method.

Part II (Exporting Mailbox Content to PSTs): Tenant-to-Tenant – PST based Exchange Migration automation approach – Part II

manage-external-communications-in-teams
Manage external Communications in Teams
September 18, 2025
6 Minuten
Microsoft Teams
Security
Collaboration
Microsoft 365
ansatz-zum-behandeln-des-datenabflusses-bei-der-nutzung-von-m365-fr-sensible-accounts
Isolation von sensiblen Accounts in M365
January 9, 2025
10 Minuten
Identity
Security
Enterprise
Compliance
SSE
GSA
export-archiv-mailbox-content-using-ediscovery
Export Exchange Online Archiv Mailbox content using eDiscovery
September 6, 2024
6 Minuten
Compliance
Microsoft Purview
Export
Exchange Online
Archiving
PowerShell
cloning-entra-cloud-sync-jobs
Cloning Entra Cloud Sync Jobs
May 6, 2024
7 Minuten
Entra ID
PowerShell
Cloud Sync
Hybrid
Microsoft Graph API
entra-cloud-sync-group-provisioning-mappings
Entra Cloud Sync - Group Provisioning
February 21, 2024
6 Minuten
Entra ID
Active Directory
Hybrid
Identity
TIL
do-more-with-less-or-do-less-with-more
“Do more with less” or „Do less with more“?
January 10, 2024
8 Minuten
Allgemein
wie-wandle-ich-meine-sharepoint-liste-in-eine-mini-app
Wie wandle ich meine SharePoint-Liste in eine Mini-APP
July 31, 2023
4 Minuten
Citizen Development
Lists
SharePoint
shared-channels-in-microsoft-teams
Shared Channels in Microsoft Teams: So bringen wir unsere Unternehmensgruppe zusammen
April 24, 2023
7 Minuten
Allgemein
Microsoft 365
User Adoption
Entra ID
Security
Microsoft Teams
datengetriebenes-change-management
Datengetriebenes Change Management? Analyse von Nutzungszahlen und deren Aussagekraft bei der Erfolgsmessung der Digitalisierung und User Adoption
April 13, 2023
8 Minuten
Change Management
Messbarkeit
teams-inventory-implement-membership-requests
Teams Inventory – Implement Membership Requests
March 1, 2023
5 Minuten
Allgemein
Governance
Microsoft 365
Power Automate
Power Platform
SharePoint
Microsoft Teams
how-to-build-a-simple-teams-inventory
How to build a simple Teams Inventory
February 17, 2023
9 Minuten
Logic Apps
update-power-automate-dein-day-summary-flow
Update: Power Automate: Dein „Day Summary“-Flow
February 1, 2023
2 Minuten
Citizen Development
Power Automate
power-automate-dein-day-summary-flow
Power Automate: Dein „Day Summary“-Flow
January 4, 2023
2 Minuten
Citizen Development
Power Automate
tenant-to-tenant-pst-based-exchange-migration-automation-approach-part-v
Tenant-to-Tenant – PST based Exchange Migration automation approach – Part V
December 27, 2022
5 Minuten
Allgemein
Exchange Online
Microsoft 365
Migrations
PowerShell
tenant-to-tenant-pst-based-exchange-migration-automation-approach-part-iv
Tenant-to-Tenant – PST based Exchange Migration automation approach – Part IV
November 30, 2022
5 Minuten
Allgemein
Exchange Online
Microsoft 365
Migrations
PowerShell
tenant-to-tenant-pst-based-exchange-migration-automation-approach-part-iii
Tenant-to-Tenant – PST based Exchange Migration automation approach – Part III
November 25, 2022
4 Minuten
Allgemein
Azure
Exchange Online
Microsoft 365
Migrations
PowerShell
tenant-to-tenant-pst-based-exchange-migration-automation-approach-part-ii
Tenant-to-Tenant – PST based Exchange Migration automation approach – Part II
November 18, 2022
5 Minuten
Allgemein
Compliance
Exchange Online
Microsoft 365
Microsoft Purview
Migrations
PowerShell
tenant-to-tenant-pst-based-exchange-migration-automation-approach-part-i
Tenant-to-Tenant – PST based Exchange Migration automation approach – Part I
November 16, 2022
5 Minuten
Allgemein
Compliance
Exchange Online
Microsoft 365
Microsoft Purview
Migrations
PowerShell
ignite-impressionen-was-ist-neu-in-microsoft-viva
Ignite Impressionen: Was ist neu in Microsoft Viva?
October 28, 2022
5 Minuten
Employee Experience
ignite-impressionen-summary-und-persoenliches-fazit
Ignite Impressionen: Summary und persönliches Fazit zur Session „Microsoft To Do is good for your mental health!“
October 28, 2022
5 Minuten
Allgemein
Microsoft 365
Planner
To Do
ignite-impressionen-microsoft-entra-workload-identities
Ignite Impressionen: Microsoft Entra Workload Identities
October 28, 2022
4 Minuten
Microsoft 365
Entra ID
Conditional Access
Identity
Identity Governance
Identity Protection
ignite-impressionen-microsoft-syntex-die-freundliche-ki-von-nebenan
Ignite Impressionen: Microsoft Syntex – die freundliche KI von nebenan
October 28, 2022
3 Minuten
Allgemein
Microsoft 365
Governance
Information Governance
Power Automate
Power Platform
SharePoint
ignite-impressionen-uebersetzung-mit-ai-builder
Ignite Impressionen: Übersetzung mit AI Builder
October 28, 2022
3 Minuten
Allgemein
Microsoft 365
Citizen Development
Power Automate
Power Platform
SharePoint
how-to-retain-exchange-online-content-an-overview-of-the-different-compliance-options-in-microsoft-365
How to retain Exchange Online content – An overview of the different compliance options in Microsoft 365
September 28, 2022
10 Minuten
Archiving
Compliance
Governance
Retention
azure-ad-guest-governance-automation
Azure AD Guest Governance Automation
August 16, 2022
6 Minuten
Governance
Log Analytics
Logic Apps
assign-teams-app-permission-policies-to-groups
Assign Teams app permission policies to Groups(-Members)
July 1, 2022
8 Minuten
Allgemein
Microsoft 365
Governance
PowerShell
Microsoft Teams
powerautomate-prozente-in-einer-html-tabelle
PowerAutomate: Prozente in einer HTML-Tabelle
May 30, 2022
2 Minuten
Citizen Development
planner-e-mail-report-mit-aufgaben-gruppiert-nach-bucket
Planner E-Mail-Report mit Aufgaben gruppiert nach Bucket
March 31, 2022
3 Minuten
Citizen Development
sharepoint-liste-als-e-mail-uebersicht-mit-personen-feldern-und-odata-meistern
SharePoint-Liste als E-Mail-Übersicht mit Personen-Feldern (und OData meistern)
March 29, 2022
2 Minuten
Citizen Development
Power Automate
use-graph-directory-schema-extensions-for-microsoft-teams-governance
Use Graph Directory Schema Extensions for Microsoft Teams Governance
October 15, 2021
9 Minuten
Microsoft Graph API
teams-invitation-processes-a-comparison
Teams Invitation Processes - A comparison
July 8, 2021
6 Minuten
Access Packages
Compliance
Entitlement Management
Governance
Microsoft Teams
Security
use-more-access-packages
Use more Access Packages!
June 28, 2021
8 Minuten
Access Packages
Identity Governance
Compliance
Governance
Security
Microsoft Teams
microsoft-teams-fulfill-advanced-guest-access-requirements
Microsoft Teams – Fulfill Advanced Guest Access Requirements
December 4, 2020
6 Minuten
Allgemein
Entra ID
Governance
Identity Governance
Microsoft 365
Microsoft Teams
microsoft-365-language-confusion
Microsoft 365 – Language Confusion
September 30, 2020
12 Minuten
Language
another-microsoft-teams-governance-approach-using-azure-ad-identity-governance
Another Microsoft Teams Governance Approach – Using Azure AD Identity Governance
September 18, 2020
21 Minuten
Governance
Identity Governance
Microsoft Teams
planner-migration-tenant-to-tenant
Planner Migration Tenant to Tenant
July 9, 2020
3 Minuten
Migrations
Planner
PowerShell
Tenant to Tenant
flow-instant-raumbuchung
Flow: Instant Raumbuchung
February 25, 2020
2 Minuten
Citizen Development
Power Automate
ai-integrations
ai-solutions
ai-applications
ai-solutions
intranet-solutions
digital-workplace
endpoint-security
security
compliance-regulatorik
security-compliance-zero-trust
plattform-engineering
cloud-plattformen-engineering
endpoint-management-2
workplace
ai-assistants
ai-solutions
cloud-security
security-compliance-zero-trust
cloud-transformation
cloud-strategie-architektur
system-integration
intelligence-automation
business-applications
custom-software
identity-security
security
container-platforms
platform
employee-experience
modern-workplace
collaboration-productivity
modern-workplace
transformation-management
cloud-transformation
application-modernization
cloud-transformation
cloud-governance-und-betriebsmodell
cloud-strategie-architektur
workflow-automation
intelligence-automation
sharepoint-solutions
digital-workplace
security-monitoring
security
collaboration-platforms
workplace
cloud-platforms
platform
virtualization-operations
infrastructure
server-operations
infrastructure
ai-security-compliance
ai-digital-innovation
endpoint-management
modern-workplace
cyber-resillience
security-compliance-zero-trust
identity-access
security-compliance-zero-trust
change-enablement
cloud-transformation
workload-modernization
cloud-transformation
plattformautomatisierung
cloud-plattformen-engineering
hybrid-connectivity
cloud-plattformen-engineering
landing-zones
cloud-plattformen-engineering
business-process-automation
intelligence-automation
microsoft-365-extensions
digital-workplace
apis-integrationen
custom-software
web-applications
custom-software
ai-for-modern-workplace
ai-digital-innovation
aitransformation-adoption
ai-digital-innovation
ai-platforms-engineering
ai-digital-innovation
ai-strategie-und-governance
ai-digital-innovation
workplace-security
modern-workplace
zero-trust
security-compliance-zero-trust
cloud-migration
cloud-transformation
cloud-foundations
cloud-plattformen-engineering
cloud-assesments
cloud-strategie-architektur
hybrid--multi-cloud-strategie
cloud-strategie-architektur
modern-work-adoption
modern-workplace
hybrid--multi-cloud-architektur
cloud-strategie-architektur