Primavera Sample Project Files

Primavera Integration API Programmer's Reference

Microsoft Project 2000/2003, 2007, 2010 and 2013 XML files are exported and imported by Primavera, removing the requirement to have Microsoft Project loaded, Primavera Project Planner P3 and SureTrak files saved in P3 format. A SureTrak project in SureTrak format should be saved in Concentric (P3) format before importing, this function needs P3.

Planning Using Primavera ® Project Planner P3 Version 3.1 Revised 2006, published March 2006 ISBN 1-921059-13-3 - A4 Spiral Bound Planning Using Primavera® SureTrak Project Manager Version 3.0 Revised 2006, published June 2006 ISBN 1-921059-14-1- A4 Spiral Bound SUPERSEDED BOOKS BY THE AUTHOR Planning and Scheduling Using Microsoft® Project 2003. This is an open discussion about the attached primavera schedule, This schedule submitted from our site member and we need to help improving the quality of the time schedules as we discuss the mistakes and the ways to make such schedule looks better. Download the schedule from the following link: Download primavera files. download#5 wk1-project. Free Sample Construction Work Breakdown Structure Templates Download. Grab these Primavera P6 XER templates fast! Jump-start your next Primavera P6 construction schedule by starting with the right Work Breakdown Structure. Included are 6 construction project WBS templates in Primavera P6 XER file format. You'll get: Aircraft Systems WBS template. Steelray Project Analyzer analyzes schedules (Primavera P6, Microsoft Project and Project Server) using a patent pending set of criteria and produces customizable reports as scorecards, Excel, PowerPoint, Word, or Web files.

Contents
Introduction
Modes of Operation
Security
Packages
Where to Begin
Session
GlobalObjectManager
EnterpriseLoadManager
Business Objects
JobManager
Batch Exception Handling
Timestamps
Resource Security
XMLExporter
XMLImporter
XML Schema
Performance Tips
Demo Applications

Introduction
The Integration API provides a flexible, object-oriented interface to Primavera's project management functionality. The API is a cross-platform, Java-based interface.

This document provides information on how to use the API. See the Administrator's Guide for information on installing and configuring the API and system requirements. For information on how to use specific classes, see the Javadoc.

Modes of Operation
The API is designed to run in one of two modes: Local or Remote.

In Local Mode, the client code runs in the same Java Virtual Machine (JVM) as the Integration server. Java Remote Method Invocation (RMI) is not used, and the Integration API communicates directly with the business rule code in the server (the Business Rule Engine). Local Mode is useful for when the API client code with be deployed on the same physical machine as the internal Business Rule Engine. It can also be useful for applications that require the improved performance achieved by avoiding the RMI layer. Of course, Local Mode could be called directly from JSP pages that are deployed as part of a Web Application.

In Remote Mode, the client code runs on a different machine than the Integration server and Java Remote Method Invocation (RMI) is used for communication. Multiple clients can communicate with the Integration server simultaneously.

Note: The maximum number of clients that can access a remote server at one time is approximately 50. This number may be less, depending on multiple factors including system hardware, network configuration, and even the number of available licenses.

There are three possible service modes for the RMI server: Standard, Compression, and SSL. By default, all three modes are enabled. The RMI server also requires the RMI Registry, which listens to port 9099 by default. You can change the default settings for the RMI server via the Administrator tool, which can be launched using admin.cmd (admin.sh for Solaris). The following settings can be found under ConfigurationsCustom<Configuration Name>IntegrationServerRMI:

Enable - Enables (true) or disables (false) the RMI server (default setting is true).

RegistryPort - Port for the RMI Registry (default setting is 9099).

StandardServiceEnable - Enables (true) or disables (false) the Standard service mode (default setting is true).

StandardServicePort - Port to use for Standard service mode. A setting of 0 (default) means that any available port will be used. If the server will be accessed across a firewall, you must set this to a specific port.

CompressionServiceEnable - Enables (true) or disables (false) the Compression service mode (default setting is true).

CompressionServicePort - Port to use for Compression service mode. A setting of 0 (default) means that any available port will be used. If the server will be accessed across a firewall, you must set this to a specific port.

