Introduction

Anypoint Connector for Oracle E-Business Suite (EBS) provides real-time connectivity to query and update Oracle EBS using web services and message queues. The connector has been developed for the Oracle EBS v12.1.x. For more information about Oracle EBS, visit the Oracle site.

Read through this user guide to understand how to set up and configure a basic flow using the connector. Track feature additions, compatibility, limitations and API version updates with each release of the connector using the Oracle E-Business Suite (EBS) Connector Release Notes. Review the connector operations and functionality using the Technical Reference alongside the demo applications.

MuleSoft maintains this connector under the Premium support policy.

Oracle EBS connector provides integration to the following:

  • Financial Management and Order Management Modules: Full API coverage for Financials and Order Management services.

  • PL/SQL Integration: Both standard PL/SQL or user-defined PL/SQL can be invoked.

  • XML Gateway: Inbound and Outbound, to send and receive message to and from EBS.

  • Business Events: The ability to receive messages when an event is fired in EBS, via the WF_JMS_JMS_OUT topic.

The complete list of supported web service endpoints can be found here.

Prerequisites

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

  • A working knowledge of Oracle EBS.

  • Read the relevant documentation on Web Services and Integration Scenarios for your Oracle EBS version.

A definition and detailed explanation of the Oracle EBS terms and concepts used here are freely available in the Oracle documentation set of your Oracle installation.

This document assumes that you are familiar with Mule, Anypoint Connectors, and Anypoint Studio Essentials. To increase your familiarity with Studio, consider completing a Anypoint Studio Tutorial. This page requires some basic knowledge of Mule Concepts, Elements in a Mule Flow, and Global Elements.

Hardware and Software Requirements

For hardware and software requirements, please visit the Hardware and Software Requirements page.

To use the Oracle EBS connector, you must have the following:

  • Java 7: Oracle EBS connector does not work unless you are using Java 1.7.0_x as your JRE 

  • Web service configuration in Oracle EBS: Configuring the Oracle EBS connector requires configuring web services in Oracle EBS and exposing them via the Integration Repository

  • FND_WEB_SEC PL/SQL Service: The connector requires Oracle EBS to have the FND_WEB_SEC PL/SQL service deployed

  • Anypoint Studio

Compatibility

Oracle EBS Connector 4.0.0 is compatible with:

Application/Service Version

Mule Runtime

3.7 or higher

Anypoint Studio

5.2.1 or higher

Oracle EBS

12.1.x

Java

7

Please note that this connector only supports EBS version 12.1.x with SOA Gateway. Due to licensing changes by Oracle, version 12.2.x does not ship with SOA Gateway and will not work with this connector.

Connector Architecture

Oracle EBS offers different technologies or products to address various types of integrations. Listed below are the most widely used for integration with enterprise applications:

  1. Data-centric integration.

  2. Event-driven integration using Oracle Business Event System and XML Gateway queues.

  3. Integration through Web Services using Integrated SOA gateway.

The following illustration shows the integration architecture of the MuleSoft Oracle EBS connector:

oracle_ebs_connector_architecture

Installing and Configuring

The following sections describe how to install and configure the MuleSoft Oracle EBS connector.

Installing

You can install a connector in Anypoint Studio using the instructions in Installing a Connector from Anypoint Exchange

To use the Oracle EBS 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 in Installing an Enterprise License.

Upgrading from an Older Version

If you’re currently using an older version of the connector, a small popup appears in the bottom right corner of Anypoint Studio with an "Updates Available" message.

  1. Click the popup and check for available updates. 

  2. Click the Connector version checkbox and click Next and follow the instructions provided by the user interface. 

  3. Restart Studio when prompted. 

  4. After restarting, when creating a flow and using the Oracle EBS Connector, if you have several versions of the connector installed, you may be asked which one you would like to use. Choose one and click OK.

Additionally, we recommend that you keep Studio up to date with its latest version.

Creating a New Project

