April 15, 2016

OTM Outbound Integrations

OTM system can generate outbound XML data for any business object like 'Order Release', 'Shipment' etc either manually(using Send Interface Transmission action) or programmatically using same action from OTM Agent(workflow). We will discuss about OTM Agents in further posts.

For generating outbound XMLs from OTM you may follow below steps:

1. Define an Out XML profile.  

Business Process Automation > Power Data > Integration > Out XML Profiles.

Standard OTM XML for any object might have lot of data that might not be necessary or relevant to send it to the external systems. Also the file size for a complete XML would be in MB( for example Shipment XML might be 2 MB). In order to avoid generation of huge files and to control what data we generate in outbound XML we need to define an Out XML profile.


Select 'MIN' as Default Mode and specify the Xpath as shown above. This will ensure XML is limited to data that is within those Xpaths. 

2. Define an External system and link the XML profile. 
Once you have the Out XML profile ready, you can go ahead and define External System:
Business Process Automation > Communication Management > External Systems



Note that external system definition will have these critical details:
  • External system ID 
  • User Name/Password that can be sent to external application for authentication
  • HTTPS URL or Webservice to which this XML should be sent
  • Out XML Profile ID that was created in first step
3. We can invoke this external system for any object with below steps:

In this example, we can invoke external system to generate a shipment XML as below:

Shipment > Actions > Utilities > Send Interface Transmission


Select the external system that was defined earlier and select notification type(HTTP/Service based on your external system definition).

4. You can verify the XML generated as below:
Business Process Automation > Integration > Transmission Manager > Transactions Tab > Enter Object GID for 'Object' (Same AS) and Search.

You will see Transmission Result page and 'Raw XML' option will show the generated XML.   

Note: Please post corrections(if any) to 'learnotm@outlook.com' 
 

OTM Inbound Integrations (XML)

There are several ways of bringing in data into OTM system. Below are some of the methods:
  • via XML that follows Glog XML schema posted from a middleware applications like Oracle SOA, webMethods, Mulesoft, etc
  • Manaul XML uploads by OTM users
  • CSV Uploads
  • DB.XML Uploads
  • REST-API Calls
  • HTTP Post Requests from programming languages like PLSQL, etc
XML Inbound Integrations:

Most common way of receiving OTM Inbound data is via XML files from middleware applications. OTM can read XML files which are in the format specified by GlogXML Schema(OTM Standard XML Schema). You can download this schema from :


Business Process Automation > Integration > Integration Manager > Retrieve Schemas > GlogXML.xsd

This file will describe the data structure for each OTM element like 'Location', 'Order Release', 'Shipment', etc along with some documentation.

Say, if we want to upload a new location to OTM, you follow below steps:

1. Read the GlogXML.xsd and identify the XML structure for element "Location". Once you map your input data values to OTM XML elements, you will end up coming with XML file similar to one below:
  • <Transmission>
       <TransmissionHeader>
         <UserName>DBA.ADMIN</UserName>
         <Password>CHANGEME</Password>
         <IsProcessInSequence>Y</IsProcessInSequence>
       </TransmissionHeader>
       <TransmissionBody>
          <GLogXMLElement>
           <Location>
                <TransactionCode>IU</TransactionCode>
                <LocationGid>
                   <Gid>
                      <DomainName>ABC</DomainName>
                      <Xid>TEST SH OTM CORPORATION-45769</Xid>
                   </Gid>
                </LocationGid>
                <LocationName>TEST SH OTM COR,CLUTE,TX,USA</LocationName>
                <Address>
                   <AddressLines>
                      <SequenceNumber>1</SequenceNumber>
                      <AddressLine>1039 EAST PLANTATION</AddressLine>
                   </AddressLines>
                   <City>CLUTE</City>
                   <ProvinceCode>TX</ProvinceCode>
                   <PostalCode>32830</PostalCode>
                   <CountryCode3Gid>
                      <Gid>
                         <Xid>USA</Xid>
                      </Gid>
                   </CountryCode3Gid>
                </Address>
                <LocationRefnum>
                   <LocationRefnumQualifierGid>
                      <Gid>
                         <Xid>ORIGIN</Xid>
                      </Gid>
                   </LocationRefnumQualifierGid>
                   <LocationRefnumValue>CUSTOMER</LocationRefnumValue>
                </LocationRefnum>
                <LocationRefnum>
                   <LocationRefnumQualifierGid>
                      <Gid>
                         <Xid>CUSID</Xid>
                      </Gid>
                   </LocationRefnumQualifierGid>
                   <LocationRefnumValue>1130</LocationRefnumValue>
                </LocationRefnum>
                <LocationRefnum>
                   <LocationRefnumQualifierGid>
                      <Gid>
                         <Xid>CUSNM</Xid>
                      </Gid>
                   </LocationRefnumQualifierGid>
                   <LocationRefnumValue>MOORE SUPPLY CO</LocationRefnumValue>
                </LocationRefnum>
                <LocationRole>
                   <LocationRoleGid>
                      <Gid>
                         <Xid>CUSTOMER</Xid>
                      </Gid>
                   </LocationRoleGid>
                </LocationRole>
                <Corporation>
                   <CorporationName>OTM CORPORATION</CorporationName>
                </Corporation>
             </Location>
          </GLogXMLElement>
        </TransmissionBody>
     </Transmission> 
