Skip to content

Licence vs Actual Service Usage

The question it answers: Who is licensed for Exchange, OneDrive, SharePoint and Teams but used none of them in 90 days, or only reads email?

Who is licensed for Exchange, OneDrive, SharePoint and Teams but used none of them in 90 days, and who pays for a full suite but only reads email - candidates for removal or for a cheaper plan.

Where in the appLicensing › Licence vs Usage
WorkloadLicensing
KindTable
DataBuilt from the tenant data IntensiveReports keeps in memory and refreshes in the background, so it opens at once.
LicenceNo extra licence needed.
Report id (API and MCP)entra.licensing.licence-usage
ColumnKeyType
UserDisplayNameLink
UPNUserPrincipalNameText
PatternUsagePatternStatus
ExchangeExchangeText
OneDriveOneDriveText
SharePointSharePointText
TeamsTeamsText
Last activityLastActivityAnyWorkloadDate
EnabledAccountEnabledYesNo
ProductsAssignedProductsText
FilterKey (API)On when the page opens
Only unused and email-only userscandidatesYes

Licence: No extra licence needed.

Application permissions on the IntensiveReports app registration (all permissions):

PermissionAPIWhat it allowsNote
Reports.Read.AllMicrosoft GraphRead all usage reports
User.Read.AllMicrosoft GraphRead all users’ full profiles
User-LifeCycleInfo.Read.AllMicrosoft GraphRead all users’ lifecycle information
Data sources it reads
  • GET /v1.0/reports/getOffice365ActiveUserDetail(period='D90')
  • GET /v1.0/users
GET /ir-api/v1/reports/entra.licensing.licence-usage?size=100
GET /ir-api/v1/reports/entra.licensing.licence-usage?filter=candidates

An AI assistant reads it with the MCP tool get_report and the id entra.licensing.licence-usage. The client needs the Read grant for Licensing. See Using the API.