In relation to my very first article, problems can occur. I had a question from a colleague, about a customer, who was using Office 365 and had a local AD. They where not using AADConnect, and would like to do so.
Challenge no.1, how to “match” the AD users with the Office 365 Cloud users? You can see more about how to do that in my first article here.
Matching up the users isn’t the biggest problem, the biggest problem is all the things that can go wrong, and you end up with sync problems, mails about UPN mismatch and so on.
I’ve come across this issue a few times before, and haven’t found one solution to the problem, but gathered information from 3-4 other articles and sites, mixed in a delicious cocktail of my own experience. That’s why I decided to write-up my own solution to the problem.
This is concerning the UPN mismatch, when an AD object has the same UPN and SMTP address as a cloud object. The mistake can happen for various reasons. The one reason I’ve seen the most, is when an AD object has been attempted synchronized, with the wrong UPN suffix (Office 365 will automatically give it the default UPN of firstname.lastname@example.org. Once you change the UPN to your public domain, locally and sync it, it will throw a UPN mismatch error in a mail to your admin account
And also in the portal ☹
Once this has happened, you will need to do a little bit of work to get the accounts merged.
I assume you are familiar with signing in to Office 365 via Powershell, you’ll need it in a minute 😊, if not, I’ve included the few steps to get going.
You need to have the Office 365 Powershell module and the sign in client. You can download both here
This is the simple logon “script” I use. Logon with your Global Admin credentials to your tenant.
$O365Cred = Get-Credential
Connect-MsolService –Credential $O365Cred
$O365Session = New-PSSession –ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $O365Cred -Authentication Basic -AllowRedirection
Next, import the Active Directory CMDLets
In my lab setup, I have AADConnect installed on a Domain Controller (This is now fully supported by Microsoft btw 😉)
Now, we are ready to go.
First of, if you have set up your AADConnect with OU filtering, your fine, if not, create a new OU, that is NOT synced with your tenant.
- Move the user you are having trouble with, to an OU that is not synced. In my case the user is Test User 5 (tu05)
- Force a sync
- Start-ADSyncSyncCycle -PolicyType Delta
- Your synced user should now be in the deleted folder in Office 365. You need to delete it from the recycle bin.
- Remove-MsolUser -UserPrincipalName email@example.com -RemoveFromRecycleBin
Next, we need to run a series of Powershell cmdlets, to extract the ObjectGUID from the AD user and change the ImmutableID of Office 365 user with the result.
- First of, we need to change the UPN of the cloud user, from firstname.lastname@example.org to the tenant domain email@example.com, if you don’t do this, you’ll receive an error, later on, when changing the ImmutableID.
- Set-MsolUserPrincipalName -UserPrincipalName firstname.lastname@example.org -NewUserPrincipalName email@example.com
- Next, we need to find the ObjectGUID of the AD user, convert it to an ImmutableID, and assign that ID to the Cloud user.
- $ADUser = “tu05“
- $365User = “firstname.lastname@example.org“
- $guid =(Get-ADUser $ADUser).Objectguid
- Set-MsolUser -UserPrincipalName “$365User” -ImmutableId $immutableID
- Before syncing up, you’ll need to change back the UPN of the cloud object, otherwise, you’ll be in the same problem state as before, but reversed 😉
- Set-MsolUserPrincipalName -UserPrincipalName email@example.com -NewUserPrincipalName firstname.lastname@example.org
So now, we have ”prepared” Office 365 to Hard Match the AD user with the Cloud user, but before we do so, we need to change a few things on the AD user.
Start of by locating the user in the OU that is not synced with O365
- Make sure the E-mail is correct on the “General” fan of the user
- Next, go to “Account” and change the UPN, change it to your public / e-mail domain name
- Lastly, move the user to the original OU, and force a sync (or wait for the magic to happen, New default sync is 30 min.)
- Start-ADSyncSyncCycle -PolicyType Delta
Be patient, it can take a while for the change to show up.
Voila, After synchronizing
Your AD user and your Cloud user have been merged, and everybody is happy 😊