CRMconnect Azuvio · Docs

Workflow: Resource Planning

Modules involved: Resource Workload · Tasks · Projects · Timesheets (task timers — NOT the HR Timesheets module)
Used by: Project Manager · Team Lead · Management
Typical duration: Ongoing weekly/monthly planning

Overview

The Resource Workload module provides a consolidated view of the team's capacity and workload based on assigned tasks. Planning is done by assigning tasks with startdate, duedate, and Estimate hour (a custom field automatically injected into tasks).

Critical distinction: The Resource Workload module reads exclusively from hours logged via task timers (core CRM tbltaskstimers). It does not read from the HR Timesheets module (tbltimesheets_timesheet, tblcheck_in_out, etc.) — that module is for HR time tracking (attendance, leave), not project hours.

Staff only — no equipment. There is no concept of non-human resources (rooms, machinery, vehicles).

Overloading is visual, not blocking. The system marks cells red when capacity hours are exceeded, but does not block assignment.


Flow diagram

[SETUP — admin, one time]
  │
  ├── Global standard workload: 8h/day (default), working days (Mon–Fri default)
  ├── Per staff (optional): individual capacity per day of week
  │     (e.g.: part-timer: Mon=4h, Tue=4h, Wed=0h, Thu=4h, Fri=4h)
  └── Day-offs: company-wide blocked dates (different from HR leave!)
  │
  ↓
[TASK PLANNING]
  │
  ├── Task created/edited with:
  │     ├── startdate (start date)
  │     ├── duedate (deadline — required for correct spread)
  │     ├── Assigned staff (tbltask_assigned)
  │     └── Estimate hour (custom field tasks_estimate_hour) ← set manually by PM
  │
  ├── System distributes estimated hours day by day:
  │     spread = estimate_hour / working_days(start → due)
  │     cap = staff_daily_capacity → surplus → next day
  └── If duedate is missing: system uses datefinished or today
  │
  ↓
[WORKLOAD VIEW]
  │
  ├── Reports → Resource Workload
  │
  ├── Workload tab (spreadsheet grid):
  │     ├── Columns: Staff | Department | Role | [Date E/S per day in range]
  │     ├── E = estimated hours (from Estimate hour + spread)
  │     ├── S = actually logged hours (from task timers)
  │     ├── RED cells = daily capacity exceeded
  │     └── Hover on cell = list of tasks contributing to that day
  │
  ├── Timeline tab (Frappe Gantt):
  │     ├── Staff as rows, tasks as colored bars per relation type
  │     ├── Drag bar = changes task startdate/duedate + recalculates Estimate hour
  │     └── Click bar = opens standard task modal
  │
  ├── Chart tab (Highcharts):
  │     ├── Pie: Estimated hours — Normal vs Overload
  │     ├── Pie: Spent hours — Normal vs Overload
  │     └── Stacked column: hours by department
  │
  └── Kanban tab:
        ├── One column per staff member with their tasks
        ├── 10 tasks per page, pagination available
        └── Overdue tasks marked as overdue
  │
  ↓
[LOGGING ACTUAL HOURS]
  │
  ├── Staff uses timer on task (Start Timer button from task)
  │     → insert into tbltaskstimers: staff_id, task_id, start_time, end_time
  └── Logged hours appear in column S (Spent) in the Workload grid
  │
  ↓
[REBALANCING (if overload detected)]
  │
  ├── PM sees red cells → identifies overloaded tasks (hover)
  ├── Adjust duedate: drag on Gantt OR manual duedate edit on task
  └── Redistribute task: change assigned staff on task

[TEAM PLANNED ✓ · HOURS MONITORED ✓]

Step by step

1. Configure capacity (admin)

Where: /admin/settings → Staff → Workload

1a. Global settings

Option Default Description
standard_workload 8 Working hours per day (fallback if staff has no individual setting)
staff_workload_mondaysunday 1 for Mon–Fri, 0 Sat–Sun Global working days

1b. Individual capacity per staff (optional)

Where: Settings → Workload → Customize Standard Workload

