This is a description on how I have migrated our email from a hosted exchange to office 365. This is not an authoritative or definitive guide, its a description on what I did, what worked well and what worked not so well and some suggestions on how I would do it if I had to do it over again.
Description of office: We are only 5 workers and 3 shared email boxes. We have Active Directory (windows server 2012) installed. We also have an internal server with AD and a website server on the DMZ with our domain also with AD and proper firewalls in place. The local, internal domain is different from the public domain. Also the username convention in AD is first name + last initial, while the username of the email address has no specific convention. Our DNS records are hosted by the same company that hosted our exchange.
General Strategy: The exchange host would not assist in transferring the existing mailboxes to office 365. Looking at the various options I chose the cutover method. As there are only 5 users I decided against any bulk method of transferring the existing emails. The general strategy was to export the existing mailboxes to psts and then import them to the new mailboxes.
Step 1: Preparing the existing AD for office 365.
a. Add a new UPN suffix to the domain. (This must be done as the existing upn suffix of the internal AD does not match our public domain.
1. Open Active Directory Domains and tursts
2. right click Active Directory Domains... in the left panel and click on properties
3. Add the new UPN suffix
This will now be available to assign to the users.
b. Change the User's logon name
1. Open active directory Users and computers
2. In the menu on the top, click View and click on "Show Advanced Features"
For each user who will use exchange
3. Double click on the user
4. Click on the accounts tab
5. change the user logon name to his email username (without the domain)
6. Select the domain you added in step a3. and click OK
7. click on the attribute Editor
8. Scroll down (or use the keyboard) to proxyAddresses
9. Enter the following: SMTP:myuser@mycompany.com (substitute correct email for user after SMTP). Click add and ok.
10. While in the attribute editor scroll to preferedLanguage enter the desired code. (
here's a list). This is important if your users don't all use the same language, or their local computer has a different language or area preference than the one they prefer to use office in.
11. (Not sure if necessary).Click on general tab and enter email.
Note (I did steps 7-10 after I setup some of the users and their email shows up as firstname+Initial@onmicrosoft.com in outlook. Do this before setting up any accounts on the client.
c. Export the mail folders to pst.
1. On one computer with outlook 2013, I set up accounts for each email I want to copy. (Obviously this could be done on each computer individually).
2. make sure in setting up the emails, that the cache period of the ost. is set for all.
3. Wait about 24 hours for all the emails to be downloaded to the cache.
4. In outlook, export the mailboxes (all folders, subfolders etc) to pst.
Note: The timing of this stage is important. If there emails arrive between the export stage and the import stage then they will be missing from the new mailbox. If this is critical, then I suggest that before exporting the emails, change the MS records listed in step d. That way all new email will go directly to the office 365 account and the import process will add to the new emails.
d. Set up the domain in Office 365
1. One needs to enter the administrators portal in office 365 and add the domain to office 365. There are many videos and explanations on how to do this and the wizard worked very well for me. Here is one such link:
https://support.office.com/en-us/article/add-a-domain-to-office-365-6383f56d-3d09-4dcb-9b41-b5f5a5efd611
e. Sync local AD to Office 365.
1. AD sync must be installed and run on your local AD machine. Again this is fairly straight forward as I had one forest and used express settings. Here is a link which explains the process:
https://docs.microsoft.com/en-us/azure/active-directory/connect/active-directory-aadconnect-get-started-express
2. Wait a while until you see all the users and objects in your office 365 portal. You can now assign office 365 license to each user in the portal. (assuming you bought enough licenses).
3. Have the users go to the office portal and login with their emails and passwords (which is the same as their AD password) to see that it works. Don't install office apps yet.
d. import psts to new mailboxes.
1. in the computer you used to export the mailboxes (or in each individual computer). go to the control panel and double click the mail icon.
2, Click on show profiles and then add new profile. (we'll call it office365).
3. Select the radio box "Prompt for a profile to be used"
4. Enter a new email account for each user. (If the DNS records are set up properly, you should be able to add the accounts by just entering the emails).
5. Open outlook and select the office365 profile.
6. Go to File-> import/export -> import from file -> pst file and select the appropriate pst file you saved in stage c and import to the matching mailbox. (This can take a while and if the mailbox is large it can take even longer to sync to the server).
7. In each user's personal computer (if you used a single one in step d1), repeat steps d2-4. (Installation of office 2016 desktop app copies from the existing profile and will not automatically add the new email).
8. Open outlook in the new profile to see if the new mailbox is working. If so go back to step 3 and select "Open with this profile" and select office365 in the combo box below.
e. Each user can go to office portal and install the desktop apps.