DEV Community

Cover image for Migrate Email from Google Workspace to Office 365: Gmail-Only Guide
epifive
epifive

Posted on Originally published at epifive.com

Migrate Email from Google Workspace to Office 365: Gmail-Only Guide

To migrate email from Google Workspace to Office 365 (now Microsoft 365) without moving Drive, pick one of three mail paths: the automated Google Workspace batch in the Exchange admin center, Simplified Gmail Migration in the Microsoft 365 admin center, or IMAP. The first two move mail, calendar and contacts; IMAP moves mail only. The decision table below tells you which fits.

This page covers the mail-only slice of a G Suite to Office 365 migration. It does not repeat the full project plan, so keep the migration checklist open for scheduling, Drive and decommissioning.

Who this is for and what you will have at the end

This guide is for the admin who has been told to move Gmail to Exchange Online and nothing else: no Drive, no Google Groups, no Sites. It also suits teams that will move files later or leave them where they are for now.

At the end you will have chosen a mail method with a reason, completed the prerequisites for it, run a pilot, switched the MX record and know how to confirm that mail flows. The names Google Workspace and G Suite refer to the same Google product here; G Suite is the older name.

Pick the method: decision table

Every row below comes from Microsoft Learn pages listed in References. The two Google-side options in the middle are different front ends over the same kind of mail migration.

Question EAC automated batch Simplified Gmail Migration IMAP
Where you run it Exchange admin center, Migration Microsoft 365 admin center, consolidated Google migration page Exchange admin center, Migration
Mail Yes Yes Yes
Calendar and contacts Yes Yes No
Rules Yes (migrated turned off) Selectable No
Size of Google tenant Any 1,000 mailboxes or fewer Up to 50,000 rows per file
Needs mail users and routing subdomains first Yes The Learn page describes a guided flow with a Google Marketplace app No, but each user needs a Microsoft 365 mailbox
Per-user credentials No, uses a service account No Yes, an app password for each user
Staged batches Yes Select one, many or all mailboxes Yes

How to read it:

  • Need calendar and contacts moved with mail: choose the EAC batch or Simplified Gmail Migration.
  • Fewer than about 1,000 mailboxes and little Exchange experience: Simplified Gmail Migration is aimed at exactly that audience, according to Microsoft.
  • More than 1,000 mailboxes, or you want to control each step: use the EAC batch. Microsoft states that the consolidated experience routes tenants with more than 1,000 users to the larger-tenant Gmail migration experience.
  • A handful of mailboxes where mail alone is enough: IMAP works, but every user needs an app password, which means 2-step verification and password handling. The existing guide to IMAP to Exchange Online migration covers IMAP in general.

The rest of this guide covers the EAC batch in full, because it applies at every size, then notes where Simplified Gmail Migration and IMAP differ.

Prerequisites for the EAC batch

Complete these before you touch the Migration page. Microsoft says the migration will not succeed otherwise.

  1. Admin roles. In Exchange Online, the person running the migration needs at least the Recipient Management role group. In Google Cloud, the account that creates the project and service account needs the Project Creator and Service Account Creator roles. Creating the JSON key also needs permission to create service account keys, and an organization policy that allows it. Role changes can take up to 15 minutes to propagate.
  2. A verified primary domain. Add and verify contoso.com in Microsoft 365 with the TXT record, but do not change MX yet.
  3. Two routing subdomains. Mail moves between the two systems during coexistence, so each side needs an address of its own:
    • m365.contoso.com, a Google User alias domain that routes to Microsoft 365. Add it as a domain in Microsoft 365 as well.
    • gsuite.contoso.com, a Google User alias domain that routes to Google, with the current Google Workspace MX record published for it.
  4. Mail users. In the Exchange admin center, create a mail user for every person you will migrate, now or later: Recipients > Contacts > Add a mail user. Set the External email address to the Google routing address, such as adeyoung@gsuite.contoso.com, and the user ID to adeyoung@contoso.com. Add an SMTP proxy address at the Microsoft 365 routing domain, such as adeyoung@m365.contoso.com.
  5. Forwarding allowed on both sides. Allow automatic forwarding in Google Workspace and in Exchange Online. Exchange outbound spam policies, Remote Domain settings and mail flow rules can each block it. Microsoft notes that if forwarding is disabled for a user, the migration tool cannot set the forwarding address either.
  6. MRM and archive policies off. Microsoft recommends disabling all messaging records management and archival policies on target mailboxes before a batch, or items they delete or archive are reported as "missing". This is not a reason to remove a legal hold.
  7. Lower the MX TTL. Set the TTL on your MX records to 3,600 seconds or less ahead of cutover. Microsoft gives this value in the IMAP guide.

