How to merge an Office 365 account with an on-premises AD account after hybrid configuration?

Once you have completed a hybrid configuration in your company, it turns out that the job is not done yet. After a quick verification whether the hybrid is set up correctly, you notice that some of the users are not synchronized properly. And if that is the case, you need to do some additional adjustments. If you hit the roadblock during the synchronization it is most probable that the problem will be related to user synchronization between local Active Directory and Azure AD. Common causes for this are:

  • Lack of rights to Organizational Units (OU) or AD objects (users, groups or computers) for a service account used by Azure AD Connect (AAD Connect)
  • The improper scope of objects synchronized with Office 365. In other words, perhaps an OU that contains a certain user object, group or computer was not selected in the AAD Connect configuration wizard.

You can encounter these problems when you run the synchronization from on-premises AD to Office 365. But this can also happen the other way round when you run the synchronization from Office 365 to on-premises AD or in both directions. Look at the most common scenarios here:

In this article, I will show you how to manage these situations in an environment with hybrid configuration and Centralized Mail Transport enabled.

A user has an account in Office 365 but not in local Active Directory

Merging AD account with Office 365

In this scenario, a user account is created in Office 365 in a hybrid setup. It is worth mentioning that this scenario is correct and supported by Microsoft. However, it causes problems for an Office 365 user when he or she wants to access public folders being on the on-premises Exchange. This means that the user will not be able to access local public folders (legacy public folders) and any attempt of connection will throw an error:

Cannot expand the folder. The set of folders cannot be opened. Network problems are preventing connection to Microsoft Exchange

How to solve this problem

To solve the problem you need to run SMTP matching. This means that you need to create a local AD object with SMTP address that matches primary SMTP address of a user object in Office 365. Unfortunately, there are some limitations highlighted by Microsoft related to SMTP matching:

  • A user account that you want to run SMTP matching on needs to have an Exchange Online email address (the Exchange Online license is not required).
  • A user account that was originally authored in Office 365 can be SMTP-matched only once.
  • During the SMTP matching process, the primary address of an Office 365 user can’t be updated.
  • Every SMTP address needs to be unique, otherwise, the synchronization will fail and you may see this error:
Unable to update this object because the following attributes associated with this object have values that may already be associated with another object in your local directory services: [ProxyAddresses SMTP:john@example.com;]. Correct or remove the duplicate values in your local directory.

To match users in Office 365 with AD users, follow the steps below:

  1. Log in to Office 365 and go to Exchange admin center.
  2. Write down the primary SMTP address for a selected user in Exchange Online (if you do not have an Exchange Online license, you can take this address from user’s Office 365 login – in most cases it’s the same).
  3. Create a user object in your local Active Directory with the same attributes (first name, last name, UPN, etc.) as they are in Office 365.
  4. Set up the primary SMTP address for a new AD object using the address from step 2. In Active Directory, look for the proxyAddresses attribute.Setting up proxyAddresses parameter
  5. Force the synchronization of AD objects with Office 365 on the server with Azure AD Connect. Use the following cmdlet:
    Start-ADSyncSyncCycle -PolicyType Delta
  6. After a successful user synchronization, you should see that the Sync type section shows Synced with Active Directory instead of In cloud.Sync type section in Office 365

 

Once the synchronization is finished, an Office 365 user should have access to on-premises public folders.

A user has both Office 365 and local AD accounts

Sometimes a company uses both environments to have access to different services offered by these two platforms. For example, the company decides to use Office 365 to have access to SharePoint Online and Skype for Business services. At the same time, the company maintains the on-premises Exchange Server.

A user has both Office 365 and local AD accounts

However, when you set up a hybrid environment and synchronize directories via Azure AD Connect, this may duplicate user accounts or cause other sync issues. A single user can end up having two accounts – one in Office 365 and one in local Active Directory. If the company uses Skype for Business (Lync) in an on-premises environment, the synchronization can be even more complicated.

One user, two accounts

If that is the case, you should carefully plan the synchronization before using Azure AD Connect for the first time. By verifying attributes, UPNs and SMTP address, make sure that all AD objects correspond to Office 365 objects. Additionally, when you have Skype/Lync on-premises you should think over what results you expect to achieve. For example, you may decide to migrate to Skype for Business Online and stop using the on-premises solution.

Generally speaking, if any problems appear in this scenario, you can run SMTP matching as well. If there are duplicates of user accounts, you need to remove them from Office 365 using the following cmdlet in Azure Active Directory Module for Windows PowerShell:

Remove-MsolUser -UserPrincipalName j.doe@example.com

Remove-MsolUser -UserPrincipalName j.doe@example.com -RemoveFromRecycleBin

For a user who has a duplicated account, you should check and correct attributes either in Office 365 or in local AD. In Azure AD Connect, you can find more details on fixing synchronization problems.

To get more information on Skype/Lync migrations, visit this TechNet website.

A user has one mailbox in Office 365 and one in an on-premises Exchange

