Expert, flexible training in the use of the most powerful scheduling software program in the world: Primavera P6 by Oracle.
Primavera Scheduling

All posts in Primavera P6

One of the advantages of Primavera P6 and its use of a database structure is the ability for multiple users to share files. This can also be a disadvantage, however. P6 administrators can restrict users in many ways, but once a user to given permission to do something, well, the hope is that he or she does not make a total mess of things. As a professional Primavera P6 trainer it always baffles me that someone might expect to master the art of scheduling without any formal instruction. There are not too many self-taught painters to my knowledge. Carpenters, bricklayers, mechanics, etc. all go through a training or apprenticeship program to learn their skills.

When Malcolm Gladwell described “The 10,000 Hour Rule” in his best-selling novel, Outliers, he could have very well been talking about scheduling. After I had been scheduling projects full-time for about five years – or roughly 10,000 hours – I felt like I had finally mastered the art of scheduling. And keep in mind, I was working on schedules every single working day. Many Primavera users only touch their schedules once a month during the update process. As a consultant, I was working on several projects simultaneously. In a typical month I would create two baseline schedules and update ten or more schedules.

But I digress. Today I want to talk about “Carl” and his dilemma. Carl attended one of my Primavera P6 classes in Oklahoma after pulling a 12-hour shift at a refinery. So you can imagine that by the end of an 8-hour class he was pretty beat. But he stuck around after class to talk about a specific problem he was having. You see, Carl was one of about a dozen schedulers working on the same project. Refinery shutdowns are very difficult to schedule. Durations are measured in minutes, not days. A six-month shutdown might require 25,000 activities to schedule. No single person could possibly handle this workload.

One particular problem that Carl was having is that he would calculate the schedule (i.e. F9) and there would be loops in the logic. And then everyone would yell at him for fouling up the schedule. Except that Carl was pretty sure he was not the culprit. He was simply the person running the schedule at the end of the day after everyone else had been inputting changes. This was your basic “shoot the messenger” situation. Carl was taking all the blame because he did not know how to figure out who was causing the problem.

While there is no perfect solution to Carl’s dilemma I was able to show him the audit columns in Primavera P6. These columns, available in the Activities Window, provide the following information regarding an activity:

  1. Who added the activity (“Added By”)
  2. When the activity was added (“Added Date”)
  3. The last person to make a change (“Last Modified By”)
  4. The date the most recent change was made (“Last Modified Date”)

These columns can be seen in the screenshot below:

Audit Trail Columns


Activity ID E2045 was originally added on February 27, 2015 by user “admin” and then modified about a month later, on March 25, 2015. Obviously we do not know the exact nature of the modification, but we now know where to start looking.

Unfortunately, there are some limitations. Changing the relationships between activities is not considered a modification. So Carl would not be able to identify who made the logic changes that resulted in loops. Still, adding new activities is often the source of a loop in a schedule because of the corresponding new relationships.

Changing an activity duration, on the other hand, is considered to be a modification. Other examples of recognized modifications are:

  • Assigning a new resource
  • Deleting an existing resource
  • Changing a resource’s budget
  • Changing the Activity Name
  • Assigning a new calendar

Note that if you are displaying time in the date columns (Edit > User Preferences > Dates) then it is possible to track who made the last changes on a given day.

Claim Digger can of course identify changes to relationships, but can not tell you who made the changes. The audit columns are still the best alternative within P6 for identifying the source of changes.

Keep in mind that only the most recent modification date and time is stored in the audit column so there is no way to see whether more than one user has been making changes to the same activity.

Copying a schedule results in the Added Date and Last Modified Date resetting to the day the schedule was copied, so the audit columns are only useful in the original version of the schedule.

