Skip to content

Overview

IntensiveReports runs on your own Windows server. It reads your Microsoft 365 tenant with an app registration you create, builds the reports in memory and shows them to people in their browser. This section is for the administrator who installs and runs it.

PartWhat it is
Web appOne ASP.NET Core application hosted in IIS. People open it in a browser; there is nothing to install on their computers.
App registrationOne Entra ID app registration in your tenant. It holds the application permissions IntensiveReports reads with, a client secret and a certificate. See Entra app registration.
PowerShell modulesMicrosoft Graph, Exchange Online, PnP (SharePoint) and Microsoft Teams modules, installed on the server. Some reports read through them.
CertificateIn the server’s machine certificate store. The PowerShell modules sign in with it.
appsettings.jsonThe server’s configuration file in the site folder: tenant, app registration, sign-in and security settings. See Configuration.
App_Data folderSettings made in the app, the dashboard history and the API clients. See What is stored on disk.
Log folderOne log file per day, C:\IntensiveReportsLogs\ unless you change it.

There is no database. SQL Server is not needed.

  1. When the app starts, it signs in to Microsoft 365 as the app registration (app-only, no user involved).
  2. It reads the core data (users, groups, devices, licences, Conditional Access policies and more) in the background. The first pages are usable while this runs.
  3. A timer keeps every data set current. Each one has its own refresh interval, from 5 minutes to 6 hours.
  4. Reports that need slow calls or PowerShell load when someone first opens them and are then kept for a while. Scans run only when someone starts them.
  5. People see the results in their browser. Exports (CSV, Excel, PDF), the report API and the MCP server read the same data.

Details and intervals: Data and cache.

IntensiveReports only reads. No report changes anything in Microsoft 365. The permissions are application permissions with admin consent, almost all of them read-only. A few Microsoft APIs have no read-only permission for the data some reports need; those permissions are not granted unless you ask for them with a switch of the setup script (Entra app registration).

The data read from Microsoft 365 is kept in the server’s memory only. It is never written to disk.

  • When the app restarts (an update, an app pool recycle, a server reboot), the data is gone and the app reads it again. Pages show a loading state until their data is back.
  • Results of on-demand reports and scans are gone too. Scans must be run again.
  • IIS stops an idle app pool after 20 minutes by default. Set the pool to always running so this does not happen (Requirements).
WhatWhereWritten by
Settings for everyone (thresholds, cache, display defaults)App_Data\IntensiveReports.settings.json, plus the built-in defaults and the version before the last save next to itadministrators, on the Settings page
Dashboard history (trend charts)App_Data\IntensiveReports.history.json, 400 daysthe app, after each refresh of a dashboard figure
API clients and the API on/off switchApp_Data\IntensiveReports.api-clients.jsonadministrators, Settings > API access
API audit logApp_Data\api-audit\<date>.jsonl, one line per call, 90 daysthe app
Licence prices for the chargeback reporta JSON file in App_Datathe licence chargeback report
Log<LoggingRootPath>\IntensiveReports<date>.txt, 31 filesthe app
Personal preferences (theme, language, date format)a cookie in each person’s browsereach user

Back up the App_Data folder and appsettings.json (Operations). An update never touches them (Updating).

FromToWhy
People’s browsersyour IntensiveReports site (HTTPS, WebSockets)the app itself
People’s browserslogin.microsoftonline.comsigning in
The serverlogin.microsoftonline.comtokens for the app registration
The servergraph.microsoft.commost reports
The serverExchange Online, SharePoint Online, Microsoft Teams and Microsoft Purview endpointsreports that read through PowerShell
The servermanagement.azure.com, api.bap.microsoft.com, api.powerapps.com, api.flow.microsoft.com, api.security.microsoft.com, api.securitycenter.microsoft.com, ai.azure.comAzure, Power Platform, Defender and AI agent reports (only if you use them)
The serverdownload.microsoft.comMicrosoft’s list of licence product names
Scripts and AI assistantsyour site’s /ir-api/v1 and /ir-mcpthe report API and MCP server, off until you switch it on

All connections are outbound HTTPS (port 443). Nothing in Microsoft 365 connects to your server.

  1. Requirements
  2. Entra app registration
  3. Installation
  4. Configuration and Sign-in and access