Posting Data to OTM using HTTP request

Any external system like EBS, SAP can frame this XML structure programatically and ‘POST’ this xml to OTM Integration servlet: glog.integration.servlet.WMServlet

Below is an PLSQL program posting Location element to OTM:

DECLARE

-- This is OTM Application URL Where string after GC3 is replaced as shown below
v_chr_url VARCHAR2(1000) := 'http://OTM-SERVER:7777/GC3/glog.integration.servlet.WMServlet';

-- This is OTM USER from which transmission needs to be created
v_otm_user VARCHAR2(100) := 'DBA.ADMIN';

-- This is password for the OTM USER
v_otm_pwd VARCHAR2(100) := 'CHANGEME';

-- You can programtically form the xml string and pass it to this variable
v_data_in VARCHAR2 (10000);
v_http_req UTL_HTTP.req;
v_http_resp UTL_HTTP.resp;
v_chr_resp_val VARCHAR2 (3000);

BEGIN
-- This is a sample transmission that creates location (Shipment Management -> Location Manager) in OTM
-- Note that in the Transmission Body, GLOGXMLElement chosen here is Location.
-- By choosing appropriate element, you can load required data.
-- In this script file, you see XML structure to send location information.
-- You can get this structure by referring the GLOGXML.xsd
-- Navigation to fetch this from OTM:
--   1. Login in to OTM using DBA.ADMIN user
--   2. Business Process Automation -> Integration -> Integration Manager -> GlogXML.xsd

v_data_in := '<Transmission>
<TransmissionHeader>
  <UserName>DBA.ADMIN</UserName>
  <Password>CHANGEME</Password>
  <IsProcessInSequence>Y</IsProcessInSequence>
</TransmissionHeader>
<TransmissionBody>
  <GLogXMLElement>
    <Location>
      <TransactionCode>IU</TransactionCode>
      <LocationGid>
        <Gid>
          <DomainName>WHD</DomainName>
          <Xid>TEST SH HAJOCA CORPORATION-45769</Xid>
        </Gid>
      </LocationGid>
      <LocationName>TEST SH HAJOCA COR,CLUTE,TX,USA</LocationName>
      <Address>
        <AddressLines>
          <SequenceNumber>1</SequenceNumber>
          <AddressLine>449 TEST 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>
        <LocationRole>
          <LocationRoleGid>
            <Gid><Xid>CUSTOMER</Xid></Gid>
          </LocationRoleGid>
        </LocationRole>
        <Corporation>
          <CorporationName>TEST CORPORATION</CorporationName>
        </Corporation>
      </LocationRefnum>
    </Location>
  </GLogXMLElement>
</TransmissionBody>
</Transmission>';

UTL_HTTP.set_transfer_timeout (1000);
UTL_HTTP.set_detailed_excp_support (ENABLE => TRUE);

-- Invoking the Web Service.
v_http_req := UTL_HTTP.begin_request (v_chr_url, 'POST');

-- Set the HTTP request headers
UTL_HTTP.set_header (v_http_req, 'content-type', 'text/html');
UTL_HTTP.set_header (v_http_req, 'content-length', LENGTH (v_data_in));

-- Write the data to the body of the HTTP request
UTL_HTTP.write_text (v_http_req, v_data_in);

-- Retrieving response of Transmission ID for OTM
v_http_resp := UTL_HTTP.get_response (v_http_req);
UTL_HTTP.read_text (v_http_resp, v_chr_resp_val, 3000);
UTL_HTTP.end_response (v_http_resp);

END;
/

Note: If you have multiple integrations to be built from an external system to OTM to load data coming in different formats like EDI, text files, etc. you should typically go for a middleware tool like Oracle SOA(BPEL), Webmethods etc. to translate these files from various formats to the XML format defined by the GlogXML schema.