XER/XML Checksum – Maybe you shouldn’t manipulate that XER!

Many advanced Primavera P6 users have been manipulating XER’s for years – in fact there are tools out there specifically for manipulating XER’s. We have always recommended against manipulating XER’s and here is an example of why:

A client of ours for whom we provide second tier Primavera P6 support called in a panic one day. Users were unable to log in; P6 would start normally with the login screen but would immediately crash with an unhelpful event code. We spoke to the users to find out what was happening immediately before the crash and one user mentioned that he had just imported an XER sent from their EPC partner.


We opened the XER with the XER parser and (after a lot of looking) found that one of the activity codes that the EPC had manually manipulated was defined as scope “AS_GLOBLE” instead of the correct “AS_GLOBAL”. It was a simple typing error but since XER’s are not validated during the import process, the invalid scope value was written to the database and immediately the system crashed. We had to correct the value in the database before the schedulers could resume their work.


Now, in the release notes for P6 15.2.3, there is a comment that Primavera has added a checksum to the XER and XML files to “identify whether the XML/XER has been modified externally”. I suspect that Oracle has been feeling the pain of supporting users who mess up their database by manipulating XER/XML files and they also want to know if an import file has been manipulated. Auto manufacturers use a similar approach to detect “chipping” the ECU in your car – and it is a sure fire way to void your warranty.
Also interesting is that in P6 15.2.5, they have removed the checksum (reverted in release-speak). Is this because it created more issues than it resolved or is it because it just didn’t work? We may never know but you can be sure that it will be added again in the future.


If you need to manipulate information in P6, a much better solution than manipulating XER’s is Emerald’s P6-Loader. The P6-Loader uses either the P6 API’s or P6 Web Services to ensure that everything is checked and validated before it hits the database. And if something does go wrong, you can be sure that you won’t have voided your Oracle support agreement. Additionally, the P6-Loader allows you to access global data in P6, not just project level data like XER manipulation. It’s a win-win.

About the Author

Ian Nicholson, P.Eng. - VP Solutions

As our VP Solutions and a Lead Risk and Implementation Specialist, Ian leads Emerald’s functional consulting group. With over 20 years of international experience in varied fields and roles from manufacturing, heavy civil construction, pharmaceutical plant construction, hospital projects and oil and gas capital and turnaround projects, Ian brings a wealth of project knowledge to all of our clients. 


A visionary in the world of CAPEX, maintenance and turnaround planning processes, Ian has lead many of our large clients through their integration projects between ERP/EAM systems and Primavera products. Some of his integration success stories include Suncor Energy SAP to Primavera integration, BP Maximo to P6 integration, implementation of P6 at the Ontario Power Authority as well as the integration of Primavera Contract Manager with Oracle Financials at Capital Health Authority and Vancouver’s Rapid Transit Project 2000. Other major clients include Milwaukee Metropolitan Sewerage District, Shell Canada and Shell Global Solutions.

Ian has conducted Monte-Carlo risk analysis on CAPEX and turnaround projects for Shell Canada, Suncor Energy, Husky Energy and Bruce Power. He believes that successful Monte Carlo application is a process, not just a tool and has spoken at a number of events on the correct application of risk analysis.

When not assisting clients with their projects, Ian unwinds by riding his BMW motorcycle, listening to music or dragging his kids on long hikes.

Leave a comment

Please login to leave a comment.