Office 365 has a well documented limit when it comes to the size of emails allowed to be imported. Microsoft has a KB Article on this very limit which is 35 MB. What if you want to move something larger to the cloud? You can’t. It’s that simple.
My issue began with a client that needed to move their archive items to the cloud. However, their send and receive limits were much to be desired. They were WAY above the default of 35 MB. After years of this, their archives had grown quite big in size and all of them contained items in excess of 35 MB.
Now the client wanted to move their archive to the cloud and get Microsoft’s unlimited archive option. If you attempt to move the mail to the cloud, the Migration Batches fail as mentioned here. So the dilemma is now, what to do about the large items? Can those be found, extracted and the items move to the cloud? The simple answer is yes. The log answer is that it take a bit of work and all the large emails either need to be stored as PST files (bad and very bad) or re-import the email back into the main mailbox. The best option is back into the main mailbox due to the issues with PST files. Because we don’t know how big the items are, we need to run a report to see how much this would add to the mailbox as adding this email to the main mailbox could potentially grow the mailbox past the quota setup for the mailbox.
How do we check for the large items? There is no easy way because the Search-Mailbox command covers both the live mailbox as well as the archive mailbox and the what-if switch for an export request doesn’t give any real detail.
What you will have to do is export the emails to a PST file and then judge the size of the PST file to how much room is left in the users quota.
Here is the process I used to assist this client in getting the large items moved:
Step One: Export large emails from Archive:
New-MailboxExportRequest -Mailbox -isarchive -ContentFilter {Size -gt '24MB'} -FilePath \.pst
Step Two: Import PST to LargeEmails folder In Mailbox
New-MailboxImportRequest -name <mailbox>Import -Mailbox <mailbox> -targetrootfolder LargeEmails -FilePath "<file share>\<mailbox>.pst"
Step Three: Move Archive to Cloud: [skipping large emails]
$LiveCred = Get-Credential $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection Import-PSSession $Session New-MoveRequest <mailbox> -archiveonly -Remote -RemoteHostName <MRS Endpoint> -TargetDeliveryDomain <Target Delivery Domain in cloud> -RemoteCredential $LiveCred -LargeItemLimit unlimited -BadItemLimit 1000 -acceptlargedataloss
Now the archive emails are in the cloud, sans the larger emails, and the large emails are in a folder for the user to decide if they want to remove the attachments and move the email to the cloud. Not a perfect solution, but the only real choice we have with the present limits Office 365 has on emails.
Related Resources
Manage Windows Azure AD using Windows PowerShell
Connect PowerShell to Office 365
Connect to Office 365 with Powershell