Changing the behavior of MoveRequest cmdlets
Published Mar 25 2022 09:36 AM 14.7K Views

Although most migrations between on-premises Exchange Server and Microsoft 365 are performed using the Migration Service’s batching functionality, a few stalwart admins have held onto the more granular control given by using the MoveRequest cmdlets directly.  But as time goes on even the hardiest and most proven of tools need to be sharpened or have components replaced, and it is now time for the MoveRequest cmdlets to be refreshed a little.

We are taking this opportunity to bring these cmdlets more in line with some of our other cmdlets.  Most admins who use these cmdlets will notice little to no difference in how these cmdlets function, which is intentional on our part.  But some may have scripts break if they aren’t updated before the cmdlets are updated.  We plan to release the updated cmdlets starting April 30th, 2022.

  1. New-MoveRequest will change from returning a MoveRequestStatistics object to returning a MoveRequest object.  Most New-* cmdlets are expected to return a data object matching their noun, which New-MoveRequest didn’t historically follow.  The MoveRequest object contains less data than the MoveRequestStatistics object, but that is desirable in this case because most of the extra data is only relevant or interesting after the request has made progress.
  2. The MoveRequest data object that is returned from Get-MoveRequest (and now New-MoveRequest) will have a slightly smaller set of properties.  Compared to the old data object, it will remove several generic user properties that are not relevant to move requests in particular, which could lead to confusion.  Each of those properties should remain available as output from the Get-Recipient, Get-Mailbox, Get-MailUser, etc. cmdlets instead.
Maintained properties Alias, DisplayName, RecipientTypeDetails, SourceDatabase, SourceArchiveDatabase, TargetDatabase, TargetArchiveDatabase, RemoteHostName, IsOffline, SuspendWhenReadyToComplete, ExchangeGuid, Flags, BatchName, Status, Protect, Suspend, Direction, RequestStyle, OrganizationId, Identity, IsValid, ObjectState
Renamed properties User (previously “Id”), UserGuid (previously “Guid”)
Added properties RequestQueue
Removed properties AdministrativeUnits, ExtensionCustomAttribute1, ExtensionCustomAttribute2, ExtensionCustomAttribute3, ExtensionCustomAttribute4, ExtensionCustomAttribute5, ExternalDirectoryObjectId, LastExchangeChangedTime, RecipientType, Name, DistinguishedName, ExchangeObjectId, OrganizationalUnitRoot, OriginatingServer, WhenCreatedUTC

The rest of the cmdlet behavior should remain the same.

There may be some other pieces deprecated in the future, such as removing SuspendWhenReadyToComplete behavior in favor of CompleteAfter, but a timeline for that will be determined at a later time.

The Exchange Migration Team

10 Comments
Co-Authors
Version history
Last update:
‎Mar 29 2022 02:54 PM
Updated by: