Adapter for PeopleSoft CRM CIC

The Adapter for PeopleSoft CRM CIC allows users to interact with PeopleSoft CRM CIC systems from with Sterling B2B Integrator business processes. The business process can create, read, update, or delete their PeopleSoft CRM system data.

The Adapter for PeopleSoft CRM CIC (formerly the Vantive adapter) enables a Sterling B2B Integrator business process to perform create, read, update, and delete operations on PeopleSoft CRM CIC system data.

The following table provides an overview of the Adapter for PeopleSoft CRM CIC:

Category Description
System name None
Graphical Process Modeler (GPM) category None
Description Allows the users to interact with their PeopleSoft CRM CIC systems from within their Sterling B2B Integrator business processes. The business process may perform the following operations on their PeopleSoft CRM system data: create, read, update or delete.
Preconfigured? No. There may be multiple configurations of the adapter. One configuration of Adapter for PeopleSoft CRM CIC corresponds to one PeopleSoft CRM CIC server. If there is more than one PeopleSoft CRM CIC server running on different host/port, more configurations are needed.
Requires third-party files? If using Translation service to convert XML data, must have a DTD.
Platform availability Available for:
  • Microsoft Windows
  • Sun Solaris
  • HP-UX
  • IBM-AIX
Related services Translation service
Application requirements Requires a PeopleSoft CRM CIC server set-up with appropriate permission.
Invocation Runs as part of a business process. See Business Process Examples.
Business process context considerations None
Returned status values Basic status: Success or Failure Advanced Statuses: see Error Messages.
Restrictions Each adapter can have up to 20 simultaneous connections to the PeopleSoft CRM CIC server. This is to prevent the out of memory error on the server. If you set the Max. Connections parameter to a value greater than 20, the software will set it to 20.
Testing considerations The best way to test the Adapter for PeopleSoft CRM CIC is to compose an XML file and pass it to the business process to conduct create, update, read and delete operations and verify the result is correct after each step. Depending on the PeopleSoft CRM CIC system configuration, there might be some restrictions on some operations. If that is the case, the error message from the PeopleSoft CRM CIC system will be passed to the user in the output XML document, and the user can contact the PeopleSoft CRM CIC system administrator. In case any error occurred, the error message is also logged in the log file.

Requirements

The Adapter for PeopleSoft CRM CIC has the following requirements and restrictions:
  • HP-UX Platform
    • If your system has a C run-time library patch PHSS_22543 or PHSS_24627 installed, make sure you use the VanAPI version 9.0.2.2 or later.
    • Sterling B2B Integrator does not support creating related objects from the PS CRM adapter on the HP-UX platform.
  • AIX® Platform – The PeopleSoft CRM CIC server requires the following components for the Oracle 8.1.7 on AIX 4.3.3 platform: Vantive API needs C run-time libraries with level 5.0.0.0 or later.
  • Compatibility with Vantive 8 servers – The VanAPI library version 8.5.4.20 does not work with Sterling B2B Integrator. Do not use this version's shared libraries on any platform. Use VanAPI version 8.5.4.11 only.

How the Adapter for PeopleSoft CRM CIC Works

Use the Adapter for PeopleSoft CRM CIC to read or write data to your PeopleSoft CRM CIC system. Your customer input XML document specifies the operation and the field or record on which you want to operate, and the Adapter for PeopleSoft CRM CIC translates this to PeopleSoft CRM CIC requests.

For example, you have customer information stored in PeopleSoft CRM CIC. To provide the marketing department with the customer address information from the PeopleSoft CRM CIC system, you can access the information within a business process in Sterling B2B Integrator using the Adapter for PeopleSoft CRM CIC to read this information and return it in the form of an XML output file.

