Search This Blog

SBL-DAT-00357: The selected record has already been added to the list. Please add another record or close the pop-up list and continue

Applies to:

Siebel Server Sync - Microsoft Exchange Server - Version: 7.7.2.6 [18372] to 8.0.0.2 [20412] - Release: V7 to V8
Information in this document applies to any platform.

Symptoms

Customer reported that all users were failing to sync.  ES was onsite and were assisting the customer with this issue to get it resolved faster.  When new users were created the sync would work as it was designed to do.  It was then determined that the issue only happened to users who were pre SSSE install. 

Cause

The system could not find any of the users to sync them.  The cause was found from this error:

ObjMgrLog Error 1 0000000648511a00:79071 2008-06-12 10:46:38 (adptutils.cpp (5614)) SBL-EAI-04451: Method 'AssocCurrentRow' of business component 'Employee' (integration component 'Action_Employee') for record with search specification '[First Name] = "******" AND [Last Name] = "******" AND [Login Name] = "****"' returned the following error:"The selected record has already been added to the list.

Please add another record or close the pop-up list and continue.(SBL-DAT-00357)"

EAISiebAdpt EAISiebAdptErr 1 0000000648511a00:79071 2008-06-12 10:46:38 [0] Method 'AssocCurrentRow' of business component 'Employee' (integration component 'Action_Employee') for record with search specification '[First Name] = "*****" AND [Last Name] = "******" AND [Login Name] = "******"' returned the following error:"The selected record has already been added to the list.

Please add another record or close the pop-up list and continue.(SBL-DAT-00357)"(SBL-EAI-04451) (0x750165)

This error above was coming up as it could not find the userids as they were not in the correct format.  Siebel requires that the userids be in all cap format.  So rather then having their userids be "AAAAAA" which is the correct format and will work all of their users were in the format of "aaaaaa".  This was due to the fact that they added their users with the use of the EIM tool which therefore bypassed the validation check on the Employee BusComp that forced uppercase login names. 

This is a behavior that should never be done the USERID is the link for Siebel to use for everything not just SSSE.  There could be many other parts of the application that could be broken as per the result of this behavior this was just the first one that was discovered.

Solution

The solution was found in the way of checking the login name entry in the Employee table.  The login name for each of the users was in a lowercase format.  (Example being the query searched for 'AAAAAA' but the entry in the DB was 'aaaaaa')  Once the change was done to make the login name in all uppercase the system query no longer failed and it was able to find the users. 

The problem was not happening with new users due to the fact that they were creating them in Siebel and the system was running the validation check to make sure the format of the userid was correct. 


Applies to:

Siebel Tools - Version: 8.0.0.5 [20420] and later   [Release: V8 and later ]
Information in this document applies to any platform.

Goal


We have a requirement of associating an Account with the same address multiple times, each against different Address Types; e,g. an address 101 Fairway Street,LA,California can be associated twice with an Account once with Address Type as "Physical" and one more time with Address type as "Mailing".
Thus we intend to have only a single record in the S_ADDR_PER table but two records in the S_CON_ADDR table with the same ACCNT_ID and ADDR_PER_ID combination but different ADDR_TYPE_CD/RELATION_TYPE_CD.

In standard we cannot associate the same address multiple times against the same account.

Solution

There is no way to associate twice the same address to an account. If you try that in view 'Account Detail - Business Address View' (Accounts > Accounts List > Addresses) the following error will occur:
- - -
The selected record has already been added to the list.

Please add another record or close the pop-up list and continue.(SBL-DAT-00357)
- - -
However multiple associations are possible by loading data via EIM (It was the case for the customer). Indeed the intersection table involved, S_CON_ADDR, has a unique index named S_CON_ADDR_U1 that consist of the following index columns:

ADDR_PER_ID
CONTACT_ID
ACCNT_ID
RELATION_TYPE_CD
ORG_GROUP_ID
START_DT
CONFLICT_ID

I would like to refer you Doc id - Multiple associations between an account and a same address lead to problem with ExecuteQuery method (Note 519471.1)

For workaround -

When a M:M relationship is implemented between 2 BC, a parent and a child, using a link and an intersection table 2 records can only be associated once even if the unique indexes in the intersection table would allow multiple associations. Indeed the link definition between the 2 BC only considers the ROW_ID values of the parent and child records to maintain the M:M relationship. This is the standard behavior.

To achieve the customer's requirement the suggestion is to use an intersection BC, namely a BC directly based on the intersection table S_PARTY_REL, and 1:M link between the parent BC and this new BC. With this configuration the child list applet, or MVG applet, is based on the intersection BC and when a new record is created the selection of the child record is done using a pick applet based on the child BC and not with an association applet.

Please note that in standard Siebel application there is view in screen 'Contacts' that illustrates this behavior. This view is "Relationship" ('Contact Relationships View') and shows a M:M relationship between contacts where it is possible to associate the same contacts several times by specifying a different relationship type. The intersection table used is S_CONTACT_REL that is similar to S_PARTY_REL. This table has a unique index S_CONTACT_REL_U1 that has the following index columns:

CONTACT_ID
RELATION_TYPE_CD
REL_CONTACT_ID
START_DT
CONFLICT_ID

The view has a parent applet based on BC 'Contact' and a child applet based on BC 'Contact Relationship'. This last BC is an intersection BC, that is a BC based directly on the intersection table S_CONTACT_REL. There is therefore no link with an inter table. The link used is 'Contact/Contact Relationship', that is a 1:M relationship. When a new record is created in the child applet the selection of the child record is done using a pick applet based on BC 'Contact' and not with an association applet.

