Skip to content

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.