To use the Oracle EBS connector in a Mule Application, first create a new Mule project in Anypoint Studio:

  1. In Anypoint Studio, click File > New > Mule Project.

    PS_0001B_installing_new

  2. Enter a name for your new project and leave the remaining options with their default values.

    new project img

  3. If you plan to use Git, select Create a .gitignore file for the project with default ignore settings for Studio Projects, and then click Next.

  4. Click Next to verify that Java 1.7 is set as your default JRE.
    javacheck

  5. Click Finish to create the project.

Configuring an Oracle EBS Global Element

To use the Oracle EBS connector in your Mule application, you must configure a global Oracle EBS element that can be used by all the Oracle EBS connectors in the application (read more about global elements). Global elements can be of three types:

  1. Configuration: for web services and PL/SQL invocation.

  2. JMS Configuration: for Business Events and XML Gateway Outbound subscriptions using separate fields for database host, port and SID.

  3. JMS URL Configuration: for Business Events and XML Gateway Outbound subscriptions, using a database URL.

[tab,title="Studio Visual Editor"]
....
Follow these steps to create an Oracle EBS global element for web services and PL/SQL invocation:

. 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 then select *OracleEBS: Configuration*.
+
image:oracle_ebs_connector_config.png[oracle_ebs_connector_config]
+
. Click *OK*.
. Configure the parameters according to the table below.
+
[width="100%",cols="50a,50a",options="header",]

|===
|Field|Description
|*Name* |Enter a name for the configuration with which it can be referenced later.
|*Username* |Username to log into Oracle EBS web services.
|*Password* |Password for the username.
|*Host* |Enter the host of the Oracle EBS instance.
|*Port* |Enter the port of the Oracle EBS web services.
|*SSL* |If enabled, will attempt to make web services calls using HTTPS instead of HTTP.
|*TrustStore file name* |Enter the path to a custom TrustStore for HTTPS calls (optional).
|*TrustStore password* |Enter the password for the TrustStore (optional).
|*Disable Common Name Checking* |Disables Common Name (CN) Checking on SSL certificates (optional).
|*Responsibility Name* |Enter the responsibility name that is needed to execute the operation.
|*Responsibility Appl. Name* |Enter the application short name that is needed to execute the operation.
|*Security Group Name* |Enter the security group key of the Oracle EBS instance (optional). Default value is *STANDARD*.
|*NLS language* |Enter the NLS language of the Oracle EBS instance (optional). Default value is *AMERICAN*.
|*Org. ID* |Enter the organization ID of the Oracle EBS instance (optional). Default value is *204*.
|===
+
image:oracle_ebs_global_element.png[oracle_ebs_global_element]
+
. Configure your custom web services list according to the steps below:
.. Select *Create Object manually* and then click the `...` button next to it.
+
image:create-object-1.png[create-object-1]
+
.. In the pop-up window, select the plus sign (*+*) to add more entries, as needed.
.. Right-click a metadata item and click *Edit the selected metadata field* to enter the values.
+
image:oracle_ebs_enter_metadata.png[oracle_ebs_enter_metadata]
+
.. Click *OK* to save the list.
+
. Click *Test Connection* and confirm receipt of the _Connection Successful_ message.
. Click *OK* to save the global connector configurations.
+
[IMPORTANT]
Sometimes, it is necessary to create more than one global configuration. It depends on how the Oracle EBS instance is configured. One possible scenario would be to have one configuration for executing web service operations and another one for PL/SQL operations.

....
[tab,title="XML Editor"]
....
Ensure you have included the Oracle EBS namespaces in your configuration file.

[source, xml, linenums]
----
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:oracle-ebs = " http://www.mulesoft.org/schema/mule/oracle-ebs" 
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/oracle-ebs http://www.mulesoft.org/schema/mule/oracle-ebs/current/mule-oracle-ebs.xsd
<!-- Add your flows and configuration elements here -->
</mule>
----

Follow these steps to configure a Oracle EBS connector in your application:

