Redundant Relationships
Last reviewed 9 September 20261,431 words7 min read
Links a longer path already covers
π© In one line: A redundant relationship is a link between A and C when A β B β C already exists and B's chain is longer or equal β it changes no dates, it just adds noise, slows review, and hides the real driver. Remove them, but check first: a link that looks redundant today can become the driver when B is re-sequenced.
π€ Who this is for: Juniors told "your logic is too dense"; mid-level planners cleaning a file with 4 relationships per activity; reviewers deciding whether density is quality or clutter. You should know relationship-types-explained and total-float.
First, let's be honest about why this page exists
Planners add redundant links for safety β "just in case". A finish milestone with 300 predecessors. Every MEP activity linked to structure topping-out as well as to its own floor. The file balloons, the driving-predecessor column becomes useless, and the reviewer can't tell what actually controls a date.
Redundant logic is rarely wrong; it's expensive. It costs review time, hides the real path, and makes every re-sequencing exercise a hunt through links that turn out not to matter.
π¨ The standard β what "good" looks like
| Source | What it says (paraphrased) |
|---|---|
| GAO Schedule Assessment Guide, Best Practice 2 | Logic should be sufficient, not excessive; redundant links obscure the network |
| DCMA 14-Point, Metric 1 | Doesn't count redundancy, but reviewers apply a soft ceiling β many client specs cap relationships per activity around 4β6 |
| PMI Practice Standard for Scheduling, 3rd ed. | Relationships should represent real dependencies; duplicates degrade the model |
| AACE RP 49R-06 | Redundant logic can mask the true longest path when durations change |
| Typical Gulf client specifications | Some require the contractor to remove redundant logic before baseline acceptance; a few name a maximum predecessor/successor count |
π’ Rule to remember: link each activity to the thing that immediately drives it and the thing it immediately drives. If a link skips over an activity that's already in the chain, it's probably redundant.
How it actually works
Definition. A β C is redundant if there is another path A β β¦ β C whose total duration and lags are β₯ the direct link. The direct link never drives; it's covered.
| Case | Direct link | Indirect path | Redundant? |
|---|---|---|---|
| Rebar FS Pour; Rebar FS Inspection FS Pour | Rebar β Pour | Rebar β Inspection (1 d) β Pour | Yes β indirect path is longer |
| Excavation FS Blinding; Excavation FS+5 Blinding via nothing else | β | β | Not redundant β single link |
| Slab L5 FS Blockwork L5; Slab L5 FS Slab L6 FS Blockwork L5 | Slab L5 β Blockwork L5 | Slab L5 β Slab L6 (7 d) β Blockwork L5 | Yes today; but if Slab L6 is deleted or re-sequenced, the direct link becomes the only driver β keep with a note |
| Every activity FS Project Finish milestone | Many | Each activity's real chain reaches the milestone anyway | Yes for all but the last activities |
Common sources.
| Source | Example |
|---|---|
| Milestone catch-alls | Every activity linked to Substantial Completion |
| Belt-and-braces | MEP L5 linked to Slab L5 (correct) and to Topping-out (redundant) |
| Copied floors | Level template copied with links to a shared predecessor that each floor already inherits |
| Fragnet insertion | New activities linked to everything around them "to be safe" |
| Merging subcontractor programmes | Their internal links plus your interface links overlap |
Finding them in P6. P6 doesn't flag redundancy. Options:
| Method | How |
|---|---|
| Driving flag | Activity Details > Predecessors: the Driving tick box. A link that is never driving across several updates is a candidate β not proof |
| Relationship count column | Add columns Predecessors / Successors count; sort descending; look at anything over 5 |
| Milestone check | Open the finish milestone's predecessors; anything not among the last activities of its chain is redundant |
| Third-party checker | Fuse-type tools and Schedule Analyzer report "redundant logic" directly |
| Export TASKPRED | For each pred/succ pair, test whether an alternative path exists β practical only with a script |
Removing them safely.
| Step | Action |
|---|---|
| 1 | Baseline the file (Reflection or copy) |
| 2 | Remove candidates in one WBS area |
| 3 | F9; run Schedule Comparison against the copy |
| 4 | Any date change β the link wasn't redundant; put it back |
| 5 | Record removed links in the change log for the narrative |
When to keep an apparently redundant link. If the indirect path exists only because of soft logic (one crew, one crane), the direct link is the hard one. Remove the soft chain later and the direct link is what saves you. Keep it, tag the relationship comment "hard β kept deliberately".
π₯ Where people go wrong
- Deleting links because the Driving flag is unticked. Non-driving isn't redundant. A link can be non-driving for six months and become the driver in month seven. Test by removal and comparison, not by flag.
- Linking everything to the completion milestone. 300 predecessors, all redundant but the last five. The milestone's driving predecessor is unreadable and every date it shows looks unexplained.
- Removing the hard link and keeping the soft chain. Now the "covered" physical dependency is gone, and the first re-sequencing exposes a start before its physical predecessor.
- Treating density as quality. A reviewer asking for "more logic" wants each activity properly driven, not four links each. 1.5β2.5 relationships per activity average is typical for a clean Level 3 (logic-density-and-quality).
- Cleaning without a comparison run. Fifty links deleted, one wasn't redundant, completion moved 3 days, nobody noticed until the client's Schedule Comparison. Always compare.
- Not removing them before baseline acceptance. After acceptance every logic change goes in the narrative change table. Clean the file before it's frozen.
βοΈ When you're challenged
"Your finish milestone has 240 predecessors. Why?" "Legacy from the tender programme. All but 6 are redundant β every chain reaches the milestone through its last activity anyway. They're removed in Rev 1, no date change, comparison report attached."
"You deleted 80 relationships β how do we know nothing moved?" "Schedule Comparison against the pre-clean copy: zero changes to early or late dates. The report is Appendix D. The only links removed were ones already covered by longer paths."
"Isn't more logic safer?" "Only if it's right. Redundant links don't add safety; they hide which link is actually controlling. When Slab L6 slipped last month, it took an hour to find the driver because there were five candidates."
π Related pages
- Logic Density and Quality β how much logic is the right amount
- Relationship types explained β the mechanics
- Hard Logic vs Soft Logic β why an apparently redundant hard link may be worth keeping
- P6 Schedule Comparison β proving nothing moved
- P6 Reflections and What-If β cleaning in a copy first
- Milestones and Key Dates β what milestones should actually be linked to
βοΈ Worked example
Substantial Completion milestone on a school in Riyadh, baseline Rev 0:
| Predecessor group | Count | Redundant? | Action |
|---|---|---|---|
| All 48 blockwork activities | 48 | Yes β each feeds plaster β paint β snagging β SC | Removed |
| All 48 MEP first fix | 48 | Yes | Removed |
| All external works activities | 22 | 21 yes; final road surfacing genuinely last | Kept 1 |
| All commissioning activities | 18 | 17 yes; final T&C sign-off genuinely last | Kept 1 |
| Authority approvals | 6 | 4 yes; civil defence and municipality final inspection genuinely last | Kept 2 |
| Snagging by zone | 8 | 7 yes; final zone genuinely last | Kept 1 |
150 predecessors β 5. F9 and Schedule Comparison: no change to any early or late date. Milestone's driving predecessor now readable β civil defence final inspection, total float 0. Review comments on "logic clarity" closed.
π References
- GAO, Schedule Assessment Guide (GAO-16-89G), Best Practice 2
- PMI, Practice Standard for Scheduling, 3rd ed.
- AACE RP 49R-06, Identifying the Critical Path
- DCMA 14-Point Assessment, Metric 1
- Oracle, P6 Professional User Guide β Relationships; Schedule Comparison
From the field
Experience from working planners. Unreviewed β read it as experience, not guidance.
Add what you know about redundant relationships. What worked, what the consultant pushed back on, what you would do differently next time. A paragraph is plenty.
Contributors get their name and one link on the site β your own templates, course or consultancy. We take nothing and hold nothing.
Add your experience