Blog / CPM fundamentals

FS, SS, FF, SF: Choosing the Right Relationship Type

There are four ways to link two activities in a CPM schedule: finish-to-start, start-to-start, finish-to-finish, and start-to-finish. Most of your logic should be finish-to-start. The other three exist for overlapping work, and they're useful, but each one opens a way to break the schedule quietly. This post explains what each type actually constrains, gives construction examples where each one fits, works through a start-to-start/finish-to-finish pair with numbers, and lists the mistakes to look for when you review someone else's logic.

What each type means

Every relationship has a predecessor and a successor. The type says which end of the predecessor controls which end of the successor.

TypeRulePlain EnglishTypical example
FSSuccessor start ≥ predecessor finishB can't start until A is donePour footings, then backfill
SSSuccessor start ≥ predecessor startB can't start until A has startedHang drywall, then start taping
FFSuccessor finish ≥ predecessor finishB can't finish until A is doneFinish taping after hanging is done
SFSuccessor finish ≥ predecessor startB can't finish until A has startedTemporary heat until permanent HVAC starts

Any of these can carry a lag (a delay added to the relationship) or a lead (a negative lag). Lags have their own problems, covered in Lags and Leads.

All four are "greater than or equal" rules. A relationship sets the earliest something can happen, never the exact moment. The successor can always be later if other logic or resources push it.

Finish-to-start: the default

FS says the successor can't start until the predecessor is finished. It's the right answer most of the time, because most construction work really is sequential at the level a schedule should capture: footings before foundation walls, rough-in before inspection, inspection before insulation, insulation before drywall.

FS logic is also the easiest to read, to status, and to defend. If someone asks why drywall on Level 4 didn't start, "the rough-in inspection on Level 4 hadn't passed" is an answer everyone understands.

The DCMA 14-Point Assessment, which many owners use to check schedule quality, expects at least 90 percent of relationships to be FS. You don't need to treat that as a law, but if your schedule is mostly SS and FF, that's worth a hard look. See The DCMA 14-Point Assessment, Explained for Construction.

Start-to-start: overlapping work that starts together

SS says the successor can't start until the predecessor has started. Use it when two activities genuinely overlap and the second one only needs the first to get going.

Good uses:

  • Drywall taping can start a few days after hanging starts on the same floor, because the first rooms are hung.
  • Fireproofing can start a few days after steel erection starts, once enough of the frame is up and bolted.
  • Curtain wall installation can start on the lower floors after the first panels are delivered, while deliveries continue.

SS almost always needs a lag. "Taping starts when hanging starts," with zero lag, would mean the tapers walk in the same morning as the hangers. That's rarely what you mean.

Finish-to-finish: work that can't wrap up early

FF says the successor can't finish until the predecessor has finished. It's the natural partner to SS. If taping can start three days after hanging starts, it also can't finish until hanging is done (and usually a couple days after).

Good uses:

  • Taping can't finish until hanging finishes.
  • Commissioning of a system can't finish until the last piece of equipment is installed.
  • Backfill on a long utility trench can't finish until pipe installation finishes.

A worked SS/FF pair

Drywall hanging on one floor takes 10 days. Taping and finishing takes 8 days. The logic: taping starts at least 3 days after hanging starts (SS + 3), and taping finishes at least 2 days after hanging finishes (FF + 2). Assume hanging starts at day 0 (0-based convention: EF = ES + duration).

Hang:   ES 0,  EF 0 + 10 = 10

Tape, from SS+3:   ES >= 0 + 3 = 3,   so EF >= 3 + 8 = 11
Tape, from FF+2:   EF >= 10 + 2 = 12

Tape EF = max(11, 12) = 12
Tape ES = 12 - 8 = 4   (if the activity runs continuously)

The FF relationship controls, not the SS. Taping starts on day 4, not day 3, because if it started on day 3 it would catch up to the hangers and run out of work before they finish. That's the pair doing its job: the SS keeps taping from starting too early, and the FF keeps it from finishing too early.

Without the FF, taping would show a finish of day 11, one day before hanging finishes, plus whatever lag you think it needs. The schedule would be wrong in a way nobody would notice until the field noticed.

How software handles this case varies. Most CPM engines, including P6 and MS Project, keep the duration contiguous and back the start up from the controlling finish, as above. Some tools can split the activity instead. Know which your tool does.

Start-to-finish: rare, but real

SF says the successor can't finish until the predecessor has started. It reads backwards to most people, and it's the most misused type. It's also legitimately rare.

The classic construction use is a handoff from temporary to permanent:

  • Temporary heat (successor) can't end until permanent HVAC startup (predecessor) begins.
  • Temporary power (successor) can't be removed until permanent power is energized (predecessor).
  • Dewatering (successor) can't stop until the permanent underslab drainage system is operating (predecessor).

In each case, the thing that matters is that the old system keeps running until the new one starts. You're not saying temporary heat must start after anything. You're saying it can't stop early.

If you find yourself reaching for SF in any other situation, check whether you've got the predecessor and successor reversed. Most SF relationships in schedules are FS relationships drawn the wrong way around. Some owners' specifications discourage or prohibit SF entirely; check your spec before using one. See Reading a Schedule Spec: Section 01 32 16.

How each type goes wrong

SS with no finish tie

An activity whose only successor is linked SS has an open finish. Nothing in the schedule cares when it finishes. If drywall hanging slips 15 days at the end, the taping activity tied SS from its start doesn't notice, and neither does anything else.

The fix is usually an FF from the same predecessor to the same successor, or a separate FS from the predecessor to something downstream. Every activity needs something driven by its finish. See Open Ends and Dangling Logic.

FF with no start tie

The mirror image. An activity whose only predecessor is linked FF has an open start. The software will schedule its start as early as the data date allows, because nothing is holding it back.

Duration changes that flip the driver

SS/FF pairs are sensitive to durations. In the drywall example, the FF controlled. If someone later changes taping to 12 days, the SS controls instead (ES 3, EF 15), and the FF is no longer driving. That's fine, but it means the driving relationship changes silently when durations change. Check driving logic after updates.

Using SS to fake progress

Linking everything SS with zero lag because "they all start together" makes the schedule look compressed and hides the real sequence. If two activities really start together and finish independently, ask whether they need a common predecessor instead.

SF used backwards

As above. Read the relationship out loud: "Activity B cannot finish until activity A starts." If that sentence is nonsense, the relationship is wrong.

A rule of thumb for choosing

  1. Start with FS. Use it unless you can say why work genuinely overlaps.
  2. If the successor can start once the predecessor is partly done, consider breaking the predecessor into smaller pieces linked FS. Two 5-day activities linked FS are often clearer than one 10-day activity with an SS + 5 lag.
  3. If breaking it up isn't practical, use SS with a lag, and add an FF with a lag so the finish is tied too.
  4. Use SF only for handoffs where the old thing must keep running until the new thing starts.

Key takeaways

  • FS should be the large majority of your logic. It's the easiest to read and defend.
  • SS and FF usually come as a pair. An SS alone leaves the predecessor's finish open.
  • In an SS/FF pair, either relationship can drive. Recheck which one does when durations change.
  • SF is for handoffs like temporary-to-permanent systems. Most other SF links are FS drawn backward.
  • Every relationship is a minimum, not an exact date. The successor can always be later.