Expert, flexible training in the use of the most powerful scheduling software program in the world: Primavera P6 by Oracle. Call today! (916) 779-4145
Primavera Scheduling

All posts in Activity Relationships

Oracle released Version 20.12 of Primavera Professional Project Management in December 2020. If you have not upgraded P6 recently, here are some of the most salient improvements since 2018:

Dissolve Activities With Or Without Lag: You can choose whether or not to retain lag when dissolving activities using the Retain lag setting in the Calculations tab of the User Preferences Dialog. If you choose to retain lag, the lag from the dissolved activity's predecessor relationship will be added to that of its successor relationship and applied to the new relationship. (Version 19.5)

Improvements to Stored Images Functionality: Multiple images can be uploaded at the same time. (Version 19.7)

Project Code Maximum Length Changed: The maximum length for Project Codes in PPM databases is 60 characters. (Version 19.7)


Scheduling and Leveling Options Can Be Exported to and Imported From Primavera XML: When you export projects to Primavera XML format, scheduling and leveling options are included. When importing the Primavera XML file, you can choose whether to import with the Update Existing or Keep Existing import actions against the scheduling and leveling options. (Version 19.8)

Allow or Restrict Access to Resources From Multiple Parent Resources: You can select up to five resources when defining which resources a user can access. The user can access and use the selected resources and all child resources of the selected resources. (Version 19.9)

Choose to Export Primavera XML Files Into a Compressed File: When you export projects in Primavera XML format you can choose to have the files exported to a single compressed file in .zip format. (Version 19.10)

Add Comments About Relationships: Add the Comments column in the Relationships detail window to add extra information about the relationship, for example to explain the need for lag assigned to the relationship or the need for the relationship itself. Relationship comments are plain text and can be up to 250 characters long. This is my favorite new feature. (Version 20.4)

Categorize and Organize Activities and Assignments Using Role Codes: With potentially hundreds of roles being used across an enterprise of projects, role codes provide another method for filtering the roles you need to access quickly, or for grouping, sorting, and filtering roles and role assignments. (Version 20.6)

Improved Control of Options When Scheduling Multiple Projects: In the Scheduling Options dialog box, you can select which of the open projects options will be used when you schedule multiple projects. In the Level Resources dialog box, you can select which of the open projects leveling options will be used when you level multiple projects. You can generate scheduling and leveling log files as HTML files. (Version 20.6)

Fill Down and Fill Across Quickly in the Resource Assignment Spreadsheet: You can fill data on the Resource Assignment Spreadsheet window from shortcut (right click) menu. (Version 20.8)

Fill Down Multiple Cells in the Resource Usage Spreadsheet of the Activities View: You can fill data on the Resource Usage Spreadsheet pane from several cells simultaneously. Select multiple contiguous cells by holding down shift while clicking the first and last cells in the range, then select the rows to copy to using either shift and click (to select contiguous rows) or Ctrl and click (to select separate rows), then right click to select the Fill Down menu item. (Version 20.9)

Financial Period Calendars Allow You to Use Different Financial Periods for Different Projects: You can create multiple financial period calendars with different periods. The different financial period calendars can have different durations as well as different start and end dates to each period. You can create new financial period calendars from scratch or duplicate an existing calendar as the basis for a new financial period calendar. (Version 20.10)

Copy Dates to Other Assignments Using Fill Down in Resource Usage: You can use fill down to populate dates in the Resource Usage Spreadsheet of the Activities window of P6 Professional. Fill down options for start and finish dates are available both in the Activity Resource Assignments section and the spreadsheet columns. (Version 20.10)

Easily See Exact Values for Histogram Bars: You can select to view the values for bars on histograms and stacked histograms in the options for the Activity Usage Profile, Resource Usage Profile, and Tracking View. (Version 20.10)

Categorize and Organize Assignments Using Codes: With potentially many thousands of active resource and role assignments across hundreds of projects, assignment codes provide another method for grouping, sorting, and filtering the assignments you need to access quickly. (Version 20.11)


+ Add a Block or drag an element into the page

