Search This Blog

SBL-BPR-00107: Argument '%2' in step '%1' is not correctly initialized or does not return valid data.

Applies to:

Siebel System Software - Version: 7.8.2.4 [19224] and later   [Release: V7 and later ]
IBM AIX on POWER Systems (64-bit)
Product Release: V7 (Enterprise)
Version: 7.8.2.4 [19224]
Database: Oracle 10.2.0.2
Application Server OS: IBM AIX 5L 5.3
Database Server OS: IBM AIX 5L 5.3

This document was previously published as Siebel SR 38-3323226253.
***Checked for relevance on 23-NOV-2010***

Symptoms

The environment was upgraded from Siebel 7.5 to Siebel 7.8.

For a Workflow, an error was encountered at point of calling a custom Business Service which should return a SiebelMessage.  This problem only happened in the upgraded environment, but not at Siebel 7.5.

The specific error is:

Error Code - SBL-BPR-00107
Error Message - Argument 'SiebelMessage' in step 'Translate XML to Property Set' is not correctly initialized or does not return valid data (SBL-BPR-00107) (SBL-BPR-00151)


The 'Translate XML to Property Set' step invoked a custom business service (Common Utilities BS) to convert the input XML into a property set.  SiebelMessage is the output property name.

 

The problem also occurs in other Workflows which get output SiebelMessage in Hierarchy data type from custom Business Services scripts using :-


Outputs.AddChild(psOutputs);


Cause

From further investigation of customer’s configuration, the “Data Type” property of the "SiebelMessage" Output Argument for the business service was "Hierarchy" (as expected).  However the "Storage Type" property of this argument was "Property".

Due to the above setting, the type is mismatched in runtime and the following error was encountered when customer used Siebel 7.8

SBL-BPR-00107: Argument 'SiebelMessage' in step 'Translate XML to Property Set' is not correctly initialized or does not return valid data.

In Siebel 7.5, even though the “Storage Type” property of the Hierachy argument was set to "Property", the above error was not encountered.

Solution

Amend the "Storage Type" of the Business Service method argument to "Hierarchy" from "Property", recompile and re-test.



Applies to:

Siebel System Software - Version: 7.5.3.12 SIA [16272] and later   [Release: V7 and later ]
z*OBSOLETE: Microsoft Windows 2000
Microsoft Windows 2000
Product Release: V7 (Enterprise)
Version: 7.5.3.12 [16272] Fin Svcs
Database: IBM DB2 7.1 FixPack 5se
Database Server OS: IBM OS/390

This document was previously published as Siebel SR 38-3104992471.

Symptoms

For the benefit of other readers, the following error was being reported in a Workflow Process, after a call to a custom Business Service which was intended to return various values (e.g. LoginId) :-

Argument 'LoginId' in step 'EAI Acct Address_KC.PrepareWMInput_KC' is not correctly initialized or does not return valid data.(SBL-BPR-00107).

Cause

Although the Business Service was setting the values in the output property set, it could be seen from the detailed log that the values were not being returned to the Workflow. The reason for this was that in the Business Service, the following code was being run :-

psTemp1.AddChild(psInputXML);
psOutputs = psTemp1;
// DumpPropSet(psOutputs);

This is assigning the psOutputs object variable to a reference to object psTemp1 (so both psOutputs and psTemp1 now both point to the same object). As confirmed by the DumpPropSet function (see Technical Note 602) as this point psOutputs was populated as expected. However, psTemp1 is a local variable, and will be nulled when the function exits (as will psOutputs, because it references the same object).

Solution

the following code was used to successfully set psOutputs (which was subsequently being returned as the Outputs property set of the Business Service) :-

    psOutputs.AddChild(psInputXML);
 //   DumpPropSet(psOutputs);



Applies to:

