Forwarding Address Import and Export

Forwarding Address Import and Export

Be the first to vote!

Four score and many moons ago, I was working on one of my first projects in Microsoft Consulting Services.  This particular customer (a university) shared their Active Directory infrastructure with a hospital.  During the course of their business, employees would frequently move between organizations.  They maintained two mailboxes (one university mailbox, one hospital mailbox), and as users moved between organizations, would configure one mailbox to forward to the other.

In legacy versions of Exchange, it was only possible to forward mailboxes to a mail-enabled recipient in the Global Address list.  This value was stored as an Exchange recipient object in the ForwardingAddress attribute of a user.  In Exchange 2010, we included the ability to configure forwarding to an SMTP address, which meant the recipient no longer had to be in the GAL. In an exercise of true creativity, we stored this forwarding recipient SMTP address in an attribute called … [wait for it] … ForwardingSmtpAddress.  You can learn about it on

In a corollary conversation, when synchronizing identity to Office 365, neither ForwardingAddress nor ForwardingSmtpAddress are included.  So, when it comes to migrating mailboxes, if that mailbox is configured to forward, we aren’t capturing that information.

And thus, this tool was born.  The basic premise is that you run it in your Exchange on-premises environment prior to mailbox migrations to capture all of your forwarding address values (in either ForwardingAddress or ForwardingSmtpAddress) and stores them in a CSV.  If the value is extracted from ForwardingSmtpAddress, the script resolves the SMTP address and stores that value.  I say “prior to migrations” for a specific reason: once the mailbox has been migrated, it’s converted to a mail-enabled user and the ForwardingAddress and ForwardingSmtpAddress properties are gone forever, like those toys you threw away but are “helping your kids find.”

Then, post migration, you can re-run the script in Office 365 and apply the forwarding values back to the mailboxes. Problem solved.

I’ve revisited this script in an attempt to speed it up, using a server side filter for ForwardingAddress and ForwardingSmtpAddress.

To export, run:

.\ExportImport-ForwardingAddress.ps1 -Mode Export -Filename <filename.csv>

To import, run:

.\ExportImport-ForwardingAddress.ps1 -Mode Import -Filename <filename.csv>

You can get the updated script at

Published by Aaron Guilmette

Helping companies conquer inferior technology since 1997. I spend my time developing and implementing technology solutions so people can spend less time with technology. Specialties: Active Directory and Exchange consulting and deployment, Virtualization, Disaster Recovery, Office 365, datacenter migration/consolidation, cheese. View all posts by Aaron Guilmette

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Exit mobile version