Applies to: Siebel Email Marketing Server - Version: 7.5.3 [16157] to 7.5.3 [16157] - Release: V7 to V7
Information in this document applies to any platform.
SymptomsWhen a contact/prospect recorded have been deleted and later a read receipt response is processed by CTD it gives the error bellow:
2008-10-10 13:36:59,671 [QueueReader-6-msgOpenQ] ERROR QueueReader Partial failure processing file dataq.0000000200
com.boldfish.db.DataProcessor$PartialFailureException:
25633431Update operation on integration component 'Marketing Camp Con' failed because no matching record in business component 'Marketing Camp Con' with search specification '[Id]="1-WY6AC"' could be found.(SBL-EAI-04403)Unknown
at com.boldfish.ctd.backend.CtdProcessor.handleSiebelException(CtdProcessor.java:99)
at com.boldfish.ctd.backend.MsgOpenProcessor.process(MsgOpenProcessor.java:98)
at com.boldfish.db.QueueReader.run(QueueReader.java:129)
at java.lang.Thread.run(Thread.java:534)
Caused by:
25633431Update operation on integration component 'Marketing Camp Con' failed because no matching record in business component 'Marketing Camp Con' with search specification '[Id]="1-WY6AC"' could be found.(SBL-EAI-04403)Unknown
at com.siebel.data.SiebelService.invokeMethod(SiebelService.java)
at com.siebel.integration.adapter.SiebelJDBAdapterBase.invoke(SiebelJDBAdapterBase.java:243)
at com.siebel.service.jdb.eaisiebeladapter.EAI_Siebel_AdapterBusServAdapter.mUpdate(EAI_Siebel_AdapterBusServAdapter.java:125)
at com.boldfish.ctd.backend.MsgOpenProcessor.process(MsgOpenProcessor.java:86)
... 2 more
The main issue is that the error keep happening all the time and CTD has issues to process the other responses.
CauseCustomer ctd.log shows old version:
INFO AppListener ----- ctd version 7.5.3 EMS [EMS 100] 753-integrated-release/26064-----
EMS [100] build 27671 does not show this behavior.
2008-10-14 11:06:56,171 [main] INFO AppListener ----- ctd version 7.5.3 EMS [EMS 100] 753-integrated-release/27671-----
We can see CTD deleting the response after processing a Message Open for a contact that have been deleted:
2008-10-14 11:07:31,375 [QueueReader-1-msgOpenQ] DEBUG QueueReader Processed failure and deleted file: dataq.0000000001
Change Request <<12-VP1GB8>> "CTD continuously tries to process a deleted message, causing no other message Open Times be tracked." has been found
SolutionCustomer having issues should get the latest EMS 7.5.3. Integrated build 27671on Metalink 3. Please search for Patch Number 8802744.
Applies to: Siebel Service - Version: 7.5.3.17 [16285] and later [Release: V7 and later ]
Information in this document applies to any platform.
Goal
A new Inbound Web Service has been generated in Siebel and it is being consumed in SAP.
Successful calls to the Inbound Web Services work fine. However, whenever an error is obtained in the Siebel process, the SOAP error response below sent to SAP is not readable.
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<SOAP-ENV:Fault xmlns:siebelf="http://www.siebel.com/ws/fault">
<faultcode>Client</faultcode>
<faultstring>Update operation on integration component 'Account' failed because no matching record in business component 'Account' with search specification '[Account ID]="1-009"' could be found.(SBL-EAI-04403)</faultstring>
<detail>
<siebelf:errorstack>
<siebelf:error>
<siebelf:errorsymbol/>
<siebelf:errormsg>Update operation on integration component 'Account' failed because no matching record in business component 'Account' with search specification '[Account ID]="1-009"' could be found.(SBL-EAI-04403)</siebelf:errormsg>
</siebelf:error>
</siebelf:errorstack>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
The situation is caused because the WSDL definition file created in Siebel does not include the definition for Fault schema, so when this structure is received in the target system, it cannot be read.
SolutionOptions below could be considered.
a. Add the SOAP Fault schema manually to the WSDL.
b. To avoid sending the error message to SAP, by modifying in some way the service behind the Web service.
c. Change the external system to accept the fault message. Since this format is quite simple and most of systems are able of working with it, the option could be evaluated in target system.
Below there is an example for the option to modify the WSDL file generated in Siebel, in order to include the structure for Error messages. Information below is just a sample and it might require additional validations depending on specific cases. Steps include sections of the WSDL file that would have to be modified.
1. Section of Definitions. It has to include Fault definition.
<?xml version="1.0" encoding="UTF-8"?>
<?Siebel-Property-Set EscapeNames="false"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" .... xmlns:siebelf="http://www.siebel.com/ws/fault" ...>
2. Definition for Fault elements within Types/Schema. The following section has to be added to the WSDL file.
<types>
<xsd:schema>
....
<xsd:element name="Fault" type="xsdLocal0:Fault"/>
<xsd:complexType name="Fault">
<xsd:sequence>
<xsd:element name="detail" minOccurs="1" maxOccurs="1" type="xsdLocal0:detail"/>
<xsd:element name="faultcode" minOccurs="0" maxOccurs="1" type="xsd:string"/>
<xsd:element name="faultstring" minOccurs="0" maxOccurs="1" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="detail">
<xsd:sequence>
<xsd:element name="errorstack" minOccurs="1" maxOccurs="1" type="xsdLocal0:errorstack"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="errorstack">
<xsd:sequence>
<xsd:element name="error" minOccurs="1" maxOccurs="1" type="xsdLocal0:error"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="error">
<xsd:sequence>
<xsd:element name="errorsymbol" minOccurs="0" maxOccurs="1" type="xsd:string"/>
<xsd:element name="errormsg" minOccurs="0" maxOccurs="1" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</types>
3. The following Message definition for Fault has to be added to the WSDL file:
<message name="ExceptionFault">
<part name="fault" element="xsdLocal0:Fault"/>
</message>
4. Within Port section, each binding defining an operation has to include the definition of the message in case of Fault, additionally to any Input and/or Output already defined.
<portType name="Entitle">
<operation name="EntitleUpd">
<input message="tns:EntitleUpd_Input"/>
<output message="tns:EntitleUpd_Output"/>
<fault name="Fault" message="tns:ExceptionFault"/>
</operation>
</portType>
5. Finally, within Binding section, each operation will have to include the definition of Fault message for the case of an error.
<binding name="Default_Binding" type="tns:Entitle">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="EntitleUpd">
<soap:operation soapAction="document/http://www.siebel.com/xml/Entitle:EntitleUpd"/>
<input>
<soap:body use="literal" namespace="http://www.siebel.com/xml/Entitle"/>
</input>
<output>
<soap:body use="literal" namespace="http://www.siebel.com/xml/Entitle"/>
</output>
<fault name="Fault">
<soap:fault name="Fault" use="literal"/>
</fault>
</operation>
</binding>
After modifying the WSDL file to include sections above, this has to be consumed in the target system to validate Fault structures received in SOAP Responses, in case of errors returned for the web service.
In version 8.1 there are some additional options to handle this Fault structure in Siebel. Information is published in Booshelf > Integration Platform Technologies: Siebel Enterprise Application Integration > Web Services > About SOAP Fault Schema Support.
Information in this document applies to any platform.
SymptomsWhen a contact/prospect recorded have been deleted and later a read receipt response is processed by CTD it gives the error bellow:
2008-10-10 13:36:59,671 [QueueReader-6-msgOpenQ] ERROR QueueReader Partial failure processing file dataq.0000000200
com.boldfish.db.DataProcessor$PartialFailureException:
25633431Update operation on integration component 'Marketing Camp Con' failed because no matching record in business component 'Marketing Camp Con' with search specification '[Id]="1-WY6AC"' could be found.(SBL-EAI-04403)Unknown
at com.boldfish.ctd.backend.CtdProcessor.handleSiebelException(CtdProcessor.java:99)
at com.boldfish.ctd.backend.MsgOpenProcessor.process(MsgOpenProcessor.java:98)
at com.boldfish.db.QueueReader.run(QueueReader.java:129)
at java.lang.Thread.run(Thread.java:534)
Caused by:
25633431Update operation on integration component 'Marketing Camp Con' failed because no matching record in business component 'Marketing Camp Con' with search specification '[Id]="1-WY6AC"' could be found.(SBL-EAI-04403)Unknown
at com.siebel.data.SiebelService.invokeMethod(SiebelService.java)
at com.siebel.integration.adapter.SiebelJDBAdapterBase.invoke(SiebelJDBAdapterBase.java:243)
at com.siebel.service.jdb.eaisiebeladapter.EAI_Siebel_AdapterBusServAdapter.mUpdate(EAI_Siebel_AdapterBusServAdapter.java:125)
at com.boldfish.ctd.backend.MsgOpenProcessor.process(MsgOpenProcessor.java:86)
... 2 more
The main issue is that the error keep happening all the time and CTD has issues to process the other responses.
CauseCustomer ctd.log shows old version:
INFO AppListener ----- ctd version 7.5.3 EMS [EMS 100] 753-integrated-release/26064-----
EMS [100] build 27671 does not show this behavior.
2008-10-14 11:06:56,171 [main] INFO AppListener ----- ctd version 7.5.3 EMS [EMS 100] 753-integrated-release/27671-----
We can see CTD deleting the response after processing a Message Open for a contact that have been deleted:
2008-10-14 11:07:31,375 [QueueReader-1-msgOpenQ] DEBUG QueueReader Processed failure and deleted file: dataq.0000000001
Change Request <<12-VP1GB8>> "CTD continuously tries to process a deleted message, causing no other message Open Times be tracked." has been found
SolutionCustomer having issues should get the latest EMS 7.5.3. Integrated build 27671on Metalink 3. Please search for Patch Number 8802744.
Applies to: Siebel Service - Version: 7.5.3.17 [16285] and later [Release: V7 and later ]
Information in this document applies to any platform.
Goal
A new Inbound Web Service has been generated in Siebel and it is being consumed in SAP.
Successful calls to the Inbound Web Services work fine. However, whenever an error is obtained in the Siebel process, the SOAP error response below sent to SAP is not readable.
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<SOAP-ENV:Fault xmlns:siebelf="http://www.siebel.com/ws/fault">
<faultcode>Client</faultcode>
<faultstring>Update operation on integration component 'Account' failed because no matching record in business component 'Account' with search specification '[Account ID]="1-009"' could be found.(SBL-EAI-04403)</faultstring>
<detail>
<siebelf:errorstack>
<siebelf:error>
<siebelf:errorsymbol/>
<siebelf:errormsg>Update operation on integration component 'Account' failed because no matching record in business component 'Account' with search specification '[Account ID]="1-009"' could be found.(SBL-EAI-04403)</siebelf:errormsg>
</siebelf:error>
</siebelf:errorstack>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
The situation is caused because the WSDL definition file created in Siebel does not include the definition for Fault schema, so when this structure is received in the target system, it cannot be read.
SolutionOptions below could be considered.
a. Add the SOAP Fault schema manually to the WSDL.
b. To avoid sending the error message to SAP, by modifying in some way the service behind the Web service.
c. Change the external system to accept the fault message. Since this format is quite simple and most of systems are able of working with it, the option could be evaluated in target system.
Below there is an example for the option to modify the WSDL file generated in Siebel, in order to include the structure for Error messages. Information below is just a sample and it might require additional validations depending on specific cases. Steps include sections of the WSDL file that would have to be modified.
1. Section of Definitions. It has to include Fault definition.
<?xml version="1.0" encoding="UTF-8"?>
<?Siebel-Property-Set EscapeNames="false"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" .... xmlns:siebelf="http://www.siebel.com/ws/fault" ...>
2. Definition for Fault elements within Types/Schema. The following section has to be added to the WSDL file.
<types>
<xsd:schema>
....
<xsd:element name="Fault" type="xsdLocal0:Fault"/>
<xsd:complexType name="Fault">
<xsd:sequence>
<xsd:element name="detail" minOccurs="1" maxOccurs="1" type="xsdLocal0:detail"/>
<xsd:element name="faultcode" minOccurs="0" maxOccurs="1" type="xsd:string"/>
<xsd:element name="faultstring" minOccurs="0" maxOccurs="1" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="detail">
<xsd:sequence>
<xsd:element name="errorstack" minOccurs="1" maxOccurs="1" type="xsdLocal0:errorstack"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="errorstack">
<xsd:sequence>
<xsd:element name="error" minOccurs="1" maxOccurs="1" type="xsdLocal0:error"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="error">
<xsd:sequence>
<xsd:element name="errorsymbol" minOccurs="0" maxOccurs="1" type="xsd:string"/>
<xsd:element name="errormsg" minOccurs="0" maxOccurs="1" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</types>
3. The following Message definition for Fault has to be added to the WSDL file:
<message name="ExceptionFault">
<part name="fault" element="xsdLocal0:Fault"/>
</message>
4. Within Port section, each binding defining an operation has to include the definition of the message in case of Fault, additionally to any Input and/or Output already defined.
<portType name="Entitle">
<operation name="EntitleUpd">
<input message="tns:EntitleUpd_Input"/>
<output message="tns:EntitleUpd_Output"/>
<fault name="Fault" message="tns:ExceptionFault"/>
</operation>
</portType>
5. Finally, within Binding section, each operation will have to include the definition of Fault message for the case of an error.
<binding name="Default_Binding" type="tns:Entitle">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="EntitleUpd">
<soap:operation soapAction="document/http://www.siebel.com/xml/Entitle:EntitleUpd"/>
<input>
<soap:body use="literal" namespace="http://www.siebel.com/xml/Entitle"/>
</input>
<output>
<soap:body use="literal" namespace="http://www.siebel.com/xml/Entitle"/>
</output>
<fault name="Fault">
<soap:fault name="Fault" use="literal"/>
</fault>
</operation>
</binding>
After modifying the WSDL file to include sections above, this has to be consumed in the target system to validate Fault structures received in SOAP Responses, in case of errors returned for the web service.
In version 8.1 there are some additional options to handle this Fault structure in Siebel. Information is published in Booshelf > Integration Platform Technologies: Siebel Enterprise Application Integration > Web Services > About SOAP Fault Schema Support.
Related
Products
Siebel > Customer Relationship Management > CRM - Enterprise Edition > Siebel Service
Keywords
| |
WSDL; SOAP FAULT; INBOUND WEB SERVICE
| |
Errors
| |
SBL-EAI-04403
|
No comments:
Post a Comment