X

Best Practices from Oracle Development's A‑Team

Using eBS Adapter in Integration Cloud Service - Part 2: Configure and Test ISG REST Services

Stefan Koser
Consulting Solutions Architect

Introduction

Integration Cloud Service (ICS) enables connecting applications in the cloud or on-premise. It also provides an adapter for Oracle eBusiness Suite. This eBS adapter is different than the eBS adapter in SOA Suite - it does not use a database connection. Instead it uses the REST services provided by eBS as part of Integrated SOA Gateway (ISG).

Update August 2019: Please note that this blog was written in 2016 when eBS 12.2.4 was available. Current version is 12.2.8. Although much of this blog still applies, some steps may be different meanwhile. Please visit https://docs.oracle.com/cd/E26401_01/index.htm for the latest

This article describes the steps needed to get eBusiness Suite including ISG REST services ready - either for using it with any REST client or with ICS. ISG requires some additional patches on top of eBS 12.2.4 - this was shown in this first part , see here.

In this second part, we will show how to enable the REST services, how to enable the metadata provider for ICS and test eBS REST services, first from a native REST client (SOAPUI) and then from ICS. All steps except chapter 4 are also relevant if you want to use Oracle eBusiness Suite ISG REST services without ICS.

Chapter 1 - Configure Integrated SOA Gateway (ISG) in eBS 12.2.4

Enabling ASADMIN User with the Integration Administrator Role

We will execute the steps in section 3 of the MOS note:

Log in to Oracle E-Business Suite as a SYSADMIN user and enter the associated password.
Expand the User Management responsibility from the main menu of the Oracle E-Business Suite Home Page.

Click the Users link to open the User Maintenance page (under "Vision Enterprises")
Enter 'ASADMIN' in the User Name field and click Go to retrieve the 'ASADMIN' user.

Click the Update icon next to the ASADMIN user to open the Update User window.
Remove the Active To date field and click Apply.

Click the Reset Password icon next to ASADMIN user to open the Reset Password window. Make sure that ASADMIN's password is at least eight characters long.
Enter new password twice and click Submit.

In the Update User window, click Assign Roles.
In the search window, select Code from the Search By drop-down list and enter "UMX|FND_IREP_ADMIN" in the value text box.
Click Select.
Enter a justification in the Justification field and click Apply. You will see a confirmation message indicating you have successfully assigned the role.

In my case, a warning is displayed (which can be ignored because the server is restarted later anyway):

Updates to Role data will not be visible in the application until the following processes are started : Workflow Background Engine

Change ISG agent properties

Execute the following as user oracle (as described in step 3 of MOS note):

mkdir /u01/install/VISION/isg_temp

Create /u01/install/VISION/fs2/inst/apps/EBSDB_ebs/soa/isgagent.properties to update the following line:

EBSDB.ISG_TEMP_DIRECTORY_LOCATION=/u01/install/VISION/isg_temp/

Edit /u01/install/VISION/fs1/inst/apps/EBSDB_ebs/soa/isgagent.properties to update the following line:

EBSDB.ISG_TEMP_DIRECTORY_LOCATION=/u01/install/VISION/isg_temp/

Configure ISG

Run

cd /u01/install/VISION

. ./EBSapps.env run

ant -f $JAVA_TOP/oracle/apps/fnd/txk/util/txkISGConfigurator.xml ebsSetup -DforceStop=yes

as described in step 4 of the MOS note. Enter the passwords as required - including the password of ASADMIN as chosen in the previous step.  If asked

The script will forcefully stop the Weblogic Servers now. Do you want to proceed (yes/no)? (yes, no)

then select "yes" to restart the servers.

Result should be after a couple of minutes "BUILD SUCCESSFUL".

Execute fs_clone

Run

adop phase=fs_clone

Verify that the result is

adop exiting with status = 0 (Success)

Restart the Apps tier.

Chapter 2 - Test eBS REST Services using a PL/SQL package

We will demonstrate deploying a REST service using the HR_EMPLOYEE_API package.

Deploy CreateEmployee REST Service

Login to eBS in a browser using SYSADMIN. Navigate to Integrated SOA Gateway, Integration Repository and search for "Internal Name"  "HR_EMPLOYEE_API":

ISG-employee-search

Select Employee and move to the "REST Web:Service" tab. Deploy selecting "Create_Employee" and entering "employee" as Service Alias:

ISG-employee-before-deploy

This should show status "Deployed":

ISG-employee-after-deploy

Click on "WADL" to save the definition file for later.

Then grant the execution to Group "US SuperXXX": Click on "Grant", then select "Group of Users" and click on the search icon:

ISG-employee-before-create-grant2

Search for "US Super%" and select the first result:

ISG-employee-before-create-grant4

The result after the grant should report success and show the icon in the Grant column:

ISG-employee-after-create-grant

Now we can procees with testing this REST service from a client.

Send Request to CreateEmployee REST Service

Create a REST POST request using import of the WADL file in SOAPUI. Add HRMS/welcome as http basic authentication. Don't forget to include the http headers for Content-Language, Content-Type and Accept - and past all lines after "User-Agent" below as payload.

A sample of a correct request would look in Raw mode like:

Accept-Encoding: gzip,deflate 
Authorization: Basic SFJNUzp3ZWxjb21l 
Content-Language: en-US 
Content-Type: application/json 
Accept: application/json 
Content-Length: 886 
Host: ebs.example.com:8000 
Connection: Keep-Alive 
User-Agent: Apache-HttpClient/4.1.1 (java 1.5) 
{
"CREATE_EMPLOYEE_Input": {
"@xmlns": "http://xmlns.oracle.com/apps/per/rest/createEmployee/create_employee/",
"RESTHeader": {
"xmlns": "http://xmlns.oracle.com/apps/per/rest/createEmployee/header",
"Responsibility":"US_SHRMS_MANAGER",
"RespApplication":"PER",
"SecurityGroup":"STANDARD",
"NLSLanguage":"AMERICAN",
"Org_Id" :"241"
},
"InputParameters": {
"P_HIRE_DATE": "2015-06-28T09:00:00",
"P_BUSINESS_GROUP_ID":"202",
"P_LAST_NAME":"Mueller",
"P_SEX":"M",
"P_PER_COMMENTS":"Create From REST Service",
"P_DATE_OF_BIRTH":"1979-01-04T09:00:00",
"P_EMAIL_ADDRESS":"michael.mueller@oracle.com",
"P_FIRST_NAME":"Michael",
"P_KNOWN_AS":"Michael",
"P_MARITAL_STATUS":"S",
"P_MIDDLE_NAMES":"Mueller",
"P_NATIONALITY":"AM",
"P_NATIONAL_IDENTIFIER":"183-25-2523",
"P_REGISTERED_DISABLED_FLAG":"N",
"P_COUNTRY_OF_BIRTH":"US",
"P_REGION_OF_BIRTH":"West",
"P_TOWN_OF_BIRTH":"San Francisco"
}
}
}

Execute the request in SOAPUI:

ISG_CreateEmployee_SOAPUI

A sample of a correct response would be

Date: Thu, 21 Apr 2016 14:25:36 GMT 
Server: 
Content-Length: 791 
X-ORACLE-DMS-ECID: 005CFxvqUBGDkZWFLzUKOA00004x00008d 
X-Frame-Options: SAMEORIGIN 
Keep-Alive: timeout=15 
Connection: Keep-Alive 
Content-Type: application/json 
Content-Language: en 

{
"OutputParameters" : 
"@xmlns:xsi" : "http://www.w3.org/2001/XMLSchema-instance",
"@xmlns" : "http://xmlns.oracle.com/apps/per/rest/employee/create_employee/",
"P_EMPLOYEE_NUMBER" : "2401",
"P_PERSON_ID" : "32853",
"P_ASSIGNMENT_ID" : "34077",
"P_PER_OBJECT_VERSION_NUMBER" : "2",
"P_ASG_OBJECT_VERSION_NUMBER" : "1",
"P_PER_EFFECTIVE_START_DATE" : "2015-06-28T00:00:00.000-04:00",
"P_PER_EFFECTIVE_END_DATE" : "4712-12-31T00:00:00.000-05:00",
"P_FULL_NAME" : "Mueller, Michael Mueller (Michael)",
"P_PER_COMMENT_ID" : "306",
"P_ASSIGNMENT_SEQUENCE" : {
"@xsi:nil" : "true"
},
"P_ASSIGNMENT_NUMBER" : "2401",
"P_NAME_COMBINATION_WARNING" : "0",
"P_ASSIGN_PAYROLL_WARNING" : "0",
"P_ORIG_HIRE_WARNING" : "0"
}
}

Congratulations - you have executed your first REST service on eBusiness Suite!

Troubleshooting

HTTP 500 Internal Server Error

In case you use the wrong value for P_BUSINESS_GROUP_ID (or for any other LOV-based element) in the request for CREATE_EMPLOYEE, the server returns an http 500.

{
"ISGServiceFault" : {
"Code" : "ISG_SERVICE_EXECUTION_ERROR",
"Message" : "Error occurred while executing the web service request",
"Resolution" : "System error, please see service log trace for details.",
"ServiceDetails" : {
"ServiceName" : "employee",
"OperationName" : "create_employee",
"InstanceId" : "0"
}
}
}

