How much of your revenue is recurring, which clients drive the most income, and where concentration risk is hiding. Generated by AI via Proxuma Power BI MCP server.
How much of your revenue is recurring, which clients drive the most income, and where concentration risk is hiding. Generated by AI via Proxuma Power BI MCP server.
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: MSP owners, finance leads, and operations managers tracking profitability
How often: Monthly for financial reviews, quarterly for strategic planning, on-demand for pricing decisions
How much of your revenue is recurring, which clients drive the most income, and where concentration risk is hiding. Generated by AI via Proxuma Power BI MCP server.
EVALUATE SUMMARIZECOLUMNS('BI_Autotask_Contracts'[contract_type_name], "Count", COUNTROWS('BI_Autotask_Contracts'))
Active contracts broken down by type, showing the recurring revenue backbone of the portfolio
| Contract Type | Total | Active | Active % | Share of Active |
|---|---|---|---|---|
| Recurring Service | 1,207 | 932 | 77.2% |
67.7%
|
| Time & Materials | 504 | 287 | 56.9% |
20.8%
|
| Block Hours | 173 | 158 | 91.3% |
11.5%
|
| Fixed Price | 5 | 0 | 0.0% |
0.0%
|
| Total | 1,889 | 1,377 | 72.9% |
EVALUATE
ADDCOLUMNS(
VALUES('BI_Autotask_Contracts'[contract_type_name]),
"count", CALCULATE(COUNTROWS('BI_Autotask_Contracts')),
"active", CALCULATE(
COUNTROWS(
FILTER('BI_Autotask_Contracts',
[contract_status_name] = "Active")))
)
ORDER BY [count] DESC
The five largest clients by total contract revenue, with their share of the overall portfolio
| # | Client | Revenue | Cost | Margin | Portfolio Share |
|---|---|---|---|---|---|
| 1 | Patterson Hood Perez | €2,300,000 | €1,081,000 | 53.0% | 13.1% |
| 2 | Martin Group | €2,200,000 | €1,034,000 | 53.0% | 12.5% |
| 3 | Foster Inc | €1,400,000 | €658,000 | 53.0% | 8.0% |
| 4 | Hernandez Ltd | €637,000 | €299,000 | 53.1% | 3.6% |
| 5 | Wall PLC | €477,000 | €224,000 | 53.0% | 2.7% |
| Top 5 Total | €7,014,000 | €3,296,000 | 53.0% | 39.9% |
EVALUATE
VAR _TopClients =
TOPN(5,
SUMMARIZE(
'BI_Autotask_Contracts',
'BI_Autotask_Contracts'[company_name]
),
CALCULATE(SUM('BI_Autotask_Contracts'[contract_revenue])),
DESC
)
RETURN
ADDCOLUMNS(
_TopClients,
"Revenue", CALCULATE(
SUM('BI_Autotask_Contracts'[contract_revenue])),
"Cost", CALCULATE(
SUM('BI_Autotask_Contracts'[contract_cost])),
"Margin", DIVIDE(
CALCULATE(SUM('BI_Autotask_Contracts'[contract_revenue]))
- CALCULATE(SUM('BI_Autotask_Contracts'[contract_cost])),
CALCULATE(SUM('BI_Autotask_Contracts'[contract_revenue])))
)
ORDER BY [Revenue] DESC
How dependent is your revenue on a small number of clients? A healthy MSP keeps top-5 concentration below 40%.
| Metric | Value | Assessment |
|---|---|---|
| Top 1 client share | 13.1% | Moderate risk |
| Top 2 clients share | 25.6% | Watch closely |
| Top 5 clients share | 39.9% | Near threshold |
| Remaining clients share | 60.1% | Healthy base |
| Portfolio gross margin | 53% | Above 50% target |
| Total portfolio revenue | €17.6M | Full portfolio |
EVALUATE
VAR _TotalRevenue =
CALCULATE(SUM('BI_Autotask_Contracts'[contract_revenue]))
VAR _ClientRevenue =
ADDCOLUMNS(
SUMMARIZE(
'BI_Autotask_Contracts',
'BI_Autotask_Contracts'[company_name]
),
"ClientRev", CALCULATE(
SUM('BI_Autotask_Contracts'[contract_revenue]))
)
VAR _Top5Rev =
SUMX(TOPN(5, _ClientRevenue, [ClientRev], DESC), [ClientRev])
VAR _Top2Rev =
SUMX(TOPN(2, _ClientRevenue, [ClientRev], DESC), [ClientRev])
VAR _Top1Rev =
SUMX(TOPN(1, _ClientRevenue, [ClientRev], DESC), [ClientRev])
RETURN
ROW(
"TotalRevenue", _TotalRevenue,
"Top1Share", DIVIDE(_Top1Rev, _TotalRevenue),
"Top2Share", DIVIDE(_Top2Rev, _TotalRevenue),
"Top5Share", DIVIDE(_Top5Rev, _TotalRevenue),
"PortfolioMargin", DIVIDE(
_TotalRevenue
- CALCULATE(SUM('BI_Autotask_Contracts'[contract_cost])),
_TotalRevenue)
)
The portfolio generates €17.6M in total contract revenue at a 53% gross margin, which is a healthy baseline for an MSP of this size. The cost base of €8.3M leaves room for operational investment, though margin consistency across the top 5 clients suggests pricing is standardized rather than optimized per account.
Recurring Service contracts make up 67.7% of all active contracts. That is a strong foundation. MSPs that operate below 60% recurring typically face more volatile revenue quarters and higher sales pressure. The 932 active recurring contracts give you a predictable revenue floor that does not depend on closing new project work each month.
Time & Materials contracts account for 20.8% of the active base, with 287 active out of 504 total. The 56.9% active rate is notably lower than Recurring Service (77.2%) or Block Hours (91.3%). This could indicate T&M contracts are used for short-term engagements that expire and are not renewed, or that some clients have shifted to recurring agreements. Either way, the gap is worth investigating.
The concentration numbers tell a more nuanced story. Patterson Hood Perez and Martin Group together represent 25.6% of total revenue. Losing either one would create a hole that takes 6 to 12 months of new business to fill. The top 5 at 39.9% is just under the 40% threshold that most MSP financial advisors flag as concerning. You are not in the danger zone, but you are on its border.
Block Hours contracts have the highest active rate at 91.3%, which suggests strong retention for pre-purchased support hours. Fixed Price contracts are effectively dead, with all 5 contracts inactive. Unless there is a strategic reason to keep them in the system, they are noise in the data.
5 priorities based on the findings above
These two clients generate €4.5M combined, or 25.6% of your total revenue. If either one churns, your annual plan is immediately off track. Schedule executive-level touchpoints quarterly, assign a dedicated account manager, and make sure their contract renewal timeline is on your calendar now. Do not wait for the renewal conversation to start building the relationship.
Only 56.9% of Time & Materials contracts are active, compared to 77.2% for Recurring Service. Pull the inactive T&M contracts and look at when they expired and whether those clients are still active on other contract types. If clients are leaving T&M and not converting to recurring, you have a conversion opportunity. If they are leaving entirely, you have a churn problem that is hidden by the contract type split.
At 67.7%, your recurring contract share is solid but not where it should be. Target 70% or higher. Look at your T&M clients and identify which ones would benefit from a managed services agreement. Converting 30 to 40 T&M contracts to recurring would cross that threshold and make your revenue base more predictable for forecasting and valuation purposes.
The gap between your top 3 (€1.4M+) and clients 4 and 5 (€477K to €637K) is steep. Growing mid-tier clients from €400K to €800K reduces your dependency on the top 2 without requiring net-new sales. Review which clients in the €300K to €600K range have expansion potential through additional services, more endpoints, or security add-ons.
All 5 Fixed Price contracts are inactive. If they are historical artifacts, archive them. If they represent a contract type you no longer offer, remove the category from your PSA templates. Clean data makes every future report more accurate, and it removes confusion for account managers who might see these in their views.
Proxuma Power BI connects to Autotask PSA and pulls contract data including type, status, revenue, and cost. The AI then writes DAX queries to aggregate this data by contract type and client. The "Recurring Service" category in Autotask maps directly to your MRR-generating agreements.
Recurring revenue comes from contracts that bill on a regular schedule (monthly, quarterly) and auto-renew. Total revenue includes everything: recurring service contracts, one-off T&M work, block hour drawdowns, and fixed-price projects. For valuation and forecasting, recurring revenue is the number that matters most because it is predictable.
Most MSP financial benchmarks recommend 65% to 80% of revenue should come from recurring managed services contracts. Below 60%, your revenue is volatile and hard to forecast. Above 80%, you have a very stable base. At 67.7% of active contracts being recurring, this portfolio is in the healthy range but has room to improve.
Client concentration measures how much of your total revenue depends on a small number of clients. If your top 5 clients represent more than 40% of revenue, losing one of them has a significant financial impact. Buyers during MSP acquisitions discount valuations when concentration is high because it represents risk that transfers with the sale.
Yes. The DAX queries in this report can be modified with date filters or status filters. For example, you can filter to only active contracts created in the last 12 months, or compare Q1 vs. Q2 revenue by adding a date dimension. Run the queries in Power BI Desktop and adjust the filter context to match your needs.
Yes. Connect Proxuma Power BI to your Autotask PSA, add an AI tool (Claude, ChatGPT, or Copilot) via MCP, and ask the same question. The AI writes the DAX queries, runs them against your real contract data, and produces a report like this in under fifteen minutes.
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