. Create a global Oracle EBS configuration outside and above your flows, using the following global configuration code.
+
[source, xml, linenums]
----
<oracle-ebs:config name="OracleEBS__Configuration" username="${username}" password="${password}" host="${host}" port="${port}" responsibilityName="${responsibilityName}" responsibilityApplName="${responsibilityApplName}" doc:name="OracleEBS: Configuration" disableCNCheck="true" sslEnabled="true" trustStorePassword="${tsPassword}" trustStorePath="TrustStore.ts"/>
----
+
[cols=","]
|===
|*Parameter* |*Description*
|*Name* |Enter a name for the configuration with which it can be referenced later.
|*Username* |Username to log into Oracle EBS web services.
|*Password* |Password for the username.
|*Host* |Enter the host of the Oracle EBS instance.
|*Port* |Enter the port of the Oracle EBS web services.
|*SSL* |If enabled, will attempt to make web services calls using HTTPS instead of HTTP.
|*TrustStore file name* |Enter the path to a custom TrustStore for HTTPS calls (optional).
|*TrustStore password* |Enter the password for the TrustStore (optional).
|*Disable Common Name Checking* |Disables Common Name (CN) Checking on SSL certificates (optional).
|*Responsibility Name* |Enter the responsibility name that is needed to execute the operation.
|*Responsibility Appl. Name* |Enter the application short name that is needed to execute the operation.
|*Security Group Name* |Enter the security group key of the Oracle EBS instance (optional).
|*NLS language* |Enter the NLS language of the Oracle EBS instance (optional).
|*Org. ID* |Enter the organization ID of the Oracle EBS instance (optional).
|===

....
[tab,title="Studio Visual Editor"]
....
Follow these steps to create an Oracle EBS global element for Business Events or XML Gateway Outbound subscriptions:

. 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 then select *OracleEBS: JMS Configuration*.
+
image:oracle_ebs_connector_config.png[oracle_ebs_connector_config]
+
. Click *OK*.
. Configure the parameters according to the table below.
+
[width="100%",cols="50a,50a",options="header",]

|===
|Field|Description
|*Name* |Enter a name for the configuration with which it can be referenced later.
|*Username* |Username for the Oracle EBS database.
|*Password* |Enter the password for the username.
|*Host* |Enter the host of the Oracle EBS database.
|*Port* |Enter the port of the Oracle EBS database.
|*Database SID* |Enter the SID of the database.
|===
+
image:oracle_ebs_jms_global_element.png[oracle_ebs_jms_global_element]
+
. From the same global element properties window, load the required external dependency JARs:
+
image:oracle-ebs-jar-deps.png[req deps]
+
.. Click on the *Modify* button next to *Oracle AQ API*, and select the JAR file corresponding to this library. You can retrieve this file from your EBS instance, at `$ORACLE_HOME/rdbms/jlib/aqapi.jar`.
.. Do the same for the *Oracle Database JDBC Driver*. This file can also be found in your instance, at the following path: `$ORACLE_HOME/jdbc/lib/ojdbc6.jar`.
+
. Click *Test Connection* and confirm receipt of the _Connection Successful_ message.
. Click *OK* to save the global connector configurations.
+


....
[tab,title="XML Editor"]
....
Ensure you have included the Oracle EBS namespaces in your configuration file.

[source, xml, linenums]
----
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:oracle-ebs = " http://www.mulesoft.org/schema/mule/oracle-ebs"
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/oracle-ebs http://www.mulesoft.org/schema/mule/oracle-ebs/current/mule-oracle-ebs.xsd
<!-- Add your flows and configuration elements here -->
</mule>
----

Follow these steps to configure a Oracle EBS connector in your application:

. Create a global Oracle EBS configuration outside and above your flows, using the following global configuration code.
+
[source, xml, linenums]
----
<oracle-ebs:jmsconfig name="OracleEBS__JMS_Configuration" username="${username}" password="${password}" host="${host}" port="${port}" sid="${sidd}" doc:name="OracleEBS: JMS Configuration"/>
----
+
[cols=","]
|===
|*Parameter* |*Description*
|*Name* |Enter a name for the configuration with which it can be referenced later.
|*Username* |Username for the Oracle EBS database.
|*Password* |Enter the password for the username.
|*Host* |Enter the host of the Oracle EBS database is located.
|*Port* |Enter the port of the Oracle EBS database.
|*Database SID* |Enter the SID of the database.
|===

....

Using the Connector

