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

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

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

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.



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

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.





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.



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.



Calendar Issues in Primavera P6

Categories: P6 Calendars, Primavera P6
Comments Off

Most Primavera P6 users are familiar with setting up and modifying calendars. There is a potential problem, however, when specifying more than 8 hours per day for activities. P6 defaults to 8-hour work days, as we will see in a moment, and interprets anything more than 8 hours as overtime. This results in activity dates not calculating as expected. In the following example, I created a 5-day calendar with 10 hours per work day, Monday through Friday. The work day starts at 7:00 am and ends at 5:00 pm (this allows for no lunch break but my theoretical crew is a bunch of really hard workers!). I assigned this calendar to an activity with a 5-day duration. Notice what happens:

Calendar Issues in P6_1

The 5-day task finishes in 4 days. Why? Because P6 assigned an imaginary budget of 40 hours to my task based on a normal 8-hour day. By working 10 hours per day, my crew worked 40 hours in 4 days. This can be confirmed by adding a labor resource and watching what happens to the budgeted hours. While this figure can be changed later on, the initial budget will be based on 8 hours per day regardless of the calendar settings.

Now, savvy P6 users know that the hours per day can also be modified somewhere other than in the calendars. Under Admin, Admin Preferences, Time Periods, the hours per day, week, month and year can be specified. This menu is shown below:

Calendar Issues in P6_Admin Preferences

We can change the time units under Admin Preferences to show 10 hours per day. This solves the problem of P6 thinking that anything in excess of 8 hours per day is overtime, but it also changes the settings of every schedule in the database. These are Admin Preferences, and not User Preferences. Admin Preferences affect all projects.

Nevertheless, we are real close to a solution. Note that right under the time periods in the Admin Preferences there is a box with the following phrase:

“Use assigned calendar to specify the number of work hours for each time period.”

Checking this box is real important because it allows us to use the hours per day in our calendars rather than the global hours per day under Admin Preferences. But we need to make one last adjustment.

Under Enterprise, Calendars, there is an option to specify time periods. These time periods are calendar-specific. In the screenshot below we can see the time period settings for just one calendar:

Calendar Issues in P6_Time Period









By making the hours per day in the time periods for this calendar match the hours per day in the calendar itself then P6 will properly understand what is considered to be a normal work day.

Your thoughts? Please email me with any comments or questions.





P6 Baselines Explained Once and For All

Categories: Primavera P6, Primavera P6 Baselines
Comments Off

In our experience as trainers, no subject causes more confusion in Primavera P6 than baselines. Inexperienced Primavera P6 users often believe they have a baseline when in fact they have never created one, or the baseline bars just do not look right. Even something as obscure (for many users) as Earned Value affects baselines. Because this is a fairly difficult topic, we have prepared a YouTube video that shows the proper way to create baselines in Primavera P6. Enjoy!






Oracle Gold PartnerWe are pleased to announce that Primavera Scheduling’s parent company, Construction Science, is now an Oracle Gold Partner. To celebrate our upgraded partnership with Oracle we are now offering Primavera P6 software for $300 off the list price and 10% off all live online and in-person classroom Primavera P6 training programs with the purchase of software. But wait, there’s more! We are also offering volume discounts for the purchase of more than three Primavera P6 licenses. Please contact Bill Pepoon for details on these additional discounts.