Dependency types: FS, SS, FF, SF with lead and lag
Project schedules are built from relationships between work items. These relationships — called dependencies — control the logical order in which work can happen. Raytio PPM supports the four standard dependency types along with lead and lag modifiers.
This page explains what each dependency type means and how lead and lag shift the timing.
The four dependency types
Every dependency links two work items. We call them the source and the target:
- The source is the work item that drives the constraint
- The target is the work item that is constrained
| Type | Name | Meaning |
|---|---|---|
| FS | Finish-to-Start | The target cannot start until the source finishes |
| SS | Start-to-Start | The target cannot start until the source starts |
| FF | Finish-to-Finish | The target cannot finish until the source finishes |
| SF | Start-to-Finish | The target cannot finish until the source starts |
Finish-to-Start (FS)
FS is the most common dependency type — it represents straightforward sequencing. The target work item waits for the source to finish before it can begin.
Source: ██████████
Target: ████ ██████
← source finishes, then target starts →
Example: "Foundation must be complete before framing can begin."
Start-to-Start (SS)
SS means the target cannot start until the source has started, but both can run in parallel after that point. This is useful when two activities can overlap but one must begin first.
Source: ██████████████████
Target: ····██████████████████
↑ target starts after source starts
Example: "Pouring concrete and levelling can happen in parallel, but pouring must begin first."
Finish-to-Finish (FF)
FF means the target cannot finish until the source has finished. Both activities can be in progress at the same time, but the target must wait for the source to complete before it can also complete.
Source: ██████████████████
Target: ██████████████████
↑ both finish together (or target finishes after)
Example: "Testing cannot be signed off until development is complete."
Start-to-Finish (SF)
SF is the rarest type. The target cannot finish until the source has started. This is typically used for just-in-time scheduling where a new activity replaces an ongoing one.
Source: ██████████
Target: ██████████████
↑ target finishes when source starts
Example: "The old security shift cannot end until the new shift has started."
Lead and lag
Lead and lag modify a dependency by shifting the timing forward or backward. They are stored as a numeric value (in days by default) on each dependency record.
Lag (positive value)
Lag adds a waiting period between the two work items. The target must wait an additional number of days beyond what the dependency type requires.
FS + 3 days lag:
Source: ██████████
··· ← 3-day wait
Target: ██████████
Example: "After pouring concrete (source), wait 3 days for curing before framing (target)."
Lead (negative value)
Lead is a negative lag — it allows the target to start earlier than the dependency would normally permit. This represents overlap between activities.
FS + (-2 days) lead:
Source: ██████████████
Target: ██████████
↑ target starts 2 days before source finishes
Example: "Begin site preparation 2 days before demolition finishes — the last phase of demolition doesn't affect the prep area."
Combined examples
Dependencies can combine type and lead/lag to model complex scheduling relationships:
| Dependency | Meaning |
|---|---|
| FS + 0 | Standard sequencing: target starts when source finishes |
| FS + 5 | Target starts 5 days after source finishes (e.g. curing time) |
| FS - 2 | Target starts 2 days before source finishes (overlap) |
| SS + 3 | Target starts 3 days after source starts |
| FF + 0 | Target finishes when source finishes |
| FF - 1 | Target finishes 1 day before source finishes |
Source and target terminology
Raytio PPM uses source and target to describe the two ends of a dependency:
source_work_item_id— the work item that drives the constrainttarget_work_item_id— the work item that is constrained
These terms describe a logical relationship rather than a chronological one. For example, in an SF dependency the source can actually start after the target on the calendar, even though it is still the "source" of the constraint. The source drives the relationship; the target receives the constraint.
When reading a dependency record, think: "The target is constrained by the source." The dependency type tells you how it is constrained (which start/finish events are linked), and the lag tells you by how much.
How dependencies are stored
Each dependency is a row in the ppm_work_item_dependencies table:
| Column | Purpose |
|---|---|
source_work_item_id | The driving work item |
target_work_item_id | The constrained work item |
dependency_type | One of FS, SS, FF, SF |
lag_days | Positive for lag, negative for lead, zero for no offset |
Dependencies are stored independently of the start and finish dates on the linked work items. See How PPM handles scheduling for how dependencies relate to schedule calculations.
Worked example: a small project schedule
Consider a project with four work items:
| ID | Work item | Duration |
|---|---|---|
| A | Design | 5 days |
| B | Build foundation | 10 days |
| C | Cure concrete | 3 days |
| D | Frame structure | 8 days |
Dependencies:
| Source | Target | Type | Lag |
|---|---|---|---|
| A | B | FS | 0 |
| B | C | FS | 0 |
| C | D | FS | 0 |
This creates a simple chain: Design (5d) -> Build (10d) -> Cure (3d) -> Frame (8d), totalling 26 days on the critical path.
Now suppose we change to:
| Source | Target | Type | Lag |
|---|---|---|---|
| A | B | FS | 0 |
| B | C | FS | +3 |
| C | D | FS | -2 |
Now there is a 3-day wait between foundation and curing (for the concrete to partially set), and framing begins 2 days before curing finishes (because the last day of curing doesn't affect the framing area). The schedule compresses while respecting real-world constraints.
Further reading
- How PPM handles scheduling — how dependencies, dates, work, and duration fit together
- Work, duration, and elapsed time — how effort and calendar time relate to dependency scheduling
- Baselines and variance — how dependency snapshots contribute to schedule tracking