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 P6 Professional

When P6 Late Dates are Early

Categories: Constraints, Late Dates, P3, P6 Professional
Comments Off on When P6 Late Dates are Early
Primavera Scheduling

Primavera Systems introduced a novel concept when it released Primavera Project Planner in 1983. Having just graduated from university two years earlier with my first CPM Schedule already under my belt, I assumed I understood basic scheduling concepts pretty well. I then spent several years using a proprietary software program owned by the consulting firm that hired me as a scheduler. But when my employer switched to Primavera Project Planner in 1987, well, I learned another approach to CPM Scheduling.

All of my early schedules relied upon a floating project end date. That is to say, the project end date changes depending on progress. Not knowing better, I did not consider that the early dates were not very helpful. On the critical path, the early start/late start dates are identical. Likewise, the early finish/late finish dates are the same. So how do we get back on schedule once there are delays?

Primavera Project Planner (or "P3") allowed constraints to be placed on individual activities or the project overall. This created "hard stops" in the schedule. The late start and late finish dates became fixed dates, more or less (I say "more or less" because progress and logic changes mean that the late dates will often change over the life of the project). But in particular I was intrigued by the idea of the last activity in the schedule being held in place.

Those of you familiar with forward and backward passes understand that the forward pass determines the length of the project - hence the phrase "longest path" that is used in Primavera software in lieu of "critical path". The backwards pass determines the float on each activity. Absent any constraints, the longest path will always exhibit zero days float because both the forward and backward passes generate the same result. For example, what exhibits as Day 70 going forward is also Day 70 working backwards. 70 - 70 = 0.

But on a project that is behind schedule we might see that what is Day 70 going forward is Day 65 working backwards. We have -5 days of float. And we need to reach that point in the schedule by Day 65 if we want to get back on schedule. This assumes of course that we have constrained the last activity in the schedule. In today's Primavera software, "Finish On or Before" is the preferred constraint. If we are on track to finish early, the float will be zero days because the backwards pass starts with the finish date of the last activity in the schedule. When we are behind schedule, the constraint date is the starting point for the backwards pass. 

What I really like about "Finish On or Before" is the zero days of float when we are on or ahead of schedule. I have a basic philosophy about projects. You have to plan to finish early in order to finish on time. We might insert a contingency or buffer into the schedule to reinforce this concept, but projects rarely just stay "on" schedule. Subcontractors and vendors see activities with zero days float coming up, which makes those tasks seem very important. The general contractor, and presumably the owner, know otherwise. 

One of the biggest criticisms of constraints in general is that they sequester float for the benefit of the general contractor. True, we can create an artificial late start date for any activity by assigning a "Start On or Before" constraint. The general contractor is literally choosing a late start date for the activity irrespective of the longest path. Manipulating the float in this manner is certainly frowned upon, for good reason. The float displayed on an activity should accurately reflect how this task affects other tasks downstream. 

Unfortunately, some owners fail to appreciate the nuances of constraints and instead restrict their use altogether. Yes, we can compare the current project finish date to the date in the previous schedule, but that is a cursory examination that does not address where we need to be in the next few weeks. We may have dozens of activities that are behind, some more than others. The worst of the worst need to be addressed first, what I think of as a "whack a mole" game where negative float is being hammered.

But I am not advocating unrestricted use of constraints. A question I present during my advanced P6 training classes is based on the following observation:

"An activity has just one predecessor but it is not a driving predecessor. How is that possible?"

Under normal circumstances there must be at least one predecessor task that drives the start or finish date of the next activity. Otherwise, what exactly is driving the successor? Granted, it could be affected by resource-levelling or mismatched calendars. But the most common explanation is that the successor is being driven by a constraint. This can break the critical path so that the path now starts with the constrained activity.

We speak of the critical path as being a contiguous, or unbroken, string of activities from the current Data Date to the end date of the project. The only nonwork days would be those defined by the activity calendars. Therefore, we must make progress along the critical path each and every work day. The critical path is a difficult taskmaster, as it should be.

