SharePoint 2013 & 2016 - Manager and Assistant values swapped in User Profiles

Here’s one that was a problem in SharePoint 2013, was fixed, but never ported to SharePoint 2016, so we had to fix it again.

Consider the following scenario:

You are importing user profiles from Active Directory (AD).  This can happen using any of the profile import methods for either SharePoint 2013 or 2016.

  • 2013:
    • SharePoint Profile Synchronization (FIM Sync)
    • SharePoint Active Directory Import (AD Import)
  • 2016:
    • SharePoint Active Directory Import (AD Import)
    • External Identity Manager (MIM Sync)

You create profile property mappings to import both Manager and Assistant.
You run the Sync / Import and afterwards you find that some users show the incorrect values for manager and assistant.  “Incorrect” in this case can mean any of the following:

  • The values for Manager and Assistant are swapped.
  • Manager is blank and Assistant contains the managers name.
  • Assistant is blank and Manager contains the assistants name.

For example, in AD, user “Josh” has these values:
Manager = Jim
Assistant = Adam

After the Sync, Josh may view his profile and find that it says his manager is Adam and his assistant is Jim.

Cause:

In both SharePoint 2013 and 2016, this issue has the same root cause, which was a problem with one of the SQL stored procedures used to create the relationships between user, manager and assistant.

For SharePoint 2013, it was fixed in build 15.0.4659.1000 = ServicePack1 + October of 2014 cumulative update (CU).

For SharePoint 2016, this was fixed in build 16.0.4561.1000 = July 2017 public update (PU).

Resolution:

Upgrade your farm.

For SharePoint 2013, you can install any build at or newer than October 2014 CU.  However, since patching a SharePoint farm is not a trivial matter, I would recommend going much newer, like July of 2017 CU:  https://support.microsoft.com/en-us/help/3213569/

For SharePoint 2016, this has been fixed in what is currently the latest build, so that’s your only option:
https://support.microsoft.com/en-us/help/3213544  https://support.microsoft.com/en-us/help/3213543

More Info:

This issue is called out in the public KB article for the July 2017 update for SharePoint 2016:
https://support.microsoft.com/en-us/help/3213544/

After you use the SharePoint Active Directory import option (AD import) for a User Profile service application, the Assistant property's value is incorrectly set to the Manager property's value.

However, it doesn’t specify that it can also happen when using an external identity manager (like MIM 2016), and it only mentions one of the possible behaviors.

I have tested this for both AD Import and MIM Sync, and have experienced all of the behaviors I described above.  Which one you hit just depends on which value (manager or assistant) is processed first.

Note: In SharePoint 2016, when using external identity manager (like MIM 2016), the manager, assistant, and group membership references are processed after the sync / import by a timer job:
"<UPAName> - Updates Profile Memberships and Relationships Job"
(internal name: ExternalIdentityManagerMembershipsAndRelationshipsJob)

After you run an import / sync, you won't see the manager or assistant values updated until that timer job runs.

You can use a SQL query like this against your Profile database to quickly see your Manager and Assistant values and see if they line up:

 select upf.recordid, upf.ntname, upf.preferredName, pl.propertyname, upv.PropertyID, upv.PropertyVal, upv.SecondaryVal, upv.text
from upa.UserProfile_Full upf (nolock) 
join upa.UserProfileValue upv (nolock)on upf.RecordID = upv.RecordID 
join upa.PropertyList pl (nolock) on pl.PropertyID = upv.PropertyID
where upv.propertyid in (6, 21)
order by upf.ntname
  

Some more Keywords for Bing:
Manager assistant swap switch substitution
Forefront Identity Manager FIM
Microsoft Identity Manager MIM

User Profile Service Application UPSA UPA