Handsontable grid: each row = a staff member, each column = a day of the week. Enter hours per cell (e.g.: 4 for part-timer).

If no record exists in tblstandard_workload for a staff member, the global standard_workload value is used.

1c. Day-offs (company holidays)

Where: Settings → Workload → Manage Day-off → Add Day-off

Field Description
reason Reason (e.g.: "Christmas", "Team building")
date Blocked date

Note: Day-offs in Resource Workload are separate from leave in the HR Timesheets module (tblday_off). The HR Timesheets module does not affect the Resource Workload grid.


2. Create tasks with dates for planning

Where: any module that supports tasks (Projects, Clients, Leads, Tickets, etc.)

Essential fields for Resource Workload:

Field Required Note
startdate Yes Task start date
duedate Recommended Without deadline, system uses today or datefinished
Estimate hour Yes Custom field injected by the module — entered manually by PM
assigned (tbltask_assigned) Yes Assigned staff (can be multiple)

The Estimate hour field: is a custom field of type number with slug tasks_estimate_hour, automatically injected into all tasks upon module installation. It appears in the task form under the name "Estimate hour".


3. View workload

Where: /admin/reports/resource_workload (requires permission pw_rp_resource_workload → view)

3a. Workload tab

Available filters:

  • Date range (default: last 7 days → today)
  • Filter by individual staff, department, role, or project

Reading the grid:

  • E (Estimate) = hours distributed from Estimate hour per day
  • S (Spent) = hours actually logged via task timer per day
  • Red = E or S exceeds that staff member's daily capacity
  • Tooltip on hover = list of tasks contributing to that cell

3b. Timeline tab (Gantt)

Colored bars per task relation type:

  • Blue = project task (rel_type = 'project')
  • Green = client task (rel_type = 'customer')
  • Orange = ticket task (rel_type = 'ticket')
  • etc.

Drag & drop on bars: modifies startdate and duedate directly on the task → Estimate hour is automatically recalculated based on working days × daily capacity.


4. Log actual hours

Actual hours (column S) come from task timers, not from the HR Timesheets module:

Where: any task → Start Timer button (or Log Time manually)

Action Table populated
Start/Stop timer on task tbltaskstimersstart_time, end_time, staff_id, task_id
Manual time log on task tbltaskstimers — identical fields

Hours from HR Timesheets (check-in/check-out, attendance sheets) do NOT appear in Resource Workload.


5. Identifying overloads and rebalancing

  1. Detection: red cells in the Workload grid or "Overload" slices in the Chart tab
  2. Identify culprit tasks: hover over the red cell → tooltip lists the tasks
  3. Rebalancing actions:
    • Extend deadline: drag on Gantt or edit duedate on task
    • Redistribute: change assigned staff on task
    • Reduce estimate: edit the Estimate hour field on task
  4. Verification: reload the grid to confirm cells are green

Required permissions

Permission Access
pw_rp_resource_workload → view Access to the Resource Workload page (all 4 tabs) + modify workload settings + drag on Gantt

Note: There are no separate granular view/edit/delete permissions for Resource Workload. A single view flag controls everything — including the ability to modify per-staff capacities and reschedule tasks via Gantt.


Gotchas

Problem Cause Solution
Staff not appearing in grid Not active or has no tasks in the selected range Check active=1 on staff + extend the date range
Column S = 0 despite hours being logged Hours are in HR Timesheets, not in task timers Log hours via task timer (not via HR check-in)
Estimate hour missing from task Custom field not filled in Fill in the Estimate hour field on each task
Task without deadline does not appear correctly in grid duedate missing → system uses today Always set duedate on planned tasks
Drag on Gantt does not save Missing permission Verify staff has pw_rp_resource_workload → view
HR leave does not block days in Workload Modules are completely separate Add days off manually in Workload → Day-offs

Module references

  • Tasks — tasks with Estimate hour and timers
  • Projects — projects and project tasks
  • Timesheets — HR time tracking (separate from Resource Workload)
  • Reports — other performance reports