A few years ago an engineering firm in the (San Francisco) Bay Area asked me to meet with them to review one of their schedules. "We can't find the critical path", they told me over the phone. Hmm. That sounded like a challenge. How on earth can the critical path be all that difficult to locate? But I did not need to know much about their schedule to presume that too many constraints were being used.

Now, you might have a different definition of "too many" but I think we can all agree that 150 constraints in a schedule is a bit much. So I patiently explained why 99% of them were not necessary. The engineers refused to trust the logic, or fix it for that matter. A typical example was a predecessor with a Friday finish constraint followed by a successor with a Monday start constraint. Um. Finish to Start relationship?

On nearly any project I can live with just the "Finish On or Before" constraint, placed on the last activity. Any other constraint should be justified by a contractual requirement, such as an intermediate milestone that can generate liquidated damages. There are often quite a few milestones in a CPM Schedule but I am only interested in constraining the ones that cause pain for the contractor. We don't want to miss those dates.

The U.S. Army Corps of Engineers probably reviews more CPM Schedules than any other agency in the United States. So it seems rather safe to say that the USACE understand software settings as well as anyone. The USACE require two constraints on each project: a "Start On" constraint on the first activity, and a "Finish On or Before" constraint on the last activity. Additional constraints require approval.

Now, I personally don't feel that a start constraint is necessary on the first activity if the Data Date matches the start date of the project, so I could live with one constraint, on the last activity. But since I am using the start constraint I will move the Data Date up a couple of weeks so that the start milestone is not obscured by the Data Date line. It just looks better.

So, to wrap this up, when the project end date is constrained, activities that are behind schedule flip the script when it comes to dates. The late dates are earlier than the early dates. I spent quite a lot of time explaining this to doubtful contractors and owners back in the 1980s. Surely the software is broken! But the logic is sound. The late dates, being constrained by the last activity, are indicative of how to get back "on" schedule. Following the early dates would be a mistake, as they would maintain the status quo.

This scenario introduces the inverted cash flow curve, which I always find interesting. In the graphic below you can see the late curve rises above the early curve: 

Primavera Scheduling
Based on everything I have discussed, these curves make perfect sense. We need to perform more work than required by the "early" dates. Otherwise, we finish late. Which means we also need to display the late dates to avoid landing on the "early" curve and therefore finishing late. Yet it still confuses people nearly forty years after I issued my first schedule with negative float.

The Primavera P6 Feature We Added

Categories: P3, P6 Professional, Suspend and Resume
Comments Off on The Primavera P6 Feature We Added
Primavera P6 contains a feature that I can take some responsibility for recommending. Read more

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

Final Week to Buy Primavera P6

Categories: P6 Professional
Comments Off on Final Week to Buy Primavera P6

That’s right. This is the final week to buy Primavera P6 Professional. After September 10, 2020 Oracle will no longer sell the program.

Sort of…

Oracle has decided to pivot away from term licenses to perpetual and cloud licenses. There are a few exceptions, but otherwise users will no longer be able to lease Oracle software for 1 to 5 years. However, Oracle will continue to support all existing term licenses until they expire.

I personally liked the idea of term licenses given that quite a few companies only need the software for a particular project, or they need an extra copy of P6 for the project team to use. A term license can fill these needs without the bigger financial commitment of a perpetual license.

Term licenses for Primavera P6 were introduced by Oracle after it acquired Primavera Systems, the company that developed the seminal scheduling program Primavera P3 in 1983. Primavera P3 was only available from Primavera Systems as a perpetual license.

Here’s an interesting tidbit: why do Primavera P6 files have an “.xer” extension? Because a company named Eagle Ray was the first to develop enterprise scheduling software. Primavera Systems acquired Eagle Ray and re-branded the software as Primavera P6. The file extension is basically an acronym: eXport Eagle Ray.

A term license has all the functionality of a perpetual license. The only difference is that a term license does eventually expire. Perpetual licenses last forever. Oracle will continue to offer term licenses for a few non-Primavera programs.