SSLServiceEnable - Enables (true) or disables (false) the SSL service mode (default setting is true).

SSLServicePort - Port to use for SSL service mode. A setting of 0 (default) means that any available port will be used. If the server will be accessed across a firewall, you must set this to a specific port.

If the API is configured to use Remote Mode, the service mode can be chosen at runtime using the RMIURL helper class: standard, compression, and SSL modes are available. HTTP tunneling may also be used if the HTTP or HTTPS service modes are selected. These additional modes encapsulate RMI communication in HTTP, allowing RMI to communicate through a firewall with only one port required to be open.

Note: P6 Web Services were released with version 6.2 and should be considered as an alternative to using the Remote Mode of the Integration API.

Security
Application layer security for the Integration API is similar to what is used by the Primavera client/server products. To use the API, you must log in as a named user. Global and project security profiles apply when using the API, so if a user attempts to perform an action that is restricted by a security profile, an exception will be thrown.

Network layer security is achievable by using either SSL or HTTPS in Remote Mode. The HTTPS calling mode uses HTTP tunneling, requiring only one port to be open in the firewall.

Note: See the section entitled 'Java Security Manager' in the Administrator's Guide for information on how to enable additional security through the use of a custom security policy.

Primavera Sample Project Files

Packages
Within the jar file, classes in the following packages can be accessed directly by client code:

com.primavera (base classes for Primavera exceptions)
com.primavera.common.exceptions (common exception classes)
com.primavera.common.value (value object classes)
com.primavera.common.value.spread (spread value classes)
com.primavera.integration.client (main classes, including Session, JobManager EnterpriseLoadManager, and GlobalObjectManager)
com.primavera.integration.client.bo (business object base class and iterator classes)
com.primavera.integration.client.bo.enm (typesafe enumerations)
com.primavera.integration.client.bo.helper (business object helper classes)
com.primavera.integration.client.bo.object (client business object classes)
com.primavera.integration.client.xml.exporter (Hierarchical XML exporter and related classes)
com.primavera.integration.client.xml.importer (Hierarchical XML importer and related classes)
com.primavera.integration.client.xml.xmlexporter (Flat XML exporter and related classes - new in version 6.2)
com.primavera.integration.client.xml.xmlimporter (Flat XML importer and related classes - new in version 6.2)
com.primavera.integration.common (general common classes)
com.primavera.integration.network (exception classes for Remote Mode)
com.primavera.integration.util (utility and helper classes)

Other packages in the jar file contain code for internal use only.

Where to Begin
If you will be writing code against the API, the Java Software Development Kit (SDK, also known as the JDK), version 1.5.x, must be installed. The Integrated Development Environment (IDE) used to write code must work with this version. If you will not be writing code, only the Java Runtime Environment (JRE), version 1.5.x, is required to be able to run applications written for the API.

The API client code for Remote Mode is contained in intgclient.jar. For Local Mode, the API code is contained in intgserver.jar. The jar files are installed in the lib directory under the Integration API installation directory. To successfully compile and execute the code written against the API, you will need to include the appropriate jar file in your classpath.

Note: For applications running in Local Mode, your classpath must include the other jar files that are installed in the lib directory under the Integration API installation directory. Local Mode applications must also have the System property 'primavera.bootstrap.home' set to the location of the installation directory. This setting is used by the server to find the BREBootStrap.xml file.

To access data in the API, you must first establish a valid session. Code written for Local Mode is the same as code written for Remote Mode, except for calls to Session.getDatabaseInstances() and Session.login(), which require the appropriate information to be specified for finding the server.

Example 1: Establish a session in Local Mode and load a collection of projects:

Example 2: Establish a session in Remote Mode, using the standard service mode, and load a collection of projects (see the Javadoc for RMIURL for information on how to specify other service modes):

Session
Session is the main class used for communicating with the server. To establish a valid session, a static login method is used. The session reference can then be used to access other main objects, such as the EnterpriseLoadManager.

