MyStatusFlow Docs

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, 3FF means 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+2 means 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-2 means 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 delay
    • 2FF-1 = Finish-to-Finish with 1-day lead
    • 3SF+5 = Start-to-Finish with 5-day delay

How to enter predecessors

In the Predecessors cell

  1. Click the Predecessors cell for a task.
  2. Select from dropdown: Choose from available tasks (invalid choices are excluded).
  3. Enter manually: Type task IDs with relationship types:
    • 1 or 1FS = Finish-to-Start (default)
    • 1SS = Start-to-Start
    • 2FF = Finish-to-Finish
    • 3SF = Start-to-Finish
    • 1FS+2 = Finish-to-Start with 2-day lag
    • 2SS-1 = Start-to-Start with 1-day lead
  • 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