FolksPMS

Estimation · Budgeting · Scheduling · Kick-Off · Actuals — User Manual

Version 5.0  |  June 2026  |  CodeFolks · MasGen

34 Modules · 8 Pillars · 110 Tables · 369 Pages · 6-Level Gantt · Deviation Engine · Bilingual EN / العربية
Part I

Foundations

How FolksPMS is built, how you get in, how every page behaves, and the one idea that ties the whole suite together — the estimate-to-actuals spine.

01

Introduction & Architecture

Start here

FolksPMS is an enterprise Project Management Suite that runs a project from first estimate to final reconciliation on a single SQL-Server-backed engine. It is built on .NET 9 Blazor Server + ASP.NET Core Web API + SQL Server, and organised into 34 modules grouped under 8 navigation pillars.

SQL-first core

Every read and write goes through a named stored procedure — generic CRUD SP_s plus rich DevSP_ workflow procedures. No ORM, no LINQ in business logic.

The six-level Gantt

Estimation → Budgeting → Scheduling → Kick-Off → Actuals share one task shape, so any level overlays on another. The Deviation Engine watches the gap.

RBAC & workflow

Users → roles → privileges → menus & page actions. A shared workflow listener routes approvals, escalations and deviations suite-wide.

Bilingual & live

Full English and Saudi-Arabic (RTL), switchable from the top bar. Blazor + SignalR keep dashboards and Gantts live.

1.1 The eight pillars

PillarWhat it ownsModules
WorkspaceThe daily cockpit — dashboard, registers, planning board.DR, PR, PG, PL
Multi-Level GanttThe six-level estimate-to-actuals continuum.EG, BG, SG, KG, AG, DV
DeliveryExecution — turning the plan into delivered work.TK, RS, TA, MM, QA, GT
GovernanceControl gates and the audit trail.CH, AC, ES, CO, AR
Service & CollabDocuments, calendar, notifications, training, tickets.DM, CS, NT, TR, TT
SupplyProcurement and sub-contractors.BF, SC
Reports & InsightCross-module reporting and analytics.RM, IS
AdministrationIdentity, organisation, parameters, clients.CM, OR, SP, UM UM locked

1.2 The data flow at a glance