To log in, a valid database instance must be specified if multiple database instances are defined in the current configuration. Use the Administrator tool to see the settings of your configuration. If multiple configurations are defined in the database, check the 'name' attribute of the BootstrapConfigurationsBRE element in the BREBootStrap.xml file to determine the configuration used by your server installation.

Primavera

Before logging in, you can retrieve a list of available database instances by calling Session.getDatabaseInstances().

Note: The only difference in client code for Local Mode and Remote Mode is the call to Session.getDatabaseInstances() and Session.login(). For Remote Mode, the code must specify the URL of the RMI server. You can use com.primavera.integration.client.RMIURL to generate the RMI URL for different remote modes: Standard, Compression, or SSL.

Session is not a singleton, which means you can establish multiple simultaneous communication sessions with various servers and/or database instances. This can be useful for integrating with multiple Primavera databases.

GlobalObjectManager
Retrieve the GlobalObjectManager instance for a particular session by calling Session.getGlobalObjectManager(). This object is used for accessing all global business objects: EPS, Projects, Resources, Roles, etc. In general, a business object is global if it is not a child of a different type of object.

From the GlobalObjectManager, global objects can be created, loaded, updated, and deleted. Each of these methods will cause the database to be accessed. When running in Remote Mode, each of these methods results in a remote call to the server, which in turn may update the database.

EnterpriseLoadManager
Retrieve the EnterpriseLoadManager instance for a particular session by calling Session.getEnterpriseLoadManager(). This object is used for accessing all business objects directly without having to follow a navigation model.

Business Objects
A business object is an encapsulation of business data and functionality that usually corresponds to a record in a particular database table. Business objects contain fields, exposed as properties. Get() methods exist for all fields, and set() methods exist only for writable fields. Most business objects contain an ObjectId field, which serves as the primary key for that object.

Note: Client-side business objects are transient and should not be reused. For example, when creating a new instance of a client-side business object, after you call the create() method to create the object in the database, the object should be reloaded from the database if you intend to use it. This will help ensure that the data is valid, based on the server-side business rules. This warning also applies to updating business objects; after calling update(), reload the object if you intend to use it further.

Load methods that cause multiple business objects to be loaded will return a BOIterator (a business object iterator), that can be used to iterate through the returned business objects. Similar to Java's java.util.Iterator class, it has both hasNext() and next() methods. Not all business objects are retrieved from the server at one time. As you iterate through the result set, more business objects are automatically loaded from the server as needed.

When loading an object, the fields to be loaded can be specified. If this parameter is null, the minimal fields necessary will be loaded. You can obtain lists of available fields by calling the following methods:

getAllFields() - Returns an array of all fields for this business object. Code assignment and UDF value field names are not included in this array. For more information, see the Special Handling of Codes and UDFs section below.

getRequiredCreateFields() - Returns an array of fields required to create this business object. Some business objects have fields listed in this array that are OR'ed. These fields will appear in the array separated by the '|' character. For example, the required create fields for Activity are 'Id', and 'ProjectObjectId|WBSObjectId,' meaning the Id field must always be set, and either the ProjectObjectId or the WBSObjectId must be set (setting only the ProjectObjectId will cause the Activity to be created at the project-level).

getDefaultXMLExportFields() - Returns an array of fields that are exported by default when null is specified for the fields parameter for the hierarchical XMLExporter methods. You can specify more or fewer fields as desired. User fields and Summary fields are not included in the default hierarchical XML export fields arrays.

getSpreadFields() - Returns an array of spread fields (unit and cost) for business objects that support spreads: EPS, Project, WBS, Activity, and ResourceAssignment.

getMainFields() - Returns all fields supported by the business object, except for summary, code assignment, and UDF fields.

Primavera Sample Project Files Free

Note: In order to have the API perform optimally, only specify to load the fields that are absolutely needed.

Business objects can be loaded directly using static load() methods of the class itself, from a parent object, from the GlobalObjectManager if the object is global, or from the EnterpriseLoadManager. Objects can be loaded by specifying an array of ObjectIds or by specifying a 'where' clause and/or an 'order by' clause. The where clause is used to filter the business objects when loaded.

  • Where clauses that use Date data types must use the WhereClauseHelper to format the date value. See Load Activities Example below.
  • Complex where clauses can be created using AND and OR.
  • Where clauses follow SQL-92 grammar and support function calls of the SQL language, with some exceptions. Join statements and nested select statements are not supported. The DATEADD function of SQL Server is also not supported.

