Troubleshooting
Fixing Missing Out-of-Office Replies After Migration
Out of office missing migration aftermath? Here's why OOO auto-replies don't transfer over IMAP and how to reconfigure them quickly for every user.
Dan Okafor
MSP Practice Lead
A user emails their team at 7am Monday from a beach in Crete. Two days later their manager calls: "Why has nobody heard from you?" The OOO they set on the source mailbox last week never made it to the destination. This is one of the quieter migration failures — nobody bounces, no error appears in the logs, mail flows normally. It just doesn't reply. If you've just cut over a tenant or finished a Gmail-to-Microsoft 365 move and the support queue is filling with "where's my auto-reply" tickets, here's the fix.
Skip the manual setup — let Mailbox Taxi handle it
One desktop app, every IMAP provider, zero data leaving your machine.
Why OOO never transfers automatically
Out-of-office replies are server-side rules. Like inbox rules, they're stored in a vendor-specific format outside the IMAP message store, which means no IMAP-based tool can read or write them during a migration:
- Microsoft 365 and Exchange store OOO as
MailboxAutoReplyConfigurationaccessible through PowerShell, EWS, or Microsoft Graph. - Gmail and Google Workspace store the vacation responder as
users.settings.vacationin the Gmail API, with separate fields for subject, message, schedule, and audience. - Zoho, Fastmail, iCloud, Yahoo each implement OOO as a per-mailbox setting on their own admin APIs or web UI.
- Custom IMAP / cPanel environments typically run Sieve scripts for vacation replies, which live in
~/.sieveon the server and are invisible to IMAP clients.
When a migration tool authenticates over IMAP, it sees nothing that lets it discover or transfer these settings. This is the same reason inbox rules don't survive — different store, different protocol, completely separate from mail.
The two-clock problem during cutover
OOO failures cluster around the cutover window because of timing:
- The user sets OOO on the source mailbox the night before they leave.
- Cutover happens at midnight. MX records flip to the destination.
- New mail arrives at the destination, where no OOO exists.
- The user is on a plane and can't fix it.
If you're running dual-delivery for safety, you can hit the opposite problem: the source mailbox still has OOO enabled and is still receiving copies of mail, so senders get one auto-reply from the source and then nothing from the destination. Or, worse, both eventually reply and the sender gets two messages.
Disable source OOO at cutover, not before
If you turn off source OOO too early, users still on the source domain stop getting auto-replies before the destination takes over. Time the source disable to the same minute as the MX flip, or use a transport rule on the source to suppress OOO for new external senders during the overlap window.
Step-by-step fix
Pull the list of source mailboxes with active OOO
On Exchange Online:
Get-Mailbox -ResultSize Unlimited | Get-MailboxAutoReplyConfiguration | Where-Object AutoReplyState -ne 'Disabled'. On Gmail / Google Workspace, loop through users with the Admin SDK and callusers.settings.vacation.getfor each. Save the output as CSV — you'll need the message text, schedule, and audience scope.Translate audience scope between providers
Outlook's "anyone outside my organization" maps to Gmail's "do not respond to people not in my Contacts" — but the negation is reversed, so double-check your translation. Outlook's separate internal and external messages collapse into a single Gmail message; pick the external version if you have to choose, since that's the one strangers will see.
Reapply at the destination
For Exchange Online, loop through your CSV with
Set-MailboxAutoReplyConfiguration -Identity user@domain.com -AutoReplyState Scheduled -StartTime ... -EndTime ... -InternalMessage ... -ExternalMessage .... For Gmail destinations,users.settings.vacation.updatetakes a JSON body with the same fields.Test from outside the org
Send a message from a personal Gmail or a separate test account to one of the migrated mailboxes. Confirm the auto-reply arrives within a few minutes, contains the expected text, and is sent to the right audience. Repeat for a handful of mailboxes across departments.
Disable OOO on the source after the overlap window closes
Once dual-delivery is off and source mail is fully retired, run
Set-MailboxAutoReplyConfiguration -AutoReplyState Disabled(or equivalent) against the source to stop any stragglers from getting duplicate replies if someone re-enables source access for archival.
Common edge cases
A few patterns where OOO recreation gets tricky:
- Scheduled OOO that's not active yet. A user sets OOO to start next Friday before cutover happens on Monday. The schedule field exists in both Outlook and Gmail, but the timezone semantics differ — Outlook stores UTC times converted from the user's mailbox timezone, Gmail stores epoch milliseconds. Convert carefully.
- OOO with HTML signatures. Outlook accepts HTML in the auto-reply body; Gmail's vacation responder accepts a subset. Test your migrated HTML by sending a test message before declaring the user done.
- Shared mailboxes with OOO. Shared mailboxes can have their own OOO on Exchange Online. Don't skip them in your audit, or the help desk shared mailbox will silently stop responding to support tickets.
- Resource mailboxes. Room and equipment mailboxes use a different auto-reply mechanism (
Set-CalendarProcessing). They're not part of the standard mailbox OOO and have to be migrated separately if you customized the decline messages.
For the wider context of what else needs validation after a cutover, see the post-migration validation playbook and the email migration troubleshooting hub. If you're planning your overall migration approach, the complete email migration guide covers cutover sequencing in detail.
Send a pre-flight email to users
Two business days before cutover, email every user a one-line reminder: "After Monday morning, you'll need to set your out-of-office again at outlook.office.com/mail/options." Half your tickets disappear because users do it themselves.
Bulk reset for MSPs
If you run migrations for clients regularly, build a reusable script that pulls source OOO settings into CSV, lets a tech edit them, then applies them to the destination tenant. The translation layer between Exchange Online and Google Workspace is the only part that needs care; the rest is straightforward loops over the API. Once it exists, you can run it as the final step of every cutover and ship users to their new tenant with their OOO intact.
Migrate your mailbox the easy way
Join the waitlist for early access and lock in launch pricing.
Related reading
troubleshooting
Fixing Inbox Rules Not Migrated After Email Move
Inbox rules not migrated after your email cutover? Here's why IMAP leaves them behind and how to rebuild them quickly without losing user productivity.
blog
Post-Migration Validation: The Checklist That Catches Real Problems
A post-migration validation checklist with message-count deltas, folder compares, calendar invites, mobile re-provisioning, and shared mailbox access checks.
blog
Email Migration Troubleshooting: The Complete Reference
Email migration troubleshooting reference covering auth, throttling, integrity, permissions, network and DNS — diagnostic order and safe retry strategies.
blog
The Complete Email Migration Guide for 2026
Plan, execute and validate an email migration without losing folders, flags, or sleep. A pillar guide that walks the full process end to end.
Migrate your mailbox the easy way
Join the waitlist for early access and lock in launch pricing.