Baselines
The Baselines module captures point-in-time snapshots of project schedules and provides variance analysis between the current plan and any saved baseline.
Overview
Schedule baselines are the cornerstone of project performance measurement. By saving a snapshot of all WBS element dates, durations, and effort at a specific point in time, project managers can later compare the current schedule against the original plan. ProBeya supports up to 11 baselines per project (numbered 0–10), following the same convention as industry-standard scheduling tools like Microsoft Project.
Getting Started
- Navigate to PPM > Schedules and select a project.
- Ensure the WBS is fully populated with planned dates and effort estimates.
- Click Save Baseline and choose a baseline number (0–10).
- Give the baseline a name (e.g., "Original Plan", "Re-baseline Q2") and optional notes.
- Use the Compare view to see variance between the current schedule and any saved baseline.
How It Works
Saving a Baseline
When a baseline is saved via saveBaseline, the system snapshots every WBS element in the project, capturing:
- Start date (
earlyStartorplannedStartDate, whichever is set) - End date (
earlyFinishorplannedEndDate, whichever is set) - Duration in days (
durationDays) - Effort in hours (
plannedEffortHours) - Completion percentage at the time of capture
The baseline record itself stores:
| Field | Description |
|---|---|
baselineNumber | Integer 0-10, must be unique per project |
name | Human-readable label (e.g., "Original Plan") |
notes | Optional description of why the baseline was captured |
setById | The user who created the baseline |
setAt | Timestamp of baseline creation |
The snapshot data is stored in a separate ppm_baseline_data table, so it remains immutable even as the live schedule changes. Each data row links back to its baseline record and the original WBS element.
Baseline Limits and Uniqueness
- Each project supports a maximum of 11 baselines (numbers 0 through 10)
- Baseline numbers must be unique per project; attempting to save a duplicate returns a
CONFLICTerror - To reuse a number, the existing baseline must be deleted first
- The count check prevents exceeding the 11-baseline limit
Listing Baselines
The listBaselines query returns all baselines for a project, ordered by baseline number ascending. Each result includes:
- The baseline metadata (number, name, notes, who set it, when)
- The creator's profile (name and email) via a relation join
- An
elementCountshowing how many WBS elements were captured
Deleting Baselines
The deleteBaseline mutation removes a baseline and cascades the deletion to all associated baseline data rows via foreign key constraints. This is a destructive operation; the baseline cannot be recovered after deletion.
Variance Analysis
The compareBaseline query returns per-element variance data comparing the current schedule against a specific baseline number:
| Metric | Calculation | Interpretation |
|---|---|---|
| Start variance | Current start date − baseline start date (days) | Positive = delayed |
| End variance | Current end date − baseline end date (days) | Positive = delayed |
| Duration variance | Current duration − baseline duration (days) | Positive = longer |
| Effort variance | Current effort − baseline effort (hours) | Positive = over-effort |
The response includes the baseline metadata (name, number, set date) and an array of comparison objects, each containing:
{
wbsElementId: string;
wbsCode: string;
title: string;
current: { start, end, duration, effort };
baseline: { start, end, duration, effort };
variance: { startDays, endDays, durationDays, effortHours };
}
Elements that exist in the current schedule but not in the baseline (added after the snapshot) will have null baseline values. Elements in the baseline that were removed from the current schedule are not included in the comparison.
Dual-Bar Gantt Overlay
The getBaselineGanttData query returns WBS elements formatted for dual-bar Gantt rendering. Each element includes:
- Current bar: Start date, end date, completion percentage
- Baseline bar: Start date, end date, and completion at time of snapshot (or null if no baseline data exists for this element)
- Hierarchy info: Parent ID, WBS code, milestone flag, critical path flag
Elements are ordered by sortOrder to maintain the WBS structure in the Gantt view. The dual-bar rendering makes it easy to spot slippage at a glance, especially for critical path elements and milestones.
Configuration
- Baseline numbers — 0 through 10 (maximum 11 per project)
- Baseline name — free-text label for identification
- Notes — optional description of why the baseline was captured
Permissions
| Action | Required Role |
|---|---|
| View baselines and variance | Any member with project access |
| Save a new baseline | Editor or Admin |
| Delete a baseline | Admin |
| Compare baseline to current | Any member with project access |
| View Gantt overlay | Any member with project access |
API Reference
| Procedure | Type | Description |
|---|---|---|
ppmBaselines.saveBaseline | Mutation | Snapshot all WBS elements into a new baseline |
ppmBaselines.listBaselines | Query | List all baselines for a project with element counts |
ppmBaselines.deleteBaseline | Mutation | Remove a baseline and cascade-delete its data |
ppmBaselines.compareBaseline | Query | Per-element variance between current and baseline |
ppmBaselines.getBaselineGanttData | Query | Dual-bar Gantt data for visual comparison |
Tips & Best Practices
Save Baseline 0 immediately after the schedule is approved by the steering committee. This becomes the "original" plan against which all future performance is measured. Reserve higher numbers for re-baselines after approved scope changes.
Review the dual-bar Gantt overlay during weekly status meetings. Comparing current progress bars against baseline bars makes schedule slippage visible to stakeholders who may not read variance tables.
Document the reason for each baseline in the notes field. When reviewing multiple baselines months later, the notes explain what triggered each re-baseline (e.g., "Re-baselined after Q2 scope change approval").