Skip to content

Teams Phone Numbers & Calling Licence Usage

The question it answers: Which acquired phone numbers are unassigned, and which Calling Plan licences are not used?

Acquired phone numbers cost money whether they are assigned or not, and Calling Plan licences are wasted on users without a number or who never make PSTN calls. This report lists unassigned numbers and calling licences without use.

Where in the appTenant › Teams Voice, Power Platform & Copilot › Phone Numbers & Calling Licences
WorkloadTeams and collaboration
KindFindings list · dashboard tile
DataRead from Microsoft 365 when someone first opens it, then kept for the report cache lifetime (Settings > Data & cache, 1 hour unless changed). It reads through PowerShell (Exchange Online or SharePoint Online), so the first load takes longer than a Graph report.
LicenceTeams Phone / Calling Plans.
Report id (API and MCP)tenant.collaboration.phone-numbers
ColumnKeyType
SeveritySeverityStatus
FindingCategoryText
Number / userSubjectLink
CheckSettingText
Type / plansValueText
FindingFindingText
DetailDetailText
DateWhenDate
CountNumberNumber

A findings list hides columns that no row fills. Severity is Critical, Serious, Warning, OK or Info; rows rated Critical, Serious or Warning need attention (Working with findings).

Licence: Teams Phone / Calling Plans.

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

PermissionAPIWhat it allowsNote
Organization.Read.AllMicrosoft GraphRead organization information
CallRecords.Read.AllMicrosoft GraphRead all call records
User.Read.AllMicrosoft GraphRead all users’ full profiles
User-LifeCycleInfo.Read.AllMicrosoft GraphRead all users’ lifecycle information

Roles and other setup:

  • Teams PowerShell app-only (certificate)
Data sources it reads
  • Get-CsPhoneNumberAssignment
  • GET /v1.0/subscribedSkus
  • GET /v1.0/communications/callRecords/getPstnCalls
  • GET /v1.0/communications/callRecords/getDirectRoutingCalls
  • GET /v1.0/users (cached)
GET /ir-api/v1/reports/tenant.collaboration.phone-numbers?size=100

An AI assistant reads it with the MCP tool get_report and the id tenant.collaboration.phone-numbers. The client needs the Read grant for Teams and collaboration. See Using the API.