{"id":22839,"date":"2024-01-31T06:59:28","date_gmt":"2024-01-31T11:59:28","guid":{"rendered":"https:\/\/centricconsulting.com\/?p=22839"},"modified":"2024-01-31T07:39:26","modified_gmt":"2024-01-31T12:39:26","slug":"handy-guide-google-g-suite-to-micrsoft-365-migration","status":"publish","type":"post","link":"https:\/\/centricconsulting.com\/blog\/handy-guide-google-g-suite-to-micrsoft-365-migration\/","title":{"rendered":"A Handy, Step-By-Step Guide on Google Workspaces to Microsoft 365 Migration"},"content":{"rendered":"
If you are preparing to migrate from Google Workspace to Microsoft 365<\/a>, you might be confused about the order of operations for configuration. I certainly was.<\/p>\n While Amazon, Microsoft and Google have agreed to work together to make this easier in the future, you might not be in a position to wait. Fear not, though, I can help.<\/p>\n I have a step-by-step guide for this particular type of migration, however, you may find it helpful for other migrations as well.<\/strong> What I detail below may or may not be required in your specific scenario, and you may also choose to do things a bit differently.<\/p>\n As a note: Use caution when copying and pasting PowerShell code<\/a> as you would from any site. You will need to customize it some and test it.<\/p>\n This is meant to be a helpful overview and guide on what is involved in configuring both environments. We will use mydomain.com as our verified and configured domain currently in use by Google Workspace.<\/p>\n Steps before you begin your migration:<\/p>\n <\/a><\/p>\n <\/a><\/p>\n <\/a><\/p>\n <\/a><\/p>\n Select one of these ways to verify:<\/p>\n <\/a><\/p>\n Select to add later, and then click Skip<\/strong>.<\/p>\n <\/a><\/p>\n You may see \u201cSetup in progress\u201d in the domains window beside mydomain.com. This is expected and you can safely move forward.<\/p>\n Use some variation of the following to assign the same license to all users.<\/p>\n This is the same process as before. MyDomain.com<\/strong> must be verified before adding the subdomain. The subdomain will automatically verify, or you can add a DNS TXT record at your domain registrar.<\/p>\n <\/a><\/p>\n The steps to perform this will vary depending on your DNS host\/registrar.<\/p>\n Please note that this must be a lowercase smtp<\/strong>.<\/p>\n Two things to note here:<\/p>\n <\/a><\/p>\n Follow the process in Step 8 above to add the o.mydomain.com<\/strong> subdomain to Google Workspace to support forwarding email from Google Workspace to Microsoft 365 during the migration.<\/p>\n The steps to perform this will vary depending on your DNS host\/registrar.<\/p>\n <\/a><\/p>\n Create a CSV file with the column heading UserPrincipalName<\/strong> and the addresses for the G Suite subdomain (for example, user.one@g.mydomain.com<\/strong>).<\/p>\n For your migration, use a tool like BitTitan<\/a> to migrate users\u2019 mail and calendar. And use a tool like Sharegate<\/a> to move the Google Workspace documents to OneDrive.<\/p>\n Be sure to specify the Google Workspace subdomain as the email address like: user.one@g.mydomain.com<\/strong><\/p>\nStep-by-Step: Google Workspace to Microsoft 365 Migration<\/h2>\n
1. Create a Microsoft 365 Global Admin and a Google Workspace Super Admin for use throughout this process.<\/h3>\n
2. Add your domain to Microsoft 365 and verify.<\/h3>\n
3. Install and configure Microsoft Entra Connect<\/a> on-premises or synchronize accounts with another identity manager.<\/h3>\n
4. Ensure that synchronized accounts are assigned licenses.<\/h3>\n
Get-MsolUser -All \u2013UnlicensedUsersOnly |%{Set-MsolUserLicense \u2013UserPrincipalName $_.UserPrincipalName -AddLicenses \u201clitwareinc:ENTERPRISEPACK\u201d}<\/code><\/p>\n
5. Add a subdomain to Microsoft 365.<\/h3>\n
6. Add a DNS Mx record for the Microsoft 365 subdomain.<\/h3>\n
\n
7. Add an AD smtp address to the proxyAddresses<\/strong> field.<\/h3>\n
$Users = Get-ADUser -Filter * foreach ($user in $users ){\u00a0\u00a0 $alias = \u201csmtp:\u201d + $User.SamAccountName + \u201c@o.mydomain.com\u201d\u00a0\u00a0 Set-ADUser $User.SamAccountName -Add @{\u2018ProxyAddresses\u2019=$alias}<\/code><\/p>\n
8. Add a Microsoft 365 MailContact for each Google Workspaces subdomain alias.<\/h3>\n
\n
Import-Csv \u201cC:path-to-csvcsv-file.csv\u201d | ForEach {New-MailContact -Name $_.Name -DisplayName $_.Name -Firstname $_.FirstName-LastName $_.LastName -ExternalEmailAddress $_.ExternalEmailAddress}<\/code><\/p>\n
9. Set Calendar folder permissions in migrating users\u2019 mailboxes.<\/h3>\n
$Mailboxes = Get-Mailbox -ResultSize Unlimited ForEach ($Mailbox in $Mailboxes) {Set-MailboxFolderPermission -Identity ($Mailbox.sAMAccountName+\u2019:Calendar\u2019) -User Default -AccessRights LimitedDetails}<\/code><\/p>\n
10. Turn Calendar Notifications<\/strong> off (recommended to not annoy users).<\/h3>\n
\n
$names = Import-Csv \u201cC:path-to-csvnotificationsoff.csv\u201d ForEach ($name in $names) {Set-MailboxCalendarConfiguration $name.Identity -RemindersEnabled:$false -DefaultReminderTime:0\u00a0 -ReminderSoundEnabled:$false}<\/code><\/p>\n
11. Add a sub-domain to Google Workspaces:<\/h3>\n
\n
\n
12. Add Microsoft 365 subdomain to Google Workspace.<\/h3>\n
13. Add a DNS Mx record for the Google Workspace subdomain.<\/h3>\n
\n
14. Create an Microsoft 365 distribution group for users not yet migrated.<\/h3>\n
15. Add all users\u2019 G Suite email addresses to the distribution group created in Step 12.<\/h3>\n
$users = import-csv -Path C:path-to-csvcsv-file.csv foreach ($user in $users){Add-DistributionGroupMember -Identity \u201cUsers Not Yet Migrated\u201d -Member $user.UserPrincipalName}<\/code><\/p>\n
16. Configure a Microsoft 365 mail connector for routing mail out of Microsoft 365 during migration.<\/h3>\n
New-OutboundConnector -Name \u201cGSConnector\u201d -ConnectorType OnPremises-SmartHosts \u201caspmx.l.google.com\u201d -UseMXRecord $false -IsTransportRuleScoped $true<\/code><\/p>\n
17. Configure a Microsoft 365 Mail flow rule to use the distribution group and connector.<\/h3>\n
New-TransportRule -Name \u201cOutboundToGSuite\u201d -SentToMemberOf \u201cUsers Not Yet Migrated\u201d -RouteMessageOutboundConnector \u201cGSConnector\u201d<\/code><\/p>\n
18. Create a new remote domain for the g.mydomain.com<\/strong> subdomain.<\/h3>\n
New-RemoteDomain -DomainName g.mydomain.com -Name MigrationSet-RemoteDomain -identity Migration -TNEFEnabled $true -TrustedMailInbound $true -TrustedMailOutbound $true<\/code><\/p>\n
19. Create a Google Workspace OU with calendar disabled for migrated users.<\/h3>\n
\n
20. Create a Microsoft 365 Availability Address space for the Google Workspace sub-domain.<\/h3>\n
Add-AvailabilityAddressSpace -ForestName g.mydomain.com -AccessMethod OrgWideFB -Credentials (Get-Credential)<\/code><\/p>\n
21. Configure Google Workspaces Calendar Interop.<\/h3>\n
\n
Steps to Perform Your Phased Microsoft 365 Migration<\/h2>\n
22. Remove the Microsoft 365 MailContact for migrated users.<\/h3>\n
$addresses = Import-Csv C:path-to-csvcsv-file.csv ForEach ($address in $addresses {Remove-MailContact -Identity $address-Confirm:$false}<\/code><\/p>\n
23. Remove the Microsoft 365 user account from the distribution group for not yet migrated users.<\/h3>\n
$users = Import-csv -Path C:path-to-csvcsv-file.csv ForEach ($user in $users){Remove-DistributionGroupMember -Identity \u201cUsers Not Yet Migrated\u201d -Member $user.UserPrincipalName Confirm:$false}<\/code><\/p>\n
24. Move the Google Workspace user account into the calendar-disabled OU.<\/h3>\n