SharePoint: Utiliser les métadonnées pour la sécurité

Une organisation rencontrait un problème de diffusion de documents assez classique. Cette organisation assure le rôle de diffuseur de contenu auprès d’autres organismes officiels, via un site extranet SharePoint. Une fois qu’un utilisateur d’un organisme étranger s’est identifié, il accède à ses documents.

Les métadonnées sont souvent utilisées pour faciliter la recherche ou pour catégoriser des documents afin d’opérer des filtres.

Un autre usage méconnu (ou peu utilisé) concerne la sécurité.

Modèle de sécurité standard de SharePoint

En effet, l’organisation mettait à disposition des documents qui sont communs à certains organismes et qui ne doivent pas être accessibles à tous. Afin de répondre à ce problème, le responsable de l’organisation avait décidé de s’appuyer sur le modèle de sécurité standard de SharePoint.

Pour cela, il avait mis en place différentes bibliothèques SharePoint pour les différents utilisateurs avec des droits spécifiques.

La gestion de plusieurs bibliothèques de documents devenait complexe et la maintenance des autorisations de niveau était difficile. De plus, certains documents furent volontairement dupliqués dans plusieurs bibliothèques pour résoudre rapidement des cas complexes.

Nouveau modèle de sécurité basé sur les métadonnées

Cette solution étant inacceptable, un nouveau modèle de sécurité basé sur l’utilisation de métadonnées a été proposé.

En utilisant ce nouveau modèle, il peut déposer de nouveaux documents dans SharePoint avec des métadonnées qui spécifie simplement les organismes qui peuvent y accéder: les niveaux de permissions accordés au document sont déduits des métadonnées des documents. Ce qui permet de réduire aussi le nombre de bibliothèque de documents à gérer.

Dans de nombreux cas, les métadonnées du document permettent d’indiquer qui peut y avoir accès. Toutefois, si vous avez l’intention d’utiliser les métadonnées pour la sécurité, vous devez planifier avec soin le type de métadonnées à collecter.

SharePoint: le concentrateur ne publie pas les modifications d’une colonne de site

En complément de l’article sur les métadonnées gérées, j’ai pensé qu’un exemple réel de résolution de pannes serait utile.

Lors d’un test préparatoire, l’équipe rencontre le problème suivant: le concentrateur de métadonnées gérées ne publie pas les modifications d’une colonne de site précise.

La colonne de site s’intitule Type de document. Elle est définie sous forme d’une métadonnée gérée.

La notion de type de documents étant suffisamment large,  cette colonne de site est présente dans tous les sites et collections de sites.

Le rôle du concentrateur est de publier les types de contenu sur les collections de sites qui ont été abonnées à ce service. Le concentrateur est piloté à travers l’application de services Métadonnées gérées.

Le concentrateur ne sait répliquer que des types de contenu. La colonne de site Type de document avait donc été rattachée préalablement à un type de contenu.

Journal des erreurs

Le journal des erreurs des applications de services de type de contenu fournit le détail des explications en cas de problèmes.

Journal des erreurs des métadonnées

Cette liste permet de connaître les erreurs de publication de type de contenu pour tous les sites d’abonnés.

L’ouverture du journal affiche la liste de toutes les erreurs liées aux types de contenu.

Erreurs des métadonnées

L’ouverture de l’erreur qui concerne la colonne de site Type de document, renseigne sur le problème rencontré.

Détail d'une erreur des métadonnées

Dans cet exemple, il existe un conflit de nom interne (« Type_x0020_de_x0020_document »). Le nom interné étant unique, la réplication ne peut pas se faire.

Un administrateur avait créé manuellement une colonne de site portant le même nom sur le site destinataire. Après suppression de cette colonne, la réplication a été relancée et elle a pu se faire sans erreur.

Comme cette erreur est assez répandue, une vérification périodique du journal des erreurs des applications de services de type de contenu permet de les identifier puis de les résoudre rapidement.

SharePoint: Utiliser des métadonnées à la place des dossiers

L’habitude de hiérarchiser les documents

Sur le disque dur ou le réseau, les fichiers sont généralement stockés dans des dossiers imbriqués les uns dans les autres. En effet, durant des années, nous avons été habitués à organiser nos fichiers dans des arborescences, comme dans l’exemple suivant :

  • Budgets
    • 2014
      • Investissement
        • Projet ABC
          • Montant priorité 1
            • Document 001.docx
            • Document 002.pptx
          • Montant priorité 2
        • Projet DEF
      • Fonctionnement
        • Montant priorité 1
        • Montant priorité 2

Dans ce schéma, les « … » représentent des documents.

Certains d’entre nous sommes tellement habitués à travailler ainsi, qu’il est même souvent difficile d’imaginer une autre façon de classer ses documents.