The following code examples demonstrate how to specify a where clause when loading business objects:

Example 1: Load all the projects that have an Id beginning with 'SAP-Project,' ordering by Id in ascending order:

Example 2: Load activities from a project where the actual start is within a particular date range, ordering by Name in descending order:

Example 3: Load all active timesheets from a timesheet period:

Special Handling of Codes and UDFs

Project, BaselineProject, Resource, and Activity objects can have associated code objects (ProjectCodes, ResourceCodes, and ActivityCodes). The association is represented by the ProjectCodeAssignment (for Project and BaselineProject), ResourceCodeAssignment, and ActivityCodeAssignment objects.

Activity, ActivityExpense, ActivityStep, ActivityStepTemplateItem, BaselineProject, Document, EPS, Project, ProjectIssue, ProjectRisk, Resource, ResourceAssignment, and WBS objects can have associated UDFs. The association and value are represented by the UDFValue object.

In previous releases, code and UDF assignments were handled as special fields on the related business objects. These methods have been deprecated in 5.0 SP3, however, and will most likely be removed in the version 7.0 release.

See the general and export demo applications for coding examples that show how to use the new code and UDF assignment business objects.

JobManager
The Job Manager is used to invoke all asynchronous jobs: schedule, summarize, apply actuals, store period performance, run Project Architect, and create batch reports. It is retrieved for a particular session by calling Session.getJobManager(). You can check the status of a particular asynchronous job by calling getJobStatus and passing in the job ID returned when the job was created. Other methods exist for deleting a job and getting a list of all jobs.

Note: Except for jobs created with the javaSchedule() and storePeriodPerformance() methods, jobs are serviced by the Primavera Job Service, which runs as a Windows service. If you have not installed the Primavera Job Service, see the Administrator's Guide for instructions on how to install the service on a Windows machine.

Batch Exception Handling
BatchException allows you to catch and collect all business rule exceptions without stopping the batch create/update transaction. After the whole batch create/update is processed, the data transaction is still rolled back but BatchException provides you a list of business rule exceptions that occurred during the process. Looping through the exception list, you can identify the problematic business objects. You may want to remove those from the transaction list and rerun the batch update/create again.

Using BatchExceptions
Batch exception handling can be turned on and off in a session. If batch exception handling is turned off (default mode), the batch create/update process fails when the first business rule exception is thrown. If the batch exception handling is turned on, the batch create/update process continues even if business rule exceptions are thrown.

Using BatchExceptions requires the following three steps:

  1. Turn on batch exception handling
    Before you start your batch create/update transaction, you have to turn on batch exception handling using the setBatchFailOnFirstFlag(false) on the Session object. (You can use getBatchFailOnFirstFlag() to verify that the batch exception handling is turned on.)
  2. Catch BatchExceptions
    Since a BatchException is a ServerException, it is important to catch BatchExceptions before ServerExceptions.
  3. Loop through the list of business rule exceptions
    After the batch create/update, the getExceptionList() method provides a list of business rule exceptions that occurred during the transaction. Loop through the list of exceptions and use the getSource() method to determine the source object.
    The getSource() method returns a type of Object. You can then typecast the Object to Integer, and determine the row index number: Since one business object can throw several business rule exceptions, it is possible that the same row index has multiple exceptions in the list. To get all exceptions that belong to a particular index, use the getExceptionsByIndex() method. The getExceptionsByIndex() method returns a sorted map, where the key is the index in the batch, and the value is a list of exceptions for that index (see Example 2 below). For all business rule exceptions that are not associated with one particular row, the index number is -1 (UNKNOWN_INDEX).

Note: You can use the getSource() method on the BatchException object itself. It provides you a convenient way of getting the source Object of the first exception in the list without writing a loop.

Note: General, not business rule-related exceptions, may occur during the batch create/update but BatchException does not contain those. BatchException does not support batch deleting.