Two points trip people up. If you see GmailForwardingAddressRequiresVerificationException during a batch, Microsoft's prerequisite page says to skip the step of creating the subdomain for forwarding on the Gmail side. And choose a subdomain of your primary domain for routing rather than tenant.onmicrosoft.com; Microsoft says the built-in domain occasionally causes issues it cannot help with.

Run the batch in the Exchange admin center

The labels below are the ones in Microsoft's current instructions.

  1. In the Exchange admin center, go to Migration and select Add migration batch.
  2. Enter a unique name. Under Select the mailbox migration path, confirm Migration to Exchange Online, then select Next.
  3. Select Google Workspace (Gmail) migration and select Next.
  4. On Prerequisites for Google Workspace migration, in the Automate the configuration of your Google Workspace for migration section, select Start. Sign in with your Google admin account. When validation succeeds, a projectid-*.json key file downloads and the page shows a ClientID and a Scope.
  5. Select the API access link. On Google's API Clients page, select Add new, paste the ClientID and Scope, and select Authorize. Back in the wizard, select Next.
  6. On Set a migration endpoint, choose Create a new migration endpoint if this is your first batch. Name it and leave the defaults of 20 for Maximum concurrent migrations and 10 for Maximum concurrent incremental syncs, unless you have a reason to change them.
  7. On Gmail migration configuration, enter the Google admin email address, select Import JSON and pick the downloaded key file.
  8. On Add user mailboxes, select Import CSV file. For the pilot, include a few people only:
EmailAddress
adeyoung@contoso.com
awilber@contoso.com
Enter fullscreen mode Exit fullscreen mode

EmailAddress is required and holds the primary address of the Microsoft 365 mail user. An optional Username column holds the Gmail primary address when it differs.

  1. On Move configuration, choose the Target delivery domain, here m365.contoso.com. The filtering options (Mail, Calendar, Contacts and Rules) are all checked by default; clear any you do not want, for example if users will keep their calendars elsewhere.
  2. On Schedule batch migration, set who receives the report and how the batch starts and ends. Starting automatically and ending manually keeps the final switch in your hands. Select Save, then Done.

The same batch in PowerShell

Microsoft documents equivalent Exchange Online PowerShell cmdlets. They are useful when you must repeat batches. Test first, then create the endpoint and the batch:

Test-MigrationServerAvailability -Gmail -ServiceAccountKeyFileData $([System.IO.File]::ReadAllBytes("C:\somepath\yourkeyfile.json")) -EmailAddress admin@contoso.com

New-MigrationEndpoint -Gmail -ServiceAccountKeyFileData $([System.IO.File]::ReadAllBytes("C:\somepath\yourkeyfile.json")) -EmailAddress admin@contoso.com -Name gmailEndpoint

New-MigrationBatch -SourceEndpoint gmailEndpoint -Name gmailBatch -CSVData $([System.IO.File]::ReadAllBytes("C:\somepath\gmail.csv")) -TargetDeliveryDomain "m365.contoso.com"

Start-MigrationBatch -Identity gmailBatch
Enter fullscreen mode Exit fullscreen mode

The PowerShell route also supports -ExcludeFolder to leave out named folders or Gmail labels, and -SkipRules to skip Gmail filters. The admin center wizard does not show those two parameters in the steps above.

What happens when the batch starts

When a batch starts, each user in it changes from a mail user to a mailbox. Assign the Exchange Online license only after that moment; you have 30 days. During sync, mail sent to a migrating user at Microsoft 365 is forwarded back to the Google routing address so it lands in the original mailbox.

When the status reaches Synced, select the batch, then Complete migration batch, then Confirm in the Details pane. Completion runs one more incremental sync, removes the forwarding from Microsoft 365 to Google and adds forwarding from Google to Microsoft 365. Wait for Completed.

What does not move, and what to tell users

Microsoft lists these limits for the Google Workspace migration, so announce them before the first batch:

Data Limitation
Mail Vacation and automatic reply settings are not migrated
Meeting rooms Room bookings are not migrated
Calendar Shared calendars and event colors are not migrated
Contacts At most three email addresses per contact; Gmail tags, contact URLs and custom tags are not migrated
Rules Migrated but turned off; users should review them in Outlook before enabling
Large messages The largest single message is set by tenant transport configuration, 35 MB by default

Throughput for calendar and contacts depends on the quota for your tenant's service account on the Google side. Mailboxes over 100 GB have their own Microsoft article for migration into primary and archive mailboxes.

Simplified Gmail Migration: where it differs

Simplified Gmail Migration (SGM) runs in the Microsoft 365 admin center. Open Migrate your business productivity workloads to Microsoft 365, choose the Google option and add your source domain. The Mail tile counts the mailboxes on the Google side. At 1,000 or fewer you get SGM; above that you are sent to the large-tenant flow.