Toutefois cette organisation des données est rigide et pose de nombreux problèmes en termes de classement.

En effet, l’organisation du disque dur ou d’un partage réseau nécessite d’être comprise par tous ceux qui vont venir déposer des documents: Comment s’assurer que les documents sont classés au bon endroit ?

De plus, l’arborescence est organisée en thèmes et sous-thèmes, etc. Toutefois, il arrive fréquemment qu’un fichier concerne des sujets transversaux.

Cette façon de faire peut se justifiée dans une organisation où:

  • il y a peu de documents,
  • et/ou une seule personne se charge d’alimenter la hiérarchie et elle est très organisée,
  • et/ou le nombre de niveaux est très limité,
  • et/ou il y a peu d’échanges de documents.

Dans tous les autres cas, elle pose de sérieux problèmes en particulier pour la recherche de documents. Hors, la découverte de l’information est un processus couteux en temps

Recherche de documents dans une structure hiérarchique

Un affichage de dossiers et de sous-dossiers est un moyen vertical pour trouver l’information recherchée.

Vous trouvez le document grâce à un chemin vertical défini par une autre personne. Ce chemin n’est peut être pas celui que vous aviez en tête. Ou bien, il peut correspondre à une logique de recherche qui n’est pas celle de vos besoins du moment.

Typiquement, si vous avez besoin de connaître tous les documents des montants de priorité 1 de tous les projets pour 2014, cela vous oblige à parcourir chaque sous-dossier pour trouver les documents relatifs aux budgets.

Même si c’est faisable, c’est une perte de temps et une source d’erreur en cas d’oubli.

Cette difficulté n’est pas propre à la recherche documentaire. Les opérationnels cherchent à avoir un détail relativement précis alors que les directions cherchent une vision plus synthétique.

Remarques sur les optimisations de la vue verticale

Lorsque le nombre de documents électroniques explose ou lorsque l’arborescence hiérarchique devient très détaillée, certains ont imaginés des solutions souvent astucieuses.

Par exemple, les dossiers sont préfixés avec un numéro pour respecter un ordre de classement:

  • 10-Projet ABC
  • 20-Projet DEF
  • etc.

Cette astuce facilite aussi la recherche visuelle car à l’intérieur d’un dossier, les sous-dossiers sont toujours dans le même ordre.

Un autre astuce consiste à stocker dans le nom des documents des données normalisées: nom de l’auteur, type de document, etc. Par exemple: « devis client machepro 13.05.2014.docx »

Certains vont encore plus loin en cherchant à « normaliser » le nom des documents. Par exemple en préfixant le nom du document avec la date de l’événement au format AAAA_MM_JJ suivi du lieu de l’événement:

  • 2013_12_12_Paris_Présentation commerciale
  • 2013_12_19_Nantes_Présentation aux partenaires
  • etc.

Il est normal que les concepteurs de ses systèmes les trouvent « efficaces voire efficients ». Cependant les audits documentaires opérationnels démontrent une distorsion parfois considérable et toujours insoupçonnée.

Plutôt que de se plier aux diktats d’une règle qu’ils ne comprennent pas ou qui les embêtent, les utilisateurs préféreront gérer une partie de leurs documents dans leur coin: disque local, boîtes aux lettres Exchange, clefs USB voire stockage en ligne gratuit comme Google Docs, Dropbox, etc.

Cette réalité ne doit pas être méconnue, y compris lors de la mise en place de SharePoint. Tout doit donc être fait pour la minimiser.

Doublons de fichier

L’utilisation de dossiers pour structurer les fichiers pourrait fonctionner lorsque ces fichiers sont du ressort d’un seul dossier. Toutefois, certains fichiers relèvent de plus d’un dossier.

Par exemple, un document sur le développement dans SharePoint, doit-il être classé dans le dossier SharePoint ? ou le dossier Développement ?

La solution générale est de créer une copie du document et donc de créer des doublons, ce qui provoque les problèmes suivants:

  • il n’est pas évident de savoir quelle est la dernière version,
  • Il n’est pas évident d’identifier la version qui fait autorité,
  • Il n’est pas évident de trouver le propriétaire du document,
  • Il est nécessaire de prévoir un stockage supplémentaire pour le doublon et ses sauvegardes.

Métadonnées

Un document Word possède un titre, une date de création, de modification, un auteur, etc. Toutes ces informations sont appelées propriétés du document ou métadonnées.

Littéralement, une métadonnée est une « donnée sur une donnée ». Son rôle est de donner des informations supplémentaires. dans le monde documentaire, les métadonnées caractérisent un document.

Les caractéristiques d’un document ne s’arrêtent pas au titre ou à son auteur. Si vous prenez l’exemple d’un compte-rendu, celui-ci est caractérisé par des données comme l’émetteur, les destinataires, l’objet, la date, etc.

