# Sharepoint Document Library Connector
Overview
The sharepoint library connector integration allows you to setup a connector between a document library in a sharepoint site and a KB in botpress.
Configuration
Add the following keys to the integration’s configuration
block:
- clientId (required) — Application (client) ID of your Microsoft Entra (Azure AD) app registration.
- tenantId (required) — Directory (tenant) ID of the same app registration.
- thumbprint (required) — Thumbprint of the certificate uploaded to the app registration.
- privateKey (required) — PEM-formatted private key that matches the certificate (everything between
-----BEGIN PRIVATE KEY-----
and -----END PRIVATE KEY-----
).
- primaryDomain (required) — SharePoint primary domain (the part before
.sharepoint.com
).
Example: contoso
- siteName (required) — Name of the SharePoint site that owns the document libraries you want to sync.
- documentLibraryNames (optional) — Comma-separated list or JSON array of document libraries to sync.
Examples:
Policies,Procedures
["Policies","Procedures"]
- folderKbMap (optional) — JSON object that maps
kbId
⇒ array of folder prefixes for routing files to specific KBs.
Example:
{"kb-marketing":["Campaigns"],"kb-policies":["HR","Legal"]}
Tip:
- If you omit
documentLibraryNames
, all document libraries in the specified site will be synced.
- If you omit
folderKbMap
, every file is routed to the default KB configured for its library.
[!IMPORTANT]
Due to reliability issues, Moves and Copies are not supported. Those events from sharepoint will not reflect in the knowledge bases. If you wish to move/copy a file to another location, Upload or Create the file instead.
How to's
How to register a app on Microsoft Entra admin center
- From the Home page of Microsoft Entra admin center, Open App registrations ( This is under Applications in the Left Nav )
- Add a new registration by clicking on “+ New registration”
- Give your app an appropriate name, and click register.
- Open the App registration and take note of the following:
Application (client) ID
Directory (tenant) ID
How to create a certificate for your app registration
- We will be using a self signed certificate to authenticate, to create a self signed certificate run the following commands in order
openssl genrsa -out myPrivateKey.key 2048
→ This will generate a 2048-bit private key and save it as myPrivateKey.key.
openssl req -new -key myPrivateKey.key -out myCertificate.csr
→ This will create a CSR cert. You will be prompted to enter some information, fill as needed.
openssl x509 -req -days 365 -in myCertificate.csr -signkey myPrivateKey.key -out myCertificate.crt
→ This will create a certificate file named myCertificate.crt that is valid for 365 days.
How to add your certificate to your app registration
- Navigate to the Azure portal and go to your Azure AD app registration.
- Under “Certificates & secrets,” choose “Certificates” and click “Upload certificate.”
- Upload your .crt
How to update API permissions for your app registration
- Go to “API Permissions” it should be under the Manage Group, in your App Registration "
- Click “Add a permissions”
- click on "Microsoft Graph".
- Select “Application permissions” as the type of permission.
- Check
Sites.FullControl.All
, Sites.Manage.All
, Sites.Read.All
, Sites.ReadWrite.All
, Sites.Selected.All
, Files.Read.All
and Files.ReadWriteAll
- Click “Add a permissions again.”
- Click the “Add a permission” button again
- Scroll till you find Sharepoint and click on it.
- Select “Application permissions” as the type of permission.
- Check
Sites.FullControl.All
, Sites.Manage.All
, Sites.Read.All
, Sites.ReadWrite.All
and Sites.Selected.All
- Click “Add permissions.”
- You should see All the permissions you added in the permissions list.
- Click on “Grant admin consent for ”
Folder‑to‑KB Mapping (folderKbMap
)
This is an optional advanced feature. If you skip it, every file in the document library will go to the single KB you specified above.
Why use it?
Sometimes one SharePoint document library contains several distinct collections of content—HR procedures, Legal policies, Marketing campaigns, etc.—but you want each collection to live in its own Botpress KB for cleaner search results and permissions.
folderKbMap
lets you do exactly that.
How it works
folderKbMap
is a JSON object whose keys are KB IDs and whose values are arrays of folder prefixes (relative paths) to watch.
- During sync, the integration checks each file’s server‑relative path.
- If the path starts with one of the prefixes you listed, that file is routed to the corresponding KB.
- If no prefix matches, the file falls back to the default KB for the library.
Configuration syntax
// Example: route folders within the libraries
"folderKbMap": {
"kb-id-1": ["doclib1","doclib1/ExampleFolder/2025"],
"kb-id-2": ["doclib2/HR","doclib2/ExampleFolder"]
}
Prefixes are case‑insensitive and may include simple wildcards (*
).
Rules & limitations
- No KB sharing across libraries. A single KB cannot receive content from two different libraries—even via folder mapping.
- Create KBs first. All KB IDs used in
folderKbMap
must already exist in Botpress before you save the configuration.
- Recursive files Every file within a document library, regardles whether it is in a nested folder - will be recursively copied.
Quick checklist
✔ |
Step |
Create a separate KB for each content group you want. |
|
Identify folder (or folder‑prefix) boundaries inside the SharePoint library. |
|
Build a folderKbMap JSON object mapping kbId → [prefixes]. |
|
Add the JSON to your integration configuration. |
|
Save & verify: upload a test file in each folder and confirm it appears in the expected KB. |
|
# Sharepoint Document Library Connector
## Overview
The sharepoint library connector integration allows you to setup a connector between a document library in a sharepoint site and a KB in botpress.
## Configuration
Add the following keys to the integration’s `configuration` block:
- **clientId** (required) — Application (client) ID of your Microsoft Entra (Azure AD) app registration.
- **tenantId** (required) — Directory (tenant) ID of the same app registration.
- **thumbprint** (required) — Thumbprint of the certificate uploaded to the app registration.
- **privateKey** (required) — PEM-formatted private key that matches the certificate (everything between `-----BEGIN PRIVATE KEY-----` and `-----END PRIVATE KEY-----`).
- **primaryDomain** (required) — SharePoint primary domain (the part before `.sharepoint.com`).
*Example*: `contoso`
- **siteName** (required) — Name of the SharePoint site that owns the document libraries you want to sync.
- **documentLibraryNames** (optional) — Comma-separated list **or** JSON array of document libraries to sync.
*Examples*:
`Policies,Procedures`
`["Policies","Procedures"]`
- **folderKbMap** (optional) — JSON object that maps `kbId` ⇒ array of folder prefixes for routing files to specific KBs.
*Example*:
`{"kb-marketing":["Campaigns"],"kb-policies":["HR","Legal"]}`
**Tip:**
- If you omit `documentLibraryNames`, **all** document libraries in the specified site will be synced.
- If you omit `folderKbMap`, every file is routed to the default KB configured for its library.
> [!IMPORTANT]
> Due to reliability issues, **Moves** and **Copies** are not supported. Those events from sharepoint will not reflect in the knowledge bases. If you wish to move/copy a file to another location, **Upload** or **Create** the file instead.
## How to's
### How to register a app on Microsoft Entra admin center
- From the Home page of Microsoft Entra admin center, Open App registrations ( This is under Applications in the Left Nav )
- Add a new registration by clicking on “+ New registration”
- Give your app an appropriate name, and click register.
- Open the App registration and take note of the following:
- `Application (client) ID`
- `Directory (tenant) ID`
### How to create a certificate for your app registration
- We will be using a self signed certificate to authenticate, to create a self signed certificate run the following commands in order
- `openssl genrsa -out myPrivateKey.key 2048` → This will generate a 2048-bit private key and save it as myPrivateKey.key.
- `openssl req -new -key myPrivateKey.key -out myCertificate.csr` → This will create a CSR cert. You will be prompted to enter some information, fill as needed.
- `openssl x509 -req -days 365 -in myCertificate.csr -signkey myPrivateKey.key -out myCertificate.crt` → This will create a certificate file named myCertificate.crt that is valid for 365 days.
### How to add your certificate to your app registration
- Navigate to the Azure portal and go to your Azure AD app registration.
- Under “Certificates & secrets,” choose “Certificates” and click “Upload certificate.”
- Upload your .crt
### How to update API permissions for your app registration
- Go to “API Permissions” it should be under the Manage Group, in your App Registration "
- Click “Add a permissions”
- click on "Microsoft Graph".
- Select “Application permissions” as the type of permission.
- Check `Sites.FullControl.All` , `Sites.Manage.All` , `Sites.Read.All` , `Sites.ReadWrite.All`, `Sites.Selected.All`, `Files.Read.All` and `Files.ReadWriteAll`
- Click “Add a permissions again.”
- Click the “Add a permission” button again
- Scroll till you find Sharepoint and click on it.
- Select “Application permissions” as the type of permission.
- Check `Sites.FullControl.All` , `Sites.Manage.All` , `Sites.Read.All` , `Sites.ReadWrite.All` and `Sites.Selected.All`
- Click “Add permissions.”
- You should see All the permissions you added in the permissions list.
- Click on “Grant admin consent for <your_org_name>”
---
## Folder‑to‑KB Mapping (`folderKbMap`)
*This is an **optional** advanced feature. If you skip it, every file in the document library will go to the single KB you specified above.*
### Why use it?
Sometimes one SharePoint document library contains several distinct collections of content—HR procedures, Legal policies, Marketing campaigns, etc.—but you want each collection to live in its **own** Botpress KB for cleaner search results and permissions.
`folderKbMap` lets you do exactly that.
### How it works
* `folderKbMap` is a **JSON object** whose keys are **KB IDs** and whose values are **arrays of folder prefixes** (relative paths) to watch.
* During sync, the integration checks each file’s server‑relative path.
* If the path **starts with** one of the prefixes you listed, that file is routed to the corresponding KB.
* If no prefix matches, the file falls back to the default KB for the library.
### Configuration syntax
```jsonc
// Example: route folders within the libraries
"folderKbMap": {
"kb-id-1": ["doclib1","doclib1/ExampleFolder/2025"],
"kb-id-2": ["doclib2/HR","doclib2/ExampleFolder"]
}
```
*Prefixes are **case‑insensitive** and may include simple wildcards (`*`).*
### Rules & limitations
1. **No KB sharing across libraries.** A single KB **cannot** receive content from two different libraries—even via folder mapping.
2. **Create KBs first.** All KB IDs used in `folderKbMap` must already exist in Botpress before you save the configuration.
3. **Recursive files** Every file within a document library, regardles whether it is in a nested folder - will be recursively copied.
### Quick checklist
| ✔ | Step |
|---|------|
| Create a **separate KB** for each content group you want. |
| Identify folder (or folder‑prefix) boundaries inside the SharePoint library. |
| Build a `folderKbMap` JSON object mapping **kbId → [prefixes]**. |
| Add the JSON to your integration configuration. |
| Save & verify: upload a test file in each folder and confirm it appears in the expected KB. |
---