Professional Documents
Culture Documents
p6 Eppm Web Services Programming
p6 Eppm Web Services Programming
Primavera
P6 EPPM Web Services Programming Guide
Version 21
January 2022
Contents
Introduction ...................................................................................................................................... 5
About Personal Information ................................................................................................................... 5
Architecture............................................................................................................................................. 6
Standards ............................................................................................................................................... 7
What's New In P6 EPPM Web Services ................................................................................................. 7
What's Changed in this Release.................................................................................................. 7
Interface Change Details ............................................................................................................. 9
About P6 EPPM Web Services ............................................................................................................. 18
Business Object Based Services ............................................................................................... 18
Job Service .................................................................................................................................. 20
Spread Service ........................................................................................................................... 21
Import and Export Services ....................................................................................................... 21
Using P6 EPPM Web Services ............................................................................................................. 22
Demonstration Applications (On-Premises only) ................................................................................ 23
Generating a Java Keystore and Public/Private Key Pair .................................................................. 23
Configure P6 EPPM Web Services to Use Username Token with Encryption and Digital Signatures24
Run P6 EPPM Web Services Demo ..................................................................................................... 25
Using the Client Stub Classes .............................................................................................................. 25
Handling the Apache CXF Java Client Timeout ................................................................................... 26
P6 EPPM Web Services Standards ................................................................................................. 26
WS-Policy ............................................................................................................................................... 26
WS-Security ........................................................................................................................................... 27
WS-Addressing ...................................................................................................................................... 27
Example: Using WS-Addressing with P6 EPPM Web Services from Java................................ 28
Enabling WS-Policy ............................................................................................................................... 33
Authentication and Session Management ..................................................................................... 33
Authentication Using Username Token Profile ................................................................................... 34
Authentication Using Oracle Web Services Manager ......................................................................... 36
Consuming P6 EPPM Web Services over HTTPS (SSL) Using Username Token Profile .................. 36
Authentication Using SAML Token Profile........................................................................................... 37
Creating a SAML 2.0 Token ................................................................................................................. 41
Authentication Using HTTP Cookies (On-Premises Only) ................................................................... 42
Java Client Example: Authentication Using HTTP Cookies (On-Premises Only) ...................... 42
Best Practices ................................................................................................................................. 43
Using Filters .......................................................................................................................................... 43
Filter Examples ........................................................................................................................... 44
Performance Tips ................................................................................................................................. 47
3
P6 EPPM Web Services Programming Guide
Security ........................................................................................................................................... 47
Security ................................................................................................................................................. 47
Transport Level Security using HTTPS ................................................................................................ 47
Consuming P6 EPPM Web Services over HTTPS (SSL) From Java using HTTP Cookies (On-Premises
Only) ...................................................................................................................................................... 48
Message Level Security ....................................................................................................................... 48
Application Level Security .................................................................................................................... 50
Defining User Access to Resources .......................................................................................... 51
How to Set Security Privileges ............................................................................................................. 52
How to Set Global Security Privileges ....................................................................................... 52
How to Set Project Security ....................................................................................................... 52
How to Set Resource Security ................................................................................................... 53
Global Profile Definitions ..................................................................................................................... 53
Project Profile Definitions .................................................................................................................... 60
Troubleshooting P6 EPPM Web Services........................................................................................ 67
About Logging ....................................................................................................................................... 67
Configuring the Logging Level ................................................................................................... 67
Setting Logging On and Off ........................................................................................................ 67
Copyright ......................................................................................................................................... 68
4
Introduction
P6 EPPM Web Services is an integration technology that extends P6 business objects and
functionality. Based on open standards including SOAP, XML and WSDL, P6 EPPM Web
Services enables developers to leverage standard interfaces to create integrated software
solutions that interoperate with a wide variety of enterprise software applications running on a
diversity of hardware and operating system platforms.
Within our documentation, some content might be specific for cloud deployments while other
content is relevant for on-premises deployments. Any content that applies to only one of these
deployments is labeled accordingly.
In This Section
About Personal Information ....................................................................................... 5
Architecture ............................................................................................................... 6
Standards .................................................................................................................. 7
What's New In P6 EPPM Web Services .................................................................... 7
About P6 EPPM Web Services................................................................................ 18
Using P6 EPPM Web Services ................................................................................ 22
Demonstration Applications (On-Premises only)...................................................... 23
Generating a Java Keystore and Public/Private Key Pair ........................................ 23
Configure P6 EPPM Web Services to Use Username Token with Encryption and
Digital Signatures .................................................................................................... 24
Run P6 EPPM Web Services Demo ........................................................................ 25
Using the Client Stub Classes ................................................................................. 25
Handling the Apache CXF Java Client Timeout ....................................................... 26
5
P6 EPPM Web Services Programming Guide
Architecture
Note: To send SOAP services as XML, ensure that you follow the
general rules of XML:
All tag data (not CDATA) needs to be escaped for < > & "
Escaping must be a part of the client code which generates the web
service call
6
Introduction
Standards
P6 EPPM Web Services is WS-I (Web Services Interoperability Organization) Basic Profile
Version 1.1 compliant. For additional details about the WS-I Basic Profile Version 1.1, please
refer to the WS-I web site at http://www.ws-i.org/. At the time of this writing, the Basic Profile
Version 1.1 specification was available at
http://www.ws-i.org/Profiles/BasicProfile-1.1-2004-08-24.html.
7
P6 EPPM Web Services Programming Guide
21.5 A new field has been added to the Project field list of
Business Object Options.
New fields have been added to GlobalPreferences Fields and
Project Fields.
A new ProjectSpecific element has been added to operations
of Import.wsdl.
A new service, WbsReviewers, has been added.
See Interface Change Details (on page 9) for more
information.
8
Introduction
9
P6 EPPM Web Services Programming Guide
10
Introduction
11
P6 EPPM Web Services Programming Guide
12
Introduction
13
P6 EPPM Web Services Programming Guide
15
P6 EPPM Web Services Programming Guide
16
Introduction
17
P6 EPPM Web Services Programming Guide
18
Introduction
Additionally, some business object based services contain a special readxxxpath operation that
provides hierarchical information about the business object. As an example, you can determine
where in the EPS hierarchy a particular project resides by passing its ProjectObjectId into the
ReadProjectEPSPath operation. The operation returns a collection of ancestor elements. The
following business object based services contain a ReadxxxPath operation:
ActivityCode ReadActivityCodePath
CostAcount ReadCostAccountPath
Document ReadDocumentPath
ReadEPSPath
EPS
ReadProjectEPSPath
FundingSource ReadFundingSourcePath
OBS ReadOBSPath
ProjectCode ReadProjectCodePath
Resource ReadResourcePath
ResourceCode ReadResourceCodePath
Role ReadRolePath
ReadActivityWBSPath
WBS
ReadWBSPath
Special Operations
The following services support special operations unique to their scope, beyond Create, Read,
Update, Delete, and ReadxxxPath:
Project Service
CopyBaseline
CopyProject
CopyProjectAsBaseline
CopyProjectAsReflection
CopyWBSFromTemplate
ConvertProjectToBaseline
CalculateProjectScore
CreateCopyAsTemplate
19
P6 EPPM Web Services Programming Guide
CreateProjectFromTemplate
PublishProject
User Service
ReadUserBaselines
UpdateUserBaselines
SetUserPassword
SetMailServerPassword
WBS Service
CopyWBSFromTemplate
Job Service
The Job service provides operations that you use to initiate and process specialized jobs. These
operations include the following:
Scheduler
Leveler
Summarizer
Apply Actuals
Import/Export
Unifier
Overallocation Check
Global Replace
Sync Units
Copy Project
Baseline
Gateway Synchronization
Store Period Performance
Recalculate Assignment Costs
Printing
Rename Document Folder
Copy WBS
20
Introduction
Export Excel
Import/Export Enterprise Data
Generate Report
Spread Service
The Spread service provides the following operations that you use to read time-phased unit and
cost data:
ReadActivitySpread
ReadEPSSpread
ReadProjectSpread
ReadResourceAssignmentSpread
ReadProjectResourceSpread
ReadWBSResourceSpread
ReadProjectRoleSpread
ReadWBSRoleSpread
ReadWBSSpread
UpdateResourceAssignmentSpread
The ReadActivitySpread and ReadResourceAssignmentSpread operations return live spread
data.The data returned from the other Spread service operations is summarized data and is
current as of the last date the summarizer was run for a project.
21
P6 EPPM Web Services Programming Guide
Notes:
MTom support has been disabled in P6 Web Services. Set the MTom
flag to false when developing web service clients for import/export
operations in P6 Web Services.
When importing or exporting large projects, set the FileType as
FileType.ZIP when invoking Import or Export APIs.
Where to Begin
22
Introduction
10) How to log out of P6 EPPM Web Services if using HTTP cookies to authenticate.
Tips:
As additional demos become available, they will be listed in the following My Oracle Support
knowledge article:
Oracle Support Document 910106.1 - What Demo applications are available for Web
Services?
(https://mosemp.us.oracle.com/epmos/faces/DocumentDisplay?id=910106.1)
23
P6 EPPM Web Services Programming Guide
1) On the Web Server where P6 EPPM Web Services is deployed, open a command prompt
and run the keytool command using the following as an example:
keytool -validity 3600 -genkey -keyalg RSA -alias mykeys -keystore keystore.jks
Notes:
The proceeding responses are for example purposes only.
Substitute the appropriate responses for your environment.
After performing the steps above your keystore will be generated in
the location specified in step 1. The keystore contains the private key
that will be used by P6 EPPM Web Services and the public key that
will be used by the client. The P6 EPPM Web Services demo
application is an example of a client that can be set up to use a
public key.
Typically you will need to export the certificate containing the public
key from the keystore and import that public key into a keystore
accessible by the client. For the sake of clarity, this procedure
documents how to use the same keystore for both the client and P6
EPPM Web Services.
3) Copy the keystore to a location that is accessible by P6 EPPM Web Services and the P6
EPPM Web Services client application. The P6 EPPM Web Services Demo program is a
client application. If P6 EPPM Web Services is on a different machine than P6 Professional,
copy the keystore to both machines.
Configure P6 EPPM Web Services to Use Username Token with Encryption and
Digital Signatures
1) Complete the steps outlined in Generating a Java Keystore and Public/Private Key Pair
(on page 23)
2) Launch the Primavera P6 Administrator and log in.
3) In the Primavera P6 Administrator, click the Configurations tab, and expand Custom/Web
Services/Security/Authentication.
24
Introduction
Note: If you did not enter a different key password when you generated
the keystore, this will be the same password as the keystore password.
<p6_webservices_installation_folder>\client\Java\JAX-WS\stubs\
25
P6 EPPM Web Services Programming Guide
p6ws-jaxws-client.jar
import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.transport.http.HTTPConduit;
import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
import com.primavera.ws.p6.job.JobPortType;
//...
Or, you can control the client timeout by modifying the spring configuration for the client
http-conduit file.
Please refer to the CXF User's Guide for information about using the http-conduit file to control
the client timeout. At the time of this writing, the CXF User's Guide was available at
http://cwiki.apache.org/CXF20DOC.
26
P6 EPPM Web Services Standards
The WS-Policy standards permit these elements to be used inside the service port definitions in
the wsdl files or as part of an external attachment. At the time of this writing, additional
information about the WS-Policy standard could be found at:
http://www.w3.org/TR/ws-policy/
WS-Security
Transport level protocols such as HTTPS provides a level of security at the transport layer of the
OSI Model. The WS-Security standard comprises a number of standards and headers that
provide a level of security for your services that goes beyond the security provided by the
transport layer. These standards and headers define mechanisms for:
Including authentication tokens
Including nonce
Encrypting messages
Signing messages
Adding timestamps to messages
At the time of this writing, additional information about the WS-Security standard could be found
at:
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf
WS-Addressing
WS-Addressing is a specification for including message routing information within SOAP
headers. The WS-Addressing specification contains a mechanism for including endpoint
references and message addressing properties in the SOAP header. Client and server based
software can use the WS-Addressing information in the message header to route, identify, and
group SOAP based messages.
27
P6 EPPM Web Services Programming Guide
package com.oracle.pgbu.integration.ws;
import java.util.Date;
import javax.xml.soap.SOAPMessage;
import oracle.security.crypto.util.Utils;
import oracle.security.xmlsec.util.Base64;
import oracle.security.xmlsec.util.XMLUtils;
import oracle.security.xmlsec.wss.WSSecurity;
import oracle.security.xmlsec.wss.WSUCreated;
import oracle.security.xmlsec.wss.WSUExpires;
import oracle.security.xmlsec.wss.WSUTimestamp;
import oracle.security.xmlsec.wss.soap.WSSOAPEnvelope;
import oracle.security.xmlsec.wss.username.UsernameToken;
import oracle.security.xmlsec.wss.util.WSSTokenUtils;
import oracle.security.xmlsec.wss.util.WSSUtils;
import org.apache.cxf.binding.soap.SoapFault;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.binding.soap.SoapVersion;
import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.phase.AbstractPhaseInterceptor;
import org.apache.cxf.phase.Phase;
import org.w3c.dom.Element;
/**
*
* @author adavidson
*
*/
28
P6 EPPM Web Services Standards
//~ Constructors
------------------------------------------------------------------------------
-
//~ Methods
------------------------------------------------------------------------------
------
try
{
SOAPMessage soapMessage = message.getContent(SOAPMessage.class);
WSSOAPEnvelope wsEnvelope = new
WSSOAPEnvelope(soapMessage.getSOAPPart().getEnvelope());
29
P6 EPPM Web Services Programming Guide
}
catch (Exception ex)
{
throw new SoapFault("Error while creating security credentials.", ex,
version.getSender());
}
}
// A timestamp that the server checks to see if this message has taken too
long to reach the server
unToken.setCreatedDate(new Date());
sec.addUsernameToken(unToken);
return unToken.getElement();
}
30
P6 EPPM Web Services Standards
timestamp.setExpires(expires);
return rawTimestampId;
}
}
package com.oracle.pgbu.integration.ws;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.xml.ws.BindingProvider;
import org.apache.cxf.binding.soap.saaj.SAAJOutInterceptor;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.ws.addressing.AddressingBuilder;
import org.apache.cxf.ws.addressing.AddressingProperties;
import org.apache.cxf.ws.addressing.AttributedURIType;
import org.apache.cxf.ws.addressing.EndpointReferenceType;
import org.apache.cxf.ws.addressing.JAXWSAConstants;
import org.apache.cxf.ws.addressing.MAPAggregator;
import org.apache.cxf.ws.addressing.ObjectFactory;
import org.apache.cxf.ws.addressing.soap.MAPCodec;
import com.primavera.ws.p6.eps.EPS;
import com.primavera.ws.p6.eps.EPSFieldType;
import com.primavera.ws.p6.eps.EPSPortType;
import com.primavera.ws.p6.eps.EPSService;
/**
* @param args
*/
public static void main(String[] args) throws Exception {
String url = "http://localhost:7001/p6ws/services/EPSService?wsdl";
URL wsdlURL = new URL(url);
EPSService service = new EPSService(wsdlURL);
EPSPortType servicePort = service.getEPSPort();
Client client = ClientProxy.getClient(servicePort);
MAPAggregator aggregator = new MAPAggregator();
aggregator.setAllowDuplicates(true);
31
P6 EPPM Web Services Programming Guide
client.getEndpoint().getOutInterceptors().add(new
LoggingOutInterceptor());
client.getEndpoint().getOutInterceptors().add(new
SAAJOutInterceptor());
client.getEndpoint().getOutInterceptors().add(new
DemoOutInterceptor("admin", "admin"));
client.getEndpoint().getOutInterceptors().add(aggregator);
client.getEndpoint().getOutInterceptors().add(codec);
messageID.setValue("urn:uuid:" + System.currentTimeMillis());
maps.setMessageID(messageID);
soapAction.setValue("ReadEPS");
maps.setAction(soapAction);
/*
* Uncomment the following block of code to send the web service
response
* to another server. You will need to set this up yourself.
*/
/*
AttributedURIType replyTo = new AttributedURIType();
replyTo.setValue("http://localhost:8080/SoapContext/SoapPort");
replyToRef.setAddress(replyTo);
maps.setReplyTo(replyToRef);
*/
requestContext.put(JAXWSAConstants.CLIENT_ADDRESSING_PROPERTIES,
maps);
epsFields.add(EPSFieldType.OBJECT_ID);
32
Authentication and Session Management
epsFields.add(EPSFieldType.ID);
epsFields.add(EPSFieldType.NAME);
if (ePSs != null) {
for (EPS eps : ePSs) {
System.out.println(eps.getName());
}
}
}
}
Enabling WS-Policy
P6 EPPM Web Services uses an external attachment file to support WS-Policy. The cxf.xml file
contains the reference to the external file. The reference to the external file is commented out in
the cxf.xml that is supplied in the default P6 EPPM Web Services server deployment, which
disables WS-Policy. However, you can uncomment this reference to enable WS-Policy before
deploying P6 EPPM Web Services to the server.
The external file, policies.xml, asserts that HTTPS and WS-Addressing is required for all of the
P6 EPPM Web Services. Therefore, if you uncomment the reference to the external attachment
file before deploying P6 EPPM Web Services on the server, all client requests to P6 EPPM Web
Services that are processed by that deployment will need to include HTTPS and WS-Addressing
information in the message headers. However, if you want to remove one or both of these
requirements from a specific P6 EPPM Web Services, you can customize WS-Policy by
removing the HTTPS and/or WS-Addressing assertions for that service from the external
attachment file.
See the P6 EPPM Web Services Programming Guide for additional information on enabling and
customizing WS-Policy.
33
P6 EPPM Web Services Programming Guide
34
Authentication and Session Management
b. If you set Require Nonce to true, set the Nonce Cache Timeout to an appropriate time
in seconds.
c. If you set Require Nonce to true, set the Created/Require Created to true to require a
timestamp.
The following example shows the syntax of the <UsernameToken> element:
<UsernameToken>
<Username>...</Username>
<Password Type="...">...</Password>
</UsernameToken>
Additionally, the Java example below shows how to use the UsernameToken.
// Create the basic UsernameToken information with the specified username and
password
UsernameToken unToken = WSSTokenUtils.createUsernameToken(wsuId,
m_demoInfo.username, null, null, m_demoInfo.password.toCharArray());
// A timestamp that the server checks to see if this message has taken too long
to reach the server
unToken.setCreatedDate(new Date());
sec.addUsernameToken(unToken);
// ....
Step two: Configure the CXF outgoing properties for including UsernameToken
Information
For example, the following code snippet was extracted from the WSDemo.java file that is
included with the demo:
35
P6 EPPM Web Services Programming Guide
// However, we only need a custom inbound Interceptor if we know that the server
// is sending back encrypted messages.
if (m_demoInfo.encEnabled && m_demoInfo.encInbound)
{
client.getEndpoint().getInInterceptors().add(new DemoInInterceptor());
}
}
Refer the demo source to view the code snippets above within their context.
Consuming P6 EPPM Web Services over HTTPS (SSL) Using Username Token
Profile
Consuming P6 EPPM Web Services over the Secure Sockets Layer involves several steps:
1) Setting up the application server to use SSL
2) Creating client code that sets up and uses an SSL connection
The following additions in bold to the demo source provide an example of how you could
implement client code that sets up and uses an SSL connection.
Note: The following snippet is for example purposes only and does not include all of the
changes that would need to be made to the demo source to successfully use SSL with the
demo.
36
Authentication and Session Management
//..
return 0;
}
else
{
return EPSs.get(0).getObjectId().intValue();
}
}
37
P6 EPPM Web Services Programming Guide
For additional information about SAML, please refer to the Security Assertion Markup Language
(SAML) v1.1 and 2.0 specification sets. These specification sets contain information about
SAML assertions, protocol, bindings, profiles, and conformance. At the time of this writing, these
specifications were available at:
http://www.oasis-open.org/specs/
Note: The following procedure demonstrates how to use SAML 1.1 with
P6 EPPM Web Services. For additional information, refer to the sample
code in the SAML11.java file in the P6 EPPM Web Services
ws\demo\Java\JAX-WS\src\com\primavera\wsclient\demo folder. If you
are using SAML 2.0 with P6 EPPM Web Services, refer to the sample
code in the SAML2.java file in the P6 EPPM Web Services in this folder.
When using SAML, the P6 Authentication mode must be set to WebSSO or LDAP.
To configure the server to authenticate user credentials using SAML:
1) Launch the Administration Application.
2) On the Configurations tab:
a. Set the Web Services/Security/Authentication/Mode setting to SAML Token Profile.
b. Set the Web Services/Security/Authentication/SAML Token Profile/SAML Version
setting to 1.1 or 2.0.
c. Set the Web Services/Security/Require Signed SAML Token to true.
d. Set the Web Services/Security/Authentication/SAML Token Profile/SAML
Tokens/Issuer setting to a valid issuer for the SAML token. Separate multiple valid
users with a space.
e. Set the Web Services/Security/Authentication/SAML Token Profile/SAML
Tokens/IssueInstant Timeout setting to an appropriate value in seconds.
f. Set the SAML Tokens information to the appropriate values for your environment.
g. Set the Signed SAML Tokens information to the appropriate values for your
environment.
3) On the Authentication tab, set the Authentication/Login Mode to WebSSO or LDAP.
Note: This step only applies to SAML 1.1. For information on creating
SAML tokens for SAML 2.0, see .
For example, the following code snippet was extracted from the DemoOutInterceptor.java file
that is included with the P6 EPPM Web Services demo application:
38
Authentication and Session Management
// Create all the information that we need for our own SAML assertion
// And since we're acting as the identity provider, we also specify how the user
authenticated
AuthenticationStatement statement = new AuthenticationStatement(aDoc);
statement.setAuthenticationMethod(SAMLURI.authentication_method_password);
statement.setAuthenticationInstant(new Date());
statement.setSubject(createSAMLSubject(aDoc, m_demoInfo.username));
String assertionId = XMLUtils.randomName();
Date notBefore = new Date();
Date notOnOrAfter = Utils.minutesFrom(notBefore, 5);
// Create the assertion element we need based on all the information above
Assertion assertion = createAssertion(aDoc, assertionId, SAML_ISSUER,
notBefore, notOnOrAfter, SAML_ISSUER, statement);
SAMLAssertionToken samlToken = new SAMLAssertionToken(assertion);
sec.addSAMLAssertionToken(samlToken);
// Finally, to prove that the assertion that we're sending out is actually from
the identity provider (us),
// we can sign the message with our private key.
if (m_demoInfo.samlSigned)
{
// We just need to load the digital certificate and private key from the
keystore specified
KeyStore keyStore = KeyStore.getInstance(m_demoInfo.samlKeystoreType);
keyStore.load(new FileInputStream(m_demoInfo.samlKeystore),
m_demoInfo.samlKeystorepass.toCharArray());
String privateKeyPassword = m_demoInfo.samlKeypass;
PrivateKey privateKey =
(PrivateKey)keyStore.getKey(m_demoInfo.samlAlias,
privateKeyPassword.toCharArray());
return assertion.getElement();
}
Step two: Configure the CXF outgoing properties for including SAML Information
For example, the following code snippet was extracted from the WSDemo.java file that is
included with the P6 EPPM Web Services demo application:
39
P6 EPPM Web Services Programming Guide
client.getEndpoint().getOutInterceptors().add(new
DemoOutInterceptor(m_demoInfo));
// However, we only need a custom inbound Interceptor if we know that the server
// is sending back encrypted messages.
if (m_demoInfo.encEnabled && m_demoInfo.encInbound)
{
client.getEndpoint().getInInterceptors().add(new DemoInInterceptor());
}
}
Refer to the demo source to view the code snippets above within their context.
return samlxml.getDocumentElement();
}
40
Authentication and Session Management
After you access the URL, you will be redirected to an IdP page in which you will need to enter
your username and password. Upon successfully logging in to the IdP, you will be prompted to
download samlassertion.xml.
return samlxml.getDocumentElement();
}
41
P6 EPPM Web Services Programming Guide
If the Login operation is successful, it sends an XML message similar to the following:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Set-Cookie: JSESSIONID=6FBA83AE67D2E057CEC45B05A0414DB2; Path=/p6ws
Accept: text/xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Content-Type: text/xml;charset=utf-8
Content-Length: 254
Date: Thu, 03 Apr 2008 16:04:25 GMT
42
Best Practices
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><
SOAP-ENV:Body><LoginReturn
xmlns="http://xmlns.oracle.com/Primavera/P6/WS/Authentication/V1"><return>true
</return></LoginReturn></SOAP-ENV:Body></SOAP-ENV:Envelope>
Step four: Use the cookie in all subsequent calls to P6 EPPM Web Services in current
session
For example:
Best Practices
Using Filters
Many of the P6 EPPM Web Services read operations will return large amounts of data. To limit
the data returned from these operations, you can specify an optional filter when calling these
operations.
To specify the filter, use the Filter element to filter the returned data by any of the filterable P6
EPPM Web Services fields.
To determine which fields are filterable, refer to the Filterable Orderable column of the object's
field list, which can be found in the P6 EPPM Web Services Reference Manual.
For example, calling the ReadActivities operation with no filters specified, results in the return of
all activities in the database. You can limit the activities that are returned to those that are
related to a project with ObjectId of 123 by applying the following filter:
<Filter>ProjectObjectId = 123</Filter>
43
P6 EPPM Web Services Programming Guide
The following table contains some common filter examples. Note that the date format for SQL
Server is different than the date format for Oracle. When using the examples, be sure to use the
date format that is compatible with the database that you are using:
Oracle
SQLServer
CONVERT(datetime,'2008-08-13 11:22:21',120)
In addition to the Oracle and SQL server date format, you can also use the XML dateTime
format in the SQL where clauses that you submit. P6 EPPM Web Services supports the XML
dateTime format, with the exception of the fractional seconds and timezones. For example, to
return only activities whose Id begins with WS- and whose PlannedStartDate is at 08/01/2003
3:30 am, use the following where clause:
Filter Examples
Return all activities whose ObjectId ObjectId BETWEEN 123 AND 150
falls between 123 and 150, inclusively.
Return all activities whose ObjectId is ObjectId NOT BETWEEN 0 AND 123
outside of the range of 0 to 123.
44
Best Practices
Return only activities that have an ObjectId IN (123, 134, 152, 165)
ObjectId of 123, 134, 152, or 165.
Return only activities whose Id begins Id LIKE 'WS-%' AND PlannedStartDate IS NOT
with WS- and whose NULL
PlannedStartDate is not null.
Return only activities whose Id begins Id LIKE 'WS-%' AND IsCritical = 'Y'
with WS- and whose IsCritical flag is
Y.
Return only activities whose Id begins Id LIKE 'WS-%' AND (PlannedLaborUnits >=
with WS- and whose 1 AND PlannedLaborUnits <= 10)
PlannedLaborUnits is between 1 and
10, inclusive.
Return only activities whose Id begins Id LIKE 'WS-%' AND PlannedLaborUnits >=
with WS- and whose 0
PlannedLaborUnits is greater than or
equal to 0.
Return only activities whose Id begins Id LIKE 'WS-%' AND EstimatedWeight >= 1
with WS- and whose EstimatedWeight
is greater than or equal to 1.
45
P6 EPPM Web Services Programming Guide
Oracle
Id LIKE 'WS-%' AND PlannedStartDate
Return only activities whose =TO_DATE('2003-01-01 15:30:00',
Id begins with WS- and whose 'yyyy-mm-dd hh24:mi:ss')
PlannedStartDate is at 01/01/2003 SQLServer
3:30 pm.
Id LIKE 'WS-%' AND PlannedStartDate
=CONVERT(datetime,'2003-01-01
15:30:00',120)
Oracle
Id LIKE 'WS-%' AND PlannedStartDate <
Return only activities whose TO_DATE('2003-12-01 00:00:00', 'yyyy-mm-dd
Id begins with WS- and whose hh24:mi:ss')
PlannedStartDate is less than SQLServer
12/01/2003.
Id LIKE 'WS-%' AND PlannedStartDate <
CONVERT(datetime,'2003-12-01
00:00:00',120)
Oracle
Id LIKE 'WS-%' AND PlannedStartDate
Return only activities whose =TO_DATE('2003-12-01 15:30:00',
Id begins with WS- and whose 'yyyy-mm-dd hh24:mi:ss')
PlannedStartDate is at 12/01/2003 SQLServer
3:30 pm.
Id LIKE 'WS-%' AND PlannedStartDate
=CONVERT(datetime,'2003-12-01
15:30:00',120)
46
Security
Performance Tips
Oracle recommends using the following practices to optimize performance:
If possible, login as a user with the Admin Superuser global security profile.
When using the read operations, load only the fields that are absolutely necessary and use
filters to limit the numbers of objects that return.
When reading large amounts of project related data, use the Export operation to export the
data to an XML file. Then parse the data in the XML file to pull out the relevant information.
Security
Security
P6 EPPM Web Services provides security at both the transport and the application levels. Refer
to the following links for further information:
1) Transport Level Security using HTTPS (on page 47)
Consuming P6 EPPM Web Services over HTTPS (SSL) From Java using HTTP
Cookies (On-Premises Only) (on page 48)
2) Message level security
Username Token
SAML
Digital signatures
Timestamps
Encryption
3) Application Level Security (on page 50)
Global Profile Definitions (on page 53)
Project Profile Definitions (on page 60)
Defining User Access to Resources (on page 51)
47
P6 EPPM Web Services Programming Guide
See Consuming P6 EPPM Web Services over HTTPS (SSL) From Java using HTTP
Cookies (On-Premises Only) (on page 48) for additional details about using HTTPS with the
Java programming language.
Consuming P6 EPPM Web Services over HTTPS (SSL) From Java using HTTP
Cookies (On-Premises Only)
The following Java example invokes the Login operation of the Authentication P6 EPPM Web
Services over the Secure Sockets Layer.
import com.primavera.ws.p6.authentication.AuthenticationService;
import com.primavera.ws.p6.authentication.AuthenticationServicePortType;
import org.apache.cxf.configuration.jsse.TLSClientParameters;
import org.apache.cxf.frontend.ClientProxy;
import org.apache.cxf.transport.http.HTTPConduit;
//...
System.setProperty("javax.net.ssl.trustStore","C:/keystore_certs/server.keysto
re");
URL wsdlURL = new
URL("https://localhost:8443/p6ws/services/AuthenticationService?wsdl");
AuthenticationService service = new AuthenticationService(wsdlURL);
AuthenticationServicePortType port =
service.getAuthenticationServiceSOAP12PortHttp();
org.apache.cxf.endpoint.Client client = ClientProxy.getClient(port);
HTTPConduit httpConduit = (HTTPConduit)client.getConduit();
TLSClientParameters tlsParams = new TLSClientParameters();
tlsParams.setSecureSocketProtocol("SSL");
httpConduit.setTlsClientParameters(tlsParams);
port.login("admin", "admin", 1,true);
48
Security
Encrypting Messages
You can configure P6 EPPM Web Services with the following message level encryption settings:
No message level encryption is allowed
Server require at least one element in request messages be encrypted
Server require at least one element in request messages be encrypted and server encrypts
the response messages
Configuring P6 EPPM Web Services to encrypt P6 request/respond messages or request
messages, involves the following tasks:
49
P6 EPPM Web Services Programming Guide
7) Change the Private Key Password setting to the password of the private keystore
determined in task one.
4) Copy the sam.cer file to any client machines that are authorized to send request messages
to the server.The sam.cer file contains the public key that clients will need to be able to send
encrypted request messages to the server.
4) Since the keystore doesn't yet exist, it will be created, and you will be prompted for a
keystore password; type whatever password you want.
User Access
User access to P6 EPPM Web Services is similar to user access to P6 EPPM client/server
products. To use P6 EPPM Web Services, you must log in as a user that has the appropriate
product access privileges to access P6 EPPM Web Services as well as any other P6 EPPM
applications that you will be accessing.
Additional security privileges determine each user’s access to data.
To ensure security at various levels of data, P6 EPPM provides two sets of security profiles:
Global profiles define a user’s access to application-wide information and settings, such as
the enterprise project structure (EPS), resources, roles, and cost accounts. Each user must
be assigned a global profile. In addition to any global profiles that you define, P6 EPPM
provides two predefined global profiles: Admin Superuser and No Global Privileges. The
Admin Superuser profile allows complete access to all global information and all projects.
50
Security
Allow Lists
You can select the Enable allow list filtering for web services option on the Integration and Allow
Lists page of P6 Application Settings to restrict access to P6 EPPM Web Services to only the
client IP addresses specified in the Web Services Allow List.
Note: You need the Edit Users global privilege to manage resource
security.
51
P6 EPPM Web Services Programming Guide
GlobalProfileObjectId Constant
Admin Superuser 12
No Global Privilege -1
The Admin Superuser profile allows complete access to all global information and all projects.
This profile is assigned to the user Admin when you install P6 EPPM. For security reasons, you
should limit the Admin Superuser assignment to only those individuals who require access to all
data.
The No Global Privileges profile restricts access to global data. Assign this profile to anyone who
is strictly a P6 Progress Reporter user.
Use the following steps to set a Global Security privilege:
1) Using HTTPS, log in with a user that has the Edit Security profile privilege.
2) Choose an existing global profile or use the CreateGlobalProfiles operation to create a new
global profile.
3) If you are setting the global security privilege for a new user, use the CreateUsers operation,
passing in the GlobalProfileObjectId of the global security global security profile.
4) If you are setting the global security privilege for existing users, call the UpdateUsers
operation, passing in the appropriate GlobalProfileObjectId for the users that you are
updating.
52
Security
Administration Privileges
Add/Edit/Delete OBS option
Determines whether the profile will enable users to create, modify, and remove hierarchical
data for the global Organizational Breakdown Structure.
Add/Edit/Delete Security Profiles option
Determines whether the profile will enable users to create, modify, and remove global and
project security profiles, which grant access to application-wide and project-specific
information.
Add/Edit/Delete Users option
Determines whether the profile will enable users to create, modify, and remove P6 EPPM
user data. To search the LDAP directory when provisioning, users must also have the
Provision Users from LDAP global privilege.
Add/Edit/Delete User Interface Views option
Determines whether the profile will enable users to create, modify, and remove user interface
views configurations, which control the functionality users can access in P6.
Edit Application Settings option
Determines whether the profile will enable users to modify application settings, which set
global preferences for P6 EPPM.
53
P6 EPPM Web Services Programming Guide
Codes Privileges
Add Global Activity Codes option
Determines whether the profile will enable users to create global activity codes and code
values data. This privilege also selects the 'Edit Global Activity Codes' global privilege.
Edit Global Activity Codes option
Determines whether the profile will enable users to modify global activity codes data. This
privilege also enables users to create, modify, and remove global activity code values.
Delete Global Activity Codes option
Determines whether the profile will enable users to remove global activity codes and code
values data. This privilege also selects the 'Add Global Activity Codes' and 'Edit Global
Activity Codes' global privileges.
Add Global Issue Codes option
Determines whether the profile will enable users to create global issue codes and code
values data. This privilege also selects the 'Edit Global Issue Codes' global privilege.
Edit Global Issue Codes option
Determines whether the profile will enable users to modify global issue codes data. This
privilege also enables users to create, modify, and remove global issue code values.
Delete Global Issue Codes option
Determines whether the profile will enable users to remove global issue codes and code
values data. This privilege also selects the 'Add Global Issue Codes' and 'Edit Global Issue
Codes' global privileges.
Add Project Codes option
Determines whether the profile will enable users to create project codes and code values
data. This privilege also selects the 'Edit Project Codes' global privilege.
Edit Project Codes option
Determines whether the profile will enable users to modify project codes data. This privilege
also enables users to create, modify, and remove project code values.
Delete Project Codes option
Determines whether the profile will enable users to remove project codes and code values
data. This privilege also selects the 'Add Project Codes' and 'Edit Project Codes' global
privileges.
54
Security
55
P6 EPPM Web Services Programming Guide
56
Security
Resources Privileges
Add Resources option
Determines whether the profile will enable users to create resource data. This privilege also
selects the 'Edit Resources' global privilege.
Edit Resources option
Determines whether the profile will enable users to modify resource data. This privilege also
enables users to assign, modify, and remove role assignments. To display resources'
price/unit in reports, users must have this privilege and the 'View Resource and Role
Costs/Financials' global privilege assigned to their profile. To display resource skill level (a
resource’s role proficiency) in the application and in reports, users must have this privilege
and the 'View Resource Role Proficiency' global privilege assigned to their profile.
Delete Resources option
Determines whether the profile will enable users to remove resource data. This privilege also
selects the 'Add Resources' and 'Edit Resources' global privileges.
Add/Edit/Delete Resource Calendars option
Determines whether the profile will enable users to create, modify, and remove resource
calendars data. This privilege also enables users to edit Shifts in P6 Professional.
Add/Edit/Delete Resource Curves option
Determines whether the profile will enable users to create, modify, and remove resource
distribution curves definitions.
Add/Edit/Delete Roles option
Determines whether the profile will enable users to create, modify, and remove roles data.
Add/Edit/Delete Global Resource and Role Teams option
Determines whether the profile will enable users to create, modify, and remove global
Resource Teams and Role Teams. A Resource/Role Team is a collection of resources/roles.
Add/Edit/Delete Rate Types and Units of Measure option
Determines whether the profile will enable users to create, modify, and remove resource rate
types and units of measure data.
57
P6 EPPM Web Services Programming Guide
Templates Privileges
Add/Edit/Delete Activity Step Templates option
Determines whether the profile will enable users to create, modify, and remove Activity Step
Templates, which are used to add a set of common steps to multiple activities.
Add/Edit/Delete Issue Forms option
Determines whether the profile will enable users to create, modify, and remove issue forms.
Add/Edit/Delete Microsoft Project and Primavera Templates option
Determines whether the profile will enable users to create, modify, and remove templates
that are used to import/export data from/to Microsoft Project or Primavera XML formats.
Add/Edit/Delete Project Templates option
Determines whether the profile will enable users to create, modify, and remove templates
that can be used when creating new projects. To create project templates, users must also
have the 'Add Projects' project privilege assigned to their profile. To modify templates, you
must have the same project privileges that are required to modify projects. To delete project
templates, users must also have the 'Delete Projects' project privilege assigned to their
profile.
Tools Privileges
Administer Global External Applications option
Determines whether the profile will enable users to create, modify, and remove entries in the
list of global external applications in P6 Professional.
Administer Global Scheduled Services option
58
Security
Determines whether users have the privilege to modify settings on the Global Scheduled
Services dialog box. You can modify the following publishing services if you have this
privilege: Publish Enterprise Data, Publish Enterprise Summaries, Publish Resource
Management, Publish Security. With this privilege, you can enable the service, choose how
often the service will run, and at what time the service will run.
Administer Project Scheduled Services option
Determines whether the profile will enable users to set up the Apply Actuals, Summarize,
Schedule, and Level scheduled services to run at specific time intervals.
Edit Global Change Definitions option
Determines whether the profile will enable users to create, modify, and remove Global
Change specifications available to all users in P6 Professional.
Import P6 Professional XER and MPX option
Determines whether the profile will enable users to import projects, resources, and roles from
XER and MPX formats using P6 Professional. To create new projects when importing, users
must also have the 'Create Project' project privilege assigned to their profile. Users must be
an Admin or Project Superuser to update a project from an XER file.
Import XLS option
Determines whether the profile will enable users to import projects, resources, and roles from
XLS files into P6 Professional and P6. P6 Professional users must also be a Project
Superuser to update a project from XLS format. P6 users do not need to be a Project
Superuser, but do require the Add/Edit Activities Except Relationships privilege.
Import XML option
Determines whether the profile will enable users to import projects from P6, P6 Professional,
and Microsoft Project using XML format. To create new projects when importing, users must
also have the 'Create Project' project privilege assigned to their profile.
Enable Work Offline option
Determines whether the profile will enable users to work offline in P6 Professional configured
to a database with a P6 Pro Cloud Connect alias. To work offline, the database alias must
have the Enable Client-side Cache option selected. To see this privilege, select the Enable
offline mode option in the General pane of Application Settings.
59
P6 EPPM Web Services Programming Guide
Determines whether the profile will enable users to create, modify, and remove global
project, WBS, and portfolio layouts, views, and filters. This privilege is required to save view
changes made to the Portfolio Analysis page.
Add/Edit/Delete Global Reports option
Determines whether the profile will enable users to create, modify, and remove global
reports, including editing report groups and global report batches and saving global reports
created or modified in P6 Professional.
Edit Global Tracking Layouts option
Determines whether the profile will enable users to create, modify, and remove global
tracking layouts in P6 Professional.
Edit Projects from Scorecards option
Determines whether the profile will enable users to create, modify, and remove projects from
scorecards in the Portfolio View portlet and the Portfolio Analysis page. This privilege is
required to save data changes made to the Portfolio Analysis page. The following project
privileges are also required for scorecards: 'Edit Project Details Except Costs/Financials' to
edit project data, 'View Project Costs/Financials' to view project cost data, 'Edit WBS
Costs/Financials' to edit project cost data, 'Create Project' to add a project, and 'Delete
Project' to delete a project.
Add/Edit/Delete Global Visualizer Layouts option
Determines whether the profile will enable users to create, modify, and remove global
layouts in Visualizer.
Add/Edit/Delete Global Visualizer Filters option
Determines whether the profile will enable users to create, modify, and remove global filters
in Visualizer.
Activities Privileges
Add/Edit Activities Except Relationships option
60
Security
Determines whether the profile will enable users to create and modify all activity information
in projects, except activity relationships. Users assigned a profile with this privilege can also
designate another user as an activity owner and be assigned as a status reviewer for
reviewing status updates from P6 Team Member interface users. Users assigned Team
Member work distribution filters must have this privilege assigned. To modify activity IDs,
users must also have the Edit Activity ID project privilege assigned to their profile. To use the
Recalculate Assignment Costs feature, users must also have the 'View Project
Costs/Financials' project privilege assigned to their profile.
Delete Activities option
Determines whether the profile will enable users to remove activities from projects.
Add/Edit/Delete Activity Relationships option
Determines whether the profile will enable users to create, modify, and remove activity
relationships assigned to projects.
Edit Activity ID option
Determines whether the profile will enable users to modify activity IDs. To modify activity IDs,
users must also have the 'Add/Edit Activities Except Relationships' project privilege assigned
to their profile.
Add/Edit/Delete Expenses option
Determines whether the profile will enable users to create, modify, and remove expenses
assigned to projects.
Delete Discussion Comments option
Determines whether the profile will enable users to delete discussion comments assigned to
activities.
Codes Privileges
Add Project Activity Codes option
Determines whether the profile will enable users to create project activity codes and code
values data. This privilege also selects the 'Edit Project Activity Codes' project privilege.
Edit Project Activity Codes option
Determines whether the profile will enable users to modify project activity codes data. This
privilege also enables users to create, modify, and remove project activity code values.
Delete Project Activity Codes option
Determines whether the profile will enable users to remove project activity codes and code
values data. This privilege also selects the 'Add Project Activity Codes' and 'Edit Project
Activity Codes' project privileges.
Add EPS Activity Codes option
Determines whether the profile will enable users to create EPS-level activity codes and code
values. This privilege also selects the 'Edit EPS Activity Codes' project privilege.
Edit EPS Activity Codes option
61
P6 EPPM Web Services Programming Guide
Determines whether the profile will enable users to modify the name of EPS-level activity
codes. This privilege also enables users to create, modify, and remove EPS-level activity
code values.
Delete EPS Activity Codes option
Determines whether the profile will enable users to remove EPS-level activity codes and
code values data. This privilege also selects the 'Add EPS Activity Codes' and 'Edit EPS
Activity Codes' project privileges.
62
Security
Determines whether the profile will enable users to modify Project or WBS budget logs,
funding sources, spending plan, and financial data at the project level. To edit costs and
financials at the WBS level, including cost UDFs, users must also have the ‘Add/Edit/Delete
WBS Except Costs/Financials’ project privilege assigned to their profile. The ‘Edit WBS
Costs/Financials’ privilege also selects the 'View Project Costs/Financials' project privilege.
View Project Costs/Financials option
Determines whether the profile will enable users to display all monetary values for projects.
For users who do not have this privilege assigned to their profile, all areas that display
monetary values will display dashes and cannot be edited. To use the Recalculate
Assignment Costs feature, users must also have the 'Add/Edit Activities Except
Relationships' project privilege assigned to their profile. To display the resource price/unit,
users must have the 'View Resource and Role Costs/Financials' global privilege assigned to
their profile.
Delete Project Data with Timesheet Actuals option
Determines whether the profile will enable users to delete activities and resource
assignments for projects that have timesheet actuals. This includes cutting an activity with
timesheet actuals and pasting the activity to another project. To delete project data at all
different levels (activity, WBS, project, and EPS), users must also have the appropriate
privileges assigned to their profile. For example, to delete activities with timesheet actuals,
users must also have the 'Delete Activities' project privilege assigned to their profile. To
delete activities and WBS nodes with timesheet actuals, users must additionally have the
'Add/Edit/Delete WBS Except Costs/Financials' project privilege assigned to their profile.
Delete Published Project Data option
Determines whether the profile will enable users to delete published project data using the
Delete Published Data action on the EPS page.
Export Project Data option
Determines whether the profile will enable users to export project data and download data to
Excel using the Download link below grids.
63
P6 EPPM Web Services Programming Guide
Determines whether the profile will enable users to create, modify, and remove risks
assigned to projects.
Add/Edit/Delete Template Documents option
Determines whether the profile will enable users to create, modify, remove project template
documents. If the content repository is installed and configured, this privilege also enables
P6 users to check out and start reviews for project template documents. P6 Professional
users cannot open documents added via a P6 installation with a configured content
repository. A profile must be assigned the 'Add/Edit/Delete Work Products and Documents'
project privilege before you can select this privilege.
Add/Edit/Delete Work Products and Documents option
Determines whether the profile will enable users to create, modify, and remove project
documents that do not have a security policy applied. Document security policies are
available only in P6 and only for documents stored in the content repository. When the
content repository is installed and configured, this privilege also enables users to create
document folders in P6.
Assign Project Baselines option
Determines whether the profile will enable users to assign project baselines to projects. To
assign project baselines, users must also have the 'Edit Project Details Except
Costs/Financials' project privilege assigned to their profile.
Approve Timesheets as Project Manager option
Determines whether the profile will enable users to approve or reject submitted timesheets
as a Project Manager in Timesheet Approval.
64
Security
Determines whether the profile will enable users to create and modify resource requests for
activities.
Add/Edit/Delete Resource Assignments for Resource Planning option
Determines whether the profile will enable users to add, edit, or delete resource assignments
on the Planning Page of the Resources Section.
Add/Edit/Delete Role Assignments for Resource Planning option
Determines whether the profile will enable users to add, edit, or delete role assignments on
the Planning Page of the Resources Section.
Edit Committed Flag for Resource Planning option
Determines whether profile will enable the users to edit the committed flag on the Planning
Page of the Resources Section.
Edit Future Periods option
Determines whether the profile will enable users to enter, modify, and delete future period
assignment values in the Planned Units and Remaining (Early) Units fields of the Resource
Usage Spreadsheet using P6 Professional. The 'Add/Edit Activities Except Relationships'
project privilege is also required for this functionality.
Edit Period Performance option
Determines whether the profile will enable users to modify period performance values for
labor and nonlabor units as well as labor, nonlabor, material, and expense costs using P6
Professional. The 'Add/Edit Activities Except Relationships' and 'View Project
Costs/Financials' project privileges are also required for this functionality.
Tools Privileges
Apply Actuals option
Determines whether the profile will enable users to apply actuals to activities in projects.
Check In/Check Out Projects and Open Projects Exclusively option
Determines whether the profile will enable users to check projects out to work remotely and
then check them back in using P6 Professional, and whether users can open projects
exclusively. Opening a project exclusively places a lock on the project allowing only the user
who opened the project to make changes to the project. Other users can view project data,
but cannot make updates until the exclusive lock is released.
Level Resources option
Determines whether the profile will enable users to level resources in projects. This privilege
also selects the 'Schedule Project' project privilege.
Schedule Projects option
Determines whether the profile will enable users to schedule projects.
Monitor Project Thresholds option
Determines whether the profile will enable users to run the threshold monitor for projects in
P6 Professional.
65
P6 EPPM Web Services Programming Guide
66
Troubleshooting P6 EPPM Web Services
67
Copyright
Oracle Primavera P6 EPPM Web Services Programming Guide
Copyright © 2008, 2022, Oracle and/or its affiliates.
Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be
trademarks of their respective owners.
Intel and Intel Inside are trademarks or registered trademarks of Intel Corporation. All SPARC
trademarks are used under license and are trademarks or registered trademarks of SPARC
International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or
registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open
Group.
This software and related documentation are provided under a license agreement containing
restrictions on use and disclosure and are protected by intellectual property laws. Except as
expressly permitted in your license agreement or allowed by law, you may not use, copy,
reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish or
display any part, in any form, or by any means. Reverse engineering, disassembly, or
decompilation of this software, unless required by law for interoperability, is prohibited.
The information contained herein is subject to change without notice and is not warranted to be
error-free. If you find any errors, please report them to us in writing.
If this is software or related documentation that is delivered to the U.S. Government or anyone
licensing it on behalf of the U.S. Government, the following notice is applicable:
U.S. GOVERNMENT END USERS: Oracle programs, including any operating system,
integrated software, any programs installed on the hardware, and/or documentation, delivered to
U.S. Government end users are “commercial computer software" pursuant to the applicable
Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use,
duplication, disclosure, modification, and adaptation of the programs, including any operating
system, integrated software, any programs installed on the hardware, and/or documentation,
shall be subject to license terms and license restrictions applicable to the programs. No other
rights are granted to the U.S. Government.
This software or hardware is developed for general use in a variety of information management
applications. It is not developed or intended for use in any inherently dangerous applications,
including applications that may create a risk of personal injury. If you use this software or
hardware in dangerous applications, then you shall be responsible to take all appropriate
failsafe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation
and its affiliates disclaim any liability for any damages caused by use of this software or
hardware in dangerous applications.
This software or hardware and documentation may provide access to or information on content,
products and services from third-parties. Oracle Corporation and its affiliates are not responsible
for and expressly disclaim all warranties of any kind with respect to third-party content, products,
and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or
damages incurred due to your access to or use of third-party content, products, or services.
68