The following steps summarize how you might use the Adapter for PeopleSoft CRM CIC in a business process.
  1. Sterling B2B Integrator processes a file and passes it to the Adapter for PeopleSoft CRM CIC at run time.
  2. The Adapter for PeopleSoft CRM CIC parses the file.
  3. The Adapter for PeopleSoft CRM CIC performs the operation specified in the file on the PeopleSoft CRM CIC system.
  4. The result is passed back to Sterling B2B Integrator.
  5. Sterling B2B Integrator performs the next operation in the business process.
    Note: Results from one environment may not be returned in the same order as the results from another environment.

Data Structure and the Adapter for PeopleSoft CRM CIC

The Adapter for PeopleSoft CRM CIC operates on data and records contained in objects on a PeopleSoft CRM CIC server. Do not use the adapter to change the underlying structure of those objects.

The Adapter for PeopleSoft CRM CIC operates on the logical view of the PeopleSoft CRM CIC data as supplied by the VanAPI-Java Technology Edition (JTE). The VanAPI library contains public C-style functions that establish a connection to the PeopleSoft CRM CIC server and manipulate the data in a PeopleSoft CRM CIC application database.

In the PeopleSoft CRM CIC system, data has the following structure:
  • Object hierarchy
  • Object type
  • Record set or record
  • Field

Object Hierarchy

The PeopleSoft CRM CIC system organizes data in a hierarchy:
  • Main object – Highest-level object. Can contain unlimited related (peer) objects and child objects.
  • Related object – Can contain unlimited related objects and child objects. A related object has to belong to a main object or another related object. A related object can be a main object if accessed directly.
  • Child object – Lowest-level object. Cannot contain related objects or child objects. A child object has to belong to either a main object or a related object. A child object cannot be a main object in another context.

The following figure shows an example of object relationships in the PeopleSoft CRM CIC client: One main object, company, contains one related object, contact. Company contains two child objects, address and territory coverage. In addition, contact contains one related object, opportunity, and two child objects, address and category. Opportunity contains one child object.

Object Type

An object type represents a real world entity or logical concept that is essential for a business organization. An object type can be an account or company. All records in the PeopleSoft CRM CIC system have an associated object type.

Record Set or Record

A record set contains instances of an object type. A record is accessed through a record set, and is one instance of an object type (main, related, or child). For example, an instance of the object type company is a record that could contain the data for Acme, Inc. The data contained by this record is in fields.

Field

A field is the lowest container of data in the hierarchy, and represents a single element. A record can contain one or more fields. For example, in the Acme, Inc. record, one field might contain the number of employees. The Adapter for PeopleSoft CRM CIC enables creating, reading, updating, or deleting values in the fields.

Adapter for PeopleSoft CRM CIC Operations

The operations supported by the Adapter for PeopleSoft CRM CIC are create, read, update, and delete (CRUD). To operate on an object type, you need to specify an object path. In the object path, specify all object types by their labels, which correspond to the labels in the PeopleSoft CRM CIC client interface. For example, if you want to update a customer address record, you must specify the customer object and the address object.

The object element maps to the model hierarchy. Element object.1 is always a main object, and the nested object elements can be either child or related objects. If an element represents a child object, then it cannot have an object element as its child.

The following tags are used in the Adapter for PeopleSoft CRM CIC XML:
  • Request Tag – Defines the operation being requested (create, read, update, delete). You can perform operations on multiple objects at one time, but they must have the same object type (for example, address).
  • Object Tag – Includes a label attribute, which is the display label in the PeopleSoft CRM CIC client GUI. This label is the name of any main, related, or child objects. An object can contain another object, which can contain another object, and so on. The highest-level object has to be a main object. Anything between the main object and the lowest-level object has to be a related object. The lowest-level object can either be a main, related, or child object.
  • Search Tag – Defines the field name on which to search; use the search element to represent the search criteria. Each search element is one search criterion. The field attribute is the display label of the column name in the table. The operator attribute is one of the following operators: =, <>, <, >, in, ^ in, btwn, like, sndx, pat. You can perform searches on any object type.

    The value of the search element is the value to compare against. You can specify search criteria for each level of object and all of them must be satisfied to get the read results. The search criteria are implicitly tied together with the AND statement. The PeopleSoft CRM CIC API does not support OR.