2. Save this file with extension '.xml'
3. Once you have XML ready, you can upload to OTM as below: Goto Business Process Automation -> Integration -> Integration Manager -> Upload XML/CSV Transmission and Browse XML File. 
4. Click Upload.


5. You will see following log:


6. Note the transmission number from the log
7. Navigate to Business Process Automation -> Integration -> Transmission Manager
8. Query for transmission and you should see transmission status as ‘PROCESSED’. 

In case of errors Report button displays error reasons like foreign key reference missing etc.

Posting XML from Other middleware applications like Oracle SOA/BPEL, webMethods, Mulesoft, etc

Middleware applications can post XML using below details:

Method: POST
OTM Servlet: https://<OTM Application URL>/GC3/glog.integration.servlet.WMServlet
Body Type: Raw
File format: XML
Authorization: Basic Auth (Get domain INTEGRATION username and password credentials from OTM Admin)

Sample Payload to update VOUCHER status:

<Transmission xmlns="http://xmlns.oracle.com/apps/otm/transmission/v6.4">
        <TransmissionHeader>
            <AckSpec>
                <ComMethodGid>
                    <Gid>
                        <Xid>HTTPPOST</Xid>
                    </Gid>
                </ComMethodGid>
                <AckOption>ERROR</AckOption>
            </AckSpec>
        </TransmissionHeader>
        <TransmissionBody>
            <GLogXMLElement>
                <GenericStatusUpdate>
                    <GenericStatusObjectType>VOUCHER</GenericStatusObjectType>
                    <Gid>
                        <DomainName>DPSCM</DomainName>
                        <Xid>20240823-00001310</Xid>
                    </Gid>
                    <TransactionCode>IU</TransactionCode>
                    <Status>
                        <StatusTypeGid>
                            <Gid>
                                <DomainName>DPSCM</DomainName>
                                <Xid>PAYMENT STATUS</Xid>
                            </Gid>
                        </StatusTypeGid>
                        <StatusValueGid>
                            <Gid>
                                <DomainName>DPSCM</DomainName>
                                <Xid>PAYMENT_RECEIVED</Xid>
                            </Gid>
                        </StatusValueGid>
                    </Status>
                </GenericStatusUpdate>
            </GLogXMLElement>
        </TransmissionBody>
    </Transmission>

Sample Response from OTM for above request:

<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:EchoedTransmissionHeader>
        <otm:TransmissionHeader>
            <otm:ReferenceTransmissionNo>311245595</otm:ReferenceTransmissionNo>
            <otm:AckSpec>
                <otm:ComMethodGid>
                    <otm:Gid>
                        <otm:Xid>HTTPPOST</otm:Xid>
                    </otm:Gid>
                </otm:ComMethodGid>
                <otm:AckOption>ERROR</otm:AckOption>
            </otm:AckSpec>
        </otm:TransmissionHeader>
    </otm:EchoedTransmissionHeader>
