Exercise Workbook

FolksPMS — Hands-on Training on one running project

Version 5.0  |  June 2026  |  CodeFolks · MasGen

18 Labs · 14–18 Hours · Case Study: Riverside Office Fit-Out · Final Assessment + Answer Key
00

How to use this workbook

This workbook accompanies the FolksPMS User Manual. Every lab is part of one continuous story — you'll take a single project, the Riverside Office Fit-Out, from a client record all the way to a deviation that auto-raises a Change Request. Save your work after each step so a trainer can review your progress.

Your case study — Riverside Office Fit-Out (TRN-PRJ). A 12-week commercial interior fit-out for the client Riverside Holdings: strip-out, M&E first & second fix, partitions, finishes and handover. Every lab adds one more layer to this same project, so the codes you record early (client, project, tasks) are reused later.

Before you start

  1. You have a working login with SuperAdmin or a fully-scoped delivery role.
  2. The API and FE are both running (locally via F5, or against the hosted environment).
  3. Both solutions build with 0 errors. Confirm with your trainer if unsure.
  4. The database CF_MasGen_FolksPMS_Dev is restored with seed data.
  5. Have a notebook open to record codes (Client, Project, Phase, Task, Budget, CR) — they're referenced in later labs.

Skill levels

Foundation — Labs 1–4

Anyone can do these. Sign in, navigate, build the client and project.

Intermediate — Labs 5–13

The estimate-to-actuals spine plus delivery: Gantts, tasks, resources, time, materials, quality.

Advanced — Labs 14–18

Sub-contractors, actuals, the Deviation Engine, the auto-raised Change Request and the full end-to-end capstone.

Conventions used in this workbook

DO — Action

An action you perform on screen.

SEE — Outcome

The expected result you should observe.

NOTE — Record

A value (code, number) to write down.

Q — Self-check

A question to test your understanding.

Tip. Don't skim — actually do the steps. Labs build on each other; the project, phases and tasks you create early are exactly what the Gantts, actuals and deviation labs operate on.
01

Lab 1 — System orientation

Foundation

Get comfortable with the navbar, the eight pillars, the standard list/form pattern, the language toggle and the role you'll work as.

Foundation 30 minutes Goal: orient yourself Pre-req: working login

1.1 First login

  • Open the FolksPMS FE URL. Sign in with your trainer-provided credentials (e.g. superadmin / superadmin).
  • You land on the Command Center — your role's default landing page — with live KPI tiles.
  • Note the role shown at the top right.

1.2 Walk the eight pillars

  • Open each pillar in turn: Workspace, Multi-Level Gantt, Delivery, Governance, Service & Collab, Supply, Reports & Insight, Administration.
  • Sub-menus expand under each pillar; pages share a consistent toolbar — Add / Refresh / Export / Search.

1.3 Try the language toggle

  • Click the EN / عربي toggle in the top bar. Switch to Arabic, then back.
  • The whole layout mirrors right-to-left and labels translate — not just the text direction.

1.4 Standard page anatomy

  • Open Workspace → Projects. Identify: header toolbar, filter strip, data grid, the health-coloured status column, and the per-row action column.
  • Click Add to open the entry form, then Esc to cancel without saving.

Self-check

  • Q1.1  Which table stores your username and password?
  • Q1.2  How many navigation pillars group the 34 modules?
  • Q1.3  If the Add button is greyed out, which table likely lacks a privilege row for your role?
02

Lab 2 — Register the client

Foundation

Every project needs a client. Create Riverside Holdings so the project in Lab 3 has somewhere to attach.

Foundation 25 minutes Goal: client master Pre-req: Lab 1
Manual reference — Client Master (CM)

2.1 Create the client

  • Open Administration → Client Master. Click Add and enter the client below — leave the Code blank.
FieldValue
Client NameRiverside Holdings
Country / CitySaudi Arabia · Riyadh
CurrencySAR
Default Payment TermsNet 30
  • Record the auto-generated Client code (e.g. CLT-2026-00xx).

2.2 Add a primary contact

  • On the client's Contacts tab, add Layla Al-Harbi · Facilities Director · primary with an email and phone.
  • The contact appears, flagged as Primary.

