Recherche SharePoint Online : associer les propriétés de profil manquantes

SharePoint Online : notre socle intranet
Nous disposons chez Cellenza d’un abonnement Office365 incluant SharePoint Online. Alors pourquoi ne pas en profiter pour construire notre plateforme Intranet “maison” ?
SharePoint 2013 offre de nombreux API pour récupérer simplement les données contenues dans l’outil. L’ API de recherche REST permet d’exploiter la recherche d’entreprise, notamment pour requêter les personnes qui disposent d’un profil. Parfait pour construire un annuaire, un trombinoscope ou autre application qui se mettra automatiquement à jour avec l’arrivée d’un nouveau collaborateur.
Une joie de courte durée
En nous rendant dans l’interface d’administration du schéma de recherche nous nous sommes vite rendu compte qu’il était impossible de mapper des propriétés gérées sur des propriétés analysées pour la catégorie “Personne”. Certaines propriétés gérées sont effectivement déjà créées et exploitables (c’est le cas de FirstName pour le prénom), mais il est apparemment impossible de mapper une propriété gérée “Manager” par exemple. Seules les propriétés analysées correspondantes à nos colonnes de sites apparaissent dans l’interface dédié. Les autres propriétés, notamment de la catégorie ‘personnes’, n’apparaissent pas.
Autre problème, certaines des propriétés gérées prédéfinies ne permettent pas le tri.
Après de nombreux échanges téléphoniques avec le support Microsoft, ils nous ont confirmé qu’il s’agissait d’un bug et qu’un patch était en préparation… sans plus d’information quant au planning.
Mais ne nous laissons pas abattre
Si vous êtes familiers avec la recherche SharePoint vous savez déjà qu’elle s’appuie sur la notion de propriété gérée pour sélectionner, filtrer ou trier un résultat de recherche. Par exemple, l’url suivante entrée dans votre navigateur ramènera le nom/prénom de l’ensemble des profils de personnes triés par leur prénom : http://adresse_de_ma_collection_de_site/_api/search/query?queryText=’*’&sourceid=’b09a7990-05ea-4af9-81ef-edfab16c4e31’&selectproperties=’firstname,lastname’&sortlist=’firstname:ascending’” (sourceId étant la source de recherche correspondant aux personnes)
S’il manque des personnes, c’est probablement qu’il faut attendre le passage de la prochaine indexation. Malheureusement Microsoft ne communique pas les informations de fréquence (comptez ~24h pour une indexation ‘Full’).
Dans notre cas, nous souhaitions ramener la propriété ‘Manager’ et trier les personnes par nom de famille. ‘Manager‘ n’existe pas et ‘Lastname‘ ne permet pas le tri… alors comment faire ?
Par les propriétés gérées il vous faudra passer
Microsoft a quand même bien prévu le 2ème cas (celui du tri).
Si vous consultez la liste des propriétés gérées disponible, vous trouverez RefinableString00, RefinableDate00… et toutes ces propriétés sont triables. Il suffirait donc de les associer à une propriété gérée pour pouvoir trier. Mais quand vous essayez d’ajouter un mapping vers une propriété gérée, aucune propriété de personne n’est proposée.
L’astuce consiste à rechercher une propriété gérée existante (en l’occurrence ‘LastName’). Vous constaterez qu’apparaît sur la droite la propriété gérée déjà associée et que vous pouvez la sélectionner. Vous arrivez alors sur l’écran SharePoint familier pour l’associer aux propriétés gérées… par exemple à RefinableString00, qui sera triable.
Et quid du Manager ?
Il n’existe pas par défaut de propriété gérée associée au Manager. En apparence il n’y a aucune façon de sélectionner la propriété gérée correspondante.
Il existe malgré tout une façon d’associer cette propriété :
- recherchez la propriété “Department“
- dans les propriétés analysées mappées, cliquez sur “People:Department”. Vous serez redirigé vers un lien de la forme https://site_admin_sponline/_layouts/15/searchadmin/ta_crawledproperty.aspx?level=tenant&property=urn%3Aschemas-microsoft-com%3Asharepoint%3Aportal%3Aprofile%3ADepartment&propertyset=00110329-0000-0110-c000-000000111146
- Remplacez Department par Manager dans l’URL. Vous serez alors redirigé vers la page d’association de la propriété analysée Manager
- Ajoutez un mapping vers la propriété gérée voulue, par exemple RefinableString00
- Idéalement, définissez un alias sur votre propriété gérée, ce qui vous permettra d’utiliser Manager dans vos requêtes de recherche
Il ne reste plus qu’à attendre une nouvelle indexation complète (environ 24h) puis de relancer une recherche. La propriété “Manager” devrait remonter correctement.
A priori cette astuce doit pouvoir fonctionner également pour d’autres propriétés de profil.