BatchException examples

Example 1: Catching BatchExceptions and looping through the exception list

Example 2: Separating business objects that had business rule exceptions during batch update using the getExceptionsByIndex() method

TimeStamps
Each business object now provides information about the user (getCreateUser()) and the date (getCreateDate()) when the business object was created. Similarly, the getLastUpdateUser() and getLastUpdateDate() return the user who updated the business object and the date it was updated respectively. The getCreateUser() and getLastUpdateUser() only return the name of the user. If the User object is needed, it will need to be loaded separately.

Example: Load all users that have been updated after June 30, 2005 at 6:00 AM. The results are ordered by the update date:

Resource Security
Resource security allows you to restrict a user's ability to access resources. Restricted resource access means that a user has access to a part of the resource hierarchy only. Privileges that control the resource hierarchy (add/edit/delete resource) still apply but only to those resources that the user has access to.

Resource access types

  • Access to all resources

    If the User.AllResourceAccessFlag is True, the user has access to all resources and resource security does not apply.

  • Restricted access to resources
    If the User.AllResourceAccessFlag is False, the user has limited access to resources.
    If the user is assigned to a resource in the hierarchy, that user has access to the assigned resource and all its children. You can assign only one resource to a user, multiple resource access nodes are not supported.
    If the user is not assigned to any resource in the hierarchy, that user does not have access to any resources.

Note: Admin Superusers always have access to all resources.

Accessing resources assigned to a project

If a user can access a project, that user is able to see all resources assigned to that project (activity, issue, risk, WBS) even if they are outside the user's resource access node. The user then can re-assign these resources anywhere, but will only be able to edit those that are under the user's resource access node. For more information on the resource security feature, refer to the Primavera Project Management module or P6 Web Access documentation.

The API implementation of resource security

Use the ResourceAccess business object to implement and maintain resource access in the API. For details on specific methods, refer to the JavaDoc.

Note: In the Project Management module's Users dialog, users are filtered based on your resource access settings. In the API, all users are loaded but the ability to modify a user's resource access settings is determined by your resource access settings. If the user is associated to a resource that is outside your resource access, you cannot change that user's resource access settings.

XMLExporter
The hierarchical XML Exporter is retrieved for a particular session by calling Session.getXMLExporter(). As of release 6.2, a new flat XML Exporter exists, located in the com.primavera.integration.client.xml.xmlexporter package. The flat exporter is simpler to use for integration, and also performs better than the hierarchical XML Exporter.

The XML Exporters are used for writing business objects to XML. Every business object can be exported, either by specifying an array of ObjectIds or by specifying a where clause to use for loading the objects. Exporting non-global objects requires the parent object to be specified for the methods that have where clause parameters.

Another XMLExporter method, exportFullProject, exports a project and all of its child objects (such as WBS, Activities, ResourceAssignments, etc.). XML files created using exportFullProject can be imported using the XMLImporter.

When objects are exported, the fields to be exported can be specified. If the fields parameter is null, the default XML export fields will be used for each object. You can obtain this list of default fields for the hierarchical exporter by calling getDefaultXMLExportFields() on each business object class. For the flat exporter, the default fields are a combination of the default load fields and the required for create fields, with a few exceptions.

To specify specific business object types or fields to be included in the export, use XMLExporterListener. See the exporter demo application (ExportDemoApp.java) for example code.

Note: All business objects can be written individually to XML even without using the XMLExporter. Simply call toString() on a business object instance and all fields currently loaded in that business object will be output to XML using the same schema (p6apibo.xsd) as the flat XMLExporter.

XMLImporter
The hierarchical XML Importer is retrieved for a particular session by calling Session.getXMLImporter(). As of release 6.2, a new flat XML Importer exists, located in the com.primavera.integration.client.xml.xmlimporter package. The flat importer is simpler to use for integration, and also performs better than the hierarchical XML Importer.

The current version of the XML Importer only supports importing projects and project-related data generated using XMLExporter.exportFullProject(). For the list of business objects and related data exported by the XMLExporter.exportFullProject(), refer to the XMLExporter JavaDoc.