This is a pure implementation question, I would suggest you to engage Expert services on this as e do not support any changes in standard siebel index and functionality.

References

NOTE:519471.1 - Multiple associations between an account and a same address lead to problem with ExecuteQuery method

Applies to:

Siebel Tools - Version: 7.5.3 [16157] to 8.1.1 SIA [21111] - Release: V7 to V8
z*OBSOLETE: Microsoft Windows 2000
Database: Oracle 8.1.7.4
Application Server OS: Microsoft Windows 2000 Advanced Server SP 2
Database Server OS: HP-UX 11.0

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

Symptoms

SBL-DAT-00357

We created a business service in the Administration view which does the following:

For each account
For each opportunity
Find the Simple Field Market Segment associated to the Opportunity
Copy the Market Segment in the Mulfitvalue Field Market Segment associated to the Account
Next Opportunity
Next Account

The business service is invoked from a workflow process. When this is executed using the Workflow Process Manager the business service and the business workflow stop. I think the problem comes from our script, when we try to add a market segment that already exists on the account.

Cause

When the business service was executed the first time it completed correctly. However, when it was executed subsequently it failed with the following error:

“The selected record has already been added to the list”

Testing showed that this error occurs if you attempt to associate an industry that has already been associated to the account.

Solution

The reported behavior was resolved by querying the multi-value field (MVGBusComp) to see whether the industry had already been associated. If it had not then it was associated otherwise it was not associated.


For more information on how to query on a multi-value field using script please refer to " How Can You Access Data from a Parent-Child Relationship Using Scripting? Note 476719.1" in Metalink.



Keywords: Account Industry Multi-Value field GetAssocBusComp Associate Selected Record Already Added List MVGBusComp

References

NOTE:476719.1 - How Can You Access Data from a Parent-Child Relationship Using Scripting?

Applies to:

Siebel Tools - Version: 7.7.2.6 SIA [18372] and later   [Release: V7 and later ]
z*OBSOLETE: Microsoft Windows 2000
Product Release: V7 (Enterprise)
Version: 7.7.2.6 [18372] DEU Fin Svcs
Database: Oracle 9.2.0.6
Application Server OS: Microsoft Windows 2000 Advanced Server SP 4
Database Server OS: HP-UX 11.0

This document was previously published as Siebel SR 38-3196336741.
Checked for Relevance on 29-Jun-2010

Symptoms

Hi,

We have an Opportunity with a Company customer which has 3 associations with the same address, i. e. there are 3 records in table S_CON_ADDR with the same ACCNT_ID and ADDR_PER_ID, but different START_DT and END_DT (These data are needed for the history of the changes of address, in case the customer moves back to an old address).

The problem now is, if we query the Opportunity's child 'Account' in eScript (a Sample code is attached), 3 child components (Account) will be returned, although only one record exists in the intersection table S_OPTY_ORG.

If the query is done via the GUI, there will be only one child record displayed.

Please guide us to solve this problem (we have many places doing such a query).

Thanks in advance.

Cause

-

Solution

Message 1

For the benefit of other readers:

Using standard Siebel Financial Services application version 7.7 there is no way to associate twice the same address to an account. If you try that in view 'Account Detail - Business Address View' (Accounts > Accounts List > Addresses) the following error will occur:
- - -
The selected record has already been added to the list.

Please add another record or close the pop-up list and continue.(SBL-DAT-00357)
- - -

However multiple associations are possible by loading data via EIM (It was the case for the customer). Indeed the intersection table involved, S_CON_ADDR, has a unique index named S_CON_ADDR_U1 that consist of the following index columns:

ADDR_PER_ID
CONTACT_ID
ACCNT_ID
RELATION_TYPE_CD
ORG_GROUP_ID
START_DT
CONFLICT_ID

NOTE: the reason why multiple associations are not possible via the Siebel application is explained in posting 38-964614656 on SupportWeb.

With this configuration duplicate records can be retrieved when querying the BC 'Account' via scripting whereas the same query performed in the UI will retrieve the correct number of records.

The cause of these duplicate records is the following outer join in the SELECT statement generated by the application when querying standard BC 'Account':
- - -
...
LEFT OUTER JOIN SIEBEL.S_CON_ADDR T13 ON T2.PR_ADDR_ID = T13.ADDR_PER_ID AND T2.ROW_ID = T13.ACCNT_ID
...
- - -


Note that duplicate records can be retrieved when the ExecuteQuery method is used with ForwardOnly as cursorMode but not with ForwardBackward because in this case the behavior is the same as in the UI.

The customer didn't wish to use a cursor of ForwardBackward in their code. ForwardOnly is effectively recommended wherever possible to achieve maximum performance.

Moreover the duplicate account records caused an issue in their customized application. They used a M:M relationship between BC 'Opportunity' and 'Account' based on S_OPTY_ORG intersection table. Copying and opportunity did not work if a child account was associated twice to the same address because the system tried to insert twice the same record into S_OPTY_ORG.

The suggestion was to use the "Duplicate Elimination" user property set to TRUE on BC 'Account'. Indeed this one allows omitting duplicate records from the result sets of queries that are executed in the ForwardOnly mode. This matter is documented in the Bookshelf:

Siebel Developer's Reference
User Properties
Duplicate Elimination

For further information about the ExecuteQuery method and the cursor modes please refer to the Siebel Object Interfaces Reference guide:

Interfaces Reference
Business Component Methods
ExecuteQuery Method

No comments:

Post a Comment