2.3 Record the contract

  • On the Contracts tab, add a contract — Fit-Out Framework, value 1,850,000 SAR, lump-sum.

Self-check

  • Q2.1  Why must the client exist before the project?
  • Q2.2  Which table holds the client header, and which holds the contacts?
03

Lab 3 — Create the project & charter

Foundation

Create the spine record of the whole workbook — the Riverside Office Fit-Out project — break it into phases, assign a team, and sign the charter.

Foundation 45 minutes Goal: the project record Pre-req: Lab 2
Manual reference — Projects (PR)

3.1 Create the project

  • Open Workspace → Projects → Add. Pick client Riverside Holdings; fill the fields below; leave the project Code blank.
FieldValue
Project NameRiverside Office Fit-Out
ClientRiverside Holdings (from Lab 2)
CurrencySAR (inherited from client)
Planned Start / Finish2026-07-01 → 2026-09-23 (12 weeks)
Budget Envelope1,650,000 SAR
StatusPlanned
  • Record the project code (e.g. PRJ-2026-00xx) — you'll use it in every later lab.

3.2 Add phases

  • On the project's Phases tab, add five phases: Strip-out · M&E First Fix · Partitions & Ceilings · Finishes & Second Fix · Handover.
  • The Gantts in later labs will group tasks by these phases.

3.3 Assign the team

  • On the Team tab, add yourself as Project Manager (100%) and one colleague as Site Supervisor (50%).

3.4 Sign the charter

  • On the Charter tab, record the scope (interior fit-out, 1,400 m²), three objectives and three success criteria, then mark it Signed-off.
  • The project detail page now shows phases, team and a signed charter.

Self-check

  • Q3.1  Why is currency fixed at project creation?
  • Q3.2  What does the list-view health bucket derive its colour from?
  • Q3.3  Why structure work into phases rather than ad-hoc tasks?
04

Lab 4 — Shape the backlog (Planning)

Foundation

Before scheduling, capture the work as lightweight planning items on the Planning board and rough-size them.

Foundation 30 minutes Goal: shaped backlog Pre-req: Lab 3
Manual reference — Planning (PL)

4.1 Capture planning items

  • Open Workspace → Planning. Against the Riverside project, add backlog items for the major work blocks (one per phase is fine), each with a Priority.
  • Rough-size each item with an effort estimate (e.g. person-days).
  • The backlog lists, ranked by priority.