The XMLImporter can also import XML generated data from other sources if the XML conforms to the required schema and all necessary data are provided. However, anything that is not in the full-project export, does not get imported, even if it is in the schema (for example, Users). Note that read-only fields or business objects do not get imported either, and this version of the XMLImporter does not support importing Documents and related business objects.

An example of using the flat XMLImporter is provided by the importer demo application (ImportDemoApp.java).

Note: The XML Importer will not allow invalid data to be imported. It is your responsibility to ensure the data is valid before initiating the import process. For example, activities and resource assignments will not be imported if the actual finish date precedes the actual start date in the XML file.

If the data you would like to import is incomplete or does not conform to the full project export schema, you can still use the API to create an integration solution. One possibility would be to use DOM, SAX, or StAX to parse the XML yourself and then call the appropriate methods of the API directly. For XML files for which you have the XML Schema (XSD) available, an even better alternative might be to use an XML binding technology such as JAXB.

Note: It is highly recommended that you use the XMLImporter whenever possible due to the many complexities that can be involved in the import process in data dependency and matching.

XML Schema
The XML schema used by the hierarchical XMLExporter and XMLImporter is defined in the file prmbo.xsd, and can be found in the schema directory located under the installation directory. The new flat XMLExporter and XMLImporter use the p6apibo.xsd schema, found in the same directory. If the API is installed into a web/app server to support Remote Mode, the hierarchical schema file can be downloaded from the web server with the URL http://<host>:<port>/PrimaveraAPI/schema/prmbo.xsd, and the flat schema can be downloaded with the URL http://<host>:<port>/PrimaveraAPI/schema/p6apibo.xsd.

Performance Tips
Many factors can affect the performance of an application that uses the Integration API. The following tips will help the programmer avoid some of the more common performance problems:

  • Login to the API as a user with the Admin Superuser global security profile.
  • When creating or updating business objects, use methods that allow multiple objects to be processed at one time.
  • When loading business objects, load only the fields that are absolutely necessary.
  • Use where clauses to load business objects intelligently.
  • When choosing the methods used to access business objects, be sure to use the methods that will most effectively minimize server and database traffic . For example, a project is the parent of its WBS hierarchy, and individual WBS objects can be parents of other business objects, such as activities. To access activities quickly, use the loadAllActivities() method of project to bypass the child WBS objects.
  • Use only Local Mode with the XML exporter and importer.

Demo Applications
Demo applications are installed in the demo directory under the Integration API installation directory. Demo applications include source code, so they provide a working example of how to use the API.

The following demo applications are included with this release:

  • demo.general.GeneralDemoApp provides sample code for creating, loading, updating, and deleting business objects. It will, among other things, add a new project, add activities to that project, add expenses to those activities, add global and project-specific activity code types, add new activity codes for those types, and assign some activity codes to activities. It will then load the activities from the server and output them to XML.
  • demo.assignments.AssignmentsDemoApp loads all resource assignments across projects for the first 50 resources and generates an output HTML file. This application demonstrates the speed at which at which data can be accessed across projects.
  • demo.xmlexport.ExportDemoApp performs an XML export of the first ten projects in the database, and using the XMLExportListener interface, specifies to include all fields when exporting activities and skip activity notes and WBS milestones.
  • demo.xmlimport.ImportDemoApp performs an import of an XML file created using XMLExporter.exportFullProject().

Copyright

Copyright © 2003, 2009, Oracle and/or its affiliates. All rights reserved.

P6 Commercial Notices and Disclosures for Documentation

Primavera Sample Project Files

To view the P6 Commercial Notices and Disclosures for Documentation, go to the Documentation<language>Notices and Disclosures folder of the P6 physical media or download.

Welcome to MPXJ! This library provides you with the ability to read projectinformation (sometimes known as schedules or programmes) from a variety of fileformats, and also write that information to a variety of file formats.

The library is based around a set of data structures which follow the wayschedule data is represented by Microsoft Project. All manipulation of projectdata takes place using these data structures, which can be read from orwritten to the various supported file formats.

