Oracle’s PeopleSoft Applications are designed to address the most complex business requirements. They provide comprehensive business and industry solutions, enabling organizations to increase productivity, accelerate business performance, and provide a lower cost of ownership.


Contents:

  1. Introduction

    1. Prerequisites

    2. Requirements

    3. Dependencies

  2. Installing & Configuring

    1. Installing

    2. Configuring

    3. Upgrading from a Previous Version

  3. Using the Connector

    1. Use Cases and Demos

    2. Tips

    3. Adding to a Flow

  4. Example Use Case

    1. Anypoint™ Studio Visual Editor | XML Editor

    2. Example Code

  5. Demo

  6. See Also

Introduction

The PeopleSoft Connector is a closed source connector that uses the Component Interface (CI) to communicate with the service. This is a component provided by Oracle’s People Tools.

Prerequisites

Because of how closely the connector is coupled with PeopleSoft, this document assumes you have:

  • A working knowledge of PeopleSoft.

  • Read the relevant documentation on Component Interfaces and Integration Scenarios for your PeopleTools version.

The definition and detailed explanation of the PeopleSoft terms and concepts used here are freely available in the PeopleBooks documentation set of your PeopleSoft installation.

This document assumes you are familiar with Mule, Anypoint Connectors, and Anypoint Studio Essentials. To increase your familiarity with Studio, consider completing one or more Anypoint Studio Tutorials. Further, this page assumes that you have a basic understanding of Mule flows and Mule Global Elements.

To use the PeopleSoft connector, you must have the following:

  • Anypoint Studio: If you don’t use Anypoint Studio for development, follow the instructions to install the PeopleSoft Maven dependencies into your pom.xml file .

  • Java 7: PeopleSoft connector does not work unless you are using JRE 1.7. Download JRE 1.7.

  • Component Interface: At least one Component Interface must be created and exposed within the PeopleSoft instance using the Application Designer.

  • PeopleSoft Java Object Adapter JAR File (psjoa.jar): The psjoa.jar library is compiled and provided by a PeopleSoft administrator, and is unique to each installation of PeopleSoft.

Requirements

For Hardware and software requirements, please visit Mulesoft.com.

Dependencies

The PeopleSoft connector requires the following dependencies:

Application/Service Version

Mule Runtime

3.6.x or higher

PeopleSoft

9.2

PeopleTools

8.53.02 or higher

Java

1.7.0_x

Anypoint Studio

5.2 or higher

PeopleSoft 9.2 includes several modules, such as: Human Capital Management (HCM), Financial Management (FM), Enterprise Services Automation (ESA), Supplier Relationship Management (SRM), Customer Relationship Management (CRM) and Campus Solution (CS).

Installing and Configuring

To use the PeopleSoft connector in a production environment, you must have either:

  • An Enterprise license to use Mule.

  • A CloudHub Starter, Professional, or Enterprise account.

Contact the MuleSoft Sales Team to obtain either of these. Read more about Installing an Enterprise License.

Installing

To install PeopleSoft connector in Anypoint Studio, follow the steps below:

Anypoint Studio Install Window

  • Click Next and accept the License Agreement.

  • Restart Studio when prompted.

  • Now, the PeopleSoft connector should appear in your Studio Palette:

Anypoint Studio palette - PeopleSoft Connector

Read more about Installing Connectors.

Configuring

To use the PeopleSoft connector in your Mule application, you must configure a global PeopleSoft element that can be used by all the PeopleSoft connectors in the application.

Read more about Global Elements.

Setting up the Global Configuration


Studio Visual Editor

  • Click the Global Elements tab at the base of the canvas.

  • On the Global Mule Configuration Elements screen, click Create.

  • In the Choose Global Type wizard, expand Connector Configuration and select PeopleSoft: Configuration and clic Ok.

Global Element Configuration Wizard

  • Configure the parameters according to instructions below.

Global Element Configuration

Field Description

Name

Enter a name for the configuration with which it can be referenced later.

Server

Enter the URL of the server from where to access the services. It must comply with the form of HOST:PORT.

Username

Enter a username to log in to the PeopleSoft instance.

Password

Enter the password to log in to the PeopleSoft instance.

Required dependencies

Click Add File to attach the psjoa.jar file that is compiled from your PeopleSoft instance to your project’s Build path. Learn how to compile the psjoa.jar file.

Global Element - Required dependencies

After the psjoa.jar file is attached, the file will appear in the lib/peoplesoft directory of your project’s root folder.

Dependencies folder