Use the Oracle EBS connector as a message source if you wish to subscribe to queues. If your goal is to invoke web service operations, use the connector as an outbound, operation-based connector.

Namespace and Schema

When designing your application in Studio, the act of dragging the connector from the palette onto the Anypoint Studio canvas should automatically populate the XML code with the connector namespace and schema location.

If you are manually coding the Mule application in Studio’s XML editor or other text editor, define the namespace and schema location in the header of your Configuration XML, inside the <mule> tag.
1
2
3
4
5
6
7
8
9
10
11
12
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:oracle-ebs="http://www.mulesoft.org/schema/mule/oracle-ebs"
      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/oracle-ebs
               http://www.mulesoft.org/schema/mule/oracle-ebs/current/mule-oracle-ebs.xsd">

      <!-- put your global configuration elements and flows here -->

</mule>

Supported Web Service Endpoints

This is a list of supported web service endpoints that the Oracle EBS connector supports.

  • Receivables

    • Dqm Search Service (/oracle/apps/ar/hz/service/party/DqmSearchService)

      • Find Parties

    • Email Business Object Services (/oracle/apps/ar/hz/service/party/EmailService)

      • Create E-mail

      • Get E-mail

      • Save E-mail

      • Update E-mail

    • Location Business Object Services (/oracle/apps/ar/hz/service/party/LocationService)

      • Create Location

      • Get Location

      • Save Location

      • Update Location

    • Organization Business Object Services (/oracle/apps/ar/hz/service/party/OrganizationService)

      • Create Organization

      • Get Organization

      • Get Organizations Created

      • Get Organizations Updated

      • Save Organization

      • Update Organization

    • Organization Contact Business Object Services (/oracle/apps/ar/hz/service/party/OrgContactService)

      • Create Organization Contact

      • Get Organization Contact

      • Save Organization Contact

      • Update Organization Contact

    • Organization Customer Business Object Services (/oracle/apps/ar/hz/service/account/OrgCustomerService)

      • Create Organization Customer

      • Get Organization Customer

      • Get Organization Customers Created

      • Get Organization Customers Updated

      • Save Organization Customer

      • Update Organization Customer

    • Party Site Business Object Services (/oracle/apps/ar/hz/service/party/PartySiteService)

      • Create Party Site

      • Get Party Site

      • Save Party Site

      • Update Party Site

    • Person Business Object Services (/oracle/apps/ar/hz/service/party/PersonService)

      • Create Person

      • Get Person

      • Get Persons Created

      • Get Persons Updated

      • Save Person

      • Update Person

    • Person Customer Business Object Services (/oracle/apps/ar/hz/service/account/PersonCustomerService)

      • Create Person Customer

      • Get Person Customer

      • Get Person Customers Created

      • Get Person Customers Updated

      • Save Person Customer

      • Update Person Customer

    • Phone Business Object Services (/oracle/apps/ar/hz/service/party/PhoneService)

      • Create Phone

      • Get Phone

      • Save Phone

      • Update Phone

    • Relationship Business Object Services (/oracle/apps/ar/hz/service/party/RelationshipService)

      • Create Relationship

      • Get Relationship

      • Save Relationship

      • Update Relationship

    • Web Business Object Services (/oracle/apps/ar/hz/service/party/WebService)

      • Create Web

      • Get Web

      • Save Web

      • Update Web