2014 was the best year ever for Primavera Scheduling and our parent company, Construction Science. But while higher revenues are always welcome it was really the range of clients and training experiences that made 2014 very special. Here are just a few of the highlights:

  • We provided Primavera P6 training to a NASA contractor working on the Orion space program. Orion is the first deep-space program initiated by NASA since Apollo. As someone who well remembers landing on the moon – I was 11 years old when it happened – the idea of going back to deep space is very exciting. No decision has been made by NASA on a destination, but Mars or an asteroid seem like distinct possibilities.
  • We provided Primavera P6 training to Disney’s Creative Costuming at Disneyland. Yes, Disney uses Primavera P6 to schedule the making of costumes for all of their major theme-park characters. We spent one day at Disney University (!) teaching class and another day teaching at the actual location where the costumes are made. The effort that goes into making these costumes is quite extraordinary.
  • We provided Primavera P6 training to the U.S. Navy’s Space and Naval Warfare Systems Command (SPAWAR) in San Diego. One of the interesting tidbits that came out of this training is that the Admiral of the Navy does not like red bars on the Gantt charts. He apparently believes that “red” means the project is behind schedule. And you definitely do not want to make the guy in charge of the Navy’s weaponry mad. So we showed the SPAWAR team how to make the critical path bars another color.
  • We provided Primavera P6 training to a general contractor in Chicago who is renovating Wrigley Field. This $575M project represents the most extensive renovations ever made to Wrigley Field, one of America’s oldest ballparks.  This will be an incredibly difficult project due to the historic status of Wrigley Field – even the ivy that covers the outfield walls is a protected landmark. ESPN has posted some great high-resolution photos of what the renovated ballpark will look like.
  • I was selected by Lorman Seminars to be a presenter and moderator of its “Tricks, Traps and Ploys Used in Construction Scheduling” seminar in Sacramento, CA. After 31 years as a professional scheduler it was fun to talk about all the sneaky stuff that is sometimes part of CPM scheduling. An audio recording of the seminar and the training manual can be obtained at a 50% discount by using this link.
  • Our Primavera software sales nearly doubled compared to 2013. We have always offered very competitive pricing but we firmly believe that our personal attention to clients is really the deciding factor. With the various versions of Primavera software that are available (Contractor, P6 Professional and P6 EPPM) we try very hard to steer our clients to the right product for their needs.

On a more personal note, the partners in our firm attended Game 4 of the 2014 World Series in San Francisco. What an amazing experience! Attending a World Series game is, in my opinion, a “bucket-list” item. Winning the World Series? Priceless! Actually, this was a very special World Series for me as my first baseball love was the Kansas City Royals and now I root for the San Francisco Giants. Given how I feel about both teams maybe this should count as two bucket-list items!

To all of our clients we send our heartfelt thanks and gratitude. And we wish all of you a great 2015.


What is a “Planned” Date in P6?

Categories: Constraints, P6 EPPM, P6 Professional, Primavera P6, Schedule Options
Comments Off on What is a “Planned” Date in P6?

Primavera P6 has quite a few date fields that are often misunderstood. Perhaps no date field is stranger than the “planned” date. To begin with, there will always be a Planned Start and a Planned Finish date associated with every activity. In a schedule with no progress (or what we would traditionally call the “baseline” if P6 did not use this designation for target schedules) the following is always true:

  • Planned Start = Start
  • Planned Finish = Finish

Once progress is recorded, however, all bets are off. The planned dates will not reflect actual dates, for example. Primavera P6 shows actual dates in the Start and Finish columns, making it easy to see which activities have progress (take that, Microsoft Project!) without having to add the Actual Start and Actual Finish columns. Space is always at a premium in a printout so not having to add the actual columns is a nice benefit.

Here is where it gets interesting. Changing the Planned Start or Planned Finish date on an activity with no progress will change the Start and Finish dates and likewise move the bar in the Gantt Chart. The rules are:

  • Changing the Planned Start changes the Start date, even if the Planned Start is before the original Start date
  • Changing the Planned Finish moves the Finish date and changes the Original Duration to match
  • Changing the Planned Start and Planned Finish will move the Start and Finish dates accordingly
  • No other activities are affected by changes to the Planned dates of an activity

None of this will happen, however, if the “Schedule automatically when a change affects date” scheduling option is selected. This is because scheduling the project wipes out the changes made to the Planned dates. These are not constraints, after all. The logic was never modified. Which may seem like Planned dates are a cruel trick.

Well, we create logic for a reason. Moving bars around is not scheduling. Logic is supposed to drive dates. A few constraints are okay – although some owners are adamant about having none – as long as they do not cause an interruption to the critical path. Postponing the start of a critical activity would obviously make no sense.

Note that if you change the Planned Start or Planned Finish of an activity with progress, nothing happens at all. The Planned dates will not change.

Changing the Planned dates, really, is mostly a bad idea. But let’s say we all agree that some of the dates in a schedule are not right. So we massage the dates using the Planned columns and then create a baseline. Using the baseline as a guide, we then modify the logic and durations to achieve the new dates. Sort of like tracing a drawing with velum paper.

Comments or questions? Please feel free to contact me.

Primavera P6 R8.4 Database Options

Categories: Claim Digger, P6 EPPM, P6 Professional, P6 Web, Primavera P6
Comments Off on Primavera P6 R8.4 Database Options