Nevertheless, you only have a few more days to buy that term license. After September 10th they are gone forever!


In one of my favorite Gene Hackman films, Heist, there is a scene where his character is explaining how he solved a problem. His client (actually, a mobster he is planning to rip off) says, "you're a pretty smart guy." When Hackman's character declines the compliment, the mobster replies, "then how did you figure it out?" Hackman's response:

"I said to myself, 'what would a smart guy do?'"

I love that line. Unfortunately, I recently forgot that lesson. Let's set the stage. I am updating a new Primavera P6 schedule for the first time. I have a change order modification that has been added, and there is also progress on this new activity.

The client told me he is 40 percent complete with the modification. So I type in that percentage. And I move on with the update. But while checking my customized earnings report I realize there is no Earned Value for the new activity. But the activity is in fact showing 40% complete.

Okay...

Now, perhaps you are thinking I forgot to apply an actual start date. Well, no, it would not be possible to show a percent complete without first entering an actual start date. I should also mention that I am using the Physical % Complete type so that I can enter whatever percentage I want.

Hmm. Perhaps there is something wrong with the way I cost-loaded the activity. Nope, it has a budgeted total value. And I am using the same resource that all other cost-loaded activities have been assigned in this particular schedule.

What about my Earned Value settings? I almost never change them, but I verified that Performance Percent Complete = Activity % Complete (Admin > Admin Preferences > Earned Value). In the construction industry that is pretty much the setting that everyone uses. The point being that the activity percent complete determines Earned Value.

Yet here I am, still looking at zero dollars earned and 40% complete.

Aha, must be the activity type! We know that certain activity types like Level of Effort and WBS Summary behave differently than other types of activities.

Sorry - the new activity is Task Dependent. Nothing to see here folks. And if you were thinking it was a milestone, keep in mind that milestones cannot be assigned resources due to their zero durations.

What would Gene Hackman do?

He'd probably say something like, "hey buddy, if Earned Value is working on EVERY other activity in the schedule then there has to be something different about this one."

But it's not different, it's just new.

Oops...

Yes, it is a new activity! And where does Earned Value come from?

The baseline to the current schedule!

Under the Settings tab in the Project Details window there are two options for calculating Earned Value: Project baseline or User's primary baseline.

My schedule was set to Project baseline, and my Project baseline is the original plan. The new activity doesn't exist in the original plan so Earned Value is automatically zero.

I knew this, of course, but it is easy to forget when you are in a hurry. And it seems rather odd that users who never create baselines for the current project are immune to this potential problem. Because when there are no baselines the current schedule IS the baseline! 

This is in my mind one of the most counter-intuitive aspects of Primavera P6. Earned Value is not always based on the current schedule. Why would I want to base my earnings on something other than the current schedule? If the budget has changed it seems logical to pay off the new budget.

Now, I prefer not to change the value of an existing activity for pretty much the same reason I don't change the original durations. I want to preserve the old values for future reference. If the duration or budget is changed by a modification I will add a new activity for that purpose.

I have had a few projects, however, where we re-balanced the activity budgets. Assigning any baseline other than the current schedule would clearly cause problems. Which brings up another concern: the Earned Value for a project can be okay one day and off the next if a different baseline is assigned. Fun!

When I mention this during training sessions I often hear someone with a little Primavera P6 experience say something like, "never happens to me". Yes, that could be true. If you don't typically create baselines then by default your baseline is the current schedule. Lucky you!

Those of us who utilize baselines on a regular basis have to be more careful. And it gets rather complicated when there is more than one baseline attached to the current schedule. Re-assigning a baseline can change Earned Value. Oh well. I'll just keep channeling Gene Hackman.


My wife and I have a vacation home in Truckee, California. Whenever we are up there we get together with a couple who have a second home just two doors down from ours. During our last visit we met the wife's charming mother for the first time. After several hours of pleasantries she asked me a slightly odd question:

Primavera Scheduling

"Are you a professor?"

"No", I replied. "But I do teach scheduling and software classes."