Regarding PL/SQL functions, the connector supports the following out of the box, alongside with custom functions.

  • Install Base

    • Manage Item Instances (CSI_ITEM_INSTANCE_PUB)

      • Copy Item Instance

      • Create Item Instance

      • Get Item Instances

      • Get Item Instance Details

      • Update Item Instance

  • Order Management

    • Process Order API (OE_ORDER_PUB)

      • Delete Line

      • Delete Order

      • Get Order

      • ID to Value

      • Lock Order

      • Process Header

      • Process Line

      • Process Order

      • Update Header

      • Update Line

      • Value to ID

    • Purchase Order Acknowledgments Extension Columns API (EC_POAO_EXT)

      • POAO Populate Ext Lev01

      • POAO Populate Ext Lev02

    • Purchase Order Change Acknowledgments Extension Columns API (EC_POCAO_EXT)

      • POCAO Populate Ext Lev01

      • POCAO Populate Ext Lev02

    • Sales Agreement API (OE_BLANKET_PUB)

      • Process Blanket

    • Ship Conformation (OE_SHIP_CONFIRMATION_PUB)

      • Ship Zero

  • Payables

    • Suppliers Package (AP_VENDOR_PUB_PKG)

      • Create Vendor

      • Create Vendor Contact

      • Create Vendor Site

  • Receivables

    • Invoice Creation (AR_INVOICE_API_PUB)

      • Create Invoice

      • Create Single Invoice

  • Trading Community

    • Location (HZ_LOCATION_V2PUB)

      • Create Location

      • Create Location 1

      • Update Location

      • Update Location 1

    • Party Contact (HZ_PARTY_CONTACT_V2PUB)

      • Create Org Contact

      • Create Org Contact Role

      • Update Org Contact

      • Update Org Contact Role

Subscribing to a Queue or a Topic

  • To subscribe to a queue or topic (such as the XML Gateway Outbound queue or the Business Events topic), you need to drag the connector to the "Source" section of your flow. After doing so, and selecting a connector configuration, you have to choose the queue/topic you wish to subscribe to, from the Operation dropdown.

    1. Create a new Mule project in Anypoint Studio.

    2. Drag a new Flow scope element onto the canvas.

    3. Add an Oracle EBS connector as an Inbound endpoint at the beginning of the flow.

    4. Drag a Logger to the Process section of the flow.

    5. Configure the connector’s parameters according to the table below.

      Field

      Description

      Display Name

      Enter a unique label for the connector in your application.

      Connector Configuration

      Select an "OracleEBS: JMS Configuration" element that you have created.

      Operation

      Select the queue or topic you wish to subscribe to from the dropdown. In this example, we select Business Events, but you could alternatively pick XML Gateway Outbound.

      Durable Subscription

      (Only for Business Events) If checked, a durable subscription will be created. This means that if the client loses connectivity, all messages uploaded to the topic during this period will be retrieved as soon as it is restablished.

      Subscription Name

      (Only for Business Events) If you wish to create a durable subscription, you can specify its name. If not, it will default to "muleBusinessEvents".

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

Custom Attributes for Business Events

To set custom attributes for a business event besides the default attributes, you need to add the attributes manually, and create a subscription to the event.

  1. First, add attributes to an Oracle EBS business event. You can even run a script in your PL/SQL client for the purpose of creating the custom key-value pairs representing the custom messages or event attributes you require.

  2. Now add a subscription to the event you assigned new attributes to.

    1. Navigate to the Workflow Administrator Web Applications responsibility. Choose the Business Events you would like to modify.

    2. Click the plus sign to add a subscription to an event.

      add subscrip plus sign

    3. Click on Create Subscription.

      create subscription

  3. Provide appropriate values for each field. Find a description of the fields and values below, along with some screenshots of the workspace in which you configure these fields.

    1. Subscriber

      1. System - Designate the system you need subscribed to the event

    2. Triggering Event

      1. Event Filter - Enter the name of the business event that this subscription should be triggered by.

    3. Execution Condition

      1. Phase - a value greater than or equal to 100 means the subscription fires in an asynchronous way. Enter "100" for this field.

      2. Status - “Enabled”

      3. Rule Data - “Message”

    4. Action Type

      1. Action Type - "Custom"

        event subscription fields

        custom event subscription fields

At this point you should be set up to retrieve those custom attributes from the enqueued business events using the Oracle EBS connector.

Invoking a Web Service Operation

  • To invoke a web service operation, you must drag the connector to the "Process" section of your flow and fill in its input parameters. If the operation you need to invoke is a PL/SQL function exposed as a web service, select the Invoke PL/SQL Operation, and then make a selection from the PL/SQL and Function dropdown menus that appear in the General tab.

    1. Create a new Mule project in Anypoint Studio.

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

    3. Drag the Oracle EBS connector onto the canvas, then select it to open the properties editor.

    4. Configure the connector’s parameters according to the below.

      oracle_ebs_config

      Field

      Description

      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 "OracleEBS: Configuration" element that you just created.

      Operation

      Select the operation from the dropdown. You can select any of the operations displayed or the Invoke PL/SQL operation, which allows you to execute a web service published from PL/SQL.

      Params

      Complete the parameters needed for the operation selected. If the Invoke PL/SQL operation is selected, you need to select the PL/SQL and Function parameters with an operation to be executed.

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

    6. If you select the Invoke PL/SQL operation, you need to add a Transform Message transformer to map the values from the flow to the input parameters for the PL/SQL operation.