</otm:TransmissionAck>

Using Reference Transmission Number, you can query OTM transmission screen to see if the message is posted to OTM without any errors.

Other methods:

Review below topics for loading data into OTM using other methods:

https://www.oracle-otm.com/2026/03/csv-data-uploads.html

https://www.oracle-otm.com/2026/03/posting-data-to-otm-using-http-request.html

Note: Please post corrections(if any) to 'learnotm@outlook.com' 

OTM Architecture (This is applicable for on-premise installations)

OTM application has a typical three tier architecture. It has web tier, app tier and oracle database as third tier. These three components can be installed on separate servers (Linux/Windows) or they may be installed on the same server. Usually for lower environment like DEV or TEST they are installed on same server.

At a high level, this OTM product can be installed with below software:

1. Install Oracle Enterprise Linux - Operating System on the base servers. Note that OTM can be installed either on Linux server or Windows Server.

2. Install Oracle Database 11g Enterprise Edition - Database Software from Oracle.

3. Install Oracle Weblogic Server 11g(software on which OTM App tier runs)
This is where OTM App Tier(part of OTM software) is installed. OTM App tier has the business logic like standard OTM algorithms, OTM Agents(workflows), etc

4. Install Oracle HTTP Server(software on which OTM Web tier runs). This is where OTM Web Tier(part of OTM software) is installed. OTM Web Tier has static content like OTM Help pages, labels, etc

5. Install OTM software. OTM Installation steps would basically have below configurations:
  • Base Path on the servers(app and web) where you want to install OTM.
  • Configuring OTM Web tier with Web Server IP address and Port(Note that you can have multiple application/programs running on the same server and by knowing IP address request can hit the server and by knowing the port it will hit specific program/application running on the server)
  • Configuring OTM App tier with App Server IP address and Port.
  • Configuring OTM Database with DB Server IP address and Port.   
  • After OTM is installed successfully, on the OTM database run standard scripts provided by OTM to configure OTM Tablespaces, OTM Database Schema(like GLOGOWNER, REPORTOWNER, etc)
See below  diagram that shows software names that are installed on each server. In this example, assume that we are using three different servers - one for OTM web tier software components, one for OTM app tier software components and one for Oracle Database software.

A typical data flow between these servers can be understood as below:
End User of the OTM application will start a browser like IE, Firefox on their local desktop(PC) which is referred to a "Client" machine. User will launch the OTM application(installed on server machine as explained above) using URL having host name and port number for the OTM Web tier. User will login and start performing actions in the OTM application.Each action will have an REQUEST("Client" to "Server") and RESPONSE("Server" to "Client"). There can be several users working simultaneously on the application. Google topics related to "Client Server Architecture" for more details.

If you look at above diagram, user will send an HTTP request(in the form of actions) to OTM Web tier. If the request is for a static content (like some OTM help page topics,etc.) web tier will directly send this information back to the user. But, if the request requires some complex business logic processing (like bulk planning of orders into shipments), web tier will send the request to app tier that has all the software components like Bulk Plan alogoriths, etc and App tier will process the request(sometimes by fetching required data from Database tier) and send information back to web server. Web server will present this information to end user.

OTM Web tier is just a information presentation layer. Web tier primarily takes care of User Interface functions. App tier takes care of all business logic/application logic functions.  

Also, you see that external applications(utilities) like SMC Rateware, PC Miler, SMTP server etc can be installed separately on a different server(Windows, etc) and OTM App tier can be configured to communicate with these applications. We will talk more about these external applications used by OTM and related configurations in future posts.

Note: Please post corrections to 'learnotm@outlook.com'

April 14, 2016

Basic Logistics terminology

If you are a developer and not having logistics domain knowledge and want to quickly gain some insight, here are some basic logistics terms that you need to be familiar with.

Carrier: Carrier is the service provider(SP) for freight movement from one location to another. These are transportation service companies that typically own transportation equipment like trucks, cargo planes, vessel ships, etc. Each carrier has four letter SCAC code (Standard Carrier Alpha Code) that is used on all the shipping documents.