Bien évidemment, toutes ces informations figurent déjà dans le compte-rendu lui-même, en plus du contenu.

C’est tout le problème. Lorsque les caractéristiques d’un document sont mélangées avec le contenu du document, il devient quasiment impossible de les extraire pour les exploiter.

Tous les types de documents peuvent être caractérisés: devis, factures, devis, notes de frais, plans, etc.

Intérêt des métadonnées dans SharePoint

SharePoint affiche les documents de ses bibliothèques sous forme de liste. Il utilise des colonnes pour fournir des informations supplémentaires sur les documents car les métadonnées sont mises en oeuvre sous forme de colonnes dans les bibliothèques et les listes.

Par exemple, 3 métadonnées ont été rajoutées à une bibliothèque de documents SharePoint. Ces métadonnées sont : Émetteur, Date émission et Destinataires.

bibliothèque de documents SharePoint avec des métadonnées

Permanence des métadonnées

Lorsqu’un document d’une bibliothèque est déplacé dans une autre bibliothèque qui a les mêmes colonnes, il garder ses métadonnées.

Les fichiers Office disposent d’un mécanisme encore plus puissant car les métadonnées des documents Office, qui sont stockés dans SharePoint, sont associées au document lui-même.

Par exemple, lorsque vous transmettez une copie d’un document Office qui se trouve dans une bibliothèque SharePoint, à laquelle sont associées des métadonnées, la copie du document possède ces métadonnées. Elles sont visibles dans les propriétés du document Word.

Permanence des métadonnées dans SharePoint
Exemple de la restitution d’une valeur d’une métadonnée (« Emetteur ») dans les propriétés d’un document Word 2007

Filtrer les documents

D’un point de vue pratique, les métadonnées permettent de filtrer rapidement les informations pour pouvoir répondre rapidement à des demandes comme:

  • Donnez-moi la liste de tous les comptes-rendus reçus par la COMPTA.
  • Je veux la liste des comptes-rendus émis entre le 6/2 et le 9/2 par la DRH à destination de la DOI.

Un filtre simple peut être mis en place en cliquant sur l’entête de la colonne de la métadonnée dans la bibliothèque.

La manipulation pour obtenir tous les comptes-rendus reçus par la COMPTA est conviviale:

Filtre des métadonnées
Mise en place d’un filtre pour ne faire apparaître que les comptes-rendus reçus par la COMPTA

Le résultat du filtre:

Filtre des métadonnées
Liste des comptes-rendus filtrés pour la COMPTA

Ce filtre est temporaire: si vous quittez l’écran en cours et que vous y revenez, le filtre aura disparu. Si vous souhaitez avoir un filtre permanent, ou plus complexe, vous devez créer un nouvel affichage.

Trier les documents

Dans une bibliothèque SharePoint de documents, les opérations de tris sont faites grâce à un simple clic sur l’entête de la métadonnée.

Ce tri est temporaire: si vous quittez l’écran en cours et que vous y revenez, le tri aura disparu. Si vous souhaitez avoir un tri permanent, ou un tri en cascade, vous devez créer un nouvel affichage.

Regrouper les documents

Le regroupement de documents sur la base d’une métadonnée est possible en créant un nouvel affichage.

Par exemple, si vous souhaitez avoir la liste des documents regroupés par émetteur:

Regroupement des métadonnées dans SharePoint

Si la métadonnée est de type Choix (avec des cases à cocher) qui autorise plusieurs sélections, il n’est pas possible de l’utiliser pour un regroupement. C’est le cas de la métadonnée Destinataires de notre exemple.

Dans ce cas, vous pouvez utiliser les filtres de touche afin de limiter dynamiquement la liste des documents.

Utilisation des filtres de touche

Éliminer les dossiers

Bien qu’il soit possible de créer des dossiers dans les bibliothèques de documents SharePoint, ce n’est pas recommandé.

La raison tient à la rigidité du classement sous forme de dossiers. Utiliser les dossiers dans les bibliothèques SharePoint c’est prendre le risque d’avoir à nouveau les problèmes présentés plus haut.

Généralement, il est possible de remplacer la notion de données par une métadonnée équivalente.

Au lieu de …. Essayez ….
Un dossier pour chaque projet Une métadonnée appelée Nom du projet
Un dossier pour chaque mois Une métadonnée appelée Date du rapport
Un dossier pour chaque personne Rien. SharePoint a déjà une métadonnée Créé par de sorte que vous saurez toujours qui a créé un document
Un dossier pour chaque application Une métadonnée gérée appelée Application avec une liste de valeurs standard que vous pouvez maintenir de façon centralisée

Pour aller plus loin

