Redundant vs Duplicate Relationships

Defining Relationship Terms.

When it comes to adding logic relationships in P6, things can get out-of-hand in no time. During the CPM network development phase, logic relationships are constantly added, deleted and revised. At the completion of the process the CPM network diagram can end up looking like a messy bowl of spaghetti.

Good scheduling practice calls for minimizing, as reasonably as possible, the amount of logic relationships in the CPM network. Cluttered CPM networks can add confusion, promote faulty logic and increase errors especially when trying to trace logic paths.

Before diving further into this topic, and for the purposes of this discussion, we must first define our terms and the difference between “Redundant Relationships” and “Duplicate Relationships”.

A Redundant Relationship is defined as: an additional logic relationship between 2 activities that are not directly related to each other.

In the example below, the FS relationship between Activity B (B) and Activity H (H) is redundant because an existing inferred relationship between these 2 activities already exists through B->C->D->E->F->G->H. Since B and F are not directly related, then the relationship B->F is said to be “Redundant” since intermediate activities exists between each activity which are along the same logic path.

Since the relationship B->H is redundant, then this relationship can be safely deleted and will not affect any dates or Total Float values of any activity within the CPM network. Redundant relationships are easily detectable when a logic path is neatly grouped so that activities of the same logic path are sorted by start date. In the example below, activities B thru G are group in the same logic path and are sorted by Start date. The 3 redundant relationships are clearly shown (B->H; C-> E; and E->G) by the dotted relationship lines and therefore can be safely deleted.

Even though a redundant relationship exists, it doesn’t necessarily mean that the relationship should be deleted. A Scheduler may decide to intentionally retain a redundant relationship in the CPM Network. For example, the redundant relationship may represent a secondary “fallback” relationship in case the current driving relationship is not sustainable.

For example, in the illustration above, suppose the current driving predecessor (D) to Activity E is no longer valid. Then, by removing the relationship, D->E, then the new driving predecessor to E will be C. If the redundant relationship, C->E had been previously removed, then when the relationship D->E is removed, E will revert back to the Data Date when the schedule is recalculated.

For this reason, using redundant relationship removal algorithms is generally not recommended. Furthermore, and unfortunately, when it comes to P6, all relationships (other than the relationship type) are the same. There is no direct way to differentiate “soft” relationships from “hard” relationships; or “primary” relationships from “secondary” relationships; or “physical” relationships from “crew” relationships.

Redundant relationship removal algorithms generally remove relationships regardless of their priority or classification. Therefore, the recommended method for removal of relationships is by individual consideration and inspection.

A Duplicate Relationship is defined as: an additional logic relationship between 2 activities that are directly related to each other.

Duplicate relationships can be classified into 2 types.

In the illustration above, the first type (Type 1) of Duplicate Relationship occurs when a SS/FF relationship pair is used.  Typically,  a lag value (typically greater than 0) is included in both relationship. This relationship technique is often used in summary level type schedules where the activity detail is not totally defined. Since the preferred technique in CPM networks is to allow only 1 relationship between any 2 activities, this usage is not recommended for detailed or production level schedules.

The second type (Type 2) of Duplicate Relationship occurs when the relationship pair is not of the SS/FF type. These duplicate pairs often occur when the “Link Relationship” option is inadvertently used a second time (or more) spanning activities that are already related. In most cases, the non-driving relationship is the relationship that should be deleted. Therefore, for K->L, the FF duplicate relationship can be safely deleted.

A subset of the Type 2 Duplicate Relationship is the “Multiple Instances” variety where more than 2 Duplicate Relationships exist between 2 activities. An example of this, as shown below, displays the relationships between M->N where every possible logic relationship exists between the 2 activities.

In the Successors relationship window above, since the Driving relationship is FS, then all other listed relationships can be safely deleted.

Zümmer’s Analysis Report #39 – “Duplicate Logic Relationships” shown below, lists all duplicate logic relationships in the selected Project.

 This report groups duplicate logic relationships separated by a heavy horizontal line. In the example above, the duplicate logic relationship between M->N displays the Type 2 variety with all 4 assigned relationships. For this condition, the FF, SF and SS relationships can be safely deleted.

The next group, between K->L, displays the Type 2 variety with the FF/FS pair. For this condition, the FF relationship can be safely deleted.

The last group, between I->J, displays the Type 1 variety with the SS/FF pair. Here, the I->J relationship contains a lag of 5 days for both SS and FF relationships. If Activities I & J are part of a detail production level schedule, then breaking down the scope into more detailed activities may be necessary to eliminate the duplicate logic condition.

Copyright ©2020 FoxQuest Systems, Inc. – All Rights Reserved

Multi-Level Filtering

Take your Filtering skills to the next level…

The Filter option is probably the Scheduler’s most powerful tool in P6. The Filter option allows the Scheduler to display only specific activities based on the Filter criteria. There are a vast amount of options that go beyond the scope of this article.

However, in this article, we will explore a not-well known or understood feature I’ll describe as “Multi-Leveling”. In other words, you can implement the multi-level filter technique that allows for multiple filter criteria to be combined into a single Filter.

In the sample Project shown below, “Thyme Street Bridge Construction” consists of the construction 3 Piers comprised of Piles, Footers, Columns and Caps. The Project is planned with 3 crews: a) a Pile Driving Crew; B) a Footer Construction Crew; and C) a Carpenter Crew responsible for building the Columns and Caps.

In this scenario, a reasonable CPM model for this Project would appear as shown below:

Now suppose we need to display (or Filter) only the Cap construction for Piers 1 and Piers 3. Since the sample set above is small, there are multiple options to accomplish this. However, for the purposes of illustration, the most common solution would be to create 2 Filters. One filter to select only the Cap Construction, then another to select Piers 1 and Piers 2. Once the 2 independent Filters are defined, the option to “Show activities that match” is set to “All selected filters”.

The common solution approach consists of:

  • Create a Filter to Select only Cap Construction as shown below:

The Filter shown above uses the “(All of the following)” option to select only activities containing the word “Cap”.

  • Create a Filter to Select Pier 1 or Pier 3 Construction as shown below:

The Filter shown above uses the “(Any of the following)” option to select only activities containing the word “Pier 1” or “Pier 3”.

  • Under the “Show activities that match” text, select the “All selected filters” option, then select both Filters created above as shown below:

The results of the 2 Filter selection criteria are correctly shown below:

The above solution is correct and operative, however, with the use of Multi-level Filtering, a better and more efficient solution can be constructed by combining both Filters into one Filter Criteria as shown below.

  • Create the first Filter criteria exactly as in Step 1 above as shown below:
  • Next, Include the next criteria similar to Step 2 above:
    • Add a third line using the “(Any of the following)” option similar to Step 2 above.
    • Add a fourth line, then enter the criteria “Where Activity Name contains Pier 1”. Make sure that Line 3 as shown below contains the “-“ symbol on the left indicating a second level is defined for the filter criteria. If the “-“ symbol is not shown, then click on the “Shift Right” arrow to create the second level. Notice also that the second “-“ symbol is indented indicating the second level criteria.
  • Add the fifth and final line, then enter the criteria “Where Activity Name contains Pier 3”. Make sure line 5 begins with “Or”. When done, select OK.

The results of the 1 Filter selection criteria are correctly shown below:

This solution is more efficient since only 1 Filter used eliminating the need to specify the “Show activities that match” option. 

In conclusion, this simple example shows that the Filter option is more robust than what may initially appear. If necessary, additional levels can be added for more complicated Filters. The best way to improve your proficiency with Filters is to experiment with known results thereby better understanding its structure and behavior.

Copyright ©2020 FoxQuest Systems, Inc. – All Rights Reserved

Activity Names with Embedded Double Space

…the Filter Killer.

The Filters Module in P6 is a very powerful tool, and arguably regarded as a “Scheduler’s Best Friend”. However, when using – the “Activity Name equals/contains” option, incorrect results could arise when Activity Names contain embedded double spaces. An embedded double space is defined as double blank spaces contained anywhere within an Activity Name. Blank spaces at the beginning of the Activity Name is not considered since the P6 ‘contains’ or ‘Equals’ Filter option can trap this anomaly.

 In the illustration below, there are 6 ‘Review Bids’ activities comprised of 4 Tasks and 2 Milestones. Of course, this small set could be a subset of a large CPM Network comprising of thousands of activities.

For this exercise, suppose the Scheduler is required to produce a report or layout identifying all the “Review Bids” activities for Bidding Review Team. The natural approach would be to create a filter as shown below:

  • Type: (All of the following)
  • Where Parameter: Activity Name
  • Is: contains
  • Value: Review Bids

However, when the Filter is activated, P6 returns the following results:

Unbeknownst to the Scheduler, only 4 out of the 6 activities appear. What happened? Activities EDS1020 and EDS1040 were excluded from the filter results.

Unfortunately, a common and simple typographical error placed double blank spaces between the words “Review” and “Bid”. Not only is this error easy to make, but is nearly impossible to detect especially when you’re dealing with a CPM network consisting of thousands of activities and where activity copy/pasting is used extensively.

In Zümmer Analysis Report: “[02] Activity Names with Embedded Double Space“, shown below, not only lists all instances, but the ‘Set Group’ column even shows you where to look. The report also tracks the Count Per Set and the Activity Count for each Set Group. Additional information on this report includes the Original Duration, Remaining Duration, and Total Float.

Since this is such an easy mistake to make, possibly resulting in erroneous reports, this issue must be checked and resolved by the Submitting or Reviewing Scheduler.

Using Zümmer concurrently with P6 helps identify and eliminate embedded double spaces.

Embedded Double Spaces can be resolved using the following Steps:

  1. Open the CPM Network as shown below, with the P6 Filter set to “All Activities”.

2. Click on the first Activity Name cell so that the Select Marquee is shown around the Activity Name. If the Select Marquee is not highlighted around the Activity Name cell, the solution will not work.

3. Press “CTRL-R” to activate P6’s Replace Window as shown below:

4. In the “Find what:” textbox, enter 2 blank spaces. The 2 blank spaces will not show. The illustration above represents the 2 blank spaces with the gray rectangles.

5. In the “Replace with:” textbox, enter 1 blank space. The single blank space entry will cause the blinking cursor to shift 1 space to the right.

6. Finally, click “Replace All”. The “Replace All” option will scan through all Activity Names replacing every embedded double space with a single space.

7. If an Activity Name contains multiple embedded double spaces, the Find/Replace procedure will pause and redisplay the Replace window. Click “Replace All” to continue the process until all double spaces have been removed.

At the completion of the scanning process, all embedded double spaces have been replace by a single space as shown below. The highlight bar stops at the last replaced Activity Name.

Copyright©2020 FoxQuest Systems, Inc. – All Rights Reserved