An external application, that consumes WSDL file, generated by Siebel CRM for an Inbound Web Service, may need to know details (schema) about Siebel CRM standard fields, appearing in SOAP message (request or response).
This documents provides some usage examples, how scheme for some standard Siebel fields could be explicitly included in .WSDL file, after it has generated.
References:
Solution
SOAP Fault: Siebel Details part
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified"
attributeFormDefaul="unqualified"
xmlns:xsd ="http://www.w3.org/2001/XMLSchema"
xmlns:siebelfault="http://www.siebel.com/ws/fault"
targetNamespace ="http://www.siebel.com/ws/fault">
<xsd:element name="siebdetail" type="siebelfault:siebdetail"/>
<xsd:complexType name="siebdetail">
<xsd:sequence>
<xsd:element name="logfilename" maxOccurs="1" minOccurs="0" type="xsd:string"/>
<xsd:element name="errorstack" maxOccurs="1" minOccurs="0" type="siebelfault:errorstack"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="errorstack">
<xsd:sequence>
<xsd:element name="error" maxOccurs="unbounded" minOccurs="0" type="siebelfault:error"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="error">
<xsd:sequence>
<xsd:element name="errorcode" maxOccurs="1" minOccurs="0" type="xsd:string"/>
<xsd:element name="errorsymbol" maxOccurs="1" minOccurs="0" type="xsd:string"/>
<xsd:element name="errormsg" maxOccurs="1" minOccurs="0" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
SOAP Header: Siebel WS-Security part (Siebel 7.7 onwards)
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified"
xmlns:xsd ="http://www.w3.org/2001/XMLSchema"
xmlns:siebelwsse="http://schemas.xmlsoap.org/ws/2002/07/secext"
targetNamespace ="http://schemas.xmlsoap.org/ws/2002/07/secext">
<xsd:element name="Security" type="siebelwsse:Security"/>
<xsd:complexType name="Security">
<xsd:sequence>
<xsd:element name="UsernameToken" maxOccurs="1" minOccurs="0" type="siebelwsse:UsernameToken"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="UsernameToken">
<xsd:sequence>
<xsd:element name="Username" maxOccurs="1" minOccurs="0" type="xsd:string"/>
<xsd:element name="Password" maxOccurs="1" minOccurs="0" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
SOAP Header: Siebel Web Service Session Management part (Siebel 7.8 onwards)
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema elementFormDefault="qualified" attributeFormDefault="unqualified"
xmlns:xsd ="http://www.w3.org/2001/XMLSchema"
xmlns:siebelwsh="http://siebel.com/webservices"
targetNamespace="http://siebel.com/webservices">
<xsd:element name = "SessionToken" type="xsd:string" />
<xsd:element name = "UsernameToken" type="siebelwsh:SiebelUsernameToken" />
<xsd:simpleType name = "SiebelUsernameToken">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:element name = "PasswordText" type="siebelwsh:SiebelPasswordText" />
<xsd:simpleType name = "SiebelPasswordText">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:element name = "SessionType" type="siebelwsh:SiebelSessionType" />
<xsd:simpleType name = "SiebelSessionType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="None"/>
<xsd:enumeration value="Stateless"/>
<xsd:enumeration value="Statefull"/>
<!--
Siebel 8.1.1 onwards:
--->
<xsd:enumeration value="ServerDetermine"/>
</xsd:restriction>
</xsd:simpleType>
<!--
Siebel 8.1.1 onwards (application internal use):
--->
<xsd:element name = "LangCode" type="xsd:string" />
<xsd:element name = "Locale" type="xsd:string" />
<xsd:element name = "CurrencyCode" type="xsd:string" />
</xsd:schema>
Usage example (post-edition of WSDL, generated for a Siebel Inbound Web Service)
It is presumed here, that:- the SOAP Fault part is stored in the "SiebelFault.xsd" file, in the same folder as the .WSDL
- the SOAP Header part for Siebel Web Service Session Management is stored in the "SiebelWSHeader.xsd" file, in the same folder as the .WSDL
- the Web Service name is: "Svc1"
- the URI of the Inbound Web Service is: "http://my.site.com/Svc1"
- the Web Service port name of HTTP Transport is: "Default"
- the Web Service method(operation) name is: "Execute"
- the SOAP Binding is: rpc/literal
- the URL to virtual folder of the EAI Object Manager on Siebel Web Server is: "http://my.site.com/eai_enu"
<definitions
xmlns = "http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
xmlns:soap = "http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soapenc ="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:soapenv ="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:siebelwsh ="http://siebel.com/webservices"
xmlns:siebelfault ="http://www.siebel.com/ws/fault"
xmlns:xsdLocal0 ="http://my.site.com/Svc1"
xmlns:tns ="http://my.site.com/Svc1"
targetNamespac ="http://my.site.com/Svc1">
<!--
Import of Siebel scheme for parts in SOAP Fault and SOAP Header
-->
<import namespace = "http://www.siebel.com/ws/fault" location = "SiebelFault.xsd"/>
<import namespace = "http://siebel.com/webservices" location = "SiebelWSHeader.xsd"/>
. . .
<!--
Definition of message types for Siebel part in SOAP Fault and SOAP Header
-->
<message name="SiebelFault">
<part name="siebdetail" element="siebelfault:siebdetail"/>
</message>
<message name="SiebelWSHeader">
<part name="UsernameToken" element="siebelwsh:UsernameToken"/>
<part name="PasswordText" element="siebelwsh:PasswordText"/>
<part name="SessionType" element="siebelwsh:SessionType"/>
<part name="SessionToken" element="siebelwsh:SessionToken"/>
</message>
. . .
<portType name="Default">
<operation name="Execute">
. . .
<!--
Definition of faut message for Siebel part in SOAP Fault
-->
<fault message="tns:SiebelFault" name="SiebelFault"/>
</operation>
. . .
</portType>
. . .
<binding name="Default" type="tns:Default">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>
<operation name="Execute">
<soap:operation soapAction="rpc/http://my.site.com/Svc1:Execute"/>
<input>
<soap:body namespace="http://my.site.com/Svc1" use="literal"/>
<!--
Declaration of Siebel parts in SOAP Header (request)
-->
<soap:header namespace="http://siebel.com/webservices" use="literal" message="tns:SiebelWSHeader" part="UsernameToken"/>
<soap:header namespace="http://siebel.com/webservices" use="literal" message="tns:SiebelWSHeader" part="PasswordText"/>
<soap:header namespace="http://siebel.com/webservices" use="literal" message="tns:SiebelWSHeader" part="SessionType"/>
<soap:header namespace="http://siebel.com/webservices" use="literal" message="tns:SiebelWSHeader" part="SessionToken"/>
</input>
<output>
<soap:body namespace="http://my.site.com/Svc1" use="literal"/>
<!--
Declaration of Siebel parts in SOAP Header (response)
-->
<soap:header namespace="http://siebel.com/webservices" use="literal" message="tns:SiebelWSHeader" part="SessionToken"/>
</output>
<!--
Declaration of Siebel part in SOAP Fault (fault response)
-->
<fault name="SiebelFault">
<soap:fault namespace="http://www.siebel.com/ws/fault" use="literal" name="SiebelFault"/>
</fault>
. . .
</operation>
. . .
</binding>
. . .
<service name="Svc1">
<port binding="tns:Default" name="Default">
<soap:address location="http://my.site.com/eai_enu/start.swe?SWEExtSource=WebService&SWEExtCmd=Execute&WSSOAP=1"/>
</port>
. . .
</service>
. . .
</definitions>