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>


Wednesday, 8 July 2020

SOACS - SSL Configuration



Creating KSS keystores and generating Certificate Signing Request (CSR)

  • Login to em console and open Weblogic domain -> Security -> Keystores page.
  • Create a new stripe, or use an existing one (eg. "system")
  • Under selected stripe, create a new keystore myKSSIdentity, password based, for custom identity
  • Under selected stripe, create a new keystore myKSSTrust, password based, for custom trust.
  • Open manage section of myKSSIdentity, create a new key pair inside myKSSIdentity with alias as myKSSIdentity and password as required.
  • Use the below values while creating keypair:
    • Alias Name: myIdentity
    • Common Name: mysoacsdomain.com (domain name registered with public DNS)
    • The rest of information from keypair generation form is optional.
  • Select the new keypair created and click generate CSR.
  • Export the created CSR, share it with CA, and get root, intermediate and signed certificates.

Importing CA Certificates

  • Login to em console and open weblogic domain -> security -> keystores page.
  • Select the identity keystore (myKSSIdentity) and click manage
  • Import root certificate from CA as trusted certificate (alias myRootCA).
  • Import intermediate certificate from CA as trusted certificate (alias myInterCA).
  • Import signed certificate as certificate and select alias as myIdentity from drop down. This should be same alias that used to create keypair for generating CSR.
  • Select the trust keystore (myKSSTrust) keystore and click manage.
  • Import root certificate from CA as trusted certificate (alias myRootCA).
  • Import intermediate certificate from CA as trusted certificate (alias myInterCA).
  • Import signed certificate as trusted certificate (alias mySignedCert).
  •  Using putty, login to soa CS VM and open /u01/jdk/jre/lib/security
  •  Import the intermediate certificate into cacerts using below command:  
    • keytool -import -keystore cacerts -storepass changeit -file inter.crt
  •  Take a backup from cacerts file, for future use (eg. in case of JDK upgrade).

Sync Key Stores


  • Login to SOA CS VM using putty.
  • Open /u01/oracle/middleware/oracle_common/common/bin
  • Run ./wlst.sh and execute below commands to sync custom identity and custom trust keystores.

