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

Blog

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. 


Why vs. How

Categories: Uncategorized
Comments Off on Why vs. How

Primavera TrainingLearning how to do something is not the same as learning why something should be done. Most of us have been told at various times by a supervisor or boss to do something without any explanation. There may be some urgency in the request and for that reason alone there is not much time to explain why it needs to be done. Still, I will never forget the time I questioned a senior partner’s instructions only to be told, “because I sign your paychecks”.

Even so, when you cannot be bothered to explain assignments to your employees, those employees are not going to learn how to think for themselves. Those employees will also become bored with their jobs. Eventually they will go somewhere else where work is more meaningful. In 2018 this was especially true in the United States, where record numbers of people quit their jobs (3.4 million in April 2018 alone). 

As an instructor, I am fully aware that “why” is just as important as “how”. For example, it is one thing to explain how to set up multiple calendars in Primavera P6. Also very important is “why” this can cause issues with activity dates and float values.

Explaining “how” is fairly straightforward. “Why” takes many years of practical experience. Examples taken from real projects give depth to the explanations. Moreover, Primavera P6 is used in many industries and for that reason there is quite a lot of flexibility built into the program. Best practices for using Primavera P6 likewise vary by industry.


For example, consider the different ways to calculate Performance Percent Complete, which in turn determines Earned Value. In the construction industry we would rarely consider using any setting other than Performance Percent Complete = Activity Percent Complete.

This is in fact so common that I doubt most schedulers in the construction industry have ever bothered to consider Performance Percent Complete. However, there is actually a very good reason for showing Performance Percent Complete on a schedule. Unlike Activity Percent Complete, Performance Percent Complete rolls up, meaning we can show an overall percent complete for the project. Activity Percent Complete only displays on activities.

In the construction industry we like to take credit for every little bit of work when it comes to percent complete. If necessary, we can display up to two decimal places as well (more common when Level of Effort activities or Activity Steps are deployed). Now, I would also argue that using a schedule as a payment tool tends to interfere with the more noble purpose of scheduling; and if the schedule is not cost loaded I could not care less about the percent complete. Remaining duration is far more important!

But in other industries there are valid reasons for tracking Performance Percent Complete differently. The options are:

  • Use WBS Milestones
  • 0/100 % Complete
  • 50/50 % Complete
  • Custom % Complete

The 50/50 % Complete method means that the task is 50% complete as soon as an Actual Start date is recorded. I think of the classic movies where someone tears up a large denomination bill and hands half of it to the hired gun. When the job is completed the hired gun gets the other half. So we are not expecting him to report any further progress until he is done. There is no in-between.

The Custom % Complete method is flexible enough that I could see the benefit even in the construction industry. The typical task should be of a rather short duration – commonly 20 working days or less (with procurement tasks being the exception) or slightly less than one month. No task should therefore stay open very long. With this in mind, why not make progress reporting simple? The custom method allows users to set intervals such as 25%, 50%, 75% and 100%.

Quite frankly, if everything goes according to plan at most we would be recording the task as partially complete during the current month and 100% complete the following month. Activities should only be in progress for one month if the maximum duration is 20 working days! The owner should not be overly concerned with paying 50% vs. 25% or 75% vs. 50% this month knowing he will owe the balance the following month anyway.


Activity durations are another example. In the construction industry it is generally true (and often a contractual requirement) that the minimum duration is one day and all durations are integers (i.e. whole numbers). Even a project meeting must be assumed to last all day because of this convention – and keeping in mind that the maximum duration will still be roughly 20 working days. This means that lag durations should also be whole numbers. Personally, I think it makes everything much easier because I know that if I see a duration (including Total Float) that is not an integer, something is wrong with my schedule.

Partial durations tend to creep in during the update process, especially when the scheduler is using Duration % Complete as the percent complete method. Trying to force a particular percentage (such as 50% on an odd-duration task) often results in a remaining duration that is not an integer. For this reason I input the remaining duration when using Duration % Complete and let the percentage be whatever it has to be. On a schedule that is not cost-loaded the percentage is of little importance to me anyway.

In other industries the activity durations might be quite small. The minimum duration supported by Primavera P6 is one minute, if you were wondering. On a refinery shutdown that is costing the owner millions of dollars of revenue each day we clearly need to track progress on a more granular level. These schedules tend to be much larger in terms of the number of activities even though the project duration may seem rather short. Time costs a lot of money! 

Likewise, even the activity relationships tend to change when the durations are very short. There is simply less need to overlap tasks when durations are in minutes or a few hours at best. Finish-to-Start durations become the norm. Not having to worry about relationship types (or lags, for that matter) makes up for the size of the schedules to some extent. Nevertheless, when tracking progress it is rarely necessary to record the exact time of day that a task is performed. Done is done.


So we can see that understanding “why” is perhaps more important than “how”. As a Primavera instructor with decades of practical scheduling experience I can think of many examples and options for how to schedule using Primavera P6 and why some options within the program might be better than others depending on the industry or the situation. There is more to Primavera P6 than just menus and buttons. 

P6 Version 17 Bug and Easy Fix

Categories: Claim Digger, Primavera P6, SQLIte
Comments Off on P6 Version 17 Bug and Easy Fix

Primavera SchedulingOracle recently released Version 18 of its venerable scheduling program, Primavera P6 Professional Project Management. The latest release is only a mild upgrade from Version 17 but it does fix a problem that has bedeviled many Version 17 users: the inability to copy and paste a project that is not currently open. This error only occurs when using the standalone SQLite database. Specifically a popup message reads “Item Not Found”. If the user clicks “OK” to continue the project is copied but contains no activities.


Oracle acknowledged this bug in Document ID 2338899.1


P6 Professional Patch Set 17.12.1.0 fixes the problem. But users who are not familiar with how to apply a patch can apply a very easy fix. Simply open the project before trying to copy the project. Indeed, both the patch and Version 18 address this bug by opening the project automatically during the copy and paste operation. In effect, users can only copy and paste open projects when using the SQLite database.

Personally, I like to use the SQLite database because it requires no maintenance and can easily be moved to another computer. Moving programs from one computer to another is normally a joyless exercise but not with SQLite. And yes, the database is a program, just like Primavera P6.

I initially resisted using the SQLite database because Oracle had disabled Schedule Comparison (i.e. Claim Digger) when using this standalone database. But eventually Oracle figured out a way to make Schedule Comparison work with SQLite. For anyone who does not need to share a database with other users I highly recommend SQLite.

 

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.