Per Microsoft's description, the steps are:

  1. Sign in to Google with migration admin credentials.
  2. Install the Google Marketplace app named Microsoft 365 Mail Migration, which performs the Google Admin console setup.
  3. Confirm your Google credentials again, review the mailbox scan and choose one, many or all mailboxes.
  4. Pick regular-size or large-mailbox (over 80 GB) workflow, the date range, the data types (mail, calendar, contacts, rules, permissions, delegates) and labels or folders.
  5. When all mailboxes are done, choose Complete Migration, change your DNS entries and confirm the change in the experience.

SGM keeps syncing new mail that lands in Google for 72 hours after you confirm the DNS change. The Learn page for SGM carried a note that the feature was not yet available worldwide while Google verified the Marketplace app, with a launch estimate of late October 2024. If you do not see the SGM flow in your tenant, use the EAC batch instead.

IMAP: where it differs

IMAP uses an endpoint of type IMAP with your IMAP server name, and a CSV with the headings EmailAddress, UserName and Password, where the password is a Google app password for each mailbox. Google treats the connection as a less secure app, so users must have 2-step verification enabled to create app passwords. A migration file can hold up to 50,000 rows and 10 MB. Microsoft says the batch synchronizes once a day, and that you should let it run at least 72 hours before deleting it.

Because IMAP carries mail only, users import calendar and contacts themselves using Microsoft's Outlook import articles. Use IMAP when that trade is acceptable, and use a small test batch first to estimate duration.

Switch the MX record and stop syncing

After the last batch completes:

  1. Update the MX record for contoso.com so it points to Microsoft 365. In the Microsoft 365 admin center, select the domain and follow Fix issues if the setup wizard was paused.
  2. Wait. Other systems can take up to 72 hours to pick up the change, and Microsoft advises waiting at least 72 hours before you stop synchronization.
  3. Confirm every user works only from Microsoft 365, then delete the batch under Migration. Mail sent to a Gmail mailbox after that is not copied across.
  4. Raise the MX TTL back to a longer value and remove the routing subdomains and extra aliases when you no longer need them.

For the full cutover sequence, see the email migration cutover checklist. The Drive migration guide covers the files you left behind.

Verify and troubleshoot

Verify each pilot user in Outlook on the web: folders and message counts look right, a message sent to another Microsoft 365 user arrives, and calendar entries appear on the right dates. Check the batch's mailbox status reports for errors.

Symptom Likely cause and fix
Items reported as "missing" MRM or archive policies deleted or moved them on the target; disable the policies and rerun verification
GmailForwardingAddressRequiresVerificationException Skip creating the Google-side forwarding subdomain, per Microsoft's prerequisite page, or verify the forwarding address manually
Forwarding not set A user's ability to set a forwarding address is disabled in Google or Exchange; enable it
Large mailbox stays on Syncing Google bandwidth or sync limits; Microsoft links Google's limits pages and suggests alternatives such as PST import or third-party tools
Endpoint creation fails Service account key creation blocked by organization policy, or missing roles; ask the Google Cloud administrator

What we checked

  • Opened "Perform an automated Google Workspace migration to Microsoft 365 or Office 365 in EAC in Exchange Online" on learn.microsoft.com on 2026-11-15 and copied the wizard labels (Add migration batch, Google Workspace (Gmail) migration, Set a migration endpoint, Move configuration) and the defaults of 20 and 10 concurrent migrations and syncs.
  • Compared the EAC steps against "Migrate business email and calendar from Google Workspace" (page dated 2026-09-25, updated 2026-10-30) on 2026-11-15; the 30-day license window and the Recipient Management role group appear on both that page and the completion page.
  • Cross-checked the 1,000-mailbox SGM threshold between the consolidated migration page and the SGM page; both state 1,000 or fewer, with slightly different wording on one page ("less than 1000 seats").
  • Confirmed the migration limitations table (room bookings, shared calendars, event colors, three email addresses per contact, 35 MB default message size) on the "Perform a Google Workspace migration" page.
  • Confirmed the IMAP limits (50,000 rows, 10 MB file, mail only) and the 72-hour guidance on the IMAP Gmail migration page.
  • Documented output: Microsoft publishes no console output for the cmdlets shown, so none is reproduced. The CSV samples follow the headers on Microsoft's pages.
  • Not checked: no Google Workspace or Microsoft 365 tenant was available, so no batch was run and the Simplified Gmail Migration flow was not seen in the admin center. Steps follow Microsoft's documentation as of 2026-11-15.

Last tested: 2026-11-15

References


This guide was researched and drafted with AI assistance and checked against the vendor documentation listed in its References. Read the maintained version and related guides on EpiFive.

Top comments (0)