Coal miner at work with pick axIn a recent blog for Construction Science I discussed some of the new features of Release 8.4 for Primavera P6 Professional and EPPM. Today I would like to discuss the database options for a standalone installation of P6 Professional. Oracle 10g Express (Oracle XE) has been included with P6 for several years. Users could also choose from one of several versions of Microsoft’s SQL Server, but most opted for SQL Server 2005 Express Edition because it is a free program. Both of these options are still available. But Release 8.4 introduces another option, SQLite. The advantage of SQLite is that it does not have the size limitation of Oracle XE (4 GB) and is easier to manage than Oracle XE or Microsoft SQL. Backing up a database is now as easy as copying a file folder because SQLite is a serverless database engine. For users who have struggled with Oracle XE or Microsoft SQL Server, SQLite seems like a great option.

Ah, but there is a trade-off for simplicity! Oracle’s Application Programming Interfaces (APIs) are not compatible with SQLite. This is something Oracle intends to fix in a future P6 release or patch. APIs are the building blocks of many software programs, and while it is not something most of us would ever realize, Oracle’s Claim Digger is an API. So Claim Digger is not accessible when using SQLite. For me, that is a deal-breaker. I use Claim Digger nearly every day to analyze files. In some situations my clients have more than one version of a baseline schedule or update on their server and they no longer remember why. If some of these files are in fact identical we can delete them without any concern. At the very least, Claim Digger will tell us what the differences are. Most owners also expect contractors to explain what changes were made during the update process, and the Claim Digger report usually suffices.

Claim Digger does have some limitations, which I will discuss in a future blog, and there are third-party programs that are more powerful. However, Claim Digger is included with P6 so it is a tool that all users have access to without spending more money. I will accept free help anytime!

Also, because SQLite is truly a single-user environment, there are several other restrictions:

  • There are no User or Security Profiles, as there can only be one user
  • All projects are opened in Shared mode; Read Only and Exclusive modes are disabled
  • Sending e-mail notifications of Project Issues is not supported
  • Advanced import options are disabled for projects in XML format
  • Check In and Check Out of projects are disabled
  • There are no options to save data for All Users or Another User (layouts, etc.)
  • Job Services is not supported; Jobs cannot be scheduled
  • Update Baseline and Risk Analysis are not supported

Export Resources without Cost Data

Categories: Primavera P6, Primavera Resources
Comments Off on Export Resources without Cost Data

The purpose of exporting Primavera P6 files in “XER” format is to transmit all of the project data to another database. In many cases we are not looking to exclude any data. So how do we avoid sharing sensitive cost data with other parties? Contractors may not want owners, subcontractors and other parties to have access to this proprietary information.

There are two options for not sharing cost data. One option is to delete resource assignments altogether. We do this by copying the schedule inside Primavera P6 and un-checking the “Resource & Role Assignments box, as seen below:

Export Project without Resource Costs_1







While this option works perfectly well, the recipient will see no resources or roles in the schedule. What if we want the recipient of this file to be able to see the resource units but not the unit prices? This requires a different approach. Option 2 involves creating a new user and associated user profile who is not allowed to view cost data. When this user exports the file the resource rates will disappear but the resource assignments and units will remain intact.

First, we create a new user and label that person in such a way that we remember why this user was created in the first place. Go to Admin → Users. Below, I have added a new user with the name “Export User”:

Export Project without Resource Costs_2








Note that I have given this new user access to every project in my database by assigning this user to the highest level in the Organization Breakdown Structure (OBS). This is not absolutely necessary but it does make it easier to export any project without cost data.

Second, we need to assign the new user a Project Profile that excludes the ability to “View Project Costs/Financials”. Go to Admin → Security Profiles and select Project Profiles. In the screenshot below I have added a new Project Profile, “No Costs Exported”:

Export Project without Resource Costs_3








Also, I gave this new user no ability to modify schedules because the only purpose of this user is to export projects sans cost data. As soon as the project has been exported I will log back in using my normal user name.

Now we are ready to export a project with cost data. Keep in mind that you will need to log in as the new user first!

Questions or comments? Please feel free to contact me.


Exporting Groups of Projects

Categories: P6 Professional, Primavera P6
Comments Off on Exporting Groups of Projects

Backing up a Primavera P6 database is the best option for moving the entire set of project data – schedules, resources, calendars, layouts, etc. – to another computer. But if the only goal is to move a group of projects from one database to another, there is an easy way to do this very quickly.