The same is the case if you have a typo somewhere in the JSON element names.

Chapter 3 - Configure Metadata Provider for using ISG REST with ICS

Open eBS homepage in a broser and login with user SYSADMIN. Navigate to Integrated SOA Gateway, Integration Repository.Click on "Search" button on the right, enter "oracle.apps.fnd.rep.ws.service.EbsMetadataProvider" in the field "Internal Name" and click "Go" (If this doesn't list anything, you are still missing a patch on the EBS instance. Please check the first part of this article).

Then click on "Metadata Provider":
ISG-Metadata-Provider

Click on "REST Web Service" tab, then enter "provider" as is in the "Service Alias" field and click the button "Deploy".
Navigate to "Grants" tab and give grants on all methods to "All users".

Now you are ready to use the ISG REST services from ICS.

Troubleshooting

If you dont get any result when searching for "oracle.apps.fnd.rep.ws.service.EbsMetadataProvider", then you have missed to install one or more patches listed in part 1 of this article.

Chapter 4 - Test eBS REST Service from ICS

A previous post by Greg Mally explains how to setup ICS to eBS using the ICS Connectivity Agent:

http://www.ateam-oracle.com/round-trip-on-premise-integration-part1_ics-to-ebs/

Additionally we will show here how to directly connect ICS with eBS without an agent. This works only if you have exposed eBS REST services over public internet.

For this purpose, I have reconfigured the eBS VM to use a public DNS hostname and changed to port to 80.

In ICS, create a new connection with Oracle eBusiness Suite - name it  for example EBS_TEST:

Enter the connection URL for the server and use HRMS/welcome as credentials. Test and Save the connection.

We want to create a new integration using SOAP inbound and this eBS connection outbound: Create a new SOAP connection, upload the WSDL (from here) and select "No Security". Test and Save it. (For simplicity, I have left out any SOAP faults). Create a new integration named "Create_Employee". Drop the EBS connection in the target side:

Enter a name for the endpoint, for example "EBS_CreateEmployee".

ISG2-ICS-DropConnection1

Select Product Family "Human Resources Suite", Product "Human Resources" and API "Employee". The screen should look like:

ISG2-ICS-select-apipng

Select Next.

Select the operation Create_Employee:

ISG2-ICS-select-createEmployee-method

Select Next, then Done.

Your integration should look similar to:

 

ISG2-ICS-integration-after-drop-ebs

Drop the SOAP Connection as source and save the integration:

ISG2-ICS-after-drop-SOAP

Add the request mapping:

ISG2_ICS-create-mapping-for-SOAP-request

Add the response mapping:  Map "P_EMPLOYEE_NUMBER" to "result":

ISG2_ICS-create-mapping-for-SOAP-response  ISG2_ICS-tracking-for-SOAP-test

Create the response mapping:

ISG2_ICS-create-mapping-for-SOAP-response

Add a tracking field:

ISG2_ICS-tracking-for-SOAP-test

The result should look like:

ISG-ICS-soap-ebs-integration-final

Activate the integration. Then copy the WSDL URL and use that to create a new SOAPUI project.

 

In SOAPUI, add the payload like below and add http basic auth, WS Username Token and WS-Timestamp:

<soapenv:Body>
<cre:process>
<cre:lastname>Mueller</cre:lastname>
<cre:middlenames>Edwin</cre:middlenames>
<cre:firstname>Michael</cre:firstname>
<cre:knownas>Michael</cre:knownas>
<cre:email>michael.mueller@oracle.com</cre:email>
<cre:comments>Create From SOAP Service</cre:comments>
<cre:sex>M</cre:sex>
<cre:martialstatus>S</cre:martialstatus>
<cre:businessgroup>202</cre:businessgroup>
<cre:dateofbirth>1979-01-04T09:00:00</cre:dateofbirth>
<cre:nationality>AM</cre:nationality>
<cre:nationalid>183-25-2523</cre:nationalid>>
<cre:countryofbirth>US</cre:countryofbirth>
<cre:regionofbirth>West</cre:regionofbirth>
<cre:townofbirth>San Francisco</cre:townofbirth>
<cre:hiredate>2015-06-28T09:00:00</cre:hiredate>
</cre:process>
</soapenv:Body> 

 

 

After executing the request you should get the created employee id as response:

<nstrgmpr:processResponse xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:nstrgmpr="http://xmlns.oracle.com/CreateEmployee/CreateEmployeeSOAP/CreateEmployeeProcess" xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <nstrgmpr:result>2411</nstrgmpr:result>
</nstrgmpr:processResponse>

Congratulations - you have executed the ICS integration using eBusiness Suite Adapter successfully!

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.Captcha

Recent Content