Articles in Category: Primavera P6

P6 Caching - Not Ready for Prime Time

We have been using P6 v18.x with several clients and have seen some differing behavior related to caching. It appears the problem may have started as early as P6 v16.x. These clients are in varying environments; P6 Oracle SaaS, EAI Hosted, and on-premise - In short, anywhere where Oracle Cloud Connect is utilized.

We were excited to see the new form of caching that appeared in v17.x. We have clients with poor internet access and P6Web is not adequate for their needs - they need P6 Client. Everyone knows that P6 Client is very chatty and needs good bandwidth to work properly, so the idea that we can cache data and do heavy lifting on our desktop rather than on the server far away was great.

P6 caching works by copying data from the main P6 database to a SQLite database that is installed on the local machine - it is essentially a filtered replication process.

Unfortunately, we have seen several different problems:

1. Data getting lost - this was related to User Defined Field (UDF) data on the project level seeming to disappear. The user would go in and add data to the UDF. Once the user logged out the data would clear out of the UDF and not be there when the user logged in again.

2. Data appears for one user and not another, despite refreshing (F5) and/or hard refreshing (Shift F5):

1. We first saw this with our CAPPS tools that submit updates through the Primavera Webservices; it would show up fine for one user, but not for another. When we investigated, we found that the user who saw the data properly was connected using the normal client-server connection while the user connected with Cloud Connect couldn't see the updates. Once the Cloud Connect cache service was turned off, the CAPPS tools submissions appeared as they should.

2. Another issue with one of our clients was with filters. One user would be able to see all values displayed in the filter and another user would see all the field criteria, but no data values in the criteria.

3. Calendars not taking updates - when changing some calendar exceptions, the schedule was not recognizing the changes. A client user added a new project calendar that was copied from an existing calendar. Changes would be made and saved, but when the user scheduled the project and went back into the new project calendar, the calendar had reverted to the copied calendar values. When the user logged out and back in, the calendar would update and show the proper values.

4. P6 caching can chew up local hard drive space and memory every time you connect to a different database alias or if you have large numbers of baselines on the project because it downloads all global data and baselines of open projects to the local machine. In some cases, the workstation would run out of memory or hard drive space, causing P6 to lock up and crash.

So for clients who work in a multi-user environment, or who have large projects with many baseline projects, we have decided to try to uncheck the caching except in the very extreme occasions where the P6 user has very poor internet. We will see how this goes.

If you find that you are having the same issues and want to turn off caching for the time being, you can do the following: Click on Database. Select Database. Click Configure... Button. Click Next. Un-check the box next to “Enable Client-side Cache”. Click Next. Click Finish. Log in as usual.

Are You Importing Unwanted RISK TYPES?

Remember our good old friend the POBS Table? Well, we have a new friend in town that is introducing itself to our database in the form of the RISKTYPE table. We have discovered numerous clients are importing XER files to their database that include a large number of Risk Categories, sometimes tens of thousands of them. No one knows where they originated, but they are multiplying and wreaking havoc.

The problem comes when an export file is created with unwanted Risk Types and imported into another database, creating more values in the destination database. The destination database then could share their large number of Risk Types to another database. Each time, the RISKTYPE table is passed along, it grows, spreading and infecting more and more databases.

But is this really a big deal? Yes, it is! There are typically two issues with the Risk Categories: 1. 1. The table contains circular references which cause P6 to crash 2. Gibberish characters appear in huge numbers of Risk Categories and the client has no idea where they came from. The cause of the circular reference, according to the Primavera Knowledge base, occurs when a parent risk_type_id in the RISKTYPE table references a parent_risk_type_id of child Risk_type_id causing a circular reference to itself. When Risk Categories are created each risk category can have an associated child risk (parent/child hierarchy). For Example:

In the database, in the RISKTYPE table, each record has a risk_type_id and parent_risk_type_id where the risk_type_id is a primary key and the parent_risk_type_id is the risk_type_id of the immediate parent. If the parent risk_type_id references a parent_risk_type_id of it's child risk_type_id then this will cause a circular reference to itself and an error will result.

The second issue is caused by an invalid special character (boxes, diamonds and other non-standard characters in the expected language) in the RISKTYPE table. This was the case with our client, who had unknowingly imported many of these characters into their database.