Primavera SchedulingProper scheduling requires an understanding of driving relationships. These are the most important relationships in the schedule because they drive the start and finish dates of the activities that follow. So it stands to reason that all critical path relationships are driving. In Primavera P6, driving relationships appear on the Gantt Chart as solid lines: red for critical path and black for non-critical activities. When “crashing” the schedule we must focus on driving relationships in order to move up the start dates of critical path activities, thereby shortening the project duration.

Now, if every activity had only one predecessor we could ignore talking about the counterpart to driving relationships: the non-driving relationships. After all, if there is only one person in front of you performing a task, how could they not be driving your work? Well, there is one possible exception. Activity constraints can, in some situations, drive activity dates. For example, if the successor wants to start on August 3rd because the predecessor finishes the day before (i.e. the classic Finish-to-Start relationship) adding an activity constraint that pushes back the start date means that the constraint is driving, not the predecessor.

Finish-to-Start relationships make it easy to separate driving from non-driving relationships. If Activity C is waiting for both Activity A and Activity B to finish, whichever predecessor finishes last is the driving relationship. (I am assuming that both relationships have zero lag, but it is considered bad form to use any lag other than zero days with Finish-to-Start relationships). Where it gets more interesting is when the predecessor relationships are Start-to-Start and Finish-to-Finish. So here is my favorite example from our P6 102 class:

  • The predecessor has a duration of 20 days
  • The successor has a duration of 15 days
  • There are two predecessor relationships coming from the same activity
  • One of the predecessor relationships is Start-to-Start with a lag of 8 days
  • The other predecessor relationship is Finish-to-Finish with a lag of 5 days

Which predecessor relationship is driving?

Keep in mind there is only one predecessor activity, but there are two relationships. I will always add a Finish-to-Finish relationship to a Start-to-Start relationship. It is my insurance policy. I doubt that most Primavera users realize that if you only have a Start-to-Start relationship, the predecessor can finish on the last day of the project without causing a delay. For this reason I consider the Start-to-Start relationship by itself to be an open end – even though technically the predecessor does have a successor.

To be clear, “open end” refers to an an activity that is missing a predecessor or successor. The Schedule Log will display activities that are missing predecessors or successors under the “Warnings” section.

Non-driving relationships appear as dotted lines on the Gantt Chart. Pro tip: the Time-Scaled Logic Diagram (TSLD) in Visualizer (Tools > Visualizer) allows users to choose different colors and line styles for driving and non-driving relationships. There is also the option to show only driving relationships. TSLD also has the unusual feature of placing more than one bar on the same row if the bars do not overlap. This reduces the number of rows in the printout substantially.

Getting back to my earlier question, the Finish-to-Finish relationship is the driving relationship, and the Start-to-Start relationship is non-driving. Here is a visual representation:

 

Note that all durations are in calendar days to make the ordinal days and working days match.

Let’s take a look at the math. The successor is scheduled to start 8 days after its predecessor. The successor has a duration of 15 days. So the successor finishes on day 23 (8 + 15) when only this relationship is considered. But the successor is also supposed to finish 5 days after its predecessor, and the predecessor has a duration of 20 days. As a result, the successor now finishes on day 25 (5 + 20). The Finish-to-Finish relationship adds two more days to the sequence between these activities.

We should also realize that the successor cannot start 8 days after its predecessor because the Finish-to-Finish relationship is dragging the successor by its tail. P6 has a dilemma. The successor’s 15 day duration must be contiguous (other than on specified non-work days according to the calendar). In order to meet both the Start-to-Start and the Finish-to-Finish requirements, the successor would need to be two days longer. In which case both relationships would be driving.

The original Primavera scheduling program, P3, had an option to allow non-contiguous durations. P3 would “stretch” the successor so that both relationships could be fulfilled. But the displayed duration of the successor would not change. I suppose this did confuse some people because the length of the activity bar was occasionally quite exaggerated compared to the displayed duration. P6 dropped this feature, perhaps for good reasons. We must now recognize that not all of our specified conditions can always be met.

Driving and non-driving relationships can also be identified in the Activity Details at the bottom of the Activities window. Select the Predecessors, Successors or Relationships tabs. The columns shown in these tabs can be customized to show the Driving box, which is found in the General category of columns. I always display this box. The example I provided is rather simple because there is only one predecessor activity. Imagine if there are several predecessors starting on different dates and more than one relationship type!

