Overview
The Microsoft 365 Connector provides functionality to retrieve data from Microsoft 365 services (OneDrive, OneNote, Teams, SharePoint) and register it in the Fess index.
This feature requires the fess-ds-microsoft365 plugin.
Supported Services
OneDrive: User drives, group drives, shared documents
OneNote: Notebooks (sites, users, groups)
Teams: Channels, messages, chats
SharePoint Document Libraries: Document library metadata
SharePoint Lists: Lists and list items
SharePoint Pages: Site pages, news articles
Prerequisites
Plugin installation is required
Azure AD application registration is required
Microsoft Graph API permissions configuration and admin consent is required
Java 21 or higher, Fess 15.2.0 or higher
Installing the Plugin
Method 1: Direct JAR file placement
Method 2: Build from source
Restart Fess after installation.
Configuration
Configure in the admin console under “Crawler” -> “Data Store” -> “Create New”.
Basic Settings
| Item | Example |
|---|---|
| Name | Microsoft 365 OneDrive |
| Handler Name | OneDriveDataStore / OneNoteDataStore / TeamsDataStore / SharePointDocLibDataStore / SharePointListDataStore / SharePointPageDataStore |
| Enabled | On |
Common Parameter Configuration
Common Parameter List
Azure AD Application Registration
1. Register an Application in Azure Portal
Open Azure Active Directory at https://portal.azure.com:
Click “App registrations” -> “New registration”
Enter application name
Select supported account types
Click “Register”
2. Create Client Secret
In “Certificates & secrets”:
Click “New client secret”
Set description and expiration
Copy the secret value (cannot be viewed later)
3. Add API Permissions
In “API permissions”:
Click “Add a permission”
Select “Microsoft Graph”
Select “Application permissions”
Add required permissions (see below)
Click “Grant admin consent”
Required Permissions by Data Store
OneDriveDataStore
Required permissions:
Files.Read.All
Conditional permissions:
User.Read.All- When user_drive_crawler=trueGroup.Read.All- When group_drive_crawler=trueSites.Read.All- When shared_documents_drive_crawler=true
OneNoteDataStore
Required permissions:
Notes.Read.All
Conditional permissions:
User.Read.All- When user_note_crawler=trueGroup.Read.All- When group_note_crawler=trueSites.Read.All- When site_note_crawler=true
TeamsDataStore
Required permissions:
Team.ReadBasic.AllGroup.Read.AllChannel.ReadBasic.AllChannelMessage.Read.AllChannelMember.Read.AllUser.Read.All
Conditional permissions:
Chat.Read.All- When specifying chat_idFiles.Read.All- When append_attachment=true
Script Configuration
OneDrive
Available fields:
file.name- File namefile.description- File descriptionfile.contents- Text contentfile.mimetype- MIME typefile.filetype- File typefile.created- Creation datefile.last_modified- Last modified datefile.size- File sizefile.web_url- URL to open in browserfile.roles- Access permissions
OneNote
Teams
Usage Examples
Crawling All OneDrive Drives
Parameters:
Script:
Crawling Teams Messages from Specific Team
Parameters:
Script:
Troubleshooting
Authentication Errors
Symptom: Authentication failed or Insufficient privileges
Check:
Verify tenant ID, client ID, and client secret are correct
Verify required API permissions are granted in Azure Portal
Verify admin consent has been granted
Check client secret expiration
API Rate Limit Errors
Symptom: 429 Too Many Requests
Resolution:
Reduce
number_of_threads(set to 1 or 2)Increase crawl interval
Set
ignore_error=truefor continued processing
Cannot Retrieve Data
Symptom: Crawl succeeds but 0 documents
Check:
Verify target data exists
Verify API permissions are correctly configured
Check user/group drive crawler settings
Check logs for error messages
Reference Information
Data Store Connector Overview - Data Store Connector Overview
Google Workspace Connector - Google Workspace Connector
Data Store Crawling - Data Store Configuration Guide