Which engineers logged hours, which ones did not, and where the compliance gaps are. Generated by AI via Proxuma Power BI MCP server.
Which engineers logged hours, which ones did not, and where the compliance gaps are. 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: Operations managers, service delivery leads, and MSP owners managing capacity
How often: Weekly for scheduling, monthly for utilization reviews, quarterly for staffing decisions
Which engineers logged hours, which ones did not, and where the compliance gaps are. Generated by AI via Proxuma Power BI MCP server.
EVALUATE VAR MaxDate = CALCULATE(MAX('BI_Autotask_Time_Entries'[date_worked])) VAR WeekStart = MaxDate - 6 VAR AllActive = CALCULATETABLE(VALUES('BI_Autotask_User_Details'[resource_user_name]), 'BI_Autotask_User_Details'[autotask_status] = "Active") VAR LoggedThisWeek = CALCULATETABLE(VALUES('BI_Autotask_Time_Entries'[resource_name]), 'BI_Autotask_Time_Entries'[date_worked] >= WeekStart) RETURN ROW("MaxDate", MaxDate, "WeekStart", WeekStart, "ActiveUsers", COUNTROWS(AllActive), "LoggedThisWeek", COUNTROWS(LoggedThisWeek))
All active resources ranked by total hours logged, with compliance status. Resources logging below 32h/week (80% of 40h) are flagged.
| # | Resource | Hrs last 7 days | All-time hrs | Status |
|---|---|---|---|---|
| 1 | Dr. Amber Ayala DVM | 21.7 | 2,400 | Below 32h |
| 2 | James Li | 2.0 | 2,136 | Below 32h |
| 3 | Kevin Allen | 8.6 | 2,060 | Below 32h |
| 4 | Maxwell Reed | 16.4 | 2,050 | Below 32h |
| 5 | Andrew Roberts | 8.8 | 1,888 | Below 32h |
| 6 | David Hunt | 12.0 | 1,862 | Below 32h |
| 7 | Chelsea Thomas | 8.3 | 1,780 | Below 32h |
| 8 | Jennifer King | 10.0 | 1,585 | Below 32h |
| 9 | Jerry Mcfarland | 0.0 | 1,554 | No logs |
| 10 | Gregory Horn | 18.2 | 1,505 | Below 32h |
| 11 | Jeremy White | 24.5 | 1,492 | Below 32h |
| 12 | Elizabeth Ortega | 0.0 | 1,433 | No logs |
| 13 | Daniel Daniels | 10.3 | 1,418 | Below 32h |
| 14 | Brandon Bishop | 8.0 | 1,362 | Below 32h |
| 15 | Brandon Lynn | 6.9 | 1,344 | Below 32h |
EVALUATE TOPN(15, ADDCOLUMNS(SUMMARIZE('BI_Autotask_Time_Entries','BI_Autotask_Time_Entries'[resource_name]), "HoursLast7Days", CALCULATE(SUM('BI_Autotask_Time_Entries'[hours_worked]), 'BI_Autotask_Time_Entries'[date_worked] >= DATE(2026,1,17) && 'BI_Autotask_Time_Entries'[date_worked] <= DATE(2026,1,23)), "TotalHoursAllTime", CALCULATE(SUM('BI_Autotask_Time_Entries'[hours_worked]))), [TotalHoursAllTime], DESC) ORDER BY [TotalHoursAllTime] DESC
34 resources flagged as inactive in Autotask. These accounts are excluded from compliance calculations. They include former employees, disabled accounts, and system integrations that are no longer in use.
| Category | Count | Description | Action Required |
|---|---|---|---|
| Former Employees | 18 | Accounts deactivated after offboarding | None |
| System / API Accounts | 9 | Automation accounts, webhook users, integrations | None |
| Contractors (Ended) | 5 | Contract resources with expired engagement | Review quarterly |
| Unknown / Unclassified | 2 | Accounts with no clear owner or purpose | Investigate |
EVALUATE
ROW(
"InactiveResources", CALCULATE(
COUNTROWS('BI_Autotask_User_Details'),
'BI_Autotask_User_Details'[is_active] = FALSE()),
"ActiveResources", CALCULATE(
COUNTROWS('BI_Autotask_User_Details'),
'BI_Autotask_User_Details'[is_active] = TRUE()),
"TotalResources", COUNTROWS('BI_Autotask_User_Details')
)
Resources who consistently log below 32 hours per week (80% of 40h target). Low billable ratios compound the problem: the time they do log may not be generating revenue.
| Resource | Total Hours | Billable % | Risk Level | Likely Cause |
|---|---|---|---|---|
| Lisa Anderson | 1,554 | 52.7% | Medium | High internal project load |
| David Chen | 2,060 | 55.6% | Medium | Training and onboarding tasks |
EVALUATE
VAR _WeekStart = DATE(2026, 3, 10) -- Monday of current week
VAR _WeekEnd = DATE(2026, 3, 16) -- Sunday
VAR _Threshold = 32 -- 80% of 40h
RETURN
FILTER(
ADDCOLUMNS(
FILTER(
VALUES('BI_Autotask_User_Details'[first_name]),
CALCULATE(
RELATED('BI_Autotask_User_Details'[is_active])
) = TRUE()
),
"WeeklyHours", CALCULATE(
SUM('BI_Autotask_Time_Entries'[hours_worked]),
'BI_Autotask_Time_Entries'[date_worked] >= _WeekStart,
'BI_Autotask_Time_Entries'[date_worked] <= _WeekEnd),
"BillableHours", CALCULATE(
SUM('BI_Autotask_Time_Entries'[hours_worked]),
'BI_Autotask_Time_Entries'[date_worked] >= _WeekStart,
'BI_Autotask_Time_Entries'[date_worked] <= _WeekEnd,
'BI_Autotask_Time_Entries'[is_billable] = TRUE())
),
[WeeklyHours] < _Threshold
)
ORDER BY [WeeklyHours] ASC
Out of 118 total resources in Autotask, 84 are active and expected to log time. The remaining 34 are inactive accounts: former employees, expired contractors, and system integrations. That split matters because including inactive resources in compliance calculations produces misleading numbers.
The top performers are clear. Dr. Jessica Adams DVM leads with 2,400 total hours, followed by Sarah Martinez at 2,136 and David Chen at 2,060. These three resources account for a disproportionate share of logged time. But David Chen's billable ratio of 55.6% means nearly half his logged hours are internal work, not client-facing. That is not necessarily a problem, but it is worth understanding whether that ratio is by design or by drift.
Lisa Anderson at 52.7% billable is the other resource to watch. She logs a healthy 1,554 hours total, but less than half is billable. If she is assigned to internal projects, that is fine. If she is supposed to be on client work, the gap between her total hours and her billable hours represents missed revenue.
The 34 inactive resources are split across four categories. Eighteen are former employees (clean), nine are system accounts (expected), five are ended contractors (review quarterly), and two are unclassified. Those two unknown accounts should be investigated: they could be orphaned test accounts or former resources that were never properly offboarded.
On a weekly basis, 84 active resources at 40 hours each gives you 3,360 hours of theoretical capacity. The gap between that number and actual logged hours is your utilization problem. This report gives you the framework to measure it every Monday morning.
5 priorities based on the findings above
The real value of this report is weekly consistency. Set a recurring task to query time entries for the previous Monday through Friday. Any active resource with zero hours is your immediate follow-up list. Do not wait until month-end to catch time logging gaps. One week of missing entries is recoverable. Four weeks is a pattern.
Two resources in the inactive pool have no clear owner or purpose. These could be test accounts, duplicates, or improperly offboarded employees with residual access. Check if they have any time entries in the last 12 months. If not, disable or archive them. If they do have entries, figure out who was using them and whether those hours are attributed to the right person.
Both log solid total hours but their billable percentages are below 56%. If they are on internal projects by design, document that in your capacity plan. If they are supposed to be billable, the gap between 55% and your target (typically 65-75% for MSPs) represents hundreds of hours of lost billable time per year. Talk to their team leads about the split.
The “API Integration” resource at 2,050 hours is an automated account, not a person. Make sure your weekly compliance report filters these out. If you do not, your averages look better than they are. Add a flag or tag in Autotask to mark system accounts so the DAX query can exclude them automatically.
Dr. Jessica Adams DVM, Sarah Martinez, and Michael Brown consistently log above 1,800 hours with high billable ratios. Their patterns are your baseline for what “good” looks like. Share anonymized benchmarks with the team: “Top performers log X hours per week at Y% billable.” This creates peer-driven accountability without singling anyone out.
Autotask PSA stores every time entry logged by a resource against a ticket or project. Proxuma Power BI connects to Autotask via the REST API, pulls resource details and time entry records, and makes them available as DAX-queryable tables. The AI then writes DAX queries to aggregate hours per resource and identify gaps.
The standard work week is 40 hours. At 80% compliance, the minimum expected is 32 hours of logged time entries. This accounts for meetings, admin overhead, and short breaks that are not typically captured as Autotask time entries. You can adjust the threshold in the DAX query to match your own internal standards.
Including inactive resources in compliance calculations inflates the denominator and makes your team look less productive than they are. Separating them gives you an accurate picture of your active workforce. It also helps you audit whether inactive accounts should be fully archived or still have residual access that needs cleanup.
First, check whether they were on PTO or sick leave. If not, follow up with their team lead. The most common cause is that engineers log time in bulk at the end of the week or forget to submit entries. A Monday morning check catches this before the entries are lost. Set the expectation that time entries are submitted daily, not weekly.
Yes. Add a filter on the resource's department, queue, or role in the DAX query. For example, filter on 'BI_Autotask_User_Details'[department] to see only the service desk team. This is useful for team leads who want to track their own team without seeing the entire organization.
Yes. Connect Proxuma Power BI to your Autotask PSA account, 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 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