Automate ERP Purchase Order creation using Oracle Integration
Most of the organizations are using Oracle Enterprise Resource Planning system for day to day business. It’s a business process management software that manages and integrates a company’s financials, supply chain, operations, reporting, manufacturing, and human resource activities. In this article, we are focusing on how to automate ERP Purchase Order creation using Oracle Integration Cloud (OIC).
In this article, we’ll use the OIC ERP adapter to connect to ERP.
See the previous articles.
ERP Adapter in Oracle Integration Cloud
ERP Integration using File Based Data Import: Oracle Integration
Subscribe Oracle ERP Business Events in Oracle Integration
Watch YouTube videos for more learning. Subscribe my YouTube Channel to get the latest videos.
Below is the use-case which we are going to execute in the article:
- Expose a single REST APIs to create a purchase order and to get purchase order details.
- User Oracle ERP adapter and call Create Purchase Order and Get Purchase Order Service.

Step by Step procedure to achieve the use-case
- Create an App Driven Orchestration with name “PurchaseOrderService“

- On the Integration Canvas, drop the REST connection as a trigger point. Enter the below information and click on the Next button
- What do you want to call your endpoint? PurchaseOrderService
- Check the Select to configure multiple resources or verbs checkbox

- From the next screen, enter the below information and click on the Next button.
Field | Value |
---|---|
Provide an operation name | CreatePrucahseOrder |
What does this operation do? | This operation will be used to CreatePurchaseOrder |
What is the relative endpoint’s relative resource URI? | /purhcaseorder |
What action do you want to perform on the endpoint? | POST |
Configure a request payload for this endpoint | Select this checkbox |
Configure this endpoint to receive the response | Select this checkbox |

- On the Request screen, Select JSON sample from select the request payload format and select <<<inline>>> link to enter below sample JSON. Click on the Next button
Note: I have taken only mandatory fields which are required for purchase order creation.
{
"PurchaseOrder" : {
"createPurchaseOrder" : {
"createOrderEntry" : {
"DocumentStyleId" : "1",
"ProcurementBUId" : "22",
"RequisitioningBUId" : "22",
"BuyerId" : "11",
"SupplierId" : "32",
"SupplierSiteId" : "11",
"DocumentDescription" : "Document",
"PurchaseOrderEntryLine" : {
"LineTypeId" : "1",
"ItemDescription" : "Line Description",
"CategoryId" : "1",
"Price" : "400",
"PurchaseOrderEntrySchedule" : {
"NeedByDate" : "2020-01-02",
"ShipToLocationId" : "11",
"ShipToOrganizationId" : "11",
"PurchaseOrderEntryDistribution" : {
"RequesterId" : "11",
"RequesterName" : "Test"
}
}
}
}
}
}
}
- On the Response screen, Select JSON sample from select the request payload format and select <<<inline>>> link to enter below sample JSON. Click on the Next button
{
"PurchaseOrderNumber" : "1"
}
- From the next screen, Check Add another operation and click on the Next button.

- On the Resource Configuration page enters below values and click on the Next button.
Field | Value |
---|---|
Provide an operation name | GetPurchaseOrder |
What is the relative endpoint’s relative resource URI? | /purchaseorder |
What action do you want to perform on the endpoint? | GET |
Add and review parameter for this endpoint | Select this checkbox |
Configure this endpoint to receive the response | Select this checkbox |

- On the Request Parameters page, add two string parameters and click on the Next button.
- PurchaseOrderNumber
- SoldToLegalEntity
- On the Response screen, Select JSON sample from select the request payload format and select <<<inline>>> link to enter below sample JSON. Click on the Next button
{
"POHeaderId" : 11,
"OrderNumber" : "11",
"SoldToLegalEntityId" : 22,
"SoldToLegalEntity" : "Legal Entity",
"CreationDate" : "2014-12-09T08:17:56+00:00",
"StatusCode" : "CLOSED"
}
- Finish the REST Wizard.
- In the CreatePurchaseOrder operation, drop the ERP adapter, enter “CreatePO” as an endpoint name and click on the Next button.
- From the next screen, select “Query, Create, Update or Delete Information” checkbox and click on the Next button.

- From the next screen, select below options and Finish the wizard.
Option | Value |
---|---|
Browe by | Select “Services” |
Select a Service | Select a “PurchaseOrderService” |
Select the operation to perform on the Business Object/Resource or Service | Select “createPurchaseOrder” |