Siebel System Software - Version: 7.7.2.6 [18372] and later   [Release: V7 and later ]
z*OBSOLETE: Microsoft Windows 2000
Product Release: V7 (Enterprise)
Version: 7.7.2.6 [18372]
Database: Oracle 10.1.0.2
Application Server OS: Microsoft Windows 2000 Advanced Server
Database Server OS: Microsoft Windows 2000 Advanced Server

This document was previously published as Siebel SR 38-3202605091.
""""Checked for relevance on 17-Nov-2010""""

Symptoms

Assume a workflow process with a sub-process step returning hierarchy process property.
The following error occurs when the sub-process finished (correctly).


SBL-BPR-00107: Argument '%2' in step '%1' is not correctly initialized or does not return valid data.

The argument referenced in the message is a process property of type Hierarchy or Integration Object.

Cause

The name of the process property has to match the type of the property set being passed up.
In this case, there was a mismatch.

This is explained in How Do You Pass or Receive a Property Set to or from a Custom Business Service? (Doc ID 476560.1)

Change request 12-1H8RRW9 has been created to have this clearly mentioned in the bookshelf and it has been documented in bookshelf 8.1 at

Siebel Business Process Framework: Workflow Guide > Environment for Developing a Workflow Process > About the Process Property >Manipulating a Process Property

Solution


In summary, if you have a hierarchy process property in the sub-process that stores the output of a call to "EAI Siebel Adapter" (for instance), the name of the process property should be SiebelMessage if you want to be able to pass this data back to the main process.

That's because EAI Siebel Adapter outputs a propertyset with type = SiebelMessage.
If your workflow process property is named differently, the type will be overwritten and become the process property name.

At the main workflow, you would be expecting an integration object though and integration objects always have their type = SiebelMessage. By not finding a propertyset with type=SiebelMessage the main workflow thinks that data was not passed up by the sub-process.

The easiest is to name the property SiebelMessage.

If you cant do that, make the main workflow receive a generic hierarchy and later on manipulate the propertyset Type as needed at the main workflow.

References

NOTE:476560.1 - How Do You Pass or Receive a Property Set to or from a Custom Business Service?

Applies to:

Product Release: V7 (Enterprise)
Version: 7.7.2 [18325]
Database: Oracle 9.2.0.4
Application Server OS: Microsoft Windows 2000 Advanced Server SP 4
Database Server OS: Microsoft Windows 2000 Server SP 4

This document was previously published as Siebel SR 38-2443229772.

Symptoms

SBL-ERM-01019, SBL-ERM-01031, SBL-DAT-00329, SBL-BPR-00107

Hi Support

We have an error message which we can reproduce using two different scenarios:

SCENARIO 1 - Course has already been declined by manager
==================================================
1 - A user registers for a Class, manager is notififed by email, must approve or decline.
2 - Gets declined by the manager.
3 - User tries to re-register for same class (reasonable and feasible situation)
4 - User gets error message: "The class has already been registered by the user.(SBL-ERM-01019)"
5 - User tries to register for a class on another day, but gets the error message: "Argument 'Search Spec' in step 'Enroll User' is not correctly initialized or does not return valid data.(SBL-BPR-00107)"

SCENARIO 2 - Course prerequisites have not been fulfilled
===============================================
1 - A user tries to register for a course which has another course as a prerequisite.
2 - Should be told that this course 'X' has prerequisite 'Y'. Instead. again the user gets the same error message: "Argument 'Search Spec' in step 'Enroll User' is not correctly initialized or does not return valid data.(SBL-BPR-00107)"

I tried to reproduce it on the Sample DB using SADMIN, however had an error when clicking on Training Administration which didn't allow me to access the view at all! I found similar posts on SupportWeb which might be relevant however was not able to find anything from ERM.

I will upload you log files to represent scenarios 1 and 2.

Kind regards and thanks for your prompt response

Solution

Message 1

For the benefit of other users:

The error can be reproduced on the Sample database. Log file evaluation shows the following:

1) Workflow (WF) Process 'eTraining - Class Enrollment Process' is called, which calls sub process 'eTraining Enrollment Process'.

