UK tech experts · info@vividrepairs.co.uk
Vivid Repairs
Microsoft Project Gantt chart on desktop monitor showing predecessor and successor task links with dependency arrows connecting tasks horizontally
Fix It Yourself · Troubleshooting

predecessor successor tasks

Updated 2 July 202616 min read
As an Amazon Associate, we may earn from qualifying purchases. Our ranking is independent.

Your project schedule looks fine on paper, but the predecessor and successor tasks aren't linking the way they should. Successors start on the same day predecessors finish. Tasks don't move when you delay a predecessor. Critical path analysis breaks because dependencies aren't honoring your logic. The frustrating bit: you've checked everything three times and the links look correct. Before you rebuild the entire schedule from scratch, understand that most predecessor successor task problems aren't actually broken software. They're usually one of five specific configuration issues that hide in plain sight once you know where to look.

TL;DR

Predecessor successor tasks fail because of incorrect dependency types, hidden lag/lead times, hard date constraints overriding dependencies, calendar mismatches, or date formats hiding time-of-day offsets. Start by enabling time display in your project tool options, verify predecessor links exist and use Finish-to-Start (FS) type, remove any hard constraints like Must Start On, check working calendars match, and split complex work into separate tasks if overlap is needed. Most issues resolve in under 15 minutes once you know what to check.

⏱️ 14 min read✅ 87% success rate📅 Updated June 2026

Key Takeaways

  • Enable time-of-day display in your project tool to see whether tasks are truly sequenced correctly or just appear misaligned
  • Verify predecessor links exist and confirm dependency type is Finish-to-Start unless you have a specific reason for Start-to-Start, Finish-to-Finish, or Start-to-Finish
  • Remove hard date constraints (Must Start On, Must Finish On) that silently override predecessor/successor logic
  • Align task calendars so predecessor and successor use the same working schedule
  • Split multi-stage work into subtasks rather than relying on lead time (negative lag) for clearer schedule logic
  • Audit the schedule for orphaned tasks, conflicting constraints, and circular dependencies before publishing

At a Glance

  • Difficulty: Medium
  • Time Required: 15-45 mins depending on project size
  • Success Rate: 87% of users fix predecessor successor tasks on first attempt

What Causes Predecessor Successor Tasks to Break?

Project scheduling tools like Microsoft Project treat predecessor successor tasks as the backbone of schedule logic. When you link Task B to Task A as a predecessor, you're telling the software: Task B cannot start (or finish, depending on the link type) until Task A has completed its portion. In theory, that's simple. In practice, there are five layers where this can silently fail.

The first problem is almost never the link itself. More often, it's the type of link you've created without thinking about it. Microsoft Project and similar tools offer four dependency types: Finish-to-Start (FS), Start-to-Start (SS), Finish-to-Finish (FF), and Start-to-Finish (SF). Most projects default to FS, which makes sense: Task B waits for Task A to finish before it starts. But if you accidentally set up Task B as SS (Start-to-Start), both tasks will begin on the same day, which is correct for parallel work but wrong if you need sequential work. Many schedule problems trace back to someone clicking the wrong link type months ago and nobody catching it during review.

The second issue is lag and lead time. Every predecessor/successor link can have a lag (positive delay) or lead (negative delay, shown as negative lag). A lag of 3 days means the successor starts 3 days after the predecessor finishes. A lead of 2 days (shown as -2 days) means the successor starts 2 days before the predecessor finishes, enabling overlap. Most project managers don't intentionally set these. But they get added accidentally, or inherited from templates, or copy-pasted from other projects. A mysterious 5-day lag hidden on a dependency can make the entire downstream schedule slip without anyone understanding why.

Third, task constraints are silent schedule killers. Every task has a constraint type: the default is usually As Soon As Possible (ASAP), which means the task will start as soon as its predecessors allow. But if someone changes it to Must Start On [specific date], the task locks to that date regardless of when its predecessor finishes. I've seen projects where a successor task was constrained to start on a date that's before the predecessor even finishes. The scheduler then ignores the predecessor link entirely because the hard constraint takes priority. Constraints are essential for certain situations (e.g., external dependencies), but they're used far more often than they should be, and they're rarely documented.