Client & Project
Estimate
Budget
Kick-Off Baseline
Actuals
Deviation → CR
What makes FolksPMS different. Most tools stop at a Gantt that goes red. FolksPMS closes the loop: its Deviation Engine compares Actuals to the frozen Kick-Off baseline and auto-promotes a breach into a governed Change Request — execution and governance, joined automatically.
How to read this manual. Part I gives you the foundations. Parts II–IX walk every module pillar-by-pillar (each chapter is anchored as #mod-XX by its two-letter code). Part X is pure reference. The companion Exercise Workbook turns it all into muscle memory on one running case study.
02

Login, Roles & RBAC

Every user has a Login, an Employee profile and one or more Roles. Roles are not labels — they drive exactly which menus, pages and actions you can reach.

FolksPMS login screen
Live screenshot   The FolksPMS sign-in page.

2.1 Signing in

  1. Open the FolksPMS front-end URL. Enter Username and Password.
  2. On success the API issues a JWT; the front-end resolves your role and redirects you to its default landing page — usually the Command Center.
  3. If your login status is Inactive or Blocked, sign-in is refused and only an administrator can restore it.
Seed accounts (training). superadmin / superadmin sees everything; riyam / riyam@123 is a scoped delivery account. Change these before any real deployment.

2.2 Roles you'll meet

RoleSeesCannot
SuperAdminEvery module, menu and action.(nothing — full access)
Project ManagerFull delivery on own projects — Gantts, tasks, resources, charter.Edit other PMs' projects; UM master setup.
Programme ManagerPortfolio view across projects; programme links.Day-to-day task edits outside scope.
ApproverApproval queues across modules.Create transactional records.
ViewerRead-only dashboards and reports.Any create / edit / delete.

2.3 The RBAC chain

Login ──▶ Users ──▶ UserRoles ──▶ UserRolePrivileges ──▶ SubMenu ──▶ MainMenu │ │ │ └──▶ PagePrivilegeTypes (View / Create / Edit / Delete / Approve) │ └──▶ DefaultPath (where you land after login)
If a button is greyed out, your role lacks that page-action privilege — not a bug. Privileges are granted on UserRolePrivileges per SubMenu × action. See User Management.
03

Common Page Operations

FolksPMS pages come in a handful of consistent shapes. Learn the pattern once and every one of the 369 pages feels familiar.

3.1 The four page archetypes

List page

A filterable grid with a toolbar — Add / Refresh / Export / Search — and a per-row action column (View / Edit / Delete).

Entry page

A form (modal or wizard) for create / edit. Codes are auto-generated; user & date stamps come from the JWT, not the form.

Detail / profile

A read view that pulls a composite record via a DevSP_ — header plus related tabs (team, phases, charter, comments).

Gantt / report

Interactive Gantt or parameterised report. Read-mostly, built for overlay and export.

3.2 Anatomy of a list page

FolksPMS — Standard list page
Add Refresh Export Search…
#CodeNameStatusActions
1PRJ-2026-0007Riverside Office Fit-OutOn Track
2PRJ-2026-0008Harbour Data CentreAt Risk

3.3 Conventions that hold everywhere

  • Codes auto-generate. Leave the code field blank when adding — the SP fills a human-readable identifier (e.g. PRJ-2026-0007).
  • Soft delete. Most rows carry IsActive — prefer deactivation over physical delete so history survives.
  • Stamping. CreatedBy / CreatedDate / UpdatedBy / UpdatedDate are filled from your token — the Audit trail depends on it.
  • Every dropdown is a picklist. Status, Priority and Severity all read from the central SP_Picklists table — see System Parameters.
  • Files go through Documents. Binaries never sit in an entity table — they're uploaded via the hook and referenced from Documents.
Keyboard. / focuses search on a list page, N opens Add where you have create rights, and Esc closes a modal without saving.
04

The Estimate-to-Actuals Spine

Core concept

This is the single idea that organises FolksPMS. The same project task is expressed at six levels of fidelity, each refining the last. Because all six share one underlying shape, the multi-level Gantt can overlay any level on any other — and the gap between the frozen plan and reality becomes a measurable, governable signal.

EG · L1
Estimation

Rough-order sizing to win the mandate.

BG · L2
Budgeting

The estimate, costed into money.

SG · L3
Scheduling

Dates, dependencies, critical path.

KG · L4
Kick-Off

The frozen, immutable baseline.

AG · L5
Actuals

What really happened.

DV · L6
Deviation

Breaches become Change Requests.

4.1 How a level feeds the next

EstimateROM tasks & durations
BudgetEstimate → cost lines
ScheduleReal dates + critical path
FreezeKick-Off baseline
TrackPost actuals
GovernDeviation → CR

4.2 Overlaying levels

The multi-level Gantt lets you toggle any level on or off and compare them in one chart. The most important comparison is Kick-Off vs Actuals — the baseline bar and the actual bar drawn together, so slippage is visible at a glance.

EG Estimation BG Budgeting SG Scheduling KG Kick-Off (baseline) AG Actuals DV Deviation
Task — KG vs AG overlay
W1W2W3W4W5W6W7W8
Strip-out & make safe
M&E first fix
Practical completion

Green = frozen Kick-Off baseline · Amber = Actuals · Red diamond = milestone. The amber bars running past the green ones are exactly what the Deviation Engine measures.

4.3 The deviation loop

The loop that closes itself. Deviation = Actuals − Baseline. When that gap breaches a per-project threshold (schedule % or cost %), the Deviation Engine logs a deviation and auto-creates a Change Request. The CR carries an owner, a rationale and an approval gate — so nothing material slips through unrecorded.
Workbook Lab 18 walks this entire spine end-to-end on a real project
05

Navigation — the 8 Pillars

The left navigation groups all 34 modules into eight pillars. Each module routes as /w/{Mc}/{Sub} and is documented in this manual as #mod-XX by its two-letter code. Click any chip to jump.

Workspace

Dashboard, registers and the planning board.

Supply

Procurement & partners.

Reports & Insight

Reporting & analytics.

Administration

Platform foundations.
Part II

Workspace

Your daily cockpit — the Command Center dashboard, the project and programme registers, and the planning board where work is shaped before it is scheduled.

DR

Command Center

Workspace

Command Center & operational dashboards.

The Command Center is the post-login landing page and the executive heartbeat of FolksPMS. It rolls up live counts from every pillar — active projects, open tasks, pending approvals, deviation alerts and budget burn — into a single glanceable cockpit.

Dashboards here are read-mostly: they aggregate other modules through DevSP_* rollup procedures rather than owning transactional data of their own.

Command Center dashboard
Live screenshot   The Command Center — live KPI rollups across the eight pillars.

How it works

LoginJWT issued, role resolved
Land on Command CenterKPIs + alerts load
Drill into a tileJump to the owning module

Concepts that matter

Pillar tiles

Every dashboard tile maps to one of the eight navigation pillars and links straight to it.

Live rollups

Counts come from cross-module DevSP_ aggregations, refreshed on load and honouring your role.

Data: the Command Center owns no transactional tables of its own — it reads everything through rollup DevSP_s, so its numbers are always a live reflection of the modules underneath.
Use it to navigate, not to enter. The Command Center never edits data, and tile counts honour your role — you only see projects and tasks you're entitled to.
PR

Projects

Workspace

The project register — the spine of the suite.

Projects is the master entity that almost every other module references. A project carries its code, client, currency, planned dates, budget envelope and live status, and fans out to child records: phases, the delivery team, and the project charter.

Because the project ID threads through tasks, budgets, schedules, change requests and tickets, getting the project record right is the single most important data-entry act in FolksPMS.

Projects register list
Live screenshot   The project register, with health buckets derived from status + progress.

The project lifecycle

Pick the clientFrom Client Master
Create the projectCode, currency, dates
Add phasesBreak work into stages
Assign the teamRoles & allocations
Sign the charterScope & objectives

Concepts that matter

Project code

Auto-suggested, human-readable identifier carried on every downstream record.

Health bucket

The list view derives on-track / at-risk / critical from status + progress.

Budget envelope

BudgetTotal sets the ceiling the Budgeting Gantt and Actuals reconcile against.

Phases, not ad-hoc tasks

Structure long projects with phases — every Gantt groups by them.

Roles

RoleCan do
Project ManagerFull create/edit on own projects, team and charter.
Programme ManagerRead across the portfolio; links projects to programmes.
ExecutiveRead-only via Command Center.

Tables you'll touch

TablePurpose
PR_ProjectsThe master project header — code, client, currency, dates, budget, status.
PR_ProjectPhasesStages a project is broken into; tasks and schedules group by phase.
PR_ProjectTeamPeople assigned to the project with their role and allocation.
PR_ProjectCharterThe signed-off scope, objectives and success criteria.

Entry

  • Code auto-fills — leave blank
  • Currency is fixed at creation
  • Status drives the health colour

Detail / profile

  • Composite read via a DevSP_
  • Tabs: phases · team · charter
  • Roll-ups of CRs & deviations
Get these right first. Set Status from the picklist (the health colour depends on it), confirm the currency before you save, and use phases — the Gantts group by them.
Workbook Lab 3 — create the Riverside project & charter
PG

Programs

Workspace

Programmes — portfolios of related projects.

A Programme groups several projects that share an outcome, sponsor or funding line. Programmes let executives steer a portfolio: aggregate budget, combined milestones and shared benefits roll up here.

Projects link up to a programme; the programme never owns the project's transactional detail, only the relationship and portfolio-level fields.

How it works

Define the programmeSponsor, outcome, budget
Attach projectsMap existing projects
Track milestonesProgramme-level gates
Review benefitsRealised vs planned

Concepts that matter

Portfolio rollup

Budget and progress aggregate from member projects.

Benefits

The "why" — outcomes the programme must deliver.

Data: the PG_* tables hold the programme header and its project links. CRUD runs through generic SP_s; portfolio rollups read member projects through a DevSP_.
Create the programme first if you can, then attach projects at creation. Programme budget is a planning envelope, not a hard cap on member projects.
PL

Planning

Workspace

Planning board — shaping work before it is scheduled.

Planning is where work is shaped: planning items, backlog entries and capacity assumptions are captured before they harden into a scheduled Gantt. Think of it as the bridge between "we should do this" and "this is on the plan".

Planning records are deliberately lightweight — they carry intent and rough sizing, and graduate into tasks or schedule lines once committed.

How it works

Capture intentBacklog / planning item
Rough-size itEffort & priority
CommitPromote to a task / schedule line

Concepts that matter

Backlog

Unscheduled but agreed work, ranked by priority.

Capacity

Rough team capacity used to sanity-check the plan.

Use Priority from the picklist consistently — Insights ranks the backlog by it.
Part III

The Multi-Level Gantt

The six-level planning continuum and its closing act. The same task, expressed at six levels of fidelity — Estimation, Budgeting, Scheduling, Kick-Off, Actuals — with the Deviation Engine turning the gap into governed change.

EG

Estimation Gantt

Level 1

Level 1 — the first cut of the plan.

The Estimation Gantt is the first cut: rough-order-of-magnitude tasks and durations used to size the work and win the mandate. Estimates here feed the budget.

All six levels share the same task shape so they can be overlaid on one chart — the multi-level Gantt toggles let you compare any level against another (e.g. Kick-Off vs Actuals).

How it works

Draft estimate tasksROM durations
Roll up effortTotal the estimate
Hand to BudgetingEstimate → budget
ROM sizing

Rough order of magnitude — accuracy comes later.

Feeds budget

Estimation totals seed the Budgeting Gantt.

Estimation tasks need not have hard dates — they exist to size, not to schedule.
BG

Budgeting Gantt

Level 2

Level 2 — the estimate, costed into money.

The Budgeting Gantt converts the estimate into money: a budget header with cost lines mapped to tasks and phases. This is the financial baseline the Actuals later reconcile against.

How it works

Create budget headerPer project
Add cost linesLabour, materials, other
Freeze at kick-offBudget baseline
Cost lines

Each line ties spend to a task/phase and a category.

Baseline

Frozen budget the Deviation Engine compares against.

Keep budget lines aligned to phases so variance can be attributed cleanly.
SG

Scheduling Gantt

Level 3

Level 3 — work on a real calendar.

The Scheduling Gantt turns sized, budgeted work into a real calendar: tasks with start/end dates, dependencies and the critical path. This is the working schedule the team executes against.

How it works

Date the tasksStart / end
Add dependenciesPredecessors
Find critical pathLongest chain
Submit for kick-offSchedule → baseline
Dependencies

Finish-to-start links drive the critical path.

Real dates

Unlike EG/BG, SG tasks carry true calendar dates.

Scheduling Gantt — critical path
W1W2W3W4W5W6W7W8
Design sign-off
Procure long-lead
Fit-out works
Handover
SG is where bars become real — its tasks carry StartDate/EndDate, so this is the first level that renders a true calendar.
KG

Kick-Off Gantt

Level 4 · Baseline

Level 4 — the frozen baseline.

At project kick-off the schedule is frozen into a baseline. The Kick-Off Gantt is immutable: it is the agreed plan against which every later actual and deviation is judged. Re-baselining is a governed event, not an edit.

Kick-Off Gantt
Live screenshot   The Kick-Off Gantt — the frozen baseline every actual is measured against.

How it works

Freeze the scheduleCopy SG → baseline
Lock baseline tasksNo further edits
Compare to actualsKG vs AG overlay
Immutable

Baseline tasks are read-only once frozen.

Snapshot

KG is a point-in-time copy of the schedule.

Re-baselining is change-controlled. Treat it as a governed action — it resets the deviation reference, so every gap from then on is measured against the new plan.
Workbook Lab 8 — freeze the Riverside baseline
AG

Actuals Gantt

Level 5

Level 5 — what really happened.

The Actuals Gantt records what really happened: actual start/finish, actual progress and actual cost as work is delivered. Overlaying it on the Kick-Off baseline reveals slippage at a glance.

How it works

Log actual startAs work begins
Update progress% complete
Post actual costReconcile to budget
Feed Deviation EngineGap detection
Actual vs plan

The overlay against KG is the core insight.

Actual cost

Reconciles against the frozen budget baseline.

Keep actual progress current — the Deviation Engine only screams when fed fresh actuals.
DV

Deviation Engine

Level 6 · Signature

Level 6 — where execution meets governance.

The Deviation Engine is the signature of FolksPMS. It continuously compares Actuals (AG) against the frozen Kick-Off baseline (KG) and, when variance breaches a threshold, auto-promotes the deviation into a Change Request — closing the loop between execution and governance with no manual hand-off.

The detection-to-governance loop

Detect varianceAG − KG
Apply thresholdSchedule / cost %
Raise deviationLogged with magnitude
Auto-create CRPromote to Change Requests

Concepts that matter

Thresholds

Tolerances that decide when a gap becomes a deviation.

Auto-promotion

Breaching deviations become Change Requests automatically.

Severity thresholds (example)

BandSchedule varianceCost varianceAction
Minor< 5%< 3%Logged, watched — no CR.
Material5–15%3–10%Deviation raised → CR auto-created.
Critical> 15%> 10%Deviation + CR + escalation.
The loop that closes itself. A deviation that became a CR is your audit trail — don't delete it, resolve the Change Request. Tune thresholds per project: a 5% slip on a fixed-price job is not the same as on time-and-materials.
Where deviations land. Auto-raised CRs appear in Change Requests and, if Critical, trigger an Escalation. The trail is permanent.
Workbook Lab 16 — introduce a slip and watch the CR auto-raise
Part IV

Delivery

Execution modules — tasks, resources, time & attendance, materials, quality and goals — where the plan turns into delivered work.

TK

Tasks

Delivery

Tasks — the unit of delivery.

Tasks are the atomic units of work. Each task belongs to a project (and usually a phase), carries a status and priority, and accumulates comments, attachments and dependencies as it is worked.

Where the Gantts plan time, Tasks track the day-to-day reality of who is doing what, and surface blockers early through status and dependencies.

Tasks board
Live screenshot   The Tasks board — owner, status, priority and due labels at a glance.

The task lifecycle

Create taskProject + phase
Assign & prioritiseOwner, priority
Work itComments, attachments
Resolve blockersDependencies
CompleteStatus → Completed

Concepts that matter

Priority

From the central Priority picklist; drives sorting.

Dependencies

One task blocking another, tracked explicitly.

Attachments

Files live via the upload hook, not in the table.

Tables you'll touch

TablePurpose
TK_TasksThe task header — project, phase, owner, status, priority, dates.
TK_TaskCommentsThreaded discussion on a task.
TK_TaskAttachmentsFile attachments linked to a task.
TK_TaskDependenciesPredecessor / successor links between tasks.
Use Blocked status honestly — it is what surfaces risk to the Command Center. Link dependencies so the Scheduling Gantt can compute the critical path.
Workbook Lab 9 — tasks, owners & dependencies
RS

Resources

Delivery

Resources — people, roles and allocation.

Resources manages the people (and sometimes equipment) available to projects: their roles, rates and how their capacity is allocated across the schedule.

Resource allocation is what makes the schedule honest — a Gantt that ignores who is available is fiction.

How it works

Register resourceRole, rate, capacity
Allocate to project% of capacity
Watch over-allocationConflicts surface
Allocation

Share of a resource's capacity given to a project.

Rate

Cost rate feeding actual labour cost.

Keep allocations realistic — over 100% allocation is the most common planning error.
TA

Time & Attendance

Delivery

Time & Attendance — timesheets and presence.

Time & Attendance captures effort against tasks (timesheets) and presence (attendance). Logged time feeds actual labour cost and progress; attendance underpins capacity and compliance.

Approved timesheets are the source of truth for actual effort that the Actuals Gantt and budget reconciliation rely on.

How it works

Log timeHours vs task
Submit timesheetPeriod close
ApproveManager sign-off
Cost itHours × rate → actuals
Timesheet

Hours booked against tasks for a period.

Attendance

Presence record feeding capacity.

Only approved time should flow to cost — keep the approval step in place.
MM

Materials

Delivery

Materials — items, requisitions and goods receipt.

Materials tracks the physical items a project consumes: the catalogue, stock, requisitions raised against projects, and goods-received notes (GRN) when supply arrives.

Materials shares the Requisition and GRN concepts with the Buy/Sell module — here the focus is internal consumption, there it is external purchasing.

How it works

Catalogue itemMaster record
Raise requisitionNeed against project
Receive (GRN)Confirm delivery
Update stockOn-hand adjusted
Requisition

A request for material against a project.

GRN

Goods-received note confirming delivery.

Match GRNs to requisitions so consumption ties back to the project that needed it.
QA

Quality

Delivery

Quality — checklists, inspections and defects.

Quality Assurance records inspections, quality checklists and defects. Defects carry a severity and a status lifecycle from raised to closed, giving a measurable picture of delivery quality.

Quality data feeds governance: a spike in high-severity defects is exactly the kind of signal Escalations and the Command Center should surface.

How it works

Run inspectionAgainst checklist
Raise defectSeverity set
Fix & retestResolve
Close defectVerified
Severity

From the central Severity picklist.

Defect lifecycle

Open → Fixed → Verified → Closed.

Be disciplined with severity — it drives whether a defect blocks a gate.
GT

Goals · OKR

Delivery

Goals · OKR — objectives and key results.

Goals / OKR aligns delivery to outcomes. Objectives carry measurable key results; progress on key results shows whether the work is moving the needle, not just keeping busy.

OKRs connect the strategic "why" (often a programme benefit) to the tactical "what" (tasks and milestones).

How it works

Set objectiveOutcome statement
Define key resultsMeasurable targets
Track progress% to target
Objective

A qualitative outcome to achieve.

Key result

A quantitative measure of the objective.

Keep key results numeric — "improve quality" is not a KR; "defects < 5/sprint" is.
Part V

Governance

Control gates: change requests, approvals, escalations, compliance and audit. Nothing material moves without a recorded decision.

CH

Change Requests

Governance

Change Requests — the controlled path to change.

Change Requests is the governed funnel for any change to scope, schedule or budget. CRs may be raised by hand or created automatically by the Deviation Engine when a baseline breach is detected.

A CR moves through a status lifecycle (Draft → Submitted → Approved/Rejected → Implemented) with an approval gate, so every material change has an owner, a rationale and a decision on record.

Change Requests
Live screenshot   Change Requests — including the ones the Deviation Engine raised automatically.

The CR lifecycle

Raise CRManual or auto from DV
SubmitFor approval
DecideApprove / reject
ImplementRe-baseline if needed
Auto-raised

Deviation breaches become CRs automatically.

CR lifecycle

Draft → Submitted → Approved → Implemented.

Audit trail

Every CR is a permanent governance record.

Don't bypass the CR for "small" scope creep — that is exactly what it exists to catch. Link the CR back to the deviation or task that triggered it.
Workbook Lab 17 — approve the auto-raised CR & re-baseline
AC

Approvals

Governance

Approvals — workflows, steps and delegations.

Approvals provides the reusable approval machinery the rest of the suite plugs into: a workflow definition, its ordered steps, delegations for when an approver is away, and the approval records themselves.

When a CR, timesheet, requisition or leave needs sign-off, it routes through an Approvals workflow and lands in the approver's queue.

How it works

Define workflowOrdered steps
Item routes inAwaiting decision
Delegate if awayCover approver
DecideApprove / reject
Steps

Sequential stages an item must clear.

Delegation

Temporary reassignment of approval authority.

Tables you'll touch

TablePurpose
AC_WorkflowsAn approval workflow definition.
AC_StepsOrdered steps within a workflow.
AC_DelegationsTemporary reassignment of an approver's authority.
AC_ApprovalsIndividual approval records and their decisions.
Set up delegations before holidays — stuck approvals are the top workflow complaint.
ES

Escalations

Governance

Escalations — surfacing what is stuck.

Escalations raises the alarm when something breaches an SLA or sits unresolved: a blocked task, an overdue approval, a high-severity defect. Escalations carry their own status lifecycle and route to the right level.

Escalations are the immune system of the suite — they make sure problems get attention before they become incidents.

How it works

TriggerSLA / threshold breach
EscalateTo the right level
ResolveAction taken
SLA breach

The most common escalation trigger.

Escalation level

Who it rises to.

Keep escalation reasons specific — "late" is less useful than "approval overdue 3 days".
CO

Compliance

Governance

Compliance — obligations and evidence.

Compliance tracks the regulatory, contractual and policy obligations a project must satisfy, and the evidence that proves it. Each obligation has a status and an owner.

Compliance turns "we should be compliant" into an auditable register of who owns what and whether it is met.

How it works

Register obligationStandard / clause
Assign ownerAccountable person
Attach evidenceProof of compliance
Mark metVerified
Obligation

A requirement the project must meet.

Evidence

Documents proving an obligation is met.

Tie evidence documents through the Documents module so they are version-controlled.
AR

Audit

Read-only

Audit — the immutable record of who did what.

Audit reports expose the trail: who changed which record, when, and from what to what. Audit is read-only by design — it observes the rest of the suite rather than owning data.

Combined with the platform's CreatedBy / UpdatedBy stamping, Audit answers the question every governance review asks: prove it.

How it works

Activity capturedStamped on every write
Filter the trailBy user / entity / date
Export evidenceFor review
Attribution

Every change is tied to a user and timestamp.

Read-only

Audit observes; it never edits.

Audit is your friend in disputes — export the relevant slice rather than screenshots.
Part VI

Service & Collaboration

Documents, calendar sync, notifications, training and a ticket/helpdesk desk — the connective tissue that keeps the team aligned.

DM

Documents

Service

Documents — the versioned project library.

Documents is the project's filing cabinet: documents, versions and folders. Binary files are stored via the upload hook; the table holds metadata, version and the link.

Charters, evidence, drawings and contracts all live here so other modules can reference a single source of truth.

How it works

Create folderOrganise
Upload documentNew version
Version itHistory kept
Reference elsewhereFrom CR / compliance
Versioning

Each upload is a new version, history retained.

Metadata only

Binaries live via the upload hook.

Never paste binaries into entity tables — always go through Documents.
CS

Calendar Sync

Service

Calendar Sync — events and external calendars.

Calendar Sync publishes project milestones, meetings and deadlines as calendar events and keeps them in step with external calendars.

It is the lightweight glue that puts project dates where the team already looks — their own calendar.

How it works

Create eventMilestone / meeting
Sync outTo external calendar
RemindBefore the date
Event

A dated item published to calendars.

Sync

Two-way alignment with external calendars.

Use events for dates people must act on; use Notifications for FYIs.
NT

Notifications

Service

Notifications — the message queue.

Notifications is the suite's outbound message queue: templates define the message, the queue holds pending sends, and a status tracks delivery.

Approvals, escalations and deviations all drop notifications here rather than mailing directly, so delivery is observable and retryable.

How it works

TemplateReusable message
QueuePending send
SendDelivered
Template

Parameterised message body.

Queue status

Pending / Sent / Failed.

Check the queue status when users say "I never got the email" — failures are visible here.
TR

Training

Service

Training — courses, sessions and records.

Training manages the courses people need, the sessions that deliver them, and the records of who completed what. It underpins competency and compliance.

Training records prove a resource is qualified for the role they are allocated to — a quiet but important governance link.

How it works

Define courseCurriculum
Schedule sessionDate, trainer
Record completionPass / attend
Course

A unit of learning.

Completion

Evidence a person is trained.

Link required training to roles so allocation can flag unqualified resources.
TT

Tickets · Helpdesk

Service

Tickets · Helpdesk — issues and support requests.

Tickets / Helpdesk is the intake desk for issues and support requests that aren't planned tasks: a stakeholder query, a defect report from the field, an access request. Tickets carry priority and a status lifecycle.

Tickets that turn out to be real work can be promoted into tasks or change requests, keeping the planned plan clean.

How it works

Raise ticketIssue logged
TriagePriority, assignee
ResolveOr promote to task
CloseConfirmed
Priority

From the central Priority picklist.

Ticket lifecycle

Open → In Progress → Resolved → Closed.

Promote, don't copy — turn a real ticket into a task rather than tracking it twice.
Part VII

Supply

Buy / sell procurement and sub-contractor management — bringing external goods, services and partners into the project safely.

BF

Buy / Sell

Supply

Buy / Sell — procurement and purchasing.

Buy / Sell handles external procurement: purchase requisitions, purchase orders to vendors, and goods receipt (GRN) when they deliver. It is the money-out counterpart to delivery.

BF shares the Requisition and GRN vocabulary with Materials; here the counterpart is an external vendor and a PO, not internal stock.

How it works

RequisitionNeed to buy
Raise POTo vendor
Receive (GRN)Goods in
Match & pay3-way match
Vendor

External supplier on a PO.

3-way match

Requisition ↔ PO ↔ GRN before payment.

Insist on the 3-way match — requisition, PO and GRN agreeing is your spend control.
SC

Sub-Contractors

Supply

Sub-Contractors — external delivery partners.

Sub-Contractors manages the partners who deliver parts of the work: their contracts, scope packages, and performance. It brings external delivery under the same governance as internal work.

Sub-contractor packages link to the schedule and budget so external work is planned and costed alongside your own.

How it works

Onboard subContract terms
Assign packageScope of work
Track performanceDelivery & quality
Certify paymentOn milestones
Contract

Terms governing the partner.

Work package

Scope assigned to the sub.

Tie sub-contractor payments to milestones, not calendar — it protects delivery.
Part VIII

Reports & Insight

Cross-module reporting and the Insights analytics surface that turns the warehouse of project data into decisions.

RM

Reports

Reporting

Reports — cross-module reporting.

Reports is the standard reporting surface: parameterised, filterable reports that draw across modules through DevSP_* procedures. Where module Report pages give a module view, RM gives the cross-cutting view.

Reports are read-only and built for export — the format finance and the steering committee expect.

How it works

Set filtersDate, project, scope
RunAggregate via DevSP
ExportTo share
Parameters

Filters that scope the report.

Export

Built to leave the system.

Save your common filter sets — most users run the same three reports weekly.
IS

Insights

Analytics

Insights — analytics and trends.

Insights turns the warehouse of project data into trends and predictions: burn rates, deviation patterns, resource utilisation, quality trajectories. It is the analytical layer above plain Reports.

Insights answers "what is likely to happen" where Reports answers "what happened".

How it works

Aggregate dataAcross modules
Surface trendPatterns over time
RecommendDecision support
Trend

Direction over time, not a point.

Prediction

Forward-looking signals.

Use Insights for steering decisions; use Reports for the numbers behind them.
Part IX

Administration

Platform foundations — user management & RBAC, organisation structure, system parameters and the client master.

CM

Client Master

Admin

Client Master — the customer register.

Client Master holds the customers projects are delivered for: client records, contacts and contracts. Every project references a client, so this register is a prerequisite for project creation.

Clean client data here flows into every invoice, report and contract reference downstream.

Client Master register
Live screenshot   The Client Master — every project's Client dropdown reads from here.

How it works

Register clientLegal entity
Add contactsWho to talk to
Record contractCommercial basis
Create projectsAgainst the client

Tables you'll touch

TablePurpose
CM_ClientsThe client master record — name, code, key commercial fields.
CM_ClientContactsPeople at the client and how to reach them.
CM_ClientContractsContracts / commercial agreements with the client.
Create the client before the project — the project's Client dropdown reads from here.
Workbook Lab 2 — register the Riverside client
OR

Organisation

Admin

Organisation — internal structure.

Organisation models your own company: business units, departments, locations and the org hierarchy. It is the internal mirror of Client Master.

Org structure scopes reporting and resource pools — knowing which unit owns a project drives a lot of rollups.

How it works

Define unitsDivisions / BUs
DepartmentsWithin units
LocationsSites
Hierarchy

Parent/child org structure.

Location

Physical sites.

Keep the hierarchy shallow and stable — deep org trees make reporting brittle.
SP

System Parameters

Admin · Backbone

System Parameters — the configuration backbone.

System Parameters holds the suite's configuration: global settings, the central SP_Picklists lookup that powers every Status/Priority/Severity dropdown, currencies and number sequences.

Almost every dropdown you see elsewhere is fed from here. Changing a picklist value here changes it everywhere — with the matching CHECK constraint kept in step.

How it works

Set parametersGlobal config
Maintain picklistsStatus/Priority/etc
PropagateReflected suite-wide

Tables you'll touch

TablePurpose
SP_PicklistsThe central lookup behind every coded dropdown in the suite.
SP_ParametersGlobal key/value system settings.
SP_CurrenciesCurrency master used by projects and budgets.
SP_NumberSequencesAuto-numbering sequences for codes.
To add a Status value you must do two things: insert into SP_Picklists and update the column's CHECK constraint. Treat parameters as production config — they ripple everywhere.
UM

User Management

Locked · Shared

User Management — identity, RBAC and workflow.

User Management is the shared, locked platform foundation: users and logins, employees, departments, designations, roles and the menu/privilege matrix that drives what each role can see and do — plus the workflow listener.

UM is inherited verbatim from the Folks platform and shared across products. It is documented here as reference; changes to UM affect every consuming application, so treat it as read-only in a PMS context.

How it works

LoginCredentials → JWT
Resolve roleDesignation → role
Apply privilegesMenus & actions
Route workflowListener fires
RBAC chain

User → role → privileges → menus/actions.

Locked module

Shared platform — do not modify in PMS.

Workflow listener

Drives approval routing suite-wide.

Roles

RoleSees
SuperAdminEverything — the seed admin account.
Project ManagerDelivery modules for own projects.
ApproverApproval queues across modules.
ViewerRead-only dashboards and reports.
Locked module. Don't re-point or rename UM tables — the whole platform depends on them. UM pages use legacy flat routes (e.g. /UserManagement), not the /w/{Mc}/ pattern.
Part X

Reference

The look-up half of the manual — status vocabularies, the SQL-first data model, bilingual behaviour, troubleshooting and a glossary.

R1

Status & Picklist Reference

Every coded dropdown in FolksPMS is fed from SP_Picklists (see System Parameters). These are the values you'll meet most, and the colour each maps to on a list page.

Project & task status

StatusMeaningHealth colour
PlannedCreated, not yet started.Blue / neutral
On TrackIn progress, within tolerance.Green
At RiskProgress slipping, watch it.Amber
CriticalBreaching threshold — deviation likely.Red
ClosedCompleted or cancelled.Grey

Priority & severity

ScaleValues (high → low)Used by
PriorityCritical · High · Medium · LowTasks, Tickets, Planning backlog
SeverityCritical · High · Medium · LowQuality defects, Escalations
Deviation bandCritical · Material · MinorDeviation Engine → Change Requests

Change Request lifecycle

Draft
Submitted
Approved
Rejected
Implemented
Rule of thumb: if a dropdown won't accept a value you expect, the value exists in SP_Picklists but its column CHECK constraint hasn't been updated — the two must stay in step.
R2

Data Model & SQL-First Architecture

FolksPMS is deliberately SQL-first: business logic lives in stored procedures, not in an ORM. Understanding the naming convention lets you predict where any piece of data lives.

34
Modules
110
Tables
369
Pages
8
Pillars
6
Gantt levels

Naming conventions

PatternMeaningExample
<PREFIX>_*A table belonging to a module.PR_Projects, TK_Tasks
SP_<Entity>_<Verb>Generic CRUD stored procedure.SP_PR_Projects_Insert
DevSP_<Mod>_<Feature>Rich / composite workflow procedure.DevSP_DR_CommandCenter_GetDashboard

The request path

Blazor page ──▶ FE service (typed HttpClient) ──▶ Web API controller ──▶ Facade (BFL) ──▶ Business (BLL) ──▶ Data (DAL) ──▶ SP_/DevSP_ ──▶ SQL Server
No LINQ in business logic

Every read/write is an explicit, named, auditable stored procedure.

SP_ vs DevSP_

SP_ = generic CRUD; DevSP_ = composite reads & algorithms (CPM, Earned Value, FX, deviation).

Want to know where a screen's data comes from? Read its FE service — every method names the SP_ or DevSP_ it calls.
R3

Bilingual & RTL

FolksPMS ships fully bilingual — English and Saudi Arabic (ar-SA) — with a complete right-to-left layout. The toggle sits in the top navigation; switching language flips the entire UI mirror-image, not just the text.

English (LTR)

  • Navigation on the left
  • Tables read left → right
  • Latin numerals

العربية (RTL)

  • Navigation mirrors to the right
  • Tables read right → left
  • Arabic labels, dates & layout
One click, whole app. Language is a user preference carried in session — every page, Gantt and report re-renders in the chosen direction. Picklist labels carry both languages so dropdowns translate too.
R4

Troubleshooting

SymptomLikely causeFix
Add / Edit button greyed outYour role lacks that page-action privilege.Grant it on UserRolePrivileges (see UM).
A dropdown is missing a valueSP_Picklists has it but the CHECK constraint doesn't.Update the column CHECK to match (see SP).
Project won't save — no clientNo client exists yet.Create the client first in Client Master.
Gantt bars don't renderTasks have no StartDate/EndDate.That's expected for EG/BG — only SG onward carry real dates.
Deviation never firesActuals aren't being posted, or threshold too high.Post fresh actuals (AG) and tune the threshold (DV).
Approval stuck for daysApprover away, no delegation.Set up a delegation in Approvals.
"I never got the email"Notification failed in the queue.Check queue status in Notifications.
R5

Glossary

TermDefinition
BaselineThe frozen Kick-Off (KG) schedule against which all later actuals and deviations are measured.
DeviationThe measured gap between Actuals and the frozen baseline; a breach auto-raises a Change Request.
Change Request (CR)The governed funnel for any change to scope, schedule or budget. May be raised by hand or by the Deviation Engine.
Critical pathThe longest chain of dependent tasks; it determines the shortest possible project duration.
Health bucketDerived on-track / at-risk / critical state shown on list views, computed from status + progress.
PillarOne of the eight navigation groupings that organise the 34 modules.
PicklistA central SP_Picklists lookup behind every coded dropdown (Status, Priority, Severity…).
3-way matchRequisition ↔ PO ↔ GRN agreeing before a vendor is paid — the core spend control in Buy/Sell.
DevSPA rich, composite stored procedure (vs a generic CRUD SP_) that powers detail views, dashboards and algorithms.
RBACRole-Based Access Control — the User → role → privilege → menu/action chain that gates the whole suite.
Ready to practise? Head to the Exercise Workbook and run the Riverside Office Fit-Out case study from estimate to actuals.