It is one of those weird situations when a single user has one AD account but is connected to two mailboxes – one mailbox is in Office 365 and the second one is on on-premises Exchange (practically, it will be connected to on-premises via Autodiscover). This situation is very similar to the one described in the second scenario above, with the only difference that an Office 365 user has the Office 365 license assigned (including a license for Exchange Online). As you can imagine having two mailboxes in hybrid settings causes complications in email flow for that user. When the MX record points to Office 365, an email will get stuck in Office 365 mailbox and will not be delivered to an on-premises mailbox.

A user with one mailbox in Office 365 and one in on-premises Exchange.

How to solve the problem

Unfortunately, in this case, SMTP matching will not help. The only result you would achieve after running the SMTP matching is having Office 365 and the on-premises accounts matched – this will not merge mailboxes though. Removing a license from an Office 365 user will not solve the problem either. The only method would be to remove the Office 365 user and recreating it via Azure AD Connect synchronization.

Note: Keep in mind that when you remove the user, he or she will lose their Office 365 data. That is why before deleting the user account, make sure to create a backup copy of user’s data (OneDrive, Exchange etc.). If you need to repeat this procedure for a number of users, you may consider using a third party tool like CodeTwo Backup, which will also help you restore data to on-premises mailboxes.

To solve the problem follow the steps below:

  1. Connect to an Office 365 tenant using Azure Active Directory Module for Windows PowerShell:
    Connect-MsolService
  2. Then, remove the user by executing the following cmdlets:
    Remove-MsolUser -UserPrincipalName j.doe@example.com
    Remove-MsolUser -UserPrincipalName j.doe@example.com -RemoveFromRecycleBin
  3. Finally, recreate a user via Azure AD Connect by forcing the synchronization process (run the cmdlet on the server with Azure AD Connect):
    Start-ADSyncSyncCycle -PolicyType Delta
  4. As soon as you activate the Office 365 license, you should see the following information:Mail settings

This confirms that now Exchange recognizes the user’s mailbox. Once you have recreated a user, you can start restoring user’s data to Office 365.

See also:

