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.
At a glance
Section titled “At a glance”| Where in the app | Licensing › Licence vs Usage |
| Workload | Licensing |
| Kind | Table |
| Data | Built from the tenant data IntensiveReports keeps in memory and refreshes in the background, so it opens at once. |
| Licence | No extra licence needed. |
| Report id (API and MCP) | entra.licensing.licence-usage |
Columns
Section titled “Columns”| Column | Key | Type |
|---|---|---|
| User | DisplayName | Link |
| UPN | UserPrincipalName | Text |
| Pattern | UsagePattern | Status |
| Exchange | Exchange | Text |
| OneDrive | OneDrive | Text |
| SharePoint | SharePoint | Text |
| Teams | Teams | Text |
| Last activity | LastActivityAnyWorkload | Date |
| Enabled | AccountEnabled | YesNo |
| Products | AssignedProducts | Text |
Filters
Section titled “Filters”| Filter | Key (API) | On when the page opens |
|---|---|---|
| Only unused and email-only users | candidates | Yes |
What it needs
Section titled “What it needs”Licence: No extra licence needed.
Application permissions on the IntensiveReports app registration (all permissions):
| Permission | API | What it allows | Note |
|---|---|---|---|
Reports.Read.All | Microsoft Graph | Read all usage reports | |
User.Read.All | Microsoft Graph | Read all users’ full profiles | |
User-LifeCycleInfo.Read.All | Microsoft Graph | Read all users’ lifecycle information |
Data sources it reads
GET /v1.0/reports/getOffice365ActiveUserDetail(period='D90')GET /v1.0/users
Through the API and MCP
Section titled “Through the API and MCP”GET /ir-api/v1/reports/entra.licensing.licence-usage?size=100GET /ir-api/v1/reports/entra.licensing.licence-usage?filter=candidatesAn 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.