> For the complete documentation index, see [llms.txt](https://docs.ixhello.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ixhello.com/knowledge-bot/functional-documentation/functional-capabilities/data-sources/integrations/sharepoint-configuration.md).

# SharePoint Configuration

The SharePoint integration in our application is designed to authenticate users and retrieve SharePoint content for processing (read-only access). The app does not modify SharePoint content or manage tenant configurations.

#### Required Permissions <a href="#required-permissions" id="required-permissions"></a>

| Permission               | Type      | Purpose & Usage                                                                                                             |
| ------------------------ | --------- | --------------------------------------------------------------------------------------------------------------------------- |
| **User.Read**            | Delegated | Required for OAuth authentication to identify the signed-in user.                                                           |
| **Sites.Read.All**       | Delegated | Allows read-only access to SharePoint sites for discovering sites, libraries, and content.                                  |
| **Files.Read.All**       | Delegated | Enables reading SharePoint files to retrieve documents for processing and generating embeddings.                            |
| **GroupMember.Read.All** | Delegated | Required only if `specificAccessControl` is enabled; used to check SharePoint group memberships and enforce access control. |

***

#### Not Required Permissions <a href="#not-required-permissions" id="not-required-permissions"></a>

| Permission                                   | Reason                                                                                          |
| -------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| Directory.Read.All (Delegated & Application) | Full directory access is not needed; we only require user-level info.                           |
| Group.Read.All (Delegated & Application)     | Reading all Microsoft 365 groups is unnecessary; access control uses GroupMember.Read.All only. |
| Sites.FullControl.All (Delegated)            | App does not modify SharePoint sites or content.                                                |
| Sites.Manage.All (Delegated)                 | App does not manage site settings or configuration.                                             |
| GroupMember.Read.All (Application)           | The integration operates in delegated user context                                              |

***

#### Key Notes <a href="#key-notes" id="key-notes"></a>

* The frontend only requests `openid profile email offline_access` for authentication.

&#x20;

#### **Callback:** <a href="#callback" id="callback"></a>

<figure><img src="https://media-cdn.atlassian.com/file/6619c0a3-4186-45d0-a8b3-aaa9c149b6a2/image/cdn?allowAnimated=true&#x26;client=c1cdb990-3ad3-4ebc-b9e4-8f210267dae0&#x26;collection=contentId-1344438330&#x26;height=125&#x26;max-age=2592000&#x26;mode=full-fit&#x26;source=mediaCard&#x26;token=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJjMWNkYjk5MC0zYWQzLTRlYmMtYjllNC04ZjIxMDI2N2RhZTAiLCJhY2Nlc3MiOnsidXJuOmZpbGVzdG9yZTpjb2xsZWN0aW9uOmNvbnRlbnRJZC0xMzQ0NDM4MzMwIjpbInJlYWQiXX0sImV4cCI6MTc4MjkxNDI4MiwibmJmIjoxNzgyOTExNDAyLCJhYUlkIjoiNjI2MDA0MzNmNjk4MzEwMDcwYTgzNWJkIiwiaHR0cHM6Ly9pZC5hdGxhc3NpYW4uY29tL2FwcEFjY3JlZGl0ZWQiOmZhbHNlLCJhdXRoVHlwZSI6InNlc3Npb24ifQ.20Z_B2Q18W7iXCOWXibY0ox8vKg0SYl_BlaZB6VmmSo&#x26;width=734#media-blob-url=true&#x26;id=6619c0a3-4186-45d0-a8b3-aaa9c149b6a2&#x26;clientId=c1cdb990-3ad3-4ebc-b9e4-8f210267dae0&#x26;contextId=contentId-1344438330&#x26;collection=contentId-1344438330" alt=""><figcaption></figcaption></figure>

**Production:**

* US instance: `https://us.knowledge.ixhello.com/connectors/oauth/callback`
* EU instance: `https://eu.knowledge.ixhello.com/connectors/oauth/callback`

**Development / Pre-production (add these to the same Azure AD App Registration):**

* `https://kbot-dev.concentrix.com/connectors/oauth/callback`
* `https://kbot-preprod.concentrix.com/connectors/oauth/callback`
* `https://kbot-dev.concentrix.com/`
* `https://kbot-preprod.concentrix.com/`

> ⚠️ **Important:** The dev/preprod redirect URIs above must be added to the **client's production Azure AD App Registration** — the same one that contains the production redirect URIs. This allows our dev/preprod environments to authenticate against the client's SharePoint tenant for debugging and troubleshooting purposes. Access remains fully controlled by environment-specific credentials (client ID + secret), so adding these URIs does not grant any unauthorized access.

## Pre-requisites

1. **An active SharePoint Account**

User should have an active Microsoft SharePoint Account. If user does not have an active account, the user can create one at: [https://signup.live.com/signup](https://signup.live.com/signup?lic=1\&uaid=dcccc7d3501844919762928e146c9308)

2. **At least one App Registration**

Open your Azure account. If user does not have any App Registration, it can be created by:&#x20;

a. Enter **App Registrations** in the Search field at the top of the Azure page.&#x20;

b. Select the App Registrations icon

c. Click on **New Registration** button

<figure><img src="/files/vdiTXbjjxopiyCwUGHG9" alt=""><figcaption></figcaption></figure>

d. Enter a Name and select **Accounts in this organizational directory only**. Press **Register**.<br>

<figure><img src="/files/2EghMXDWOpesMClnOwPM" alt=""><figcaption></figcaption></figure>

## Application (Client) ID, Tenant ID, Client Secret, Permissions & Authentication

1. To be able to connect to SharePoint from the iX Hello platform, one application registration is required, and the user should have permissions to view and execute SharePoint functions. Once the application registration is successful, you can copy the information as described in the steps below:
2. User will need to visit the newly created application and note the following information as highlighted with red marker. The Application ID and Tenant ID can be found inside the red contour.

<figure><img src="/files/NziolVkowgrlG0ZB6eKO" alt=""><figcaption></figcaption></figure>

3. On the left navigation menu, click **Certificates & Secrets**. Click on **New client secret**:

<figure><img src="/files/xmTaNjPjXCoMSrYapHj6" alt=""><figcaption></figcaption></figure>

4. A popup will appear. Fill-in the necessary information as shown and press **Next**:

<figure><img src="/files/PlroOEAOS4vgY5M879L3" alt=""><figcaption></figcaption></figure>

5. App expiration can be customized as shown below:

<figure><img src="/files/Llhcas6lv6Gpn81HKFh3" alt="" width="563"><figcaption></figcaption></figure>

6. After user clicks **Add**, the application secret will appear as shown below. Copy the value and store it in a safe location. This information can only be seen once. If this value is lost, it will be necessary to create a new secret.

<figure><img src="/files/g3CktuM8S9hbCHwibi8Z" alt=""><figcaption></figcaption></figure>

7. User should now have Client ID, Tenant ID, and Client Secret.
8. User will now need to create App permission. On left navigation menu, click **API permissions**, then click **Add a permission**.

<figure><img src="/files/cRMAEyMOdqdN1o2ysXBR" alt=""><figcaption></figcaption></figure>

9. For SharePoint permissions, the user will need to have the following delegated permissions:&#x20;

**Sites.ReadWrite.All**&#x20;

**offline\_access**&#x20;

To obtain these permissions, do the following:

* Click **Add a permission**
* Click **Microsoft Graph** option at top
* Click **Delegated permissions**

10. The user will then be able to see the list of permissions that are offered to registered application. Find the permissions stated above and check them. Finally click on **Add permissions** button to complete the permission as shown in picture below

<figure><img src="/files/PXgYD2lzDX59LVUZPFwW" alt=""><figcaption></figcaption></figure>

11. For authentication, the user has to provide redirect URL. This is where SharePoint will redirect after authentication is complete. To setup the redirect URL, click **Authentication** on the left navigation menu and then click **Add a platform** on the body and then select **Web**. Follow the subsequent screenshots as shown below:

<figure><img src="/files/M1xNRr98CUhjTMAeG3iF" alt=""><figcaption></figcaption></figure>

12. Add the Redirect URL under the Configure Web portion. Enter the value **<https://bots.ixHello.com/OAuthCode/Redirect>** and press **Configure**

<figure><img src="/files/6MxKVURe0NeUYkTh27eh" alt="" width="563"><figcaption></figcaption></figure>

13. Once the platform is added, user should see redirect URIs as below:

<figure><img src="/files/Q9yYfJio5vdyfyVMpdou" alt="" width="563"><figcaption></figcaption></figure>

14. You have now successfully configured App on Azure. Follow the steps below to connect KBOT with SharePoint

## Setup connection to SharePoint in KBOT

1. Login to the iX Hello KBOT portal at&#x20;
2. Once clicked on the link you will be navigated to the KBOT home page.
3. As an administrator, you can configure external data sources such as **Confluence, SharePoint, and Salesforce** for content ingestion. When a new application is created, these integrations are typically not configured by default. To enable data ingestion from these platforms, the required connection details must be added through the **Configure Data Sources** page.

<figure><img src="/files/U7xNsj7kbrxtl5SfvyWP" alt=""><figcaption></figcaption></figure>

4. Navigate to Configure Data Source Menu and click on "Add Configuration" button.

<figure><img src="/files/NX4nv5CBuTuCeCuOOfAq" alt=""><figcaption></figcaption></figure>

Once clicked, you will see the **Add Configuration** pop-up is open, allowing an administrator to add a new data source connection.

The selected **Data Source Type** is **SharePoint**.

The configuration requires the following information:

| Field                | Description                                                                    |
| -------------------- | ------------------------------------------------------------------------------ |
| **Data Source Type** | Select the platform to connect, such as Confluence, SharePoint, or Salesforce. |
| **Base URL**         | The URL of the SharePoint site to be connected.                                |
| **Client ID**        | The Application (Client) ID generated from Azure/Entra ID.                     |
| **Tenant ID**        | The Azure/Entra tenant identifier associated with the organization.            |
| **Client Secret**    | The secret key used to authenticate and authorize access to SharePoint.        |

**Available Actions**

* **Save** – Stores the configuration and establishes the connection.
* **Cancel** – Closes the dialog without saving changes.

<figure><img src="/files/8JAayJE8OtkDp6iMMeab" alt=""><figcaption></figcaption></figure>

Once clicked on save you will see the SharePoint Configuration added to the list in the configuration data source.

<figure><img src="/files/DCns6wNhmMox9MnDnAGO" alt=""><figcaption></figcaption></figure>

Navigate to the Knowledge Bots menu and click on the upload button, you will see the list of Data sources and choose SharePoint.

<figure><img src="/files/2nVBXyCHf66DoFA5AGC6" alt=""><figcaption></figcaption></figure>

Paste the SharePoint URL to which you have access to and click on 'Get Data'

<figure><img src="/files/1ox5QOTzBSk517CRkkHp" alt=""><figcaption></figcaption></figure>

After entering a SharePoint URL that the administrator has access to, selecting **Get Data** initiates a connection process between the platform and the SharePoint site. Once the connection is successfully established, the platform retrieves the available files and folders from the specified location.

The retrieved content is displayed in a **hierarchical folder structure**, mirroring the organization of folders and subfolders within SharePoint. Similar to Windows File Explorer, folders can contain nested folders, creating parent-child relationships that make it easier to navigate and manage the content being ingested.

Administrators can:

* Select all retrieved content for ingestion.
* Deselect specific files or folders that should not be included.
* Review the folder hierarchy before proceeding with ingestion.

<figure><img src="/files/ZWfnKVcrycfOtwU1sRsZ" alt=""><figcaption></figcaption></figure>

Data available/pulled from SharePoint:

<figure><img src="/files/tZ8zPVgW3ib6e7Fntgwe" alt=""><figcaption></figcaption></figure>

**Enforce Access Control**

The **Enforce Access Control** option ensures that users can only access information from content repositories for which they already have permissions.

For example:

* An administrator may have permission to access and ingest content from a particular SharePoint site.
* The content can be successfully indexed because the administrator has the necessary access rights.
* However, users who do not have access to that SharePoint site will not receive responses based on the restricted content, even though it has been ingested into the platform.
* Only users with the appropriate permissions to the original SharePoint location will be able to retrieve answers derived from that content.

This feature helps maintain existing security and permission boundaries while enabling knowledge retrieval across connected data sources.

<figure><img src="/files/irRsvig2kpMQvootQqSc" alt=""><figcaption></figcaption></figure>

#### Advanced Settings for Data Source Ingestion

The **Data Masking** functionality works consistently across all supported data source types. The same data masking rules configured at the **Knowledge Bot (K-Bot)** level are applied during content ingestion, helping ensure that sensitive information is protected before it becomes available for retrieval.

<figure><img src="/files/bCXFfQWhYOz6aSJv9TFw" alt=""><figcaption></figcaption></figure>

**Web Scraping Recurrence**

For supported data sources such as **URLs, SharePoint, Salesforce, and Confluence**, administrators can configure a **Web Scraping Recurrence** schedule.

This feature allows the platform to automatically re-scan and re-ingest content at predefined intervals, such as:

* Daily
* Every 2 days
* Every 4 days
* Custom recurrence schedules

Automatic re-scraping ensures that any updates made to documents, pages, or records in the source system are reflected in the platform without requiring manual intervention. When new information is added or existing content is modified, the latest version is automatically retrieved and incorporated into the knowledge base during the next scheduled ingestion cycle.

This helps keep the knowledge repository up to date and ensures users receive responses based on the most current information available.

<figure><img src="/files/tIEDUejNkYZmkipQUpZ0" alt=""><figcaption></figcaption></figure>

**Chunking Configuration**

For SharePoint content ingestion, administrators can configure **word-based chunking** settings.

Chunking is the process of splitting large documents into smaller sections before they are indexed and processed by the AI model. Administrators can define:

* The maximum number of words per chunk.
* How content should be divided for indexing and retrieval.

Proper chunk sizing can improve search accuracy and contextual understanding by ensuring information is broken into manageable and meaningful segments.

<figure><img src="/files/FF5OWJjHlJTLGRctZoi5" alt=""><figcaption></figcaption></figure>

**Chunk Overlap**

The **Chunk Overlap** setting determines how much content is shared between consecutive chunks.

For example:

* If a chunk contains 200 words and the overlap is set to **10 words**, the last 10 words of the first chunk will also appear at the beginning of the next chunk.

This overlap helps preserve context across chunk boundaries and can improve retrieval quality by ensuring important information is not lost when content is divided into multiple segments. As a result, the AI model is often better able to understand relationships between adjacent sections of a document and generate more accurate responses.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.ixhello.com/knowledge-bot/functional-documentation/functional-capabilities/data-sources/integrations/sharepoint-configuration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