If you provide the wrong file (either an invalid psjoa.jar or a completely different library), Studio displays the following error message:

Global Element - Invalid dependencies

The psjoa.jar file is unique to each installation of PeopleSoft. It is compiled and provided by your PeopleSoft administrator. If the psjoa.jar isn’t provided to you, follow the steps below to build the component interface bindings:
  1. Start PeopleSoft Application Designer and open any Component Interface definition.

  2. Select Build > PeopleSoft APIs to launch the Build PeopleSoft API Bindings dialog box.

  3. Under the Java Classes group box, select the Build check box. Specify the target directory in which you want the Java class source files to be created.

  4. Click OK to build the selected bindings. The files that constitute the bindings are built in the location that you specify. If the operation is successful, a Done message appears in the PeopleSoft Application Designer Build window.

  5. Compile the generated APIs using the following commands:

For Windows:

cd %PS_HOME%\class\PeopleSoft\Generated\CompIntfc
javac −classpath %PS_HOME%\class\psjoa.jar *.java

cd c:\pt8\class\PeopleSoft\ Generated\ PeopleSoft
javac −classpath %PS_HOME%\class\psjoa.jar *.java

For Mac/Linux:

cd $PS_HOME/class/PeopleSoft/Generated/CompIntfc
javac classpath $PS_HOME/class/psjoa.jar *.java

cd $PS_HOME/class/PeopleSoft/Generated/PeopleSoft
javac classpath $PS_HOME/class/psjoa.jar *.java
Read more about compiling the PeopleSoft API in Building APIs in Java.
  • Keep the Pooling Profile and the Reconnection tabs with their default entries. Click Test Connection to receive a Connection Successful message. If you receive an error, try the following resolutions based on the error message:

    • Unsupported major/minor version 51.0: Indicates that you are running with a 1.6 JRE. To resolve this, ensure that you are running with Java 1.7 and restart Studio.

    • java.lang.NoClassDefFoundError: psft/pt8/joa/ISession and java.lang.ClassNotFoundException: psft.pt8.joa.ISession: This exception indicates that you haven’t installed the psjoa.jar file. To access PeopleSoft Component Interface in your Mule flows, you must add the PeopleSoft Component Interface API to your project. Compile the API using the PeopleSoft Application Designer Build Window and provide the archive name as psjoa.jar. To solve the issue, go back to the Required dependencies panel and select the corresponding JAR file.

  • Configure your Component Interface White List according to the steps below:

    1. Click Create Object manually and click the button next to it.
      Global Element - White List

    2. In the pop-up window, select the (+) plus button to set the names of your component interfaces. Global Element - Object Builder

    3. Right-click a metadata item and select Edit the selected metadata field to set the values. You can also is double-click each item to modify the value inline. Global Element - Object Builder Item

    4. Click OK to save the list.

  • Click OK to save the global connector configurations.


Studio XML Editor

  • Ensure you have included the PeopleSoft namespaces in your configuration file.

<mule xmlns="http://www.mulesoft.org/schema/mule/core"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:peoplesoft="http://www.mulesoft.org/schema/mule/peoplesoft"
      xsi:schemaLocation="
               http://www.mulesoft.org/schema/mule/core
               http://www.mulesoft.org/schema/mule/core/current/mule.xsd
               http://www.mulesoft.org/schema/mule/peoplesoft
               http://www.mulesoft.org/schema/mule/peoplesoft/current/mule-peoplesoft.xsd">

      <!-- here go your flows and configuration elements -->

</mule>
  • Create a global element for PeopleSoft configuration using the following global configuration code:

<peoplesoft:config name="PeopleSoft" server="${mule.peoplesoft.server}" username="${mule.peoplesoft.username}" password="${mule.peoplesoft.password}" doc:name="PeopleSoft">
Parameter Description

name

Enter a name for the configuration with which it can be referenced later.

server

Enter the URL of the PeopleSoft instance.

username

Enter a username to log into PeopleSoft.

password

Enter the password.

doc:name

The default value is PeopleSoft.

  • Configure your Component Interface. Find the internal tag <peoplesoft:component-interface-ids-white-list ref="#[payload]"/> and replace it with the following code snippet:

<peoplesoft:component-interface-ids-white-list>
    <peoplesoft:component-interface-ids-white-list>
        COMPONENT_INTERFACE_NAME_1
    </peoplesoft:component-interface-ids-white-list>
    <peoplesoft:component-interface-ids-white-list>
        COMPONENT_INTERFACE_NAME_2
    </peoplesoft:component-interface-ids-white-list>