Field Tag – Defines the fields to be created, searched (read), updated, or deleted. Field tags are included on only the lowest-level object.

XML tags that occur multiple times in a document must be unique if they require fixed data from the DTD. To make the tags unique, append a period (.) and a number after the tag.

Create

The create operation creates a record, which can be a main, related, or child object. The operation attribute of the request element must be Create. The create operation creates records on only one object type at a time. For example, in the following XML, although you can specify both Customer and Addresses, you can create records only on the lowest level object, in this case, Addresses. If you want to create a customer, which has customer addresses, you must perform separate operations for these object types.

The name attribute represents the display label of the columns to write data to. You can write more than one field from the lowest-level object in each create operation.

The following XML example shows a create operation for a Customer Address record. The Customer object has search criteria that specify on which customer object or objects the address record will be added. The Customer search criteria set the phone number to 799-4721.

The address record that is created sets the following values:
  • Type is set to Ship To.
  • City is set to Aspen.
  • State/Province is set to CO.
<PS_CRMAdapter>
   <request operation="Create">
       <object.1 label="CUSTOMER">
    	<search.1 field="Phone" operator="=">799-4721</search.1>
           <object.2 label="Addresses">
               <field.1 name="Type">Ship To</field.1>
     		   		<field.2 name="City">Aspen</field.2>
     		   <field.3 name="State/Province">CO</field.3>
           </object.2>
         </object.1>
   </request> 
</PS_CRMAdapter>

The response for the create operation does not have result records. The status attribute indicates whether the operation succeeded or failed. The statusText attributes provide the number of records created if the operation succeeded or a detailed error message if the operation failed.

The following XML shows a create response:

<PS_CRMAdapter>
	<results status="success" statusText="2 Record(s) Created."/> 
</PS_CRMAdapter>

Read

The operation attribute of the request element must be Read. The read operation reads data from the field level and one object type at a time. For example, in the following XML example, you cannot read data for both Customer and Addresses; you can read data only for the lowest-level object, which is Addresses.

The name attribute represents the display label of the columns to read data from. You can read more than one field from the lowest-level object in each read operation.

The following XML example shows a read operation for the city and state/province information of the Mail To address from the customer whose phone number is 555-1234.

<PS_CRMAdapter>
	<request operation="Read">
		<object.1 label="CUSTOMER">
			<search.1 field="Phone" operator="=">555-1234</search.1>
			<object.2 label="Addresses">
				<search.2 field="Type" operator="=">Mail To</search.2>
				<field.1 name="City"/>
				<field.2 name="State/Province"/>
			</object.2>
		</object.1>
	</request> 
</PS_CRMAdapter>

The following XML example shows the status attribute report for a successful read operation. Each of the result elements is a record returned from the read operation. The field elements are the same as those in the request XML, except the values are the data returned from the read operation.

<PS_CRMAdapter>
	<results status ="success" statusText="2 Record(s) Read.">
		<result>
			<field.1 name="City">Dublin</field.1>
			<field.2 name="State/Province">OH</field.2>
		</result>
		<result>				
			<field.1 name="City">Denver</field.1>
			<field.2 name="State/Province">CO</field.2>
		</result>
	</results> 
</PS_CRMAdapter>

Update

The update operation enables you to modify fields in a record. The operation attribute of the request element must be Update. Provide search criteria to select the records on which you want to operate.

The update operation updates data for only one object type at a time. For example, in the following XML, although you can specify search criteria for both Customer and Addresses, you can update data on only the lowest-level object, which is Addresses.

The name attribute represents the display label of the columns to update data. The user can update more than one field from the lowest-level object in each update operation.

The following XML example shows an update operation for the city and state/province information of the Mail To address for the customer whose phone number is 555-1234 and who has an address type set to Mail To.

