Introduction:
This blog describes an email migration from Google Workspace to Microsoft 365, focused exclusively on transitioning Gmail mailboxes to Exchange Online. The migration involved precise user-to-user mailbox mapping, preservation of primary SMTP addresses, and configuration of email aliases to ensure uninterrupted mail flow across multiple domains.
A phased, domain-based migration approach was used to reduce risk, validate mail delivery, and maintain identity consistency during cutover, providing a practical reference for executing real-world Google Workspace to Microsoft 365 email migrations.
Note: This article focuses on email migration.
To migrate files and folders, refer to this guide for Google Drive to OneDrive for Business (ODFB) migration.
Adding Domain in Microsoft 365 Account
Step 1: Access the Microsoft 365 Portal
Begin by navigating to office.com in your web browser. Sign in using your Global Administrator credentials to access the main dashboard.
Step 2: Launch the Admin Center
From your Microsoft 365 Home dashboard, locate the Admin tile (usually found under "Quick access" or by clicking the app launcher) and click it to enter the management portal.
Step 3: Access Domain Management
Inside the Admin Center, locate the left-hand navigation menu. Click on Settings to expand the list, then select Domains. This is where you will configure and verify the external domain you wish to migrate from Google Workspace.
Step 4: Initiate the Add Domain Wizard
In the Domains management pane, look for the toolbar at the top of the list. Click on the + Add domain button to begin the wizard. This will launch the setup process for linking your existing Google Workspace domain (e.g.,
yourcompany.com) to your Microsoft 365 tenant.Step 5: Input Your Domain Name
The Add a domain wizard will now appear. In the designated text field, type the exact name of the domain you are migrating from Google Workspace (e.g.,
yourcompany.com). Once entered, click the Use this domain button to proceed to the verification stage.Step 6: Verify Domain Ownership
Microsoft must confirm that you own the domain before proceeding. You will be presented with a few verification options. The most common and secure method is to select Add a TXT record to the domain's DNS records. Select this option and click Verify (or continue) to retrieve the specific record values you need to add to your DNS host.
Step 7: Defer the DNS Connection
The wizard will now ask how you want to connect your domain. Since this is a migration and you are not ready to switch mail flow (MX records) yet, it is crucial to select Skip and do this later. This prevents any immediate disruption to your current Google Workspace emails. Click Continue to finalize the setup without altering your DNS.
Step 8: Finalize the Domain Setup
You will now see a confirmation screen stating, "Domain setup is complete." This indicates that Microsoft 365 has successfully verified your domain ownership. Since we chose to skip the DNS record updates for now (to keep your current email active), simply click the Done button to close the wizard.
Note:
Once you click the Done button, your new domain will appear in the active domains list. It may also be automatically set as your Default domain for new user creation.
Provisioning Users for Microsoft 365 Migration
Step 9: Access User Management
In the Microsoft 365 Admin Center, locate the left-hand navigation pane. Click on Users to expand the menu, then select Active users. This dashboard is where you will create the destination accounts for your migration.
Step 10: Initiate User Creation
On the Active user's page, you will see the management dashboard for your user accounts. To start provisioning a new user, click the Add a user button located in the toolbar at the top of the list.
Step 11: Enter Basic User Details
The Add a user wizard will open to the Basics tab. Here, you must fill in the user's identity information, including First name, Last name, and Display name.
Step 12: Assign Product Licenses
On the Product licenses page, first select the appropriate country from the Location dropdown menu. Next, ensure the Assign user a product license option is selected. Check the box next to the specific license you wish to assign (e.g., Microsoft 365 Business Standard) and click Next.
Step 13: Configure Optional Settings
You will arrive at the Optional settings page. Here, you can assign specific administrative Roles to the user if needed, such as "Global admin" or "User admin". For a standard user, you can leave the default role ("User: no administration access") and click Next to proceed.
Step 14: Review and Finalize
You will now reach the Review and finish page. This is your chance to verify all the details you have configured, including the display name, username, and assigned licenses. If everything looks correct, click the Finish adding button to officially create the user account.
Step 15: Confirmation of User Creation
After a few seconds of processing, a confirmation window will appear stating "User added to active users." This indicates the account has been successfully created. You can view or copy the password details here if needed. Once done, click the Close button to exit the wizard.
Note:
You must repeat these steps for every single active user you intend to migrate. Ensure all accounts are created and assigned valid licenses before proceeding to the migration phase.
Once all users are added, remember to set your custom domain as the Default. To do this, navigate to Settings > Domains in the Admin Center, select your new domain, and choose Set as default.
Migrating Google Workspace Mailboxes to Microsoft 365
Step 16: Access the Exchange Admin Center
In the Microsoft 365 Admin Center, locate the left-hand navigation menu. Click on ... Show all to expand the full list of options. Scroll down to the "Admin centers" section and select Exchange. This will launch the modern Exchange Admin Center (EAC) where the migration will be managed.
Step 17: Initiate a New Migration Batch
In the Exchange Admin Center dashboard, locate the Migration option in the left-hand navigation pane. Click it to open the migration management screen. From the top menu bar, select Add migration batch to launch the configuration wizard.
Step 18: Define Batch Name and Path
The Add migration batch wizard will open. First, enter a unique name for your migration (e.g., "GWorkspace_Migration") in the Migration batch name field. Next, locate the Select the mailbox migration path dropdown menu and choose Migration to Exchange Online. Click Next to proceed.
Step 19: Select Migration Type
On the Migration type screen, you will be presented with several options. Select Google Workspace (Gmail) migration from the list to specify the source environment. Click Next to continue to the prerequisites check.
- Automate the configuration: Let Microsoft 365 handle the setup automatically (Recommended).
- Manually configure: Upload your own JSON key file and configure settings manually (Advanced).
Under the Automate the configuration of your Google Workspace for migration section, click on the Start button. This will trigger the automated setup process which handles the necessary permissions and API connections for you.
Important Requirement:
Before proceeding, ensure you have the Super Admin credentials for the Google Workspace tenant you are migrating from. The automated configuration tool requires these elevated privileges to establish the necessary connections and permissions.
Once the automation process finishes, the wizard will display your client ID and the required API Scopes. A direct link will also be provided to the Google Workspace Admin console, where you must add these scopes to authorize the connection.
Important: A Private Key (JSON file) will automatically download to your computer. Save this file securely, as it serves as the credential key for the migration endpoint.
Step 23: Configure Domain-Wide Delegation
In the Microsoft 365 prerequisites window, locate and click the blue Link next to the text "Click the link to add scopes for API access".
A new browser window will open, taking you to the Google Workspace Admin console. On the "Domain-wide Delegation" page, click the Add new button. You will then use the Client ID and API Scopes that were generated in the previous step to grant the necessary permissions.
- Paste the Client ID (copied from the Microsoft 365 wizard) into the Client ID field.
- Paste the OAuth scopes (also from the wizard) into the OAuth scopes field.
- Click the Authorize button to save the configuration and grant the necessary permissions.
- Click on the project dropdown menu in the top navigation bar (often labeled Select a project).
- In the pop-up window, click New Project.
- Enter a project name (e.g., "M365-Migration-Project") and click Create.
Step 26: Configure and Create the Project
In the New Project screen that appears:
Enter a descriptive name in the Project name field (e.g., "M365-Migration-Project").
Under Location, browse and select your organization (if applicable) or leave it as "No organization".
Click the Create button to initialize the new project.
Under Location, browse and select your organization (if applicable) or leave it as "No organization".
Click the Create button to initialize the new project.
- Navigate to the IAM & Admin section in the Google Cloud Console (or visit
). https://console.cloud.google.com/iam-admin - From the left-hand menu, click on Service accounts.
- At the top of the main pane, click the + CREATE SERVICE ACCOUNT button.
- Enter a descriptive name in the Service account name field (e.g.,
m365-migration-svc).- The Service account ID field will populate automatically based on your entry.
- Click the CREATE AND CONTINUE button to save and proceed to the next step.
- In the "Grant this service account access to project" section, click the Select a role dropdown menu.
- Choose Owner (under "Basic" or by searching for "Owner") to give the service account full access to the project.
- Click CONTINUE to apply the role.
- Finally, click DONE at the bottom of the page to complete the service account creation.
- Locate your newly created service account in the table.
- Find the OAuth 2 Client ID (a long string of numbers) in the corresponding column.
- Copy this Client ID and save it in a secure location (like a Notepad file). You will need this ID later to configure domain-wide delegation in the Google Admin console.
- In the Service Accounts list, click on the email address (link) of the service account you just created.
- On the service account details page, click the KEYS tab in the top navigation bar.
- Click the ADD KEY dropdown button and select Create new key.
- In the pop-up window, ensure JSON is selected as the "Key type".
- Click CREATE. The JSON file containing your private key will automatically download to your computer.
- On the service account details page, switch to the KEYS tab.
- Click the ADD KEY dropdown and select Create new key.
- A pop-up window titled "Create private key" will appear. Select JSON as the Key type.
- Click the CREATE button. The file will download immediately.
Step 34: Save the Downloaded Key
After clicking Create, a confirmation window will appear stating that the Private key saved to your computer. The JSON file will automatically download to your browser's default download location.
Crucial: This is the only time you can view or download this specific private key. If you lose it, you will need to generate a new one.
1. Navigate to the API Library:
- Go to APIs & Services > Library in the Google Cloud Console (or visit
). https://console.cloud.google.com/apis/library
2. Enable the following three APIs: Repeat the search and enable process for each of these services:
- Gmail API
- Google Calendar API
- Google People API
- Google Contacts API
- Open a new tab and log in to the Google Admin Console (admin.google.com).
- Navigate to the Domain-wide Delegation page. You can use this direct link:
. (Alternatively, go to Security > Access and data control > API controls > Manage Domain Wide Delegation). https://admin.google.com/ac/owl/domainwidedelegation - Click the Add new button to register your service account.
- Client ID: Paste the long numeric string you saved earlier (from Step 7).
- OAuth scopes: Copy and paste the exact list of scopes below into this field:
https://mail.google.com,https://www.googleapis.com/auth/contacts,https://www.googleapis.com/auth/calendar,https://www.googleapis.com/auth/gmail.settings.sharing,https://www.google.com/m8/feedsClick the Authorize button.
- Leave the Google tabs open (just in case you need to copy values again).
- Switch your browser tab back to the Microsoft 365 Exchange Admin Center.
- You should still be on the Add migration batch wizard where you left off.
Step 38: Complete Prerequisites Check
Back in the Microsoft 365 Exchange Admin Center:
- Verify that you are on the Prerequisites for Google Workspace migration page.
- Since you have manually completed all the listed tasks (Service Account creation, API enablement, and Domain-wide delegation) in the previous steps, you can now proceed.
- Click the Next button at the bottom of the screen.
- The Set a migration endpoint window will now appear.
- Select the option: Create a new migration endpoint.
- Click Next.
- On the General information page, locate the Migration endpoint name field.
- Type a unique name for this endpoint (e.g.,
GWorkspace_Endpoint).- Leave the Max concurrent migrations and Max concurrent incremental syncs fields at their default values (unless you have specific reasons to change them).
- Click Next.
1. On the Google Workspace configuration page:
- Email address: Enter the email address of the Google Workspace Super Admin (this must be the account used to create the Service Account).
- JSON key: Click the button to upload (often labeled Choose File or Import) and select the .json file you downloaded to your computer earlier.
2. Once the file is uploaded and the email is entered, click Next.
- You should now see a confirmation or the list of endpoints showing your new Migration Endpoint has been created successfully.
- Click Next to proceed to the user selection stage.
- Open Excel or a plain text editor (like Notepad).
- In the first row (A1), enter the exact header: Email Address (Note: Ensure there are no spaces in the header).
- In the rows below, list the Microsoft 365 email addresses for every user you want to migrate in this batch.
- Save the file as a
.csv(Comma Separated Values) file (e.g.,migration_users.csv).
- On the Add user details page of the wizard, select the option to Manually upload a CSV file.
- Click the Choose File (or "Browse") button.
- Select the
.csvfile you just created (e.g.,migration_users.csv).- Once the file is uploaded and validated, click Next to proceed.
1. On the Move configuration window:
- Target delivery domain: Enter your Microsoft 365 routing domain (typically
yourcompany.onmicrosoft.com). This ensures email routing works correctly during the migration.- Select items to migrate: Check the boxes for the data types you want to move:
- Calendar
- Contacts (You can also select Rules if available/needed).
2. Click Next to proceed.
1. On the Schedule batch migration page, configure the final settings:
- Send a report to: By default, your admin email is selected. You can add other recipients who should receive the final status report.
- Start the migration batch: Select Automatically start the batch (or "Automatically processing the batch").
- End the migration batch: Select Automatically complete the migration batch.
- Time zone: Select your local time zone from the dropdown menu to ensure reports and schedules align with your time.
2. Click the Save button to finalize the wizard and begin the migration process.
- Wait for Processing: The system will take a moment to process your request.
- Confirmation: You will see a status message indicating Batch creation successful.
- Action: Click the Done button to close the wizard.
- After clicking "Done," you will be redirected to the main Migration dashboard.
- Locate your batch in the list. You will see the Status column change to Syncing.
- Wait for Completion: The migration process will now copy data from Google Workspace to Microsoft 365. This can take significant time depending on the size of the mailboxes. You do not need to keep the window open; the process runs in the background.
- Wait for Data Transfer: As mentioned, this process will take time depending on the size of the mailboxes (ranging from minutes for test accounts to hours or days for large organizations).
- Refresh Status: Periodically click the Refresh button (circular arrow icon) in the toolbar to update the list.
- Confirm Completion: Once the data transfer is finished, the Status column will change from "Syncing" to Synced or Completed (depending on the batch finalization settings you chose).
Important Post-Migration Reminder:
Now that your data has been migrated, the final step is to update your MX Records in your DNS settings to point to Microsoft 365. This is critical to ensure that all new incoming emails are delivered directly to your new Microsoft 365 mailboxes instead of Google Workspace.
Update MX Records to Route Mail to Microsoft 365
While your old emails have been migrated, new emails may still be going to Google Workspace. To switch the flow of new emails to Microsoft 365, you must update your domain's MX (Mail Exchange) records.
To finalize the mail flow, you need to update your DNS records. Microsoft 365 provides a wizard to help you with this.
- Open the Microsoft 365 Admin Center.
- In the left-hand navigation pane, go to Settings > Domains.
- Click on your specific domain name (e.g.,
yourcompany.com) to open its details.- Click on the Manage DNS (or Continue setup) button to view the required records.
- After clicking "Manage DNS," you will see the Connection options (or "How do you want to connect your domain?") page.
- Select the radio button for Add your own DNS records.
Note: This option allows you to manually copy the required MX, SPF, and CNAME records and paste them into your domain registrar (e.g., GoDaddy, Cloudflare, Namecheap). This is often safer than allowing Microsoft to access your DNS settings automatically.
- Click Continue.
- The wizard will now display a list of the specific records you need to add to your domain registrar (MX, CNAME, and TXT/SPF).
- Action: Log in to your domain registrar's website (e.g., GoDaddy, Namecheap) and create the new records exactly as shown on the screen.
- MX Record: Directs email to Microsoft 365.
- CNAME (Autodiscover): Helps Outlook and mobile apps find the server automatically.
- TXT (SPF): Authorizes Microsoft 365 to send email on your behalf.
- Once you have added all the values in your registrar, return to this window and click Continue.
Conclusion
Mission Accomplished!
By following this step-by-step procedure, you have successfully migrated your organization from Google Workspace to Microsoft 365. You’ve handled everything from setting up the Google Service Account to configuring the final DNS records.
Your users can now log in to their new Microsoft 365 accounts with all their historical emails, contacts, and calendars ready to go.

No comments:
Post a Comment