Supported Formats

  • MPX: The MPX file format can be read by versions of MicrosoftProject up to and including Microsoft Project 2010, and written by versions upto Microsoft Project 98. MPXJ allows MPX files to be created, read andwritten. See this Microsoft supportarticle for a definition ofthe file format.

  • MPP: The MPP file format is Microsoft's proprietary way of storingproject data. MPXJ supports read only access to MPP files produced byMicrosoft Project 98, Microsoft Project 2000, Microsoft Project 2002,Microsoft Project 2003, Microsoft Project 2007, Microsoft Project 2010,Microsoft Project 2013, Microsoft Project 2016, and Microsoft Project 2019.MPP template files, with the suffix MPT are also supported.

  • MSPDI: The MSPDI file format is Microsoft's XML file format forstoring project data. Versions of Microsoft Project from 2002 onwards can readand write MSPDI files. MPXJ allows MSPDI files to be created, read, andwritten. The MSDPI file format has remained broadly unchanged since it wasintroduced, although several versions of Microsoft Project have tweaked thefile format slightly, and have their own updated documentation. Documentation isavailable online here.Documentation for the Project 2003 MSPDI file format can be downloaded aspart of the Office 2003 XML Reference Schemas package.Documentation for the Project 2007 MSPDI file format can be downloaded as partof the Project 2007 SDK. Documentationfor the Project 2010 MSPDI file format can be downloaded as part of theProject 2010 Reference: Software Development Kit.Documentation for the Project 2013 MSPDI file format can be downloaded as partof the Project 2013 SDK.

  • MPD: The MPD file format is an Access database used tostore one or more projects. The database schema used in these databases is also close to that used by Microsoft Project Server. MPXJ can read projectsstored in an MPD file using a JDBC connection. It is possible that MPXJ could also read the same data from a Microsoft Project Server database using thesame approach, but this is not something I've tested.

  • PLANNER: Planner is an Open Source project management tool which usesan XML file format to store project data. MPXJ can read and write the Plannerfile format.

  • PRIMAVERA P6: Primavera P6 is an industry-leading tool favouredby users with complex planning requirements. It can export project data in the form of XER or PMXML files, both of which MPXJ can read. It is also possiblefor MPXJ to connect directly to the P6 database via JDBC to read project data.MPXJ can also write PMXML files to allow data to be exported in a form whichcan be consumed by P6. The PMXML schema forms part of the P6 distributionmedia, which can be downloaded from the Oracle e-Delivery site.

  • PRIMAVERA P3: Primavera P3 (Primavera Project Planner) is the forerunnerof P6. It holds projects in Btrieve database files which MPXJ can read from adirectory or from a zip archive. MPXJ can also read P3 data from PRX backupfiles.

  • PRIMAVERA SURETRAK: SureTrak holds projects in Btrieve database files whichMPXJ can read from a directory or from a zip archive. MPXJ can also readSureTrak data from STX backup files.

  • POWERPROJECT: Asta Powerproject is a planning tool used in a number ofindustries, particularly construction. Powerproject can save data to PP filesor to MDB database files, and MPXJ can read both of these formats.

  • PHOENIX: Phoenix Project Manager is an easy-to-use critical path methodscheduling tool aimed primarily at the construction industry. Phoenix writesPPX files which MPXJ can read.

  • FASTTRACK: Fasttrack Schedule is general purpose planning tool. FastTrackwrites FTS files which MPXJ can read.

  • GANTTPROJECT: GanttProject is an open source general purpose planning tool.GanttProject writes GAN files which MPXJ can read.

  • TURBOPROJECT: TurboProject is general purpose planning tool. TurboProjectwrites PEP files which MPXJ can read.

  • CONECPTDRAW PROJECT: ConceptDraw PROJECT is general purpose planning tool.ConceptDraw PROJECT writes CDPX, CPDZ and CPDTZ files which MPXJ can read.

  • SYNCHRO SCHEDULER: Synchro Scheduler is general purpose planning tool.Synchro Scheduler writes SP files which MPXJ can read.

  • GANTT DESIGNER: Gantt Designer is a simple Gantt chart drawing tool. GanttDesigner writes GNT files which MPXJ can read.

  • SDEF: SDEF is the Standard Data Exchange Format, as defined by the USACE(United States Army Corps of Engineers). SDEF is a fixed column format textfile, used to import a project schedule up into the QCS (Quality ControlSystem) software from USACE. MPXJ can read and write SDEF files. Thespecification for the file format can be foundhere.

  • SCHEDULE_GRID: Schedule grid files are produced when a schedule is exportedfrom Sage 100 Contractor. MPXJ can read schedule grid files.

  • PROJECT COMMANDER: Project Commander files are are the native file format usedby the Project Commander application. MPXJ can read Project Commander files.

