How to Fix Open Ends and Dangling Logic in P6
When I review a schedule, the first thing I check is the logic. Not the dates, not the critical path, not the narrative. The logic. If activities are not properly linked, everything else the schedule tells you is unreliable, and the most common logic problems are open ends and dangling activities.
This article covers what they are, how to find them in Primavera P6, and how to fix them without making the schedule worse.
What is an open end?
An open end is an activity with no predecessor, no successor, or neither. In a complete network, only two activities should have open ends: the project start milestone (no predecessor) and the project finish milestone (no successor). Everything else should be tied into the network on both sides.
Why it matters:
- No successor: nothing downstream constrains the activity, so the backward pass gives it a late finish equal to the project finish. It shows huge total float and will never appear critical, even if it really drives other work.
- No predecessor: the activity is scheduled to start on the data date (or the project start), regardless of what actually has to happen first. If it really depends on something, its dates are wrong.
What is dangling logic?
Dangling logic is a subtler problem. An activity can have both a predecessor and a successor and still be partly unconnected.
- Start dangle: the activity's only predecessors are finish-to-finish links. Nothing controls when it starts, so it can start as early as it likes.
- Finish dangle: the activity's only successors are start-to-start links. Nothing depends on when it finishes, so it can overrun without affecting anything.
Finish dangles are particularly dangerous. If an activity overruns and nothing is driven by its finish, the schedule will not show any impact. On site, there almost always is one.
How to find open ends in P6
Use the Schedule Log. When you schedule the project (F9), tick the option to log to a file. The schedule log lists activities without predecessors, activities without successors, out-of-sequence progress, and activities with constraints. It is the quickest single report for a logic health check.
Use filters. You can build filters for activities with no predecessors or no successors. Some planners add the Predecessors and Successors columns to a layout and filter where they are blank. Group by WBS so you can see where the gaps cluster.
Sort by total float. Activities with unusually high total float are often open ends. If an activity in the middle of the job shows float stretching to the end of the project, check its successors.
How to find dangles
Dangles are harder because P6's standard log does not flag them directly. Approaches that work:
- Add the Predecessors and Successors columns and look at the relationship types, focusing on activities where every successor is SS or every predecessor is FF.
- Export the relationships (from the Relationships view or via a spreadsheet export) and check them in Excel. A simple pivot by activity and relationship type shows which activities lack an FS or SS predecessor or an FS or FF successor.
- Use a schedule analysis tool, many of which flag dangles automatically.
How to fix them properly
The easy fix is to link every open activity to the project finish milestone. Please do not do this. It removes the warning without adding any real logic, and the activity's float becomes meaningless in a different way.
Instead, for each activity, ask two questions:
- What has to be done before this can start? That is the predecessor.
- What cannot start, or finish, until this is done? That is the successor.
Some typical examples on a building project:
- A procurement activity with no successor should drive the installation activity it supplies.
- A design or approval activity with no successor should drive the procurement or construction work it releases.
- An inspection or test with no successor should drive the next stage, such as close-up, energisation or handover.
- A "snagging" activity with no successor should drive a completion or handover milestone.
Fixing start dangles
If an activity only has FF predecessors, add an FS or SS predecessor that controls its start. Often an SS link from the preceding trade, with a sensible lag or after splitting the work into stages, reflects how the site will actually run.
Fixing finish dangles
If an activity only has SS successors, ask what depends on it finishing. Add an FS or FF successor. For example, if cable pulling is linked SS to terminations, terminations cannot finish until cable pulling finishes, so add an FF link between them as well.
Pairing SS and FF links between overlapping activities is a common, clean way to model work that runs in parallel but must stay in order.
Watch out for these side effects
Loops. Adding links in a hurry can create a circular relationship. P6 will report it when you schedule, so fix it immediately.
Sudden critical paths. Once open ends are closed, activities that showed huge float may become critical or near critical. That is not a problem with the fix. It is the schedule showing you the truth for the first time. Review the new critical path carefully.
Date changes. Activities without predecessors that were sitting on the data date may move later once they are properly linked. Check that the resulting dates are realistic and discuss any significant moves with the team.
Build it in from the start
The best way to deal with open ends is not to create them:
- Add logic as you add activities, not at the end.
- Run the schedule log after every major edit.
- Keep a short list of allowed exceptions, such as the start milestone, the finish milestone, and possibly external milestones with documented constraints.
- Run a logic check before every update is issued.
Quick checklist
- Only the start and finish milestones have open ends.
- Every activity has at least one FS or SS predecessor.
- Every activity has at least one FS or FF successor.
- No loops.
- No mass links to the finish milestone used as a shortcut.
- The critical path has been reviewed after the logic fix.
It is not the most exciting part of scheduling, but clean logic is the foundation everything else rests on. A well-linked programme makes float believable, critical paths stable and delay analysis far easier later.
If you have a schedule that needs a logic clean-up before a submission or an update, it is the kind of job I take on as a freelancer.
Need a P6 or MS Project schedule built, cleaned up or reviewed? I take a small number of freelance scheduling jobs.