Siebel Error Codes

Siebel use two kinds of error codes the XXX-XXX-nnnnn (eg. SBL-DAT-00402) type, and the internal ones in the e object thrown in code. I Can’t find a list of these internal error codes, and the SBL-XYZ-123435 codes, are not readily available in code unless you string parse, ofcourse… So I need the mapping to the error objects errCode.

I need to remember these things so for my own reference I added this post, I will update it as more errorcodes are determined by me.

SBL-DAT-00225, e.errCode = 27546 (Value does not exist in bounded picklist) – thanks Tuba !

SBL-DAT-00381, e.errCode = 27714 (Duplicate Record Exists, User Key Violation)

SBL-DAT-00382, e.errCode = 27715 (Duplicate Record Exists, Unique Index Violation)

SBL-DAT-00402, e.errCode = 27735 (This operation is not available for read only field)

SBL-DAT-00523, e.errCode = 27864 (The selected record has been modified by another user since it was retrieved), Race Condition on BC.WriteRecord()

SBL-???-?????, e.errCode = 28378 (Raise Error text), the raised text is in e.errText

SBL-EXL-00147, e.errCode = 27515 (BC.SetFieldValue() targets a field which is not active)

SBL-EXL-00119, e.errCode = 28461 (BC.GetFieldValue()), the Field is not activated, do not exist in BC

SBL-EXL-00109, e.errCode = 28511 (PropertySet Data is Binary), On PropertySet.GetProperty()

If you have more information, leave a comment!

/Henrik Ohm Eriksen

Siebel “No Match Row Id” mvl and check no match

Siebel Uses join like subqueries for 1:M relations in a buscomp that have the “Use Primary Join” set, combining this with the check no match (set True), allows Siebel to set the special value “No Match Row Id” value in place of a valid row_id if the child does not contain any valid data.

I needed to fix something in a Siebel application (on oracle database), where we search for the records that do not have a mvl record defined, and needed more background on this subject (I need it as a shortcut to find records that do not have a mvl child, this is a lot cheaper than going through the very expensive NOT EXISTS(IS NOT NULL) approach of PDQ.

 So I found this quite exellent article by Prakash Akuthota, that only has two flaws:

“The NoMatchRowId generating and testing behavior is activated by setting Check No Match to FALSE for the MVL.”, it is in fact inverse. The value generated is also actually “No Match Row Id” with spaces.

In the GUI you can actually search for the “No Match Row Id” Value, this makes my shortcut work as intended. Using this approach is all good an fine, you just have to know that inserts/deletes not through the mvl relation you are looking at eg. Contact > Address as opposed to Account > Address wont set the No Match Row Id in the other MVL Relations.. But there are workarounds for that too.


Henrik Ohm