She went on to explain that she thought I spoke very clearly and explained my thoughts in a logical, concise manner. So her comment about my being a professor was certainly meant as a compliment. She was not a native English speaker, and she complained that her son-in-law speaks much too quickly. On the other hand, I had no trouble understanding her at all. 

And it occurred to me that learning a language is a lot like learning how to schedule projects or to use scheduling software. 

Most of us who have tried to learn another language have been exposed to those classes where you put on a pair of headsets and repeat various phrases in the new language like, "that is a very big fish!"

Which is only helpful if you happen to encounter someone holding a large fish. 

Okay, so these classes do teach more useful phrases and even I have managed to order hot chocolate in Rome without feeling like a complete dolt. Tourist, yes. Idiot? As they say in Italian, "no".

Still, there is nothing that quite prepares you for going to another country and trying to strike up a conversation with a local. You have no control over what they are going to say. The answer is not in your handy phrase book. They may also speak with a dialect that is unfamiliar. What you learn has to have a practical application to your situation.

One of the criticisms of many engineering programs at universities is that students spend their first three years learning theory without any explanation as to why and how they will be applying this knowledge in the real world. I switched majors from Civil Engineering to Construction Science because of my own doubt about how I would use my degree. Differential equations seemed irrelevant to someone planning to take over the family construction company.

The dilemma for a university professor, however, is that students are incapable of providing much feedback other than demonstrating their retention of knowledge. It is not like one of the students is going to say, "I am planning to build clean water facilities in remote locations with no power grid, so what are the best practices?" The professor teaches a standard curriculum which should cover "all the bases", so to speak, and the students do not know enough to ask questions.

When I teach scheduling and Primavera P6 classes, however, nearly all of my "students" are professionals who have several years of experience and who also have particular expectations. They are all about "what can Primavera P6 do for me?" This is why Oracle refers to its partners like ours as "solution providers". Anyone who has used Primavera P6 knows that it is very powerful. But different companies and different industries have their own unique demands.

Case in point. During a recent private training session for a major company we discussed several issues. There are short, turnaround, projects that are over very quickly and for this reason the duration format is hours, meaning the activity durations are expressed in hours. But the construction projects take much longer, so the preferred duration format is days. So within the same company not all schedules are built the same way.

Pro Tip: it matters to the instructor whether the student will be sharing a database with other users. The Administrator of the program has control over certain parameters such as Earned Value, which means that all users are subject to the same conditions.

We also discussed how the turnaround projects use "pull-planning" to establish the optimal dates for each activity, the construction projects follow a more traditional Critical Path Method schedule whereby some activities have float. With pull-planning you are essentially looking at only the "late" dates in a CPM schedule; finishing early is not a goal or even desirable.

What about resources? In this case, the company does track labor and equipment (what P6 labels as "nonlabor") but does not cost-load its schedules. I often warn my clients that when discussing resources, output determines input. What type of reports and charts do you expect P6 to produce? Do you track individuals or crews? Will actual hours or costs be inputted? This particular company also plans to integrate P6 with another planning program, which affects how the schedule should be built inside P6.

The fact is, none of my private group training classes are "typical". My clients are sophisticated companies that have been planning and scheduling for years. But they might be switching over to P6 or looking for "best practices" when using P6. It is pretty common for someone with P6 experience to say to me, "P6 can also do that?" Well, when you use P6 nearly every day of the year you do tend to learn a few tricks. It also helps to be an Oracle partner with unlimited access to Oracle engineers.

While I do occasionally have people in my classes who are quite new to scheduling, I am otherwise not some university professor pouring knowledge into somewhat empty vessels. And in private group classes we have the opportunity to discuss corporate preferences as well as my own. This is where videos alone are not the best form of training. Besides not being able to ask questions, there is no collaboration between instructor and pupil. 

Ultimately, just learning how to use a software program is not enough. Anyone with P6 experience can tell you what a button does when you push it. Whether you should be pushing the button at all is harder to learn without the guidance of someone who has practical experience with the program. Any amateur can create some videos and proclaim themselves an "expert" on P6, but those of us who do this full-time are not fooled.

