La synchro SharePoint / Active Directory échoue sur l’évènement 6801

De temps à autre, il se peut que la synchronisation entre SharePoint 2010 et Active Directory cesse de fonctionner. Dans le cas que nous analysons ici, les symptômes sont les suivants :

  • l’observateur d’évènements (Applications) affiche des évènements 6801, 6803 et 6110 dans cet ordre, plusieurs fois de suite.
  • le gestionnaire du Forefront Identity Manager (normalement dans C:\Program Files\Microsoft Office Servers\14.0\Synchronization Service\UIShell\miisclient.exe) affiche des synchronisations avec le statut stopped-extension-dll-exception.
  • et bien sûr, les données ne sont plus échangées correctement entre AD et SharePoint.

La piste nous est donnée par l’évènement 6801.

Diagnostic

En effet l’évènement affiche les informations détaillées suivantes :

Log Name:      Application
Source:        FIMSynchronizationService
Date:          19/01/2015 15:48:07
Event ID:      6801
Task Category: Server
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      XXX.XXX.XXX.XXX
Description:
The extensible extension returned an unsupported error.
 The stack trace is:
 
 "System.Net.WebException: The remote server returned an error: (404) Not Found.
   at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
   at System.Net.WebClient.DownloadData(Uri address)
   at Microsoft.Office.Server.UserProfiles.ManagementAgent.ProfileImportExportExtension.DownloadPictures(ProfileChangeData[] profiles)
   at Microsoft.Office.Server.UserProfiles.ManagementAgent.ProfileImportExportExtension.Microsoft.MetadirectoryServices.IMAExtensibleFileImport.GenerateImportFile(String fileName, String connectTo, String user, String password, ConfigParameterCollection configParameters, Boolean fFullImport, TypeDescriptionCollection types, String& customData)
Forefront Identity Manager 4.0.2450.47"
Event Xml:
...

La clé, c’est l’erreur 404. Elle nous indique que le mécanisme de synchronisation a essayé d’accéder à une URL, sans succès. Reste à trouver laquelle. Pour cela, direction les logs IIS (par défaut dans C:\inetpub\logs\LogFiles\ID-de-My-Sites).

Si vous ne connaissez pas l’ID de votre site My Sites par coeur (bon, ok, moi non plus), ouvrez la console IIS, sélectionnez votre site “My sites” et cliquez sur Paramètres avancés… (Advanced Settings dans ma capture d’écran). L’ID se trouve affiché dans l’écran. Vous n’avez plus qu’à trouver le numéro correspondant dans le dossier de logs.01.FindSiteIDUne fois trouvé le bon dossier de logs, ouvrez le dernier fichier de logs et faites une recherche sur 404. Vous devriez trouver une (ou peut-être plusieurs !) lignes telles que:

2015-01-19 02:21:49 192.168.10.50 GET /User+Photos/Profile+Pictures/domaine_utilisateur_LThumb.jpg - 94 domaine\compte-de-service 192.168.1.10 - 404 0 0 31

Prenez note du nom de l’utilisateur : la synchro AD pense qu’une image est présente sur le site pour cet utilisateur, mais il ne la trouve pas. La réponse du système est excessive puisque c’est cette simple petite erreur qui bloque toute la synchro !

Résolution

La résolution est simple : connectez-vous à la Central Admin SharePoint, allez dans Manage service applications, User Profile Service Application, Manage User Profiles. Vous pouvez alors rechercher l’utilisateur que nous avions identifié précédement, puis l’éditer (Edit My Profile).02.FindSiteIDVous allez voir que l’image de l’utilisateur n’est pas affichée correctement, ce qui confirme le problème. Pour résoudre notre problème, il suffit de supprimer l’image, puis d’enregistrer le profil.03.RemovePicture

Si vous y retournez, le profil aura à nouveau une apparence normale.04.RemovePicture2Bien entendu, si vous avez plusieurs utilisateurs concernés, répétez l’opération autant de fois qu’il le faut.

Pour valider le bon fonctionnement, relancez une synchro complète depuis Manage service applications, User Profile Service Application, Start Profile Synchronization, Start Full Synchronization.

La synchronisation devrait alors à nouveau tourner sans erreur !