In Part 1 we looked at the pre-migration clean-up that is ideally required in order to make your migration to Exchange Online Public Folders a success. We covered;
- What to do about Replicas
- The requirement to fix all invalid characters
- The clean-up of permissions
- Fixing all mail-enabled Public Folders

We will now look at how to size your mapping file if you have an archiving system. In this case we used Enterprise Vault for this.

Step 4 — Enterprise Vault
As I said in Part 1 it is so important to understand the true size of each Public Folder. You can run the below SQL queries to collect the true sizes of your EV data folder by folder.

Enterprise Vault SQL query for a folder by folder report of their true sizes in your Public Folder estate
Enterprise Vault SQL query for a total compressed and uncompressed size of the Public Folder estate

Step 5 — Microsoft’s Migration Discovery Script
Now you have the true sizes on your EV data, folder by folder, you can now collect the data that is stored within Exchange.

1. Using the migration scripts on the TechNet article, run PowerShell as an administrator on one of the Exchange servers and run the below command.

Microsoft’s EXO migration discovery script

2. Review the data in the ExportPFStat.csv file. The data here is has formatted in the UNICODE format therefore you have alter this before you can add your EV data to it.

How the Microsoft discovery export looks…

3. In Excel, replace all (,”) with a (¬) — basically something you will not find in your folder names.

Replace the ,” with a ¬ so you can use text to columns to separate it…

4. From here, you can use the “Text to Columns” option separate it out using the (¬) you replaced earlier.

5. In the EV export, you will have to prefix all columns with the “\IPM_SUBTREE” text so they match the ExportPFStat.csv discovery.

6. Use a vloookup to match the folder names in the EV export to the ExportPFStat export.

The Microsoft discovery script ExportPFStat.csv now with another column holding the EV data

7. For the folders that match, add the EV data to the Exchange data so you now have one FolderSize column which is now the true size of your data.

IMPORTANT: Under Step 6 below we configure the maximum size of each Public Folder mailbox. In this guide, I’ve set it to a 60GB quota. You will need to ensure that no folder is larger then 60GB (or whatever quota you decide on). I had to split out a number of folders, in the end I chose to do it by year (2008, 2009, 2010 etc) until we had the sizes under 60GB.

The combined Folder Size of both EV and Exchange data…

8. Now you have the correct folder sizes in your export it is “very important” to save this in Excel as a UNICODE .csv file. If you do not do this and you have special characters in folder names, for example if you have any Scandinavian users who create folder names with letters like these (æ, ø, æ, å — and many more) etc in them, then you will break the formatting of these folders.

9. Now you have saved your ExportPFStats.csv file as a UNICODE .csv file, we need to put this through PowerShell… why you ask?

Simply because if you try and upload this to Microsoft it will fail to read it…This command will export it in a way where you can upload it to Microsoft.

Import the Excel UNICODE file into PowerShell and export it using PowerShell to make it readable to Microsoft…

Step 6 — Microsoft’s Mailbox Generator Script
The next step in the process is to run the mailbox generator script. This will examine the discovery export you ran above and split the data in mailboxes no larger then the quota you specify. With mailboxes now being 100GB, we went for average of 60GB per mailbox.

If you have any single folders that exceed 60GB, it’ll fail and you’ll have to redo your ExportPFStats.csv script to match your quota (or increase your quota).

IMPORTANT: In the TechNet article it does mention that the mapping file shouldn’t exceed 1000 lines. Ours came out at 3963 lines and it does work now (it didn’t before we had to get Microsoft to rewrite the code)

The mailbox generator command configured for a 60GB (in bytes) mailbox quota per Public Folder mailbox

Step 7 — Create the Public Folder Mailboxes
This step is very straight forward, however if I can give one piece of advice on the parameter -EstimatedNumberOfConcurrentUsers… go big!

We overestimated how many users use Public Folders and we thought that was enough. Once you cutover you very quickly realise that depending on the speed of Microsoft’s servers (and you’ll learn very quickly during this process just how good/bad these are), if you want quick hierarchy performance, spread them over lots of mailboxes. I’ll explain more later in this guide as you see why you want all the donkey work done early…

The Public Folder mailbox generator script with an estimated user count of 20,000…

Just so you can see I’m not talking rubbish, we currently have 643 Public Folder mailboxes and 484,702 folders in Exchange Online Public Folders…