Project Management guide · Scheduling and time
Predecessors and Successors in Project Management
In project management, a predecessor is an activity that must start or finish before another activity can start or finish, and a successor is the activity that depends on it. Every link in a schedule joins one predecessor to one successor, and together those links decide the order of work, the critical path and how far a delay will spread.
Key takeaways
- A predecessor comes first and controls its successor; the successor follows and depends on it.
- Every dependency has exactly one predecessor and one successor, and most activities are both.
- When an activity has several predecessors, the one that finishes latest (the driving predecessor) sets its start date.
- Record only immediate predecessors, with the link type and any lead or lag.
- Every activity except the project start and finish should have at least one predecessor and one successor.
- Good predecessor logic is what makes the critical path, float and delay forecasts trustworthy.
What are predecessors and successors?
A predecessor is an activity that logically comes before another activity and controls when that activity can start or finish. A successor is the activity that comes after it and depends on it. The relationship between them is a dependency, and the predecessor is always the activity the arrow leads out of.
A simple example: you cannot install software on a laptop until the hardware has been set up. "Set up hardware" is the predecessor and "Install software" is the successor. If the hardware arrives three days late, the software installation moves three days too, unless you change the plan.
PMI's terminology talks about the predecessor activity and the successor activity, and the method most schedules use to draw them is the precedence diagramming method (PDM), where activities are boxes (nodes) and dependencies are arrows. A few points follow from the definition:
- Each dependency has exactly one predecessor and one successor.
- Most activities are both: a successor to the work before them and a predecessor to the work after them.
- An activity can have several predecessors and several successors.
- Only the very first activity has no predecessor and only the last has no successor. In practice these are usually a start milestone and a finish milestone; see project milestones.
Predecessors and successors describe the two ends of a link. The link itself, and its type, is covered in our guide to task dependencies.
Predecessor vs successor at a glance
| Predecessor | Successor | |
|---|---|---|
| Position in the logic | Comes first | Comes after and depends on the predecessor |
| Question it answers | What must happen before this? | What is waiting for this? |
| If it is delayed | Can push every successor later | Delays only its own successors |
| In a Gantt chart | The bar the arrow starts from | The bar the arrow points to |
| In a network diagram | Node with an arrow leading out | Node with an arrow leading in |
| In a scheduling tool | Listed in the successor's Predecessors column | Listed in the predecessor's Successors column |
The words are relative. "Design pages" is a successor of "Agree requirements" and, at the same time, a predecessor of "Build pages". Whether you call an activity a predecessor or a successor depends on which link you are looking at.
The four relationship types in predecessor terms
A predecessor does not always have to finish before its successor starts. There are four logical relationship types, and each one describes which end of the predecessor controls which end of the successor.
| Type | Rule | Example | How common |
|---|---|---|---|
| Finish-to-start (FS) | The successor cannot start until the predecessor finishes | Pour the foundations, then build the walls | By far the most common; the default in most tools |
| Start-to-start (SS) | The successor cannot start until the predecessor starts | Start proofreading once writing has started | Common for overlapping work |
| Finish-to-finish (FF) | The successor cannot finish until the predecessor finishes | Testing cannot finish until development finishes | Common for parallel work that must end together |
| Start-to-finish (SF) | The successor cannot finish until the predecessor starts | The old system keeps running until the new one goes live | Rare; usually a sign the logic should be rethought |
Any of these links can carry a lag (a deliberate wait, such as FS+3 days for paint to dry) or a lead (an overlap, written as a negative lag such as FS-2 days). Leads and lags change the timing of the link but not which activity is the predecessor.
Types of predecessor you will hear about
Immediate and indirect predecessors
An immediate predecessor is linked directly to the activity. Activities further back in the chain are indirect predecessors: they still affect the activity, but only through the links in between. Record only immediate predecessors. Linking an activity to every earlier activity creates redundant links that make the schedule hard to read and harder to change.
Driving and non-driving predecessors
When an activity has several predecessors, only one of them usually controls its start date at any time. That is the driving predecessor. The others are non-driving: they finish earlier and have some float before they would affect the successor.
| Driving predecessor | Non-driving predecessor | |
|---|---|---|
| Effect on the successor | Sets its earliest start (or finish) date | No effect at the moment |
| If it slips by one day | The successor slips by one day | Nothing happens until its float is used up |
| Where to focus | Monitor closely; it is often on the critical path | Watch the float rather than the date |
The driving predecessor can change as work progresses. A non-driving predecessor that runs late can overtake the driving one and become the new driver.
Multiple predecessors and multiple successors
An activity with several predecessors is where paths meet; PMI calls this path convergence. An activity with several successors is where paths split, known as path divergence. Convergence points are risky because the successor waits for the latest of all its inputs, so a delay on any one path can hold everything up. Divergence points are risky because a delay to one activity spreads to every path that leaves it.
Mandatory, discretionary and external predecessors
Predecessors also differ in why the link exists. A mandatory (hard logic) predecessor reflects physical or contractual necessity. A discretionary (soft logic) predecessor reflects a preferred way of working that you could change, which makes it the first place to look when you need to fast-track a schedule. An external predecessor sits outside the project, such as a supplier delivery or a regulator's approval. These categories are explained in task dependencies.
How to identify predecessors and successors step by step
- Start from the activity list. Break the scope down with a work breakdown structure and turn each work package into activities; see project tasks and activities.
- Ask one question per activity: what must be finished (or started) before this can begin? The answers are its candidate predecessors.
- Keep only the immediate predecessors. If A drives B and B drives C, do not also link A to C.
- Choose the relationship type. Use finish-to-start unless the work genuinely overlaps or must finish together.
- Add a lead or lag only when there is a real reason, such as curing time or a notice period, and write that reason down.
- Check successors. For each activity, ask what is waiting for it. An activity that nothing depends on is either the finish milestone or a missing link.
- Draw or generate a network diagram to spot loops, dangling activities and parallel paths; see project network diagram.
- Review the logic with the people doing the work. They know which dependencies are real and which are habits.
Worked example: a website launch schedule
A small team is launching a new website. The table lists each activity with its duration, immediate predecessors and successors. All links are finish-to-start with no lag.
| ID | Activity | Duration | Predecessors | Successors |
|---|---|---|---|---|
| A | Agree requirements | 3 days | None (start) | B, C |
| B | Design pages | 5 days | A | D |
| C | Write content | 4 days | A | E |
| D | Build pages | 6 days | B | E |
| E | Load content | 2 days | C, D | F |
| F | Test and launch | 3 days | E | None (finish) |
A is a burst point (path divergence) because it has two successors. E is a merge point (path convergence) because it has two predecessors. Working forward from day 0 gives these earliest dates:
| ID | Earliest start | Earliest finish | Total float |
|---|---|---|---|
| A | Day 0 | Day 3 | 0 |
| B | Day 3 | Day 8 | 0 |
| C | Day 3 | Day 7 | 7 days |
| D | Day 8 | Day 14 | 0 |
| E | Day 14 | Day 16 | 0 |
| F | Day 16 | Day 19 | 0 |
E cannot start until both predecessors have finished. C finishes on day 7 but D does not finish until day 14, so D is the driving predecessor of E and C is non-driving, with 7 days of float. The critical path is A, B, D, E, F and the project takes 19 days.
- If C slips by 3 days, it finishes on day 10. E still starts on day 14, so the launch date does not move; C's float drops to 4 days.
- If D slips by 3 days, E starts on day 17 and the launch moves to day 22.
- If C slips by 9 days, it finishes on day 16, overtakes D as the driving predecessor and pushes the launch out by 2 days (9 days of delay minus 7 days of float).
This is why you monitor driving predecessors closely and watch the float on the others. The calculation method is explained step by step in forward and backward pass.
How predecessors appear in Gantt charts, network diagrams and tools
Gantt charts
In a Gantt chart, a dependency is drawn as an arrow from the predecessor's bar to the successor's bar. For a finish-to-start link the arrow runs from the end of the predecessor to the start of the successor. When you move a predecessor in most Gantt chart software, its successors move with it automatically.
Network diagrams
In an activity-on-node network diagram, each activity is a box and each arrow runs from predecessor to successor. Network diagrams make convergence and divergence points easy to see, which is why they are useful for checking logic even if you manage day to day in a Gantt view. A PERT chart uses the same idea with three-point estimates.
Predecessor notation in scheduling tools
Most desktop scheduling tools let you type predecessors into a column using the predecessor's row ID, the link type and any lead or lag. In Microsoft Project, according to Microsoft's documentation, entering just an ID creates a finish-to-start link with no lag, a positive number adds lag and a negative number adds lead. Several predecessors are separated by the list separator (a comma or semicolon, depending on regional settings).
| Entry | Meaning |
|---|---|
| 3 | Task 3 must finish before this task starts (FS, no lag) |
| 3FS+2d | Starts 2 days after task 3 finishes |
| 3SS | Can start once task 3 has started |
| 3FF-1d | Must finish no earlier than 1 day before task 3 finishes |
| 2,5 | Waits for both task 2 and task 5 to finish |
In the website example, E (Load content) would show "3,4" if C and D were rows 3 and 4. Cloud tools such as Wrike and Smartsheet let you create the same links by dragging between bars in the Gantt view or by filling in a predecessors column, and both support dependencies and critical path views on paid plans.
Tracing logic
Many tools can highlight a task's predecessors and successors. Microsoft Project's Task Path feature, for example, can highlight predecessors, driving predecessors, successors and driven successors in the Gantt chart. When a milestone slips, tracing its driving predecessors backwards is usually the fastest way to find the real cause.
Why predecessors matter for the critical path and float
The critical path method is built entirely on predecessor and successor links. The forward pass pushes earliest dates from predecessors to successors; the backward pass pulls latest dates from successors back to predecessors. The difference between the two is float, and the chain of activities with zero (or the least) float is the critical path.
That has some practical consequences:
- An activity with no successor has misleading float. Its float is measured against the project end, so it can slip a long way before the schedule shows any impact, even if something else really depends on it.
- An activity with no predecessor can start on day one. Unless that is true, the schedule will show work starting before it realistically can.
- Missing links make the critical path wrong. If the logic is incomplete, the path your tool highlights may not be the one that actually controls the finish date.
- Resource limits are not predecessors. CPM assumes unlimited resources. If two activities cannot run together because the same person does both, that is handled by resource leveling, not by inventing a logic link.
Common mistakes with predecessors (and how to fix them)
| Mistake | Why it causes problems | Fix |
|---|---|---|
| Open ends (no predecessor or no successor) | Delays do not flow through, so float and the finish date look better than they are | Link every activity into the network, ending at the finish milestone |
| Linking to summary tasks | The logic becomes hard to follow and some tools calculate it unexpectedly | Link the detailed activities, not the summary rows |
| Redundant links | Clutter that hides the real driving logic | Keep immediate predecessors only |
| Circular logic (A before B before A) | The schedule cannot calculate; most tools reject it | Break the loop by splitting an activity or rethinking the order |
| Date constraints instead of links | Dates stop moving when predecessors slip | Use logic links and keep constraints for genuine fixed dates |
| Lags used to represent work | Work hidden in a lag cannot be tracked or resourced | Model the work as its own activity |
| Overusing SS and SF links | Logic becomes hard to explain and easy to break | Default to FS; split activities if they overlap |
| Stale links after replanning | The schedule forecasts dates for a plan nobody is following | Review links whenever scope or approach changes |
If the same overlap keeps needing a start-to-start link with a long lag, it is often clearer to split the predecessor into two activities and link the successor to the first part.
Checking the quality of your schedule logic
Large projects often test schedule logic against published health checks. A widely used example is the US Defense Contract Management Agency (DCMA) 14-point assessment, which includes these logic checks:
| Check | DCMA threshold |
|---|---|
| Incomplete activities missing a predecessor or successor | No more than 5% |
| Links that are finish-to-start | At least 90% |
| Leads (negative lags) | None |
| Links with lags | No more than 5% |
| Incomplete activities with hard date constraints | No more than 5% |
These thresholds come from a defence-contracting context, but they make a useful sanity check for any schedule. Our own advice for smaller projects is simpler:
- Filter for activities with an empty Predecessors or Successors column and fix each one.
- Move one early activity by a week and check that the finish date moves as you expect.
- Read the critical path aloud from start to finish; if any step sounds illogical, check its links.
- Re-run the checks before you set the project baseline and after any major replan.
Best practices for managing predecessors
- Build the logic before you add dates. Let the links calculate the dates rather than typing them in.
- Give every activity a clear owner so someone is accountable when a predecessor runs late.
- Agree cross-team and external predecessors early, with a named contact on the other side.
- Treat convergence points (activities with many predecessors) as risks and monitor them.
- Note why each discretionary link exists so you know which ones can be changed to recover time; see schedule compression.
- Keep the network tidy with start and finish milestones, and use a hammock activity for support work that spans a group of activities.
- Update links as part of your regular schedule review, not only when something goes wrong.
If you are building a schedule from scratch, the free project schedule template, critical path template and Gantt chart template all include predecessor columns, and the work breakdown structure template helps you build the activity list first. For the wider process, read our guide to project scheduling.
Free templates for this topic
Frequently asked questions
What is a predecessor in project management?
A predecessor is an activity that must start or finish before another activity can start or finish. It controls the timing of the activity that depends on it.
What is a successor in project management?
A successor is an activity that depends on another activity (its predecessor) and comes after it in the schedule. Its start or finish date is driven by that predecessor.
What is the difference between a predecessor and a successor?
The predecessor comes first and controls the timing; the successor follows and depends on it. They are the two ends of the same dependency, and most activities are a predecessor in one link and a successor in another.
Can a task have multiple predecessors?
Yes. With finish-to-start links it cannot start until all of its predecessors have finished, so the latest-finishing one, the driving predecessor, sets its start date.
Can a task have multiple successors?
Yes. A delay to that task then affects every one of its successors, which is why activities with many successors deserve close attention.
What is an immediate predecessor?
An immediate predecessor is linked directly to the activity. Earlier activities in the chain are indirect predecessors and should not be linked again.
What is a driving predecessor?
The predecessor that actually determines a successor's earliest start or finish date at the moment. A delay to it delays the successor straight away.
What does 3FS+2d mean in MS Project?
It means task 3 is a finish-to-start predecessor with a 2-day lag: this task can start 2 days after task 3 finishes. Entering just "3" would mean finish-to-start with no lag.
What happens if a task has no predecessor?
The scheduling tool will let it start on the project start date. That is fine for the first activity, but for anything else it usually means a link is missing.
What happens if a task has no successor?
It becomes an open end, so a delay to it will not show any effect on later work or the finish date. Link it to the activity that needs its output, or to the finish milestone.
Are predecessors the same as dependencies?
Not quite. A dependency is the link between two activities; the predecessor and successor are the activities at each end. See task dependencies.
Can a successor start before its predecessor finishes?
Yes, if the link is start-to-start or finish-to-finish, or if a lead (negative lag) is applied to a finish-to-start link. Overlapping work like this saves time but increases the risk of rework.
Do predecessors affect float?
Yes. Float is calculated by comparing an activity's dates with those of its successors, so missing or wrong links give wrong float. See float and slack.
How are predecessors shown in a network diagram?
As arrows. The predecessor is the node the arrow leaves and the successor is the node it points to; see project network diagram.