Apercu
Le connecteur Microsoft 365 fournit la fonctionnalite permettant de recuperer des donnees depuis les services Microsoft 365 (OneDrive, OneNote, Teams, SharePoint) et de les enregistrer dans l’index Fess.
Cette fonctionnalite necessite le plugin fess-ds-microsoft365.
Services pris en charge
OneDrive : Drives utilisateurs, drives de groupe, documents partages
OneNote : Carnets (sites, utilisateurs, groupes)
Teams : Canaux, messages, chats
SharePoint Document Libraries : Metadonnees des bibliotheques de documents
SharePoint Lists : Listes et elements de liste
SharePoint Pages : Pages de site, articles d’actualites
Prerequis
L’installation du plugin est requise
L’enregistrement de l’application Azure AD est necessaire
La configuration des permissions de l’API Microsoft Graph et le consentement administrateur sont requis
Java 21 ou superieur, Fess 15.2.0 ou superieur
Installation du plugin
Methode 1 : Placement direct du fichier JAR
# Telecharger depuis Maven Central
wget https://repo1.maven.org/maven2/org/codelibs/fess/fess-ds-microsoft365/X.X.X/fess-ds-microsoft365-X.X.X.jar
# Placement
cp fess-ds-microsoft365-X.X.X.jar $FESS_HOME/app/WEB-INF/lib/
# ou
sudo cp fess-ds-microsoft365-X.X.X.jar /usr/share/fess/app/WEB-INF/lib/
Methode 2 : Build depuis les sources
git clone https://github.com/codelibs/fess-ds-microsoft365.git
cd fess-ds-microsoft365
mvn clean package
cp target/fess-ds-microsoft365-*.jar $FESS_HOME/app/WEB-INF/lib/
Apres l’installation, redemarrez Fess.
Configuration
Configurez depuis l’interface d’administration via « Crawler » -> « Data Store » -> « Nouveau ».
Configuration de base
| Element | Exemple |
|---|---|
| Nom | Microsoft 365 OneDrive |
| Nom du gestionnaire | OneDriveDataStore / OneNoteDataStore / TeamsDataStore / SharePointDocLibDataStore / SharePointListDataStore / SharePointPageDataStore |
| Active | Oui |
Configuration des parametres (communs)
tenant=12345678-1234-1234-1234-123456789abc
client_id=87654321-4321-4321-4321-123456789abc
client_secret=abcdefghijklmnopqrstuvwxyz123456
number_of_threads=1
ignore_error=false
Liste des parametres communs
| Parametre | Requis | Description |
|---|---|---|
tenant | Oui | ID de locataire Azure AD |
client_id | Oui | ID client de l’enregistrement d’application |
client_secret | Oui | Secret client de l’enregistrement d’application |
number_of_threads | Non | Nombre de threads de traitement parallele (par defaut : 1) |
ignore_error | Non | Continuer le traitement en cas d’erreur (par defaut : false) |
include_pattern | Non | Pattern regex pour le contenu a inclure |
exclude_pattern | Non | Pattern regex pour le contenu a exclure |
default_permissions | Non | Attribution de role par defaut |
Enregistrement d’application Azure AD
1. Enregistrer une application dans le portail Azure
Ouvrez Azure Active Directory dans https://portal.azure.com :
Cliquez sur « Inscriptions d’applications » -> « Nouvelle inscription »
Entrez le nom de l’application
Selectionnez les types de comptes pris en charge
Cliquez sur « Inscrire »
2. Creation du secret client
Dans « Certificats et secrets » :
Cliquez sur « Nouveau secret client »
Definissez une description et une date d’expiration
Copiez la valeur du secret (attention : elle ne sera plus visible apres)
3. Ajout des permissions API
Dans « Permissions de l’API » :
Cliquez sur « Ajouter une autorisation »
Selectionnez « Microsoft Graph »
Selectionnez « Autorisations d’application »
Ajoutez les permissions necessaires (voir ci-dessous)
Cliquez sur « Accorder un consentement d’administrateur »
Permissions requises par Data Store
OneDriveDataStore
Permissions requises :
Files.Read.All
Permissions conditionnelles :
User.Read.All- si user_drive_crawler=trueGroup.Read.All- si group_drive_crawler=trueSites.Read.All- si shared_documents_drive_crawler=true
OneNoteDataStore
Permissions requises :
Notes.Read.All
Permissions conditionnelles :
User.Read.All- si user_note_crawler=trueGroup.Read.All- si group_note_crawler=trueSites.Read.All- si site_note_crawler=true
TeamsDataStore
Permissions requises :
Team.ReadBasic.AllGroup.Read.AllChannel.ReadBasic.AllChannelMessage.Read.AllChannelMember.Read.AllUser.Read.All
Permissions conditionnelles :
Chat.Read.All- si chat_id est specifieFiles.Read.All- si append_attachment=true
Configuration du script
OneDrive
title=file.name
content=file.description + "\n" + file.contents
mimetype=file.mimetype
created=file.created
last_modified=file.last_modified
url=file.web_url
role=file.roles
Champs disponibles :
file.name- Nom du fichierfile.description- Description du fichierfile.contents- Contenu textuelfile.mimetype- Type MIMEfile.filetype- Type de fichierfile.created- Date de creationfile.last_modified- Date de derniere modificationfile.size- Taille du fichierfile.web_url- URL pour ouvrir dans le navigateurfile.roles- Permissions d’acces
OneNote
title=notebook.name
content=notebook.contents
created=notebook.created
last_modified=notebook.last_modified
url=notebook.web_url
role=notebook.roles
size=notebook.size
Champs disponibles :
notebook.name- Nom du carnetnotebook.contents- Contenu integre des sections et pagesnotebook.size- Taille du contenu (caracteres)notebook.created- Date de creationnotebook.last_modified- Date de derniere modificationnotebook.web_url- URL pour ouvrir dans le navigateurnotebook.roles- Permissions d’acces
Teams
title=message.title
content=message.content
created=message.created_date_time
last_modified=message.last_modified_date_time
url=message.web_url
role=message.roles
Champs disponibles :
message.title- Titre du messagemessage.content- Contenu du messagemessage.created_date_time- Date de creationmessage.last_modified_date_time- Date de derniere modificationmessage.web_url- URL pour ouvrir dans le navigateurmessage.roles- Permissions d’accesmessage.from- Informations sur l’expediteur
Parametres supplementaires par Data Store
OneDrive
max_content_length=-1
ignore_folder=true
supported_mimetypes=.*
drive_id=
shared_documents_drive_crawler=true
user_drive_crawler=true
group_drive_crawler=true
OneNote
site_note_crawler=true
user_note_crawler=true
group_note_crawler=true
Teams
team_id=
exclude_team_ids=
include_visibility=
channel_id=
chat_id=
ignore_replies=false
append_attachment=true
ignore_system_events=true
title_dateformat=yyyy/MM/dd'T'HH:mm:ss
title_timezone_offset=Z
SharePoint Document Libraries
site_id=
exclude_site_id=
ignore_system_libraries=true
SharePoint Lists
site_id=hostname,siteCollectionId,siteId
list_id=
exclude_list_id=
list_template_filter=
ignore_system_lists=true
SharePoint Pages
site_id=
exclude_site_id=
ignore_system_pages=true
page_type_filter=
Exemples d’utilisation
Crawl de tous les drives OneDrive
Parametres :
tenant=12345678-1234-1234-1234-123456789abc
client_id=87654321-4321-4321-4321-123456789abc
client_secret=your_client_secret
user_drive_crawler=true
group_drive_crawler=true
shared_documents_drive_crawler=true
Script :
title=file.name
content=file.description + "\n" + file.contents
mimetype=file.mimetype
created=file.created
last_modified=file.last_modified
url=file.web_url
role=file.roles
Crawl des messages Teams d’une equipe specifique
Parametres :
tenant=12345678-1234-1234-1234-123456789abc
client_id=87654321-4321-4321-4321-123456789abc
client_secret=your_client_secret
team_id=19:abc123def456@thread.tacv2
ignore_replies=false
append_attachment=true
title_timezone_offset=+01:00
Script :
title=message.title
content=message.content
created=message.created_date_time
url=message.web_url
role=message.roles
Depannage
Erreur d’authentification
Symptome : Authentication failed ou Insufficient privileges
Points a verifier :
Verifier si l’ID de locataire, l’ID client et le secret client sont corrects
Verifier si les permissions API necessaires sont accordees dans le portail Azure
Verifier si le consentement administrateur a ete donne
Verifier la date d’expiration du secret client
Erreur de limitation de debit API
Symptome : 429 Too Many Requests
Solution :
Reduire
number_of_threads(definir a 1 ou 2)Augmenter l’intervalle de crawl
Definir
ignore_error=truepour continuer le traitement
Impossible de recuperer les donnees
Symptome : Le crawl reussit mais 0 documents
Points a verifier :
Verifier si les donnees cibles existent
Verifier si les permissions API sont correctement configurees
Verifier les parametres du crawler de drive utilisateur/groupe
Verifier les messages d’erreur dans les logs
Crawl de donnees volumineuses
Solution :
Diviser en plusieurs data stores (par site, par drive, etc.)
Repartir la charge avec les parametres de planification
Ajuster
number_of_threadspour le traitement paralleleCrawler uniquement des dossiers/sites specifiques
Informations de reference
Apercu des connecteurs DataStore - Apercu des connecteurs Data Store
Connecteur Google Workspace - Connecteur Google Workspace
Présentation - Guide de configuration Data Store
Comment verifier l’ID de site SharePoint
Verifier avec PowerShell :
Ou avec l’API Microsoft Graph :