Skip to content

Manual Install Azure Resources

Sam Betts edited this page Aug 12, 2026 · 3 revisions

Manual installation - stage 1 of 3. Overview | Next: 2. Deploy the binaries

Create Azure PaaS Resources

A key pillar of Microsoft 365 Advanced Analytics Engine is Azure Application Insights and the data raised by that platform. In addition to storing the data in Application Insights, we need to export it outside of Application Insights before the 3-month retention limit, so more services in Azure are required.

Create Storage Account

Create storage account to use for web-jobs storage.

Locally Redundant Storage (LRS) is fine for this scenario, and the most economical.

A screenshot of a computer Description automatically generated

Copy the connection string for this storage account; they will be needed to configure the web-jobs later.

A screenshot of a computer Description automatically generated

Keep a copy of this key. We’ll need it for later.

Create & Configure Application Insights

Application Insights is what Microsoft 365 Advanced Analytics Engine uses to build user session data.

Create Application Insights app to receive telemetry data from SharePoint. Use the same region as your storage account to avoid unnecessary data transfer fees.

A screenshot of a computer Description automatically generated

Recommended: create a workspace-based instance, which will also create a log analytics instance too. Classic-based Application Insights will be deprecated in the coming years.

  1. Take note of the Application Insights instrumentation key, from properties blade.

    A screenshot of a computer Description automatically generated

    You also will need this instrumentation key later to configure the client-side code (AITracker.js) for Microsoft 365 Advanced Analytics Engine.

    The instrumentation key is also the "AppInsightsInstrumentationKey" value used for web-job trace logging, and optionally "APPINSIGHTS_INSTRUMENTATIONKEY" configuration value used for Azure app-service general runtime logging.

  2. Configure API access to Application Insights. Create a new API called "O365 Adv Analytics" and add permissions "Read telemetry" only. Click "generate key"

  3. Copy the key value of the new permission:

    Graphical user interface, application Description automatically generated

    The key value is the "AppInsightsApiKey" configuration value for the app-service.

  4. Back in the previous screen, copy the "Application ID" value. This is the "AppInsightsAppId" configuration value.

    Application Insights is now fully configured.

Create & Configure App Service Deployment Credentials

An Azure App Service is needed to host the web-jobs that perform the data processing in Microsoft 365 Advanced Analytics Engine: both to import the data from Application Insights, and to import activity data from Microsoft 365.

No website content is needed; it’s purely for the continuously running web-job functionality we need an App Service.

Note: It is also possible to just run these web-jobs as normal console applications on any Windows PC if App Services is not viable.

  1. Create web-app (app service) to host the import web-jobs.
    1. Create service-plan if needed. Requirements.
      1. App-plan scale: Basic (B1)important: remember to scale-up later if this is for production!
      2. Location: same location as storage account.
      3. Operating system: Windows.
  2. New App Service details:
    1. Operating system: Windows
      1. Runtime stack: ASP.NET 4.8
      2. Location: same location as storage account.
      3. Enabled Application Insights (monitoring tab): no – we don’t a separate instance from what we’ve already created.

A screenshot of a computer Description automatically generated

  1. Confirm the App Service SCM endpoint is reachable over HTTPS:
    1. The endpoint is https://<app-name>.scm.azurewebsites.net.
    2. If outbound traffic is restricted, allow TCP 443 to this hostname.
    3. If the App Service is private-only, run the deployment from a machine connected to the configured VNet with working private DNS.

Later, the website and WebJobs will be sent to this endpoint as one ZIP package – see Deploy the binaries.

More information: https://learn.microsoft.com/en-us/azure/app-service/deploy-zip

Create SQL Database for Microsoft 365 Advanced Analytics Engine

Microsoft 365 Advanced Analytics Engine data is held within a SQL Server database, either on-premises or preferably in Azure SQL Database. We recommend creating a database in Azure DB:

  1. Create new SQL Database Server..

    1. Search at the top of Azure portal "SQL" and select "SQL servers".

      A screenshot of a computer Description automatically generated

      Note: a "SQL server" is not actually a server, just a virtual endpoint which will host databases later.

      New server details:

    2. Same location as app-service.

    3. Server name as you wish.

    4. Create admin logon + password. Save these details for later. We need them to build a database connection-string.

      A screenshot of a computer Description automatically generated

    5. In networking, make sure you enable

      A screenshot of a computer error Description automatically generated

  2. ..or select existing server in same region as App Service + storage account.

  3. Create new database on the SQL server you created/selected:

    1. Basic tier should be fine initially for testing, but production databases should be on a minimum of S0.
    2. No elastic pool.
    3. Default collation for the database (SQL_Latin1_General_CP1_CI_AS).

Your database should now be ready!

The full connection-string we’ll formulate & configure later, when you deploy the binaries.

Create Azure Cache for Redis

The solution depends on a Redis instance for various caching layers, so we need to create one.

  1. Search for "Azure Cache for Redis" and create an instance.
    1. Cache type: can be basic C0, as we do not make heavy use of Redis.

A screenshot of a computer Description automatically generated

  1. Leave the defaults and let it create.
  2. Once created, copy the primary connection string, and save the value for later:

A screenshot of a computer Description automatically generated

Create Service Bus Namespace + Queue

The solution uses service-bus to queue asynchronous events for background processing, for example incoming call notifications.

  1. Search for "Service Bus" and create a new namespace.

A screenshot of a computer Description automatically generated

Basic tier is enough for our needs for this solution, for now.

  1. Once the namespace is created, we need to add a queue with name "graphcalls".

    A screenshot of a computer Description automatically generated

    The default values are fine.

  2. Add access policy to the namespace root.

A screenshot of a computer Description automatically generated

  1. Name "ListenAndSendPolicy", permissions "listen" and "send".
    1. Once created, click on the policy to copy the connection string:

      A screenshot of a computer Description automatically generated

    2. At the end of this copied value, add to the end ";EntityPath=graphcalls" (no quotes).

    3. Your connection-string should look like something this:

      Endpoint=sb://contosoanalytics.servicebus.windows.net/;SharedAccessKeyName=ListenAndSendPolicy;SharedAccessKey=XYZ=;EntityPath=graphcalls

    4. Save Service-Bus connection-string value & store for later:

Optional: Cognitive Services

The solution can use cognitive services to extract sentiment analysis from Teams channel chat and other areas of Microsoft 365, if enabled. If this is wanted, we need to create a service for it.

Search for "cognitive services" in the marketplace.

A screenshot of a computer Description automatically generated

Create a new resource.

A screenshot of a computer Description automatically generated

Ensure the same location is used as the rest of the solution.

Once created, copy the endpoint & 1st key values & store for later.

A screenshot of a computer Description automatically generated

All Azure PaaS resources have now been created!


Next: Stage 2 - Deploy the binaries - publish the web-jobs and website, then set the connection strings and app settings.

Clone this wiki locally