Saturday, January 30, 2010

Latest Siebel Interview Question in Market !!

Some of my friends are in the mood of switching their job these days and in of the discussion I was having with one of my friend asked me this question which he faced in technical round recently. And the question was :

"Can we create a join in a business component without the join specification?"

I think most of you heard this question for the very first time, same is the case with me, provided you are not preparing for any Siebel interview these days :)

If you start running your horses towards technical feasibility regarding this question, you might think of variuos options :

a) When you create a join in Siebel Tools, it is not mandatory to provide the Join Specification, so that means you can create a join without join specification.

b) But what kind of data you will see on the UI? Well, one might say it will do the Cartesian Product of the two tables and you will see one record multiple times on the UI.

c) Since Siebel will consider the row_id of the table in the where clause (in spool query) if you don't specify any join specification (like if you don't mention the destination field or source field while creating Link, Siebel treat it as ROW_ID), and you will not see even a single record if outer join flag is unchecked.

May be you are thinking or some other logical result apart from above 3, but to keep it simple and clear I tried doing it and here is the answer for this:

Siebel will add a where clause as :

a) <_buscomp.rowid> = <_table.row_id> (+)
if Outer Join Flag = TRUE

b) <_buscomp.rowid> = <_table.row_id>
if Outer Join Flag = FALSE

So, you will not see even a single record if you Outer Join Flag = FALSE, because no two row_ids are same.

Logical speaking I don't see any reason for creating a Join under a BusComp and not specifying the join specification, but remember interviewers can ask anything to check your technical skills and may be this will help you in future if will face this question. Good Luck !!


Monday, January 25, 2010

Issue navigating to Admin Server Management view??

I do like working on dedicated client most of the time, as it helps me getting the SQL spool and the log file, for the dedicated session I am using, very easily in the local drive.

Something strange I observed today when I got the User Id / Password error for the Siebel session while I was trying navigating to "Administration - Server Management" view.

So, here is the sequence of things I observed:

1. I tried navigating to Administration - Server Management View.

2. Recieved an error saying :

3. I clicked on Ok, and found that system is asking for the User Name and Password for connecting to the Gateway.

4. Thought of putting my login name/password, but didn't work.

5. And Siebel client was giving error saying :

An error has occurred creating business component 'Server Component' used by business object 'Server Admin'. Please ask your systems administrator to check your application configuration.(SBL-DAT-00222)

These were the complete set of events happened in my dedicated session and I was not able to navigate to Server Management views. I even tried navigating to the Server Configuration screen but that also didn't work.

Since system was trying accessing the gateway information and it received an error, there is something messed up with the dedicated client cfg file due to which I am not able to qualify for the gateway server information access. To confirm whether CFG is having the correct values or not, just open the CFG and look for : "[GatewayDataSrc]" section. Here below are the parameters for which we need to confirm the values :

ConnectString = <_siebelserver>:<_port>
PrimaryEnterprise = <_enterprise>

Now the question is, from where we need to confirm these values?

To give you the information, "siebns.dat" is the file located at "/siebel/gatewaysrvr/sys" directory which keep all the informatiom regarding the Gateway Server, Siebel Servers, Enterprise Server, Components running on each server with all the parameter details etc.

So, just get this file from the mentioned location and search for the below mentioned strings to check out the value for each parameter:

1. ConnectString :

a) In siebns.dat file search for "GatewayDataSrc/parameters/DSConnectString".

b) Under this section, look for the parameter : "Value" and this is the value for the "ConnectString" parameter in client cfg. (Please note this is the format : <_siebsrvrname>:<_port>)

2. PrimaryEnterprise :

a) In siebns.dat file search for string "GatewayDataSrc/parameters/DSPrimaryEnterprise".

b) Under this section, look for the parameter : "Value" and this is the value for the
"PrimaryEnterprise" parameter in client cfg.

3. DLL :

a) In siebns.dat file search for string "GatewayDataSrc/parameters/DSDLLName".

b) Under this section, look for the parameter : "Value" and this is the value for the "DLL" parameter in client cfg.

After setting all the correct values in the Client's cfg file, just restarted the dedicated session again, it worked fine. Today I know the importance of siebns.dat file, really very useful.


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.
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.

Friday, January 1, 2010

Happy New Year 2010 !!

Wishing you all readers a Very Happy & Prosperous New Year. I wish this year will bring you good health and happiness topped with loads of good fortune.