SharePoint dispose de nombreux mécanismes pour simplifier la gestion des métadonnées, afin de répondre aux organisations les plus complexes.

Parmi les plus courants, vous avez à votre disposition: les types de contenu, les métadonnées gérées, les ensembles de documents, les bibliothèques de remise, etc.

SharePoint : les métadonnées gérées n’apparaissent pas pour les utilisateurs

Les utilisateurs ne voient pas les valeurs des métadonnées gérées des documents des bibliothèques. Ils ne voient pas non plus les valeurs des métadonnées gérées des éléments des listes. Tous ces utilisateurs ont des droits de lecture ou de collaboration, voire de conception, sur la totalité des sites concernés.

L’administrateur de la collection de sites continue à voir et manipuler les valeurs sans difficulté.

Ce comportement est attendu car il est du à une limitation volontaire, dictée par des choix de sécurité.

Par défaut, les utilisateurs ne peuvent pas voir les valeurs attribuées aux colonnes de métadonnées gérées d’entreprise ou mots-clés dans les listes ou des bibliothèques. Toutefois, les administrateurs de collections de sites sont en mesure de voir ses valeurs.

Lorsque la taxonomie est mise en place, les métadonnées caractérisent les documents en fournissant des informations supplémentaires. Ces informations peuvent être parfois suffisamment importantes pour qu’elles n’apparaissent pas à la vue de tous. Par exemple, un laboratoire pharmaceutique qui travaille sur un projet d’une nouvelle molécule ne veut pas que les personnes étrangères au projet récolte la moindre information dessus.

C’est la raison pour laquelle les utilisateurs ne voient pas systématiquement les métadonnées.

Dans la pratique, ce comportement est lié aux autorisations de la liste cachée TaxonomyHiddenList.

Cette liste met en cache l’essentiel des termes gérés et les mots clés pour une recherche rapide, plutôt que de devoir également interroger la base de données de métadonnées gérées.

Pour accéder à la liste, pointez votre navigateur sur:

http://sharepoint/Lists/TaxonomyHiddenList

Accédez aux autorisations de la liste et ajoutez « AUTORITE NTUtilisateurs authentifiés » avec un accès en lecture pour autoriser tous les utilisateurs authentifiés de Windows.

TaxonomyHiddenList

SharePoint: Métadonnées gérées

Lors de la mise en place de SharePoint, la planification de la taxonomie est une étape cruciale.

Une fois que le référentiel de données est défini, créé et alimenté, il reste à définir les méthodes d’accès à ces données qui doivent être simples et conviviales.

La réponse de Microsoft consiste à s’appuyer sur l’application de services des métadonnées gérées de SharePoint.

C’est un service qui permet aux organisations de définir leurs structures de métadonnées et celles qui sont disponibles dans SharePoint. Les utilisateurs peuvent naviguer rapidement dans l’arborescence pour attribuer des métadonnées pertinentes associées au contenu. Le service de métadonnées peut être utilisé pour fournir des métadonnées dans plusieurs fermes de l’organisation.

Toutefois, le référentiel de données a été créé dans les organisations, bien avant l’arrivée de SharePoint et l’application de services des Métadonnées gérées. Aussi, une proposition simple d’alimentation automatisée des métadonnées gérées est vue à la fin de l’article.

Saisies assistées

L’utilisation du magasin de métadonnées gérées permet de faire des saisies assistées. Par exemple, si vous avez défini la taxonomie suivante dans les métadonnées gérées:

Arborescence de la taxonomie des métadonnées gérées

Une liste Equipements est créée avec les 3 colonnes suivantes :

  • Lots: champ Titre renommé
  • Electro-Ménager: colonne de type Métadonnées gérées qui pointe sur l’ensemble de termes ‘Blanc’
  • Meubles: colonne de type Métadonnées gérées qui pointe sur l’ensemble de termes ‘Brun’

Lorsque l’utilisateur débute une saisie dans le champ Electro-Ménager, les valeurs correspondantes s’affiche.

Saisie assistée avec les métadonnées gérées

Il est aussi possible d’avoir la liste de toutes les valeurs en cliquant sur l’icône en forme de double étiquettes:

Liste de toutes les valeurs d'un ensemble de termes

Provisionnement des Métadonnées gérées

La création de l’application de services des métadonnées gérées peut se faire à l’aide de l’interface graphique utilisateur ou via PowerShell. L’utilisation de PowerShell est incontestablement plus souple, plus rapide et plus puissante. Tuoutefois, pour des raisons purement pédagogiques, vous le ferez avec l’interface graphique.

Allez dans l’administration centrale de SharePoint 2010: Central Administration > Manage service applications > New  (dans le ruban) puis renseignez les champs:

Création de l'application de services des métadonnées gérées

Une fois que l’application de service est créée, il est possible d’accéder aux autres paramètres.