connect('weblogic',’****,'t3://x.x.x.93:7001')
svc = getOpssService(name='KeyStoreService')
svc. listKeyStoreAliases (appStripe="system”, name="myKSSIdentity”, password=” ****”, type="*")
syncKeyStores(appStripe='system',keystoreFormat='KSS')
svc. listKeyStoreAliases (appStripe="system”, name="myKSSTrust”, password='****’, type="*")
syncKeyStores(appStripe='system',keystoreFormat='KSS')
 
  • Restart both admin and managed servers.
Note: This step is needed only if using "system" stripe.

Change weblogic keystores to Custom Identity and Custom Trust

  • On weblogic server admin console open Servers -> Admin Server -> Keystores tab:
  • Change the keystore to Custom Identity and Custom Trust
  • Save
  • Provide the values for Custom Identity
    • Custom Identity Keystore: kss://system/myKSSIdentity and Press ENTER.
    • Custom Identity KeyStore Type:  KSS and ENTER
    • Custom Identity PassPhrase: enter password given while creating myKSSIdentity keystore
    • Confirm Custom Identity PassPhrase:
    • enter password given while creating myKSSIdentity   keystore
  • Provide the values for Custom Trust
    • Custom Trust Keystore: kss://system/myKSSTrust and Press ENTER.
    •  Custom Trust KeyStore Type: KSS and ENTER
    •  Custom Trust PassPhrase: enter password given while creating myKSSTrust keystore
    •  Confirm Custom Trust PassPhrase: 
    • enter password given while creating myKSSTrust  keystore
  • Click Save
  • Open SSL tab
    •  Provide Private Key Alias: myIdentity and Press ENTER.
    •  > This is the alias given while create keypair in myIdentitykeystore
    •   Private Key PassPhrase: Password given while creating key pair under idenity keystore
    •  Confirm Private Key PassPhrase:
    •  Password given while creating key pair under idenity keystore
  • Change HostNameVerfication = None. Not sure if its required.
  • Click Save.
  • Repeat steps 1 to 8 for Managed Server also.
  • Stop Admin, Managed Server and Node Manager.

Node Manager Changes

1. Open /domain_home/nodemanager
2. Edit nodemanager.properties and add the below properties.

# added for custom identity and custom trust
KeyStores=CustomIdentityAndCustomTrust
CustomIdentityAlias=myKSSIdentity
CustomIdentityKeyStoreFileName=kss://system/myKSSIdentity
CustomIdentityKeyStorePassPhrase=*********
CustomIdentityKeyStoreType=KSS
CustomIdentityPrivateKeyPassPhrase=*********
CustomTrustKeyStoreFileName=kss://system/myKSSTrust

3. Edit startNodeManager.sh file under /domain_home/bin to add the below properties during startup: 

JAVA_OPTIONS="${JAVA_OPTIONS} -Doracle.security.jps.config=/u01/data/domains/SOA_domain/config/fmwconfig/jps-config-jse.xml -Dcommon.components.home=/u01/app/oracle/middleware/oracle_common -Dopss.version=12.2.1.2 -Dweblogic.nodemanager.sslHostNameVerificationEnabled=false -Djava.security.egd=file:/dev/./urandom.egd=file:/dev/./urandom"

Note: -Dopss.version=12.2.1.2 property is specific to version 12.2.1.2.

Changes in boot.properties

Note: This step is not needed if the environment is using OTD.

1. Login the SOA CS VM through putty and open /domain_home/servers/AdminServer/data/nodemanager
2. Take a backup copy of boot.properties.
3. Open boot.properties and comment the below line and save.

#TrustKeyStore=DemoTrust

4. Open /domain_home/servers/soa_server1/data/nodemanager/
5. Take a backup copy of boot.properties.
6. Edit boot.properties file, comment the below line.

#TrustKeyStore=DemoTrust

7. Add the below lines at the end.

CustomTrustKeyStoreFileName=kss://system/myKSSTrust
TrustKeyStore=CustomTrust
CustomTrustKeyStorePassPhrase=****
CustomTrustKeyStoreType=KSS

8. save boot.properties.


In setDomainEnv.sh remove this property:

-Djavax.net.ssl.trustStore=%WL_HOME%\server\lib\DemoTrust.jks

Thursday, 2 July 2020

OIC - Create Non Expiry Service Accounts


One of the common and important requirements in OIC implementation is to configure a service account or a basic authentication account which will never expire.

It can be achieved using following options.

  1. Create an account in IDCS and Update the Custom Password policy to set the expiry as none. This will impact all the users and it will be a security issue.
  2. Create a Service account in IDCS  using Application Client configuration.  Configure a confidential application with a specific name like XXXX_BASICAUTH  as a client id and assign this client to OIC role. 
    • Application accounts are not going to expire and it will solve the issue. 
Follow below steps to configure Application Client. 

1. Client Application to get the OAUTH Token.
  • Create a new confidential application to get the Authentication token or use an existing application.
  • Login to IDCS console 
  • Got to Applications
  • Select Create Confidential Application
  • Give a name  - Token 
  • Select Register as a Client
  • Select Client Credentials and JWT Assertions options under allowed grants.
  • Under - Grant the client access section.
    • SELECT
      • Identity Domain Administrator
      • Me
  • Finish and note down the client id and secret.








2. Steps to Create a Service Account using REST API and Token.
  • Create a new confidential application which will be used as a Service Account.
  • Use a REST API to create a Client Application. 
  • This will allow us to provide  required Client ID. Console will not provide this option. 
  • Give Client ID as XXXX_BASICAUTH
  • It is mandatory to follow above naming convention.  XXXX can be anything and it should have _BASICAUTH
  • Invoke following rest API using Authentication Token. 
  • https://idcs-XXXXX.identity.oraclecloud.com/admin/v1/Apps
    • Invoke IDCS to get the token
    • https://idcs-XXXXXXXX.identity.oraclecloud.com/oauth2/v1/token
    • SCOPE : urn:opc:idm:__myscopes__
    • Grant Type :  Client Credentials
    • Client Id and Secret from Above application.
  • Use the Token Generated from the above steps and invoke the API.
  • This will create a new application with Client ID as XXXX_BASICAUTH
  • Add this client to OIC application roles in IDCS. 

        












PAYLOAD for Creating Client Application
{
"active": true,
"allUrlSchemesAllowed": false,
"allowAccessControl": false,
"allowedGrants":
["client_credentials", "urn:ietf:params:oauth:grant-type:jwt-bearer"
],
"attrRenderingMetadata":
[{
"name": "aliasApps",
"visible": false
}],
"basedOnTemplate":
{ "value": "CustomWebAppTemplateId" },
"clientType": "confidential",
"displayName": "JCSOIC_CLIENT",
"editableAttributes": [ { "name": "allowedGrants" },
{ "name": "protectableSecondaryAudiences" },
{ "name": "asOPCService" },
{ "name":"accessTokenExpiry" },
{ "name": "linkingCallbackUrl" },
{ "name": "isOAuthResource" },
{ "name": "appIcon" },
{ "name": "clientType" },
{ "name": "refreshTokenExpiry" },
{ "name": "trustScope" },
{ "name": "landingPageUrl" },
{ "name": "audience" },
{ "name": "samlServiceProvider" },
{ "name": "isLoginTarget" },
{ "name": "redirectUris" },
{ "name": "allowedScopes" },
{ "name": "tags" },
{ "name": "logoutUri" },
{ "name": "allowedOperations" },
{ "name": "termsOfUse" },
{ "name": "serviceParams" },
{ "name": "certificates" },
{ "name": "aliasApps" },
{ "name": "schemas" },
{ "name": "isWebTierPolicy" },
{ "name": "trustPolicies" },
{ "name": "logoutPageUrl" },
{ "name": "secondaryAudiences" },
{ "name": "displayName" },
{ "name": "serviceTypeURN" },
{ "name": "icon" },
{ "name": "description" },
{ "name": "isOAuthClient" },
{ "name": "allowedTags" },
{ "name": "showInMyApps" },
{ "name": "isObligationCapable" },
{ "name": "isMobileTarget" },
{ "name": "allowOffline" },
{ "name": "idpPolicy" },
{ "name": "appSignonPolicy" },
{ "name": "postLogoutRedirectUris" },
{ "name": "isFormFill" },
{ "name": "loginMechanism" },
{ "name": "serviceTypeVersion" },
{ "name": "errorPageUrl" },
{ "name": "signonPolicy" },
{ "name": "identityProviders" },
{ "name": "isSamlServiceProvider" },
{ "name": "appThumbnail" },
{ "name": "loginPageUrl" },
{ "name": "scopes" },
{ "name": "allowAccessControl" },
{ "name": "isKerberosRealm" },
{ "name": "allUrlSchemesAllowed" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:encryptionAlgorithm" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:groupAssertionAttributes" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:includeSigningCertInSignature" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:signResponseOrAssertion"},
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:assertionConsumerUrl" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:nameIdUserstoreAttribute" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:logoutResponseUrl" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:succinctId" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:logoutRequestUrl" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:partnerProviderId" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:nameIdFormat" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:logoutBinding" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:userAssertionAttributes" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:signatureHashAlgorithm" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:metadata" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:encryptAssertion" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:logoutEnabled" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:encryptionCertificate" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:signingCertificate" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:samlServiceProvider:App:federationProtocol" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:webTierPolicy:App:webTierPolicyJson" },
{"name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:managedapp:App:bundleConfigurationProperties" },
{"name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:managedapp:App:isAuthoritative" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:managedapp:App:enableSync" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:managedapp:App:adminConsentGranted" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:managedapp:App:connected" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:managedapp:App:flatFileBundleConfigurationProperties" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:managedapp:App:threeLeggedOAuthCredential" }, {
"name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:managedapp:App:bundlePoolConfiguration" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:managedapp:App:flatFileConnectorBundle" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillAppTemplate:AppTemplate:revealPasswordOnForm" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillAppTemplate:AppTemplate:userNameFormTemplate"
}, { "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillAppTemplate:AppTemplate:userNameFormExpression" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillAppTemplate:AppTemplate:formCredentialSharingGroupID" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillAppTemplate:AppTemplate:formCredMethod" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillAppTemplate:AppTemplate:syncFromTemplate" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillAppTemplate:AppTemplate:configuration" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillAppTemplate:AppTemplate:formFillUrlMatch" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillAppTemplate:AppTemplate:formType" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:kerberosRealm:App:masterKey" }, { "name":
"urn:ietf:params:scim:schemas:oracle:idcs:extension:kerberosRealm:App:maxRenewableAge" }, { "name":
"urn:ietf:params:scim:schemas:oracle:idcs:extension:kerberosRealm:App:maxTicketLife" }, { "name":
"urn:ietf:params:scim:schemas:oracle:idcs:extension:kerberosRealm:App:supportedEncryptionSaltTypes" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:kerberosRealm:App:realmName" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:kerberosRealm:App:ticketFlags" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:kerberosRealm:App:defaultEncryptionSaltType" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:requestable:App:requestable" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillApp:App:revealPasswordOnForm" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillApp:App:userNameFormExpression" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillApp:App:formType" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillApp:App:formCredMethod" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillApp:App:configuration" },
{ "name":
"urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillApp:App:formFillUrlMatch" }, { "name":
"urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillApp:App:formCredentialSharingGroupID" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:formFillApp:App:userNameFormTemplate" },
{ "name": "urn:ietf:params:scim:schemas:oracle:idcs:extension:dbcs:App:domainApp" }, { "name": "active" },
{ "name": "grantedAppRoles" }, { "name": "userRoles" }, { "name": "adminRoles" }, { "name": "clientSecret" }
], "infrastructure": false, "isAliasApp": false, "isManagedApp": false, "isMobileTarget": false, "isOAuthClient":
true, "isOAuthResource": false, "isOPCService": false, "isSamlServiceProvider": false, "isUnmanagedApp": false,
"isWebTierPolicy": false, "loginMechanism": "OIDC", "migrated": false, "name": "JCSOIC_BASICAUTH",
"showInMyApps": false, "trustScope": "Explicit", "urn:ietf:params:scim:schemas:oracle:idcs:extension:requestable:App":
{ "requestable": false },
"schemas": ["urn:ietf:params:scim:schemas:oracle:idcs:App",
"urn:ietf:params:scim:schemas:oracle:idcs:extension:requestable:App"]
 }

Oracle Fusion - Order Management Cross Reference

Summary:  This guide outlines the steps to manage cross-reference data for Sales Order FBDI upload for the source systems,  including export...