In SharePoint 2013 there are a couple ways to configure how user information is updated from Active Directory:
- SharePoint Profile Synchronization does just that, if changes are made in AD they update SharePoint and if the user is updated in SharePoint it updates AD. In theory this works great but some network administrators want tighter control of AD, or the number of users in an organization is so large that a strain is put on SharePoint during this Sync process.
- SharePoint Active Directory Import - This is a one way update from AD to SharePoint...period. Any changes made in AD are then sent to SharePoint and can be seen in the users profile.
Within SharePoint there is also a hidden list called "User Information List" located at "/SiteName/_catalogs/users/simple.aspx" that will record all the users when they access the site. This information is used when you click on a persons name used in a PeoplePicker control or the Created By or Modified By metadata of an item.
SharePoint does not use the information from User Profile Service for this because if a user leaves the organization, the User Profile is deleted during the sync process. SharePoint needs to preserve the historical information, which is why this list was created and maintained.
This is all well and good until a user change happens such as their name, title, manager etc...all the attributes that are in User Profile Service and synced from AD The "User Information List" does not receive changes from User Profile Service when this happens and the two quickly get out of sync.
A couple ways to fix the issue:
- You can run a Set-SPUser PowerShell command using the -SyncFromAD parameter but this will only update the name and E-mail in the User Information List. If you want to update any other attributes from AD/User Profile this won't work.
- Run a PowerShell script that will loop through all the users in the User Information List, which will the query the User Profile Service to get the updated attributes. This will update as many attributes from the User Profile Service as you want, which is far better than the Set-SPUser method.