<PS_CRMAdapter>
	<request operation="Update">
		<object.1 label="CUSTOMER">
			<search.1 field="Phone" operator="=">555-1234</search.1>
			<object.2 label="Addresses">
					<search.2 field="Type" operator="=">Mail To</search.2>
				<field.1 name="City">Aspen<field.1>
				<field.2 name="State/Province">CO</field.2>
			</object.2>
		</object.1>
	</request> 
</PS_CRMAdapter>

The response for the update operation does not have any result records and is the same as a response from the create and delete operation.

Delete

The delete operation enables you to delete PeopleSoft CRM CIC records. You provide the search criteria to select the records to delete. The operation attribute of the request element must be Delete.

The following XML example shows a delete operation for address records. Each address record is a child of a customer with the phone number 799-4721 and an address type set to Mail To. The address records are deleted in this operation.

<PS_CRMAdapter>
	<request operation="Delete">
	<object.1 label="CUSTOMER">
	<search.1 field="Phone" operator="=">799-4721</search.1>
		<object.2 label="Addresses">
 	 <search.2 field="Type" operator="=">Mail To</search.2>
	</object.2>
	</object.1>
	</request> 
</PS_CRMAdapter>

The response for the delete operation does not have any result records.

Building Adapter for PeopleSoft CRM CIC DTDs

You must create DTDs for your operations if you want to use the Translation service. There are five different types of DTDs, one for each operation (create, read, update, and delete) and one for the response document. Create a DTD for each object type you want to operate on, because only one object type can be operated on at a time. For example, you might have one DTD for customer (main object), but if you want to operate on customer address (child object), you need to create a separate DTD.

Input DTDs

A DTD is required for the Translation service to translate the Adapter for PeopleSoft CRM CIC input XML document to and from other documents.

The following XML example shows a DTD for reading fields on a related object. The related object type in this case is Customer Address. Read the DTD in the following way:
  • The request operation is fixed and set to Read.
  • The main object is fixed and set to CUSTOMER.
  • Search criteria are specified for Customer, including Name =.
  • The child object is fixed and set to ADDRESSES.
  • The fields that are retrieved are Street1 and Street2 on the address objects.
