Skip to content
LicenseMeter

Licensed users who were never active

A seat that never started: the license was assigned, the invoice arrived, and the user never signed in and never touched a workload. These accounts look perfectly healthy in the admin center because there is nothing wrong with them, except that nobody is behind them.

Where never-active seats come from

Licenses get assigned ahead of onboarding for a start date that moved, for a project that fizzled before kickoff, or by an over-broad group rule that licenses everyone in a department including service and test accounts. The user object exists, the license is consumed, and from the billing side the seat is indistinguishable from a productive one.

Nothing cleans these up on its own. The account never appears in sign-in logs, so activity-based reports simply omit it, and the license report shows it as assigned, which reads as fine. Unless someone explicitly asks which licensed accounts have never been active, the seat renews forever.

Detect it manually

With Entra ID P1 you can read each user's signInActivity through Graph PowerShell and look for licensed accounts where it is empty:

Connect-MgGraph -Scopes 'User.Read.All', 'AuditLog.Read.All'
Get-MgUser -All -Property 'displayName,userPrincipalName,createdDateTime,signInActivity,assignedLicenses' |
  Where-Object {
    $_.AssignedLicenses.Count -gt 0 -and
    -not $_.SignInActivity.LastSignInDateTime
  } | Select-Object DisplayName, UserPrincipalName, CreatedDateTime
  • Reading signInActivity requires an Entra ID P1 or P2 license in the tenant plus the AuditLog.Read.All permission; without P1 the property is unavailable and you have to correlate per-workload usage reports instead.
  • An empty lastSignInDateTime also occurs when the last sign-in predates April 2020, and a brand-new account has not had a fair chance yet: compare createdDateTime before acting on the list.

How LicenseMeter detects it

LicenseMeter joins Entra sign-in activity with per-workload usage reports (Exchange, OneDrive, SharePoint, Teams) into one last-activity timestamp per user. The rule fires when a licensed account has no observed activity from either source and the account is at least 30 days old, a grace period that keeps freshly created accounts from being flagged during onboarding.

The rule needs a reliable per-user activity signal. If the tenant has no Entra ID P1, detection falls back to the per-workload usage reports alone; if report names are also concealed, per-user inactivity rules are skipped entirely and an aggregate finding reports how many users show no activity, with a hint on how to enable identifiable report names.

The findings list in the demo workspace: filter by rule, select the affected seats, acknowledge in bulk.

What it costs

A never-active finding is priced at the full monthly cost of every SKU the account holds, from the per-tenant price book prefilled with list-price estimates and editable to your negotiated rates.

In the 155-person sample tenant, never-active and long-inactive seats together waste € 751,58 a month across Microsoft 365 and connected apps.

Sample figures come from the deterministic demo workspace, not from customer data. The waste calculator turns your own seat count into an estimate.

Related waste patterns

See which of your seats match this pattern.

Connect read-only and the free scan lists every affected account in your tenant, priced per seat and per month, with a PowerShell remediation script your IT reviews and runs.

Run my free scan

After the free scan, 14 days of full monitoring, free. No credit card, read-only access.