- Edit the CreatePO mapper and do the mapping as below:
Source | Target |
---|---|
/nssrcmpr:execute/nssrcdfl:requestwrapper/nssrcdfl:PurchaseOrder/nssrcdfl:createPurchaseOrder/nssrcdfl:createOrderEntry/nssrcdfl:ProcurementBUId | /nstrgmpr:createPurchaseOrder/ nstrgmpr:createOrderEntry/tns:ProcurementBUId |
/nssrcmpr:execute/nssrcdfl:requestwrapper/nssrcdfl:PurchaseOrder/nssrcdfl:createPurchaseOrder/nssrcdfl:createOrderEntry/nssrcdfl:RequisitioningBUId | /nstrgmpr:createPurchaseOrder/ nstrgmpr:createOrderEntry/tns:RequisitioningBUId |
/nssrcmpr:execute/nssrcdfl:requestwrapper/nssrcdfl:PurchaseOrder/nssrcdfl:createPurchaseOrder/nssrcdfl:createOrderEntry/nssrcdfl:BuyerId | /nstrgmpr:createPurchaseOrder/ nstrgmpr:createOrderEntry/tns:BuyerId |
/nssrcmpr:execute/nssrcdfl:requestwrapper/nssrcdfl:PurchaseOrder/nssrcdfl:createPurchaseOrder/nssrcdfl:createOrderEntry/nssrcdfl:SupplierId | /nstrgmpr:createPurchaseOrder/ nstrgmpr:createOrderEntry/tns:SupplierId |
/nssrcmpr:execute/nssrcdfl:requestwrapper/nssrcdfl:PurchaseOrder/nssrcdfl:createPurchaseOrder/nssrcdfl:createOrderEntry/nssrcdfl:SupplierSiteId | /nstrgmpr:createPurchaseOrder/ nstrgmpr:createOrderEntry/tns:SupplierSiteId |
/nssrcmpr:execute/nssrcdfl:requestwrapper/nssrcdfl:PurchaseOrder/nssrcdfl:createPurchaseOrder/nssrcdfl:createOrderEntry/nssrcdfl:DocumentDescription | /nstrgmpr:createPurchaseOrder/ nstrgmpr:createOrderEntry/tns:DocumentDescription |
/nssrcmpr:execute/nssrcdfl:requestwrapper/nssrcdfl:PurchaseOrder/nssrcdfl:createPurchaseOrder/nssrcdfl:createOrderEntry/nssrcdfl:PurchaseOrderEntryLine/nssrcdfl:LineTypeId | /nstrgmpr:createPurchaseOrder/ nstrgmpr:createOrderEntry/ tns:PurchaseOrderEntryLine/tns:LineTypeId |
/nssrcmpr:execute/nssrcdfl:requestwrapper/nssrcdfl:PurchaseOrder/nssrcdfl:createPurchaseOrder/nssrcdfl:createOrderEntry/nssrcdfl:PurchaseOrderEntryLine/nssrcdfl:ItemDescription | /nstrgmpr:createPurchaseOrder/ nstrgmpr:createOrderEntry/ tns:PurchaseOrderEntryLine/tns:ItemDescription |
/nssrcmpr:execute/nssrcdfl:requestwrapper/nssrcdfl:PurchaseOrder/nssrcdfl:createPurchaseOrder/nssrcdfl:createOrderEntry/nssrcdfl:PurchaseOrderEntryLine/nssrcdfl:CategoryId | /nstrgmpr:createPurchaseOrder/ nstrgmpr:createOrderEntry/ tns:PurchaseOrderEntryLine/tns:CategoryId |
/nssrcmpr:execute/nssrcdfl:requestwrapper/nssrcdfl:PurchaseOrder/nssrcdfl:createPurchaseOrder/nssrcdfl:createOrderEntry/nssrcdfl:PurchaseOrderEntryLine/nssrcdfl:Price | /nstrgmpr:createPurchaseOrder/ nstrgmpr:createOrderEntry/ tns:PurchaseOrderEntryLine/tns:Price |
/nssrcmpr:execute/nssrcdfl:requestwrapper/nssrcdfl:PurchaseOrder/nssrcdfl:createPurchaseOrder/nssrcdfl:createOrderEntry/nssrcdfl:PurchaseOrderEntryLine/nssrcdfl:PurchaseOrderEntrySchedule/nssrcdfl:ShipToLocationId | /nstrgmpr:createPurchaseOrder/ nstrgmpr:createOrderEntry/ tns:PurchaseOrderEntryLine/ tns:PurchaseOrderEntrySchedule/tns:ShipToLocationId |
/nssrcmpr:execute/nssrcdfl:requestwrapper/nssrcdfl:PurchaseOrder/nssrcdfl:createPurchaseOrder/nssrcdfl:createOrderEntry/nssrcdfl:PurchaseOrderEntryLine/nssrcdfl:PurchaseOrderEntrySchedule/nssrcdfl:ShipToOrganizationId | /nstrgmpr:createPurchaseOrder/ nstrgmpr:createOrderEntry/ tns:PurchaseOrderEntryLine/ tns:PurchaseOrderEntrySchedule/tns:ShipToOrganizationId |
/nssrcmpr:execute/nssrcdfl:requestwrapper/nssrcdfl:PurchaseOrder/nssrcdfl:createPurchaseOrder/nssrcdfl:createOrderEntry/nssrcdfl:PurchaseOrderEntryLine/nssrcdfl:PurchaseOrderEntrySchedule/nssrcdfl:NeedByDate | /nstrgmpr:createPurchaseOrder/ nstrgmpr:createOrderEntry/ tns:PurchaseOrderEntryLine/ tns:PurchaseOrderEntrySchedule/tns:NeedByDate |
/nssrcmpr:execute/nssrcdfl:requestwrapper/nssrcdfl:PurchaseOrder/nssrcdfl:createPurchaseOrder/nssrcdfl:createOrderEntry/nssrcdfl:PurchaseOrderEntryLine/nssrcdfl:PurchaseOrderEntrySchedule/nssrcdfl:PurchaseOrderEntryDistribution/nssrcdfl:RequesterId | /nstrgmpr:createPurchaseOrder/ nstrgmpr:createOrderEntry/ tns:PurchaseOrderEntryLine/ tns:PurchaseOrderEntrySchedule/ tns:PurchaseOrderEntryDistribution/tns:RequesterId |
/nssrcmpr:execute/nssrcdfl:requestwrapper/nssrcdfl:PurchaseOrder/nssrcdfl:createPurchaseOrder/nssrcdfl:createOrderEntry/nssrcdfl:PurchaseOrderEntryLine/nssrcdfl:PurchaseOrderEntrySchedule/nssrcdfl:PurchaseOrderEntryDistribution/nssrcdfl:RequesterName | /nstrgmpr:createPurchaseOrder/ nstrgmpr:createOrderEntry/ tns:PurchaseOrderEntryLine/ tns:PurchaseOrderEntrySchedule/ tns:PurchaseOrderEntryDistribution/tns:RequesterName |
- Validate and Close the mapper. Drop the mapper after ERP adapter and do mapping as below:
Soruce | Target |
---|---|
$CreatePO/nsmpr0:createPurchaseOrderResponse/nsmpr0:result/tns:OrderNumber | /nstrgmpr:executeResponse/ nstrgdfl:response-wrapper/nstrgdfl:PurchaseOrderNumber |
- In the GetPurchaseOrder operation, drop the ERP adapter, enter “GetPO” as an endpoint name and click on the Next button.
- From the next screen, select “Query, Create, Update or Delete Information” checkbox and click on the Next button.
- From the next screen, select below options and Finish the wizard.
Option | Value |
---|---|
Browe by | Select “Services” section |
Select a Service | Select a “PurchaseOrderService” |
Select the operation to perform on the Business Object/Resource or Service | Select “findPurchaseOrderByOrderNumber” |