This error is a lot like the POBS issue from a few years ago - an XER may contain tens of thousands of these records. This slows import performance and spreads the gibberish characters to everyone who imports the XER. Oracle has acknowledged that corrupt data can be imported from XER files received from external sources, and over time, this corrupt data can cause performance issues with both export and import of XER files. The creation of a RISKTYPE removal utility is being considered for a future release.

In the meantime, there are several workarounds available for the problem.

  1. Delete the invalid data from both the source and destination databases. Re-export the XER file from the now clean database and use the updated XER to import into the destination database. Many clients call this “scrubbing an XER”.
  2. Request an XML file and skip the risk categories during the import. Note that the XML files are much larger than the equivalent XER files and take much longer to import, so if you are transferring data on a regular basis, XML is probably not a realistic option.
  3. Remove the RISKTYPE data from the XER file with a text editor and resave. This is time consuming when there are thousands of records. Also, the risk to doing this is information other than the RISKTYPE could be inadvertently removed, thus corrupting the XER, in which case, Oracle will not provide support. Our recommendation is DO NOT DO THIS.

All of these workarounds involve either time or risk and may not be practical.

Emerald has created a better solution in the form of a utility called the *XER Cleaner* that will easily and safely remove the RISKTYPE data from the XER, as well as the POBS records. The XER Cleaner is very easy to use. Simply launch the XER cleaner, browse to the XER you want to clean and click Run. The XER will be scrubbed of all POBS and RISKTYPE records and the clean file is saved in the same directory with the original file name appended with “-clean”. We have removed over 80,000 RISKTYPE records from an XER file in some cases. The best part about this utility is that it is free to our clients and the whole P6 community. No warranty is expressed or implied.

Contact us for your free copy. If you like this tool, check out our other P6 add ons.

P6-Scrubber - Keep Your P6 Clean!

Are you importing schedules into scrubbing databases, taking out all the unwanted data you don't want to pollute your production database, re-exporting the schedule and then importing it into the database where it should have gone in the first place?

Do you have required specifications your contractors need to follow for their schedules, but have a hard time knowing whether those details are missing or incorrect until you've already imported them?

Do you want to ensure you are not importing POBS tables and corrupted RISKTYPE tables?

That's a lot of quality assurance to do! Maintaining your corporate data standards for dashboarding and reporting can be a full time job, especially when project teams have their own coding structures and requirements for their P6 Environment.

Don't worry; there's relief. Emerald has developed a new tool that will do all that work for you! We are now introducing the* P6-Scrubber.*

The P6-Scrubber is a configurable tool that resides outside your P6 environment, so you can run your XER files through it to vet them for your specific criteria prior to importing it to your P6 database. You can decide whether you want to keep or remove data at the global, project, and activity levels. We provide a clean import file once the P6-Scrubber is finished, as well as a convenient report of the data that was analyzed. You can give feedback to your contractors about their schedules in minutes before you import their file into P6.

Once the scrubbed file is imported to P6, the P6-Scrubber also flags projects and activities with the results it has found. We also put the results report in a notebook, so you can see the analysis P6-Scrubber did without opening a separate report.

Using the new P6-Scrubber tool will save your team loads of time and help keep your P6 environment clean!

ZOHO-P6 Integration

When a new client request comes in, you can create a project from ZOHO CRM. For us projects come in several categories and we have task list templates ready to be used to create tasks to charge to. Typically the first task list is Business Development. We kick off with that and assign the team working on the initiative. We can then send the project, the task list, the tasks and the resources into P6. We can do that in one step or two depending on the task list development. In this case we have a good idea of the scope of work and were able to put it together with 2 task lists. So we can integrate bot the project and the WBS/tasks and resources right away. So we use a really simple user interface tight in ZOHO projects to kick this off into P6. We tell the integration to send both the project and WBS over. Once that is done, we can go into P6 and start actionining the work. We also get a message letting us know if there were any issues with the intgration, such as a duplicate project exisiting. If all is good, you should get a PASS message both for the project and for the WBS.

Large XER Files do not play well with P6 Import and Export

Are you finding when you are importing or exporting a large number of projects that not all the projects are coming across when they are imported?

While converting a client from P6 V8.3 to V15.2, we found the data was not always transferred completely when we migrated large numbers of projects. Instead, with XER file sizes larger than 100,000 KB not all projects were exported and/or imported. We confirmed this recently on a subsequent project with a different client where we were migrating projects from P6 V7.3 to V17.12 and encountered the same issue.