PL/SQL Operation Use Case

Continue below to walk through a basic example that executes a PL/SQL operation from the custom PL/SQL web service.

[tab,title="Studio Visual Editor"]
....
image:oracle-ebs-plsql-example.png[oracle-ebs-plsql-example]

. Create a Mule project in Anypoint Studio.
. Drag an HTTP connector onto the canvas, then select it to open the properties editor console.
. Add a new HTTP Listener Configuration global element:
.. In *General Settings*, click the plus sign (*+*):
+
image:connector-configuration-dropdown-general.png[connector-configuration-dropdown-general]
+
.. Configure the following HTTP parameters:
+
[width="100%",cols="50a,50a",options="header",]
|======
|Field|Value
|*Display Name* |HTTP_Listener_Configuration
|*Port* |8081
|======
+
.. Reference the HTTP Listener Configuration global element by selecting the configuration created in the preview step, from the *Connector Configuration* dropdown:
. Drag the Oracle EBS connector onto the canvas, then configure it according to the steps below:
.. Add a new "OracleEBS: Configuration" Global Element by clicking the plus sign (*+*).
+
.. Configure the global element according to the table below:
+
[width="100%",cols="50a,50a",options="header",]
|=======
|Field|Description
|*Name* |Enter a name you prefer
|*Username* |Username to log into Oracle EBS web services.
|*Password* |Password for the username.
|*Host* |Enter the host of the Oracle EBS instance.
|*Port* |Enter the port of the Oracle EBS web services.
|*SSL* |If enabled, will attempt to make web services calls using HTTPS instead of HTTP.
|*TrustStore file name* |Enter the path to a custom TrustStore for HTTPS calls (optional).
|*TrustStore password* |Enter the password for the TrustStore (optional).
|*Disable Common Name Checking* |Disables Common Name (CN) Checking on SSL certificates (optional).
|*Responsibility Name* |Enter the responsibility name that is needed to execute the operation.
|*Responsibility Appl. Name* |Enter the application short name that is needed to execute the operation.
|*Security Group Name* |Enter the security group key of the Oracle EBS instance (optional).
|*NLS language* |Enter the NLS language of the Oracle EBS instance (optional).
|*Org. ID* |Enter the organization ID of the Oracle EBS instance (optional).
|*Custom PL/SQL web services* |Select *Create Object manually*, click the button on the right and add all custom PL/SQL web services you want to execute. In the example we use FND_WEB_SEC.
|=======
+
.. Click *Test Connection* to confirm that Mule can connect with the Oracle EBS instance. If the connection is successful, click *OK* to save the configurations. If unsuccessful, revise or correct any incorrect parameters, then test again.
. Back in the properties editor of the Oracle EBS connector, configure the remaining parameters according to the table below:
+
[cols=",",]
|=====
|*Field* |*Value*
|*Display Name* |Testing custom PL/SQL operation (or any other name you prefer)
|*Connector Configuration* |Oracle (Enter name of the global element you have created)
|*Operation* |Invoke PL/SQL
|*PL/SQL* |Fnd Web Sec (custom)
|*Function* |Validate Login
|*Input Reference* |From Message `#[payload]`
|=====
+
image:oracle_ebs_connector_operation_config.png[oracle_ebs_connector_operation_config]
. Add a *Transform Message* transformer between the HTTP endpoint and the Oracle EBS connector to map the data in the HTTP endpoint to the structure required by the Oracle EBS connector.
. Configure the Input properties of the *Transform Message* component according to the steps below.
+
.. On the left, under the *Inbound Properties* tree, click on *http.query.params* and then click on the *Edit* button.
Enter the following code:
+
----
%dw 1.0
%output application/java
---
{
	"user": "sampleUser",
	"password": "samplePassword"
}
----
+
.. Enter the following DataWeave code into the *Transform Message* text editor:
+
----
%dw 1.0
%output application/xml
%namespace ns0
http://xmlns.oracle.com/apps/fnd/soaprovider/plsql/fnd_web_sec/validate_login/
---
{
	ns0#InputParameters: {
		ns0#"P_USER": inboundProperties."http.query.params".user,
		ns0#"P_PWD": inboundProperties."http.query.params".password
	}
}
----
+
. Add a *DOM to XML* transformer after the Oracle EBS Connector.
. Add a *Logger* scope right after the *DOM to XML* transformer to print the data that is being received from the Oracle EBS connector in the Mule Console. Configure the Logger according to the table below:
+
[width="100%",cols="50a,50a",options="header"]
|===
|*Field* |*Value*
|*Display Name* |Logger (or any other name you prefer)
|*Message* |Output from Transformer is `"\### EBS Test #[payload]"`
|*Level* |INFO (Default)
|===
+
. Add a *Catch Exception Strategy* and add a logger component inside it. Configure the logger message attribute with `#[payload]`, and set the level to ERROR.
+
[width="100%",cols="50a,50a",options="header"]
|===
|*Field* |*Value*
|*Display Name* |Logger (or any other name you prefer)
|*Message* |Error: #[payload]
|*Level* |ERROR
|===
+
. Save and run the project as a Mule Application by right-clicking the project name in the Package Explorer, selecting *Run As* > *Mule Application*.
.. Open a browser and load the following URL: `http://localhost:8081/?user=<username>&password=<password>`, replacing the _<username>_ and _<password>_ placeholders with a set of credentials.
.. You should see the response of the FND_WEB_SEC PL/SQL operation, informing you if the provided credentials are valid or invalid.

