OIC Integration with Logistics Cloud – Things to Know and Best Practices

Introduction

In this blog we will see some common issues that could be faced, the recommended fixes and best practices when integrating with Oracle Logistics Cloud using Oracle Integration Cloud (OIC).

Oracle Logistics Cloud comprises of these below components

  • Oracle Transportation Management Cloud(OTM)
  • Oracle Warehouse Management Cloud (WMS)

This blog discusses issues encountered during a customer engagement using pre-built integrations.
However, the principles of this blog are relevant even when designing and activating custom OIC integrations with Oracle Logistics Cloud.

Below is a glossary of terms upfront for easy reference

Glossary

OTM Oracle Transportation Management Cloud(OTM) from Logistics Cloud

WMS Oracle Warehouse Management Cloud (WMS) from Logistics Cloud

SCM Oracle Supply Chain Management Cloud

OM Order Management from Oracle SCM Cloud

OIC to OTM – Interface issue when integrating with OTM

An issue was encountered after activation of OM-OTM pre-built integration.
This pre-built integration integrates between Order Management- OM (from Oracle SCM Cloud) and OTM using Integration Cloud.

Pre-built flow information

Application Type Application Connector
Source Application OM SCM Adapter
Target Application OTM Logistics Adapter

We wont go into the details of the integration itself. Refer to this Support note for details on the OM-OTM pre-built integration
Sample Integration with OTM/GTM using ICS (Doc ID 2209248.1)

Issue

During testing of the flow it was seen that OIC monitoring shows successful transmission from OM to OTM and also a successful callback but a transaction was not created on OTM. However, the callback response from OTM shows “Null TransmissionBody” in the message as shown below

 <otm:TransmissionAck xmlns:otm="http://xmlns.oracle.com/apps/otm/transmission/v6.4"       xmlns:gtm="http://xmlns.oracle.com/apps/gtm/transmission/v6.4">
 <otm:StackTrace>Null TransmissionBody</otm:StackTrace>
 </otm:TransmissionAck>

 

Resolution

For OTM 6.4x, Transmission Service does not work when the OTM WSDL url is used in the logistics adapter connection.
An offline TransmissionService wsdl has been made available which addresses this issue for 6.4x. It can be accessed from the below support note
Transmission Service WSDL with Inline Schemas (Doc ID 2294108.1)

Use the wsdl file provided in the support note when configuring the logistics adapter connection instead of the online wsdl url.
Download the offline wsdl provided above for the specific OTM version and update it with the actual OTM host url and port.
Use it as the source when creating Logistics cloud connection, as shown below

This will resolve the above issue and ensure that the OIC flow invokes the proper Transmission service on OTM

 

WMS to OIC – Cipher compatibility

The issue was encountered during runtime in the OCWMS_RECEIPT_CONFIRMATION of the WMS- ERP pre-built integrations
This integration is used to propagate receipt confirmations from WMS to Oracle ERP Cloud.

Pre-built flow information

Application Type Application Connector
Trigger Application WMS Rest Adapter
Target Application ERP ERP Adapter

Refer to this support note for details on the WMS- ERP integrations using Integration Cloud
Sample Integration Between Oracle Warehouse Management Cloud (release 9.0.0) and Oracle ERP/SCM Cloud (Doc ID 2404671.1)

The integration flow is exposed as rest API to be invoked from WMS. The endpoint url looks as below
 https://OIC-URL/ic/api/integration/v1/flows/rest/OCWMS_RECEIPT_CONFIRMATI/1.0/receipt_confirm

Issue

After activation of the flow, request timeout error is observed from WMS to OIC. As a result the Receipt Confirmation message is received at OIC.
The same request when submitted using a REST client like soapui or postman was able to invoke the endpoint and an OIC instance was created
This pointed to the issue being at the network between WMS and ICS.

Cause
On further analysis it was found that the ciphers supported by WMS and Integration cloud did not match.

OIC is frontended by LBaaS and supports the following ciphers

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_256_CBC_SHA256
TLS_RSA_WITH_AES_256_CBC_SHA
TLS_RSA_WITH_AES_128_CBC_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA

WMS running on Oracle Cloud Infrastructure supports the below list of ciphers

openssl ciphers