Our firm does offer On Demand (i.e. video) training, but we back this up with live online and in-person training sessions. In addition, we also offer private (custom) training to anyone who wants to take their knowledge of scheduling and P6 to the next level. Why sit through a regular training session when you can focus on your needs with one of the most experienced schedulers in the United States?

I have great respect for universities, having a Masters degree myself, and I studied the Critical Path Method of scheduling during my undergraduate days at Kansas State University. I learned the practical side of CPM scheduling, however, working alongside experienced schedulers. It occurred to me, for example, that no one explained how to properly update a schedule at university. Other schedulers showed me what to do.

And now I would like to pass along that knowledge to you!


The Resource I Never Use

Categories: P6 EPPM, P6 Professional, P6 Tricks, Primavera Resources
Comments Off on The Resource I Never Use

Resources add "weight" to a schedule. That is to say, resources can tell us the effort - in costs and/or hours - required to perform a task. Once resources have been added to an activity we now realize that tasks with similar durations are not so similar when the effort is considered.

Back in the early 1980s I would sometimes be asked by owner representatives to explain how many people were required each day in order to stay on schedule. I was using a proprietary scheduling program running on a mainframe computer in those days. It was a nice little program based on the Activity-on-Arrow (AOA) method of scheduling. But it was not capable of doing much with resources other than assign a cost value to each task.

In a parallel scheduling universe, however, Primavera Systems was offering the ability to budget and track both costs and units. The firm I worked threw in the towel in the face of a better product and switched over fully to Primavera in 1987. That was a good decision but at the time there were other scheduling programs to consider. Proximity might have helped. Our company's headquarters were across the Delaware River from Primavera Systems.

It might surprise schedulers who nearly always resource-load their schedules that a large percentage of companies - at least in the United States - rarely do so. The reasoning is often that it takes too much time or exposes confidential information. I know a lot of contractors do not want anyone knowing how many labor hours were figured into their projects. 

Not knowing how many labor hours are required by the project once led to an awkward exchange with an opposing attorney during my testimony in a construction dispute:

Attorney: "Mr. Pepoon, how many people would have been required to perform this task that we are looking at right now?"

Me: "Enough people to perform the task within the planned duration."

Attorney: "But how many people would that be, exactly?"

Me: "The proper number to perform the task within the allotted time."

It sounded like a bad comedy skit, but of course I could not answer a perfectly relevant question because my client did not resource-load the schedule. And the reality is that when a subcontractor is responsible for the work the general contractor usually can't verify the duration either. He simply trusts that the subcontractor knows best.

The people performing the task would presumably know how long it takes. But no one else can verify this without knowing the required effort. Then why does this still happen? Well, general contractors pass on a lot of the risk (i.e. scope of work) to subcontractors and can always "sue the bastards" if they fail to meet the schedule. Of course, owners will then sue the general contractors for not controlling their subcontractors. Nobody will be happy.

Still, there is one resource I refuse to use - material. Anyone familiar with Primavera P6 understands that there are three types of resources: labor, nonlabor, and material. Nonlabor is mostly used for equipment, but I have another use for it as well. The trouble with a material resource is that Primavera P6 only tracks costs, not units. With labor and nonlabor resources the choices are to track units, costs, or both.

From my perspective, tracking material could be very useful. If I have moved 50 cubic yards of dirt and there is a total of 100 cubic yards, then certainly one-half of the work is complete. (I should also consider how long it took to complete one-half of the work, because productivity is important as well). This is production-based scheduling, but it is simply not possible with a material resource.

Thankfully, there is a workaround. Instead of using a material resource, why not use nonlabor instead? If it's not labor it can be pretty much anything, right? So nonlabor can be plumbing fixtures, dirt, gypsum board, conduit, or anything else we want to track. I have even used a nonlabor resource to track drawings being produced by the design team.

Both labor and nonlabor resources use "units" as the nominal description. Only material resources can have other labels, but we can easily create our own definitions.

