SBL-EAI-04012: Service Method arguments property set has no children - expected a child of type 'SiebelMessage'
Applies to:
Error Message Area:Application Integration Infrastructure, Enterprise Application Interfaces - EAIVersion:Siebel 8.1
Purpose
This document is intended to provide cause and corrective action information about Siebel Error Message SBL-EAI-04012: Service Method arguments property set has no children - expected a child of type 'SiebelMessage'.Scope
This document is informational and intended for any user.SBL-EAI-04012: Service Method arguments property set has no children - expected a child of type 'SiebelMessage'.
Explanation
Property set input to the business service is expected to have a child property set of type 'SiebelMessage'. For some reason, there were not child property sets in the input property set.Corrective Action
Check that the input to the business service is correct. Most likely, there is empty data coming out of the previous step in a workflow or from an XML file.Applies to:
Siebel System Software - Version: 6.0.1 [2848] to 8.1.1 [21112] - Release: V6 to V8Information in this document applies to any platform.
Area(s):Siebel EAI
Release(s):V6 (Siebel 2000-Enterprise), V7 (Enterprise), V6 (Siebel 2000-MidMarket), V7 (MidMarket)
Database(s):All Supported Databases
App Server OS(s):All Supported Platforms
Latest release tested against:V7 (Enterprise)
Keywords:XML Converter, XML Hierarchy Converter, EAI XML Converter
This document was previously published as Siebel Troubleshooting Steps 49.
Purpose
This document provides tips for troubleshooting errors with the Siebel XML converters and XML documents. A list of common error messages and recommended actions is included at the end of the document as well. This document assumes you are familiar with XML standards. Most of the troubleshooting suggestions in this document deal with the use of XML processing done through Siebel workflow processes so it assumes you are also familiar with the Siebel Workflow Process features.
Last Review Date
August 8, 2008Instructions for the Reader
in debugging a specific issue. When possible, diagnostic tools are included in the document
to assist in troubleshooting.
Troubleshooting Details
The Siebel EAI toolkit includes a number of converter business services. These business services allow you to write custom business service scripts or build workflow processes that convert data to and from different formats, such as converting a MIME document to a Siebel integration object instance. In addition to the general EAI business services, there are also converters specific to industry standards, such as the FINS IAA-XML Converter.
This document provides troubleshooting suggestions for the three main Siebel EAI XML converters that convert data to and from a property set to an XML document:
- XML Converter
- XML Hierarchy Converter (new in Siebel 7.0.4)
- EAI XML Converter
These three converter business services are similar in functionality in that they take serialized data such as an XML document, and convert it to hierarchal data structure such as a property set. They also perform the reverse process.
For more information on these Siebel converter business services, and the use of XML in Siebel integrations, refer to Siebel Bookshelf version 8.0 > XML Reference: Siebel Enterprise Application Integration > XML Representation of Integration Object Instances.
NOTE: There are other converter business services, such as the EAI Integration Object to XML Hierarchy Converter and EAI MimePropSet Converter which convert between two types of property sets. This document does not cover those types of converter services but they are discussed in the XML Reference.
Overview
The most common causes of XML converters errors are:
Incorrect or empty input argument specified. For example, the input XML document or property set is empty, contains invalid data or is in an invalid format.
You will get error messages if you try to use the EAI XML Converter to transform a property set that is not a Siebel integration object. Likewise, if you pass in an XML document that does not represent a Siebel Message to be converted, you will get errors. Since integration object conversion relies on metadata, you will also get errors if the integration object definition does not exist in the Siebel SRF, or if your XML element and attributes does not contain the integration object definition.
Character Set conversion issues
You will get errors if your XML prologue contains specifies one encoding (i.e. "encoding='UTF-8'") but your actual data is encoded as UTF-16. Another common error is when your document is encoded as ISO-8859-1 and contains some Western European language specific characters like: Ã (A-umlaut), but you have "utf-8" in the XML prologue.
For earlier releases of Siebel version 6, it is possible for the input document to be encoded correctly but the input or output character set specified in the XML document is not supported by the XML parser included with Siebel version 6. Siebel version 6 had limited character set support. It was possible for it to read in the ISO-8859-1 format, but all documents would be written out in UTF-8, unless a custom business service was written.
With Siebel versions 7.5 and higher, there is a greatly expanded list of supported character sets for input and output XML files. For a complete list of the supported character sets, go to the List of Values screen, and query for "Type = *CHAR_ENCODING_CD"
When debugging errors with the XML converters, the techniques to use are:
When possible, find the minimal test case needed to reproduce the error. This often involves isolating the problem down to one or two steps in a workflow process, or when a business service is involved. If there is no obvious reproducible test case, look for patterns in when the behavior occurs, i.e. certain types of data are more likely cause an error. Having a minimal test case will allow you to reproduce the problem on the dedicated client, such as in a workflow process. Testing on a local client makes debugging easier as you can test in a development environment and examine the inputs and outputs of each step. You can also provide your test case to Technical Support to run as well.
If you can run your test case in the workflow process simulator, you can then review the inputs and outputs of each step along the way for Siebel versions 6.x, 7.0.x and 7.5.x. This would allow you to see if the input property set has data. This type of testing is demonstrated in Example 1 with the Siebel version 7.5.3 client.
In Siebel version 7.7 and above, with the change in the workflow testing architecture, you can view the hierarchal property sets and binary process properties in the Watch Window. Alternatively, write the data out to a file.
Use the Siebel component event tracing and argument tracing to see the inputs and outputs of standard EAI business services. See Siebel Component Event Logging.
Explicitly invoke the "EAI XML Write to File" business service to save a property set to an XML file. This business service allows you to write out property set whether it is a raw XML, a Siebel Message or an XML Hierarchy. You can then verify that the inputs and outputs property sets are valid and not empty. If necessary, you can also verify the output XML structure matches what the next business service or workflow process expects.
There are three different methods for the "EAI XML Write to File" business service. Pick the method most appropriate to your property set structure. For example, use the method "WriteEAIMsg" if you are writing out a property set that represents a Siebel integration object. If you are writing out an XML Hierarchy, use "WriteXMLHier.". Finally, you can always write out any property set (arbitrary, Siebel Message or XML Hierarchy) with "WritePropSet", although it is recommended you use one of the more strongly typed methods if your property set conforms to one of the Siebel object definitions.
Use the "EAI XML Read from File" business service to load saved and known XML files for controlled testing. The XML files can come from tests done in step 4 above.
The "EAI XML Read from File" business service has three methods like the "EAI XML Write to File" business service. Use the method that best matches your input XML Document. If you are not sure if your input XML Document is a Siebel integration object or XML Hierarchy, you could use the "ReadPropSet" method and your property set would be imported.
Use the "EAI File Transport" business service, method "Receive" to simulate receiving an XML document in its original encoding format. You can do more controlled testing and isolate the problem from a specific EAI Transport (i.e. HTTP, IBM MQ Series, BizTalk etc). For details, see Example 1, and Figure 6 and Figure 7.
Use an external XML viewer and editor to verify the XML is valid and check the encoding. You may also need to open the file with a hex editor capable of showing the binary format to check the encoding of documents provide to Siebel and generated by Siebel.
For example, you can open any XML file in a browser, such as Internet Explorer. If you get an error opening the XML file, you know it is not valid and the error needs to be addressed.
Example 1: Where To Check for Common Mistakes
This example shows where the most common errors are made when doing XML conversion from an XML document to a raw XML property set. This example uses the workflow process shown in Figures 1A and 1B. The workflow process reads in an XML document with EAI File Transport, and then uses the XML Converter to converts the XML document into a raw XML property set to be stored in the "SiebelMessage" process property.
Figure 1A: Sample Workflow Process Design, Process Properties, and Input Document
Figure 1B: Details of the Steps
Figure 2: Viewing Property Sets (empty and populated)
The numbers in the blue boxes in Figure 1B indicate where errors typically happen:
The input data does not exist or is empty.
When reading in data from the file, make sure that file exists, and that the Siebel client you are using can access the file. In this example, a dedicated client is used. So the file to be loaded is located on the d:\temp directory of the testing machine. If this test were done on thin client connected to an object manager, then the file contact_incoming1.xml should exist on the Siebel server's d:\temp directory.
Another common problem is that the file is actually empty. When running the workflow process in the simulator, check that the XML Binary process property contains data.
When using a transport business service (such as File Transport in this example), do not specify the CharSetConversion to keep the original encoding of your document and to prevent data corruption (See Character Set Conversion.)
The output process property is not defined or is defined with the wrong data type.
Starting in Siebel version 7.5, if you are reading documents that are not encoded as UTF-16, then use the Binary data type for the process property where the XML document will be read into. In Example 1, the original encoding is UTF-8 so a Binary process property is used. For more information, see Document 476916.1.
Using the wrong XML converter
In this example, the XML Converter is being used even though the XML document appears to be a Siebel Message. In order to use the EAI XML Converter, the SRF would need to contain the integration object definition for the SiebelTSContact because the EAI XML Converter requires metadata to do the conversion.Using the wrong converter method
Make sure the method name you select makes sense for the direction of the conversion. In this example, since the conversion is from a document to a property set, the "XML to Property Set" method is used.
Passing the wrong or empty process property
Make sure you pass the correct process property as the input argument to the next step. If you do not pass the correct process property or the process property you are passing is empty, you may get this error:
empty input message, expecting an XML document in <Value> of input arguments (SBL-UNU-00246)
.Specifying a process property with the wrong data type
In this example, the method specified will create an output property set. So for the output argument, you need to make sure you at least specify a process property of data type Hierarchy. The actual name of the property name usually does not matter unless you are planning to pass this process property to a child or parent workflow process, or to a business service. If you do not specify a valid process property for the output, you will see this error: "Argument %1 in step %2 is not correctly initialized or does not return valid data.(SBL-BPR-00107)."
Specifying the wrong output argument name
When you use the XML Converter or XML Hierarchy Converter in a workflow process step, you may not get any pre-defined output argument names in the output argument pick list. The reason is because the output argument name will vary depending on your input data. (The only time the output argument name is known for sure is the case of a Siebel Message property set because the Child Type will always be "SiebelMessage.") When specifying a property set as an output argument, the name of the output argument must match the Type of the child property set. In this example, the child property set is named "ListOfSiebelTSContact" and that is the name specified in the output argument.
In this case, if the wrong invalid output argument name was specified, the hierarchal process property "SiebelMessage" would be empty and contain only its own name in the Type field. See Figure 2 for examples of empty and populated property sets.
If you are not sure what is the Child Type for your inbound XML document, then import the XML document into the Business Service Simulator with the EAI XML Read from File business service and the method ReadPropSet. Using the Business Service Simulator, you can see the XML document's property set structure without having to know the exact name of the Child Type. See Figure 3.
For details on how to use the Business Service Simulator, refer to Siebel Bookshelf version 8.x > Integration Platform Technologies: Siebel Enterprise Application Integration > Business Services > Testing Your Business Service in the Simulator.
Figure 3: Importing an XML Document as a Property Set in the Business Service Simulator
Automatic DMP File Creation
If the Siebel XML parsers are not able to convert an XML document into a Siebel property set, a DMP file is automatically created. Typically, the reason is because the incoming XML document is not well-formed or Siebel application was not able to read the file. The file will be created in the directory where the Siebel application process was running or in the log directory if one is specified (i.e. such as with the SIEBEL_LOG_DIR environment variable on the client).
In the Siebel application log files, you may see these types of messages indicating a dump file was created:
XMLConversion XMLCnvDumpFile 3 - XML conversion error, creating a dump file containing source XML document...
d:\sea630\siebsrvr\log\XMLparse_error_745.dmp:XML parser error"
DumpFile DumpFileOpen 3 - d:\cme63\siebsrvr\log\XMLparse_error_118.dmp:XML parser error
The name of the file may or may not appear in the log file. The file name would have the format of: "XMLparse_error_<number>.dmp" and would contain the XML document that could not be parsed.
If you are able to find the DMP file, then you should try to open the file in a XML editor. If necessary, you can rename the DMP extension to XML. If you are not able to open the XML file in an XML editor, then the problem is the XML document is invalid.
Typical errors include:
There is a special character in the XML file such as "<", ">" or "&" that needed to be escaped. For more information about special characters in XML, refer to XML Reference: Siebel eBusiness Application Integration Volume V > Overview > Special Characters in XML Documents > Special (Escape) Characters.
The XML document contains mismatched or incomplete tags.
The encoding of the XML document did not match the encoding specified in the XML prologue.
Siebel Component Event Logging
You can also enable XML conversion logging by setting the component event for "XML Conversion" to level 4 or 5. The XML Conversion logging will show you how the Siebel application converts an XML document to a property set and vice versa. This logging can be done enabled on the Siebel server and on the Siebel client. For steps on how to perform client logging, refer Document 475587.1.
NOTE: In Siebel version 7.7 and above, since the workflow process simulator is launched from the Siebel Tools client, you must enable logging before starting the Siebel Tools client.
The steps on how to enable component event logging in the GUI vary slightly by product version (see Table 1). When you enable the component event logging, make sure you select the appropriate server component or components involved in the process. For example, if you are testing with the workflow process simulator in Siebel version 7.5.3, and you are connected to CallCenter client (i.e., http://webserver/callcenter_enu), then you would enable the component events for the CallCenter object manager, i.e. "SCCObjmgr_enu". If you are testing receiving XML data in the MQSeries Server Receiver, then you would enable logging on the MQSeriesSrvRcvr component.
For all the Siebel versions 6.x and higher, you can also use the same srvrmgr command to turn on the component event logging. The syntax is:
change evtloglvl <component aliase>=<level> for comp <component alias name>
For example:
change evtloglvl xmlconversion=4 for comp sccobjmgr_enu
If the error is fatal, an error message may still be displayed, even if you do not have specific component events enabled. However, it is often helpful to enable specific components events to collect information before and after the invocation of the XML converter business service (see Table 2). If you are converting data from a property set into an XML document, or receiving property set data from another workflow process step or business service, the additional logging is especially helpful to confirm input is being passed to the XML Converter.
Table 1: Enabling Siebel Component Event Logging
Siebel Version | Steps |
---|---|
V6 |
|
V7.0.x, 7.5.x |
|
V7.7 and above |
|
Table 2: Other Useful Component Events for EAI Tracing
Event Alias | Level | Description |
---|---|---|
ObjMgrBusServiceLog | 4 | Captures Business Service-related events such as when business services are created, deleted, and the methods invoked. Some sample lines are:
|
EAITransport | 4 | Captures EAI Transport related events: including direction (send/receive) and result. For HTTP transport, shows headers and responses. For File Transport, shows the full filename. For MQSeries and MSMQ Transports, shows MQ properties, including message and correlation IDs. |
EAITransportPerf | 5 | Captures EAI Transport performance events, such as amount of time to create connections, receive data etc. Times show as milliseconds. |
EAI Integration Object Validation | 4 | Captures Integration Object instantiation and validation events: including setting integration object field values from property with parsed integration message. |
EAISiebAdpt | 4 | Captures EAI Siebel Adapter related events, including integration component and integration component fields accessed, and the values for the fields; business components and business component fields accessed and the values for the fields. For example:
|
Workflow Engine Invoked (EngInv) | 4 | Captures when the workflow process engine is invoked. You can see the inputs that the workflow process started with:
|
Workflow Process Execution (PrcExec) | 4 | Captures workflow process related events, and shows process properties values. You can see the values for the process properties.
|
Workflow Step Execution (StpExec) | 4 | Captures the process step events including business services invoked and inputs and outputs of the business services, conditions evaluated, and outcome of the step:
|
XMLConversion | 4 | Captures the conversion of XML documents to property sets steps and vice versa, and shows encoding used in the document. For example: |
EAI XSLT Service | 5 | Captures XML transformation events of 'EAI XSLT Service' business service, if it is used to transform XML messages with XSLT templates |
The information in this table applies only to Siebel version 7.x and above. There was limited logging and event capturing in Siebel version 6.
Siebel Argument Tracing
You can also export input and output arguments in XML format to a file for many standard Siebel EAI business services. These XML files represent the input and output arguments of the business services. Internally, in Siebel, the input arguments and output arguments to all Siebel business services are stored as property sets. Figure 4 shows how the input and output process properties are stored as input and output property sets in Siebel. On the top half, the workflow process properties are show at the end of each step. At the lower half, the inputs and outputs of the business services are shown.
The workflow process in Figure 4 receives data from another business service, and the XML data is in the Value field of the input property set. A typical use of this type of workflow process would be as the dispatch workflow process for the EAI Data Transport Handling Subsystem for the EAI Object manager (HTTP Inbound) or the MQSeries Receiver.
For this workflow, there are at least 4 workflow process properties defined: S1 (of type binary), S2 (of type binary), Sebmsg1 (of type hierarchy) and Sebmsg2 (of type hierarchy). As Sebmsg1 and Sebmsg2 are hierarchal type process properties, they are child process properties of the root workflow process property set (shown in gray at the top).
The S1 process property has a default string set to "" and when the workflow process is started, S1 is initialized with the value in the Value field of the input property set. In Step 2, the EAI XML Converter is used to convert the XML document into a property set, which represents an integration object instance. In step 3, the EAI Siebel Adapter uses the integration object instance to update or insert the record in Siebel, and sets another process property of type Hierarchy as the output step 3. Finally, in step 4, the hierarchal process property is converted back into an XML document, which is temporarily stored in the Value field of the output property set, and it is mapped to "S2" process property.
Enabling Argument tracing facilitates the debugging of problems when using the box for EAI Siebel Adapter, EAI Dispatcher and the Web Services Dispatchers (in Siebel 7.5 and above). It will allow you to confirm the arguments are populated, and also confirm the values being passed from one business service to another business service.
In the workflow process shown in Figure 4, by enabling the argument tracing for the EAI Siebel Adapter and EAI Dispatch Service, you would be able to see the inputs into Step 2, and also the inputs and outputs of Step 3. If you had any XML converter errors in step 2 or step 4, you can analyze dmp files generated to help you further isolate the problem.
Figure 4: How Workflow Process Properties and Business Service Inputs and Outputs are Stored and Passed
Tables 3 & 4: Process Properties and Input and Output Arguments for the Workflow Process in Figure 4
Process Properties
Name | Data Type | Default String | Comments |
---|---|---|---|
S1 | Binary | <Value> | This is the input Text |
S2 | Binary | If this workflow is used for the inbound HTTP transport, S2 would be renamed as "<Value>" | |
Sebmsg1 | Hierarchy | Input Siebel Message for the EAI Siebel Adapter (integration object instance) | |
Sebmsg2 | Hierarchy | Output Siebel Message for the EAI Siebel Adapter (integration object instance) |
Input and Output Arguments
Step 2: EAI XML Converter | Input Argument | Type | Property Name |
---|---|---|---|
XMLDocToIntObjHier | <Value> | Process Property | S1 |
Property Name | Type | Output Argument | |
Sebmsg1 | Output Argument | SiebelMessage | |
Step 3: EAI Siebel Adapter | Input Argument | Type | Property Name |
Query | SiebelMessage | Process Property | Sebmsg1 |
Property Name | Type | Output Argument | |
Sebmsg2 | Output Argument | SiebelMessage | |
Step 4: EAI XML Converter | Input Argument | Type | Property Name |
IntObjHierToXMLDoc | SiebelMessage | Process Property | Sebmsg2 |
Property Name | Type | Output Argument | |
S2 | Output Argument | <Value> |
The same steps in the workflow process can also be done with the business service script shown in Figure 5. The script is intended for use in Siebel versions 7.5 and above, and shows how the entire property set ("Inputs") is passed instead of the text string. In Siebel versions 6.x and 7.0.x, it was possible to use the GetValue API call to get the just the text string in the Value field. However, in Siebel versions 7.5 and above, GetValue will error out "PropertySet Value is marked as binary data, starting with..." if the data is binary.
Figure 5: Business Service Script Equivalence of Workflow Process Shown in Figure 4
function Service_PreInvokeMethod (MethodName, Inputs, Outputs)
{
if(MethodName == "Receive")
{
var xmlSrv = TheApplication().GetService("EAI XML Converter");
var adptSrv = TheApplication().GetService("EAI Siebel Adapter");
var Sebmsg1 = TheApplication().NewPropertySet();
var Sebmsg2 = TheApplication().NewPropertySet();
// Step 2: Convert the XML document in <Value> in the Inputs property set into an integration object instance
xmlSrv.InvokeMethod("XMLDocToIntObjHier", Inputs, Sebmsg1);
// Step 3: Use the integration object instance to update the database
adptSrv.InvokeMethod("Upsert", Sebmsg1, Sebmsg2);
// Step 4: Convert the integration object instance into XML and set as part
of the outputs
xmlSrv.InvokeMethod("IntObjHierToXMLDoc", Sebmsg2, Outputs);
Sebmsg2= null;
Sebmsg1= null;
xmlSrv = null;
adptSrv = null;
return (CancelOperation);
}
return (ContinueOperation);
}
Steps To Enable Output Arguments Tracing
Set server parameter EnableServiceArgTracing to True.
If you are running in Siebel Dedicated Web Client, add the following to your .cfg file:
[EAISubsys]
EnableServiceArgTracing = TRUEIf you are running the Siebel zero foot print web client, modify the object manager's parameter "EnableServiceArgTracing" = true.
Set the appropriate component event level on your server component through the server manager on the server or SIEBEL_LOG_EVENTS in Siebel Dedicated Web Client. It is just an environment variable. If you set event to:
3, then input arguments will be written out to a file when an error happens
4, then input and output arguments will be written to a fileFor the sample workflow process shown in Figure 4, if this workflow process was the dispatch workflow process for the EAIObjMgr, you would run these commands in Srvrmgr to get the parameters dumped out:
change param EnableServiceArgTracing=true for comp EAIObjmgr_enu"
change evtloglvl EAISiebAdpt=4, EAISiebAdptSvcArgtrc=4, EAIDispatchSvcArgTrc=4 for comp EAIObjmgr_enuThe output filenames will take this form:
service name_input or output_args_taskID.dmp
For example:- EAIDispatchService_input_args_270613751.dmp
- EAISiebelAdapter_input_args_21579.dmp
- EAISiebelAdapter_output_args_21579.dmp
- EAIDispatchService_input_args_270613751.dmp
Understanding the Context of the Error
You will often see a series of error messages in a log file, and an XML converter error may be included in the errors. In order to determine the root cause of the failure, you may need to go through the error stack. An XML converter error is often a symptom of a problem, rather than the problem itself. So when analyzing the log files, find the first error message and consider where in the process the error messages occurred. Example 2 shows a several logs from a Siebel version 7.7.1 server and the various types of errors that created the log files..
Example 2: Reading through the Error Stack
In this example, the out of the box, SiebelUpsertDispatch named subsystem was used for testing. For more information about the standard HTTP named subsystems, refer to Siebel Bookshelf version 8.0 > Transports and Interfaces: Siebel Enterprise Application Integration > EAI HTTP Transport > EAI HTTP Transport Named Subsystems. All the log files have been simplified for demonstration purposes: the timestamp and sublevel columns are not displayed, and some of the ObjMgrBusServiceLog events have been eliminated. The actual event names may be different between Siebel versions.
The key parameters for the SiebelUpsertDispatch named subsystems are defined as:
Parameter | Value | Description |
---|---|---|
Converter Service | EAI XML Converter | Business Service used to serialize/unserialize hierarchical data to raw buffer and vice versa. |
Service to Execute | EAI Siebel Adapter | Name of service to dispatch received message to |
Service Method To Execute | Upsert | Name of method for dispatch service to call |
Character Set Conversion for Text Data | None | Character Set conversion from external system |
Scenario 1
This HTTP request was submitted:
http://webserver:port/eai_enu/start.swe?SWEExtSource= SiebelUpsert& SWEExtCmd =Execute& UserName =sadmin &Password =spwd&SWEExt Data=abc
On the browser page that was used to submit the request, a Page not found (http 500 internal server error)
was returned.
Here is a portion of the EAIObjMgr log file from a Siebel version 7.7 server:
Line# | Component Event | Subevent | Lvl | Text |
---|---|---|---|---|
1 | ObjMgrBusServiceLog | Create | 4 | Business Service 'EAI Transport Dispatch Service' was created at aa67148 |
2 | ObjMgrBusServiceLog | InvokeMethod | 4 | Begin: Business Service 'EAI Transport Dispatch Service' invoke method: 'GenericDispatch' at aa67148 |
3 | ObjMgrBusServiceLog | Create | 4 | Business Service 'XML Converter' was created at c2e7310 |
4 | ObjMgrBusServiceLog | InvokeMethod | 4 | Begin: Business Service 'XML Converter' invoke method: 'PropSetToXML' at c2e7310 |
5 | XMLConversion | XMLCnvDetail | 4 | XML document will be generated with 'UTF-8' character encoding |
6 | ObjMgrBusServiceLog | InvokeMethod | 4 | Business Service 'XML Converter' invoke method 'PropSetToXML' Execute Time: 0.000 seconds. |
7 | ObjMgrBusServiceLog | InvokeMethod | 4 | End: Business Service 'XML Converter' invoke method: 'PropSetToXML' at c2e7310 |
8 | EAITransport | EAITransportGeneric | 3 | Dispatch Service: EAI Siebel Adapter, Dispatch Method: Upsert |
9 | ObjMgrBusServiceLog | Create | 4 | Business Service 'EAI Siebel Adapter' was created at 556c808 |
10 | ObjMgrBusServiceLog | Create | 4 | Business Service 'EAI XML Converter' was created at c2e8ab0 |
11 | EAITransport | EAITransportGeneric | 3 | EAI Transport Converter has been initialized to process data as Hierarchy using Converter Service 'EAI XML Converter' |
12 | ObjMgrBusServiceLog | InvokeMethod | 4 | Begin: Business Service 'EAI XML Converter' invoke method: 'DocToHier' at c2e8ab0 |
13 | ObjMgrBusServiceLog | Create | 4 | Business Service 'XML Hierarchy Converter' was created at c1dc130 |
14 | ObjMgrBusServiceLog | InvokeMethod | 4 | Begin: Business Service 'XML Hierarchy Converter' invoke method: 'DocToHier' at c1dc130 |
15 | XMLConversion | XMLCnvDetail | 4 | XML character encoding 'UTF-8' detected |
16 | ObjMgrLog | Error | 1 | (xmlcnv.cpp (1684)) SBL-UNU-00247: Fatal Error in XML Parser at line 1, column 1: Invalid document structure |
17 | XMLConversion | XMLCnvDumpFile | 3 | XML conversion error, creating a dump file containing source XML document... |
18 | ObjMgrBusServiceLog | InvokeMethod | 4 | Business Service 'XML Hierarchy Converter' invoke method 'DocToHier' Execute Time: 0.006 seconds. |
19 | ObjMgrBusServiceLog | InvokeMethod | 4 | End: Business Service 'XML Hierarchy Converter' invoke method: 'DocToHier' at c1dc130 |
20 | ObjMgrBusServiceLog | Error | 1 | (eaixmlcnvsv.cpp (320)) SBL-EAI-04110: The XML Document cannot be converted to an XML Hierarchy. |
21 | ObjMgrBusServiceLog | InvokeMethod | 4 | Business Service 'EAI XML Converter' invoke method 'DocToHier' Execute Time: 0.006 seconds. |
22 | ObjMgrBusServiceLog | InvokeMethod | 4 | End: Business Service 'EAI XML Converter' invoke method: 'DocToHier' at c2e8ab0 |
23 | ObjMgrBusServiceLog | InvokeMethod | 4 | Business Service 'EAI Transport Dispatch Service' invoke method 'GenericDispatch' Execute Time: 0.021 seconds. |
24 | ObjMgrBusServiceLog | InvokeMethod | 4 | End: Business Service 'EAI Transport Dispatch Service' invoke method: 'GenericDispatch' at aa67148 |
First of all, the presence of the EAIObjmgr log with the timestamp the matched when the HTTP request was submitted confirms that the EAIObjmgr component is running. If you do not see any EAIObjmgr logs, then there could be a possibility that no component event logging was enabled or the component was not online. (Refer to Table 1 and Table 2 on how to enable component events).
In the log above, you would read the log backwards, starting from line 24. The first error message is identified by the Siebel Error Message header ("SBL") at line 20. This error means there was a problem with the input to the EAI XML Converter business service (shown in line 21). Continue scanning up and there is a message that a dump file is created (line 17). You can look for an XMLParse_error*dmp file on the Siebel server, and you can see the input that failed to be converted. If you continue scanning up to line 16, you will find XML parser error, indicating that the document was invalid. This means data was passed in but it was not an XML document or one that the EAI XML Converter could parse.
Scenario 2
You submit the same HTTP request as Scenario 1 and change the SWEExtData. This is the text for the new SWEExtData:
"<?xml version="1.0" encoding="utf-8"?><SiebelMessage MessageId="" MessageType="Integration Object" IntObjectName="Sample Account"><ListofSampleAccount><Account><Name>ABC</ Name><Location>HQ</ Location>< Organization> Default Organization</Organization> </Account></ ListofSample Account></ SiebelMessage>"
Line# | Component Event | Subevent | Lvl | Text |
---|---|---|---|---|
1 | EAITransport | EAITransportGeneric | 3 | EAI Transport Converter has been initialized to process data as Hierarchy using Converter Service 'EAI XML Converter' |
2 | ObjMgrBusServiceLog | InvokeMethod | 4 | Begin: Business Service 'EAI XML Converter' invoke method: 'DocToHier' at c2f3ae8 |
3 | ObjMgrBusServiceLog | Create | 4 | Business Service 'XML Hierarchy Converter' was created at c1dc130 |
4 | ObjMgrBusServiceLog | InvokeMethod | 4 | Begin: Business Service 'XML Hierarchy Converter' invoke method: 'DocToHier' at c1dc130 |
5 | XMLConversion | XMLCnvDetail | 4 | XML character encoding 'utf-8' was found in the XML Declaration |
6 | XMLConversion | XMLCnvDetail | 4 | XML character encoding 'utf-8' detected |
7 | XMLConversion | XMLCnvParserDebug | 4 | startEvent (SiebelMessage) state=EAIXMLPRS_STATE_INITIAL stack=0 |
8 | ----------------------------- | XMLConversion events not shown | ||
9 | ObjMgrBusServiceLog | InvokeMethod | 4 | Business Service 'XML Hierarchy Converter' invoke method 'DocToHier' Execute Time: 0.003 seconds. |
10 | ObjMgrBusServiceLog | InvokeMethod | 4 | End: Business Service 'XML Hierarchy Converter' invoke method: 'DocToHier' at c1dc130 |
11 | ObjMgrBusServiceLog | Create | 4 | Business Service 'EAI Integration Object to XML Hierarchy Converter' was created at c2c39f0 |
12 | ObjMgrBusServiceLog | InvokeMethod | 4 | Begin: Business Service 'EAI Integration Object to XML Hierarchy Converter' invoke method: 'XMLHierToIntObjHier' at c2c39f0 |
13 | XMLConversion | EAIXMLCnvDetail | 4 | Converting element 'SiebelMessage' XML hierarchy to integration object '' hierarchy |
14 | EAIInfra | EAIInfraOutputMsg | 3 | Output Message: IntObjType=Sample Account Format=Siebel Hierarchical |
15 | ObjMgrBusServiceLog | Error | 1 | (intobjhiercnv.cpp (501)) SBL-EAI-04132: XML tag 'ListofSampleAccount' is invalid. Expected xml tag 'ListOfSampleAccount' for integration object 'Sample Account' |
16 | ObjMgrBusServiceLog | InvokeMethod | 4 | Business Service 'EAI Integration Object to XML Hierarchy Converter' invoke method 'XMLHierToIntObjHier' Execute Time: 0.020 seconds. |
17 | ObjMgrBusServiceLog | InvokeMethod | 4 | End: Business Service 'EAI Integration Object to XML Hierarchy Converter' invoke method: 'XMLHierToIntObjHier' at c2c39f0 |
18 | ObjMgrBusServiceLog | Error | 1 | (eaixmlcnvsv.cpp (320)) SBL-EAI-04111: Cannot convert XML Hierarchy to Integration Object Hierarchy. |
19 | ObjMgrBusServiceLog | InvokeMethod | 4 | Business Service 'EAI XML Converter' invoke method 'DocToHier' Execute Time: 0.034 seconds. |
20 | ObjMgrBusServiceLog | InvokeMethod | 4 | End: Business Service 'EAI XML Converter' invoke method: 'DocToHier' at c2f3ae8 |
21 | ObjMgrBusServiceLog | InvokeMethod | 4 | Business Service 'EAI Transport Dispatch Service' invoke method 'GenericDispatch' Execute Time: 0.061 seconds. |
22 | ObjMgrBusServiceLog | InvokeMethod | 4 | End: Business Service 'EAI Transport Dispatch Service' invoke method: 'GenericDispatch' at aa67148 |
In the log above, the first error message is identified by the Siebel Error Message header ("SBL") at line 18. The error message shows that Siebel could not convert an XMLHierarchy into an Integration Object Hierarchy. Again, you need to look at the input to the XML Hierarchy Converter to determine why the conversion failed. So continue reading backwards in the log to see if the valid input was supplied. In line 14, you can see that the problem is that the XML supplied, while a valid XML document, has tags that do not match the metadata definition Siebel expected. In this case, the problem is because an integration object instance from Siebel version 6 was used.
An additional thing to note in the log, when you see "XMLConversion" events, you know that the XML document was accepted by Siebel's XML parser. So in this case, you would not get any XML dump files.
Scenario 3
In this scenario, you do not pass any data into the SWEEXTData portion of the HTTP Request.
Line# | Component Event | Subevent | Lvl | Text |
---|---|---|---|---|
1 | ObjMgrBusServiceLog | Create | 4 | Business Service 'EAI XML Converter' was created at c18a678 |
2 | EAITransport | EAITransportGeneric | 3 | EAI Transport Converter has been initialized to process data as Hierarchy using Converter Service 'EAI XML Converter' |
3 | ObjMgrBusServiceLog | InvokeMethod | 4 | Begin: Business Service 'EAI XML Converter' invoke method: 'DocToHier' at c18a678 |
4 | ObjMgrBusServiceLog | Create | 4 | Business Service 'XML Hierarchy Converter' was created at c1dc130 |
5 | ObjMgrBusServiceLog | InvokeMethod | 4 | Begin: Business Service 'XML Hierarchy Converter' invoke method: 'DocToHier' at c1dc130 |
6 | ObjMgrBusServiceLog | Error | 1 | (xmlcnvsv.cpp (481)) SBL-UNU-00246: XML Hierarchy Converter error - empty input message, expecting an XML document in of input arguments |
7 | ObjMgrBusServiceLog | InvokeMethod | 4 | Business Service 'XML Hierarchy Converter' invoke method 'DocToHier' Execute Time: 0.001 seconds. |
8 | ObjMgrBusServiceLog | InvokeMethod | 4 | End: Business Service 'XML Hierarchy Converter' invoke method: 'DocToHier' at c1dc130 |
9 | ObjMgrBusServiceLog | Error | 1 | (eaixmlcnvsv.cpp (320)) SBL-EAI-04110: The XML Document cannot be converted to an XML Hierarchy. |
10 | ObjMgrBusServiceLog | InvokeMethod | 4 | Business Service 'EAI XML Converter' invoke method 'DocToHier' Execute Time: 0.001 seconds. |
11 | ObjMgrBusServiceLog | InvokeMethod | 4 | End: Business Service 'EAI XML Converter' invoke method: 'DocToHier' at c18a678 |
12 | ObjMgrBusServiceLog | InvokeMethod | 4 | Business Service 'EAI Transport Dispatch Service' invoke method 'GenericDispatch' Execute Time: 0.022 seconds. |
13 | ObjMgrBusServiceLog | InvokeMethod | 4 | End: Business Service 'EAI Transport Dispatch Service' invoke method: 'GenericDispatch' at aa67148 |
Here the error message in line 10 is the same as the error message you see in scenario 1, "The XML Document cannot be converted to an XML Hierarchy." If you continue reading backwards in the log file, you find the first error in line 5. Here the error message indicates that data was expected in the Value area of property set but none was received. (Refer to Figure 4 for an explanation of <Value>). Since this scenario is expecting input from an HTTP inbound request, you would need to go to the issuer of the request to find out if any data was sent in.
Character Set Conversion
As noted previously, another common problem with the XML Converter business services deals with character set conversion. With the addition of Unicode support in Siebel version 7.5, and new binary data types, developers using workflow processes need to understand when to use a Binary or String data type. It is also important to understand how to properly use the Transcode Service business service.
To avoid character set encoding problems, follow these best practices:
For Siebel versions 7.5 and above, treat all self-describing documents, such as XML, MIME as Binary data. In other words, unless the XML document is encoded as UTF-16, use a process property with data type Binary to store the XML document. The binary property type retains the original encoding of the XML document. Use String process properties only for UTF-16 encoded text.
Avoid character set conversions at the transport level for self-describing documents. In Siebel versions 7.5 and above, all transports will treat data as Binary data unless otherwise a CharSetConversion value is set (see Figure 6). For the transport business service, once you specify a value for CharSetConversion, the output data will be in UTF-16 and a String.
Use the EAI XML Converter or XML Hierarchy Converter to perform any explicit conversions of XML documents.
For more information about the best practices, refer to Siebel Bookshelf version 8.x > Transports and Interfaces: Siebel Enterprise Application Integration > EAI Transports and Interfaces Overview > About EAI Transports.
In Figure 6, we show the reason for the best practice recommendation regarding self-describing documents. There are 5 scenarios show (A through E) demonstrated with the EAI File Transport. The same principles demonstrated apply to the other Transport business services, such as MQSeries Server Transport or HTTP Transport. In scenarios A and B, documents encoded as UTF-8 and ISO-8859-1 respectively are loaded into Siebel. Since no character set conversion is specified, the XML data is stored in a Binary process property, and the encoding of the documents matches the XML declaration. In scenarios C and D, the correct character set conversions for the inbound XML documents is selected. However, because character set conversion will force the transport to encode the data as UTF-16, the data in <Value> will be corrupted. The character set conversion in the EAI Transports will change the encoding but not the contents. So the recommended way to change the XML declaration is through the EAI XML Converter or XML Hierarchy Converter (See Figure 6). Finally in scenario E, because the document starts as UTF-16, when it is converted to String, the UTF-16 encoding is still correct for the XML document.
Figure 6: Character Set Conversion for XML and other Self-Describing Documents
In Figure 7, we show four workflows processes demonstrating integration processing with XML documents using the EAI XML Converter. These workflow processes contain the minimal steps needed to do XML processing. It is very likely your production workflows will contain additional steps to do error handling, data validation and invocation of other business services. Workflow Processes A, B and C would be typical workflow process you would use to do testing of XML documents in the simulator. You could also run A, B and C as individual server tasks or jobs in the Workflow Process Manager component or Business Integration Manager Component. Workflow Process D is an example of a workflow process that you would specify as the Dispatch workflow process in the EAITransportDataHandling Named Subsystem. You could have the MQSeries Server Receiver, the JMS Receiver or the EAI Object Manager dispatch to Workflow Process D.
The important point to note in the Figure 7 is that the character set conversion occurs only in the EAI XML Converter business service. This ensures that the XML header and the process property encoding remain consistent. It is also the most efficient method of processing XML documents.
In Figure 7, the general logic of all the workflow processes is abstracted at the top in yellow. The abstracted workflow should also show how debugging for production workflow processes can be performed by substituting transport business service step and running the workflow process on a local client. You can substitute out the EAI 7File Transport in Workflow Process B with the transport of your choice, or just obtain the data directly from Siebel as in Workflow Process C. To give another example, you could have a problem with the MQSeries Server Receiver using Workflow Process D. If you see the problem is in the Upsert step, you could take the Workflow Process D, and run it on a local client, adding a step to explicitly load the XML document. After making that change, you would be simulating the EAITransportDataHandling Subsystem that would normally pass the data to the workflow process. So after the addition of the step to Workflow Process D, you would have Workflow Process B, and you could then test the logic of the XML conversion and integration object processing independent of the MQSeries software.
Figure 7: Character Set Conversion with the EAI XML Converter
There may be times when you do find it necessary to use perform Character Set conversion in a Transport or using the Transcode Service. If you need to send data to an external system, and the data is not going to be encoded as UTF-8 or UTF-16, you may want to use the Transcode Service to convert your data to a format that the external system can handle.
When using the Transcode Service, you need to be aware that the Transcode Service will change the encoding of the process properties' contents, but not the XML declaration. It often more appropriate to use the Transcode Service when you are dealing with raw XML property sets or non-XML data. Figure 7 shows two potential scenarios (A and B) when you may want to use the Transcode Service. It also shows a scenario when you should NOT use the Transcode Service (Scenario C). For more information about the Transcode service, refer to Siebel Bookshelf version 8.0 > Siebel Global Deployment Guide > Configuring Global Deployments > About Integration Considerations > About the Transcode Service Business Service.
When you are using the Transcode service, you may also see conversion errors, such as:
TranscodeFailure (Encoding=%1, NumSubstitutions=%2, InputSubstPosition=%3, OutputSubstPosition=%4): %5 (SBL-EAI-04419): Transcode Conversion Failure
If you encounter those errors, you should write out the source data you are attempting to convert using EAI File Transport (do not specify a CharSetConversion value - you are trying to get the binary representation of the data). Then examine the file with a hex editor so you can see how the data is encoded. Check to see if there are hidden characters at the positions mentioned in the error message. If there are no hidden characters, you could also have a problem where the character that you want to convert does not exist in the source or target character set. In both cases, you need to examine how your source data is generated to check for corruption of the binary data.
Figure 8: Character Set Conversion with the Transcode Service
Common Error Messages and Diagnostic Steps
Below is a list of common errors that you may see when you are using the XML Converters. The numbers after the percent sign (i.e. "%1", "%2") indicate place holders for text. A corrective action rather than a solution is supplied because the cause of the problem will vary depending on the context of the error.
%1 error - empty input message, expecting an XML document in of input arguments (SBL-UNU-00246). (IDS_
Symptom or Error Message
%1 error - empty input message, expecting an XML document in of input arguments (SBL-UNU-00246). (IDS_XMLCNV_ERR_EMPTYMSG)
Cause
There was no XML document in the Value field of the input property set, or the text in the Value field was not the correct value.
Diagnostic Steps
Determine if input data was supplied to the XML converter business service. If the data should have been passed to the XML business service from a previous business service, determine if the previous business service completed successful.
You can also use the argument tracing to help you determine if the data was supplied and what type of data.
Enable Siebel component event or client logging so you can follow the logic a Workflow Process or business service. You may need to go back several business services to find the root cause of the failure.
Verify that you passed the correct property set or process property to the XML Converter business service. Verify the spelling of property names.
Fatal Error in XML Parser at line %1, column %2: %3 (SBL-UNU-00247) (IDS_XMLCNV_ERR_FTLPARSE)
Symptom or Error Message
Fatal Error in XML Parser at line %1, column %2: %3 (SBL-UNU-00247) (IDS_XMLCNV_ERR_FTLPARSE)
Cause
The XML parser was unable to parse the XML document. The text in "%3" will be the cause of the XML parser failure.
Diagnostic Steps
An XML parser failure will usually result in a dmp file. Look for the dmp file on the system and try to open it in and the Internet Explorer Browser to confirm the document is a valid XML document. Common causes of the error (the text in the %3 section) include:
"Invalid document structure" if you not passing XML text into the XML Parser
"Fatal Error in XML Parser at line 1, column 198: The input ended before all started tags were ended. Last tag started was '%1'" if you send in an XML document via the Siebel HTTP Transport in the URL that contains the "&" character or any other special character that needs to be encoded.
"Fatal Error in XML Parser at line 1, column 40:" if the XML prologue and the encoding do not match. This may happen if you put UTF-8 encoded XML documents in a process property that is of type String (which is only for UTF-16 encoded documents)
"Fatal Error in XML Parser at line 4, column 7: The XML or Text declaration must start at line/column 1/1". This may happen if the XML document being parsed has spaces or line breaks preceding the XML processing instruction header ("<?xml...").
Input Property Set should have a child of type '%1' (SBL-UNU-00250) (IDS_XMLCNV_ERR_NOXMLPS)
Symptom or Error Message
Input Property Set should have a child of type '%1' (SBL-UNU-00250) (IDS_XMLCNV_ERR_NOXMLPS)
Cause
The business service expected an input property set of type %1, such as XMLHierarchy. Your input property set did not have the correct Type field. An XMLHierarchy property set is often used to exchange data between business services. An XMLHierarchy property set has one child off of the root with a Type value of "_XMLHierarchy".
Diagnostic Steps
Determine if correct input data was supplied to the business service. If the data should have been passed to the XML business service from a previous business service, determine if the previous business service was successful
Use component event logging and argument tracing to help you determine what data was supplied. If necessary, explicitly write out the Input property set using EAI XML Write to File and the appropriate method.
If you are manually constructing a property set, make sure the property set structure is an XMLHierarchy. Refer XML Reference: Siebel eBusiness Application Integration Volume V > Siebel XML Converters > XML Hierarchy Converter.
Service Method arguments property set has no children - expected a child of type 'SiebelMessage' (SBL-EAI-04012) (IDS_EAI_ERR_COMMON_EXPECTING_SBLMSG
Symptom or Error Message
Service Method arguments property set has no children - expected a child of type 'SiebelMessage' (SBL-EAI-04012) (IDS_EAI_ERR_COMMON_EXPECTING_SBLMSG)
Cause
The property set input to the business service is expected to have a child property set of type 'SiebelMessage'. For some reason, there were not child property sets in the input property set, or the input property set type was not 'SiebelMessage'. A 'SiebelMessage' property set is the same as an integration object instance.
Diagnostic Steps
Determine if correct input data was supplied to the business service. If the data should have been passed to the XML business service from a previous business service, determine if the previous business service was successful.
Use the argument tracing to help you determine what data was supplied. You may need to go back several business services to find the root cause of the failure.
If you are manually constructing a property set, make sure the property set structure meets those defined by the Siebel integration object meta definition.
Cannot convert XML Hierarchy to Integration Object Hierarchy. (SBL-EAI-04111) (IDS_EAI_ERR_EAIXMLCNV_XMLHIER_TO_INTOBJ)
Symptom or Error Message
Cannot convert XML Hierarchy to Integration Object Hierarchy. (SBL-EAI-04111) (IDS_EAI_ERR_EAIXMLCNV_XMLHIER_TO_INTOBJ)
Cause
There was a problem converting XML Hierarchy into Integration object instance. This is generic message that should be followed up by a more detailed cause.
Diagnostic Steps
Look for earlier error messages that may indicate a failure to generate an XML Hierarchy. Then look for why the XML Hierarchy could not be generated. Siebel internally converts property set formats from XML Hierarchy to Siebel Message.
Use component event logging and argument tracing to help you determine what data was supplied. The XMLConversion event may be helpful in determining if there is a problem with the XML.
Symptom or Error Message
The XML Document cannot be converted to an XML Hierarchy. (SBL-EAI-04110). (IDS_EAI_ERR_EAIXMLCNV_XML_TO_XMLHIER)
Cause
The EAI Integration Object to XML Hierarchy Converter business service was unable to convert the property set into an XML Hierarchy.
Diagnostic Steps
Look for earlier error messages that may indicate a failure to load the XML document.
Use component event logging and argument tracing to help you determine what data was supplied. The XMLConversion event may be helpful in determining if there is a problem with the XML.
Cannot convert process property %1 having base type 'Binary/Variant' to type 'String'. The process property currently holds data: : %2 (SBL-BPR-00247) (IDS_WF_ERR_PROPERTY_CONVERT_GET)
Symptom or Error Message
Cannot convert process property %1 having base type 'Binary/Variant' to type 'String'. The process property currently holds data: : %2 (SBL-BPR-00247) (IDS_WF_ERR_PROPERTY_CONVERT_GET)
Cannot assign to destination process property %1 having base type 'String' with data of type 'Varian/Binary'. The data being assigned: %2 (SBL-BPR-00248)
Cause
This warning message may be benign and can be ignored if your workflow process continues its execution. If your workflow process fails, you need to look at it to make sure you are using the correct data type (binary or string) to store your workflow process property.
Diagnostic Steps
If you are using a workflow process, check that the process property mentioned in the error message has a data type of 'Binary' type. In Siebel versions 7.5 and above, the data type Binary should be used to store all data not encoded as UTF-16. So for example, if your xml data is encoded as "UTF-8" and stored in a process property of type "String", the Siebel process will try to interpret the data as "UTF-16" and will error out.
Applies to:
Error Message Area:Application Integration Infrastructure, Enterprise Application Interfaces - EAIVersion:Siebel 8.1
תגובות
הוסף רשומת תגובה