</peoplesoft:component-interface-ids-white-list>
  • Save the changes made to the XML file.

Updating From an Older Version

From 1.x.x to 2.0.0

Inside your flow, identify the peoplesoft:invoke-operation tag. It should look similar to the following snippet:

<peoplesoft:invoke-operation config-ref="PeopleSoft" doc:name="Find" type="CI_PERSONAL_DATA##Find"/>
  • Replace the parameter type with key.

  • Replace the operation symbol ## (double hash) with || (double pipe).

The final result should look like the following snippet:

<peoplesoft:invoke-operation config-ref="PeopleSoft" doc:name="Find" key="CI_PERSONAL_DATA||Find"/>

Using This Connector

PeopleSoft connector is an operation-based connector, which means that when you add the connector to your flow, you need to configure a specific operation, Invoke Component Interface, for the connector to perform. After you call the Invoke Component Interface, you can use the Component Name field to select a particular Component Interface and the Operation field to specify the method that you want it to execute. PeopleSoft connector allows you to perform five standard operations (Create, Find, Get, Save, Cancel) on each Component Interface (if available in your PeopleSoft instance), along with any CI-specific custom operations.

Use Cases and Demos

Listed below are the most common use cases for the PeopleSoft connector:

Find Employees

Retrieves one or more Employee records by invoking the Find operation of CI_PERSONA_DATA

Get Employee

Retrieves the complete information of a single Employee Personal Data record by invoking the Get operation of CI_PERSONA_DATA.

Save Employee

Updates the fields of a single Employee Personal Data record by invoking the Save operation of CI_PERSONAL_DATA Component Interface.

Save Employee From CSV File

Updates a single Employee Personal Data record by invoking the Save operation of CI_PERSONAL_DATA Component Interface.

Save Position From CSV File

Updates a single Position Data record by invoking the Save operation of CI_POSITION_DATA Component Interface.

Tips

Use the Test Connection feature to validate not only the connection to the PeopleSoft instance, but also the Component Interfaces defined in the White List.
  1. Open the PeopleSoft Global Element Configuration.

  2. Click the Test Connection button. If one ore more Component Interfaces names are invalid, you will get an error message.

  3. To solve this issue, just click the […​] button next to the Create Object manually option and provide the correct name for the Component.

DataSense Timeout

The metadata retrieval for the Save operation takes longer than the rest of the operations. Therefore, Studio might throw a timeout exception with the message "Problem while fetching metadata. The operation timed out and was not successful. You can configure this timeout in the Studio Preferences dialog."

DataSense Timeout

  1. Go to Windows > Preferences.

  2. Unfold the Anypoint Studio menu and select DataSense.

  3. Set the option DataSense Connection Timeout (in seconds) to 120.

  4. Click Apply.

  5. Click OK.

DataSense Timeout Config

If you click the Refresh metadata link in your flow settings and wait a little bit, the metadata for the Save operation should now be correctly populated.

DataSense Timeout Fix

Adding to a Flow

  • Create a new Mule Project in Anypoint Studio.

  • Add a suitable Mule Inbound Endpoint, such as the HTTP listener or File endpoint, to begin the flow.

  • Drag & drop the PeopleSoft Connector onto the canvas.

  • Click on the connector component to open the Properties Editor.

Flow Settings

  • Configure the following parameters:

Field Description

BASIC SETTINGS

Display Name

Enter a unique label for the connector in your application.

Connector Configuration

Connect to a global element linked to this connector. Global elements encapsulate reusable data about the connection to the target resource or service. Select the global PeopleSoft connector element that you just created.

Operation

Select Invoke Component Interface from the drop-down menu.

GENERAL

Component Name

Select the ID of the Components Interface you want to work with.

Operation

Select the operation you want to perform on the Component Interface previously defined. The PeopleSoft Connector lets you execute five standard operations on each Component Interface along with any CI-specific custom operations: Cancel, Create, Find, Get, Save.

Payload

  • None: Select this option if the input parameters are not required for the operation.

  • From Message: Select this option to define the operation based on the incoming payload.

  • Create Object manually: Select this option to define the search values manually. Mule provides an editor to facilitate this task.

  • Click the blank space on the canvas to save your configurations.


Example Use Case

Retrieve a collection of employee records.

Find Employees Flow

Anypoint Studio Visual Editor | XML Editor

  • Create a new Mule Project in Anypoint Studio.

  • Create a peoplesoft.properties file to hold your PeopleSoft credentials and place it under src/main/resources.