2) WF Process 'eTraining Enrollment Process' step 'Enroll User' calls business service (BS) 'eTraining Course Registration Service', method 'EnrollMeSvc'.

-> Defined Input Arguments:
   Class Id (Property Name: ClassId)
   Course Id (Property Name: CourseId)
   Reg Id (Property Name: RegId)
   Type (Property Name: CourseType)
--- > All of these are passed correctly

-> Defined Output Arguments:
   Error Message (Property Name: Error Message)
   Registration Id (Property Name: Object Id)
   Search Spec (Property Name: Search Spec)
   Shopping Flag (Property Name: Shopping Flag)
--- > The following value is returned for the "Error Message" argument:
Sorry, registration in this course is not permitted until pre-requisite courses are completed(SBL-ERM-01031)
--- > The "Search Spec" argument is not returned by the BS method.

... continued in next update

Message 2

continued from previous update ...

3) The error message returned is stored in the WF process property, and then overwritten by the following error message:
Argument 'Search Spec' in step 'Enroll User' is not correctly initialized or does not return valid data.(SBL-BPR-00107)

Thus the error message from the actual enrollment process is overwritten, because the WF step execution runs into a discrepancy between the expected and the actual output arguments of the business service method.

There is no way of making an output argument of a business service method optional for a WF step. This means that the only way to avoid overwriting the error message is to make sure that business service 'eTraining Course Registration Service', method 'EnrollMeSvc' actually returns a value for the output argument 'Search Spec'.

Product Defect CR 12-14XAP1R - BS 'eTraining Course Registration Service', method 'EnrollMeSvc' does not return arg. 'Search Spec' if it runs into exception handling.

... continued in next update

Message 3

cont'd from previous update ...

The error occurs on the exception exit, because in that case the output argument does not exist in the output property set, at all. The workaround is to define a script on the Service_InvokeMethod event, which will look for the output argument in the OutputArguments property set (containing the arguments to be returned by the method) and add the output argument "Search Spec" IF IT IS MISSING.

It is ok to return an empty string for the output argument 'Search Spec':
     Outputs.SetProperty("Search Spec", "");
However, this may impact the performance of subsequent steps. After the registration error message is acknowledged, the WF process 'eTraining Enrollment Process' goes on to WF step 'Query Buscomp', which queries for all courses in business component 'Training Class Registration' that correspond to the Search Spec. In the customer's database this would take 4 ½ to 6 ½ minutes. To enhance the performance after the error message you may therefore want to limit the query in WF step 'Query Buscomp' by defining a different Search Spec in your InvokeMethod script. E.g. you could limit the search to the course that the user was dealing with by setting it to "[Class Id] = '<value of method input argument Class Id>'".

The following section in Siebel Bookshelf describes the Service_InvokeMethod event:
Siebel Object Interfaces Reference > Interfaces Reference > Business Service Events > Service_InvokeMethod.

... cont'd in next update

Message 4

continued from previous update ...

The customer had two more requirements for the WF process 'eTraining Enrollment Process':

1. They wanted users to be able to register for a course even if they had a previous enrolment that was declined by their manager.
It is true that the Siebel application keeps a record of declined / cancelled enrollments, so that a user cannot enroll into the same class twice.

To achieve this they changed the status value that would be set in WF process 'eTraining - Decline Third Party Registration' by changing the Input Argument of the Update Status step from LookupValue('TRAINING_REG_STATUS', 'Declined') to LookupValue('TRAINING_REG_STATUS', 'Cancelled').

... continued in next update

Message 5

continued from previous update ...

2. In case of a registration failure, instead of going on to step 'Query Buscomp' they wanted to navigate the user to a specific view and then end the WF process.

To achieve this they moved the arrow from step 'Display Error (Continue)' directly to step 'Goto Web Based View'.
The view name is defined in the User Interact View field of the User Interact step. E.g. if by default you always want to go back to a custom view called 'Our Find Training Course View' you could define this view in the User Interact View field of the User Interact step 'Goto Web Based View'.

