SBL-EAI-04378: No rows retrieved corresponding to the business component '%1'


Applies to: Siebel System Software - Version: 7.7.2 SIA [18325] and later [Release: V7 and later ]
IBM AIX on POWER Systems (64-bit)
Product Release: V7 (Enterprise)
Version: 7.7.2 [18325] Travel
Database: IBM DB2 8.1 FixPack 5
Application Server OS: IBM AIX 5L 5.2
Database Server OS: IBM AIX 5L 5.2

This document was previously published as Siebel SR 38-2449000491.
***Checked for relevance on 14-JAN-2010***

Symptoms1st, try with EAI Siebel Adapter and Sample Account integration object

“No rows retrieved corresponding to the business component 'Account'(SBL-EAI-04378)”
Looking at the log file it can be seen the Where clause in the select statement used to retrieve the records to delete included all of the fields and values included in the XML document.
As a result, as account name was NOT specified in the XML, the query included the criteria “S_ORG_EXT.NAME = NULL” and obviously no records were returned.

Set the input argument DeleteByUserKey to “true” for the Siebel Adapter and this time only the user key (Integration Id) was included in the Where clause and a record was returned and deleted.

The above demonstrates how DeleteByUserKey works.

2nd, try with ASI Siebel Account:

Activate and compile business service Siebel Account to the SRF and publish it as a web service and generate a WSDL for it.

Import it in a 3rd party tools such as SOAPUI.

Set a value for Integration Id and invoke the Delete method.

Looking at the log file for the EAI Object Manager task one can see the Delete method was invoked but the “No rows retrieved” error message was returned.

Set DeleteByUserKey to “true” when invoking the ASI web service by specifying DeleteByUserKey as an input argument for the Siebel Account business service.

Reviewing the logs it is noticed it has no effect.

CauseThe reason is although the functionality of EAI Siebel Adapter and ASI business services is similarit is not exactly the same.
They are implemented with different specialized C++ classes and therefore have a slightly different behavior.
DeleteByUserKey has no effect on ASI.

