If the User Profile Sync service is causing you constant headaches, here’s a mini howto for getting it work:

  • Keep things together – Stop all instances of the User Profile Service (UPS) and User Profile Sync Service (UPSS). If the UPSS is stuck in starting state, look for a One-Time job named User Profile Service provisioning (unprovisioning) job. My general recommendation is to have only one instance of the UPS running. You should also have only one instance of UPSS running in your farm!
  • Usually it’s a wise decision to start from scratch – This means to remove the User Profile Service Application (UPA) and get a new one. This of course means that all what you have synced so far will have to be synced again. Be warned!
  • Make sure your farm account is amongst the Local Administrators on the computer you wish the UPSS to be running on. Don’t forget to restart the SharePoint 14 Timer Service (or restart the whole box) after changing the group membership!
  • Make sure you don’t have remains of previous Sync, Profile or Social DBs.
  • Again make sure, all UPS and UPSS are stopped on all servers in your farm
  • Create a new UPA
  • Grab ULSViewer (get it from here) and set a filter to Category contains “profile” and start monitoring your ULS log on the box you want to start ULSS on.
  • Start ULSS – type your farm account password.
  • Watch ULSViewer for any problems

If your ULSS has started successfully and all your services are on the same box, don’t forget to do an IISRESET. If you miss this step, clicking the UPA in Manage Service Applications results in an unknown error with the ULS log containing:

UserProfileServiceUserStatisticsWebPart:LoadControl failed, Exception: System.IO.FileLoadException: The located assembly's manifest definition does not match the assembly reference.