The following section in the documentation explains how to revise a WF process:
Siebel Business Process Designer Administration Guide > For Developers: Basics of Building Workflow Processes > Using Process Designer in Siebel Tools > Modifying Existing Process Definitions

Kind regards from
Heidrun Brittain, Siebel Technical Support


Additional Keywords: workflow step, business service method, output argument set, undefined.


Applies to:

Siebel Order Configurator - Version: 8.0.0.7 SIA [20426] to 8.1.1 SIA [21111] - Release: V8 to V8
Information in this document applies to any platform.

Symptoms

When submitting a bulk request, sometimes the status of the Bulk Request stays "In Progress" status and never completes. Navigating to Administration - Server Management > Tasks view shows that the Workflow failed, and the following is observed in the WfProcMgr log file:

ObjMgrBusServiceLog InvokeMethod 4 0002bb6f4a1e2f4a:0 2009-07-24 20:08:32 Begin: Business Service 'ABO Bulk Request Processing Service' invoke method: 'GetObject' at 838bba0
ObjMgrBusServiceLog Error 1 0002bb6f4a1e2f4a:0 2009-07-24 20:08:32 (brprocsvc.cpp (322)) SBL-ISS-00600: Internal Error: .

................

GenericLog GenericError 1 0002bb6f4a1e2f4a: 0 2009-07-24 20:08:32 Object manager error: ([0] The argument 'Type' Step 'Get Action Set' has not been correctly initialized or does not return valid data. ( SBL-BPR-00107) (0x67006b))
GenericLog GenericError 1 0002bb6f4a1e2f4a: 0 2009-07-24 20:08:32 ((0) err = 2818155 sys = 6750315) SBL-OMS-00107: Object manager error: ([0] The argument 'Type' Step 'Get Action Set' has not been correctly initialized or does not return valid data. (SBL-BPR-00107) (0x67006b))
GenericLog GenericError 1 0002bb6f4a1e2f4a: 0 2009-07-24 20:08:32 (bsvcmgr.cpp (1384) err = 2818251 sys = 0) SBL-OMS-00203: Error 6750315 invoke the method "RunProcess" for Business Service " Workflow Process Manager "
GenericLog GenericError 1 0002bb6f4a1e2f4a: 0 2009-07-24 20:08:32 (bsvcmgr.cpp (1227) err = 2818251 sys = 0) SBL-OMS-00203: Error 6750315 invoke the method "RunProcess" for Business Service " Workflow Process Manager "

Cause


The issue can occur if there are more than one WFProcMgr running on separate Siebel servers. When the Bulk Request is submitted, the "ABO Bulk Request - Submit Process Workflow" is executed. This workflow process then kicks off one or more "ABO Bulk Request - Parallel Sub Process Workflow". Since they run in Async mode, they may run on the same or on separate servers.

The first workflow has a step to obtain the bulk request action set. The action set is then stored in memory of the server in which it resides. The second workflow obtains the action set from the server memory. If both workflows are executed on the same server, then everything should run fine. However, if the second WF is executed on a separate server, then it will fail to get the action set from memory because it is stored on another server.

Solution

CR# 10574346 has been logged to track this defect.

Engineering has provided the attached document as a workaround to this behavior. Please follow the tech note on modifying the workflows.

References

BUG:10574346 - IF MORE THAN ONE WFPROCMGR EXIST IN AN ENVIRONMENT, BULK REQUEST MAY NOT COMPLETED

Applies to:

Product Release: V7 (Enterprise)
Version: 7.7.2.1 [18353]
Database: Oracle 9.2.0.6
Application Server OS: Microsoft Windows 2003 Server
Database Server OS: Sun Solaris 2.8

This document was previously published as Siebel SR 38-1740650321.

Symptoms

SBL-BPR-00107, SBL-BPR-00144, SBL-BPR-00183