ECDHE_RSA_AES256_GCM_SHA384:ECDHE_ECDSA_AES256_GCM_SHA384:ECDHE_RSA_AES256_SHA384:ECDHE_ECDSA_AES256_SHA384:ECDHE_RSA_AES256_SHA:ECDHE_ECDSA_AES256_SHA:DHE_DSS_AES256_GCM_SHA384:DHE_RSA_AES256_GCM_SHA384:DHE_RSA_AES256_SHA256:DHE_DSS_AES256_SHA256:DHE_RSA_AES256_SHA:DHE_DSS_AES256_SHA:DHE_RSA_CAMELLIA256_SHA:DHE_DSS_CAMELLIA256_SHA:ECDH_RSA_AES256_GCM_SHA384:ECDH_ECDSA_AES256_GCM_SHA384:ECDH_RSA_AES256_SHA384:ECDH_ECDSA_AES256_SHA384:ECDH_RSA_AES256_SHA:ECDH_ECDSA_AES256_SHA:AES256_GCM_SHA384:AES256_SHA256:AES256_SHA:CAMELLIA256_SHA:PSK_AES256_CBC_SHA:ECDHE_RSA_AES128_GCM_SHA256:ECDHE_ECDSA_AES128_GCM_SHA256:ECDHE_RSA_AES128_SHA256:ECDHE_ECDSA_AES128_SHA256:ECDHE_RSA_AES128_SHA:ECDHE_ECDSA_AES128_SHA:DHE_DSS_AES128_GCM_SHA256:DHE_RSA_AES128_GCM_SHA256:DHE_RSA_AES128_SHA256:DHE_DSS_AES128_SHA256:DHE_RSA_AES128_SHA:DHE_DSS_AES128_SHA:DHE_RSA_SEED_SHA:DHE_DSS_SEED_SHA:DHE_RSA_CAMELLIA128_SHA:DHE_DSS_CAMELLIA128_SHA:ECDH_RSA_AES128_GCM_SHA256:ECDH_ECDSA_AES128_GCM_SHA256:ECDH_RSA_AES128_SHA256:ECDH_ECDSA_AES128_SHA256:ECDH_RSA_AES128_SHA:ECDH_ECDSA_AES128_SHA:AES128_GCM_SHA256:AES128_SHA256:AES128_SHA:SEED_SHA:CAMELLIA128_SHA:PSK_AES128_CBC_SHA:ECDHE_RSA_DES_CBC3_SHA:ECDHE_ECDSA_DES_CBC3_SHA:EDH_RSA_DES_CBC3_SHA:EDH_DSS_DES_CBC3_SHA:ECDH_RSA_DES_CBC3_SHA:ECDH_ECDSA_DES_CBC3_SHA:DES_CBC3_SHA:IDEA_CBC_SHA:PSK_3DES_EDE_CBC_SHA:KRB5_IDEA_CBC_SHA:KRB5_DES_CBC3_SHA:KRB5_IDEA_CBC_MD5:KRB5_DES_CBC3_MD5:ECDHE_RSA_RC4_SHA:ECDHE_ECDSA_RC4_SHA:ECDH_RSA_RC4_SHA:ECDH_ECDSA_RC4_SHA:RC4_SHA:RC4_MD5:PSK_RC4_SHA:KRB5_RC4_SHA:KRB5_RC4_MD5

Resolution

An SSL negotiation policy was created in OIC Load Balancer and matching ciphers with WMS were added to the policy.

Refer – Creating policies for Load Balancer

For example the below 2 ciphers compatible with WMS can be enabled on the OIC Load Balancer
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

Note – Creating a SSL negotiation policy overrides the default cipher set.

Creating a SSL negotiation policy overrides the default cipher set.

So make sure to add the earlier set of default ciphers also to the SSL negotiation policy before enabling it.

The SSL connectivity was restored after adding WMS matching ciphers to OIC LBaaS instance
Note – Depending on the type of Integration cloud used, customers may need to open an Oracle Support SR for this resolution

OIC to WMS – Network packet mismatch

The issue was encountered during runtime when executing the “OCWMS Receipt Advice from ERP” (OCWMS_RECEIPT_ADVICE). This is part of WMS-ERP pre-built integrations and is used to send PO details from ERP to WMS.

