Saturday 18 July 2020

OIC - Invoke Oracle Fusion ESS Scheduler Job for Job Set

You may come across a scenario where in you may need to submit multiple ESS jobs or BIP Jobs  in parallel or in sequence.  In that case ,  you need to create a job set comprising multiple ESS jobs. 

Oracle provide following SOAP services to invoke ESS jobs. 

  • ERP Integration service 
    • https://<fa-host-name>/fscmService/ErpIntegrationService
  • ESS Webservice 
    • https://<fa-host-name>/ess/esswebservice
We can use ESS Webservice to invoke a Job Set or Individual Job Definition.  These are the sample payloads for invoking Job Definition or a Job Set. 



JOB_DEFINITION_PAYLOAD

<soapenv:Envelope xmlns:sch="http://xmlns.oracle.com/scheduler" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://xmlns.oracle.com/scheduler/types">
   <soapenv:Header>
      <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
         <wsu:Timestamp wsu:Id="TS-A5B886251698B47327159420696702512">
            <wsu:Created>2020-07-08T11:16:02.985Z</wsu:Created>
            <wsu:Expires>2020-07-08T12:17:07.024Z</wsu:Expires>
         </wsu:Timestamp>
         <wsse:UsernameToken wsu:Id="UsernameToken-A5B886251698B47327159420696298511">
            <wsse:Username>XXXXX</wsse:Username>
            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">XXXXX</wsse:Password>
            <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">YPoASPzSuIL4V08wZwLrVw==</wsse:Nonce>
         </wsse:UsernameToken>
      </wsse:Security>
   </soapenv:Header>
   <soapenv:Body>
      <sch:submitRequest>
         <sch:description>xxrun12345</sch:description>
         <sch:jobDefinitionId>
            <!--Optional:-->
            <typ:name>XXHCM_ERP_Newhire_Assignment_Supervisor_Extract</typ:name>
            <!--Optional:-->
            <typ:packageName>/oracle/apps/ess/custom/NewhireAssignmentSupervisor/</typ:packageName>
            <!--Optional:-->
            <typ:type>JOB_DEFINITION</typ:type>
         </sch:jobDefinitionId>
         <sch:application>EarHcmEss</sch:application>
         <sch:requestedStartTime>2020-07-08T11:16:02.985Z</sch:requestedStartTime>
         <sch:requestParameters/>
      </sch:submitRequest>
   </soapenv:Body>
</soapenv:Envelope>


JOB_SET_PAYLOAD:

Following sample payload will provide how to send the parameters to a Job Set


<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://xmlns.oracle.com/scheduler" xmlns:typ="http://xmlns.oracle.com/scheduler/types">
   <soapenv:Header>
      <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
         <wsu:Timestamp wsu:Id="TS-A55DABD7EBC81F9C96159506526235712">
            <wsu:Created>2020-07-18T09:41:02.357Z</wsu:Created>
            <wsu:Expires>2020-07-18T11:21:02.357Z</wsu:Expires>
         </wsu:Timestamp>
         <wsse:UsernameToken wsu:Id="UsernameToken-A55DABD7EBC81F9C9615946214924243">
            <wsse:Username>xxxxxx</wsse:Username>
            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">xxxxxx</wsse:Password>
            <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">VwO7xSR3E3qdW//OXsrTmQ==</wsse:Nonce>
            <wsu:Created>2020-07-13T16:24:23.440Z</wsu:Created>
         </wsse:UsernameToken>
      </wsse:Security>
   </soapenv:Header>
   <soapenv:Body>
      <sch:submitRequest>
         <sch:description>xxrun12347</sch:description>
         <sch:jobDefinitionId>
            <!--Optional:-->
            <typ:name>XXHCM_WORKER_WORKSTRUCTURES_JOBSET</typ:name>
            <!--Optional:-->
            <typ:packageName>/oracle/apps/ess/custom/jobset/</typ:packageName>
            <!--Optional:-->
            <typ:type>JOB_SET</typ:type>
         </sch:jobDefinitionId>
         <sch:application>EarHcmEss</sch:application>
         <sch:requestedStartTime/>
         <sch:requestParameters>
            <!--0 to 1000 repetitions:-->
            <typ:parameter>
               <typ:dataType>STRING</typ:dataType>
               <typ:name>submit.argument1</typ:name>
               <typ:value>1234</typ:value>
            </typ:parameter>
            <typ:parameter>
               <typ:dataType>STRING</typ:dataType>
               <typ:name>submit.argument2</typ:name>
               <typ:value>XXXXYYY</typ:value>
            </typ:parameter>
         </sch:requestParameters>
      </sch:submitRequest>
   </soapenv:Body>
</soapenv:Envelope>


Note:  We need to send the MessageID and Action in SOAP header to invoke these service. 


Common Errors and Solutions:

<env:Header>
      <FaultDetail xmlns="http://www.w3.org/2005/08/addressing">
         <ProblemHeaderQName>wsa:MessageID</ProblemHeaderQName>
      </FaultDetail>
      <wsa:Action>http://www.w3.org/2005/08/addressing/fault</wsa:Action>
   </env:Header>

Solution:  You are not sending Message ID in the request message. 


<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
   <env:Header/>
   <env:Body>
      <env:Fault>
         <faultcode>env:Server</faultcode>
         <faultstring>java.lang.NullPointerException</faultstring>
      </env:Fault>
   </env:Body>
</env:Envelope>


Solution:  You are not sending requestParameters tag in the request message. 



<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
   <env:Header/>
   <env:Body>
      <env:Fault>
         <faultcode>env:Server</faultcode>
         <faultstring>ESS-00502 The metadata object type must be specified</faultstring>
      </env:Fault>
   </env:Body>
</env:Envelope>

Solution:  You are not sending <typ:type>JOB_SET</typ:type> value or the namespace is not matching. 


 

Updated WSDL File: OIC will not support direct WSDL URL to create a SOAP connector.  Use the following WSDL definition to create a connector. 


