Relationships & Logic
FS / SS / FF / SF + Lag (Planner Language)
FS/SS/FF/SF + lag/lead in planner language

XER column names and stored codes live in TASKPRED (Activity Relationships). Which calendar consumes lag hours is covered separately in Calendar Used for Relationship Lag. This note is about what a planner means when talking about relationship types.
Predecessor and successor
Oracle defines the first activity in a relationship as the predecessor and the second as the successor. Dates flow from relationships plus durations, and a link can reach across projects — an external relationship pointing at another project entirely.
In the live file (23-10-CE-LIVE) there are 5,670 TASKPRED rows, and only three relationship types actually appear in it: FS, FF, and SS. Do not claim SF is present in that file.
The four types (Oracle wording)
| Type | Planner read | Oracle |
|---|---|---|
| FS Finish-to-Start | B cannot start until A finishes | "The successor activity cannot start until its predecessor finishes." |
| SS Start-to-Start | B cannot start until A starts | "The successor activity cannot start until its predecessor starts." |
| FF Finish-to-Finish | B cannot finish until A finishes | "The successor activity cannot finish until its predecessor finishes." |
| SF Start-to-Finish | B cannot finish until A starts | "The successor activity cannot finish until its predecessor starts." |
FS is the default sequence — pour, then strip. SS models a staggered start, such as opening a face and then starting the follow-on crew. FF ties two finishes together, as when commissioning cannot finish until installation finishes. SF is legal but rare in practice; do not invent one in a converter or viewer just to fill out the set.
Microsoft Project uses the same four names for the same logic, though the underlying file fields differ. See msp/predecessors.md if present.
Lag and lead
Oracle describes lag as a permitted modification of the relationship logic. Positive lag is a delay; negative lag is lead, meaning the successor may move earlier than the base relationship would otherwise allow.
Oracle's own FS example makes the direction concrete: +10 days means the successor cannot start until ten days after the predecessor finishes, while −10 days means the successor could start ten days before the predecessor finishes. Lag is not float and not remaining duration — it is a property of the link itself, not of either activity.
Hours, calendars, two Oracle sentences
The XER stores lag as lag_hr_cnt, in hours. Oracle's "About Relationships" documentation states that lag entered in any unit other than hours is converted to hours using the predecessor activity's calendar. Separately, Oracle's schedule-options documentation identifies the calendar that consumes those hours during scheduling as one of four choices — Predecessor, Successor, 24-hour, or Project Default — with Successor as the documented default when nothing else is set.
The EPPM REST API text states that lag "is based on the successor activity's calendar." That statement describes the scheduling default, not the unit-conversion rule covered above — the two are separate mechanics and should not be collapsed into a single field. See Calendar Used for Relationship Lag for more detail.
What this is not
A relationship is not a constraint; constraints such as Start On or Before / Finish No Later Than and the mandatory types live on the activity itself, not on the link. A relationship is also not WBS indentation — outline position says nothing about logic. And a Gantt bar touching another bar visually does not mean the relationship must be FS; bars can overlap freely under SS, FF, or a negative-lag relationship.
Sources
- Oracle About Relationships [27 Aug 2026]
- Oracle TASKPRED [27 Aug 2026]
- Oracle schedule options [27 Aug 2026]
- EPPM REST Relationship.Lag [27 Aug 2026]
- Team-proved: XER 23-10-CE-LIVE (FS/FF/SS only)