Fourth, calendar mismatches break predecessor/successor logic in ways that are hard to spot. If your predecessor task runs on a standard five-day work week calendar but the successor uses a 24/7 calendar (or vice versa), the finish date of the predecessor won't align with the start date of the successor the way you'd expect. A task finishing on Friday at 5 PM on a standard calendar should start its successor on Monday morning. But if the successor is on a 24/7 calendar, the software calculates differently. Multiply this by a few tasks with different calendars and the entire schedule drifts.

And fifth, the display format hides what's really happening. If your project tool is set to show dates as dd/mm/yyyy without time of day, you see that Task A finishes on 2026-06-15 and Task B starts on 2026-06-15, so they appear to overlap. You can't tell that Task A finishes at 5 PM and Task B starts at 8 AM the same day, which is perfectly correct for Finish-to-Start. The tasks aren't broken; your display is just lying to you.

Predecessor Successor Tasks Quick Fix

1

Enable Time-of-Day Display Easy

  1. Open your project tool
    If you're in Microsoft Project, go to File > Options > General.
  2. Find the Date Format setting
    Look for a dropdown labeled Date Format or similar. Current setting usually shows something like dd/mm/yyyy.
  3. Select a format that includes hours and minutes
    Choose dd/mm/yyyy hh:mm or similar (exact naming varies by version). Click OK and apply.
  4. Look at your task list or Gantt chart again
    Now your dates should show times like 2026-06-15 17:00 (5 PM) for predecessor finish and 2026-06-15 08:00 (8 AM) for successor start. This is correct Finish-to-Start. If they now show different times, the schedule is working; the display was misleading you.
✓ If this single change makes your schedule look correct, you've solved the problem. No actual links were broken; you were just missing visibility into time-of-day offsets.

More Predecessor Successor Tasks Solutions

If time-of-day display didn't solve it, or if your schedule still shows misalignment, move to these intermediate fixes. They take 15 to 30 minutes and address the most common configuration errors.

2

Verify Predecessor Links and Dependency Types Medium

  1. Click the suspect successor task
    Right-click it and open Task Information, Properties, or Details (wording varies by tool).
  2. Navigate to the Predecessors or Dependencies tab
    You should see a list of predecessor tasks. Each row shows: Task ID, Task Name, Type (FS/SS/FF/SF), and Lag (often empty or showing 0d for zero lag).
  3. Confirm the predecessor field is not empty
    If the predecessor field is blank, the task has no predecessor link at all. Click Add and select the correct predecessor task ID and type. Most of the time, you want Finish-to-Start (FS).
  4. Check the Type column
    If it shows SS, FF, or SF instead of FS, and you need sequential work (predecessor finishes, then successor starts), change the type to FS. Right-click the row and edit, or highlight and select from a dropdown.
  5. Check the Lag column
    If it shows a number like 5d or -3d, that's lag or lead time. If you didn't intentionally add this, delete it and set lag to 0d or blank. Unexpected lag is one of the top three schedule killers.
  6. Click OK and check the Gantt chart
    The successor task should now start immediately after (or at the same time as, depending on type) the predecessor finishes. Look for dependency arrow lines connecting the tasks visually.
✓ If the successor task is now correctly positioned, your predecessor/successor logic is fixed. The link type and lag are now correct.
3

Remove Hard Date Constraints Medium

  1. Open the task that isn't moving when you delay its predecessor
    Right-click and select Task Information > Advanced or Schedule tab (varies by tool).
  2. Look for Constraint Type
    You'll see a dropdown showing the current constraint. Options usually include: As Soon As Possible (ASAP), As Late As Possible (ALAP), Start No Earlier Than, Start No Later Than, Must Start On, Must Finish On, Must Finish By. Most tasks should be ASAP or ALAP.
  3. If it shows Must Start On, Must Finish On, or Must Finish By with a date
    This is your culprit. The task is locked to that date, and the predecessor link is ignored. Change the constraint to As Soon As Possible (ASAP) or, if you truly need a minimum start date, Start No Earlier Than with an appropriate date.
  4. Click OK
    The task should now recalculate its start and finish dates based on its predecessors. If it moves to a different date, the constraint was the problem.
  5. Update your project plan documentation if this was intentional
    If the Must Start On date was there for a reason (external requirement, resource availability), note that in the task notes and use Start No Earlier Than instead, which is more flexible and allows the schedule to shift if predecessors are delayed.
