I have spent most of this summer on six-figure problems. AI consumption meters, credit overage letters, renewal commitments that moved after they were signed. That work is genuinely urgent, and it deserves the attention it gets.
Today, I spent fifteen minutes cross-checking a Visio report and found about $15,000 a year. I want to talk about the second one, because the reason it was still sitting there has nothing to do with Visio.
What was actually in the tenant?
Roughly 150 Visio Plan 2 subscriptions were assigned. About 100 of those users had not opened Visio at all in the previous 30 days. Another 15 or so had only ever touched the web version, never the desktop application.
The arithmetic is not complicated. Visio Plan 2 lists at $15 per user per month and Visio Plan 1 lists at $5 (as of August 2026). Plan 2 includes the desktop app. Plan 1 is web only.
So, the dormant seats are worth about $180 each per year if you stop paying for them. The web-only users are worth about $120 each per year if you move them to the tier that matches what they actually use. Run that out and the raw number is closer to $20,000. I called it $15,000 because some of those candidates will not survive a conversation with their manager, and I would rather quote the number that holds up than the number that reads better.
Where the money actually shows up
It shows up one of two ways, and neither of them is on the day you find it. Either you reclaim the seat and give it to the next person who needs one instead of buying a license, or you cut the quantity at the next true-up or renewal.
That gap between finding and banking is why “identified savings” and “realized savings” belong in two different columns. Spelled out:
- You reclaim the seat and hand it to the next person who needs one, instead of buying a new license. The saving is a purchase that never happens.
- You cut the quantity at the next true-up or renewal.
Both are calendar-dependent, which is the argument for doing this well ahead of a renewal rather than the week before it closes. Find it in month two and you have options. Find it two weeks out and you are just a person with a spreadsheet and no leverage.
The two assumptions that cost people money
- The first one is familiar: an assigned license is not a used license. Most licensing teams know this, even if the report never gets pulled.
- The second one is the one I see missed almost universally: a used license does not mean the person needs the tier they are on.
Those two failures are not equally visible, and that asymmetry matters more than anything else in this article.
A dormant seat announces itself. Zero activity, thirty days, easy to spot. An over-tiered user does the opposite. Someone who opens Visio in the browser every single day is, by every measure an activity report can produce, a model user. Engaged. Justified. Green across the board. And they are paying $15 a month for a desktop application they have never launched.
Usage data cannot see over-tiering. Not because Microsoft built the report badly, but because activity and entitlement are two different datasets, and one of them does not contain the other.
Project has the same shape and a bigger gap:
|
Product |
Web-only tier |
Desktop tier |
Monthly delta per user |
|
Visio |
Plan 1, $5 |
Plan 2, $15 |
$10 |
|
Project |
Plan 1, $10 |
Plan 3, $30 |
$20 |
(List prices as of August 2026.)
A hundred over-tiered Project users is $24,000 a year. Same fifteen minutes.
Why the gap survived the reporting
Because you cannot automate it and the report exists. The interface that would let your tooling read it does not.
Microsoft added the Visio activity report to the Microsoft 365 admin center in 2023, with Project alongside it. Reports, then Usage, then pick the product. Seven-, thirty-, ninety-or 180-day windows, with a per-user view.
Here is the part that matters: almost every other Microsoft 365 workload also exposes its usage through the Microsoft Graph reports application programming interface (API). Word, Excel, Outlook, Teams, OneDrive, SharePoint. That is how a software asset management (SAM) platform populates itself overnight without anyone clicking anything.
Visio and Project do not. As of August 2026, there is a preview endpoint covering Visio for the web, and nothing for Visio desktop or for Project at all. Requests for it have been sitting in Microsoft’s developer feedback forums since 2022.
So, the two products where tier mismatch costs the most are the two products your tooling structurally cannot see. They do not flow into the dashboard you bought to catch exactly this. The only route in is a person opening the admin center and exporting a file. “Organizations are not paying attention” is the lazy version of this observation, and it is not what is happening. The attention is there. The pipe is missing.
How Strong Is Your Microsoft Licensing Position?
Find hidden cost and licensing risks before they hit your budget.
Take the Free Microsoft Licensing Health Check →
What the join actually takes?
An afternoon and a spreadsheet, which is the entire point. The activity report exports to a CSV (comma-separated values) file straight from the admin center, one row per user, with last activity date and whether the activity was web or desktop. License assignment is the easy half and comes out of the admin center under Billing, or out of Microsoft Graph if you would rather script it. Match the two on user principal name.
Note the asymmetry there. Entitlement data is automatable. Usage data, for these two products, is not. Which means the join can never be fully scheduled, and anything that cannot be scheduled tends not to happen.
What you want at the end is a single sheet with four columns: who they are, which tier they hold, when they last did anything, and whether they have ever opened the desktop app. Every finding in this article falls out of sorting that sheet.
It is not hard. It is just manual, and in 2026 manual is functionally the same as invisible.
If you go looking this week
Filter to licensed users, use a 90-day window, allow for data latency, and confirm before you remove anything. Those four are where this exercise goes wrong, and each of them has burned me or someone near me:
- Filter to licensed users. The default “All users” view includes seeded usage, which will make your activity numbers look healthier than your paid subscriptions actually are.
- Use the 90-day window, not 30, for reclaim decisions. Thirty days will hand you people on parental leave, a sabbatical, or three weeks of vacation. That is a bad conversation to start.
- Allow for data latency. Activity takes up to 72 hours to appear, so a seat provisioned this week is not evidence of anything yet.
- Confirm before you remove. Build a candidate list from the data, then check with the person or their manager before you downgrade or reclaim anything. The data tells you where to look. It does not tell you why someone has not opened an application, and there are legitimate answers.
That last one is not caution for its own sake. Pull a license off someone who needed it and you will not get invited back to do this exercise next year, which costs more than the seat did.
Why this still deserves a slot in a busy quarter
Because it recurs, and because nobody is competing with you for it. The AI consumption work is real, and I am not suggesting anyone push it down the list. A meter that can generate a five-figure charge in a day deserves to be watched daily. But attention is finite, and right now almost all of it is pointed at the newest, loudest line on the invoice. Meanwhile the boring recurring stuff sits unexamined in a report no tool will ever pull for you, worth five figures a year, every year, compounding quietly in the wrong direction.
Fifteen minutes. Two lists, side by side. It is the least sophisticated thing I did all month and one of the highest returns on time I have had all year.
Need help with full Microsoft license optimization? Connect with my team today.
Written by Ben Tight, VP of Operations and Delivery Lead at MetrixData 360.