In the first case, we exported the projects using an XER. Our file was over 300,000 KB. We found 4-5 projects were not exported. When we imported the same file, there were 2-3 additional projects that were not imported to the new database.

We looked at additional files for the same client and found that in XER files with a size larger than approximately 100,000 KB there were several projects in each XER missing when the file was imported.

Once we reduced the number of projects in the exported XER files to keep the file size under 100,000 KB, we found no projects were lost and our data was accurate.

Keep an eye on XER files larger than 100,000 KB when importing and exporting, they may not have complete data in them once they are imported.

Are Resource Codes Helpful In a Turnaround Schedule? Yes!

Using Resource Codes has been very helpful on many Turnarounds. Often on a Turnaround (or any large project) you need to report resource availability and requirements in your schedule by Craft (trade) and Company.

But that is often not the way the resource dictionary hierarchy is set up? And you likely are not able to do anything about that since the Administrator probably controls that.

Resource Codes

An easy solution to the reporting requirement is using resource codes. This gets you the best of both worlds. The corporate structure remains intact, but the plant or the turnaround team can still introduce coding they need.

In your resource dictionary, your current project resources may look something like this;

The resource hierarchy does not reflect craft/company (other than as a subset of elements) specifically, but that is fine; it does not have to.

You can easily create layouts or reports capable of rolling up the resources by craft/company by simply assigning (and using) a couple of resource codes; one code for craft, one for company.

With the applicable codes assigned to the resources used in our projects, we can view the resource profile rolled up by craft, then company. In our case we will just look at a small file sample, but multiple project resource profiles can be rolled up in a similar manner. Assigning resource codes allows use of these codes not only in the resource profile, but the resource assignments screen, tabular reports, and tracking layouts. We will have a look at the resource profile below.

From the left display bar in the resource profile window click Group and Sort By, then Customize (above).

In the Group and Sort dialogue box, the CRAFT then Company codes have been entered in the Group By section (above).

The High Level Roll Up for Pipefitters in our small example combines the Pipefitter availability and requirement in the schedule.

To view the details one level down click the ‘+’ beside Pipefitter (above).

The resource roll up expands one level, you can now view the company level for Pipefitter also.

We only have one resource for pipefitters under Triple “S” so of course the requirement/availability profile will be the same at the Company or individual resource level in this example (below).

The EDM Site Services Pipefitter resource profile is below. (Keep in mind that the Pipefitter craft profile viewed earlier is the Triple “S” and EDM Site Services pipefitter profiles combined.)

A second example is the Pneumatic Technician craft resource profile (below).

As with the Pipefitter example, clicking to expand the Pneumatic Technician Craft (above) allows the ‘drill down’ to the two specific companies and resources that make up the Pneumatic Technician Craft roll up (below).

Stacked Histograms -

Don’t forget, resource codes can also be used in Stacked Histograms – a couple of simple examples

Use resource codes to help you quickly and create layouts and reports to expedite monitoring and reporting.

Using the Craft and Company resource codes allows roll up not only within one schedule but across multiple schedules retaining the drill down functionality to focus on increased detail when required.

Exactly Which Projects Are Using Each Global or EPS Activity Code?

In P6, identifying which projects are using each Activity Code in a quick, consolidated, easy to use manner is challenging. Especially when you consider some clients have a LOT of baselines.

But is this is r-e-a-l-l-y information we need to be able to capture? In my experience, there are a number of scenarios where that answer is a resounding “Yes”! One common example – the Activity Codes Dictionary needs to be cleaned up.

In P6 Client (above) we can view Global Activity Codes. (There is no direct access from these dialogue boxes to a consolidated list of the Global or EPS Activity Codes, and each of the specific projects that are using them.)

The display in P6 Web is very similar – you have access to a list of the Global Activity Codes (above), along with some code and value specific information, but no quick, direct access to a list of each of the projects using each of the Global Activity Codes. (The same type of display is available for the EPS Codes.) Notice that you do have access to a Download function at the bottom of the Activity Code list however, that function downloads only the Activity Code list and the code information you see on the screen.

Above is an example of the previously shown screen information in spreadsheet format via the Download functionality from the P6 Web Screen.

How can the P6-Loader help this situation?

Login to P6-Loader and Extract. We have Usage Module with usage sheets in there. Choose the areas you want to explore, 

You can run these on all the projects in the EPS you have access to, or you can select one node or a handful of projects.

