Home
Home
German Version
Support
Impressum
25.2 Release ►

Start Chat with Collection

    Main Navigation

    • Preparation
      • Connectors
      • Create an InSpire VM on Hyper-V
      • Initial Startup for G7 appliances
      • Setup InSpire G7 primary and Standby Appliances
    • Datasources
      • Configuration - Atlassian Confluence Connector
      • Configuration - Best Bets Connector
      • Configuration - Box Connector
      • Configuration - COYO Connector
      • Configuration - Data Integration Connector
      • Configuration - Documentum Connector
      • Configuration - Dropbox Connector
      • Configuration - Egnyte Connector
      • Configuration - GitHub Connector
      • Configuration - Google Drive Connector
      • Configuration - GSA Adapter Service
      • Configuration - HL7 Connector
      • Configuration - IBM Connections Connector
      • Configuration - IBM Lotus Connector
      • Configuration - Jira Connector
      • Configuration - JVM Launcher Service
      • Configuration - LDAP Connector
      • Configuration - Microsoft Azure Principal Resolution Service
      • Configuration - Microsoft Dynamics CRM Connector
      • Configuration - Microsoft Exchange Connector
      • Configuration - Microsoft File Connector (Legacy)
      • Configuration - Microsoft File Connector
      • Configuration - Microsoft Graph Connector
      • Configuration - Microsoft Loop Connector
      • Configuration - Microsoft Project Connector
      • Configuration - Microsoft SharePoint Connector
      • Configuration - Microsoft SharePoint Online Connector
      • Configuration - Microsoft Stream Connector
      • Configuration - Microsoft Teams Connector
      • Configuration - Salesforce Connector
      • Configuration - SCIM Principal Resolution Service
      • Configuration - SemanticWeb Connector
      • Configuration - ServiceNow Connector
      • Configuration - Web Connector
      • Configuration - Yammer Connector
      • Data Integration Guide with SQL Database by Example
      • Indexing user-specific properties (Documentum)
      • Installation & Configuration - Atlassian Confluence Sitemap Generator Add-On
      • Installation & Configuration - Caching Principal Resolution Service
      • Installation & Configuration - Mindbreeze InSpire Insight Apps in Microsoft SharePoint On-Prem
      • Mindbreeze InSpire Insight Apps in Microsoft SharePoint Online
      • Mindbreeze Web Parts for Microsoft SharePoint
      • User Defined Properties (SharePoint 2013 Connector)
      • Whitepaper - Mindbreeze InSpire Insight Apps in Salesforce
      • Whitepaper - Web Connector - Setting Up Advanced Javascript Usecases
    • Configuration
      • CAS_Authentication
      • Configuration - Alerts
      • Configuration - Alternative Search Suggestions and Automatic Search Expansion
      • Configuration - Back-End Credentials
      • Configuration - Chinese Tokenization Plugin (Jieba)
      • Configuration - CJK Tokenizer Plugin
      • Configuration - Collected Results
      • Configuration - CSV Metadata Mapping Item Transformation Service
      • Configuration - Entity Recognition
      • Configuration - Exporting Results
      • Configuration - External Query Service
      • Configuration - Filter Plugins
      • Configuration - GSA Late Binding Authentication
      • Configuration - Identity Conversion Service - Replacement Conversion
      • Configuration - InceptionImageFilter
      • Configuration - Index-Servlets
      • Configuration - InSpire AI Chat and Insight Services for Retrieval Augmented Generation
      • Configuration - Item Property Generator
      • Configuration - Japanese Language Tokenizer
      • Configuration - Kerberos Authentication
      • Configuration - Management Center Menu
      • Configuration - Metadata Enrichment
      • Configuration - Metadata Reference Builder Plugin
      • Configuration - Mindbreeze Proxy Environment (Remote Connector)
      • Configuration - Personalized Relevance
      • Configuration - Plugin Installation
      • Configuration - Principal Validation Plugin
      • Configuration - Profile
      • Configuration - Reporting Query Logs
      • Configuration - Reporting Query Performance Tests
      • Configuration - Request Header Session Authentication
      • Configuration - Shared Configuration (Windows)
      • Configuration - Vocabularies for Synonyms and Suggest
      • Configuration of Thumbnail Images
      • Cookie-Authentication
      • Documentation - Mindbreeze InSpire
      • I18n Item Transformation
      • Installation & Configuration - Outlook Add-In
      • Installation - GSA Base Configuration Package
      • JWT Authentication
      • Language detection - LanguageDetector Plugin
      • Mindbreeze Personalization
      • Mindbreeze Property Expression Language
      • Mindbreeze Query Expression Transformation
      • SAML-based Authentication
      • Trusted Peer Authentication for Mindbreeze InSpire
      • Using the InSpire Snapshot for Development in a CI_CD Scenario
      • Whitepaper - AI Chat
      • Whitepaper - Create a Google Compute Cloud Virtual Machine InSpire Appliance
      • Whitepaper - Create a Microsoft Azure Virtual Machine InSpire Appliance
      • Whitepaper - Create AWS 10M InSpire Appliance
      • Whitepaper - Create AWS 1M InSpire Appliance
      • Whitepaper - Create AWS 2M InSpire Appliance
      • Whitepaper - Create Oracle Cloud 10M InSpire Application
      • Whitepaper - Create Oracle Cloud 1M InSpire Application
      • Whitepaper - MMC_ Services
      • Whitepaper - Natural Language Question Answering (NLQA)
      • Whitepaper - SSO with Microsoft AAD or AD FS
      • Whitepaper - Text Classification Insight Services
    • Operations
      • Adjusting the InSpire Host OpenSSH Settings - Set LoginGraceTime to 0 (Mitigation for CVE-2024-6387)
      • app.telemetry Statistics Regarding Search Queries
      • CIS Level 2 Hardening - Setting SELinux to Enforcing mode
      • Configuration - app.telemetry dashboards for usage analysis
      • Configuration - Usage Analysis
      • Deletion of Hard Disks
      • Handbook - Backup & Restore
      • Handbook - Command Line Tools
      • Handbook - Distributed Operation (G7)
      • Handbook - Filemanager
      • Handbook - Indexing and Search Logs
      • Handbook - Updates and Downgrades
      • Index Operating Concepts
      • Inspire Diagnostics and Resource Monitoring
      • Provision of app.telemetry Information on G7 Appliances via SNMPv3
      • Restoring to As-Delivered Condition
      • Whitepaper - Administration of Insight Services for Retrieval Augmented Generation
    • User Manual
      • Browser Extension
      • Cheat Sheet
      • iOS App
      • Keyboard Operation
    • SDK
      • api.chat.v1beta.generate Interface Description
      • api.v2.alertstrigger Interface Description
      • api.v2.export Interface Description
      • api.v2.personalization Interface Description
      • api.v2.search Interface Description
      • api.v2.suggest Interface Description
      • api.v3.admin.SnapshotService Interface Description
      • Debugging (Eclipse)
      • Developing an API V2 search request response transformer
      • Developing Item Transformation and Post Filter Plugins with the Mindbreeze SDK
      • Development of a Query Expression Transformer
      • Development of Insight Apps
      • Embedding the Insight App Designer
      • Java API Interface Description
      • OpenAPI Interface Description
    • Release Notes
      • Release Notes 20.1 Release - Mindbreeze InSpire
      • Release Notes 20.2 Release - Mindbreeze InSpire
      • Release Notes 20.3 Release - Mindbreeze InSpire
      • Release Notes 20.4 Release - Mindbreeze InSpire
      • Release Notes 20.5 Release - Mindbreeze InSpire
      • Release Notes 21.1 Release - Mindbreeze InSpire
      • Release Notes 21.2 Release - Mindbreeze InSpire
      • Release Notes 21.3 Release - Mindbreeze InSpire
      • Release Notes 22.1 Release - Mindbreeze InSpire
      • Release Notes 22.2 Release - Mindbreeze InSpire
      • Release Notes 22.3 Release - Mindbreeze InSpire
      • Release Notes 23.1 Release - Mindbreeze InSpire
      • Release Notes 23.2 Release - Mindbreeze InSpire
      • Release Notes 23.3 Release - Mindbreeze InSpire
      • Release Notes 23.4 Release - Mindbreeze InSpire
      • Release Notes 23.5 Release - Mindbreeze InSpire
      • Release Notes 23.6 Release - Mindbreeze InSpire
      • Release Notes 23.7 Release - Mindbreeze InSpire
      • Release Notes 24.1 Release - Mindbreeze InSpire
      • Release Notes 24.2 Release - Mindbreeze InSpire
      • Release Notes 24.3 Release - Mindbreeze InSpire
      • Release Notes 24.4 Release - Mindbreeze InSpire
      • Release Notes 24.5 Release - Mindbreeze InSpire
      • Release Notes 24.6 Release - Mindbreeze InSpire
      • Release Notes 24.7 Release - Mindbreeze InSpire
      • Release Notes 24.8 Release - Mindbreeze InSpire
      • Release Notes 25.1 Release - Mindbreeze InSpire
      • Release Notes 25.2 Release - Mindbreeze InSpire
    • Security
      • Known Vulnerablities
    • Product Information
      • Product Information - Mindbreeze InSpire - Standby
      • Product Information - Mindbreeze InSpire
    Home

    Path

    Sure, you can handle it. But should you?
    Let our experts manage the tech maintenance while you focus on your business.
    See Consulting Packages

    Mindbreeze InSpire Insight Applications in Microsoft SharePoint Online

    IntroductionPermanent link for this heading

    This document describes the integration of Mindbreeze InSpire Insight Applications with Microsoft SharePoint Online.

    Both classic sites and modern sites are supported in SharePoint Online, but there are different Mindbreeze InSpire integrations for them. See the official Microsoft documentation for more information on classic and modern sites:

    https://support.microsoft.com/en-us/office/sharepoint-classic-and-modern-experiences-5725c103-505d-4a6e-9350-300d3ec7d73f

    You can also replace the standard SharePoint Online search with Mindbreeze InSpire search. Please read the chapter "Classic / Modern Sites: Changing the search results page".

    Software PrerequisitesPermanent link for this heading

    The descriptions and instructions contained in this document are based on Microsoft SharePoint Online.

    Classic Sites: Embedding an Insight ApplicationPermanent link for this heading

    If you want to embed a Mindbreeze InSpire Insight App in a classic site, this chapter provides the necessary configuration steps.

    Mindbreeze InSpire Insight Apps are stored as text documents in Microsoft SharePoint and embedded in pages with the “Content Editor” Web Part. Thus, an insight application can be used on multiple pages and still remain easy to maintain.

    Saving an Insight Application in a text documentPermanent link for this heading

    Copy the snippet from the Mindbreeze InSpire Designer into a text document. Click here for more information: Development of Insight Apps.

    Uploading the text documentPermanent link for this heading

    Upload the document to a document library:

    Important note: The “Application” object in (searchapp.txt) must include the query parameters “K” of Microsoft SharePoint online:

    <script>

    Mindbreeze.require(["client/application"], function(Application) {    

    window.appmb = new Application({ queryURLParameter: "k" });

    });

    </script>

    Copy the address of the document to the clipboard:

    Note: The above link is the URL of the document preview page.

    Change the URL to the following and copy it:

    https://<your-tenant>.sharepoint.com/sites/<your-site>/Shared%20Documents/searchapp.txt

    Note: Replace the brackets with your tenant name and site name. Copy the adjusted URL in a new bowser tab and make sure that it is working.

    Creating a new Web Part pagePermanent link for this heading

    Navigate to “Site Contents” > “Site Pages“:

    Create a new “Web Part Page”:

    Choose a name and design. Create the page:

    Add a new “Content Editor” Web Part:

    Note: The “Content Editor” web part is not supported for modern pages (or Sites) according to Microsoft’s official documentation.

    To create a classic site, please refer to the following link:

    https://docs.microsoft.com/en-us/sharepoint/create-site-collection#create-a-classic-site

    Edit the Web Part settings:

    Insert the address (adjusted URL) of the text document in “Content Link”, then click “Apply”:

    Click “Stop Editing” to finish editing a page: Click

    Modern Sites: Embedding an Insight ApplicationPermanent link for this heading

    To redirect the search results to a modern site, you will need to add and configure a script editor web part. Please follow these steps:

    Step 1: Download and deploy the “App” to your tenantPermanent link for this heading

    1. First, download “Mindbreeze Microsoft SharePoint Online Search Extension Plugin.zip” from the Mindbreeze update center.
    1. Then, go to your tenant's app catalog: https://<tenant>.sharepoint.com/sites/AppCatalog/AppCatalog

    Note: In case the App Catalog is not yet created, please follow this link to create a new one:

    https://docs.microsoft.com/en-us/sharepoint/dev/spfx/set-up-your-developer-tenant#create-app-catalog-site

    1. From the left menu click “Apps for SharePoint” library. Then, upload the sppkg or drag and drop.


    2. Click “Deploy” from the popup window.
    1. Make sure the package is deployed without errors.

    Step 2: Install the “App” into your modern sitePermanent link for this heading

    From the site “Home” page, Click “+New” > “App”.

    From “Apps you can add” section, click on “Modern Script Editor web part” to install it.

    1. Note: Please wait for a minute until the app is installed and not grayed out in the “Site Contents” list.
    2. You may need to refresh the page if it is still grayed out.

    Step 3: Create a new result landing page Permanent link for this heading

    1. From the site’s “Home” page, click “+New” then choose “Page”.
      1. Choose “Blank” and click “Create page”.


    Type a name for your page and click “Publish”.

    Step 4: Add and configure the “Modern Script Editor” web partPermanent link for this heading

    1. From the top right of the page, click on “Edit”. Then click on the plus icon to add a new web part.


    1. Type “script” in the search box and choose “Modern Script Editor”.

    1. Click on “Edit Markup”. The configuration pane is opened on the right. Click on “Edit HTML code”.

    1. Copy and paste the content of your insight app (exported from the Mindbreeze InSpire Designer) into the shown code editor.

    Step 5: Important changes needed inside the code snippetPermanent link for this heading

    Change the queryURLParameter and export to the window objectPermanent link for this heading

    At the last <script> tag of the copy/pasted html code snippet, you have to change the following:

    Before:

    <script>Mindbreeze.require(["client/application"], function(Application) {  

       var application = new Application({

         rootEL: document.getElementById("mb-custom-searchapp-wrapper")

       });

      });

    </script>

    After:

    <script>Mindbreeze.require(["client/application"], function(Application) {  

       window.appmb = new Application({

         rootEL: document.getElementById("mb-custom-searchapp-wrapper"),

          queryURLParameter: "k"

       });

    });

    </script>

    Add a listener to Microsoft search box events:Permanent link for this heading

    Additionally, in the same <script> tag, we have to add the following listener to reuse the search box and to redirect the search queries:

    Before:

    <script>Mindbreeze.require(["client/application"], function(Application) {  

       window.appmb = new Application({

         rootEL: document.getElementById("mb-custom-searchapp-wrapper"),

          queryURLParameter: "k"

       });

      });

    </script>

    After:

    <script>Mindbreeze.require(["client/application"], function(Application) {  

       window.appmb = new Application({

         rootEL: document.getElementById("mb-custom-searchapp-wrapper"),

          queryURLParameter: "k"

       });

      });

      window.O365Shell.Search.OnSubmitSearch(function(query) {

          window.appmb.setUnparsedUserQuery(query);

      });

    </script>

    Resolve the styling conflictsPermanent link for this heading

    To resolve the styling conflicts between SharePoint Online and Mindbreeze, you have to edit the <link> tag exists at the top (first line) of the insight app snippet:

    Before:

    <link href="https://<your-inspire>/apps/designer/../css/adapted.css" rel="stylesheet">

    After:

    <link href="https://<your-inspire>/apps/designer/../css/v2/minimal-prefixed-adapted.css" rel="stylesheet">

    1. Finally, click on “Save”.
    1. And then click on “Republish” to make the changes effective.

    Step 6: Activate Single Sign-On (optional, recommended)Permanent link for this heading

    If you configure Single Sign-On (SSO), the user logged into SharePoint Online is automatically logged into the embedded Mindbreeze InSpire Insight App (via OAuth 2 and JWT). Otherwise, the user must additionally log in again using the authentication method configured on the appliance.

    When you configure SSO, authentication works as follows (see also chart below):

    1. Login to SharePoint Online (if user is not already logged in):
      1. User logs into SharePoint Online via Microsoft Azure by entering username / password
      2. Azure responds with a JWT (OAuth 2 Access Token)
    2. Search via Mindbreeze InSpire Insight App Integration:
      1. A JWT is requested for the Mindbreeze InSpire API app during the first search.
      2. In the search request to the Mindbreeze InSpire Client Service, this JWT is sent along. This is validated at the client service (signature check, claim validation) and the UPN (user principal name) is extracted.
      3. The most relevant documents for the searching user are fetched from the Mindbreeze InSpire index to display them in the results list.

    Please perform the following steps to configure SSO.

    Azure app registration and permissionsPermanent link for this heading

    Register a new app in the Azure portal by clicking “+ New registration”: https://portal.azure.com/#blade/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/RegisteredApps

    Then assign the name “Mindbreeze InSpire API”. If you want to support accounts coming from another Azure AD directory, select “Accounts in any organizational directory”. Redirect URI is not required and can therefore be left empty. Confirm your entries with the “Register” button.

    Next, click “Expose an API” in the menu and then click “+ Add a scope”. If no Application ID has been created for this app yet, you will be prompted to define one (default value: api://<Client ID>). The default value is perfectly sufficient. Confirm your entries with the “Save and continue” button.

    Assign the value "Search" as the "Scope name", fill in the other mandatory fields and confirm your selection with “Add scope”.

    Add the scope you just created as a permission. To do this, go to "API permissions" and then "Add a permission". Then, in the "My APIs" tab, select the app you created (not shown in the screenshot). Select the permission and confirm your selection by clicking the "Add permissions" button.

    Agree to the permission by clicking "Grant admin consent for <Tenant>".

    The next step is to add a permission for the “SharePoint Online Client Extensibility Web Application Principle”. To do this, go back to the section “Home” at the top left and click on “App registrations”. Switch to the tab “All applications” and search for “SharePoint”. The SharePoint Online Client Extensibility Web Application Principal should be suggested as an application.

    In the SharePoint Online Client Extensibility Web Application Principal, click on the menu item “API permissions”. Click on “Add a permission” to add a permission.

    Switch to the tab “My APIs” and select the API you want to use. In this case it is “Mindbreeze InSpire API”.

    Select the permission you want to use by ticking the box next to the permission. Then click on “Add permissions”.

    Finally, the consent of the admin must be granted. Click on ”Grant admin consent for <Tenant>”.

    Confirm this by clicking on “Yes”.

    The desired permission for the SharePoint Online Client Extensibility Web Application Principal is now configured and you can use the Mindbreeze InSpire API.

    Client Service configurationPermanent link for this heading

    In order for JWTs issued by the created AAD App to be validated in Mindbreeze InSpire and for the UPN of the logged-in user to be read, JWT Authentication must be enabled and configured in Mindbreeze InSpire.

    To do this, go to Configuration in the Mindbreeze Management Center. Then switch to the Client Services tab and activate Advanced Settings. Then scroll to the JWT Authentication Settings section and configure the settings as follows:

    • Enable JWT Authentication: yes
    • Optional JWT Authentication: yes (so that e.g. SAML can be used as fallback)
    • JWK JSON: open https://login.microsoftonline.com/<tenant-id>/discovery/v2.0/keys in a browser (replace <tenant-id> with the Azure tenant, not to be confused with the client ID; the tenant ID can be found, for example, in the Azure Portal in the created app under Overview with the name Directory (tenant) ID). Then copy the JSON.
    • Configure Required Claims Patterns (+ Add Property)
      • Required Claims Patterns[1]
        • Claim Name: aud
        • Claim Pattern: the application ID of the created app, can be found in the Azure portal in the app under Expose to API, e.g. api://<uuid>
      • Required Claims Patterns[2]
        • Claim Name: iss
        • Claim Pattern: https://sts.windows.net/<tenant-id>/ (replace <tenant-id> with the Azure tenant)
      • Required Claims Patterns[3]
        • Claim Name: scp
        • Claim Pattern: Search
    • JWT Identity Claim Name: upn

    Adapting the Insight AppPermanent link for this heading

    The bearer token (JWT) is required for every request sent to the Mindbreeze appliance. Therefore, you need to configure the JavaScript Application object so that it gets the token from the mindbreezeAPITokenProvider and then adds it to the Authorization headers.

    This can be done in the following way:

    Before:

    <script >
      Mindbreeze.require(["client/application"], function(Application) {
        var application = new Application({
          rootEL: document.getElementById("mb-custom-searchapp-wrapper")
        });
      });
    </script>

    After:

    <script>Mindbreeze.require(["client/application"], function(Application) {

            var appliaction = new Application({

                queryURLParameter: "k",

                ajaxOptions: {

                    requestHeadersAsync: function(url, callback) {

                        getToken(callback);

                   }

                },

                rootEl: document.getElementById("mb-custom-searchapp-wrapper")

            });

        });

        window.O365Shell.Search.OnSubmitSearch( function(query) {

        window.appmb.setUnparsedUserQuery(query);

        });

        

        function getToken(callback) {

            window.mindbreezeAPITokenProvider.getToken(<APP_ID_URI>)

            .then((accessToken) => {

                callback( null, {'Authorization':  'Bearer ' + accessToken});

            }).catch((error) => {

                callback( 'Unable to get the token');

            });

        }

    </script>

    NOTE: You have to pass to the function mindbreezeAPITOkenProvider.getToken(…)the APP ID URI of the registered App in Azure AD.

    This can be seen in the overview page of the registered app, for e.g.:

    Classic / Modern Sites: Change the search results pagePermanent link for this heading

    In order to use Mindbreeze InSpire search instead of the standard SharePoint Online search on a site (classic site or modern site), additional configuration steps are required.

    Click on the gear icon “Site Contents”

    Click on “Site Settings”

    Go to the search section, then click on the “Search Settings” link.

    Then we will get into the “Search Settings” configuration page.

    Under “Which search results page should queries be sent to?”:

    • Select the radio button “Send queries to a custom results page URL”
    • Enter the custom search result page in “Result Page URL”.

    Click on the OK button – then wait for a minute to get the changes affected.

    Now, search for something in the top search box and hit enter – you should be redirected to the configured results page.

    TroubleshootingPermanent link for this heading

    Cross-origin resource sharing (CORS)Permanent link for this heading

    For security reasons, browsers restrict cross-origin HTTP requests initiated from scripts. In this case, when you open https://{mytenant}.sharepoint.com in a browser, a script from your appliance’s web server is loaded. This script then initiates XHR requests to your appliance, which is not allowed by the CORS policies by default. To allow requests from your SharePoint tenant to your appliance, you need to add your SharePoint tenant in the allowed origins of the CORS settings of your appliance. Configure the following in the Mindbreeze Management Center:

    Configuration > Client Services > Advanced Settings

    You can find further information in Documentation – Mindbreeze InSpire – CORS Header.

    Please note that changing the “Allowed Origins Pattern” option manually will overwrite the default values, see also Documentation – Mindbreeze InSpire – Default values.

    Download PDF

    • Mindbreeze InSpire Insight Apps in Microsoft SharePoint Online

    Content

    • Introduction
    • Software Prerequisites
    • Classic Sites: Embedding an Insight Application
    • Modern Sites: Embedding an Insight Application
    • Classic / Modern Sites: Change the search results page
    • Troubleshooting

    Download PDF

    • Mindbreeze InSpire Insight Apps in Microsoft SharePoint Online