config.server=<HOST:PORT>
config.username=<USERNAME>
config.password=<PASSWORD>
config.componentInterfaceEditHistoryItems=<TRUE_OR_FALSE>
config.componentInterfaceInteractiveMode=<TRUE_OR_FALSE>
config.componentInterfaceGetHistoryItems=<TRUE_OR_FALSE>
  • Drag a Property Placeholder component and set the path to your credentials file.

<context:property-placeholder location="peoplesoft.properties"/>
  • Drag a HTTP endpoint into the canvas and configure the following parameters:

Parameter Value

Display Name

/HTTP

Connector Configuration

If no HTTP element has been created yet, click the plus sign to add a new HTTP Listener Configuration and click OK (leave the values to its defaults).

Path

/find

Server

${config.server}

Username

${config.username}

Password

${config.password}

Server, Username and Password use property placeholder syntax to load the credentials in a more simple and reusable way. Read more about this practice at Configuring Properties.
  • Drag the PeopleSoft connector next to the HTTP and configure it according to the steps below:

    • Add a new PeopleSoft Global Element by clicking the plus sign next to the Connector Configuration field.

    • Configure the global element according to the table below:

Parameter Value

Name

Enter a name for the configuration with which it can be referenced later.

Server

The URL of the PeopleSoft instance.

Username

The username credential to log into the PeopleSoft instance.

Password

The password credential to log into the PeopleSoft instance.

<peoplesoft:config name="PeopleSoft" server="${config.server}" username="${config.username}" password="${config.password}" doc:name="PeopleSoft">
  • Click Test Connection to confirm that Mule can connect with the PeopleSoft instance. If the connection is successful, click OK to save the configurations. Otherwise, review or correct any incorrect parameters, then test again.

  • Back in the properties editor of the PeopleSoft connector, configure the remaining parameters:

Parameter Value

Display Name

Find Employees (or any other name you prefer).

Connector Configuration

PeopleSoft (the reference name to the global element you have created).

Component Name

CI_PERSONAL_DATA (the component interface name that holds the employee data).

Operation

Find

Then, your XML should look like:

<peoplesoft:invoke-operation config-ref="PeopleSoft" key="CI_POSITION_DATA||Find" doc:name="Find Employees" />
Attribute Value

config-ref

PeopleSoft

key

CI_POSITION_DATA||Find

doc:name

Find

  • Add a Transform Message (DataWeave) between the HTTP endpoint and the PeopleSoft endpoint to map the structure required by the FIND method. You can also use a DataMapper. If DataSense is enabled, the input fields should be automatically populated:

DataWeave - Input

  • The input parameters expected by the FIND operation are:

PeopleSoft Field Query Param Optional?

KEYPROP_EMPLID

id

yes

PROP_NAME

name

yes

PROP_LAST_NAME_SRCH

last_name

yes

PROP_NAME_AC

name_ac

yes

  • Use a MEL expression to define a HTTP Query Param for all the fields. This way, each value can be dinamically set from the URL.

DataWeave - Map To CI_PERSONAL_DATA

 <dw:transform-message doc:name="Map To CI_PERSONAL_DATA">
            <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
{
        KEYPROP_EMPLID: inboundProperties['http.query.params'].id,
        PROP_NAME: inboundProperties['http.query.params'].name,
        PROP_LAST_NAME_SRCH: inboundProperties['http.query.params'].lastname,
        PROP_NAME_AC: inboundProperties['http.query.params'].nameac
}]]></dw:set-payload>
        </dw:transform-message>
Read more about MEL notation in Mule Expression Language Examples.
  • Add a Object to JSON transformer to display the response in the browser.

  • Add a Logger scope after the JSON transformer to print the data that is being passed to the PeopleSoft connector in the Mule Console. Configure the Logger according to the table below.

Parameter Value

Display Name

Employee List (or any other name you prefer)

Message

#[payload] (the output from DataWeave)

Level

INFO

  • Save and run the project as a Mule Application.

  • Open a web browser and hit the URL http://localhost:8081/find?id=MULE&name=&last_name=&name_ac=. If in your PeopleSoft database there are records whose KEYPROP_EMPLID constains the value "MULE", you should get a JSON collection with those records. Otherwise, an empty collection.