....
[tab,title="XML Editor"]
....

=== Example Code

[source, xml, linenums]
----
<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:oracle-ebs="http://www.mulesoft.org/schema/mule/oracle-ebs" xmlns:mulexml="http://www.mulesoft.org/schema/mule/xml" xmlns="http://www.mulesoft.org/schema/mule/core" 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"
	xsi:schemaLocation="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/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/xml http://www.mulesoft.org/schema/mule/xml/current/mule-xml.xsd
http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd
http://www.mulesoft.org/schema/mule/oracle-ebs http://www.mulesoft.org/schema/mule/oracle-ebs/current/mule-oracle-ebs.xsd">
    <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
    <oracle-ebs:config name="OracleEBS__Configuration" username="${username}" password="${password}" host="${host}" port="${port}" responsibilityName="${responsibilityName}" responsibilityApplName="${responsibilityApplName}" doc:name="OracleEBS: Configuration">
        <oracle-ebs:custom-pl-sql-name-list>
            <oracle-ebs:custom-pl-sql-name-list>FND_WEB_SEC</oracle-ebs:custom-pl-sql-name-list>
        </oracle-ebs:custom-pl-sql-name-list>
    </oracle-ebs:config>
    <flow name="oracle-ebs-exampleFlow">
        <http:listener config-ref="HTTP_Listener_Configuration" path="/" doc:name="HTTP"/>
        <dw:transform-message doc:name="Transform Message">
            <dw:input-inbound-property doc:sample="map_string_string.dwl" propertyName="http.query.params"/>
            <dw:set-payload><![CDATA[%dw 1.0
%output application/xml
%namespace ns0
http://xmlns.oracle.com/apps/fnd/soaprovider/plsql/fnd_web_sec/validate_login/
---
{
	ns0#InputParameters: {
		ns0#"P_USER": inboundProperties."http.query.params".user,
		ns0#"P_PWD": inboundProperties."http.query.params".password
	}
}]]></dw:set-payload>
        </dw:transform-message>
        <oracle-ebs:invoke-pl-sql config-ref="OracleEBS__Configuration" type="fnd_web_sec||VALIDATE_LOGIN" doc:name="OracleEBS"/>
        <mulexml:dom-to-xml-transformer doc:name="DOM to XML"/>
        <logger message="### EBS Test #[payload]" level="INFO" doc:name="Logger"/>
    </flow>
    <catch-exception-strategy name="oracle-ebs-exampleCatch_Exception_Strategy">
        <logger message="Error: #[payload]" level="ERROR" doc:name="Logger"/>
    </catch-exception-strategy>