For plumbing fixtures the unit can be "each", cubic yards for dirt, square feet for gypsum board, and linear feet for conduit. Each type of material will of course require its own unique nonlabor resource. I also indicate the real unit of measure in the description, such as "Dirt (Cubic Yards)" to emphasize the point.

I also do not show the unit label for these nonlabor resources because Primavera P6 would put "hours" on all of my nonlabor resources (Edit > User Preferences > Time Units). One other thing. When printing resource charts I do not lump nonlabor resources together because they are not the same materials at all, but this would be true for equipment as well.

Ultimately, we must decide what level of detail is required when adding resources. Minor amounts of material may not warrant much scrutiny. The desired output determines the level of input required. For example, do we need to track different sizes of piping or can they be lumped together? Too much detail is often as bad as not enough detail. 


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.


Omnibus (adjective)

Comprising several items.

The most common Primavera export file is “XER” which harks back to the company that developed this enterprise scheduling software in the first place: Eagle Ray. Primavera Systems bought Eagle Ray, and then Oracle bought Primavera Systems. The very familiar “XER” file format in fact stands for “eXport Eagle Ray”.

XER files can only export project data associated with the current project, or all resources or all roles. For someone who needs to transfer all resources or roles from one database to another the XER file can be very useful, but I find this to be a rather esoteric function for the vast majority of users.

But there is another Primavera export file (XML) that can do so much more:

  1. Export all project layouts associated with the current project
  2. Export all (or some) baselines associated with the current project
  3. Import into any other version of Primavera P6

This might also encourage you to create project layouts. By default, new layouts are user-specific and can therefore be applied to any schedule to which the user has access. Project layouts are only available to the associated project (or a copy of that project) which is desirable when the layout has specific features (such as a grouping or filter) that would not be applicable to other projects. The header or footer might likewise contain wording that is specific to one project.


Primavera P6 EPPM users are more accustomed to this method of importing files because the P6 Web interface only supports XML file imports and exports. However, P6 Professional Client (sometimes referred to as P6 Optional Client) can be used to import XER files into a P6 EPPM database. Confusing, yes, but P6 EPPM databases can be accessed via a Web or desktop interface.


The following screenshots show the process for exporting P6 XML files. Keep in mind, you are not required to export any baselines and can also choose which ones to export. Likewise, you do not have to export project layouts:

Primavera Scheduling

Primavera Scheduling

Primavera SchedulingPrimavera Scheduling

 

 

 

 

 

Here is the sequence for importing P6 files. Notice that we can choose which baselines should be imported:

Primavera Scheduling

Primavera Scheduling

Primavera Scheduling

Primavera Scheduling

 

 

 

 

 

 

Pretty simple!

Hopefully you will not think of me as a hypocrite if I admit to sending XER files on a regular basis. But as a consultant I do not need to keep sending baselines to clients if they have already received those files previously. For example, if I sent my client the third update last month it is somewhat redundant to send them the fourth update this month with the third update as a baseline. I also do not need to keep sending project layouts unless I have recently created new ones.

Nevertheless, for the recipient, the XML file has everything needed to view the current schedule and make comparisons to previous versions of the schedule. I find that for my construction claims work it is a great way to transmit my entire analysis of a delay to the client. The only downside might be that XML files are not nearly as compact as the text-based XER files. Roughly speaking, XML files tend to be about ten times larger, which in some cases might exceed the maximum file size for email attachments. Not surprisingly, it also takes longer to export and import XML files.


Why Make Open-Ended Activities Critical?

Categories: Constraints, Critical Path, P6 EPPM, P6 Professional, P6 Tricks, Schedule Options
Comments Off on Why Make Open-Ended Activities Critical?

Primavera P6 Professional is obviously a very powerful scheduling program so naturally some of its features exceed the needs of the typical project. I have consulted on projects that span as little as 35 hours to as many as 50 years. Different industries have unique requirements for their schedules as well. Primavera P6 is designed to handle a wide variety of projects. Today I would like to address my reasons for using a feature in Primavera P6 that is rarely used by the typical scheduler: Make Open-Ended Activities Critical. You will find this feature under Schedule Options (Tools > Schedule > Options).

