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.