Wednesday, January 20, 2010

Creating Server Request from Dedicated Client !!

I was trying simulating a Business Service from Siebel Client thru "Administration - Business Service -> Simulator" view, and this is very basic thing that we do in our daily Siebel life ;)

But this is what I got, a pop message saying:

No server connect string for Siebel Component SRBroker in Siebel Enterprise <_enterprisename>, Siebel Server <_siebelservername>


hmm, this is something new I ever came across and it seems that my business service was trying to create a Request on Siebel Server (because error specifically mentioned for SR Broker) and due to the incorrect Connect String, system is not able to create a Server Request.

I researched for this issue and found something interesting that is worth sharing with you people here.

You will see this error when :

a) You are trying to create a Server Request, no matter it is Synchronous or Asynchronous, from dedicated client.
AND
b) RequestServerName is not correctly mentioned in the Client's cfg file.


SR Broker is the component which is responsible to interact with the various components running on the Siebel Server to assign the respective tasks. So we need to specify the Server Name (Logical) where SR Broker component is running.

So, here is what you need to do :

1. Find out the Logical name of Siebel Server.
a) Navigate to "Administration - Server Management -> Enterprises". And in the second applet check for the Server Name under which "Server Request Broker" component is running.
b) Copy the Siebel Server name.


2. Update the Server Name in Client cfg file.
a) Open Siebel.cfg file or whichever you are using.
b) Search for section : "[InfraObjMgr]"
c) Change the parameter : "RequestServerName" to the value for Siebel Server Name that we copied in Step 1.b above.

3. Save the Client cfg file and restart the Siebel dedicated client and it should work fine.


Hope it helps.



.




Saturday, January 16, 2010

Difference between Today() and TimeStamp() while used in Calculated field !!

Here is something interesting I found today while working on a requirement in which we need to capture the timestamp of the record when a field get updated.

So the exact requirement was :

Capture the timestamp of the record when the Status of the Service Request changes to Approved. The field used for this purpose named as "SR Approved On".
Now this requirement seems very simple and the very first idea come into any Developer's mind is that use the BusComp user property for this i.e. "On Field Update Set" and set the value for "SR Approved On" using Today(). I did the same thing and here is what I tried:

1. Create a BC User Property :
a) Name : On Field Update Set 1
b) Value : "Status", "SR Approved On", "IIF ([Status] = 'Approved', Today(), "")"

Everything looks okayy, but the only thing I wonder is that "SR Approved On" stores the correct date but not the time. "Time" it stores as "12:00:00" for each record.

Hmmmm.... what could be reason?? If you are thinking that underlying column for "SR Approved On" field is only date field, then this is not the case here. I verified the below things:

a) Underlying column for "SR Approved On" is of type "UTC Date Time".
b) Type of "SR Approved On" at the BusComp level is "DTYPE_UTCDATETIME".
So, this fact is totally ruled out that "SR Approved On" can only store Date but not time. That means problem is somewhere else or may be "Today()" is returning only Date not time. But still I didn't convince with this because I am in the impression like we use sysdate in Oracle SQLs it should work that way.

To verify this, I created a Calc Field on Service Request BC:
a) Field Name : Current Time
b) Calculated : True
c) Calculated Value : Today()
Exposed the field on Service Request List Applet and to my surprised I found that it displays the current date but time as "12:00:00 AM" for all the records.

Well, that means we cannot get current timestamp out of "Today()". I need to used something else and let me tell you this was my totally wild guess of using "TimeStamp()" function, which I never used before and it worked pretty well when I changed the Calculated value to "TimeStamp()".

Finally, I got the issue resolved, just changed the User property value to :

a) Name : On Field Update Set 1
b) Value : "Status'', "SR Approved On", "IIF ([Status] = 'Approved', TimeStamp(), "")"
Might be helpful for you, if not used it before !!

.

Tuesday, January 5, 2010

Running a Workflow Process when "Workflow Process Manager" component shutdown?

Got surprised? I know, this is same reaction I had while brainstorming this with my friend that, "how is it possible?".

Okayy, lets play a question game today here on SiebelMantra and see how many Siebel Gurus visits this post to answer this question:

=========================================================
Is there any way you can run a Workflow Process when "Workflow Process Manager" component is not running on the Siebel Server?
=========================================================

Please provide your comments and I assure you that you will definitely going to learn few hidden truths in Siebel when I will provide my comments after few days with the complete summary for this post. Go ahead, write your views on the question asked.
.