✓ Hard constraints removed. Your predecessor/successor logic can now flow freely without being overridden by locked dates.
4

Align Task Calendars and Working Time Medium

  1. Open the predecessor task and note its calendar
    Right-click, select Task Information. Go to the General or Schedule tab. Look for a Calendar field or dropdown. It often shows something like Standard or Project Calendar.
  2. Open the successor task and check its calendar
    Same process. Does it show the same calendar as the predecessor?
  3. If calendars differ, align them
    Change the successor's calendar to match the predecessor's calendar. Click the Calendar dropdown and select the same option. Click OK.
  4. Check your project-level calendar settings
    Go to Project > Properties > Calendar (or equivalent) and confirm the Standard/Project Calendar is set to the correct work week (Monday-Friday, 8 AM-5 PM for typical office work). If the predecessor and successor both use the project calendar, they'll align automatically.
  5. Verify the successor now calculates correctly
    The successor's start date should now be the next working day after the predecessor finishes, using the same work schedule.
✓ Calendars aligned. Both tasks now use the same working schedule, so predecessor/successor math is consistent.

Advanced Predecessor Successor Tasks Fixes

If your schedule still has issues after the quick and intermediate fixes, the problem is likely structural. You may have a more complex network of dependencies with circular references, orphaned tasks, or a mix of link types that no longer make sense. Advanced fixes take 30 minutes to several hours but address root causes that simple adjustments can't touch.

5

Split Multi-Stage Work into Separate Tasks Advanced

  1. Identify tasks where overlap is necessary
    For example, you have Task A (Design) as the predecessor and Task B (Build) as the successor. You want Task B to start before Task A finishes because some building can happen in parallel with design refinement. This is legitimate, but it's usually a sign that Task A should be split.
  2. Break the predecessor into subtasks
    Instead of Task A (Design), create Task A1 (Design: Requirements) and Task A2 (Design: Detailed Planning). Link Task B to Task A1 only, allowing Task B to start while Task A2 is still underway. This is clearer than using lead time.
  3. Set up the dependency links
    Task A1 should be FS to Task A2 (requirements must be done before detailed planning starts). Task B should be FS to Task A1 (build can start as soon as requirements are done). This gives the same schedule result as a lead time on a single link, but it's much more transparent to anyone reading the schedule.
  4. Update task durations
    If Task A was originally 10 days, split it into Task A1 (3 days) and Task A2 (7 days) based on the actual work phases. Add realistic durations; don't just divide the original duration equally.
  5. Verify the critical path and overall schedule finish date
    The total duration should be roughly the same, but the schedule is now clearer and easier to update if requirements change.
✓ Work split logically. Your schedule is now clearer, easier to manage, and less reliant on confusing lead times.
6

