Tuesday, August 6, 2013

Error(null) involving method "(null)" for Business Service "(null)"

Recently we have got an issue highlighted from one of our environment, where RCRs were stuck in Queue under Repeating instances and tasks were not getting created. Also the below error were getting logged : 

Error Code : SBL-OMS-00203
Error Message : Error (null) invoking method "(null)" for Business Service "(null)"

This error could for number of reasons. Some of them are mentioned below : 

1) Component on which the request is getting made, is not up and running. So check that the state of the respective component is healthy.

2) Component is not having the custom business service mentioned against its parameter Business Query Access List.

3) Workflow version is not the correct one. For this activate the WF from the Repository Version and reload runtime events if that WF contains runtime events.

4) The issue which arised on our enviroment is because the RCR were very old and they are refering to the non-existent WF and hence they are getting errored out. On increasing the log level, we came to know that below error was very frequent : 

ObjMgrBusServiceLog      Error      1              0              2013-08-06 16:00:12        (pmtsvc.cpp (1784)) SBL-ORD-00160: Object stored at key 'HeaderKey' was not found.
ObjMgrBusServiceLog      Error      1              0              2013-08-06 16:00:12        (pmtsvc.cpp (1784)) SBL-ORD-00160: Object stored at key 'ProductKey' was not found.

Now the reason for this error while searching in support web[ID : 503236.1] is because of Wrong version of workflow.
So as a resolution we have recreated the RCR, and since we have created a new RCR and associated the the workflow. It will then refer the latest WF and hence will not be error.

There could be more reason for this error, keeping in mind, for different scenarios. But in case you encounter this, check for the above pointers. Hope this help, Happy Exploring !!!

Thursday, August 1, 2013

System Variables and their default values for fields

I find the below information pretty useful and hence thought of sharing the same.
Below are some of the system var which you can use to default any field value, later i have also mentioned the values at different Siebel version for the date variables as well.

System: Today
This value returns today's date. This value should be used when the field type is DTYPE_DATE. If the field type is DTYPE_DATETIME or DTYPE_UTCDATETIME, the field will be populated with today's date plus "12:00:00 AM".

System: Timestamp
This value returns today's date and the current time. This value should be used when the field type is DTYPE_DATETIME or
DTYPE_UTCDATETIME. If the field type is DTYPE_DATE, only the current date will be saved in the field; the time will not be saved.

Expr: 'Today()'
This expression is equivalent to the calculated expression "Today()" and will return the current date. It returns the same value as System: Today. It should be used with fields of type DTYPE_DATE; if used with fields of type DTYPE_DATETIME or DTYPE_UTCDATETIME, "12:00:00 AM" will be appended to the current date.

Expr: 'Today() - 1'
This example demonstrates how you can add or subtract days by adding or subtracting an integer. This example would result in the field being set to yesterday's date. If a floating point number is used in this expression, the fractional part will be ignored.

Expr: 'Timestamp()'
This expression is equivalent to the calculated expression "Timestamp()" and will return the current date and time. It returns the same value as System: Timestamp. This expression should be used for fields of type DTYPE_DATETIME or DTYPE_UTCDATETIME.

Field: 'FieldName'
This function will set the field to the value of another field in the same business component. You would substitute FieldName with the name of an actual date field that is defined in the same business component as the field being defaulted.
To minimize confusion, the field being defaulted and the referenced field should be the same field type. If the defaulted field is type DTYPE_DATE and the referenced field is DTYPE_DATETIME or DTYPE_UTCDATETIME, the time will be omitted from the defaulted field. If the defaulted field is DTYPE_DATETIME or DTYPE_UTCDATETIME and the referenced field is DTYPE_DATE, the string "12:00:00 AM" will be appended to the defaulted field.
If this function is used in the Pre Default Value property, do not reference a join field since the join field will not be populated when the record is first created.
This function is not intended to be used as part of a date calculation.

Parent: 'BusComp.Field', 'BusComp.Field'
This function will default the value based on a field value in a parent business component within the current business object. You can include more than one combination of buscomp and field, to offer several possible default values. The function will evaluate each 'BusComp.Field' construct from left to right until a value is found.
As with the Field: 'DateFieldName' function, it is best for the defaulted field and the referenced fields to be of the same field type. If they differ, the behavior of the field type combinations is the same as for the Field: 'DateFieldName' function.

Below is the Source of Current Date and Time for different Siebel versions :
Siebel Ver. Client Type Source of Current Date and Time
6.x & earlier Dedicated or Mobile User’s machine
6.x & earlier Thin Client or .COM Application Application server
7.0.x Web Client Application server
7.0.x Dedicated or Mobile User’s machine
7.5.x Web Client Application server
7.5.x Dedicated or Mobile Client User’s machine
7.7.x Web Client Application server; converted to
time zone of the current user’s session
7.7.x Dedicated or Mobile Client User’s machine

In case you want a detailed information, check technote 539. Happy Exploring !!!