Which Microsoft products generate the most revenue, how are they distributed across the customer base, and where are the biggest upsell gaps?
Which Microsoft products generate the most revenue, how are they distributed across the customer base, and where are the biggest upsell gaps?
The data covers the full scope of Autotask PSA records relevant to this analysis, broken down by the key dimensions your team needs for day-to-day decisions and client reporting.
Who should use this: Microsoft 365 administrators, security teams, and account managers
How often: Weekly for license management, monthly for adoption reviews, quarterly for optimization
Which Microsoft products generate the most revenue, how are they distributed across the customer base, and where are the biggest upsell gaps?
EVALUATE ROW("TotalSKUs", COUNTROWS('BI_MicrosoftPartnerCenter_Subscribed_Skus'), "ActiveUnits", SUM('BI_MicrosoftPartnerCenter_Subscribed_Skus'[active_units]), "ConsumedUnits", SUM('BI_MicrosoftPartnerCenter_Subscribed_Skus'[consumed_units]), "TotalUsers", COUNTROWS('BI_MicrosoftPartnerCenter_Users'))
Azure Subscription is the single largest revenue line at €11.6M, but it's concentrated in a handful of accounts. M365 Business Premium (annual + monthly combined) totals €12.4M and is far more evenly spread, making it the real bread-and-butter product. Backup products (user + shared + per-mailbox) together account for €9.9M, which shows how important data protection upsells have become.
EVALUATE
TOPN(15,
FILTER(
SUMMARIZECOLUMNS(
'BI_Autotask_Contract_Service_Units'[service_name],
"Revenue", SUM('BI_Autotask_Contract_Service_Units'[price]),
"Customers", DISTINCTCOUNT('BI_Autotask_Companies'[company_name])
),
CONTAINSSTRING('BI_Autotask_Contract_Service_Units'[service_name], "Microsoft")
|| CONTAINSSTRING('BI_Autotask_Contract_Service_Units'[service_name], "Office 365")
|| CONTAINSSTRING('BI_Autotask_Contract_Service_Units'[service_name], "NCE")
|| CONTAINSSTRING('BI_Autotask_Contract_Service_Units'[service_name], "Azure")
|| CONTAINSSTRING('BI_Autotask_Contract_Service_Units'[service_name], "M365")
),
[Revenue], DESC
)
| # | Customer | MS Revenue | Products | MS % of Total |
|---|---|---|---|---|
| 1 | Client A | €7,844,907 | 100% | |
| 2 | Client B | €7,276,757 | 100% | |
| 3 | Client C | €4,804,197 | 100% | |
| 4 | Client D | €2,850,411 | 100% | |
| 5 | Client E | €2,572,501 | 100% | |
| 6 | Client F | €2,542,935 | 100% | |
| 7 | Client G | €2,279,043 | 100% | |
| 8 | Client H | €1,992,156 | 100% | |
| 9 | Client I | €1,853,188 | 100% | |
| 10 | Client J | €1,796,546 | 100% |
The top 10 accounts alone generate €35.8M in Microsoft revenue, which is 58% of the total Microsoft book. Client A and Client B together account for nearly €15M. The spread in product counts is notable: Client E uses 30 distinct Microsoft products while Client J uses only 10, suggesting very different adoption maturity levels.
EVALUATE
TOPN(15,
FILTER(
ADDCOLUMNS(
SUMMARIZE('BI_Autotask_Contract_Service_Units',
'BI_Autotask_Companies'[company_name]),
"MSRevenue", CALCULATE(
SUM('BI_Autotask_Contract_Service_Units'[price]),
CONTAINSSTRING('BI_Autotask_Contract_Service_Units'[service_name], "Microsoft")
|| CONTAINSSTRING('BI_Autotask_Contract_Service_Units'[service_name], "Office 365")
|| CONTAINSSTRING('BI_Autotask_Contract_Service_Units'[service_name], "NCE")
|| CONTAINSSTRING('BI_Autotask_Contract_Service_Units'[service_name], "Azure")
|| CONTAINSSTRING('BI_Autotask_Contract_Service_Units'[service_name], "M365")
),
"MSProducts", CALCULATE(
DISTINCTCOUNT('BI_Autotask_Contract_Service_Units'[service_name]),
CONTAINSSTRING('BI_Autotask_Contract_Service_Units'[service_name], "Microsoft")
|| CONTAINSSTRING('BI_Autotask_Contract_Service_Units'[service_name], "Office 365")
|| CONTAINSSTRING('BI_Autotask_Contract_Service_Units'[service_name], "NCE")
|| CONTAINSSTRING('BI_Autotask_Contract_Service_Units'[service_name], "Azure")
|| CONTAINSSTRING('BI_Autotask_Contract_Service_Units'[service_name], "M365")
),
"TotalRevenue", SUM('BI_Autotask_Contract_Service_Units'[price])
),
[MSRevenue] > 0
),
[MSRevenue], DESC
)
Each account below shows its top products by revenue. This lets you see what's driving spend at the individual account level and spot where specific products are missing.
Copilot for Microsoft 365 is still in early adoption. Just 29 companies (15% of the customer base) have purchased it. Total Copilot revenue sits at €1.2M, but given the average seat price and the number of M365 users across the portfolio, the addressable market here is much larger. The chart below shows the top adopters by revenue.
Client A alone accounts for 41% of all Copilot revenue. That's good for the account, but it also means the remaining 166 customers without Copilot represent a large untapped opportunity. If even half of the top 50 accounts adopted Copilot at Client I's rate, that would add an estimated €2M+ in annual recurring revenue.
The matrix below maps each top-10 customer against six product categories. A ✓ means the customer has at least one product in that category. A • means they don't, which is a potential gap worth exploring in a quarterly business review.
| Customer | Core M365 | Azure | Backup | Power BI | Copilot | Security |
|---|---|---|---|---|---|---|
| Client A | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Client B | ✓ | • | ✓ | • | • | • |
| Client C | ✓ | ✓ | ✓ | ✓ | ✓ | • |
| Client D | ✓ | ✓ | ✓ | ✓ | • | • |
| Client E | ✓ | ✓ | ✓ | ✓ | • | • |
| Client F | ✓ | • | ✓ | • | ✓ | • |
| Client G | ✓ | ✓ | ✓ | ✓ | • | • |
| Client H | ✓ | ✓ | ✓ | ✓ | • | ✓ |
| Client I | ✓ | ✓ | ✓ | • | ✓ | • |
| Client J | ✓ | ✓ | ✓ | ✓ | • | • |
The pattern is clear. Core M365 and Backup are near-universal. But Copilot adoption is sparse (only 4 of the top 10 have it), and Security add-ons (Defender, Entra ID P1/P2, E5 Security) are missing from 7 out of 10. Client B stands out with gaps in Azure, Power BI, Copilot, and Security despite being the #2 account by revenue.
Only 29 of 195 customers have Copilot licenses. At €30/user/month, even modest rollouts across the top 50 accounts could add €2M+ in annual recurring revenue. Prioritize customers who already have E3/E5 or Business Premium, since they're pre-qualified for Copilot.
Azure Subscription is the #1 product at €11.6M, but Clients G, H, and I alone account for €4.1M of that. If any of these accounts reduce their Azure footprint, the impact would be significant. Look for ways to diversify Azure adoption to more mid-market customers.
Annual and monthly Business Premium combined total €12.4M across many accounts. This is a healthy, diversified revenue base. It also means most customers are on a license tier that supports Copilot, Security, and Compliance add-ons.
7 out of 10 top customers have no Defender, Entra ID P1/P2, or E5 Security products. This is both a risk (customers may be under-protected) and an opportunity. A "security posture review" pitch could open doors at accounts like Client B, D, E, F, and G.
Client J and Client L (NonProfit accounts) use a wide range of products including Power BI and E3 licenses. This indicates good Microsoft partner positioning in the nonprofit vertical. Consider creating a targeted nonprofit adoption playbook to replicate this across other nonprofit clients.
Any contract service unit whose name contains "Microsoft", "Office 365", "NCE", "Azure", or "M365". This covers all CSP licenses, Azure consumption, backup add-ons, and standalone Microsoft products like Power BI, Dynamics 365, and Copilot.
This report is generated for public demonstration. In a live environment connected to your own Power BI data source, real customer names would appear instead of "Client A", "Client B", etc.
Copilot is Microsoft's AI assistant embedded in Word, Excel, PowerPoint, Outlook, and Teams. It requires a qualifying M365 license (Business Premium, E3, E5, or equivalent) and costs €30/user/month. It's the fastest-growing Microsoft product line for MSPs right now.
Look for gaps (grey dots) in high-value categories like Copilot, Security, and Azure. Each gap is a conversation starter for your next QBR. For example, if a customer has M365 E3 but no Copilot, they're already qualified for the add-on.
The data comes from Autotask PSA contract service units via Power BI. Refresh frequency depends on your Power BI dataset schedule. Most MSPs refresh daily or weekly. This report was generated from the latest available snapshot at the time of creation.
Yes. Proxuma connects to your Power BI data model and generates reports using your actual data. Visit proxuma.io/powerbi to learn more about how to connect your own PSA and Microsoft data sources.
Connect Proxuma Power BI to your PSA, RMM, and M365 environment, use an MCP-compatible AI to ask questions, and generate custom reports - in minutes, not days.
See more reports Get started