We all know that a project must be open in order to be exported. So the first step is to simultaneously open all of the projects that need to be exported. Caveat: you cannot open more than 100,000 activities concurrently in P6 Professional but there is otherwise no limit to how many projects can be opened at the same time. For this reason I recommend exporting groups of projects based on either a Project Portfolio or EPS node.

In the first screenshot I have selected a group of projects based on their EPS Node. I can either highlight projects individually using Shift or Ctrl on the keyboard, or simply highlight the EPS Node itself:

Exporting Multiple Projects_1






Now that the projects are open I can then start the normal export process, as seen in the next two screenshots. The only difference is that I am selecting a common name for all of the projects. I typically name the file after the Project Portfolio or EPS Node to avoid confusing a group of projects with a single project. In this example I have called the common file, “Manufacturing Projects”:

Exporting Multiple Projects_3Exporting Multiple Projects_2









When importing the group of projects I still have the option of importing some or all of the projects. Note that because I am importing back into the same database Primavera P6 is warning me that matches across the board were found.

Exporting Multiple Projects_4








That is all it takes to move a group of projects from one database to another. When I am working on construction claims this is a great way to send the attorneys all of the project files. The size of the common file will of course be larger than normal but XER files are text-based and generally never get too large to email as an attachment.

If you have any comments or questions please feel free to contact me.



Import Primavera P6 Filters with Layouts

Categories: Primavera filters, Primavera layouts, Primavera P6
Comments Off on Import Primavera P6 Filters with Layouts

Most Primavera P6 users know how to share a layout with someone in a different database. But did you know that filters can also be shared? To recap, we select View → Open Layout → Export to transport a Primavera Layout File (PLF) from the database. The other user then selects View → Open Layout → Import to bring the PLF file into their database. While there is no such export/import feature for filters, they can be attached to any layout and therefore transferred to another database.

The trick to exporting filters with layouts is to copy an existing filter as a Layout Filter. In the screenshot below I have selected the existing User Defined filter, “Activities with Steps”. To create a Layout Filter, select “Copy As Layout” from the right-hand side of the filters menu:

Export Filters with Layouts_Step 1

In the next screenshot we see the result of this operation. The “Activities with Steps” filter appears under a new group, “Layout Filters”. All filters copied to this group will be exported with any layout you choose to export. Because of this, you might want to keep the number of Layout Filters to a minimum, or delete those that should no longer be exported.

Export Filters with Layouts_Step 2

One other thing. The above layouts are project layouts. The Enterprise Project Structure (EPS) has its own set of layouts. When the other user receives the Primavera Layout File it is important that they open a project – any project – and import the layout in the Activities window. EPS layouts are not compatible with project layouts despite having the same PLF format. However, EPS filters can likewise be exported with EPS layouts.


Using a Filter to Find Missing Logic

Categories: logic, Primavera P6
Comments Off on Using a Filter to Find Missing Logic

One of our training clients recently asked us to create a rather unusual filter showing “open ends”, or activities that are missing predecessors and/or successors. While this information can be gleamed from the Schedule Log (Tools > Schedule) this report does not graphically represent these activities. A filter will of course allow us to show these activities on the Gantt Chart, so that we know when and where these activities occur in the schedule.

In the screen capture below I have created a simple filter to display activities with open ends. Notice that I have two lines in my filter and that I have selected “(Any of the following)” when combing the two specified parameters. The first row asks P6 to list activities where the predecessor value is blank. You might know that we can display predecessors as a column in the Activity Table, and if there are no predecessors for an activity then this cell would be empty.

In the second row I have added the same statement for the successor value. The only thing left to do is make sure P6 understands that I want activities that are missing predecessors or successors. In other words, if the first row or the second row statement is true, give me those results. To do this, I selected “(Any of the following)” filter parameters:


Filter for Open Ends







As you can see, setting up the filter is pretty simple. Leaving the value blank does not work in many situations, but for predecessors and successors this approach is fine.





Weird Negative Float Situations – Part 1

Categories: Level of Effort, Primavera P6, Schedule Options
Comments Off on Weird Negative Float Situations – Part 1

Most of us understand that negative float is generated by a constraint that is not being “satisfied” and indeed, we cannot have negative float without a constraint. Or so it would seem. But during a recent training session at the Kennedy Space Center my client showed me several Level of Effort activities that had negative float. In fact, all of the Level of Efforts had negative float yet no other activity showed any negative float whatsoever. Imagine that; the activities linked to the Level of Efforts have positive float but the Level of Efforts have negative float!