Supported Languages

MPXJ is written and maintained in Java, however this is no barrier to usingits functionality in other languages.

Thanks to the facilities provided by IKVM, the MPXJ distribution alsocontains a native .Net DLL version of MPXJ and its library dependencies. Thisallows MPXJ to be used from any .Net programming language (for example, C#,Visual Basic and so on), without normally having to be aware that theoriginal code was written in Java. As part of the MPXJ release process theJava and .Net libraries are both exercised using the same set of regressiontests to ensure that their behaviour is identical. Both the Java and .Netversions of the library are used in production commercial applications - soyou can confident that the code will work for you!

There is also now a Ruby Gem which providesnative Ruby access to read from schedule files using MPXJ, and a Pythonpackage which wraps the Java library toprovide full read/write access to schedule files.

You may be able to leverage MPXJ from other languages too, for example the PHP/Java Bridgecan be used to expose the complete MPXJ API in PHP.

Working with Java

MPXJ is built to work with versions of Java from 1.8 onwards. For many people,the easiest way to get started with MPXJ and its dependencies is to use Maven.Just include the following in your POM to register MPXJ as a dependency of yourproject:

The traditional method of downloading the MPXJ distribution as a zip file can also be used. Distributions can be found at SourceForgeand also at GitHub.

The zip files contain all of the source, the MPXJ JAR file in the root of thezip file, with the libraries on which MPXJ depends being found in the libdirectory of the zip file. These libraries will need to be available on yourclasspath in order to use all of the MPXJ functionality.

You'll find a general introduction to MPXJ's functionality here.

Working with .Net

For many people the easiest way to work with MPXJ is to download the packages viaNuGet. The .Net assemblies and theirdependencies can also be found in the zip file distribution fromSourceForgeor GitHub.You'll find a general introduction to MPXJ's functionality hereand specific details about working with .Net here.

Working with Ruby

MPXJ is available as a RubyGem, which can be installed using

or included in you Gemfile and installed using bundler. Note that theRuby version of MPXJ is just a wrapper around the Java library, and providesread-only access to schedule data. You can find some documentation for theGem here

Working with Python

MPXJ is available as a Python Package, which can be installed using

You can find some documentation for thePackage here

Keep in touch

Primavera Sample Project Files Pdf

I'm keen to hear from you about how you are using MPXJ,please drop me a note.

If you use MPXJ as a part of an application that you redistribute,commercially or otherwise, drop me a line and I'll includea link to your website on the MPXJ users page.

You can help me

Please let me know what features you'd like to see addedto MPXJ. In addition to feature requests, if you have schedulefiles that can't be read, or don't contain the data youexpect, or have a file format you'd like MPXJ to read,please let me know. The more of this feedback you can give me, thebetter I can make MPXJ!

Licensing

MPXJ is distributed under the terms of theGNU LGPLa copy of which can be found in the root of thedistribution. Please read this license carefully! It will cost you nothingto use MPXJ commercially or non-commercially, but you must complywith the terms of the license.

Primavera Sample Project Files In Upwork

Please see the legal folder within the distribution for details of thelicences for the third party libraries used by MPXJ.

Acknowledgements

This product includes functionality provided by POI.

This product includes functionality provided by IKVM.NET.

This product includes functionality provided by RTF Parser Kit.

Sample Project Plan

This product includes functionality provided by SQLITE-JDBC.

This product includes functionality provided by ZLIB/CONTRIB.

This product includes functionality provided by JWAT.

Primavera Sample Project Files Download

This product includes functionality provided by JSOUP.