<?xml version='1.0' encoding='UTF-8'?>
<!ELEMENT PS_CRMAdapter (request)> 
<!ELEMENT request (object.1)> 
<!ATTLIST request operation CDATA #FIXED "Read"> 
<!ELEMENT object.1 (search.1, object.2)> 
<!ATTLIST object.1 label CDATA #FIXED "CUSTOMER">
<!ELEMENT search.1 (#PCDATA)> 
<!ATTLIST search.1 field CDATA #FIXED "Name" operator CDATA #FIXED "=">
<!ELEMENT object.2 (field.1, field.2?)> 
<!ATTLIST object.2 label CDATA #FIXED "ADDRESSES">
<!ELEMENT field.1 EMPTY> 
<!ATTLIST field.1 name CDATA #FIXED "Street1">
<!ELEMENT field.2 EMPTY> 
<!ATTLIST field.2 name CDATA #FIXED "Street2"> 
Output DTDs 
The results tag contains the results for the operation being performed. For more 
information, see Error Messages. The following XML example shows an output
DTD for reading fields on a child object, customer address. 
The result returns one to many records, each containing two fields, Street 1 and
Street 2. 
<?xml version='1.0' encoding='UTF-8' ?>
<!ELEMENT PS_CRMAdapter (results)> 
<!ELEMENT results (result*)> 
<!ATTLIST results status CDATA #IMPLIED
      	      statusText CDATA #IMPLIED > 
<!ELEMENT result (field.1, field.2)> 
<!ELEMENT field.1 (#PCDATA)> 
<!ATTLIST field.1 name CDATA #FIXED "Street1">
<!ELEMENT field.2 (#PCDATA)> 
<!ATTLIST field.2 name CDATA #FIXED "Street2">

Error Messages

The PeopleSoft CRM CIC server returns an error status for the following conditions:
  • Field – The supplied field value does not match the list of valid values for the specified field.
  • Data type – The supplied field value has an invalid data type for the specified field.
  • Object type/object path error – An invalid object type or object path is specified.
  • Privileges – The user does not have appropriate permissions for the attempted operation.

The response XML returns a status message in the form of success or failure. In some cases, an advanced status message (called statusText in DTD) is returned. The following table describes the advanced status messages:

Message Description
Request XML document is not valid An error occurred when parsing the XML; the XML input document is structured incorrectly.
General adapter error Something unexpected occurred in the Adapter for PeopleSoft CRM CIC.
Response XML error An error was detected while the response XML was created.
Cannot get a connection to PeopleSoft CRM CIC server Connection to the PeopleSoft CRM CIC server was not completed for one of the following reasons:
  • The user name and password are already in use.
  • The connection pool is full.
  • An error occurred in the PeopleSoft CRM CIC server while trying to obtain the connection.
Failed to perform operation System error.
No records found No records were found in the read operation; the status is still Success.

Implementing the Adapter for PeopleSoft CRM CIC

To implement the Adapter for PeopleSoft CRM CIC for use in a business process:
  1. Activate your license for the Adapter for PeopleSoft CRM CIC. See An Overview of Implementing Services.
  2. Install the Adapter for PeopleSoft CRM CIC. See Installing the Adapter for PeopleSoft CRM CIC.
  3. Create an Adapter for PeopleSoft CRM CIC configuration. See Creating a Service Configuration.
  4. Configure the Adapter for PeopleSoft CRM CIC. See Configuring the Adapter for PeopleSoft CRM CIC for Application.

Installing the Adapter for PeopleSoft CRM CIC

To install the Adapter for PeopleSoft CRM CIC, run the install3rdParty.sh script to install the required PeopleSoft CRM CIC .jar file (vanjavi.jar) and shared libraries.

The Adapter for PeopleSoft CRM CIC requires operating system-specific shared libraries. The supported operating systems are Solaris™, HP-UX, and AIX.

The following required library files are specified by platform:
  • Solaris – libvanjavi.so, libvanjavi_g.so, vanapi.so, vanconv.so, libvanres.so.1
  • HP-UX – libvanjavi.sl, libvanjavi_g.sl, libvanres.sl, vanapi.h, vanconv.h, vanapi.sl
  • AIX – libvanjavi.so, libvanjavi_g.so, libvanres.a, vanapi.so, vanconv.a

Contact IBM® Customer Support for a custom installation of the Adapter for PeopleSoft CRM CIC for your platform version.

Pass the absolute path for the library files to the install3rdParty.sh script.

For the PeopleSoft CRM CIC .jar files, run the following script from the folder where you have Sterling B2B Integrator installed:

./install3rdParty.sh <Vendor> <Version> -j <location of 
         the .jar>

The following figure shows an example of the script for the PeopleSoft CRM CIC .jar files:

./install3rdParty.sh PeopleSoftCRM 9.0 -j /home/PeopleSoftCRM/vanjavi.jar

For the PeopleSoft CRM CIC shared libraries, run:

./install3rdParty.sh <Vendor> <Version> -l <location of 
         the lib>

The following figure shows an example of the script for the PeopleSoft CRM CIC shared libraries:

./install3rdParty.sh PeopleSoftCRM 9.0 -l /home/PeopleSoftCRM/solaris
                                                  /vanjavi.so

Configuring the Adapter for PeopleSoft CRM CIC for Sterling B2B Integrator

The following table describes the fields used to configure the Adapter for PeopleSoft CRM CIC in Sterling B2B Integrator:

CAUTION:
The values for PeopleSoft CRM CIC Host, PeopleSoft CRM CIC Port, Default Login, Default Password, Idle timeout, Connection wait timeout, and Max. connections are set up in the service configuration, and cannot be overridden in the business process parameters.
Field Description
Name Unique and meaningful name for the adapter configuration. Required.
Description Meaningful description for the adapter configuration, for reference purposes. Required.
Select a Group Select one of the options:
  • None – You do not want to include this configuration in a group at this time.
  • Create New Group – You can enter a name for a new group in this field, which will then be created along with this configuration.
  • Select Group – If you have already created one or more groups for this service type, they are displayed in the list. Select a group from the list.
PeopleSoft CRM CIC Host Host name or IP address of the computer where the PeopleSoft CRM CIC system is running. Do not specify the PeopleSoft CRM CIC host name in the business process. Required.
PeopleSoft CRM CIC Port IP port number on the host that is listening for requests. Do not specify the port number in the business process. Required.
Default Login Default login name for authentication with the PeopleSoft CRM CIC system. This login name is used if the business process does not specify login parameters. Optional.
Default Password Default password for authentication with the PeopleSoft CRM CIC system. The default password is used if the business process does not specify login parameters. Optional.
Idle timeout (sec) Amount of time in seconds to allow a PeopleSoft CRM CIC connection to idle before it is closed. The default value is 600. Required.
Connection wait timeout (sec) Amount of time in seconds to wait for a PeopleSoft CRM CIC connection to become available before sending an error message. The default value is 60. Required.
Max. Connections Maximum number of connections to PeopleSoft CRM CIC that the adapter is allowed to have open at one time. The default value is 5. Because of the amount of memory consumed by a connection, there is an upper limit of 20. If a value larger than 20 is entered, the Adapter for PeopleSoft CRM CIC converts the value to 20 without sending an error message. Required.

Connection Management

The PeopleSoft CRM CIC system cannot handle multiple users with the same login parameters accessing PeopleSoft CRM CIC simultaneously. The Adapter for PeopleSoft CRM CIC uses a connection management component that operates on the premise that each Adapter for PeopleSoft CRM CIC should connect to a different PeopleSoft CRM CIC system. If a connection to PeopleSoft CRM CIC is in use for the specified login name and password combination, a new request is delayed until the business process using the existing connection is finished. The Adapter for PeopleSoft CRM CIC returns an error if the business process has not finished using the connection before the connection wait timeout period has expired.

The connection management component supports two types of PeopleSoft CRM CIC connections:
  • Default – Used if the business process does not specify login parameters. If the business process does not specify login parameters, the configuration login parameters are used. An error occurs if no login parameters are specified in either the business process or the adapter configuration.
  • Trusted connections – Used if login parameters are specified in the business process.

Both trusted and default connections are opened when requested, if not already open. An open connection is closed after the idle timeout period has expired, or when the connection is idle and a new connection needs to be opened.

Business Process Examples

The Adapter for PeopleSoft CRM CIC can be invoked from a business process, as shown in the following example:

<operation name="PeopleSoft CRM "> 
      <participant name="PSCRMTestAdapter"/> 
     <output message="outputMessage"> 
         <assign to="." from="*"></assign> 
     </output> 
      <input message="inputMessage"> 
         <assign to="." from="*"></assign> 
     </input> 
</operation> 

You can also pass in values for login and password to overwrite the default login and password to conduct operations that require more privileges. Following is an example of a business process document with user specified login and password:

<process name="PSCRMAdapter_Joe"> 
  <sequence> 
   <operation name=" PeopleSoft CRM "> 
     <participant name=" PSCRMTestAdapter "/> 
     <output message="outputMessage"> 
       <assign to="Login">Joe</assign> 
       <assign to="Password">12345</assign> 
       <assign to="." from="*"></assign> 
     </output> 
      <input message="inputMessage"> 
       <assign to="." from="*"></assign> 
     </input> 
    </operation> 
 
 </sequence> 
</process>