Pre-built flow information

Application Type Application Connector
Trigger Application ERP ERP Adapter
Target Application WMS Rest Adapter

 

Refer to this support note for details on the WMS- ERP integrations using Integration Cloud
Sample Integration Between Oracle Warehouse Management Cloud (release 9.0.0) and Oracle ERP/SCM Cloud (Doc ID 2404671.1)

Issue

After the required setups are completed and after Receipt Advice event is generated from ERP, it was observed that
the event does not reach WMS.

OIC endpoint used by the ERP to trigger the flow is of the form
https://OIC-URL/ic/api/integration/v1/flows/rest/OCWMS_RECEIPT_CONFIRMATI/1.0/receipt_confirm

The WMS url that OIC REST adapter uses to POST the PO is of the form
https://WMS_URL/wms/api/init_stage_interface

On further troubleshooting it was seen that the final payload destined for WMS could be successfully posted using a REST client like Postman.
But the invocation from OIC to WMS is seen to generate the following error in the OIC Diagnostic logs
Error

Fault Details :
<nstrgdfl:APIInvocationError xmlns:nstrgdfl="http://xmlns.oracle.com/cloud/generic/rest/fault/REST/postInitStageInterfacePO"><nstrgdfl:type/><nstrgdfl:title/><nstrgdfl:detail/><nstrgdfl:errorCode/><nstrgdfl:errorDetails><nstrgdfl:type>http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.5.1</nstrgdfl:type><nstrgdfl:title>Internal Server Error</nstrgdfl:title><nstrgdfl:errorCode>500</nstrgdfl:errorCode><nstrgdfl:errorPath>&lt;![CDATA[https://tb4.wms.ocs.oraclecloud.com/WMS_URL/wms/api/init_stage_interface/]]&gt;</nstrgdfl:errorPath><nstrgdfl:instance>&lt;![CDATA[CASDK-0041: An error occurred even before the REST endpoint could be invoked.[[java.net.SocketException: Connection reset]]]]&gt;</nstrgdfl:instance></nstrgdfl:errorDetails></nstrgdfl:APIInvocationError>
:Application Error

 java.net.SocketException: Connection reset

It was seen from OIC instance monitoring that this step takes 2 minutes and then times out with Connection Reset error.
A curl test from OIC VM to WMS endpoint confirmed the same behavior.

$ curl -X POST \
https://WMS_URL/wms/api/init_stage_interface/ \
-u 'user:password' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d 'actual payload taken from ICS diagnostic logs after payload tracing'

curl: (56) SSL read: errno -5961

Curl command failed with SSL error (shown above) after waiting for 2 mins.

This error occurs an MTU mismatch between OIC and WMS

Resolution

Check for the MTU size configured on eth0 interface in the OIC VM. This can be done using “ifconfig -a”
relevant output of the command is shown below

$ ifconfig -a
eth0 Link encap:Ethernet HWaddr 02:33:39:8C:C0:41
...
UP BROADCAST RUNNING MULTICAST MTU:8900 Metric:1
RX packets:2584221 errors:0 dropped:0 overruns:0 frame:0
TX packets:3034685 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1881219361 (1.7 GiB) TX bytes:1887746542 (1.7 GiB)

The recommended value is 1500 as per oracle documentation for OCI to OCI-Classic communications.
refer to https://docs.oracle.com/en/cloud/paas/api-platform-cloud/apfki/index.html#APFKI-GUID-F3E50E1E-DEAB-4773-969F-B6AB2CEF9DD5
Follow the instructions in the doc to change the MTU value to 1500.
After this change, the OCWMS_RECEIPT_ADVICE REST API call is received with payload at WMS and completes as expected.
Note – Depending on the type of Integration cloud used, customers may need to open an Oracle Support SR for this resolution

 

Common references

  • PreBuilt Integration – Sample Integration with OTM/GTM using ICS (Doc ID 2209248.1)
    PreBuilt Integration – Sample Integration Between Oracle Warehouse Management Cloud (release 9.0.0) and Oracle ERP/SCM Cloud (Doc ID 2404671.1)
  • Creating Policies for Load Balancer – here

Add Your Comment