Click to select the project(s) or EPS level(s) you wish to run the information for; then click Submit either at the top or bottom of the screen (above). You can run this report for as few or as many projects as you require. Click the EPS node if you want the report run for all the projects in the EPS node, the projects will be automatically selected.

When the report is complete – click Download. You will now be able to track down projects and baselines using calendars, codes etc and really get your cleanup going.

An easy to use, consolidated report of Activity Code usage is easily generated (above). Here we are scrolled part way down the report – remember the spreadsheet filter functionality can be used to display only the Activity Codes being used in the projects selected in the report if required.


Moving Time in Team Member - EASY

When you are working on a project and you move from Project into Support, sometimes it is hard to decide the exact cutoff point for the project team to start charging to the new support project. I had a problem the other day where I needed to decide the end date and cutover. The client selected a date a few weeks before we had thought we were going to cut it off after she checked her budgets and we realized we were going to go over.

So I had to go back to look through the timesheets we had submitted in Team Member to get the time reallocated before sending it into our QuickBooks where we invoice from.

Tracking Down the time

The Team Member improvements since v16 have been great. You can find certain things MUCH better and this is one of those things.

We submit our timesheets weekly, but only approve and push them to QuickBooks at the end of the month. That way we are progressing P6, but if there is a problem with a submission we are not messing up our accounting.

So to track down the time, you can filter on the person who was on the project and see their timesheets in play. You can then search by the project, client name or activity as needed. In this case I just searched the client reference.

I simply pulled up the timesheets that have been submitted for our consultant, and I can search by project.

I found one timesheet with a little bit of time after our cutoff date, then I rejected the timesheet so those hours can be moved.



In this case they need to be redone, but in some cases you may be able to cut/paste the activity into the new project. Be aware it will move ALL timesheets tied to that activity, so it may be better to reject and resubmit the hours on the new activity instead.

Happy timesheeting. It is definitely one of the hardest things we deal with keeping on top of, and this was very easy to do in Team Member.

Are You Tracking Ideas? Are Approved Ideas Easily Translated into Project Proposals?

Ideas in Oracle Prime:

Use Oracle Prime to create ideas: capture, evaluate, and process the ideas for new initiatives and business endeavors.

Ideas are processed using a submission and approval workflow. Prime Projects provides a default workflow for processing ideas, or you can create a customized workflow. First the idea creator creates an idea and specifies the idea's business case. When an idea contains sufficient information, the creator can submit the idea for further processing by routers and owners.


P6-QA and the Project Scheduler

Manually wading through a schedule and looking for errors is time consuming and prone to human error. Not only that, it's boring. No one wants to do it, but you need to check your schedule for errors!

Even worse then working through your own schedule for errors, is slogging through a contractor's. When you don't know how they have built the schedule, it can take days to make sure things hold together. Some of our clients have several layouts, reports and even special access databases and outside tools to do this which is very time consuming, error prone and boring.

Finding Setting Up or Changing Resource Availability in P6 a Struggle?

We have all experienced at one point or another how tedious (and time consuming) setting or changing resource availability can be in the P6 resource dictionary. Particularly for an example like the one we will walk through where you are setting up or adjusting turnaround resources and the weekend rule happens to be ½ crews.


The P6-Loader can ease the pain of these types of tasks.

Global Calendars – Exactly Which Projects Are Using Each Calendar?

In P6, identifying each specific project using each of the Global Calendars in a concise, fast, easy to use manner is challenging. Some may think this is not necessary very often, but in my experience, it has been quite the opposite!

Is this functionality already handled in Primavera P6, Client or Web? A very good question - let’s have a look.

Do You Need EV Calculated at the Resource Level?

You are correct; out-of-the-box P6 does not calculate Earned Value (EV) at the resource assignment level. It only runs EV at the activity level which is fine for a start, but what to do when you need to ‘dig deeper’ and analyze crew performance? You can't use Global Change to calculate the resource assignment EV because the activity percent complete isn't available in the Global Change list of fields.

A very simple option is to use TAPS to input your schedule updates. TAPS is barcode updating (with additional functionality). By using TAPS, updates are faster and more accurate giving you (and your team) more time for schedule analysis. Yes, TAPS runs EV calculations at the resource level.

P6-Loader v5 Usage Sheets Revolutionize P6 Database Maintenance

When you have a large number of users in your P6 database, it is surprising how quickly that database can get “clogged up” with a lot of unwanted data. This happens even when using Sandbox databases, restricting privileges and every other trick you have thought of; long time P6 users know what I am talking about.