<definitions name="ESSWebService" targetNamespace="http://xmlns.oracle.com/scheduler" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://xmlns.oracle.com/scheduler" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa="http://www.w3.org/2005/08/addressing">
   <types>
      <xs:schema version="1.0" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://xmlns.oracle.com/scheduler/types" xmlns:tns="http://xmlns.oracle.com/scheduler/types" xmlns:xs="http://www.w3.org/2001/XMLSchema">
         <xs:complexType name="metadataObjectId">
            <xs:sequence>
               <xs:element name="name" type="xs:string" minOccurs="0" form="qualified"/>
               <xs:element name="packageName" type="xs:string" minOccurs="0" form="qualified"/>
               <xs:element name="type" type="tns:metadataObjectType" minOccurs="0" form="qualified"/>
            </xs:sequence>
         </xs:complexType>
         <xs:complexType name="postProcessAction">
            <xs:sequence>
               <xs:element name="actionName" type="xs:string" minOccurs="0"/>
               <xs:element name="actionOrder" type="xs:int"/>
               <xs:element name="arguments" type="xs:string" nillable="true" minOccurs="0" maxOccurs="100"/>
               <xs:element name="fileMgmtGroup" type="xs:string" minOccurs="0"/>
               <xs:element name="description" type="xs:string" minOccurs="0"/>
               <xs:element name="onError" type="xs:boolean"/>
               <xs:element name="onSuccess" type="xs:boolean"/>
               <xs:element name="onWarning" type="xs:boolean"/>
            </xs:sequence>
         </xs:complexType>
         <xs:complexType name="nlsOptions">
            <xs:sequence>
               <xs:element name="language" type="xs:string" minOccurs="0"/>
               <xs:element name="numericCharacters" type="xs:string" minOccurs="0"/>
               <xs:element name="territory" type="xs:string" minOccurs="0"/>
            </xs:sequence>
         </xs:complexType>
         <xs:complexType name="requestParameters">
            <xs:sequence>
               <xs:element name="parameter" type="tns:requestParameter" nillable="true" minOccurs="0" maxOccurs="1000" form="qualified"/>
            </xs:sequence>
         </xs:complexType>
         <xs:complexType name="requestParameter">
            <xs:sequence>
               <xs:element name="dataType" type="tns:dataType" minOccurs="0" form="qualified"/>
               <xs:element name="name" type="xs:string" minOccurs="0"/>
               <xs:element name="scope" type="xs:string" minOccurs="0"/>
               <xs:element name="value" type="xs:string" minOccurs="0"/>
            </xs:sequence>
         </xs:complexType>
         <xs:complexType name="requestExecutionContext">
            <xs:sequence>
               <xs:element name="requestId" type="xs:long"/>
               <xs:element name="requestHandle" type="xs:string"/>
               <xs:element name="pausedState" type="xs:string"/>
               <xs:element name="resumed" type="xs:boolean"/>
            </xs:sequence>
         </xs:complexType>
         <xs:complexType name="stepArgs">
            <xs:sequence>
               <xs:element name="arguments" type="xs:string" nillable="true" minOccurs="0" maxOccurs="100"/>
               <xs:element name="NLSOptions" type="tns:nlsOptions" minOccurs="0" form="qualified"/>
               <xs:element name="PPActions" type="tns:postProcessAction" nillable="true" minOccurs="0" maxOccurs="100" form="qualified"/>
               <xs:element name="stepPath" type="xs:string" minOccurs="0"/>
            </xs:sequence>
         </xs:complexType>
         <xs:complexType name="requestDetail">
            <xs:sequence>
               <xs:element name="actualEndTime" type="xs:dateTime" minOccurs="0" form="qualified"/>
               <xs:element name="actualStartTime" type="xs:dateTime" minOccurs="0" form="qualified"/>
               <xs:element name="cause" type="xs:string" minOccurs="0" form="qualified"/>
               <xs:element name="description" type="xs:string" minOccurs="0" form="qualified"/>
               <xs:element name="dispatcherNode" type="xs:string" minOccurs="0" form="qualified"/>
               <xs:element name="expirationTime" type="xs:dateTime" minOccurs="0" form="qualified"/>
               <xs:element name="isCancellable" type="xs:boolean" form="qualified"/>
               <xs:element name="isHoldable" type="xs:boolean" form="qualified"/>
               <xs:element name="jobDefinitionId" type="tns:metadataObjectId" minOccurs="0" form="qualified"/>
               <xs:element name="parentRequestId" type="xs:long" form="qualified"/>
               <xs:element name="priority" type="xs:int" form="qualified"/>
               <xs:element name="processorNode" type="xs:string" minOccurs="0" form="qualified"/>
               <xs:element name="requestId" type="xs:long" form="qualified"/>
               <xs:element name="requestParameters" type="tns:requestParameters" minOccurs="0" form="qualified"/>
               <xs:element name="requestedEndTime" type="xs:dateTime" minOccurs="0" form="qualified"/>
               <xs:element name="requestedStartTime" type="xs:dateTime" minOccurs="0" form="qualified"/>
               <xs:element name="retried" type="xs:int" form="qualified"/>
               <xs:element name="scheduleId" type="tns:metadataObjectId" minOccurs="0" form="qualified"/>
               <xs:element name="scheduledTime" type="xs:dateTime" minOccurs="0" form="qualified"/>
               <xs:element name="state" type="tns:state" minOccurs="0" form="qualified"/>
               <xs:element name="errorType" type="tns:errorType" minOccurs="0" form="qualified"/>
               <xs:element name="stepId" type="xs:string" minOccurs="0" form="qualified"/>
               <xs:element name="submissionTime" type="xs:dateTime" minOccurs="0" form="qualified"/>
               <xs:element name="submitter" type="xs:string" minOccurs="0" form="qualified"/>
               <xs:element name="runAsUser" type="xs:string" minOccurs="0" form="qualified"/>
               <xs:element name="triggerId" type="tns:metadataObjectId" minOccurs="0" form="qualified"/>
               <xs:element name="workAssignmentId" type="tns:metadataObjectId" minOccurs="0" form="qualified"/>
               <xs:element name="workshiftId" type="tns:metadataObjectId" minOccurs="0" form="qualified"/>
               <xs:element name="requestType" type="tns:requestType" minOccurs="0" form="qualified"/>
               <xs:element name="errorWarningMessage" type="xs:string" minOccurs="0" form="qualified"/>
               <xs:element name="errorWarningTime" type="xs:dateTime" minOccurs="0" form="qualified"/>
               <xs:element name="errorWarningDetail" type="xs:string" minOccurs="0" form="qualified"/>
               <xs:element name="ecid" type="xs:string" minOccurs="0" form="qualified"/>
               <xs:element name="processPhase" type="xs:string" minOccurs="0" form="qualified"/>
            </xs:sequence>
         </xs:complexType>
         <xs:simpleType name="metadataObjectType">
            <xs:restriction base="xs:string">
               <xs:enumeration value="JOB_TYPE"/>
               <xs:enumeration value="JOB_DEFINITION"/>
               <xs:enumeration value="JOB_SET"/>
               <xs:enumeration value="INCOMPATIBILITY"/>
               <xs:enumeration value="SCHEDULE_DEFINITION"/>
               <xs:enumeration value="EXCLUSION_DEFINITION"/>
               <xs:enumeration value="TRIGGER"/>
               <xs:enumeration value="WORKSHIFT"/>
               <xs:enumeration value="WORK_ASSIGNMENT"/>
            </xs:restriction>
         </xs:simpleType>
         <xs:simpleType name="state">
            <xs:restriction base="xs:string">
               <xs:enumeration value="WAIT"/>
               <xs:enumeration value="READY"/>
               <xs:enumeration value="RUNNING"/>
               <xs:enumeration value="COMPLETED"/>
               <xs:enumeration value="BLOCKED"/>
               <xs:enumeration value="HOLD"/>
               <xs:enumeration value="CANCELLING"/>
               <xs:enumeration value="EXPIRED"/>
               <xs:enumeration value="CANCELLED"/>
               <xs:enumeration value="ERROR"/>
               <xs:enumeration value="WARNING"/>
               <xs:enumeration value="SUCCEEDED"/>
               <xs:enumeration value="PAUSED"/>
               <xs:enumeration value="PENDING_VALIDATION"/>
               <xs:enumeration value="VALIDATION_FAILED"/>
               <xs:enumeration value="SCHEDULE_ENDED"/>
               <xs:enumeration value="FINISHED"/>
               <xs:enumeration value="ERROR_AUTO_RETRY"/>
            </xs:restriction>
         </xs:simpleType>
         <xs:simpleType name="errorType">
            <xs:restriction base="xs:string">
               <xs:enumeration value="UNDEFINED"/>
               <xs:enumeration value="SYSTEM"/>
               <xs:enumeration value="BUSINESS"/>
               <xs:enumeration value="TIMEOUT"/>
            </xs:restriction>
         </xs:simpleType>
         <xs:simpleType name="dataType">
            <xs:restriction base="xs:string">
               <xs:enumeration value="STRING"/>
               <xs:enumeration value="INTEGER"/>
               <xs:enumeration value="LONG"/>
               <xs:enumeration value="BOOLEAN"/>
               <xs:enumeration value="DATETIME"/>
            </xs:restriction>
         </xs:simpleType>
         <xs:simpleType name="requestType">
            <xs:restriction base="xs:string">
               <xs:enumeration value="SINGLETON"/>
               <xs:enumeration value="RECUR_PARENT"/>
               <xs:enumeration value="RECUR_CHILD"/>
               <xs:enumeration value="JOBSET_SINGLETON"/>
               <xs:enumeration value="JOBSET_STEP"/>
               <xs:enumeration value="JOBSET_RECUR_PARENT"/>
               <xs:enumeration value="JOBSET_RECUR_CHILD"/>
               <xs:enumeration value="SUB_REQUEST"/>
               <xs:enumeration value="UNVALIDATED_REQUEST"/>
               <xs:enumeration value="UNVALIDATED_SUB_REQUEST"/>
               <xs:enumeration value="TRIGGER_CHILD"/>
               <xs:enumeration value="JOBSET_TRIGGER_CHILD"/>
            </xs:restriction>
         </xs:simpleType>
         <xs:simpleType name="asyncStatus">
            <xs:restriction base="xs:string">
               <xs:enumeration value="SUCCESS"/>
               <xs:enumeration value="PAUSE"/>
               <xs:enumeration value="CANCEL"/>
               <xs:enumeration value="WARNING"/>
               <xs:enumeration value="ERROR"/>
               <xs:enumeration value="UPDATE"/>
               <xs:enumeration value="BIZ_ERROR"/>
            </xs:restriction>
         </xs:simpleType>
         <xs:simpleType name="processPhase">
            <xs:restriction base="xs:string">
               <xs:enumeration value="Undefined"/>
               <xs:enumeration value="Initial"/>
               <xs:enumeration value="JobSetInitial"/>
               <xs:enumeration value="PreProcessStart"/>
               <xs:enumeration value="PreProcessDelayed"/>
               <xs:enumeration value="PreProcessComplete"/>
               <xs:enumeration value="ExecuteInitiate"/>
               <xs:enumeration value="ExecuteInitiateComplete"/>
               <xs:enumeration value="ExecuteAsyncWait"/>
               <xs:enumeration value="ExecuteFinalize"/>
               <xs:enumeration value="ExecuteFinalizeAsync"/>
               <xs:enumeration value="ExecuteFinalizeComplete"/>
               <xs:enumeration value="ExecutePaused"/>
               <xs:enumeration value="PostProcessStart"/>
               <xs:enumeration value="PostProcessDelayed"/>
               <xs:enumeration value="PostProcessComplete"/>
               <xs:enumeration value="ProcessExecuteComplete"/>
               <xs:enumeration value="PostExecuteStart"/>
               <xs:enumeration value="PostExecuteWaitForSubreq"/>
               <xs:enumeration value="PostExecuteTerminalComplete"/>
               <xs:enumeration value="PostExecuteComplete"/>
               <xs:enumeration value="Complete"/>
            </xs:restriction>
         </xs:simpleType>
      </xs:schema>
      <schema targetNamespace="http://xmlns.oracle.com/scheduler" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://xmlns.oracle.com/scheduler/types">
         <import namespace="http://xmlns.oracle.com/scheduler/types"/>
         <import namespace="http://www.w3.org/2005/08/addressing" schemaLocation="https://www.w3.org/2006/03/addressing/ws-addr.xsd"/>
         <xsd:complexType name="submitRequest">
            <xsd:sequence>
               <xsd:element name="description" type="xsd:string" form="qualified"/>
               <xsd:element name="jobDefinitionId" type="ns1:metadataObjectId" form="qualified"/>
               <xsd:element name="application" type="xsd:string" form="qualified"/>
               <xsd:element name="requestedStartTime" type="xsd:dateTime" form="qualified"/>
               <xsd:element name="requestParameters" type="ns1:requestParameters" form="qualified"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="submitRequest" type="tns:submitRequest"/>
         <xsd:complexType name="submitRequestResponse">
            <xsd:sequence>
               <xsd:element name="requestId" type="xsd:long"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="submitRequestResponse" type="tns:submitRequestResponse"/>
         <xsd:complexType name="submitRecurringRequest">
            <xsd:sequence>
               <xsd:element name="description" type="xsd:string" form="qualified"/>
               <xsd:element name="jobDefinitionId" type="ns1:metadataObjectId" form="qualified"/>
               <xsd:element name="scheduleId" type="ns1:metadataObjectId" form="qualified"/>
               <xsd:element name="triggerId" type="ns1:metadataObjectId" form="qualified"/>
               <xsd:element name="application" type="xsd:string" form="qualified"/>
               <xsd:element name="requestedStartTime" type="xsd:dateTime" form="qualified"/>
               <xsd:element name="requestedEndTime" type="xsd:dateTime" form="qualified"/>
               <xsd:element name="requestParameters" type="ns1:requestParameters" form="qualified"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="submitRecurringRequest" type="tns:submitRecurringRequest"/>
         <xsd:complexType name="submitRecurringRequestResponse">
            <xsd:sequence>
               <xsd:element name="requestId" type="xsd:long"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="submitRecurringRequestResponse" type="tns:submitRecurringRequestResponse"/>
         <xsd:complexType name="submitInstantRecurringRequest">
            <xsd:sequence>
               <xsd:element name="description" type="xsd:string" form="qualified"/>
               <xsd:element name="jobDefinitionId" type="ns1:metadataObjectId" form="qualified"/>
               <xsd:element name="iCalSchedule" type="xsd:string" form="qualified"/>
               <xsd:element name="application" type="xsd:string" form="qualified"/>
               <xsd:element name="requestedStartTime" type="xsd:dateTime" form="qualified"/>
               <xsd:element name="requestedEndTime" type="xsd:dateTime" form="qualified"/>
               <xsd:element name="requestParameters" type="ns1:requestParameters" form="qualified"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="submitInstantRecurringRequest" type="tns:submitInstantRecurringRequest"/>
         <xsd:complexType name="submitInstantRecurringRequestResponse">
            <xsd:sequence>
               <xsd:element name="requestId" type="xsd:long"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="submitInstantRecurringRequestResponse" type="tns:submitInstantRecurringRequestResponse"/>
         <xsd:complexType name="getCompletionStatus">
            <xsd:sequence>
               <xsd:element name="requestId" type="xsd:long" form="qualified"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="getCompletionStatus" type="tns:getCompletionStatus"/>
         <xsd:complexType name="onJobCompletion">
            <xsd:sequence>
               <xsd:element name="requestId" type="xsd:long"/>
               <xsd:element name="state" type="ns1:state" minOccurs="0"/>
               <xsd:element name="resultMessage" type="xsd:string"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="onJobCompletion" type="tns:onJobCompletion"/>
         <xsd:complexType name="getRequestState">
            <xsd:sequence>
               <xsd:element name="requestId" type="xsd:long" form="qualified"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="getRequestState" type="tns:getRequestState"/>
         <xsd:complexType name="getRequestStateResponse">
            <xsd:sequence>
               <xsd:element name="state" type="ns1:state"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="getRequestStateResponse" type="tns:getRequestStateResponse"/>
         <xsd:complexType name="checkInCancelling">
            <xsd:sequence>
               <xsd:element name="requestExecutionContext" type="xsd:string" form="qualified"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="checkInCancelling" type="tns:checkInCancelling"/>
         <xsd:complexType name="checkInCancellingResponse">
            <xsd:sequence>
               <xsd:element name="isCancelling" type="xsd:boolean"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="checkInCancellingResponse" type="tns:checkInCancellingResponse"/>
         <xsd:complexType name="getRequestDetail">
            <xsd:sequence>
               <xsd:element name="requestId" form="qualified" type="xsd:long"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="getRequestDetail" type="tns:getRequestDetail"/>
         <xsd:complexType name="getRequestDetailResponse">
            <xsd:sequence>
               <xsd:element name="requestDetail" type="ns1:requestDetail"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="getRequestDetailResponse" type="tns:getRequestDetailResponse"/>
         <xsd:complexType name="getRequestExecutionContext">
            <xsd:sequence>
               <xsd:element name="requestExecutionContext" type="xsd:string" form="qualified"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="getRequestExecutionContext" type="tns:getRequestExecutionContext"/>
         <xsd:complexType name="getRequestExecutionContextResponse">
            <xsd:sequence>
               <xsd:element name="requestExecutionContext" type="ns1:requestExecutionContext"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="getRequestExecutionContextResponse" type="tns:getRequestExecutionContextResponse"/>
         <xsd:complexType name="holdRequest">
            <xsd:sequence>
               <xsd:element name="requestId" form="qualified" type="xsd:long"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="holdRequest" type="tns:holdRequest"/>
         <xsd:complexType name="holdRequestResponse">
            <xsd:sequence/>
         </xsd:complexType>
         <xsd:element name="holdRequestResponse" type="tns:holdRequestResponse"/>
         <xsd:complexType name="releaseRequest">
            <xsd:sequence>
               <xsd:element name="requestId" form="qualified" type="xsd:long"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="releaseRequest" type="tns:releaseRequest"/>
         <xsd:complexType name="releaseRequestResponse">
            <xsd:sequence/>
         </xsd:complexType>
         <xsd:element name="releaseRequestResponse" type="tns:releaseRequestResponse"/>
         <xsd:complexType name="setAsyncRequestStatus">
            <xsd:sequence>
               <xsd:element name="requestExecutionContext" type="xsd:string" form="qualified"/>
               <xsd:element name="status" form="qualified" type="ns1:asyncStatus"/>
               <xsd:element name="statusMessage" type="xsd:string" minOccurs="0" maxOccurs="1" form="qualified"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="setAsyncRequestStatus" type="tns:setAsyncRequestStatus"/>
         <xsd:complexType name="setAsyncRequestStatusResponse">
            <xsd:sequence/>
         </xsd:complexType>
         <xsd:element name="setAsyncRequestStatusResponse" type="tns:setAsyncRequestStatusResponse"/>
         <xsd:complexType name="cancelRequest">
            <xsd:sequence>
               <xsd:element name="requestId" type="xsd:long" form="qualified"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="cancelRequest" type="tns:cancelRequest"/>
         <xsd:complexType name="cancelRequestResponse">
            <xsd:sequence/>
         </xsd:complexType>
         <xsd:element name="cancelRequestResponse" type="tns:cancelRequestResponse"/>
         <xsd:complexType name="deleteRequest">
            <xsd:sequence>
               <xsd:element name="requestId" form="qualified" type="xsd:long"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="deleteRequest" type="tns:deleteRequest"/>
         <xsd:complexType name="deleteRequestResponse">
            <xsd:sequence/>
         </xsd:complexType>
         <xsd:element name="deleteRequestResponse" type="tns:deleteRequestResponse"/>
         <xsd:complexType name="purgeRequest">
            <xsd:sequence>
               <xsd:element name="requestId" form="qualified" type="xsd:long"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="purgeRequest" type="tns:purgeRequest"/>
         <xsd:complexType name="purgeRequestResponse">
            <xsd:sequence/>
         </xsd:complexType>
         <xsd:element name="purgeRequestResponse" type="tns:purgeRequestResponse"/>
         <xsd:complexType name="setSubmitArgs">
            <xsd:sequence>
               <xsd:element name="requestParameters" type="ns1:requestParameters" form="qualified"/>
               <xsd:element name="arguments" minOccurs="0" maxOccurs="100" type="xsd:string" form="qualified"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="setSubmitArgs" type="tns:setSubmitArgs"/>
         <xsd:complexType name="setSubmitArgsResponse">
            <xsd:sequence>
               <xsd:element name="requestParametersReturn" type="ns1:requestParameters"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="setSubmitArgsResponse" type="tns:setSubmitArgsResponse"/>
         <xsd:complexType name="setStepsArgs">
            <xsd:sequence>
               <xsd:element name="requestParameters" type="ns1:requestParameters" form="qualified"/>
               <xsd:element name="stepArgsList" minOccurs="0" maxOccurs="100" form="qualified" type="ns1:stepArgs"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="setStepsArgs" type="tns:setStepsArgs"/>
         <xsd:complexType name="setStepsArgsResponse">
            <xsd:sequence>
               <xsd:element name="requestParametersReturn" type="ns1:requestParameters"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="setStepsArgsResponse" type="tns:setStepsArgsResponse"/>
         <xsd:complexType name="addPPActions">
            <xsd:sequence>
               <xsd:element name="requestParameters" type="ns1:requestParameters" form="qualified"/>
               <xsd:element name="postProcessActions" minOccurs="0" maxOccurs="100" type="ns1:postProcessAction" form="qualified"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="addPPActions" type="tns:addPPActions"/>
         <xsd:complexType name="addPPActionsResponse">
            <xsd:sequence>
               <xsd:element name="requestParametersReturn" type="ns1:requestParameters"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="addPPActionsResponse" type="tns:addPPActionsResponse"/>
         <xsd:complexType name="setNLSOptions">
            <xsd:sequence>
               <xsd:element name="requestParameters" type="ns1:requestParameters" form="qualified"/>
               <xsd:element name="nlsOptions" type="ns1:nlsOptions" form="qualified"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="setNLSOptions" type="tns:setNLSOptions"/>
         <xsd:complexType name="setNLSOptionsResponse">
            <xsd:sequence>
               <xsd:element name="requestParametersReturn" type="ns1:requestParameters"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="setNLSOptionsResponse" type="tns:setNLSOptionsResponse"/>
         <xsd:complexType name="IllegalStateException">
            <xsd:sequence>
               <xsd:element name="Message" type="xsd:string"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="IllegalStateException" type="tns:IllegalStateException"/>
         <xsd:complexType name="RuntimeServiceException">
            <xsd:sequence>
               <xsd:element name="Message" type="xsd:string"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="RuntimeServiceException" type="tns:RuntimeServiceException"/>
         <xsd:complexType name="IllegalArgumentException">
            <xsd:sequence>
               <xsd:element name="Message" type="xsd:string"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="IllegalArgumentException" type="tns:IllegalArgumentException"/>
         <xsd:complexType name="ValidationException">
            <xsd:sequence>
               <xsd:element name="Message" type="xsd:string"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="ValidationException" type="tns:ValidationException"/>
         <xsd:complexType name="NotAllowedException">
            <xsd:sequence>
               <xsd:element name="Message" type="xsd:string"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="NotAllowedException" type="tns:NotAllowedException"/>
         <xsd:complexType name="NotFoundException">
            <xsd:sequence>
               <xsd:element name="Message" type="xsd:string"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="NotFoundException" type="tns:NotFoundException"/>
         <xsd:complexType name="RequestNotFoundException">
            <xsd:sequence>
               <xsd:element name="Message" type="xsd:string"/>
            </xsd:sequence>
         </xsd:complexType>
         <xsd:element name="RequestNotFoundException" type="tns:RequestNotFoundException"/>
      </schema>
   </types>
   <message name="wsaHeader">
      <part name="MessageID" element="wsa:MessageID"/>
      <part name="Action" element="wsa:Action"/>
   </message>
   <message name="submitRequestInput">
      <part name="parameters" element="tns:submitRequest"/>
   </message>
   <message name="submitRequestOutput">
      <part name="parameters" element="tns:submitRequestResponse"/>
   </message>
   <message name="RuntimeServiceException">
      <part name="RuntimeServiceException" element="tns:RuntimeServiceException"/>
   </message>
   <message name="ValidationException">
      <part name="ValidationException" element="tns:ValidationException"/>
   </message>
   <message name="NotFoundException">
      <part name="NotFoundException" element="tns:NotFoundException"/>
   </message>
   <message name="submitRecurringRequestInput">
      <part name="parameters" element="tns:submitRecurringRequest"/>
   </message>
   <message name="submitRecurringRequestOutput">
      <part name="parameters" element="tns:submitRecurringRequestResponse"/>
   </message>
   <message name="submitInstantRecurringRequestInput">
      <part name="parameters" element="tns:submitInstantRecurringRequest"/>
   </message>
   <message name="submitInstantRecurringRequestOutput">
      <part name="parameters" element="tns:submitInstantRecurringRequestResponse"/>
   </message>
   <message name="NotAllowedException">
      <part name="NotAllowedException" element="tns:NotAllowedException"/>
   </message>
   <message name="getCompletionStatusInput">
      <part name="parameters" element="tns:getCompletionStatus"/>
   </message>
   <message name="checkInCancellingInput">
      <part name="parameters" element="tns:checkInCancelling"/>
   </message>
   <message name="checkInCancellingOutput">
      <part name="parameters" element="tns:checkInCancellingResponse"/>
   </message>
   <message name="getRequestStateInput">
      <part name="parameters" element="tns:getRequestState"/>
   </message>
   <message name="getRequestStateOutput">
      <part name="parameters" element="tns:getRequestStateResponse"/>
   </message>
   <message name="getRequestDetailInput">
      <part name="parameters" element="tns:getRequestDetail"/>
   </message>
   <message name="getRequestDetailOutput">
      <part name="parameters" element="tns:getRequestDetailResponse"/>
   </message>
   <message name="getRequestExecutionContextInput">
      <part name="parameters" element="tns:getRequestExecutionContext"/>
   </message>
   <message name="getRequestExecutionContextOutput">
      <part name="parameters" element="tns:getRequestExecutionContextResponse"/>
   </message>
   <message name="holdRequestInput">
      <part name="parameters" element="tns:holdRequest"/>
   </message>
   <message name="holdRequestOutput">
      <part name="parameters" element="tns:holdRequestResponse"/>
   </message>
   <message name="IllegalStateException">
      <part name="IllegalStateException" element="tns:IllegalStateException"/>
   </message>
   <message name="releaseRequestInput">
      <part name="parameters" element="tns:releaseRequest"/>
   </message>
   <message name="releaseRequestOutput">
      <part name="parameters" element="tns:releaseRequestResponse"/>
   </message>
   <message name="setAsyncRequestStatusInput">
      <part name="parameters" element="tns:setAsyncRequestStatus"/>
   </message>
   <message name="setAsyncRequestStatusOutput">
      <part name="parameters" element="tns:setAsyncRequestStatusResponse"/>
   </message>
   <message name="RequestNotFoundException">
      <part name="RequestNotFoundException" element="tns:RequestNotFoundException"/>
   </message>
   <message name="cancelRequestInput">
      <part name="parameters" element="tns:cancelRequest"/>
   </message>
   <message name="cancelRequestOutput">
      <part name="parameters" element="tns:cancelRequestResponse"/>
   </message>
   <message name="deleteRequestInput">
      <part name="parameters" element="tns:deleteRequest"/>
   </message>
   <message name="deleteRequestOutput">
      <part name="parameters" element="tns:deleteRequestResponse"/>
   </message>
   <message name="purgeRequestInput">
      <part name="parameters" element="tns:purgeRequest"/>
   </message>
   <message name="purgeRequestOutput">
      <part name="parameters" element="tns:purgeRequestResponse"/>
   </message>
   <message name="setSubmitArgsInput">
      <part name="parameters" element="tns:setSubmitArgs"/>
   </message>
   <message name="setSubmitArgsOutput">
      <part name="parameters" element="tns:setSubmitArgsResponse"/>
   </message>
   <message name="IllegalArgumentException">
      <part name="IllegalArgumentException" element="tns:IllegalArgumentException"/>
   </message>
   <message name="setStepsArgsInput">
      <part name="parameters" element="tns:setStepsArgs"/>
   </message>
   <message name="setStepsArgsOutput">
      <part name="parameters" element="tns:setStepsArgsResponse"/>
   </message>
   <message name="addPPActionsInput">
      <part name="parameters" element="tns:addPPActions"/>
   </message>
   <message name="addPPActionsOutput">
      <part name="parameters" element="tns:addPPActionsResponse"/>
   </message>
   <message name="setNLSOptionsInput">
      <part name="parameters" element="tns:setNLSOptions"/>
   </message>
   <message name="setNLSOptionsOutput">
      <part name="parameters" element="tns:setNLSOptionsResponse"/>
   </message>
   <message name="onJobCompletionInput">
      <part name="parameters" element="tns:onJobCompletion"/>
   </message>
   <portType name="ESSWebService">
      <operation name="submitRequest">
         <input message="tns:submitRequestInput" ns1:Action="submitRequest" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <output message="tns:submitRequestOutput" ns1:Action="submitRequest" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <fault name="RuntimeServiceException" message="tns:RuntimeServiceException"/>
         <fault name="ValidationException" message="tns:ValidationException"/>
         <fault name="NotFoundException" message="tns:NotFoundException"/>
      </operation>
      <operation name="submitRecurringRequest">
         <input message="tns:submitRecurringRequestInput" ns1:Action="submitRecurringRequest" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <output message="tns:submitRecurringRequestOutput" ns1:Action="submitRecurringRequest" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <fault name="RuntimeServiceException" message="tns:RuntimeServiceException"/>
         <fault name="ValidationException" message="tns:ValidationException"/>
         <fault name="NotFoundException" message="tns:NotFoundException"/>
      </operation>
      <operation name="submitInstantRecurringRequest">
         <input message="tns:submitInstantRecurringRequestInput" ns1:Action="submitInstantRecurringRequest" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <output message="tns:submitInstantRecurringRequestOutput" ns1:Action="submitInstantRecurringRequest" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <fault name="RuntimeServiceException" message="tns:RuntimeServiceException"/>
         <fault name="ValidationException" message="tns:ValidationException"/>
         <fault name="NotAllowedException" message="tns:NotAllowedException"/>
         <fault name="NotFoundException" message="tns:NotFoundException"/>
      </operation>
      <operation name="getCompletionStatus">
         <input message="tns:getCompletionStatusInput" ns1:Action="getCompletionStatus" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
      </operation>
      <operation name="checkInCancelling">
         <input message="tns:checkInCancellingInput" ns1:Action="checkInCancelling" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <output message="tns:checkInCancellingOutput" ns1:Action="checkInCancelling" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <fault name="RuntimeServiceException" message="tns:RuntimeServiceException"/>
         <fault name="NotFoundException" message="tns:NotFoundException"/>
      </operation>
      <operation name="getRequestState">
         <input message="tns:getRequestStateInput" ns1:Action="getRequestState" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <output message="tns:getRequestStateOutput" ns1:Action="getRequestState" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <fault name="RuntimeServiceException" message="tns:RuntimeServiceException"/>
         <fault name="NotFoundException" message="tns:NotFoundException"/>
      </operation>
      <operation name="getRequestDetail">
         <input message="tns:getRequestDetailInput" ns1:Action="getRequestDetail" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <output message="tns:getRequestDetailOutput" ns1:Action="getRequestDetail" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <fault name="RuntimeServiceException" message="tns:RuntimeServiceException"/>
         <fault name="NotFoundException" message="tns:NotFoundException"/>
      </operation>
      <operation name="getRequestExecutionContext">
         <input message="tns:getRequestExecutionContextInput" ns1:Action="getRequestExecutionContext" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <output message="tns:getRequestExecutionContextOutput" ns1:Action="getRequestExecutionContext" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <fault name="RuntimeServiceException" message="tns:RuntimeServiceException"/>
         <fault name="NotFoundException" message="tns:NotFoundException"/>
      </operation>
      <operation name="holdRequest">
         <input message="tns:holdRequestInput" ns1:Action="holdRequest" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <output message="tns:holdRequestOutput" ns1:Action="holdRequest" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <fault name="RuntimeServiceException" message="tns:RuntimeServiceException"/>
         <fault name="IllegalStateException" message="tns:IllegalStateException"/>
         <fault name="NotAllowedException" message="tns:NotAllowedException"/>
         <fault name="NotFoundException" message="tns:NotFoundException"/>
      </operation>
      <operation name="releaseRequest">
         <input message="tns:releaseRequestInput" ns1:Action="releaseRequest" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <output message="tns:releaseRequestOutput" ns1:Action="releaseRequest" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <fault name="RuntimeServiceException" message="tns:RuntimeServiceException"/>
         <fault name="IllegalStateException" message="tns:IllegalStateException"/>
         <fault name="NotFoundException" message="tns:NotFoundException"/>
      </operation>
      <operation name="setAsyncRequestStatus">
         <input message="tns:setAsyncRequestStatusInput" ns1:Action="setAsyncRequestStatus" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <output message="tns:setAsyncRequestStatusOutput" ns1:Action="setAsyncRequestStatus" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <fault name="RuntimeServiceException" message="tns:RuntimeServiceException"/>
         <fault name="RequestNotFoundException" message="tns:RequestNotFoundException"/>
      </operation>
      <operation name="cancelRequest">
         <input message="tns:cancelRequestInput" ns1:Action="cancelRequest" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <output message="tns:cancelRequestOutput" ns1:Action="cancelRequest" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <fault name="RuntimeServiceException" message="tns:RuntimeServiceException"/>
         <fault name="IllegalStateException" message="tns:IllegalStateException"/>
         <fault name="NotFoundException" message="tns:NotFoundException"/>
      </operation>
      <operation name="deleteRequest">
         <input message="tns:deleteRequestInput" ns1:Action="deleteRequest" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <output message="tns:deleteRequestOutput" ns1:Action="deleteRequest" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <fault name="RuntimeServiceException" message="tns:RuntimeServiceException"/>
         <fault name="IllegalStateException" message="tns:IllegalStateException"/>
         <fault name="NotAllowedException" message="tns:NotAllowedException"/>
         <fault name="NotFoundException" message="tns:NotFoundException"/>
      </operation>
      <operation name="purgeRequest">
         <input message="tns:purgeRequestInput" ns1:Action="purgeRequest" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <output message="tns:purgeRequestOutput" ns1:Action="purgeRequest" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <fault name="RuntimeServiceException" message="tns:RuntimeServiceException"/>
         <fault name="IllegalStateException" message="tns:IllegalStateException"/>
         <fault name="NotAllowedException" message="tns:NotAllowedException"/>
         <fault name="NotFoundException" message="tns:NotFoundException"/>
      </operation>
      <operation name="setSubmitArgs">
         <input message="tns:setSubmitArgsInput" ns1:Action="setSubmitArgs" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <output message="tns:setSubmitArgsOutput" ns1:Action="setSubmitArgs" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <fault name="IllegalArgumentException" message="tns:IllegalArgumentException"/>
      </operation>
      <operation name="setStepsArgs">
         <input message="tns:setStepsArgsInput" ns1:Action="setStepsArgs" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <output message="tns:setStepsArgsOutput" ns1:Action="setStepsArgs" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <fault name="IllegalArgumentException" message="tns:IllegalArgumentException"/>
      </operation>
      <operation name="addPPActions">
         <input message="tns:addPPActionsInput" ns1:Action="addPPActions" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <output message="tns:addPPActionsOutput" ns1:Action="addPPActions" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <fault name="IllegalArgumentException" message="tns:IllegalArgumentException"/>
      </operation>
      <operation name="setNLSOptions">
         <input message="tns:setNLSOptionsInput" ns1:Action="setNLSOptions" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <output message="tns:setNLSOptionsOutput" ns1:Action="setNLSOptions" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
         <fault name="IllegalArgumentException" message="tns:IllegalArgumentException"/>
      </operation>
   </portType>
   <portType name="ESSWebServiceCallback">
      <operation name="onJobCompletion">
         <input message="tns:onJobCompletionInput" ns1:Action="http://xmlns.oracle.com/scheduler/ESSWebService/getCompletionStatus/Response" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"/>
      </operation>
   </portType>
   <binding name="ESSWebServiceCallbackSoapHttp" type="tns:ESSWebServiceCallback" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl">
      <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
      <wsaw:UsingAddressing wsdl:required="true"/>
      <operation name="onJobCompletion">
         <soap:operation soapAction="onJobCompletion"/>
         <input>
            <soap:body use="literal"/>
         </input>
      </operation>
   </binding>
   <binding name="ESSWebServiceSoapHttp" type="tns:ESSWebService" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl">
      <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
      <wsaw:UsingAddressing wsdl:required="true"/>
      <operation name="submitRequest">
         <soap:operation soapAction="submitRequest"/>
         <input>
            <soap:body use="literal"/>
            <soap:header message="tns:wsaHeader" part="MessageID" use="literal"/>
            <soap:header message="tns:wsaHeader" part="Action" use="literal"/>
         </input>
         <output>
            <soap:body use="literal"/>
         </output>
         <fault name="RuntimeServiceException">
            <soap:fault name="RuntimeServiceException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="ValidationException">
            <soap:fault name="ValidationException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="NotFoundException">
            <soap:fault name="NotFoundException" use="literal" encodingStyle=""/>
         </fault>
      </operation>
      <operation name="submitRecurringRequest">
         <soap:operation soapAction="submitRecurringRequest"/>
         <input>
            <soap:body use="literal"/>
         </input>
         <output>
            <soap:body use="literal"/>
         </output>
         <fault name="RuntimeServiceException">
            <soap:fault name="RuntimeServiceException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="ValidationException">
            <soap:fault name="ValidationException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="NotFoundException">
            <soap:fault name="NotFoundException" use="literal" encodingStyle=""/>
         </fault>
      </operation>
      <operation name="submitInstantRecurringRequest">
         <soap:operation soapAction="submitInstantRecurringRequest"/>
         <input>
            <soap:body use="literal"/>
         </input>
         <output>
            <soap:body use="literal"/>
         </output>
         <fault name="RuntimeServiceException">
            <soap:fault name="RuntimeServiceException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="ValidationException">
            <soap:fault name="ValidationException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="NotAllowedException">
            <soap:fault name="NotAllowedException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="NotFoundException">
            <soap:fault name="NotFoundException" use="literal" encodingStyle=""/>
         </fault>
      </operation>
      <operation name="getCompletionStatus">
         <soap:operation soapAction="getCompletionStatus"/>
         <input>
            <soap:body use="literal"/>
         </input>
      </operation>
      <operation name="getRequestState">
         <soap:operation soapAction="getRequestState"/>
         <input>
            <soap:body use="literal"/>
         </input>
         <output>
            <soap:body use="literal"/>
         </output>
         <fault name="RuntimeServiceException">
            <soap:fault name="RuntimeServiceException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="NotFoundException">
            <soap:fault name="NotFoundException" use="literal" encodingStyle=""/>
         </fault>
      </operation>
      <operation name="checkInCancelling">
         <soap:operation soapAction="checkInCancelling"/>
         <input>
            <soap:body use="literal"/>
         </input>
         <output>
            <soap:body use="literal"/>
         </output>
         <fault name="RuntimeServiceException">
            <soap:fault name="RuntimeServiceException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="NotFoundException">
            <soap:fault name="NotFoundException" use="literal" encodingStyle=""/>
         </fault>
      </operation>
      <operation name="getRequestDetail">
         <soap:operation soapAction="getRequestDetail"/>
         <input>
            <soap:body use="literal"/>
         </input>
         <output>
            <soap:body use="literal"/>
         </output>
         <fault name="RuntimeServiceException">
            <soap:fault name="RuntimeServiceException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="NotFoundException">
            <soap:fault name="NotFoundException" use="literal" encodingStyle=""/>
         </fault>
      </operation>
      <operation name="getRequestExecutionContext">
         <soap:operation soapAction="getRequestExecutionContext"/>
         <input>
            <soap:body use="literal"/>
         </input>
         <output>
            <soap:body use="literal"/>
         </output>
         <fault name="RuntimeServiceException">
            <soap:fault name="RuntimeServiceException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="NotFoundException">
            <soap:fault name="NotFoundException" use="literal" encodingStyle=""/>
         </fault>
      </operation>
      <operation name="holdRequest">
         <soap:operation soapAction="holdRequest"/>
         <input>
            <soap:body use="literal"/>
         </input>
         <output>
            <soap:body use="literal"/>
         </output>
         <fault name="RuntimeServiceException">
            <soap:fault name="RuntimeServiceException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="IllegalStateException">
            <soap:fault name="IllegalStateException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="NotAllowedException">
            <soap:fault name="NotAllowedException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="NotFoundException">
            <soap:fault name="NotFoundException" use="literal" encodingStyle=""/>
         </fault>
      </operation>
      <operation name="releaseRequest">
         <soap:operation soapAction="releaseRequest"/>
         <input>
            <soap:body use="literal"/>
         </input>
         <output>
            <soap:body use="literal"/>
         </output>
         <fault name="RuntimeServiceException">
            <soap:fault name="RuntimeServiceException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="IllegalStateException">
            <soap:fault name="IllegalStateException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="NotFoundException">
            <soap:fault name="NotFoundException" use="literal" encodingStyle=""/>
         </fault>
      </operation>
      <operation name="setAsyncRequestStatus">
         <soap:operation soapAction="setAsyncRequestStatus"/>
         <input>
            <soap:body use="literal"/>
         </input>
         <output>
            <soap:body use="literal"/>
         </output>
         <fault name="RuntimeServiceException">
            <soap:fault name="RuntimeServiceException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="RequestNotFoundException">
            <soap:fault name="RequestNotFoundException" use="literal" encodingStyle=""/>
         </fault>
      </operation>
      <operation name="cancelRequest">
         <soap:operation soapAction="cancelRequest"/>
         <input>
            <soap:body use="literal"/>
         </input>
         <output>
            <soap:body use="literal"/>
         </output>
         <fault name="RuntimeServiceException">
            <soap:fault name="RuntimeServiceException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="IllegalStateException">
            <soap:fault name="IllegalStateException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="NotFoundException">
            <soap:fault name="NotFoundException" use="literal" encodingStyle=""/>
         </fault>
      </operation>
      <operation name="deleteRequest">
         <soap:operation soapAction="deleteRequest"/>
         <input>
            <soap:body use="literal"/>
         </input>
         <output>
            <soap:body use="literal"/>
         </output>
         <fault name="RuntimeServiceException">
            <soap:fault name="RuntimeServiceException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="IllegalStateException">
            <soap:fault name="IllegalStateException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="NotAllowedException">
            <soap:fault name="NotAllowedException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="NotFoundException">
            <soap:fault name="NotFoundException" use="literal" encodingStyle=""/>
         </fault>
      </operation>
      <operation name="purgeRequest">
         <soap:operation soapAction="purgeRequest"/>
         <input>
            <soap:body use="literal"/>
         </input>
         <output>
            <soap:body use="literal"/>
         </output>
         <fault name="RuntimeServiceException">
            <soap:fault name="RuntimeServiceException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="IllegalStateException">
            <soap:fault name="IllegalStateException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="NotAllowedException">
            <soap:fault name="NotAllowedException" use="literal" encodingStyle=""/>
         </fault>
         <fault name="NotFoundException">
            <soap:fault name="NotFoundException" use="literal" encodingStyle=""/>
         </fault>
      </operation>
      <operation name="setSubmitArgs">
         <soap:operation soapAction="setSubmitArgs"/>
         <input>
            <soap:body use="literal"/>
         </input>
         <output>
            <soap:body use="literal"/>
         </output>
         <fault name="IllegalArgumentException">
            <soap:fault name="IllegalArgumentException" use="literal" encodingStyle=""/>
         </fault>
      </operation>
      <operation name="setStepsArgs">
         <soap:operation soapAction="setStepsArgs"/>
         <input>
            <soap:body use="literal"/>
         </input>
         <output>
            <soap:body use="literal"/>
         </output>
         <fault name="IllegalArgumentException">
            <soap:fault name="IllegalArgumentException" use="literal" encodingStyle=""/>
         </fault>
      </operation>
      <operation name="addPPActions">
         <soap:operation soapAction="addPPActions"/>
         <input>
            <soap:body use="literal"/>
         </input>
         <output>
            <soap:body use="literal"/>
         </output>
         <fault name="IllegalArgumentException">
            <soap:fault name="IllegalArgumentException" use="literal" encodingStyle=""/>
         </fault>
      </operation>
      <operation name="setNLSOptions">
         <soap:operation soapAction="setNLSOptions"/>
         <input>
            <soap:body use="literal"/>
         </input>
         <output>
            <soap:body use="literal"/>
         </output>
         <fault name="IllegalArgumentException">
            <soap:fault name="IllegalArgumentException" use="literal" encodingStyle=""/>
         </fault>
      </operation>
   </binding>
   <service name="ESSWebService">
      <port name="SchedulerServiceImplPort" binding="tns:ESSWebServiceSoapHttp">
         <soap:address location="https://hostname:443/ess/esswebservice"/>
      </port>
   </service>
   <service name="ESSWebServiceCallback">
      <port name="callbackPort" binding="tns:ESSWebServiceCallbackSoapHttp">
         <soap:address location="REPLACE_WITH_ACTUAL_URL"/>
      </port>
   </service>