The concept of making open-ended activities critical was introduced many years ago in Primavera P3. And for the longest time I dismissed it as a quirky feature surely not applicable to me. After all, why would I promote an activity to critical status solely because it is missing a successor? That seems akin to me declaring myself the winner of a contest that no one else entered.

Some of my colleagues back in the 1980s figured it was an en easy way to identify activities that should not be critical. Okay, that seems backwards, but the idea was that if some task showed up as critical that did not seem “right” the scheduler would investigate further. But Primavera P3 had a report similar to what we call the Schedule Log in Primavera P6 that was a more definitive (and easier) way of identifying open ends in the schedule. With this in mind, making activities that are missing a successor critical did not seem like the best approach to finding open ends.

I started my scheduling career working solely on construction projects so my viewpoints towards Primavera P3 were based on a single industry. Years later, when I began consulting on a wide-variety of projects I realized another purpose for Make Open-Ended Activities Critical. For example, let’s say I am a manufacturer trying to track progress on several production lines. I would like each production line to have its own critical path, or what Primavera P6 refers to as Longest Path. But this would entail making each production line a separate schedule.

It would be a lot easier to track progress, however, if I incorporated all of the production lines into one schedule. That way I would not have to keep opening up another schedule to track progress. And P3 only allowed four schedules to be opened simultaneously. (Some of you P3 users undoubtedly remember the master and sub-project concept from P3 which was another alternative to what I am describing). But how could each production line have its own critical path without creating separate projects?

Yep. Make Open-Ended Activities Critical. See, by not linking the production lines to each other they would all have an open end at the end of their sequence. So every production line now has critical activities. The float values are not based on the longest of all the production lines. Each production line has activities with zero Total Float. Problem solved!

The concept I just described works the same in Primavera P6 as in Primavera P3. You might be thinking that each production line could have a constraint on the final activity to create zero Total Float and then link the final activity in each production line to some final milestone. Yes, that will work too, smarty pants! It also means that additional open ends do not need to be introduced into the schedule.

Another reason for Make Open-Ended Activities Critical is relevant to projects in any industry. One of my clients currently expects his project to finish early. Owners often don’t allow the original plan to show an early completion date because it might become the basis of a claim (“I planned to finish early and you stopped me”). In this situation the owner allowed early completion. So my client inserted two finish milestones in his schedule: “Projected Finish” and “Final Completion”. The latter milestone matched the contractual finish date.

The “Projected Finish” milestone had no constraint since the date could obviously slip without any ramifications. The “Final Completion” milestone had a Finish On constraint (Mandatory Finish also works) so the date could not move at all. But as you might have guessed, this meant that only the “Final Completion” activity appeared as critical in the schedule. The earlier milestone and all of the activities linked to it (directly or indirectly) carried Total Float values based on the later milestone.

A critical path consisting of just one (the last) activity) would obviously be acceptable to no one. But the solution was quite clear to me. While my client had linked the “Projected Finish” milestone to the “Final Completion” milestone (to avoid unnecessary open ends) we need the “Projected Finish” milestone to have no successor. Then, by choosing Make Open-Ended Activities Critical in the Schedule Options the Longest Path of activities leading up to “Final Completion” all had zero Total Float. Bingo.

Below is how the schedule looked with “Projected Finish” linked to “Contractual Finish”. Not having open ends means there is no logical critical path. Also, the “Projected Finish” milestone is a non-driving predecessor to the “Contractual Finish” milestone, as evidenced by the dotted relationship line:

Primavera Scheduling

By deleting the relationship between “Projected Completion” and “Final Completion” and choosing to Make Open-Ended Activities Critical under Schedule Options, the activities leading up to “Projected Completion” are now critical:

Make Open-Ended Activities Critical is not always a necessary feature, but as you can see, it certainly does have a purpose.