Users and Licenses¶
The Users & Licenses dashboard is the unused-licence analysis: paid seats nobody uses, licensed users who never signed in, disabled accounts that still hold licences, adoption, guests and permission sprawl.
Open it with Select Analysis > Users & Licenses.
Image of the Users & Licenses dashboard: Monthly License Waste, Never Active, Disabled but Licensed and Orphaned Grants cards, License Inventory table and Adoption Funnel
../images/dashboards/users-licenses.png
Before you begin¶
- The Microsoft Graph collectors for users, groups, group members, subscribed SKUs and licence assignments run without errors. They need the Graph application permissions checked by Validate the Connection. See API Permissions.
- Activity collection has run for a while. A user counts as active once the Power BI activity log shows any event for them since MetaMiner's activity history began, so a new installation reports more never-active users at first.
How it works¶
The seat, waste and dormancy figures come from a daily licence snapshot that the licence-waste job rebuilds every 6 hours (see Data Freshness). They are population figures: tenant-wide, or the members of one Entra group when you set a user-population scope. They are not capacity-scoped and do not follow the date filter. The adoption, guest and sharing lenses follow the date, environment and capacity filters, as each panel subtitle states.
| Term | Definition |
|---|---|
| Paid seat | A user with an assigned Power BI Pro (POWER_BI_PRO) or Premium Per User (PBI_PREMIUM_PER_USER) licence. A user with both counts once, at the PPU price. |
| Idle paid seat | A paid seat whose user has no recorded Power BI activity |
| Never active | An enabled user with any Power BI licence (Pro, PPU or free) and no recorded activity |
| Disabled but licensed | A disabled Entra account that still holds an assigned Power BI licence |
| Orphaned grant | A permission on content that points to no live user and no live group |
KPI cards¶
| Card | What it shows | Click |
|---|---|---|
| Monthly License Waste | Idle paid seats and their monthly cost, with the cost basis ("cost basis: Pro $10/mo - PPU $20/mo"). Shows "$0 - no paid PBI seats in this tenant" when there are none. Labelled no waste, low waste, reclaim candidates or heavy waste. | Idle Paid Seats |
| Never Active (licensed + enabled) | Never-active users, of all enabled licensed users. Labelled all engaged, low dormancy, dormant seats or heavy dormancy. | Never Active Members |
| Disabled but Licensed | Disabled accounts still holding a Power BI licence. Labelled revoke now when above zero. | Disabled But Licensed |
| Orphaned Grants | Grants pointing at no live user or group, of all grants, with the number granted to disabled accounts | Orphaned Grants |
Panels¶
| Panel | What it shows | Click |
|---|---|---|
| License Inventory | Power BI SKUs in the tenant: SKU, Owned, Consumed, Available, Assigned holders, and a bar per licence tier held by the population | A tier opens Tier Holders |
| Adoption Funnel | Licensed -> Enabled -> Active in window -> Power users (>= 3 days). The first two stages count the population; the last two count users active on in-scope content in the selected window. | Engaged Members, Power Users |
| Identity Mix (active principals) | Active principals by class: member, service, system, MetaMiner scanner, with Principals and Events | A class opens Identity Class Principals |
| Guest Footprint | Guests (tenant) (directory guest identities), Active Guests (in the window), Guest Grants (enabled guests on scoped content). Labelled dormant guests or active guests. | - |
| Sharing & Permission Sprawl | Most-shared items, Top grantees (Principal, Grants, Status), Broad elevated access (>= 100 principals) (Dataset, Principals, Elevated grants, Max right), and Grants on Stale Content (granted datasets with zero report views) | An item opens Object Principals; a grantee opens Grants Held |
| Orphaned & Disabled-Target Grants | Total Grants, Orphaned (no live user or group), To Groups (healthy), To Disabled Users | Orphaned Grants, Grants to Disabled Accounts |
Max right levels, highest first: owner, elevated, explore, read, none.
Grants on dashboards
Dashboards have no capacity link. Dashboard grants are included only when no capacity filter is set.
Detail lists¶
| Drawer | Contents |
|---|---|
| Idle Paid Seats, Never Active Members, Disabled But Licensed | The users behind each seat figure, re-derived live from the snapshot definition. Download the CSV to plan licence removal. |
| Tier Holders | Users holding one licence tier (a user with several tiers appears under each) |
| Engaged Members / Power Users | Licensed, enabled users active on in-scope content in the window |
| Identity Class Principals | Active principals in one class with their view, refresh and export counts |
| Object Principals | Every principal granted on one item |
| Grants Held | Every grant one principal holds on scoped content |
| Orphaned Grants / Grants to Disabled Accounts | Grant rows to clean up. A service principal that cannot be resolved to a user or group can appear as orphaned. |
Cost assumptions¶
The dollar figures are modelled estimates from list prices you configure, not billing data.
| Setting | Default | Used by |
|---|---|---|
web.apps.pbiusage.cost.pro |
10 (USD per user per month) |
Cost basis shown on this page and the Executive page, detail lists |
web.apps.pbiusage.cost.ppu |
20 (USD per user per month) |
Same |
costPro in server\silver-jobs\pbi-license-waste\job.json (params) |
10 |
The Monthly License Waste figure in the daily snapshot, also used by the Executive waste total |
costPpu in the same file |
20 |
Same |
web.apps.pbiusage.poweruser.days |
3 |
Active days needed to count as a power user in the funnel |
Change both places
The snapshot's dollar figure uses the job parameters; the cost-basis label and detail lists use the web.apps.pbiusage.cost.* properties. When you change a price, set the same value in server\config\config.json (properties) and in the job's params, then wait for the next job run or restart the MetaMiner Server.
TODO: product decision - one source for seat prices
Seat prices are read from two places (web app properties and the licence-waste job parameters). Decide on a single source, or an MMA field that writes both, and simplify this section.
Questions this page answers¶
- How many paid Power BI licences are unused, and what do they cost per month?
- Which licensed users have never used Power BI, and which disabled accounts still hold licences?
- How far does licensing turn into real adoption?
- How much content is shared with guests, and where is access too broad or orphaned?