Predecessor Relationships
Understand different predecessor relationship types (FS, SS, FF, SF), lag, and how they affect scheduling.
What are predecessor relationships?
- definition: Predecessor relationships define how tasks depend on each other for scheduling.
- types: Four relationship types: Finish-to-Start (FS), Start-to-Start (SS), Finish-to-Finish (FF), Start-to-Finish (SF).
- default: Finish-to-Start (FS) is the default when you link tasks.
- lag/lead: You can add delay (lag) or overlap (lead) time between relationships.
Relationship types
Finish-to-Start (FS) - Default
- most common: This is the default relationship type for sequential work.
- behavior: Task starts after predecessor finishes.
- constraint: Successor start ≥ Predecessor finish.
- timing examples:
- Predecessor finishes Friday 5pm → Successor starts Monday 8am (next business day).
- Predecessor finishes Friday 2pm → Successor can start same day at 2pm (if within business hours).
Format: 1FS or just 1 (FS is default)
Use case: Sequential tasks where one must complete before the next begins.
Start-to-Start (SS)
- behavior: Task starts when predecessor starts.
- constraint: Successor start = Predecessor start (preserves exact time).
- timing: Both tasks start at the same time.
Format: 1SS
Use case: Parallel work that must begin together, like "Start coding" and "Start testing setup".
Finish-to-Finish (FF)
- behavior: Task finishes when predecessor finishes.
- constraint: Successor finish = Predecessor finish.
- timing: Start is calculated backward from finish constraint.
Format: 1FF
Use case: Tasks that must complete together, like "Write documentation" and "Review documentation".
Start-to-Finish (SF)
- rare: This is an uncommon relationship type.
- behavior: Task finishes when predecessor starts.
- constraint: Successor finish = Predecessor start.
- timing: Start is calculated backward from finish constraint.
Format: 1SF
Use case: Specific scheduling scenarios where successor must finish when predecessor begins.
Multiple predecessors
- comma-separated: List multiple predecessors separated by commas.
- constraint logic: Task is constrained by the latest predecessor constraint.
- example:
1FS, 2SS, 3FFmeans task is constrained by the latest of:- Finish of task 1
- Start of task 2
- Finish of task 3
Lag (delay) and lead (overlap)
Lag - Positive delay
- format:
{id}FS+2means Finish-to-Start with 2-day lag. - behavior: Adds delay between predecessor and successor.
- positive numbers: Use
+prefix for delay.
Example:
- Task 1 finishes: Monday 5pm
- Task 2 has predecessor:
1FS+2 - Task 2 starts: Thursday 8am (2 business days later)
Lead - Negative overlap
- format:
{id}FS-2means Finish-to-Start with 2-day lead. - behavior: Starts successor before predecessor completes.
- negative numbers: Use
-prefix for lead time.
Example:
- Task 1 finishes: Friday 5pm
- Task 2 has predecessor:
1FS-2 - Task 2 starts: Wednesday 8am (2 days before Task 1 finishes)
Combining relationship types and lag
- all types support lag: You can add lag to any relationship type.
- examples:
1SS+3= Start-to-Start with 3-day delay2FF-1= Finish-to-Finish with 1-day lead3SF+5= Start-to-Finish with 5-day delay
How to enter predecessors
In the Predecessors cell
- Click the Predecessors cell for a task.
- Select from dropdown: Choose from available tasks (invalid choices are excluded).
- Enter manually: Type task IDs with relationship types:
1or1FS= Finish-to-Start (default)1SS= Start-to-Start2FF= Finish-to-Finish3SF= Start-to-Finish1FS+2= Finish-to-Start with 2-day lag2SS-1= Start-to-Start with 1-day lead
Using Link A → B
- creates FS relationship: Linking tasks creates Finish-to-Start relationships by default.
- preserves existing: Existing predecessors are preserved when linking.
- sequential chaining: Link multiple tasks to create a chain.
Validation rules
Invalid predecessor configurations
- self-predecessor: A task cannot depend on itself.
- ancestor dependency: A task cannot depend on its parent or grandparent.
- descendant dependency: A task cannot depend on its children.
- summary tasks: Parent tasks (groups) cannot have predecessors.
- milestones: Milestones cannot have predecessors.
Circular dependencies
- detection: System detects circular dependencies.
- prevention: Blocks creation of cycles.
- error message: "Task is part of a circular dependency chain".
Parent tasks as predecessors
- roll up finish: When a parent task is used as predecessor, it uses the parent's rolled-up finish (latest child finish).
- excludes successors: Prevents cycles by excluding children that are successors of the dependent task.
Examples
Example 1: Simple Finish-to-Start
Task 1:
- Duration: 5 days
- Finish: Friday 5pm
Task 2:
- Predecessors:
1FS - Start: Monday 8am (next business day after Task 1 finishes)
Example 2: Start-to-Start with multiple tasks
Task 1: Starts Monday 8am
Task 2: Starts Monday 8am
Task 3: Predecessors: 1SS, 2SS, starts Monday 8am (when both start)
Example 3: Finish-to-Finish
Task 1:
- Duration: 10 days
- Finish: Friday 5pm
Task 2:
- Predecessors:
1FF - Finish: Friday 5pm (same as Task 1)
- Start: Calculated backward from finish - duration
Example 4: Lag time
Task 1: Finishes Wednesday 5pm
Task 2: Predecessors: 1FS+2
- Starts: Friday 8am (2 business days after Task 1 finishes)
Example 5: Lead time
Task 1: Finishes Friday 5pm
Task 2: Predecessors: 1FS-2
- Starts: Wednesday 8am (2 days before Task 1 finishes)
Example 6: Multiple predecessors
Task 1: Finishes Monday 5pm
Task 2: Starts Monday 8am
Task 3: Predecessors: 1FS, 2SS
- Constrained by later of:
- Task 1 finish (Monday 5pm)
- Task 2 start (Monday 8am)
- Starts: Tuesday 8am (next day after Task 1 finishes)
Tips
- Use Finish-to-Start (FS) for sequential work; it's the most intuitive.
- Use Start-to-Start (SS) for parallel work that must begin together.
- Use Finish-to-Finish (FF) for tasks that must complete together.
- Add lag to account for delays between tasks (e.g., approval time).
- Use lead time for overlapping work (e.g., starting testing before coding finishes).
FAQ
Can I use multiple relationship types in one predecessor list?
Yes. List them separated by commas: 1FS, 2SS, 3FF. The task is constrained by the latest of all constraints.
What happens if I change a predecessor's dates?
All dependent tasks are automatically recalculated. Changes cascade through the dependency chain.
Can I edit duration, start, or finish dates for tasks with predecessors?
Yes. You can edit these fields even when tasks have predecessors. The system will:
- Start edits: Automatically clamp start dates to respect predecessor constraints (cannot start before predecessor finish/start).
- Finish edits: Preserve your finish date and recalculate duration based on the constrained start and your finish date.
- Duration edits: Recalculate finish date from the constrained start plus the new duration.
Constraints are always enforced, so dates may be adjusted to remain valid.
Can I edit predecessors directly in the Predecessors cell?
Yes. Click the cell to open a dropdown or type task IDs manually with relationship types.
What's the difference between lag and lead?
- Lag (positive): Adds delay (e.g.,
+2= 2-day delay). - Lead (negative): Allows overlap (e.g.,
-2= start 2 days before predecessor finishes).
Why can't I select a task as a predecessor?
The task might be:
- The same task (self-predecessor)
- An ancestor (parent/grandparent)
- A descendant (child)
- A summary task (parent groups can't have predecessors)
- A milestone (milestones can't have predecessors)
Can I use a parent task as a predecessor?
Yes. The system uses the parent's rolled-up finish (latest child finish) as the constraint.
Last updated: 2025‑01‑31