Schedules can get very complex rather quickly because of the available relationship types. Ah, the old days when all relationships types were Finish-to-Start, things were rather simple. What we called the “I-J” or “Activity-on-Arrow” method of scheduling basically disappeared in the mid-1990s. But I am still a big fan of Finish-to-Start relationships because they are the most conservative relationships. I try to make about 80% of my relationships Finish-to-Start.

Keep in mind that as logic and durations are revised, what used to be driving may now be non-driving, or vice versa. Schedules are never static. Out-of-sequence work can also create new situations not previously anticipated. Similarly, new activities representing scope changes or unexpected events can alter the importance of relationships. But ultimately, if the start date of a task just seems wrong, driving relationships must be analyzed first. Don’t let the non-driving relationships become a distraction.


The Pit Stop Relationship

Categories: Activity Relationships, P6 EPPM, P6 Professional, P6 Tricks
Comments Off on The Pit Stop Relationship

Primavera SchedulingDuring our advanced Primavera P6 classes I like to tease my students with the “weirdo” activity relationship and challenge them to find a practical situation for applying it. This relationship type is not available in scheduling programs like Microsoft Project so most of my students have never seen it before.

I am talking about the Start to Finish relationship, whereby the predecessor must start before the successor can finish. Unless a very large lag is used, the successor will start before the predecessors starts. Think about that for a moment. The successor starts first! The following illustration will make that statement rather obvious:

The predecessor (yellow bar) starts on the same day that its successor (green bar) finishes. If we add a lag duration the yellow bar will start before its successor finishes, so they will overlap. For example, a one-day lag would cause the predecessor to start the day before the successor finishes.

Well, you can probably see why we do not unleash this relationship type on beginners!

Other than showing off, one might wonder why the Start to Finish relationship is used at all. My favorite example is the pit crew that services a race car. The pit crew is the predecessor to the car arriving in the pits (the successor).

No, that is not a typo. I am saying the pit crew is the predecessor. Put another way, the race car is not supposed to pull into the pit lane until the pit crew is ready. The pit crew is therefore logically the predecessor because they, not the car, must be ready first.

At this point I am sure you are thinking, “why not make the race car the predecessor to the pit crew and use a Finish to Start relationship?” The issue is that we do not want the car to arrive early. So it is logical to say that the successor’s start date should determine the predecessor’s finish date. Hence, Start to Finish.

While I wish that race teams used Primavera software (official scheduler for Ferrari would be a very cool job) the reality is that one of my clients was already using this relationship type before taking my class. They work at a nuclear submarine facility on the East Coast. Similar to my example, they do not want the sub to show up until they are ready to perform maintenance. So maintenance is the predecessor.

The downside to this relationship type is that you can end up with some strange looking float values, as the backwards pass algorithm seems to get confused by what almost seems like reverse logic. We expect relationship lines to always be pointing to the right, after all. Other activities tied to the ones with the Start to Finish relationship can likewise behave rather strangely.

An alternative would be to use a Finish to Start relationship and put an “As Late As Possible” (ALAP) constraint on the predecessor. This way, the race car can be the predecessor but it will not finish until the pit crew is ready. Schedulers often use this constraint to avoid having materials or equipment delivered to the jobsite too early. Sort of like Just In Time manufacturing.

Perhaps it comes down to personal preferences. Some people dislike using Start to Finish relationships and others dislike using constraints. Owners in particular view constraints as an artificial device to sequester float. The contractor is in theory suppressing float on certain activities to keep the owner from using it. Fine, but when the door hardware shows up a year early perhaps they will reconsider!

Personally, I prefer to use the ALAP constraint, albeit with discretion. A side-effect of this particular constraint is that the predecessor(s) will not be driving. This can confuse some people. While other constraints sometimes have the same effect, this always happens with the ALAP constraint.

Try the Start to Finish relationship for yourself and see what happens!


My wife and I recently participated in a group hike to see the new land acquisition by our homeowners association. We own property in a 7,000 acre resort in the Sierras and the new parcel adds several hundred more acres of wilderness that will prevent development near our resort. The problem was, our group leader had told us in no uncertain terms that the last bus back to the resort would be leaving at 5:15 pm. Yet here we were at 4:00 pm still hiking in the wrong direction and realizing we had at least an hour of strenuous hiking uphill to the staging area. So we turned around and headed back. Our group leader was clearly cutting it a little too close.