In the first figure I am showing a typical setup with a Level of Effort activity linked to one predecessor and one successor. The Activity Type is shown in the Activity Table to make it easier to see which activity is the Level of Effort:

LOE Before Progress


Okay, so far nothing is amiss. The Level of Effort is linked to activities on the critical path and therefore shares the same zero (0) float. But watch what happens when the predecessor to the Level of Effort is updated with progress:

LOE After Progress

The Level of Effort activity – and only the Level of Effort – has negative float! Keep in mind that no constraints are being used in this schedule. And while all of the Task Dependent activities are on the critical path I can assure you this has nothing to do with the negative float on the Level of Effort activity.

So how is this possible?

The answer has to do with the ability in Primavera P6 to calculate float three (3) different ways. These settings appear under Schedule Options:

Float Calculation Settings

I typically calculate float as the difference between the Late Finish and the Early Finish dates. But my client had selected Late Start – Early Start. (The third option is to take the smallest value of the two calculations). Choosing any setting other than Late Finish – Early Finish will generate negative float once the predecessor to the Level of Effort has started. Moreover, astute viewers will notice that the negative float matches the number of days that have elapsed since the predecessor started. The predecessor started five work days before the Data Date and the float is -5 work days.

Why this is happening is a little hard to explain, but Primavera P6 calculates float for both the start and finish of every task. Normally this results in the same value. Level of Effort activities, however, are another matter. Primavera P6 calculates the float on this type of activity as the difference between the Actual Start Date and the Data Date and perceives the activity as being “late” because the Data Date is later than the Actual Start Date.

Thankfully this weird float issue can be easily avoided by using Late Finish – Early Finish for the float calculations. And while this has always been my personal preference I have a whole new appreciation of this setting now.



The Significance of the “Default” Project in P6

Categories: Default Project, Primavera P6, Schedule Options
Comments Off on The Significance of the “Default” Project in P6

You might have noticed that Primavera P6 has something called “Set Project Default” under the Project menu. This is a very important consideration when multiple projects are open. To review, more than one project can be opened at the same time by highlighting them together and then right-clicking or using the keyboard shortcut Ctrl+O, as seen below:

P6 Professional_Opening Multiple Projects


There are several reason why we might want to open more than one project at a time. For example, we might be checking the logic on similar projects for consistency. Or we might be updating several projects on the same day and having them open together simply makes it easier to go back and forth. Activities in different projects can also be linked together by opening them together and adding relationships.


Next, we need to open the Project menu and select Set Default Project:

P6 Professional_Opening the Set Default Project Menu


Then we select which of the open projects should be the default:

P6 Professional_Selecting the Default Project


Setting a default project accomplishes several things:

  1. Whenever this group of projects is opened in the future, the default project remains the same
  2. New activities added to this group of projects will automatically be assigned to the default project (unless grouped by WBS)
  3. Schedule Options for all open projects are determined by the default project

As an experiment, try grouping multiple projects in the Activities window by Project. If you try to add an activity to any project other than the default project the activity will still land under the default project. This could be problematic of course so it is good to know that grouping by WBS allows you to insert a new activity into any of the open projects.

Schedule Options is the most critical consideration. Casual P6 users often fail to consider that the Schedule Options for a project are unique. That is to say, Schedule Options do not apply to all projects. In the following screenshot we can see these options:

P6 Professional_Schedule Options


One of the open projects may have critical activities defined as the Longest Path while another uses Total Float to define critical. Regardless of the individual project settings only the default project’s settings will apply when the projects are scheduled together. And this brings us to the most important reason for setting a default project. As a scheduling manager you might be worried that not all of your schedulers are using the proper settings for calculating their schedules. For example, I have never used Progress Override because it distorts the logic (more on this in another post). The scheduling manager can open all the projects at the same time and schedule them knowing that all projects will be calculated in the same fashion.

Now, you may be wondering about the data dates of the open projects. What happens when they are not the same date? As soon as you try to schedule the open projects you will see this message:

P6 Professional_Data Date for Multiple Projects


In P6 Web (a component of P6 EPPM) it is possible to force all open projects to calculate to the same data date. But in P6 Professional this is not possible, and is often not desirable. But the ability to make sure than all open projects are being scheduled in a consistent manner is the key. The scheduling manager only needs to check the settings for the default project and can ignore what might have been done on the individual projects. Using the wrong settings, or not fully understanding what settings were used, is a common mistake that can be easily avoided with a default project.