Resource Utilization & Capacity Management Business Logic¶
The resource utilization system tracks how effectively employees spend their time across projects and internal activities within the Stratpoint Timesheet Application. It provides capacity planning, bench management, and workforce optimization capabilities essential for resource management.
How Resource Utilization Works¶
For Resource Managers: 1. Monitor individual and team utilization rates in real-time 2. Plan resource capacity and allocation across projects 3. Identify bench resources and optimize assignments 4. Track billable vs non-billable time distribution 5. Generate utilization reports and workforce analytics
For Project Managers: 1. View resource allocation and availability for projects 2. Request additional resources based on utilization data 3. Optimize team efficiency and project staffing 4. Monitor project-specific resource utilization
For Employees: 1. View personal utilization rates and allocation status 2. Understand billable vs non-billable time expectations 3. See project assignments and time allocation 4. Track performance against utilization targets
System Features: - Real-time utilization calculation and tracking - Multi-dimensional resource allocation management - Automated bench identification and aging analysis - Comprehensive utilization reporting and analytics - Capacity planning and workforce optimization tools
Utilization Calculation¶
How Utilization is Calculated¶
flowchart TD
A[Time Logged] --> B[Project Allocation %]
B --> C[Working Days in Month]
C --> D[Standard Hours per Day]
D --> E[Utilization Formula]
E --> F[Monthly Utilization %]
Basic Calculation Formula¶
- Formula:
(Actual Hours Logged / (Working Days × 8 hours)) × 100 - Standard Work Day: 8 hours per day
- Working Days: Excludes weekends and holidays
- Allocation Adjustment: Factored by project allocation percentage
What Gets Measured¶
- Billable Hours: Direct client work time
- Non-Billable Hours: Internal activities, training, admin
- Project Allocation: Percentage assigned to each project
- Available Capacity: Remaining unallocated time
- Utilization Rate: Efficiency of time usage
Resource Allocation Management¶
Project Assignment Process¶
flowchart TD
A[Resource Manager] --> B[Assigns to Project]
B --> C[Sets Allocation %]
C --> D[Defines Time Period]
D --> E[Tracks Utilization]
E --> F[Reports Performance]
Allocation Details¶
- Percentage Allocation: 0-100% of time dedicated to each project
- Multi-Project Support: Resources can work on multiple projects
- Time-Bound Assignments: Start and end dates for all allocations
- Role Specification: Function or role within each project
- Billing Classification: Billable vs non-billable work designation
Allocation Rules¶
- Total Allocation: Can exceed 100% for peak periods
- Overlap Management: System tracks competing project demands
- Transition Periods: Smooth handoffs between project assignments
- Emergency Reallocation: Quick resource redistribution capabilities
Utilization Categories¶
Work Classification Types¶
- Billable: Direct client work that generates revenue
- Internal: Company operations, administration, process improvement
- Pre-Sales: Business development, proposal writing, client meetings
- Training: Skill development, learning activities, knowledge transfer
- Bench: Unallocated time awaiting project assignments
Billable vs Non-Billable Breakdown¶
- Billable Work: Client projects, deliverable creation, client support
- Non-Billable Work: Internal meetings, training, administrative tasks
- Mixed Activities: Some tasks may be partially billable
- Classification Rules: Clear guidelines for time categorization
Utilization Status Categories¶
- Active Billable: Currently generating revenue
- Blocked Billable: Billable work temporarily suspended
- Internal Projects: Company initiatives and operations
- Training Activities: Both giving and receiving training
- Proposed Work: Potential billable assignments
Bench Management¶
What is "Bench"¶
Employees are considered "on bench" when their billable allocation falls below 50% and they're available for new project assignments.
Bench Identification Process¶
flowchart TD
A[Monthly Analysis] --> B[Check Allocation %]
B --> C{< 50% Billable?}
C -->|Yes| D[Mark as Bench]
C -->|No| E[Active Allocation]
D --> F[Calculate Bench Age]
F --> G[Resource Planning]
Bench Aging Analysis¶
- Bench Age: Days since last billable assignment
- Aging Categories: 0-30 days, 31-60 days, 60+ days
- Historical Tracking: Previous project assignments and dates
- Trend Analysis: Bench duration patterns and causes
Bench Management Actions¶
- Resource Reallocation: Quick assignment to new projects
- Skill Development: Training during bench periods
- Internal Projects: Productive use of available time
- Business Development: Sales support and proposal activities
Capacity Planning¶
Capacity Analysis Components¶
- Current Allocation: What resources are currently assigned
- Future Availability: When resources become available
- Skill Matching: Right skills for upcoming projects
- Workload Balancing: Even distribution of work
Planning Horizon¶
- Short-term: Next 2-4 weeks resource availability
- Medium-term: Quarterly capacity and demand planning
- Long-term: Annual workforce planning and hiring needs
- Project Pipeline: Resource needs for upcoming projects
Resource Forecasting¶
- Demand Projection: Expected resource needs based on sales pipeline
- Supply Analysis: Available internal resources and hiring plans
- Gap Identification: Shortfalls requiring action (hiring, contracting)
- Optimization Opportunities: Better allocation of existing resources
Utilization Reporting¶
Individual Utilization Reports¶
- Monthly Utilization: Personal efficiency and allocation breakdown
- Weekly Breakdown: Detailed time distribution analysis
- Annual Summary: Yearly performance and trend analysis
- Goal Tracking: Performance against utilization targets
Team and Organizational Reports¶
- Business Unit Analysis: Department-level utilization metrics
- Line of Business: Service category resource efficiency
- Project Utilization: Cross-project resource performance
- Bench Reports: Available resources and aging analysis
Key Performance Indicators¶
- Overall Utilization Rate: Company-wide efficiency metric
- Billable Utilization: Revenue-generating time percentage
- Bench Percentage: Proportion of resources available
- Allocation Efficiency: How well resources are distributed
Dashboard Features¶
flowchart LR
A[Resource Allocation] --> B[Billable: 65%]
A --> C[Internal: 20%]
A --> D[Training: 10%]
A --> E[Bench: 5%]
style A fill:#2563eb,stroke:#1e40af,color:#fff
style B fill:#10b981,stroke:#059669,color:#fff
style C fill:#f59e0b,stroke:#d97706,color:#fff
style D fill:#8b5cf6,stroke:#7c3aed,color:#fff
style E fill:#ef4444,stroke:#dc2626,color:#fff
Workforce Optimization¶
Optimization Strategies¶
- Resource Leveling: Smooth workload distribution
- Skill Utilization: Matching expertise to project needs
- Cost Optimization: Efficient use of different cost levels
- Career Development: Growth opportunities through assignments
Bottleneck Identification¶
- Overallocated Resources: People with > 100% allocation
- Skill Shortages: High-demand skills with limited availability
- Project Delays: Resource constraints affecting timelines
- Training Needs: Skill gaps requiring development
Resource Manager Tools¶
- Allocation Dashboard: Real-time resource assignment overview
- Availability Calendar: When resources become free
- Skills Matrix: Capability mapping for optimal assignment
- Cost Analysis: Resource cost optimization opportunities
Special Utilization Scenarios¶
Training and Development¶
- Trainer Utilization: Time spent delivering training
- Trainee Classification: Learning time allocation
- Knowledge Transfer: Documentation and mentoring time
- Certification Programs: Professional development tracking
Pre-Sales Activities¶
- Business Development: Proposal writing and client meetings
- Solution Design: Technical pre-sales support
- Estimation Activities: Project scoping and sizing
- Client Presentations: Sales support and demonstrations
Internal Operations¶
- Process Improvement: Operational enhancement activities
- Administrative Tasks: Required business operations
- Company Initiatives: Strategic projects and programs
- Compliance Activities: Regulatory and quality requirements
Technical Implementation Details¶
For developers and system administrators
Core API Endpoints¶
Utilization Calculation:
// Monthly utilization reports
POST /api/v2/users/getUtilizationReportByMonth
{
"userId": 123,
"year": 2024,
"month": 6,
"businessUnit_id": 1
}
// Dashboard utilization data
GET /api/v2/users/getUtilizationDashboard
{
"startDate": "2024-01-01",
"endDate": "2024-12-31",
"filters": {
"businessUnit": 1,
"position": "Senior Developer"
}
}
Resource Management:
// Bench aging analysis
POST /api/v2/users/benchAgeingReport
{
"asOfDate": "2024-06-30",
"businessUnit_id": 1,
"threshold": 50
}
// Project resource allocation
GET /api/v2/projects/{id}/resources
POST /api/v2/projects/bulkAssignUsers
Database Schema¶
Project User Assignment Model:
// Core resource allocation fields
'project_id' => 'Project assignment (required)',
'user_id' => 'Employee ID (required)',
'startDate' => 'Assignment start date (required)',
'endDate' => 'Assignment end date (nullable)',
'percentAllocation' => 'Allocation percentage 0-100 (required)',
'role' => 'Function on project (nullable)',
'hourlyRate' => 'Billing rate (nullable)',
'utilizationStatus_id' => 'Billable classification (required)',
'isActive' => 'Assignment status flag (default: true)'
Utilization Status Model:
// Work classification definitions
'name' => 'Status name (required)',
'description' => 'Detailed description (nullable)',
'isBillable' => 'Billable flag (default: false)',
'isActive' => 'Availability flag (default: true)',
'sortOrder' => 'Display sequence (nullable)'
Bench Aging Model:
// Bench tracking fields
'userId' => 'Employee ID (required)',
'monthYear' => 'Analysis period YYYY-MM (required)',
'currentBillableAllocation' => 'Current allocation percentage',
'benchAge' => 'Days on bench (calculated)',
'lastBillableProject_id' => 'Previous billable assignment',
'lastBillableDate' => 'Date of last billable work',
'isOnBench' => 'Bench status flag'
Utilization Calculation Engine¶
Core Calculation Logic:
// Actual calculation from UtilizationService
public function calculateMonthlyUtilization($userId, $year, $month)
{
$workingDays = $this->getWorkingDaysInMonth($year, $month);
$standardHours = $workingDays * 8; // 8 hours per day
$allocations = ProjectUser::where('user_id', $userId)
->whereMonth('startDate', '<=', $month)
->whereMonth('endDate', '>=', $month)
->where('isActive', true)
->get();
$totalAllocation = $allocations->sum('percentAllocation');
$expectedHours = $standardHours * ($totalAllocation / 100);
$actualHours = Timelog::where('user_id', $userId)
->whereYear('created_at', $year)
->whereMonth('created_at', $month)
->where('status', 'Approved')
->sum('spentHours');
return ($actualHours / $expectedHours) * 100;
}
Bench Detection Algorithm:
// Bench identification logic
public function identifyBenchResources($asOfDate)
{
$benchThreshold = 50; // 50% allocation threshold
$users = User::active()
->where('isBillable', true)
->with(['projectAssignments' => function($query) use ($asOfDate) {
$query->where('startDate', '<=', $asOfDate)
->where(function($q) use ($asOfDate) {
$q->whereNull('endDate')
->orWhere('endDate', '>=', $asOfDate);
})
->where('isActive', true);
}])
->get();
$benchUsers = $users->filter(function($user) use ($benchThreshold) {
$billableAllocation = $user->projectAssignments
->where('utilizationStatus.isBillable', true)
->sum('percentAllocation');
return $billableAllocation < $benchThreshold;
});
return $benchUsers;
}
Utilization Settings Configuration¶
KRA Utilization Settings Model:
// Configuration for utilization categories
'utilizationGroup' => 'Category name (Billable, Internal, etc.)',
'utilizationStatus_id' => 'Status mapping (nullable)',
'genericTask_id' => 'Task mapping (nullable)',
'isActive' => 'Configuration status (default: true)'
Settings Mapping Logic:
-- Query to map activities to utilization groups
SELECT
kus.utilizationGroup,
us.name as statusName,
gt.name as taskName,
CASE
WHEN us.isBillable = 1 THEN 'Billable'
ELSE 'Non-Billable'
END as classification
FROM kra_utilization_settings kus
LEFT JOIN utilization_status us ON kus.utilizationStatus_id = us.id
LEFT JOIN generic_tasks gt ON kus.genericTask_id = gt.id
WHERE kus.isActive = 1
Performance Optimization¶
Caching Strategy: - Utilization calculations cached for 24 hours - Bench analysis cached weekly - Dashboard metrics cached for 1 hour - Historical data pre-calculated monthly
Query Optimization:
-- Optimized utilization query with indexes
CREATE INDEX idx_project_users_dates
ON project_users (user_id, startDate, endDate, isActive);
CREATE INDEX idx_timelogs_utilization
ON timelogs (user_id, created_at, status, spentHours);
CREATE INDEX idx_bench_ageing_lookup
ON bench_ageing (userId, monthYear, isOnBench);
Reporting Architecture¶
Dashboard Data Structure:
{
"utilizationSummary": {
"totalResources": 125,
"averageUtilization": "78.5%",
"billableUtilization": "65.2%",
"benchResources": 8
},
"allocationDistribution": {
"0-25%": {"count": 8, "percentage": "6.4%"},
"26-50%": {"count": 12, "percentage": "9.6%"},
"51-75%": {"count": 45, "percentage": "36.0%"},
"76-100%": {"count": 52, "percentage": "41.6%"},
"100%+": {"count": 8, "percentage": "6.4%"}
},
"upcomingAvailability": [
{
"userId": 123,
"userName": "John Doe",
"currentProject": "Client A - Phase 2",
"endDate": "2024-07-15",
"allocation": "85%"
}
]
}
Integration Points¶
NetSuite Integration: - Utilization data feeds project profitability analysis - Resource costs integrated with financial reporting - Billable utilization impacts revenue recognition
Project Management Integration: - Real-time resource availability for project planning - Allocation conflicts detection and resolution - Resource request workflow based on utilization data
This resource utilization and capacity management system provides comprehensive workforce optimization capabilities with real-time tracking, sophisticated analytics, and strategic planning tools essential for efficient resource management in professional services organizations.