After the upgrade from 7.5.3 to 7.7.2.1 One of our workflows that handles email and creates Activities for us and Closes SRs for us does not work. We are troubleshooting and I am attaching the logs from the CommInboundReceiver and the workflow itself.

Errors:

ObjMgrLog    Error    1    0    2005-01-29 23:07:23    (evaluator.cpp (665)) SBL-BPR-00107: Argument 'EventFields.HTMLCharset' in step 'Extract Event Fields' is not correctly initialized or does not return valid data.

ObjMgrLog    Error    1    0    2005-01-29 23:12:28    (stepdefn.cpp (770)) SBL-BPR-00144: Error loading argument in step definition 'Add SR Activity': Argument type 'PROPERTY' is invalid.

Solution

Message 1

For the benefit of other customers:

It was found that one of the Business Service steps had an Output Argument of Type='Process Property' where as there is no LOV of that type. It seems that the Upgrade process may have changed this type and caused the WF process not able to initialize the step. Correcting the type and selecting the ‘Output Argument’ LOV worked.

Applies to:

Siebel Email Response - Version: 7.5.3.15 SIA [16279] and later   [Release: V7 and later ]
Information in this document applies to any platform.

Symptoms


=== ODM Issue Clarification ===

The customers Communication Inbound Processor was crashing with the following error message:

TaskExec TaskError 1 2010-08-30 17:54:03 subtask 3 (8564): status:(error), detail error:(Argument 'AckTemplateName' in step 'Convert Message' is not correctly initialized or does not return valid data.(SBL-BPR-00107)), current event id: (1-1O1TWO##AAgd2CAAAAQ+TsgYrukIp+Ebz3AveOrX), events processed:(2).

TaskExec TaskError 1 2010-08-30 17:54:03 (: 0) error code = 5400016, system error = 0, msg1 = RunProcess, msg2 = E:\sea752\siebsrvr\bin\queued\Bonocard_mail\CIM75_1_4C7BE214_FCDBA38F.evt.error, msg3 = (null), msg4 = (null)


Cause


=== ODM Cause Determination ===

The "AckTemplateName" is a property of the Response Group which defines the name of the template used for an Auto-Acknowledgement message.



Solution


=== ODM Solution / Action Plan ===

The customer restored the database with the production backup and this resolved the issue.

Thank you
Siebel | Oracle Technical Support

Applies to:

Siebel System Software - Version: 8.0.0.2 [20412] and later   [Release: V8 and later ]
Information in this document applies to any platform.
""""Checked for relevance on 29-OCT-2010""""

Symptoms

Following error is reported when simulating a Workflow Process which calls a custom Business Service, which is intended to return a SiebelMessage hierarchy :-

Argument 'SiebelMessage' in step 'Get Campaign Information' is not correctly initialized or does not return valid data.(SBL-BPR-00107)


Cause

The custom Business Service eScript contained the following :-


var XMLInput = Inputs.GetChild(0);


XMLInput (which is a SiebelMessage hierarchy) is later added to the Outputs property set. However, internally, the above is just setting a pointer to Inputs.GetChild(0) - it is not creating a new copy of the property set in it's own allocated memory. And when the Business Service exits, the pointer is lost, and nothing is returned to the calling Workflow.

Solution

Amend the following line in the custom Business Service :-


var XMLInput = Inputs.GetChild(0);


with :-


var XMLInput = Inputs.GetChild(0).Copy();


When XMLInput is added to the Outputs property set, it should be available to the calling Workflow. Alternatively, XMLInput could be created as a property set object :-


var XMLInput;
XMLInput = TheApplication().NewPropertySet();


If this is populated and added to Outputs, it should also be available to the Workflow.

References

NOTE:477881.1 - eScript Property Set Printing Tool

Applies to:

Siebel System Software - Version: 6.0.1 [2848] to 8.1.1 [21112] - Release: V6 to V8
Information 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, 2008

Instructions for the Reader

A Troubleshooting Guide is provided to assist 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:

  1. 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.

  2. 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:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  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:

  1. 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.)

  2. 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.

  3. 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.

  4. 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.

  5. 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).

  6. 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)."

  7. 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
  1. Go to Screens > Server Admin > Components > Component Event Configuration
  2. In the Server Components applet, highlight the component (such as BusIntMgr, or EAIObjMgr, or SCCObjMgr) if you are testing on the Call Center client)
  3. In the Component Event Configuration applet, set component events.
