Skip to content

CID Software Solutions LTD

Home » Overcome Missing REST API Functionality by Utilizing Application Composer to Expose SOAP ShipmentService to VB AppUI

Overcome Missing REST API Functionality by Utilizing Application Composer to Expose SOAP ShipmentService to VB AppUI

Business Challenge

A customer needed to update the Shipping Method for a Shipment using a custom screen built in VB AppUI.

However, the standard REST API for Shipments does not support modifying the shipping method.

Fortunately, the corresponding SOAP service: ShipmentService does support this update — but SOAP is not natively consumable from VB AppUI, which expects REST.

Solution

At CID Software Solutions, we implemented a seamless bridge by using Application Composer to expose the SOAP service as a custom REST endpoint.

We created a custom Groovy function, exposed as a REST API, which internally calls the Fusion-native SOAP service using the internal, P2T-safe URL:

https://fa-internal.oracleoutsourcing.com:10663/fscmService/ShipmentService?wsdl

Sample SOAP Payload

This was the payload used to implement and validate the SOAP call:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
                  xmlns:typ="http://xmlns.oracle.com/apps/scm/shipping/shipConfirm/deliveries/shipmentService/types/" 
                  xmlns:ship="http://xmlns.oracle.com/apps/scm/shipping/shipConfirm/deliveries/shipmentService/">
   <soapenv:Header/>
   <soapenv:Body>
      <typ:processCreateUpdateShipment>
         <typ:apiVersionNumber>1.0</typ:apiVersionNumber>
         <typ:InitMsgList>T</typ:InitMsgList>
         <typ:ActionCode>UPDATE</typ:ActionCode>
         <typ:ShipmentInformation>
            <ship:Shipment>77007</ship:Shipment>
            <ship:CarrierPartyNumber>2500576</ship:CarrierPartyNumber>
            <ship:ServiceLevel>LTL</ship:ServiceLevel>
            <ship:ModeOfTransport>OCEAN</ship:ModeOfTransport>
         </typ:ShipmentInformation>
      </typ:processCreateUpdateShipment>
   </soapenv:Body>
</soapenv:Envelope>

Groovy Code

This Groovy function can be used in a custom object and marked as invokable by external system:

You can copy the code from the section below:

def apiVersionNumber = "1.0";
def InitMsgList = "T";
def ActionCode = "UPDATE";
def ShipmentInformation = [
  Shipment: shipment,
  CarrierPartyNumber: carrierPartyNumber,
  ServiceLevel: serviceLevel,
  ModeOfTransport: modeOfTransport
];

def updateRes = adf.webServices.LocalShipmentService.processCreateUpdateShipment(
    apiVersionNumber, 
    InitMsgList, 
    ActionCode, 
    ShipmentInformation
);
return updateRes;

Outcome

This approach allowed our client to seamlessly update shipping methods via a clean REST interface in VB AppUI — while relying on Oracle-supported SOAP service in the backend.
It also ensured compatibility with P2T cloning and minimized external dependencies.

CID Software Solutions is here to help you overcome Fusion limitations with elegant, supportable solutions.

Leave a Reply

Your email address will not be published. Required fields are marked *