</mule>
----

....

Business Events Use Case

This use case describes how a basic flow should be configured in order to use the connector as a source. More specifically, this sample application will subscribe to the Business Events topic and log all messages that arrive from this topic.

[tab,title="Studio Visual Editor"]
....
image:oracle-ebs-biz-events-use-case.png[oracle_ebs_example_flow_source]

. Create a new Mule project in Anypoint Studio.
. Drag a new *Flow* scope element onto the canvas.
. Add an Oracle EBS connector as an inbound endpoint at the beginning of the flow.
+
image:oracle_ebs_config_source_2.png[oracle_ebs_config_source_2]
+
.. Add a new "OracleEBS: JMS Configuration" Global Element by clicking the green plus sign (*+*).
.. Configure the global element according to the table below:
+
[width="100%",cols="50a,50a",options="header",]
|=======
|Field|Description
|*Name* |Enter a name for the configuration with which it can be referenced later.
|*Username* |Username for the Oracle EBS database.
|*Password* |Enter the password for the username.
|*Host* |Enter the host of the Oracle EBS database.
|*Port* |Enter the port of the Oracle EBS database.
|*Database SID* |Enter the SID of the database.
|*Required dependencies* |Select the location in your local file system for the Oracle AQ API and Oracle JDBC Driver JAR files. Both are used in the Test Connection process and subscription to queues and topics.
|=======
+
.. Click *Test Connection* to confirm that Mule can connect with the Oracle EBS instance. If the connection is successful, click *OK* to save the configurations. If unsuccessful, revise or correct any incorrect parameters, then test again.
. Back in the properties editor of the Oracle EBS connector, configure the remaining parameters according to the table below:
+
[cols=",",]
|=====
|*Field* |*Value*
|*Display Name* |Business Events (or any other name you prefer)
|*Connector Configuration* |OracleEBS__Configuration (Enter name of the global element you have created)
|*Operation* |Business events
|*Durable Subscription* |If checked, a durable subscription will be created. This means that if the client loses connectivity, all messages uploaded to the topic during this period will be retrieved as soon as it is restablished.
|*Subscription Name* |If you wish to create a durable subscription, you can specify its name. If not, it will default to "muleBusinessEvents".
|=====
+
. Add a *Logger* scope right after the EBS Connector, to print the messages received from the Business Events topic in the Mule Console. Configure the Logger according to the table below:
+
[width="100%",cols="50a,50a",options="header"]
|===
|*Field* |*Value*
|*Display Name* |Logger (or any other name you prefer)
|*Message* |`#[payload]`
|*Level* |INFO (Default)
|===
+
. Save and run the project as a Mule Application by right-clicking the project name in the Package Explorer, selecting *Run As* > *Mule Application*.
.. For every Business Event that is fired, you will see the corresponding message taken from the queue in the console log.
....
[tab,title="XML Editor"]
....

=== Example Code

[source, xml, linenums]
----
<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:oracle-ebs="http://www.mulesoft.org/schema/mule/oracle-ebs" xmlns="http://www.mulesoft.org/schema/mule/core" 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"
	xsi:schemaLocation="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/oracle-ebs http://www.mulesoft.org/schema/mule/oracle-ebs/current/mule-oracle-ebs.xsd">
    <oracle-ebs:jmsconfig name="OracleEBS__JMS_Configuration" doc:name="OracleEBS: JMS Configuration" host="${host}" password="${password}" port="${port}" sid="${sid}" username="${username}"/>
    <flow name="demo-business-eventsFlow">
        <oracle-ebs:business-events config-ref="OracleEBS__JMS_Configuration" doc:name="OracleEBS (Streaming)"/>
        <logger message="#[payload]" level="INFO" doc:name="Logger"/>
    </flow>
</mule>
----

....

Resources