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

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.

Giving Notice for Delays

Categories: Critical Path
Comments Off on Giving Notice for Delays

Primavera Scheduling

There’s a book on the shelf in my home office that I love to pull down every few months because it contains such great advice for construction projects. The title of the book, Sweet on Construction Law, might seem a little quirky until you realize that the author’s name is Justin Sweet. The book was first published in 1997, which is when I bought my copy. Mr. Sweet joined the Berkeley Law faculty in 1958 and taught there until the early 1990s. Interestingly, his bio on the Berkeley Law website fails to mention this book. What a shame. If you can find a copy you owe yourself to read this book.

And how can you not like a law professor who despises most footnotes and considers legal writing…”turgid, ponderous, and plain old ‘dull'”? Most of us never pick up another textbook after university, but this book reads more like a non-fiction novel. It strives to engage the reader, not pontificate.

One particular gem in this book is his interpretation of notice provisions. Mr. Sweet tells a story of how the California Department of Transportation (CALTRANS) wanted to overturn a California Supreme Court decision that basically invalidated all notice provisions. I presume this was in the 1960s as Mr. Sweet describes his involvement as being “over thirty years ago” when he wrote this book.

CALTRANS  approached Mr. Sweet because he had written a journal article criticizing the court’s decision. At this point you might be thinking – if you are a contractor – that Mr. Sweet is the devil himself. I have yet to meet a contractor who doesn’t loath notice provisions. But hang on to your pitch forks for just a moment.

Mr. Sweet was intrigued by the language of a proposed bill that would allow notice provisions as long as they were reasonable. The bill was being carried by an assemblyman on behalf of CALTRANS. But because CALTRANS was not well-liked by the legislature, the assemblyman disguised the bill as being his initiative. Mr. Sweet was asked by CALTRANS to testify in support of the bill, which he did. It passed and is now part of the Public Contract Code.

In most situations the courts have little interest in deciding was is reasonable within a contractual relationship. Two parties can agree to almost anything as long as it is not illegal. During my 40 years in the construction industry I have been perplexed as to why some of my clients signed “those” contracts. Were they naive, or perhaps cunning? Is it possible the contractor sees something in that contract he can exploit to his advantage?

Nevertheless, Mr. Sweet recognized that sometimes one party has the upper hand. Using CALTRANS as an example, if a highway or bridge contractor wants to perform work in California he doesn’t have much choice but to accept contractual language dictated by CALTRANS. Therefore, as long as all construction contracts (public and private) contain reasonable notice provisions, everyone is being treated fairly.

Let us focus on just time extensions. A contractor should be entitled to a time extension when the delay is obvious to the owner. I have negotiated many time extensions with nothing more than a handshake. Delay fragnet? Time Impact Analysis? Forensic Analysis? Nope, nope, and nope. Now, clearly the CPM schedule plays a part because it identifies critical versus non-critical work for all parties to see. If we all agree that an excusable delay is holding up a critical activity what revelation do we expect from a computer?

A few years ago I testified on behalf of a contractor suing CALTRANS. The “expert” retained by CALTRANS (actually, just one of their field engineers) argued that since CALTRANS never reviewed the CPM Schedules they could choose which activities were on the critical path. Not surprisingly, none of the critical activities that I identified as having been delayed by CALTRANS were on the mythical critical path imagined by CALTRANS. The Dispute Resolution Board – which included a former CALTRANS employee – ruled entirely in our favor. It was the dumbest response to a lawsuit I have ever seen.

Okay, there was one other situation, in Albany, NY. My client had remodeled a high school. Remodeling projects are notorious for hidden conditions and this was no exception. I prepared an appropriate delay analysis. The school district went cheap and demanded that the architect be their expert on all matters. The architect was still owed a lot of money by the school district and perhaps for this reason showed about as much interest in my analysis as a teenager. During my testimony he mostly stared at his hands and never asked a single question. My client won big.

Returning to notice provisions, nearly all contracts I have reviewed during my career include a time limit for giving notice – typically less than three days after the event. But a twist on the typical notice provision that I reviewed recently states that the contractor can only request time for the days that follow the date of notification. Seems pretty stingy to me to deny a contractor the first few days of a legitimate delay unless there is some action the owner could have taken the rectify the delay immediately.

What about an ongoing delay? Should the contractor continue to give notice each and every day? Possibly, depending on the specific contract language. In any case, when Mr. Sweet wrote his book email was not a primary means of communication. The consulting firm I worked for had one email account in 1997 for the entire office. Hard for anyone under the age of 50 to imagine that. But clearly with email it becomes pretty simple to keep firing off delay notices.

Mr. Sweet proposed in his book that contracts for small projects (under $500,000) dispense with notice provisions altogether. In his opinion all the various notices a contractor is required to provide per the contract become rather onerous on small projects. And small contractors are not as adept at navigating all the pitfalls of the typical construction contract. Makes sense to me. Consider that CALTRANS has more stringent scheduling specifications for large projects than small projects.

Regardless, Mr. Sweet noted that courts are still inclined to accept claims for time extensions even when the notice provisions are not strictly adhered to as long as the delay was obvious to the owner. Oral communications are often acceptable if they are followed up in wofriting. Again, email makes it much easier to say “I told you so.” Moreover, if the contractor is required to submit daily reports to the owner, and the daily reports mention delays, then surely the owner has been notified.

I have heard the argument that strict compliance with notice provisions by the contractor can be a bad thing. The reasoning is that the contractor is acknowledging his responsibility to give timely notice, so the first time he fails to do so he is acutely aware of his mistake. I like this approach given how hard it is to always be in compliance on any project. Minor infractions should not result in a legitimate time extension being denied. Contractors are hardly the only ones who are imperfect. Change orders are often corrections to the contract documents.

At the same time, I dislike seeing “TBD” listed on change orders next to the requested time. How is the owner supposed to interpret an unspecified request? Will the contractor make a subsequent request not just for time but also for time-related damages? The owner might also decide to forgo extra work if it will delay the project. Conversely, the contractor needs to know whether the project end date will be extended to avoid unnecessary acceleration costs. “To Be Determined” leaves everyone in the lurch.

Thoughts? Fee free to email me.

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.