The current article is the first article in a series of five articles, that deal with the subject of using PowerShell as a tool for getting information about the mailbox migration process from the On-Premise environment to Office 365 (Exchange Online).In the first article, we review the following subjects:
- The various entities that are involved on the mailbox migration process.
- The relationship between these entities.
- The PowerShell commands that we use for address each of this “migration entity”.
Article Series table of content | Click to expand
Using PowerShell for view and export information about mailbox migration to Office 365 | Article Series
- Mailbox migration to Office 365 the PowerShell migration entities | Part 1#5
- Using PowerShell for view and export information about mailbox migration to Office 365 | Part 2#5
- Using PowerShell for view and export information about mailbox migration to Office 365 | Part 3#5
- Using PowerShell for view and export information about mailbox migration to Office 365 | Part 4#5
- How to use the export mailbox migration information and troubleshooting PowerShell script | Part 5#5
The content of the article series
In the second article, we review the various PowerShell commands that we can use for getting, and exporting information about the mailbox migration process such as – Get-MoveRequest, Get-MoveRequestStatistics, Get-MigrationUser, Get-MigrationUserStatistics and more.
In the third article, we review how to use a menu based PowerShell script that I have written that will simplify the process of:
- Connecting to Exchange Online using remote PowerShell.
- Exporting information about the migration process to various file types.
- Export information from on-Premises environment that include On-Premise Active Directory and Exchange on-Premises.
- Perform basic troubleshooting steps in Exchange on-Premises environment.
Exchange on-Premises versus Exchange Online
Although the focus in the current article series is – the migration process that is implemented by migrating Exchange on-Premises mailboxes to Office 365, most of the concepts and the PowerShell commands that we review, are also relevant to Exchange on-Premises based environment.
The terms that we use for defining a mailbox migration process
In Exchange based environment, the term “mailbox migration” is translated into the term “Mailbox move”.
As the name implies, when we “migrate” Exchange mailbox from Exchange Database A to Database B, or from Exchange server A to Exchange server B (from Exchange on-Premises infrastructure to Exchange Online infrastructure in our scenario), Exchange server relate to the migration process as a “Mailbox move”.
The process of mailbox migration is realized is “Move request”
The Exchange server that is going to be the “NEW host” of the mailbox (the “receiving Exchange server”), send a “Move request” to the Exchange server the is currently host the mailbox.
In our specific scenario, Exchange Online server “requests” from Exchange on-Premises to Move a specific mailbox.
The relationship of Exchange mailbox and Active Directory user account
Although we use most of the time the term “Mailbox”, it is important to emphasize that Exchange mailbox is not a “standalone entity”.
Instead, each Exchange mailbox is associated with Active Directory user (mailbox owner).
So, if we want to be more accurate, when we use the term “mailbox migration” we are also relating to the “user account entity” that is associated with the Exchange mailbox.
The mailbox migration process relates to the user account that is associated with the Exchange mailbox as – “Migrated user”.
This term “Migrated user” can be a little bit confusing because, in reality, we don’t relay migrate the Active Directory user account.
In Office 365 infrastructure, we assume that that the mailbox migration process will “copy” the On-Premise Active Directory user account to the cloud or ,another option is, using Directory synchronization server that synchronized the On-Premise Active Directory user account to the cloud (Azure Active Directory).
The mailbox migration entities
The “Mailbox migration process” is composed from couple of “entities”.
Before we start to run the related PowerShell commands, it’s important that we get a general concept of the various “entities” that involved in this process (the mailbox migration to Office 365) and the “role” of each of these entities.
In the following diagram, we can see an example of the “entities” that are involved in the process.
The “entities” that involved in the mailbox migration to Office 365 and the associated PowerShell commands
Exchange PowerShell cmdlets that relate to the process of mailbox migration, enable us to address each of this “entities” that involved in the mailbox migration process.
The purpose of this “Get” PowerShell cmdlets is – getting information about the various migration entities such as – the specific settings and properties of each entity, the status of the specific entity and so on.
The PowerShell commands that we review in the current article are:
In the following diagram, we can see that PowerShell cmdlets that are associated with the user account object” and the Exchange mailbox object.
In the following diagram, we can see that PowerShell cmdlets that are associated with the migration batch object” and the migration endpoint object.
The Migration batch object as a logical container
An additional concept that I would like to mention regarding the mailbox migration entities is the concept of the “Migration batch”.
We can relate to the “Migration batch entity” as a logical container, that “hold inside” the migrated mailbox and the users accounts that are associated with each Exchange mailbox.
In a case that we run multiple Migration batches at the same time, in some scenarios, we will need to get information about all the migration entities that are related to the specific Migration batch.
In the next articles –Using PowerShell for view and export information about mailbox migration to Office 365 | Part 3#5 and Using PowerShell for view and export information about mailbox migration to Office 365 | Part 4#5, we review the PowerShell commands that we can use for getting information about objects such as “Move Requests” and “Migration users that are related to a specific Migration batch.
A short description of the migration entities
|The term “Endpoint” or “Migration EndPoint”, define a set of settings and credentials that Exchange Online use for “addressing” the Exchange on-Premises server.|
Each mailbox migration process (migration batch) must use an existing “Migration Endpoint”, that serve as the base for the mailbox migration process.
In other words – in case that the “Migration EndPoint”, was not created or in case that the Endpoint includes wrong settings such as wrong credentials or wrong Exchange on-Premises server name, the mailbox migration process cannot be executed.
Exchange Online support the option of using multiple “Migration EndPoints”.
|The term “migration batch” serve for define a “logical container”, that contain one or many “move requests”, and the user accounts that are associated with each migrated mailbox.|
In Office 365 (Exchange Online) environment, most of the time, the term “Migrated mailbox”, relates to Exchange on-Premises mailbox that is migrated to the cloud (Exchange Online).
In Exchange Hybrid environment, the term “Migrated mailbox” could also relate to “off boarding”, a scenario in which the mailbox migration is implemented by migrating Exchange Online mailbox to the Exchange on-Premises environment.
|The term “Move Request” describe the process in which the Exchange on-Premises mailboxes is “copied” and then “moved” to the Office 365 (Exchange Online).|
The PowerShell commands that relate to the “Move Request” are:
The PowerShell command Get-MoveRequest will “fetch” information about the mailbox properties that we migrate.
The PowerShell command Get-MoveRequestStatistics will “fetch” more detailed information about the “mailbox content” that we migrate.
|Each Exchange mailbox is associated with a “user account”.|
The PowerShell command Get-MigrationUser , will “fetch” information about the user account properties that is associated with the Exchange mailbox.
The PowerShell command Get-MigrationUserStatistics, will “fetch” additional information such as – SyncedItemCount ,Status ,EstimatedTotalTransferSize and more.
The scope of the article series
The basic assumption is that in this phase you have already mange to create the required “Exchange on-Premises endpoint”.
The meaning is, that your Exchange on-Premises server have all the required prerequires such a public availability”, that enable Exchange Online to establish the connection with your Exchange on-Premises server.
In case that you need to “establish” the connection between Exchange Online and Exchange on-Premises, and you need more information about the required preparations and prerequires you can read the following articles:
- Office 365 Cutover mail migration – Exchange on-Premises pre requirements
- Hybrid deployment in Office 365 | Checklist and pre requirements | Part 1/3
- Hybrid deployment in Office 365 | Checklist and pre requirements | Part 2/3
You can read additional information about the process of creating migration endpoint in the following articles:
- Create migration endpoints
- Cutover migration to Office 365
- Troubleshooting issues where the hybrid migration endpoint cannot be created
The various type of mail migration to Office 365
At the current time, Exchange Online support the following types of mailbox migration
- Cutover migration
- Stage migration
- Exchange Hybrid migration
- IMAP migration
Although that each of the “Exchange Online mail migration method have unique characters of its own, the PowerShell command that we review are relevant for all the above mail migration methods.
The next article in the current article series
It is important for us to know your opinion on this article