V7.0.x, 7.5.x
  1. Go to Site Map > Server Admin > Component
  2. In the Server Components applet, highlight the component
  3. In the lower Applet, select "Component Event Configuration" and set the component events.
V7.7 and above
  1. Go to Site Map > Administration - Server Configuration > Servers > Components - Events
  2. In the Components applet, highlight the component
  3. In the lower Events Applet, set component events.

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:

ObjMgrBusServiceLog Create 4 - Business Service 'XML Hierarchy Converter' was created at df4c750.
ObjMgrBusServiceLog InvokeMethod 4 - Begin: Business Service 'XML Hierarchy Converter' invoke method: 'DocToHier' at df4c750

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:

EAISiebAdpt EAISiebAdptTrcIntObj 4 - Get integration component field: 'Type', Value: 'LOV_TYPE'

Workflow Engine Invoked (EngInv) 4

Captures when the workflow process engine is invoked. You can see the inputs that the workflow process started with:

EngInv Arg 4 - Input: @0*0*5*1*0*0*12*Asynchronous1*Y19*SourceConnectString63*siebel.T

Workflow Process Execution (PrcExec) 4

Captures workflow process related events, and shows process properties values. You can see the values for the process properties.

PrcExec PropSet 4 - Setting runtime value of property 'USER' Name: 'SourceUserName' Datatype: 'String'' to: PrcExec PropSet 4 - SADMIN

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:

StpExec TaskArg 4 - Input: @0*0*0*1*2*12*XMLHierarchy0... StpExec TaskArg 4 - Output: @0*0*0*1*12*XMLHierarchy0*.... If your data is in a Binary process property, you may something more like this: StpExec TaskArg 4 - Output: @0*0*0*0*0*2*1788*PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0id2luZG93cy0xMjUyIj8+

XMLConversion 4

Captures the conversion of XML documents to property sets steps and vice versa, and shows encoding used in the document. For example:
XMLConversion XMLCnvDetail 4 - XML character encoding 'UTF-8' was found in the XML Declaration XMLConversion XMLCnvDetail 4 - XML character encoding 'UTF-8' detected

XMLConversion XMLCnvParserDebug 4 - startEvent (SiebelMessage) state=EAIXMLPRS_STATE_INITIAL stack=0

XMLConversion XMLCnvDetail 4 - XML document will be generated with 'UTF-8' character encoding

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

  1. Set server parameter EnableServiceArgTracing to True.

    If you are running in Siebel Dedicated Web Client, add the following to your .cfg file:

    [EAISubsys]
    EnableServiceArgTracing = TRUE

    If you are running the Siebel zero foot print web client, modify the object manager's parameter "EnableServiceArgTracing" = true.

  2. 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 file

    For 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_enu

    The 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

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&SWEExtData=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></ListofSampleAccount></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:

  1. 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.

  2. 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.

  3. 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_XMLCNV_ERR_EMPTYMSG)

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

  1. 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.

  2. You can also use the argument tracing to help you determine if the data was supplied and what type of data.

  3. 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.

  4. 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

  1. 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

  2. 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.

  3. 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

  1. 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.

  2. 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.

  3. 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

  1. 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.

  2. 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.


The XML Document cannot be converted to an XML Hierarchy. (SBL-EAI-04110). (IDS_EAI_ERR_EAIXMLCNV_XML_TO_XMLHIER)

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

  1. Look for earlier error messages that may indicate a failure to load the XML document.

  2. 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.




No comments:

Post a Comment