I feel the same way about scheduling. Yes, there will always be critical activities, but they are of course only critical because other activities are, well, less critical. But if the longest path of activities are themselves quite aggressive then we are only setting ourselves up for failure. So my preference is to have a schedule that can be beat.

I am not talking about sequestering float. You may have heard about strategies to hide float in a schedule. This all started several years ago because nearly all construction contracts in the U.S. state that float belongs to the project and is therefore not for the beneficial use of just one party. The contractor or the owner can use the float, with dibs belonging to whoever grabs it first.

Contractors who felt more entitled to the float began devising ways to hide some of the float by tying activities to unrelated work that starts sooner than the more obvious successors. This removes float from the schedule and makes it more likely that an owner delay to a task will also delay the project. A non-critical activity can quickly become critical because it has very little float. For this reason, the sequestering of float is often prohibited in construction contracts.

In my case, however, I am only trying to avoid being too aggressive with activities that are on the critical path and for this reason I choose the least ambitious type of relationship for the majority of my activities: Finish to Start. My goal is to make roughly 80% of the relationships in my schedule Finish to Start. This percentage can be checked using the DCMA checklist available in P6 Web. DCMA stands for the Defense Contract Management Agency. This checklist – called Check Schedule in P6 Web – can be seen below:

Primavera Scheduling

 

 

 

 

 

 

 

 

 

You set up the parameters of the schedule in this menu. Once Check Schedule is run, the results appear in a separate window, seen below:

 

Primavera Scheduling

 

 

 

 

 

 

At a glance I know whether I achieved my goal of making 80% of the activity relationships Finish to Start. Other goals include managing durations and relationship lags. Anything in green is in compliance while red indicates not in compliance with the specified parameters.

My strategy of primarily using Finish-to-Start relationships is a direct result of the early years of CPM scheduling, when Activity-on-Arrow (AOA) was the dominant scheduling technique. In those days, the arrows represented tasks, whereas the nodes (circles in most cases) were the activity identifiers. Because of this technique, each task had two nodes referred to in this order: the I-Node and the J-Node. So you would see something like Activity ID 1000-1005. This technique was also referred to as the Arrow Diagramming Method (ADM).

The Activity-on-Node (AON) method became very popular in the early 1990s and was certainly spurred along by Primavera Systems’ decision to drop Activity-on-Arrow altogether when the first Windows-based version of Primavera Project Planner (P3) was released in 1994. Ignoring this brief history of scheduling software for a moment, consider that if the arrow represented the activity, then all relationships were Finish-to-Start. The J-Node of the predecessor was also the I-Node of the successor. Leads and lags were non-existent. The predecessor(s) always had to be complete before the successor could start. This can be seen in the following Activity-on-Arrow diagram:

Activity-on-Arrow

 

 

 

 

We used to split activities into percentages so that, say, the first 25% of drywall hanging could start as soon as 25% of the walls had been framed. This effectively became the lag that we use today with Start-to-Start and Finish-to-Finish relationships. Otherwise, it was fully expected that some work would start out-of-sequence, meaning the successor starts before the predecessor is finished.

By the same token, Finish-to-Start relationships are far more likely to generate out-of-sequence progress in today’s precedence schedules. And my response is “great!” You are beating my schedule! I have set you up for success, not failure. Now, I realize some people are bothered by out-of-sequence progress, but unless there is truly a “bust” in the logic or the result of unexpected delays I see this as a positive sign.

There is another benefit to the Finish-to-Start relationship. It is more likely our resources will not become over-allocated. Older schedulers like myself used logic to limit the number of resources required because the scheduling software was too primitive to do this. We called this type of logic “crew restraints” and I still use this technique today. The resource leveling feature in Primavera P6 is not always the best option for controlling the allocation of resources. And besides, if the schedule is not resource loaded then leveling is not an option.

My attitude often comes down to this: prove to me you can get ahead of my schedule and I will modify the logic accordingly. Until then, my logic assumes a more linear progression of the work and is therefore more forgiving. And everyone will feel better because the project end date does not keep slipping. What could be better than that?