Supplier: Supplier/Seller is a party who will receive the Purchase Order from your company(Buyer) and either manufactures the items or procures from another third party vendor and ships them to your company warehouse. 

Consignee: Consignee is the party receiving the freight.

3PL: Third Party Logistics(3PL) company is a party to which transportation services are outsourced by the Buyer. Buyer sends a purchase order(PO) to Supplier and approved PO to 3PL company. 3PL company then co-ordinates with Supplier in collecting the goods, consolidating them with other freight(if any), negotiate cheaper rates with carriers, and ships them to Buyer. Once shipment is delivered, 3PL company would send freight invoice  to Buyer and Buyer will settle the amount with the 3PL and 3PL would send payments to carriers who provided the services.

Freight Forwarder: A freight forwarder focuses on moving goods from one point to another, whereas a 3PL handles the entire logistics process, including warehousing and order fulfillment. Freight forwarders typically handle international transportation and customs.

Inbound Shipping: This refers to movement of goods from suppliers to company maintained warehouses.

Outbound Shipping: This refers to movement of goods from company maintained warehouses to customers or another warehouse.

SKU: Stock Keeping Unit refers to individual items that go in boxes(Cartons).

Carton : Carton is a cardboard box where you place the individual items for shipping

Pallet/THU : Pallet or Transportation Handling Unit is the flat wooden structure you see in any warehouse where the cartons/items are placed and moved from one point to another point within the warehouse. They are also loaded/unloaded directly from a truck.

Shipping Container: Container is the large re-usable steel box that you see on the trailer of a truck which holds all the cartons/pallets. Intermodal freight containers are the boxes with standard dimensions defined by international standard ISO 6346. Term 'Intermodal' means that same container sealed at source location can go on various transport modes like OCEAN VESSEL, TRUCK, RAIL, etc before it reaches destination location.

TL/FTL: Truck Load or Full Truck Load is when carrier arranges complete truck for a single customer from one point to another. TL shipments are charged usually by distance and size of the equipment.

LTL: Less than Truck Load is when carrier reserves only partial space/weight in the truck for each customer based on the freight that needs to be shipped for each customer. Customers will be charged by weigh/volume for these LTL shipments.

PARCEL: Parcel is transport mode typically used for boxes that weigh less than 150 LB. They are shipped individually and tracked with Tracking Number provided by the carrier on receiving the package. Example : UPS and FedX packages.

INCOTERMS: These are terms between buyer and seller of goods that specify -  at what shipping point(location) buyer would take the responsibility of the goods(freight) from the supplier. For example term 'FOB'(Free on Board) refers to Buyer taking responsibility once the Seller loads the items into the truck/vessel shipment arranged by the Buyer.

Bill of Lading (BOL): BOL is a document issued by carrier to the party from whom goods are picked up. This is like a receipt issued by carrier stating they received the goods for transport. Carrier will then be responsible to ship the goods to the destination location specified by receiving party.

Fuel Surcharge: A variable fee added to shipment cost to offset volatile fuel costs.

NFMC: National Motor Freight Classification codes are assigned to items being transported to estimate accurate freight costs across the industry.

TEU/FEU: Twenty-foot Equivalent Unit, Forty-foot  equivalent units are used to measure vessel load or capacity in units of containers. For example a 3PL company might request an OCEAN carrier to reserve 2000 TEU space on their next voyage/vessel.

Reefer:  A refrigerated container that might be required to transport perishable goods like food and beverages, medicine, etc. These Reefer equipments or containers are classified by temperature ranges.

Pro Number:  Progressive number is assigned to TL/LTL shipments for tracking purpose. It is similar to UPS/FedX tracking number.

Drayage: Drayage refers to movement of freight over short distances like port to truck pickup location, etc. Drayage freight charges are usually paid in local currency.

Demurrage/Detention: These are penalty charges levied by Carrier on the consignee for holding the transportation equipments(containers, trailers, etc) at the Carrier facility longer than negotiated time period.

Stopoff Charges: These charges are levied by carrier on the shipper if they request to unload/load the freight at various stops(locations) between source and destination locations.