- Edit the GetPO mapper and do the mapping as below:
Source | Target |
---|---|
PurchaseOrderNumber | OrderNumber |
SoldToLegalEntityId | SoldToLegalEntityId |
- Drop a mapper after GetPO ERP connection and do the mapping as below:
Source | Target |
---|---|
$GetPO/nsmpr0:findPurchaseOrderByOrderNumberResponse/nsmpr0:result/ns32:Value/ns32:POHeaderId | /nstrgmpr:executeResponse/ nstrgdfl:response-wrapper/nstrgdfl:POHeaderId |
$GetPO/nsmpr0:findPurchaseOrderByOrderNumberResponse/nsmpr0:result/ns32:Value/ns32:OrderNumber | /nstrgmpr:executeResponse/ nstrgdfl:response-wrapper/nstrgdfl:OrderNumber |
$GetPO/nsmpr0:findPurchaseOrderByOrderNumberResponse/nsmpr0:result/ns32:Value/ns32:SoldToLegalEntityId | /nstrgmpr:executeResponse/ nstrgdfl:response-wrapper/nstrgdfl:SoldToLegalEntityId |
$GetPO/nsmpr0:findPurchaseOrderByOrderNumberResponse/nsmpr0:result/ns32:Value/ns32:SoldToLegalEntity | /nstrgmpr:executeResponse/ nstrgdfl:response-wrapper/nstrgdfl:SoldToLegalEntity |
$GetPO/nsmpr0:findPurchaseOrderByOrderNumberResponse/nsmpr0:result/ns32:Value/ns32:CreationDate | /nstrgmpr:executeResponse/ nstrgdfl:response-wrapper/nstrgdfl:CreationDate |
$GetPO/nsmpr0:findPurchaseOrderByOrderNumberResponse/nsmpr0:result/ns32:Value/ns32:PurchaseOrderLine/ns32:LineStatusCode | /nstrgmpr:executeResponse/ nstrgdfl:response-wrapper/nstrgdfl:StatusCode |
- Validate and close the mapper
The integration configuration is completed. Save, Close, and Activate your integration.
Test the Integration
We’ll use the POSTMAN tool to test the integration.
Create Purchase Order
First, create a purchase order. Open the POSTMAN tool and hit the POST URL. Put the valid data in JSON payload else order creation will get fail.

Get Purchase Order
Get a purchase order. Open the POSTMAN tool and hit the GET URL. Pass the PurchaseOrderNumber and SoldToLegalEntityId in the request parameters.