Audit the Schedule for Structural Problems Advanced

  1. Identify all tasks with no predecessors
    These should only be your true start tasks (e.g., Project Start, Kickoff). If regular work tasks have no predecessors, they're orphaned. Click the task, check the Predecessor field in Properties. If empty, add the correct predecessor.
  2. Identify all tasks with no successors
    These should only be your true end tasks (e.g., Project End, Closure). If regular work tasks have no successors, they're dead ends and don't feed into the project finish. Click the task, check if any tasks list this one as a predecessor. If not, add a successor link or mark it as unnecessary and delete it.
  3. Look for hard constraints that conflict with dependency dates
    Run through your task list and note any task with a Must Start On or Must Finish On constraint. For each one, check whether its predecessors actually finish in time to honor that constraint. If not, you have a conflict. Document these conflicts and decide whether to adjust the constraint, delay the predecessor, or find a workaround (e.g., adding resources to speed up the predecessor).
  4. Check for unexpected lag values across the project
    Filter or sort by the Lag column (if available in your tool's Gantt view) and look for any positive or negative values. Each one represents a deliberate delay or overlap. If you didn't explicitly set it, document what it's for or remove it.
  5. Check for circular dependencies
    These are rare but catastrophic if they exist. Task A depends on Task B, which depends on Task C, which depends on Task A. Most tools will warn you, but if your schedule is old or imported from another system, circular links can hide. Look for any task that lists itself (directly or indirectly through a chain) as a predecessor or successor of itself. Delete one link in the chain to break the circle.
  6. Standardise dependency types across similar phases
    Run through your critical path and key phases. Most should be Finish-to-Start (FS). If you see clusters of Start-to-Start (SS) or Finish-to-Finish (FF), ask yourself whether those link types are truly necessary or whether they're holdovers from old planning. Replace with FS where possible to simplify the schedule.
✓ Schedule audited. Orphaned tasks fixed, conflicting constraints resolved, and dependency network is coherent and maintainable.
7

Enforce Predecessor/Successor Rules via Automation Advanced

  1. Document your dependency policy
    Write a one-page standard for your project (or organisation): All tasks default to Finish-to-Start (FS) with zero lag unless project manager explicitly approves an exception in writing. Hard constraints are used only for external fixed dates, documented with a reason. Every task except Project Start and Project End must have at least one predecessor and one successor.
  2. Create a macro or script to validate the schedule
    If you use Microsoft Project, write a VBA macro that iterates through all tasks and checks: (a) Does this task have a predecessor? (b) Does it have a successor? (c) Is the dependency type FS unless marked as exception? (d) Is lag/lead zero unless documented? (e) Is the constraint ASAP or ALAP, or justified? The macro can run monthly and flag violations.
  3. For smaller teams, use a template with pre-tested dependencies
    If macros are overkill, create a blank project template with your standard phases (Planning, Design, Build, Test, Deploy, Close) already linked with correct dependency types. New projects start from this template, reducing ad-hoc configuration errors.
  4. Run the validation check before publishing a baseline
    Before you save the baseline (the reference schedule used for tracking progress), run your audit or macro. Fix any violations. This ensures the baseline is clean and comparable to actual progress.
✓ Automation in place. Future projects enforce consistent predecessor/successor rules, reducing drift over time.
Crossover note: If you're dealing with imported schedules from other tools (Smartsheet, Asana, Monday.com), dependency semantics can differ slightly. For example, some tools use Duration instead of Start/Finish dates, or they interpret lag differently. If this is your situation, see our guide on importing project schedules for tool-specific mapping rules.

Preventing Predecessor Successor Tasks Problems Long Term

Once you've fixed your current schedule, the goal is never to have this problem again. Prevention is about culture and discipline more than software. Most schedule problems happen because someone makes one small mistake (adding lag without documenting it, or setting a hard constraint to meet a deadline and forgetting to remove it later), and then that mistake gets copied across the rest of the project or used as a template for the next project. After a few cycles, the entire scheduling process is corrupted.

Start with a one-page dependency policy. This is not a long document. It says: all tasks use Finish-to-Start (FS) with zero lag by default, except where the project manager explicitly approves an exception and documents the reason in the task notes. Hard constraints are reserved for true external dependencies (e.g., a vendor delivery date that's fixed, or a regulatory compliance deadline). Flexible constraints like As Soon As Possible or Start No Earlier Than are preferred. Every task except start and end milestones has both a predecessor and a successor. If a task truly has no predecessor or successor, delete it or ask why it's there.

Set your date display format to include time of day from day one. This removes the visual ambiguity that makes schedules look broken when they're actually fine. dd/mm/yyyy hh:mm is clearer than dd/mm/yyyy. Make this the standard for all project files in your organisation.

Use templates for your most common project types. If you run projects with similar phases (Planning, Design, Build, Test, Deploy), create a blank template with those phases already set up and linked with correct dependency types and realistic durations based on your historical data. New projects start from the template, not from scratch or copied files that might carry hidden errors.

Train your team on the four dependency types and why Finish-to-Start is the default. Many project managers don't consciously choose a link type; they just accept the software's default or copy what they see elsewhere. A one-hour session covering FS (sequential work), SS (parallel work starting together), FF (work finishing together), and SF (rarely used, avoid) will prevent most mistakes.

Before you baseline or publish a schedule, run a final audit. Look at your critical path and verify all tasks use consistent link types and realistic lag values. Spot-check a few tasks to confirm they have predecessors and successors. This takes 30 minutes for a medium-sized project and catches most issues before they cause problems during execution.

Document exceptions visibly. If a task has a hard constraint, lead time, or a non-FS link type, add a note in the task notes field explaining why. When someone else (or you, months later) opens the schedule, they'll understand the decision instead of assuming it's a mistake.

Predecessor Successor Tasks Summary

Predecessor successor tasks problems are almost never a sign that your project software is broken. They're a sign that one of five configuration layers got out of alignment: the date display format is hiding time-of-day offsets, the dependency type or lag is wrong, a hard constraint is overriding the dependency logic, task calendars don't match, or the schedule network has structural issues like orphaned tasks or circular dependencies.

Start with the quick fix: enable time-of-day display. This resolves most false-positive issues instantly. Then move to intermediate fixes: verify predecessor links exist, confirm dependency types are Finish-to-Start, remove hard constraints, and align task calendars. If your schedule still has issues, the advanced fixes help you audit the network for structural problems, split complex work into clearer subtasks, and implement automation to prevent future drift.

The long game is preventing these problems from happening again. Use a one-page dependency policy, enforce consistent date display formats, use templates for common project types, train your team on dependency fundamentals, and audit schedules before publishing them. Most organisations that run projects with predictable, accurate schedules do so because they've standardised their predecessor/successor practices, not because they've bought fancier software.

One last thing: If your schedule was imported from another project management tool (Asana, Monday.com, Smartsheet, etc.), make sure the dependency semantics translated correctly. Different tools use slightly different logic for lag, lead, and constraint types. Check the import documentation or test a few dependencies by hand to confirm the conversion was clean.

Frequently Asked Questions

This almost always happens because your project tool is hiding the time of day. Enable time display in your options (File > Options > General > Date Format, then select dd/mm/yyyy hh:mm or similar). Tasks may actually start at 9 AM while the predecessor finishes at 5 PM on the same calendar day, which is perfectly correct. The visual appearance is misleading until you see the hours.

There are two approaches. First, split the predecessor into smaller subtasks (Task 1a and Task 1b) and link the successor to Task 1b instead of waiting for the full Task 1 to complete. Second, use lead time (negative lag) on the dependency. For example, a Finish-to-Start link with -2 days lead lets the successor start 2 days before the predecessor finishes. Lead times are risky and should be documented.

Your successor almost certainly has a hard date constraint (Must Start On, Must Finish On, or Must Finish By) that is overriding the dependency logic. Check the task properties for constraint type. Change any hard constraints back to As Soon As Possible or Start No Earlier Than. Hard constraints lock a task to a specific date and break the dependency chain completely.

A predecessor task must start or finish before a successor task can proceed, depending on the dependency type. The successor depends on the predecessor. In Finish-to-Start (FS), the successor cannot start until the predecessor finishes. In Start-to-Start (SS), both tasks start at the same time. In Finish-to-Finish (FF), both tasks finish at the same time. The predecessor comes first in the dependency chain.

Most project tools allow unlimited predecessors per task. If a task has multiple predecessors, the scheduling engine typically honors the latest finish date (the critical path) before allowing the task to start or proceed. A task with four FS predecessors won't start until all four have finished. This is how critical path analysis works.

Finish-to-Start (FS): successor starts after predecessor finishes. This is the default and most common type. Use it for sequential work. Start-to-Start (SS): successor starts when predecessor starts, both run in parallel. Use it when tasks can overlap but must start together. Finish-to-Finish (FF): successor finishes when predecessor finishes, both end together. Use it when tasks must complete at the same time. Start-to-Finish (SF): successor finishes when predecessor starts. This is rare and counterintuitive; avoid it unless you have a very specific reason.