[
    {
    "KEYPROP_EMPLID": "MULE0001",
    "PROP_NAME": "Muley",
    "PROP_LAST_NAME_SRCH": "The Mule",
    "PROP_NAME_AC": ""
    },
    {
    "KEYPROP_EMPLID": "MULE0002",
    "PROP_NAME": "Second Muley",
    "PROP_LAST_NAME_SRCH": "The Backup Mule",
    "PROP_NAME_AC": ""
    },
    ...
]
In this example, all input parameters for the FIND operation are optional. If none of them defined (http://localhost:8081/find?id=&name=&last_name=&name_ac=), then PeopleSoft will retrieve the first 300 records available (the maximum limited by the server).

Code Example

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" xmlns:context="http://www.springframework.org/schema/context"
      xmlns:http="http://www.mulesoft.org/schema/mule/http"
      xmlns:data-mapper="http://www.mulesoft.org/schema/mule/ee/data-mapper"
      xmlns:json="http://www.mulesoft.org/schema/mule/json"
      xmlns:file="http://www.mulesoft.org/schema/mule/file"
      xmlns:peoplesoft="http://www.mulesoft.org/schema/mule/peoplesoft"
      xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
      xmlns:spring="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.mulesoft.org/schema/mule/core"
      version="EE-3.7.0"
      xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-current.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/peoplesoft http://www.mulesoft.org/schema/mule/peoplesoft/current/mule-peoplesoft.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.mulesoft.org/schema/mule/json http://www.mulesoft.org/schema/mule/json/current/mule-json.xsd
http://www.mulesoft.org/schema/mule/ee/data-mapper http://www.mulesoft.org/schema/mule/ee/data-mapper/current/mule-data-mapper.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd">
        <context:property-placeholder location="peoplesoft.properties"/>
        <spring:beans>
        <spring:import resource="classpath:DemoSpringBeans.xml"/>
    </spring:beans>
    <peoplesoft:config name="PeopleSoft" server="${config.server}" username="${config.username}" password="${config.password}" doc:name="PeopleSoft">
        <peoplesoft:component-interface-ids-white-list>
            <peoplesoft:component-interface-ids-white-list>CI_PERSONAL_DATA</peoplesoft:component-interface-ids-white-list>
            <peoplesoft:component-interface-ids-white-list>CI_POSITION_DATA</peoplesoft:component-interface-ids-white-list>
        </peoplesoft:component-interface-ids-white-list>
        <reconnect count="3"/>
    </peoplesoft:config>
    <asynchronous-processing-strategy name="Asynchronous_Processing_Strategy" maxThreads="5" minThreads="2" threadTTL="10" poolExhaustedAction="WAIT"
                                      doc:name="Asynchronous Processing Strategy"/>
    <http:listener-config name="HTTP_Listener" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
    <file:connector name="File" autoDelete="true" streaming="true" validateConnections="true" doc:name="File"/>
    <data-mapper:config name="Employee_Position_Data_to_CI_POSITION_DATA" transformationGraphPath="employee_position_data_to_ci_position_data.grf"
                        doc:name="Employee_Position_Data_to_CI_POSITION_DATA"/>
    <data-mapper:config name="Employee_Data_to_CI_PERSONAL_DATA" transformationGraphPath="employee_data_to_ci_personal_data.grf"
                        doc:name="Employee_Data_to_CI_PERSONAL_DATA"/>

    <flow name="Find_Employee_Flow">
        <http:listener config-ref="HTTP_Listener" path="/find" doc:name="HTTP"/>
        <dw:transform-message doc:name="Map To CI_PERSONAL_DATA">
            <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
{
        KEYPROP_EMPLID: inboundProperties['http.query.params'].id,
        PROP_NAME: inboundProperties['http.query.params'].name,
        PROP_LAST_NAME_SRCH: inboundProperties['http.query.params'].lastname,
        PROP_NAME_AC: inboundProperties['http.query.params'].nameac
}]]></dw:set-payload>
        </dw:transform-message>
        <peoplesoft:invoke-operation config-ref="PeopleSoft" key="CI_PERSONAL_DATA||Find" doc:name="PeopleSoft"/>
        <json:object-to-json-transformer doc:name="List&lt;CI_PERSONAL_DATA&gt; To JSON"/>
        <logger level="INFO" doc:name="Employee List" message="#[payload]"/>
    </flow>
</mule>

Demo

You can download a fully working example from this link.

See Also

  • For additional technical information regarding PeopleSoft Connector, please visit our online documentation. You may also want to access MuleSoft’s expert Support Team. In that case, you must subscribe to Mule ESB Enterprise and login to MuleSoft’s Customer Portal.

  • For more information on Oracle’s PeopleSoft Component Interface API, please visit their online documentation page.