23 thoughts on “How to merge an Office 365 account with an on-premises AD account after hybrid configuration?


  1. Hi,

    There is another method which avoid deleting the user introduced by Microsoft :
    Set-User cmdlet in Exchange Online PowerShell

    Please check :https://blogs.technet.microsoft.com/exchange/2018/01/17/permanently-clear-previous-mailbox-info/

    • Hi Malik,
      That is right, thanks for mentioning this method. It was not available at the time of writing this article. I will be sure to add a few words about the Set-User cmdlet and the -PermanentlyClearPreviousMailboxInfo attribute.

  2. Hi Everyone I have two DCs and O365 user, I have also added AD Sync tool on both DCs. My problem is , I don’t see any of the user synchronized to DCs Active Directory from O365 account? what could be the problem? I have tried scenario 1 which is working for new user add, but i want to synchronize all o365 user to my AD on Domain controller.
    Thanks in advance

    • Hi Milan,
      Have you followed the instructions from this part of the article? Because it seems (correct me if I’m wrong) that you have not re-created users from Office 365 into the local DC. If you scroll to this comment, Alfred has recently posted the procedure he followed, you can check if it makes things easier for you.

  3. Hey Adam,

    as you said, the user details won’t be included in the sync O365 to local AD.

    I opened a test tenant and did the following:
    – Added few users in O365
    – Exported them with Get-Msoluser into a CSV, with all details I need/want in local AD
    – Imported them to local AD with New-ADUser
    – I didn’t need proxyAdress, it seems it works as long as the local UPN equals the login name to Office365 (and you don’t have a hybrid exchange environment running)

    I ran into one thing: When I change details like City in local AD they won’t be published to O365 as long as the user has not an exchange licence added in O365 (as described in https://docs.microsoft.com/en-us/azure/active-directory/hybrid/reference-connect-sync-attributes-synchronized)

    First testing went well, thanks for all the information provided

  4. Adam, thanks for the fast response!

    For sure I’ll go for Powershell :) Even if it would be 5 users ;)

    Sounds like a plan. I will test it and post here again as soon as I got some results! Thanks!

  5. Hey, thanks for all the information!

    I got a running O365 tenant with about 15 users with Exchange Online. No local AD.

    Now there will be a new local server with a new domain controller in a new domani environment. I don’t want to manage users locally and in O365 separately, so I want to sync them. Since I’m starting with an empty local AD, what would you advise?

    Sync O365 into the local AD (does it even work with AADConnect?) or create 15 users in local AD by hand, add their proxyAdresses corresponding their O365 mail adress/login and hope for the best? ;)

    Thanks in Advance!

    • Hi Alfred,
      Glad you found the article useful!
      The scenario you need to follow is the first option in the article, so yes, the proxyAddress matching. You can create the users by hand since there is only 15 of them; however, I’d automatize it with PowerShell.
      But first things first: AAD Connect is primarily used to sync on-prem Exchange to Exchange Online. If I remember correctly, AD attributes will not be synced from the cloud to the on-site Directory. That’s why I would first create a test account in O365, define some attributes, sync using proxyAddress matching and see what happens. Which, I suspect, would be syncing the empty, attribute-less account to the cloud.
      If it works the way I suspect it to, the least problematic way to go about it would be to pull your users from Office 365 with their attributes to CSV (using the Get-MsolUser | Select-Object | Export-CSV cmdlets) and using the CSV to create users on-premises. After that, the synchronization *should* go without any problems.

  6. Thank you for the helpful and informative write-up. Google keeps recommending your site for a solution to our issue.

    We have an Office 365 Resource that acts as conference room and has a busy calendar. We’d like to merge this Office 365 Resource with an existing AD account and preserve the Office 365 calendar.

    Is this possible or do you have any suggestions? Thanks!

  7. Hello,
    i have a question is it possible to use online funcitons like outlook/people/calendar but with on-premise mailbox and not exchange online? Because as is mentioned in article user would have 2 mailboxes and there could be problem with synchronization, so is there a way to direct these online apps to on-premise exchange? As we testing it out when i try to use online outlook i get error: Microsoft.Exchange.Data.Storage.UserHasNoMailboxException

    Hope this make sense.

  8. Our setup is AD, O365, on-prem(2016) using Azure AD.

    When we create a user in AD it will sync to O365, creating a user and mailbox but doesn’t create the user on-prem. This causes issues with system and copiers that point to the on-prem system to deliver emails.

    i have tried to create the account on O365 but that also will not flow to on-prem or even AD.

    Any ideas?

    • I should mention that I did try to set the proxy address which did create the user on-prem but emails still did not route to the users O365 mailbox. Copiers showed the mail was delivered but received undelivered emails from on-prem.

    • Hi Ryan,
      Could you specify how you create the new users? Please try creating a test on-prem user with the new-mailbox cmdlet and see if the user is present in AD afterwards.
      Creating a user in O365 will not sync it back to the on-prem environment – that is the default configuration.

    • I that did but really do not like to do it this way. Much easier to copy an AD user account will all the groups and settings.

      Thanks for your help.

  9. Hi Adam, I was searching for a solution to a problem I have and I keep getting directed to your page. In short, my problem is the 3rd scenario. 2 of my users have a local exchange mailbox and O365 mailbox. However, these users are admins and removing them will disable or break things in O365. So using the provided solution isn’t possible.
    What I would like to know is there a way to just disable or remove the local exchange mailbox and direct all mail traffic to O365? Keeping the local mailbox isn’t a big deal since we can export a pst file then import it into the O365 account.

  10. Hello Adam! Could you guide me in a particular case? I currently have a local domain and a domain in 365 that are called different, there is no synchronization between the two, the users of 365 are created manual and local too, now I am being asked to unify a single domain … to be called the same 365. What options do I have? Is there any way I can export users and passwords from Azure AD to a new local server that I configure with the name I want? thanks!

    • Hello Radamel,
      That is tricky. Azure AD Connect does not allow a sync from the cloud to the on-premises environment. So if you want to export users from Azure AD into the local AD, you would have to do it with PowerShell cmdlets. Mind that there is no PowerShell script to export passwords, so you will have to create temporary passwords in your target AD environment.
      I presume that you will also have to migrate mailboxes? To migrate them, I would use CodeTwo Exchange Migration. This software will create users in the target environment for you and migrate mailboxes from Office 365 to the on-premises Exchange in an easy way.

  11. Hi Adam, great article, thanks a lot!
    I work in a school as teacher and have an extra function there as admin of our local AD (windows Server 2012 R2) and our Office 365. Our setup is like this:
    Until a few years ago we had a Windows Server 2003 in the school with AD and Exchange. While the server still worked as AD, we moved our mail to Office 365 and I created users with mailboxes in Office 365.
    Later when got a new Windows 2012 R2 server for AD, it didn’t synch from the Office 365 to our local server, only the other way round, even with Azure (probably because I don’t know how to do it). So I had to create users in AD, and they are automatically synched with Office 365. I do that with new teachers and it works fine. But I would like to merge the “old” teachers in our system to avoid the synch-conflicts from Azure.
    Since we also use onedrive and sharepoint, I’m a little reluctant to change anyhthing that I don’t know the consequenses of. But with your guide I hope to end up with only one account for both the old and new users. Is that possible?

    • Please do let me know when you are able to do so. I was just thinking of the same situation and its resolution

    • Hi Michael,
      If I understand correctly, your situation is like the one I describe in the third scenario. The solution I propose (deleting the Office 365 user and recreating the mailbox with AAD Connect afterwards) is not perfect – you need to backup all Office 365 data (including Onedrive and SharePoint) for the user and re-assign permissions for their mailbox. It will be time-consuming and problematic, but will end with a fully merged user in both on-premises Exchange and Exchange Online.

  12. I have a on-premise AD and office 365 email (as well as Azure AD)

    on-premise ID: abc001@xyz.com
    office 365 mail: abc.def@xyz.com

    how do I sync/match this user with different username…? Is it possible?

    • You need to add proxyAdresses [Office 365 account id] in the attribute of the user located in Local Active Directory.

      SMTP:abc001@xyz.com
      smtp:abc.def@xyz.com

      or viceversa;
      SMTP:abc.def@xyz.com
      smtp:abc001@xyz.com

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*