Pour provisionner l’application de services des métadonnées gérées, cliquez simplement dessus: la création de la taxonomie est simple et intuitive grâce à l’utilisation du clic droit.

Par contre, n’oubliez pas d’indiquer que votre compte est administrateur du magasin de termes, sinon vous ne pourrez rien faire. Pensez aussi éventuellement à indiquer la langue par défaut.

Provisionnement du magasin de termes des métadonnées gérées

Les langues s’ajoutent grâce aux pack de langues SharePoint.

Concentrateur de type de contenu

Lors de la création, l’assistant demande de renseigner la zone intitulée Content Type hub.

Le Content Type Hub permet de partager les types de contenu avec les autres collections de sites de la ferme ou d’autres fermes.

Autrement dit, vous définissez une seule fois vos types de contenu sur une collection de sites quelconque (par exemple, http://formation).

Allez dans les paramètres de la collection de sites qui servira à publier les types de contenu. Dans ses paramètres, cliquez sur Fonctionnalités de la collection de sites et recherchez la fonctionnalité intitulée Concentrateur de syndication de type de contenu. Activez cette fonctionnalité:

Fonctionnalité Concentrateur de syndication de type de contenu

Ensuite, vous choisissez les types de contenu que vous souhaitez publier sur d’autres collections de sites.

Par exemple, si vous voulez partager le type de contenu Paris Core Columns, allez dans ses paramètres et cliquez sur Gérer la publication de ce type de contenu:

Paramètres d'un type de contenu

Ensuite, cliquez sur le bouton OK pour valider la publication.

Publication d'un type de contenu

Si vous apportez des modifications à ce type de contenu (ajout d’une colonne, etc), pensez à le republier manuellement.

Afin d’actualiser les sites qui sont abonnés à ce type de contenu, vous devez le demander explicitement. Pour cela, allez dans les paramètres d’administration de la collection de sites qui héberge les types de contenu à publier:

Journaux

Cliquez sur le lien Publication de type de contenu et cochez la case Actualiser tous les types de contenu publiés lors de la prochaine mise à jour.

Publication de type de contenu

Sous la section Concentrateurs s’affiche la liste de tous les types de contenu qui doivent être publiés: Paris Core Columns, Nantes Core Columns, etc.

Erreurs liées aux métadonnées gérées

Si la publication ne s’effectue pas correctement, vérifiez le journal des erreurs de publication de type de contenu.

Vous pouvez aussi vérifier un autre journal: le Journal des erreurs des applications de services de type de contenu. Ce journal se trouve dans les paramètres d’administration de la collection de sites qui héberge les types de contenu à publier.

JournauxIl donne des détails sur des dysfonctionnements éventuels des applications de service des métadonnées gérées.

Un problème souvent rencontré concerne la création d’un type de contenu, ou d’une colonne de site, dans une collection de site cible et qui porte le même nom qu’un type de contenu (ou une colonne de site) publié.

Compte-tenu de la diversité des causes possibles, un autre article viendra compléter celui-ci pour exposer des cas d’erreurs liées aux métadonnées gérées.

Import dans le magasin de données

Lorsqu’il existe déjà un référentiel « maison » de données, il faut imaginer une solution pour alimenter le magasin des métadonnées de SharePoint.

Il est possible d’alimenter le magasin de données à l’aide d’un fichier au format CSV. Un exemple de fichier est donné par SharePoint dans les propriétés (« page d’accueil ») de l’application de service des métadonnées gérées.

Toutefois, cela n’est possible que ponctuellement et ce n’est pas envisageable dans une véritable organisation.

Une autre solution consiste à développer avec Visual Studio un job SharePoint pour le faire systématiquement. Un développeur expérimenté peut le faire en 4/5 jours selon la complexité de la tâche.

Une dernière solution privilégie la simplicité avec PowerShell.

Le référentiel de données existant produit des fichiers au format texte et encodés en UTF-8. Ces fichiers contiennent toutes les valeurs de listes en respectant le formalisme attendu par SharePoint.

Ensuite, grâce au travail de Vlad Catrinescu, un petit script PowerShell et une tâche planifiée permet d’automatiser l’import.

Le fichier ZIP est fourni avec un exemple complet pour importer des données (fictives).

Metadata.zip

Recherche sur des métadonnées créées par l’utilisateur

Dans SharePoint 2010, un utilisateur souhaite faire une recherche du type : « Je cherche dans le projet Audit tous les documents en anglais qui contiennent le mot site dont le niveau de confidentialité est Tres-secret » à partir de l’écran de recherche avancée.

L’écran de recherche avancée est une page standard d’un site créé à partir du modèle de site Centre de recherche de base.

Les notions de projet, langue et confidentialité sont des propriétés des documents. Elles sont gérées sous forme de métadonnées dans un type de contenu spécifique.

Par ailleurs, l’utilisateur est un fervent adepte du no-code: tout doit être fait par paramétrage, sans jamais développer un programme, même un JavaScript !

L’idée retenue est donc de jouer sur les paramètres des fichiers XML de la configuration de la recherche de SharePoint 2010. Ces fichiers XML sont facilement accessibles pour l’administrateur. Celui-ci n’est pas obligé d’aller « fouiller » dans les abscons web.config.

Avant de continuer prenez connaissance de l’article sur le principe de fonctionnement de la recherche SharePoint 2010, qui présente les notions de propriétés analysées (« crawled properties ») et de propriétés gérées (« managed properties »).

La première étape consiste à créer les colonnes de sites et le type contenu.

Création d’un type de contenu

Le type de contenu nommé Paris Core Columns et de type de contenu parent Document est créé.
type de contenu nommé Paris Core Columns
La colonne de site nommée Projet et de type choix est créée avec les valeurs: Audit, Gouvernance, Migration, Performances.

La colonne de site nommée Restriction et de type choix est créée avec les valeurs: Tres-secret, Confidentiel, Restreint, Public.

Ces colonnes, ainsi que les colonnes existantes Auteur, Objet et Langue, sont rattachées au type de contenu Paris Core Columns.
Colonnes des type de contenu nommé Paris Core Columns
Le type de contenu est associé à une bibliothèque nommée Docs (par exemple). C’est le type de contenu par défaut.

Alimentation en documents

Pour que l’indexation fonctionne, il faut déposer des documents dans la bibliothèque Docs. Cette étape est primordiale et doit se faire avant même le paramétrage de la recherche à cause du fonctionnement de l’indexation. En effet, pour pouvoir associer une propriété gérée à une propriété analysée, celle-ci doit être remontée par le programme d’indexation (mssearch.exe). Hors, celui-ci ne peut le faire que s’il existe des documents qui exposent ces propriétés analysées.

Par ailleurs, pour tester convenablement la recherche il est nécessaire d’imaginer les requêtes qui seront faites.

Dans notre cas, les requêtes vont porter sur les critères du type de contenu: Titre, Nom, Auteur, Objet, Projet, Langue, Restriction.

Soit 7 critères, auxquels il faut rajouter la date de dernière modification. La date permet de répondre aux requêtes du type « tous les documents de la semaine dernière ». Les 8 critères donnent 255 combinaisons possibles (2 puissance 8 -1), sans compter le contenu des documents !

Dans la pratique, il est impossible d’avoir un jeu d’essai pour tous les cas possibles. Notre jeu de documents sera donc constitué d’environ 50 documents avec des propriétés différentes.

Vous pouvez accélérer l’indexation en la forçant via la console d’administration centrale > Application Management > Manage service applications > Application de service de la recherche > Content source puis sur la source de contenu : Start Incremental Crawl.

L’indexation incrémentielle est très rapide. Les utilisateurs se plaignent parfois de la lenteur supposée de l’indexation. Le problème vient plutôt du réglage de la fréquence d’indexation qui n’est pas adaptée.

SharePoint 2013, qui dispose d’une architecture de recherche différente de celle de SharePoint 2010 a la possibilité d’indexer en continu. SharePoint 2010 ne sait pas le faire. Toutefois, il est possible de régler une indexation incrémentielle toutes les 5 minutes, sans dégrader les performances.

Une fois le mappage fait (plus loin), il sera nécessaire de lancer une indexation complète.

Lorsque l’indexation des nouveaux documents est terminée, vous pouvez passer à l’étape suivante qui consiste à créer des propriétés gérées associées aux propriétés analysées.

Création de la propriété gérée

Nativement, SharePoint sait faire le mappage entre certaines propriétés analysées et les propriétés gérées d’origine (« Out Of The Box / OOTB »), en particulier les métadonnées des documents Office.

Pour les colonnes de sites que vous avez créées, vous devez créer une nouvelle propriété gérée puis l’associer à une des propriétés analysées.

La manipulation suivante doit dont être faite sur les deux colonnes de sites: Projet et Restriction.

Lancez la console d’administration centrale > Application Management > Manage service applications > Application de service de la recherche.

Ensuite, cliquez sur Metadata Properties puis New Managed Property.

Nommez la propriété : monProjet et vérifiez que le type de données est bien Text. Mettez le nom abrégé de votre organisme à la place de « mon ». Les caractères « _ » ou « # » ne sont pas acceptés.

Ensuite, cliquez sur Add Mapping: la fenêtre Crawled property selection s’ouvre.

Dans cette fenêtre, vous pouvez soit filtrer par catégorie, soit filtrer directement sur le nom. Vous allez utiliser cette méthode car les colonnes de sites SharePoint sont facilement repérables.

En effet, elles sont préfixées par ows_ suivi de leur nom interne.

Tapez directement ows_projet puis cliquez sur le bouton Find.
Crawled property selection
Cet écran affichera toutes les propriétés analysées trouvées du même type que la propriété gérée. Si vous ne voyez pas la propriété analysée, vérifiez:

  • Que le type de contenu Paris Core Columns est bien associé à la bibliothèque de documents Docs,
  • Que la propriété analysée (« Projet ») est bien renseignée pour au moins un document. Si besoin, rajoutez au moins un document avec la propriété analysée renseignée,
  • Que l’indexation a bien été faite depuis. Dans le doute relancez une indexation incrémentale,
  • Que le nom interne est bien Projet et donc le nom de la propriété analysée est ows_Projet. Lisez l’article précité sur le nom interne des colonnes,
  • Que le type de donnée est bien Text.

Si ows_Projet(Text) apparaît bien; cliquez dessus pour le sélectionner puis cliquez sur le bouton OK pour valider: vous revenez sur le fenêtre New Managed Property.

Dans cette fenêtre, cochez Allow this property to be used in scopes pour pouvoir utiliser la propriété gérée dans une étendue de recherche (cf. plus bas), ainsi que Add managed property to custom results set retrieved on each query: la raison est expliquée dans l’article consacré aux principes de fonctionnement de la recherche.
Création d'une propriété gérée
Cliquez sur le bouton OK.

Refaites la même manipulation, en l’adaptant, pour la colonne de site Restriction.

Si vous faites une erreur, ou si vous oubliez de cocher une case par exemple, vous pouvez modifier à nouveau la propriété gérée. Seul le type de données (Texte, Entier, etc.) ne peut pas être modifié: Si vous faites une erreur sur le type de données, vous serez obligé de supprimer la propriété gérée puis de la recréer.

Indexation complète

Une fois les propriétés gérées créées, il est nécessaire de refaire une indexation complète (et non incrémentale) pour que le programme d’indexation les intègre dans l’index.

Si c’est compatible avec votre environnement, il serait préférable de recréer entièrement l’index. Dans notre cas, ce n’est pas strictement nécessaire. L’avantage de recréer un nouvel index est de supprimer les erreurs éventuelles de l’index qui finissent toujours par s’accumuler et qui dégradent les performances.

Attention ! La réinitialisation d’index va supprimer totalement l’index, toutes sources de contenu confondues: aucune recherche n’aboutira tant que l’index ne sera pas reconstitué. Par ailleurs, la reconstitution de l’index est une opération consommatrice de ressources: les performances globales de la ferme SharePoint seront pénalisées. Ces opérations doivent d’abord être testées puis ensuite planifiées, notamment dans le cas d’un index volumineux.

Pour réinitialiser l’index, lancez la console d’administration centrale > Application Management > Manage service applications > Application de service de la recherche.

Ensuite, cliquez sur Index Reset. Laissez cochée la case Deactivate search alerts during reset. Si vous la décochez, les utilisateurs qui ont créé des alertes sur la recherche vont recevoir des emails intempestifs. Cliquez sur bouton Reset Now puis sur le bouton OK de la fenêtre de confirmation.

Lors de la prochaine indexation complète, l’index sera recréé entièrement. Dans le cas où la prochaine indexation est incrémentielle, le programme d’indexation force d’autorité une indexation complète si l’index n’a pas déjà fait l’objet d’une indexation complète.

Pour gagner du temps, ou si vous n’avez pas voulu réinitialiser l’index, vous pouvez forcer une indexation complète.

Pour forcer une indexation complète, lancez la console d’administration centrale > Application Management > Manage service applications > Application de service de la recherche.

Ensuite, cliquez sur Content Sources.

Avec la souris, survolez Local SharePoint sites puis cliquez sur la flèche à droite.
Local SharePoint sites
Cliquez sur Start Full Crawl pour démarrer l’analyse complète.

La durée de l’analyse dépend évidemment du volume de documents à analyser.

Dans l’administration de la recherche, l’historique de l’analyse permet d’avoir une vision d’ensemble des différentes analyses.

Une fois que l’indexation complète est terminée, il reste à ajouter les propriétés gérées à la recherche avancée.

Modifier la recherche avancée

Si vous ne disposez pas d’un site de recherche avancée, vous allez d’abord en créer un.

Pour créer un site de recherche avancée, ouvrez la page d’accueil de votre site puis cliquez sur Actions du site > Nouveau site.

Filtrez sur la catégorie Recherche et sélectionnez le modèle Centre de recherche de base.

Nommez-le Cherche avec l’url cherche cliquez sur le bouton Créer: une fenêtre de recherche toute simple (« A la Google ! ») s’affiche:
centre de recherche
Cliquez sur le lien Paramètres avancées.
centre de recherche avancée
Si vous cliquez sur la liste déroulante propriété, vous voyez apparaître les propriétés gérées qui ont été reconnues nativement par SharePoint: Auteur, Description, Nom, Taille, URL, Date de modification, Créé par, dernière modification par.

Vous allez modifier cette recherche avancée pour ajouter vos propriétés gérées.

Pour cela, cliquez sur Actions du site (le menu habituel en haut à gauche) puis Modifier la page.

Avec la souris, survoler la zone de recherche avancée puis cliquer sur le lien Edition et choisir Modifier le composant WebPart.
Modifier le composant WebPart
Dans les paramètres de la zone de recherche avancée, qui est apparu sur la droit, sous Étendues, cochez la case Afficher le sélecteur d’étendue.
Afficher le sélecteur d’étendue
Le sélecteur d’étendues permet de sélectionner l’étendue souhaitée, si vous en possédez plusieurs. Ce choix est cohérent avec la définition précédente de la propriété gérée.

Ensuite, cliquez sur le moins de Étendues.

Dessous, cliquez sur le plus de Propriétés.

Cliquez dans la zone Propriétés qui débute par <root xmlns:xsi= »http://www.w…

Cliquez sur les 3 petits points qui apparaissent:

La fenêtre web qui s’affiche n’est pas pratique pour faire les modifications.

Aussi, vous allez copier temporairement son contenu dans un éditeur plus pratique comme par exemple Notepad++.

Copiez tout le texte qui apparaît et collez-le dans Notepad++, suivi d’entrée.

Afin de faciliter la lecture du fichier, vous pouvez faire les petites manipulations suivantes. Elles sont facultatives mais elles vous permettront de mieux voir ce que vous faites.

Dans Notepad++, remplacez tous les double-espace par un seul espace. Cette opération est à faire 5 fois de suite.

Dans Notepad++, remplacer en mode étendue la chaîne « > < » par « >rn<« . Les commandes rn font passer à la ligne. Pensez à le faire en mode étendue pour avoir un retour chariot entre > et <.

Une fois ces manipulations faites, vous obtenez le fichier présenté ainsi.
Etendue de recherche mise en forme
Cherchez la balise <PropertyDefs>: vous retrouvez les propriétés gérées reconnues par SharePoint (Auteur, Description, Nom, Taille, URL, etc.)
Propriétés gérées reconnues par SharePoint
Entre les balises <PropertyDefs> et </PropertyDefs>, insérez:

<PropertyDef Name= »monProjet » DataType= »text » DisplayName= »Projet »/>

Refaites cette opération pour la propriété gérée maRestriction.
PropertyDef
Ensuite, cherchez la balise <ResultTypes>: elle se trouve juste en dessous de la balise </PropertyDefs>.
ResultTypes
Dans la balise <ResultTypes>, chercher la balise <ResultType DisplayName= »Tous » Name= »default »>
ResultType
Juste avant </ResultType>, ajouter: <PropertyRef Name= »monProjet » />

Refaites cette opération pour la propriété gérée maRestriction.
PropertyRef
En fait, vous pouvez ajouter les balises ci-dessus à l’endroit que vous voulez dans le bloc <ResultTypes>, selon l’affichage souhaité.

Sélectionnez et copiez tout le contenu du fichier notepad++.

Collez dans la fenêtre de l’éditeur de texte ouvert dans SharePoint puis cliquer sur le bouton OK. Il est totalement inutile de remettre en forme.

Cliquez sur le bouton OK de la Zone de recherche avancée.

Dans le ruban Page, cliquez sur Arrêter la modification.

Vérifiez que vos modifications ont bien été prises en compte.
Modification de l'étendue
Vous devez voir en bas de la liste les champs Projet et Restriction.

Lancement de la requête personnalisée de recherche

L’utilisateur souhaitait faire une recherche du type : « Je cherche dans le projet Audit tous les documents en anglais qui contiennent le mot site dont le niveau de confidentialité est Tres-secret » à partir de l’écran de recherche avancée.

Cela donne:
Requête personnalisée de recherche
Cet écran de recherche peut être simplifié (suppression des langues inutiles, modification des libellés, etc.) en jouant avec les fichiers XML de configuration.

Vous noterez le panneau d’affinement (sur la gauche) qui permet de filtrer les résultats de recherche:
requête personnalisée de recherche (résultat)
Il est aussi possible de faire apparaître dans le panneau d’affinement, les métadonnées rajoutées par nos soins: Projet et Restriction.

Pour information, la requête complète est ALL(site) (scope: »All Sites ») (DetectedLanguage= »en ») (monProjet:Audit AND maRestriction:Tres-secret).