</definitions>


6 comments:

  1. Hello Vijaya,

    I have been searching for this integration. Finally came across your blog. Thank you for your post.

    I have created a SOAP connection as per your wsdl. Could you please demonstrate how we can use this connection for ESS Job submission and to retrieve the request id and status?

    Regards,
    Don

    ReplyDelete
    Replies
    1. Hi Don, You can use the SOAP adapter to invoke the service. You can use the callback integration to receive the call back. Refer - https://soavijaya.blogspot.com/2018/05/soacs-erp-callback-implementation-steps.html.

      Callback request will have Request Id and Status. You can write the request message to a file using Stage write and read using sample XML payload and parse the payload.

      Delete
    2. Hi Donald, were you able to create an integration that calls the Job Set? Always got next:

      Error Summary: A required header representing a Message Addressing Property is not present Error Reason: CASDK-0033: Received a SOAP fault while invoking endpoint target: https://fa-epxm-dev1-saasfaprod1.fa.ocs.oraclecloud.com:443/ess/esswebservice. This indicates a processing exception on the service endpoint side. Please check service side logs to further diagnose the problem :Application Error

      Delete
    3. Donald/Vijaya, Appreciate both Support

      Delete
    4. Hi ,

      You need to use a custom SOAP header to add a Message Id and Action while invoking the service.


      MessageID : Unique ID - Can be your instance Id.
      Action : "submitRequest"

      Thanks
      Vijaya Kumar KV

      Delete
  2. Hi Vijay,

    As per the post I have tried to use WSDL in SOAPUI and enabled the required messaging header while running. Below required details I am passing into request payload:
    XXXXX04

    /oracle/apps/ess/custom/XXXXX04

    JOB_DEFINITION

    EarHcmEss
    null


    and below error I am getting into responde payload:


    env:Server
    ESS-01095 Unable to find ess hosting app with logical application name null.




    Path and name both are correct but still it is not able to locate the job. this is a BI report for which I have created a custom ESS.

    ReplyDelete

Docker - Container Cheat Sheet

Basic and advanced docker commands for reference. Use them as a cheat sheet Commands to install docker on Linux  curl -fsSL https://get.dock...