Configure On-Premises Public Folders for a Hybrid Deployment with Exchange 2013


situation

Exchange Hybrid environment (Office 365 – Exchange Online) with Exchange 2013 on premise. Public Folders are hosted on-premise and need to be accessed by online users.

problem

The only official documentation provided by Microsoft how to configure on-premises public folder access (http://technet.microsoft.com/en-us/library/dn249373(v=exchg.150).aspx), talks about “legacy public folders”. Which in this case are Public folders hosted on Exchange 2007 SP3 RU10 or 2010 SP3.

So the first thought was to configure a proxy mailbox as outlined in the TechNet article and acting as if we had a 2007 or 2010 environment. This seemed to be working until the installation of CU3 on the Exchange 2013 server(s). Outlook clients got the following error while trying to open public folders:

solution

The solution is actually quite simple and strange that it’s not documented in any way by Microsoft so far. The Public folders on the Exchange 2013 server are, like the ones in Exchange Online, “Modern Public folders” and do not need a proxy mailbox. So just use the “Windows Azure Active Directory Sync” to synchronize the on-premises Public Folder mailbox objects to Azure AD/Office 365/Exchange Online. These mailbox objects will exist as mail enabled user objects in the online environment.

Next step (after you verify that the objects exist online) is to configure Exchange Online to use the on-premises public folders with the following PowerShell command:

Set-OrganizationConfig -PublicFoldersEnabled Remote -RemotePublicFolderMailboxes 
PFMailbox01,PFMailbox02,PFMailbox03

The autodiscover process is responsible for redirecting the online Outlook users to the on-premises public folders.

Be aware that Autodiscover should point to you on-premise environment to get this to work and that online users won’t be able to access on-premises public folders using Outlook Web App!

I’ve checked the above method with Microsoft Exchange Engineers and they have confirmed this way of configuring the environment is correct.

Advertisements
Configure On-Premises Public Folders for a Hybrid Deployment with Exchange 2013

13 thoughts on “Configure On-Premises Public Folders for a Hybrid Deployment with Exchange 2013

  1. Matt C says:

    We pretty much have the same setup but what we can’t seem to do is get some of the on-prem public folders that are mail enabled show up in the GAL for Office 365. It is much like if you had a user in an OU that you were syncing via directory sync. Any ideas what we need to do to get these folders to show up in the GAL and get an email to them?

    Side note, the public folder that is mail enabled is viewable via the o365 Outlook Client.

    1. Hi Matt,
      This is correct. The mail-enabled Public Folder object are not “synced” to Office365. The only way to get around this issue is to create contact items for the mail-enabled public folders. For example:

      # Logon to Exchange OnPremise and get all Mail-Enabled Public Folders which are not hidden from the addresslist
      $PublicFolders=Get-MailPublicFolder | Where {$_.HiddenFromAddressListsEnabled -eq $False}
      # LogOff ExchangeOnPrem

      # Logon to Exchange OnLine, remove all earlier created contacts and create for all the Public Folders found a contact in Exchange Online

      $PFDescription=”OnPremPublicFolder”
      Get-Mailcontact | Where-Object {$_.CustomAttribute10 -eq $PFDescription} | Remove-MailContact -Confirm:$False
      $PublicFolders | ForEach {
      $ExtEmailAddress=$_.PrimarySMTPaddress -replace “SMTP:” -replace “”
      New-MailContact -Name $_.Name -DisplayName $_.DisplayName -Alias $_.Alias -ExternalEmailAddress $ExtEmailAddress | Set-MailContact -CustomAttribute10 $PFDescription
      }

  2. steve lindse says:

    so i am having an issue that when trying to run the set-organizationconfig -publicfoldersenabled does not seem to be recognized

    we dont have any mail enabled public folders, we will be leaving our public folders on prem..

    we have a pure 2010 SP3 environment. I have a CAS role installed on my MB server, i have the new PFDB, & the proxy MB setup…

    I assume i dont need to run the export & import ps1’s for the XML since i dont have MEPF’s (when i tried to run them, i got a message saying none were found)

    any help would be great

      1. steve lindsey says:

        thank you for the response. i realized a day or so after i posted this that i was running the cmd from the wrong powershell

      2. steve lindsey says:

        thanks.

        only issue i have at the moment is Calendar interop with Google. we use it in prod & all works fine, but we havnet done any O365 implementation.

        I our lab, everything looks good, Google users can see our Exchange users free/busy, but Exchange users are unable to see our google users.. it looks as if the google data isnt being written to the public folder like it needs to ….but thats probably something you may not have familiarity with….do you ? 🙂

  3. Chris Keavney says:

    Thank you so much for this post! I have been trying to get this to work for a week, and the promised documentation from Microsoft is still missing as of November.
    One additional comment: if any of the public folders have more than one e-mail address, I have to create a contact on-line for each of those addresses, because Exchange Online does not allow a mail contact to have more than one address.
    Although it seems to be working now, I am still confused about what the above “Set-OrganizationConfig” command actually does. Apparently it does not allow online OWA users to connect to on-premise public folders (they still can’t), it does not allow online Outlook users to connect to on-premise public folders (autodiscover does that), and it does not allow mail to be delivered from the online server to on-premise public folders (we need to add mail contacts to do that).
    Ditto for the “Import-MailPublicFolders.ps1 -ToCloud” script which they tell us to use for this case. That copies the MailPublicFolder objects from the premises to the cloud, but without the corresponding PublicFolder objects that seems to be useless.
    Perhaps when Microsoft gets this straightened out they will have us change the default setting in DirSync that prevents the PublicFolder objects from being synced, but I don’t plan to try that without support.

    1. You’re correct about needing to create a contact for every mail address used within on-prem Public Folders.
      The “Set-OrganizationConfig” just tells Exchange Online to look for Public Folders on-prem and tells it which mailboxes to use. Be aware that you must be in a Hybrid environment and the “on-prem Public Folder mailboxes” must be synchronized with DirSync to Online.
      Creating the contacts is only meant for getting the mail addresses in the GAL for Online users.
      And yes, let’s hope Microsoft will come up with a proper solution/documentation.

  4. Andre Hornes says:

    Hi!
    Maybe you can help me with the following: I have just migrated 4000 users to Office 365 with staged migration. Customer have 2 Exchange(2007) servers in local AD. Everyone from server A has been migrated. I have also migrated public folders to Office 365. We are using FIM as dirsync. So all users that have been migrated are synced with Office 365.
    Problem is how can i share public folder that i migrated to Office 365 with users still on prem? Do i need to set up a hybrid solution?

    Thanks 🙂

    André

    1. steve lindsey says:

      from what i could tell…the answer is Yes.

      if you want to have local public folders accessible by local users & cloud users youll need a hybrid

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s