4.2 Commit one item

  • Promote the highest-priority item toward a scheduled line (you'll formalise it as an Estimation task in Lab 5).

Self-check

  • Q4.1  What makes a Planning record different from a scheduled task?
  • Q4.2  Which module ranks the backlog by the Priority you set?
05

Lab 5 — Estimation Gantt

Intermediate

Level 1 of the spine. Draft rough-order-of-magnitude tasks and durations that size the work and seed the budget.

Intermediate 40 minutes Goal: the estimate Pre-req: Lab 4
Manual reference — Estimation Gantt (EG)

5.1 Draft estimate tasks

  • Open Multi-Level Gantt → Estimation for the Riverside project. Add ROM tasks under each phase using the durations below.
PhaseEstimate taskROM duration
Strip-outStrip-out & make safe2 weeks
M&E First FixM&E first fix3 weeks
Partitions & CeilingsPartitions & ceilings3 weeks
Finishes & Second FixFinishes & second fix3 weeks
HandoverSnag, clean & handover1 week

5.2 Roll up the estimate

  • Use the Gantt's rollup to total the estimated effort.
  • Record the total estimated duration (should be ~12 weeks).

Self-check

  • Q5.1  Why don't Estimation tasks need hard calendar dates?
  • Q5.2  What does the Estimation total feed into next?
06

Lab 6 — Budgeting Gantt

Intermediate

Level 2 of the spine. Convert the estimate into money — a budget header with cost lines mapped to phases.

Intermediate 40 minutes Goal: cost baseline Pre-req: Lab 5
Manual reference — Budgeting Gantt (BG)

6.1 Create the budget header

  • Open Multi-Level Gantt → Budgeting for the project. Create a budget header tied to the project; currency SAR.

6.2 Add cost lines per phase

  • Add cost lines mapped to the phases — split each into Labour · Materials · Other.
PhaseLabourMaterialsOtherLine total (SAR)
Strip-out60,00020,00010,00090,000
M&E First Fix180,000240,00030,000450,000
Partitions & Ceilings150,000180,00020,000350,000
Finishes & Second Fix220,000290,00040,000550,000
Handover40,00010,00010,00060,000
Total650,000740,000110,0001,500,000
  • Record the budget total (1,500,000) — it must sit under the project's 1,650,000 envelope.
Within envelope. 1,500,000 budgeted against a 1,650,000 envelope leaves a 150,000 contingency. That budget becomes the baseline the Deviation Engine reconciles against from Lab 16 onward.

Self-check

  • Q6.1  Why align budget cost lines to phases?
  • Q6.2  At which spine level does the budget become a frozen baseline?
07

Lab 7 — Scheduling Gantt & critical path

Intermediate

Level 3 of the spine. Turn the sized, budgeted work into a real calendar — dated tasks, dependencies and the critical path.

Intermediate 50 minutes Goal: working schedule Pre-req: Lab 6
Manual reference — Scheduling Gantt (SG)

7.1 Date the tasks

  • Open Multi-Level Gantt → Scheduling. Give each estimate task real start/finish dates running from 2026-07-01.
TaskStartFinishPredecessor
Strip-out & make safe01 Jul14 Jul
M&E first fix15 Jul04 AugStrip-out
Partitions & ceilings22 Jul11 AugM&E first fix (SS+1w)
Finishes & second fix12 Aug01 SepPartitions
Snag, clean & handover02 Sep23 SepFinishes

7.2 Add dependencies & find the critical path

  • Link the finish-to-start dependencies as above. Run the critical-path calculation.
  • The chain Strip-out → M&E → Finishes → Handover lights up as the critical path; partitions has a little float.
  • Note which tasks are on the critical path — a slip on these slips the whole project.

Self-check

  • Q7.1  What is the first spine level that renders true calendar bars, and why?
  • Q7.2  What does "float" mean for the partitions task?
08

Lab 8 — Freeze the Kick-Off baseline

Intermediate

Level 4 of the spine — the pivotal moment. Freeze the schedule into an immutable baseline. Everything from here is judged against it.

Intermediate 30 minutes Goal: frozen baseline Pre-req: Lab 7
Manual reference — Kick-Off Gantt (KG)

8.1 Freeze the schedule

  • Open Multi-Level Gantt → Kick-Off. Use Freeze Baseline to copy the Scheduling Gantt into the Kick-Off baseline.
  • The Kick-Off Gantt now shows the locked baseline bars; the tasks are read-only.
  • Record the baseline date — this is the reference for every deviation later.

8.2 Confirm immutability

  • Try to edit a baseline task date.
  • The edit is blocked — re-baselining is a governed action, not an inline edit.
This is the line in the sand. From now on, the project's progress is measured against this frozen plan. Don't re-baseline casually — it resets what "on time" means.

Self-check

  • Q8.1  Why is the Kick-Off Gantt read-only once frozen?
  • Q8.2  What does re-baselining do to the deviation reference?
09

Lab 9 — Tasks, owners & dependencies

Intermediate

Break the baseline phases into day-to-day tasks, assign owners and priorities, and link a blocking dependency.

Intermediate 40 minutes Goal: working tasks Pre-req: Lab 8
Manual reference — Tasks (TK)

9.1 Create tasks

  • Open Delivery → Tasks. Add tasks under the M&E First Fix phase: Cable containment, Power & data rough-in, HVAC ductwork. Set owners and priorities.
  • Record the three task codes.

9.2 Link a dependency

  • Make Power & data rough-in depend on Cable containment (finish-to-start).
  • The dependency is recorded on TK_TaskDependencies.

9.3 Block a task honestly

  • Set HVAC ductwork to status Blocked with a reason (awaiting duct delivery).
  • The Command Center risk tile picks the blocker up.

Self-check

  • Q9.1  Which table records that one task blocks another?
  • Q9.2  Why does honest use of the Blocked status matter?
10

Lab 10 — Resources & allocation

Intermediate

Register the people delivering the work and allocate their capacity — then catch an over-allocation.

Intermediate 30 minutes Goal: honest plan Pre-req: Lab 9
Manual reference — Resources (RS)

10.1 Register resources

  • Open Delivery → Resources. Register an M&E Lead and two Electricians with roles, rates and capacity.

10.2 Allocate to the project

  • Allocate the M&E Lead 60% to Riverside, then deliberately allocate them another 60% to a second project.
  • The system flags the resource at 120% — an over-allocation conflict.
  • Fix it by dropping the Riverside allocation to 50%.

Self-check

  • Q10.1  What is the most common resource-planning error?
  • Q10.2  Which resource field feeds actual labour cost later?
11

Lab 11 — Time & attendance

Intermediate

Log effort against tasks, submit a timesheet, approve it, and watch it become actual labour cost.

Intermediate 30 minutes Goal: effort → cost Pre-req: Lab 10
Manual reference — Time & Attendance (TA)

11.1 Log time against tasks

  • Open Delivery → Time & Attendance. Log a week of hours for the Electricians against Power & data rough-in.
  • Submit the timesheet for the period.

11.2 Approve & cost it

  • As manager, approve the timesheet.
  • Hours × rate becomes actual labour cost, which feeds the Actuals Gantt in Lab 15.

Self-check

  • Q11.1  Why should only approved time flow to cost?
  • Q11.2  What is the formula for actual labour cost from a timesheet?
12

Lab 12 — Materials & procurement

Intermediate

Raise a material requisition, turn it into a purchase order to a vendor, and receive the goods with a 3-way match.

Intermediate 40 minutes Goal: req → PO → GRN Pre-req: Lab 9
Manual — Materials (MM) Manual — Buy / Sell (BF)

12.1 Raise a requisition

  • Open Delivery → Materials. Raise a requisition against Riverside for HVAC ductwork — 120 m needed for the blocked task in Lab 9.
  • Record the requisition code.

12.2 Raise the PO

  • In Supply → Buy / Sell, convert the requisition into a Purchase Order to a vendor.

12.3 Receive & match

  • Post a goods-received note (GRN) when the duct arrives.
  • Requisition ↔ PO ↔ GRN now agree — the 3-way match clears for payment. The blocked HVAC task in Lab 9 can be unblocked.

Self-check

  • Q12.1  What three documents must agree in a 3-way match?
  • Q12.2  How does Materials differ from Buy / Sell, given they share the requisition/GRN vocabulary?
13

Lab 13 — Quality & defects

Intermediate

Run an inspection against a checklist, raise a defect with a severity, and walk it through to closed.

Intermediate 30 minutes Goal: quality loop Pre-req: Lab 9
Manual reference — Quality (QA)

13.1 Run an inspection

  • Open Delivery → Quality. Run a first-fix inspection against the M&E checklist.
  • Raise a defect — two data points missing at desk 14, severity Medium.
  • Record the defect code.

13.2 Resolve & close

  • Move the defect Open → Fixed → Verified → Closed as the work is corrected and re-checked.
  • The quality trend on the Command Center improves as the defect closes.

Self-check

  • Q13.1  What is the full defect lifecycle?
  • Q13.2  Why does defect severity matter for governance?
14

Lab 14 — Sub-contractor package

Advanced

Onboard a flooring sub-contractor, assign them a scope package tied to the schedule, and certify a milestone payment.

Advanced 35 minutes Goal: partner under control Pre-req: Labs 7, 9
Manual reference — Sub-Contractors (SC)

14.1 Onboard the sub

  • Open Supply → Sub-Contractors. Onboard Skyline Flooring with contract terms (lump sum, retention 5%).

14.2 Assign the package

  • Assign a scope package — Carpet & vinyl, all floors — linked to the Finishes phase, with two milestones.
  • When milestone 1 is met, certify the payment.
  • The sub's work is now planned and costed alongside your own.

Self-check

  • Q14.1  Why tie sub-contractor payments to milestones, not the calendar?
  • Q14.2  What does linking the package to a phase let the Gantts do?
15

Lab 15 — Post actuals

Advanced

Level 5 of the spine. Record what actually happened — actual starts, progress and cost — and overlay it on the frozen baseline.

Advanced 40 minutes Goal: actuals vs plan Pre-req: Labs 8, 11
Manual reference — Actuals Gantt (AG)

15.1 Log actuals on plan

  • Open Multi-Level Gantt → Actuals. For Strip-out, log actual start 01 Jul and 100% complete on 14 Jul — exactly on baseline.
  • Overlay Kick-Off (KG) and Actuals (AG): the bars sit on top of each other — no deviation yet.

15.2 Post actual cost

  • Post the approved labour cost from Lab 11 plus the duct material cost from Lab 12 as actual cost.
  • Record the running actual cost against the 1,500,000 budget.
Keep it current. The Deviation Engine in the next lab only reacts to posted actuals — stale actuals mean a silent project that is actually slipping.

Self-check

  • Q15.1  Which overlay is the single most useful comparison on the multi-level Gantt?
  • Q15.2  What does actual cost reconcile against?
16

Lab 16 — Trigger a deviation

Advanced

Level 6 — the signature moment. Introduce a real slip, watch the Deviation Engine detect it and auto-raise a Change Request.

Advanced 45 minutes Goal: deviation → CR Pre-req: Lab 15
Manual reference — Deviation Engine (DV)

16.1 Set the threshold

  • Open the Deviation thresholds for Riverside. Confirm the Material band fires at schedule variance ≥ 5% or cost variance ≥ 3%.

16.2 Introduce the slip

  • Back on Actuals, post M&E first fix as finishing 11 Aug instead of the baseline 04 Aug — a one-week slip on a critical-path task.
  • The AG bar runs past the KG baseline bar on the overlay — visible slippage.

16.3 Watch the engine act

  • Open Multi-Level Gantt → Deviation (or refresh the Command Center deviation tile).
  • A deviation is logged at the Material band — and a Change Request has been auto-created in Governance.
  • Record the deviation magnitude and the auto-raised CR code — you'll resolve it in Lab 17.
This is FolksPMS's signature. No one filed that Change Request — the breach did. Execution and governance, joined automatically.

Self-check

  • Q16.1  What two inputs does the Deviation Engine subtract to find variance?
  • Q16.2  Why did a one-week slip here breach the threshold when float elsewhere wouldn't?
  • Q16.3  What did the breach create automatically?
17

Lab 17 — Approve the CR & re-baseline

Advanced

Take the auto-raised Change Request through its approval gate, implement it, and re-baseline the schedule under change control.

Advanced 40 minutes Goal: govern the change Pre-req: Lab 16
Manual — Change Requests (CH) Manual — Approvals (AC)

17.1 Review the auto-raised CR

  • Open Governance → Change Requests. Find the CR from Lab 16; add a rationale (long-lead duct delivery) and a proposed new finish date.
  • Submit the CR for approval.

17.2 Approve it

  • Open Governance → Approvals. As the approver, clear the CR's approval step.
  • The CR moves Submitted → Approved.

17.3 Implement & re-baseline

  • Mark the CR Implemented, then re-baseline the schedule to the agreed dates (a governed Kick-Off action).
  • The deviation closes against the new baseline; the audit trail keeps the whole history.
The loop is closed. A slip became a measured deviation, an auto-raised CR, a governed decision, and a controlled re-baseline — every step on the record. Don't delete the deviation; the resolved CR is your evidence.

Self-check

  • Q17.1  What is the full CR lifecycle?
  • Q17.2  Why is re-baselining a governed action rather than an inline edit?
18

Lab 18 — Estimate-to-actuals capstone

Advanced

Tie it all together. With no step-by-step hand-holding, drive a fresh small project through the entire spine in one sitting.

Advanced 90 minutes Goal: full loop, unaided Pre-req: Labs 1–17
The scenario. Riverside Holdings awards a second job — Riverside Reception Refurb, a 4-week, 220,000 SAR mini-project. Run it end-to-end yourself.

The challenge — do all of this without looking back

  • Reuse the Riverside Holdings client; create the new project with two phases and a signed charter.
  • Draft the Estimation Gantt, convert to a Budgeting Gantt within a 240,000 envelope.
  • Schedule it with dependencies and a critical path, then freeze the Kick-Off baseline.
  • Add tasks, allocate a resource, log & approve a timesheet.
  • Post actuals — make one task finish late enough to breach the Material band.
  • Confirm the Deviation Engine auto-raised a CR; approve it and re-baseline.
  • Finally, run a cross-module Report and open Insights to read the burn trend.

Acceptance — you're done when…

  • The project shows a frozen baseline, posted actuals, a closed deviation, and an Approved/Implemented CR.
  • The Command Center reflects the new project in its rollups, and the Audit trail shows every step attributed to you.
Congratulations. If you completed Lab 18 unaided, you can run the full FolksPMS estimate-to-actuals lifecycle. Take the final assessment to confirm it.

Final assessment

Thirty minutes, closed-book. Five multiple-choice, five short-answer, and one practical. Trainers: the answer key is at the foot of this page.

  Part A — Multiple choice

Pick the single best answer.

A1

What does the Deviation Engine compare to detect variance?

  • a Estimation vs Budgeting
  • b Actuals (AG) vs the frozen Kick-Off baseline (KG)
  • c Scheduling vs Estimation
  • d Budget vs Programme envelope
A2

Which spine level is the first to render true calendar bars?

  • a Estimation (EG)
  • b Budgeting (BG)
  • c Scheduling (SG)
  • d Actuals (AG)
A3

When a deviation breaches its threshold, FolksPMS automatically creates a…

  • a New project
  • b Change Request
  • c Timesheet
  • d Purchase order
A4

Every coded dropdown (Status, Priority, Severity) is fed from…

  • a A hard-coded enum in the FE
  • b SP_Picklists in System Parameters
  • c The Audit module
  • d Each module's own table
A5

Which module is shared and locked across the Folks platform?

  • a Projects (PR)
  • b User Management (UM)
  • c Reports (RM)
  • d Tasks (TK)

  Part B — Short answer

B1

Name the six levels of the Gantt spine, in order.

B2

Why must a client exist before you can create a project?

B3

What is a 3-way match, and which module enforces it?

B4

Explain the difference between a generic SP_ and a DevSP_.

B5

Why is re-baselining treated as a governed action, not an inline edit?

  Part C — Practical

C1

On the Riverside Office Fit-Out, post an actual that finishes a critical-path task 8 working days late. Show the trainer: (1) the AG-vs-KG overlay with the slip, (2) the logged deviation and its band, (3) the auto-raised Change Request, and (4) the Audit entry attributing the change to you.

Trainer answer key — click to reveal

Part A. A1 → b · A2 → c · A3 → b · A4 → b · A5 → b.

B1. Estimation (EG) → Budgeting (BG) → Scheduling (SG) → Kick-Off (KG) → Actuals (AG) → Deviation (DV).

B2. The project's Client is a mandatory reference that reads from Client Master; with no client there is nothing for the project to attach to, and downstream invoices/reports rely on it.

B3. Requisition ↔ Purchase Order ↔ Goods-Received Note all agreeing before a vendor is paid; enforced in Buy / Sell (BF) (and shared in spirit with Materials).

B4. SP_ = generic CRUD (insert/update/select/delete) for one table. DevSP_ = a rich, composite procedure that returns multiple result sets or runs an algorithm (CPM, Earned Value, FX, deviation detection) for detail views, dashboards and engines.

B5. The Kick-Off baseline is the immutable reference every actual and deviation is judged against; silently re-baselining would erase the slip and the audit trail. It runs through change control so the reset is recorded and approved.

C1. Accept when the candidate shows: the AG bar past the KG bar on the overlay; a deviation row at the Material (or Critical) band with the right magnitude; an auto-created CR linked to the deviation; and an Audit row stamped with their user and timestamp.

Pass mark: Part A 4/5, Part B 4/5, Part C must be demonstrated.