Diversion : Diversion refers to changing the destination location by the shipper/3PL company while freight is in-transit. They will notify the carrier prior to arrival of freight at the destination location.

Yard: Yard is a parking area for containers in the warehouse with rows and columns(slots). Containers coming from a port to warehouse might be initially parked in the "Yard Slot" and later moved to the "Dock door" based on availability of the "Dock door" or resources for loading/unloading the items.

Loading Dock : These are doors in the warehouse that would align with back door of the trucks so that items can be loaded/unloaded from the staging area(near the docks)

FCL: Full Container Load

LCL: Less than Container Load

CY: Container Yard

CFS: Container Freight Station

CY/CY: Move type Container Yard to Container Yard. This is for FCL shipments.

CFS/CFS: This move type is generally for LCL shipments.

CY/CFS: These are shipments with multiple consignees. They are also referred to as FCL/LCL shipments.

CFS/CY: These are shipments with multiple sellers but a single consignee also referred to as LCL/FCL shipments.

FCR: Forwarder's Cargo Receipt: Document issues by freight forwarder to shipper upon receipt of cargo.  This is also referred to Forwarder's Certificate of Receipt.

What is OTM ?

OTM stands for Oracle Transportation Management and it is a software product designed to automate various logistics business processes like receiving orders from source ERP systems for freight consolidation, optimizing routes and shipping costs, sending tender requests to service providers(carriers), receiving shipment tracking revents from carriers, recieving and processing invoices from carriers, allocate freight costs to orders, and similar other functions which we will further discuss in future posts.

This product is designed such a way that it can be easily configured and customized by IT Consultants for various client specific business needs with minimal technical expertise. IT Technical consultants would need basic Oracle SQL and XML knowledge for customizing the product and Functional consultants would need basic logistics domain knowledge to configure(setup) the product based on the documentation and use cases provided by Oracle. Latest OTM SaaS versions make it easier for clients to just focus on core business configurations to fast track product implementation timelines while Oracle provides necessary infrastructure and application maintainance for all the standard (out of the box) OTM features.

This product is originally developed by a company with name "Global Logistics Technologies, Inc" (also known as G-log). G-log was acquired by Oracle around 2005 and was renamed as OTM - Oracle Transportation Management. 


OTM has in-built integration with Oracle E-Business Suite of applications like Oracle Shipping(WSH). OTM can integrate with any external system by posting and receiving XML files based on GlogXML.xsd (product defined schema/data structure). Latest versions of OTM also support REST-API call based integrations. Note that OTM is not an application/module within the Oracle E-Business Suite of applications. OTM requires a separate installation - web, application and database tiers for on-premise configurations. Please see the next topic "OTM Architecuture" for these details.

At a high level, few core capabilities of OTM are mentioned here:

  • Receiving Purchase Orders(Order Base) from source ERP systems/legacy systems
  • Processing Order Releases(bookings) from the Purchase Orders for partial quantity or complete quantity with manual or automated release instructions
  • Plan/consolidate Order Releases with common source and destination locations or into multi-stop shipments based on standard Bulk Plan algorithm that is configurable for client specific requirements. Bulk Plan involves identifying Itinerary(route), least cost Service Provider or Carrier (based on pre-uploaded rates), optimize loading of items into containers(equipments), calculating shipment in-transit times based on setups, etc. 
  • OTM can dynamically fetch LTL rates from third party applications like 'SMC Rateware' and also distances between zip codes using third party applications like 'MILEMAKER', 'PCMILER', etc
  • Send Tender Offer requests to Service Providers identified during planning. Note that if Carrier cannot accept XML tender files, we need to use Middleware tools like Web Methods, Mulesoft, Oracle BPEL etc to translate OTM outbound XML files to carrier readable formats like EDI files.
  • Receive Tender Offer response and update the shipment
  • Receive Shipment Tracking updates from Service Providers and update the shipment
  • Receive/process invoices from Service Providers, match the invoice costs with planned costs for invoice approvals, create vouchers for approved invoices, allocate the costs against customer orders, etc.