Solution



    On a related note, this customer also wanted to be able delete child instances only.
    The following information is provided in Integration Platform Technologies: Siebel Enterprise Application Integration > EAI Siebel Adapter Business Service > EAI Siebel Adapter Business Service Methods >Delete Method

    “Any child contacts that once belonged to the account will still remain in the database, but will not be associated with this Account.”

    Therefore, it appeared that it was not possible to delete only child instances of a root integration component instance using the Delete method.

    Options are to create nn integration object for each child integration component where the child was the parent but this seems time consuming.
    Or to invoke the Synchronize method instead.




















    Applies to: Siebel Universal Customer Master - Version: 7.8.1.1 [19044] and later [Release: V7 and later ]
    Oracle Solaris on SPARC (64-bit)
    Product Release: V7 (Enterprise)
    Version: 7.8.1.1 [19044]
    Database: Oracle 10g
    Application Server OS: Sun Solaris 9
    Database Server OS: Sun Solaris 9

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

    SymptomsThe workflow process 'UCM Account Batch Data Management Workflow' is erroring out with the following error message in the logs

    [0] No rows retrieved corresponding to the business component 'DeDuplication - SSA Account Key'(SBL-EAI-04378) (IDS_ERR_EAI_SA_BC_NO_DATA)

    CauseData quality was not enabled.

    8,789 4/3/2006 20:18 1 (ucmsvccdm.cpp (428)) SBL-IAI-00443: UCM Data Quality Manager Found no match

    For each record processed, this path was executed:

    Instantiating step definition 'Process NoMatch'.
    Invoking method 'HandleMatchCase' on business service 'UCM Batch Manager'

    In this step rows are being inserted/updated on various tables such as ACCNT_POSTN, S_ORG_BU, S_PARTY, S_ORG_EXT, etc.

    And when inserting into S_PARTY this error occurs:


    20,456 4/3/2006 20:18 4 BEGIN INSERT INTO UCMBASE.S_PARTY ( CONFLICT_ID, LAST_UPD, CREATED, LAST_UPD_BY, CREATED_BY, MODIFICATION_NUM, ROW_ID, GROUP_TYPE_CD, NAME, PARTY_TYPE_CD, PARTY_UID) VALUES

    (query.cpp (5066)) SBL-DAT-00416: No field matches identifier 'ADL Status'. Please ask your systems administrator to check your application configuration.

    20,590 4/3/2006 20:18 3 Executing process definition 'UCM Key ReGenerate Workflow'.
    20,612 4/3/2006 20:18 4 Invoking method 'Delete' on business service 'EAI Siebel Adapter'.
    20,613 4/3/2006 20:18 4 Input: @0*0*2*0*0*0*10*SearchSpec56*[DeDuplication - SSA Account Key.Account ID] = '1-1625J'13*IntObjectName31*DeDuplication - SSA Account Key
    20,625 4/3/2006 20:18 2 (physmod.cpp (3673)) SBL-DAT-00511: A transaction is already in progress
    20,637 4/3/2006 20:18 1 [0] No rows retrieved corresponding to the business component 'DeDuplication - SSA Account Key'(SBL-EAI-04378) (IDS_ERR_EAI_SA_BC_NO_DATA)20,640 4/3/2006 20:18 1 (stepexec.cpp (803)) SBL-BPR-00162: Error invoking service 'EAI Siebel Adapter', method 'Delete' at step 'Delete Key'.
    20,665 4/3/2006 20:18 1 (adptutils.cpp (5113)) SBL-EAI-04451: Method 'WriteRecord' of business component 'Account' (integration component 'Account') for record with search specification '[Party UId] = "A6520ED9-CA9D-4221-880A-0FA8152FA895"' returned the following error:"Err
    20,666 4/3/2006 20:18 4 EndTransaction (ABORT) was called on DB connection 140c2bc8


    SolutionEnable data quality as per bookshelf


















    Applies to: Siebel System Software - Version: 7.8.2 [19213] and later [Release: V7 and later ]
    z*OBSOLETE: Microsoft Windows Server 2003
    Product Release: V7 (Enterprise)
    Version: 7.8.2 [19213]
    Database: Oracle 10g
    Application Server OS: Microsoft Windows 2003 Server SP1
    Database Server OS: SUSE Linux 8

    This document was previously published as Siebel SR 38-3044021771.
    ***Checked for relevance on 18-Nov-2010***

    SymptomsWhile sending a child objects with delete operations (for an execute method) it was expected the adapter would delete them if they exist, and ignore them if they don't.

    Instead, if one of the records doesn't exist, the following error is observed:

    "End of File"

    The whole transaction is rolled back.

    CauseThe "End of File" error described by customer is due to EAI Siebel Adapter attempting to delete a row that no longer exists in the database. The EAI Siebel Adapter errorring out in this situation is expected. However, the error message "End of File" is not very descriptive.

    SolutionA change request 12-186TCP4 has been logged to enhance the error message to be more descriptive.

    In Siebel 7.8 version, this scenario will return the following error message instead:

    "No rows retrieved corresponding to the business component 'Contact'(SBL-EAI-04378)"

    If you do not wish the 'EAI Siebel Adapter' method 'Execute' to error if the to-be-deleted record does not exist in the Siebel database, then you can do the following:

    1. The Execute method has an input argument called ErrorOnNonExistingDelete (Error If Record Not Found). When the to-be-deleted record does not exist, then the business service will return an error. This occurs when the ErrorOnNonExistingDelete is not specified for the Execute method, or if it is set to the value of 'true'.

    When 'ErrorOnNonExistingDelete' = false, no error occurs.

    Please set input argument 'ErrorOnNonExistingDelete' = false

    2. Or, instead of using the Execute method, you can use the 'EAI Siebel Adapter' bus service 'Synchronize' method.
















    Applies to: Siebel Sales Web Channel - Version: 7.8.2.3 [19221] and later [Release: V7 and later ]
    z*OBSOLETE: Microsoft Windows Server 2003
    ***Checked for relevance on 15-OCT-2010***

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

    SymptomsIn standard Siebel DDK generated code, the Delete function in the service.java does not handle the exception of Null Row Id being passed for delete operation. This could be fatal as it deletes all the records in the table.

    Even though 'Null' Id check can be put in the code, there could be a better solution to prevent the such delete from happening.


    Causeproduct enhancement request.

    Solution
    When invoking Delete method of EAI Siebel Adapter (or DeleteLeaves of EAI UI Data Adapter), an integration object instance is provided as input argument and it is used to make query condition to find out buscomp records deleted. Here if the integration object contains integration component element as well as integration component field with no value specified (null value), the adapter searches for the buscom record with ‘NULL’ value in the field corresponding to the integration component field. When no record is found, it throws the following error:

    No rows retrieved corresponding to the business component 'Service Request'(SBL-EAI-04378)

    However, if integration component is provided but no integration component field is provided at all, the adapter queries out all buscomp records and deletes all the buscomp records. That is expected behavior by current design of EAI Siebel Adapter and EAI UI Data Adapter.

    In this case, the SOAP request message, which is sent from external java application based on DDK generate code, contains Service Request integration component but does not contain any integration component field. That is why EAI UI Data Adapter queries out all Service Request records and deletes all the buscomp records.

    It might be able to cause an unexpected behavior when no row_id is provided but no record should be deleted.

    So BUG : 10513096 has been logged to address the product enhancement request (Please add an input argument to prevent Siebel Adapter from deleting all records with Delete method).


    ReferencesBUG:10513096 - PLEASE ADD AN INPUT ARGUMENT TO PREVENT SIEBEL ADAPTER FROM DELETING ALL RECORDS WITH DELETE METHOD








    Related







    Products








    Siebel > Customer Relationship Management > CRM - Enterprise Edition > Siebel Sales Web Channel


    Keywords






     

    QUERY; EAI SIEBEL ADAPTER; EAI UI DATA ADAPTER

     

    Errors





     

    SBL-EAI-04378







    In WfProcMgr log it starts with this:

  1. A possible solution is to create an integration object that only includes the integration components and user key fields that are required to identify the record(s) to be deleted.

    For example, create a copy of the Account Interface and Internal Account Interface integration objects that include only the Account integration component and the Integration Id field and referenced them in Siebel Account business service.

    Integration Id will then be the only field included in the WSDL and when the web service is invoked the record with the specified Integration Id will be correctly deleted.

  2. Another possibility was to have a web service that is based on a workflow that invokes the Delete Method on the EAI Siebel Adapter and sets DeleteByUserKey to “true”.
    The advantage of this approach is that any non-user key fields included in the incoming XML would not be included in the select statement used to retrieve the record or records to be deleted.



  3. Create a workflow process that reads from a file a Siebel XML document based on the Sample Account integration object, converts it to a hierarchy and calls the Delete method on the EAI Siebel Adapter.
    User Key: 1 references the field Integration Id.
    The XML document included an Integration Id but all of the other field tags were empty.

    When executed the following error is seen :

    תגובות

    פוסטים פופולריים מהבלוג הזה

    Profile Attributes and Open UI

    SBL-BPR-00191: The rowId of the active row of the primary buscomp '%1', '%2', does not match the Primary Id

    SBL-SVC-00150