Tuesday, December 29, 2009

Siebel Application Menu Items / Applet Menus items doesn't work in IE 8.0??

If you are getting tough time after upgrading your Internet Explorer to version 8.0 and if you have observed that no Menu items is working across the application i.e. Application Menus, Applet Menus etc, then don't get panic, this is something due to the new version only of IE. But not to worry here, IE 8.0 provides the facility of running the browser in compatibility view where it allows the browser to behave like the older version.

Here below are the steps you need to follow :
1. Click on IE -> Tools Menu.

2. Select the option "Compatibility View".

3. Refresh the current web page.

4. Everything should work fine.
.

Thursday, December 24, 2009

Problem while exporting data from Siebel in IE 7.0 or IE 8.0?

When I tried taking the export from Service Request list applet, I saw a difference in the way export applet was behaving in comparison with how it used to worked in IE 6.0. Right now I am using IE 7.0.

So let me tell you the complete scenario what happened: From Service Request list applet, I clicked on Menu -> Export and as per expectation Export applet came up and I clicked on "Next" button. Here below is what I saw:

Due to extra security provided by new IE version, I received this popup message in export applet saying : "To help protect security, Internet Explorer blocked this site from downloading files to your computer. Click here for options...".

Alright, no issues, it always good to have extra security, so I selected the option "Download File...". Now that msg get disappeared and again I need to click on Next button to start the export process. I clicked on Next and everything worked fine as I can see the "File Download" applet get popped and I can easily see the exported data. So far, so good !!

But here is something I observed that I want to share. After taking export sucessfully for the very first time, I was not able to do "Export" anymore. Whenever I clicked on "Applet Menu-> Export", nothing happened, tried lot many unsuccessful attempts. hhmmmm, well is Siebel allowed taking export from list applet only once??? Nope, there is something wrong here with IE settings. A similar kind of issue I have already discussed earlier:
http://siebelmantra.blogspot.com/2009/02/siebel-high-interactivity-framework.html

So a temporary fix for this export issue is to keep pressing the "Ctrl" key on the keyboard and it worked fine. But to get the permanent fix, here below is what you need to do, in case you see this kind of issue.

1. Click on IE Tools Menu -> Internet Options.

2. Go to Security tab, click on "Custom Level", scroll down to "Downloads" section.

3. Make "Enable" for "Automating prompting for file downloads".

4. And you are done.

Restart the web client and try taking export now, hopefully system should not popup message in export applet and taking export multiple times should also work fine.

.

Friday, December 18, 2009

How to apply Oracle hint in query via Siebel Configuration?

Our team was facing one performance issue in our application in which navigation to a view was taking hell lot of time. As every Siebel developer does, we also spooled the query which is running in the background and found the culprit query for the issue. SQL query seems to be very simple:
SELECT T1.CONFLICT_ID, T1.LAST_UPD, T1.CREATED, T1.LAST_UPD_BY,
T1.CREATED_BY, T1.MODIFICATION_NUM, T1.ROW_ID,
T1.ACCNT_TYPE_CD, T1.NAME, T1.OU_NUM, T1.DOM_ULT_DUNS_NUM, T1.BU_ID
FROM
SIEBEL.S_ORG_EXT T1
WHERE
(T1.ACCNT_TYPE_CD = 'Establishment')

But why this simple query is taking time?? This seems to be a very simple query which is resulting in performance issue. Ok, no probs, lets try running this query at the database and see how it behaves, so I followed the instructions I mentioned in my earlier post. i.e.

After setting the session parameters, I ran the query and it took 105 seconds. hmmm..... then I checked the execution plan and found that it was doing the Full Table scan. If you look at the query, you will easily point out that create a index on ACCNT_TYPE_CD and hopefully you are done, but this is not the case. We already have a index on this field but not sure why it is not being used in the query, then you might say that get the statistics regenerated for it your issue get resolved, but that we have already tried, still not able to figure out what the cause is. Finally, our DBA helped us out here. DBAs are just magician of databases, I don't know what kind of magic stick they just use and sql query itself come to them and tell them what needs to be done here. :)..... anyways, joke apart, our DBA analysed the query and suggested that we should use "ALL_ROWS" in the query, the resultset is coming in just 2 seconds. I was surprised after hearing this because I never came across a scenario where oracle hint ALL_ROWS actually solves the performance issue, and also Siebel itself uses the Optimizer Mode = FIRST_ROWS, for session it establish with the oracle database, before running any sql query. But to my surprise, after putting the hint into the query, it ran fine with just 2 seconds on the database.

Anyways, this is also the first time learning for me, but the challenge is how to put this Oracle Hint "ALL_ROWS" in the query from Siebel configuration? And after lot much of search I found something that is worth sharing here. But before applying this, you need to very careful and get the approval from DBAs or your solution architects, so that it should not impact anywhere else in the application. Now, here is below how you can force a Siebel query to use the Oracle Hint. Identify the business component and add the following User Property there :

Property Name : OracleCBOHint
Property Value : ALL_ROWS

Compile the SRF and check the spool. You will see the difference in the query this time.

Check it out !!!

.

Monday, December 7, 2009

Error in Inbound Integration !!

Generally whenever you create a new Inbound Integration in Siebel, its a recommended practice that you get a new Database login created for it and that you can share with the other system for which you have created this inbound integration. I did the same thing, requested for a new DB login from our DBA and got it created. Before handing over to other party for use, I tried testing this newly created Inbound Integration via SOAPUI (the best ever client I came across for testing integrations). Imported the wsdl and when hit Go, I received the message saying :

The user-context could not be established. Something is wrong with the assigned primary position or login related repository objects. See additional error messages for more information.(SBL-DAT-00546)

and yes my reaction was "Oops, I forget to create a record for the DB user, that I am using for this Inbound Integration, in Administration - User screen". Okayy, let me do that. I created the record under "Employees" view, assigned the necessary position and responsibilities.

Now, lets try again invoking the inbound integation again from SOAPUI, again hit Go, this time I received the different one:

The user ID or password that you entered is incorrect. Please check the spelling
and try again.(SBL-UIF-00272)


hmmm....... I don't think, the username and password I used in the SOAP header is incorrect, so just to confirm it, I went to Oracle client and tried logging into the Siebel Database and I was able to login successfully, no issues. That means the problem is somewhere else.

The best part while working with Siebel is, as soon as you receive any error, just verify the respective logs and you will get the clue. So, the next step towards resolving this issue is just to check the EAI Object Manager log. I went to log folder and found there was an error message in it saying:

SBL-DAT-00587: An error occurred setting the default locale for the session.

This is something to be notice here that the Login credentials I am using is getting problem with creating a new session with Siebel. I think, I know the resolution for this but before actually use that lets double check it. I opened the Siebel thin-client URL and tried login into application instead and again I received the same error that Username/password is not correct. Also in Object Manager log, I found the instance of the same error which I found in EAI Object Manager log.

So, this only happens when SSE_ROLE has not been assigned to the designated user. For creating a session, every Siebel user should have this role assigned otherwise it won't be able to login even. To check which all roles/priviledges are assigned to the user, just login into the database with that user's login credentials and run the following query :

select * from user_role_privs
It will list all the roles for you and keep in mind that SSE_ROLE is required if you want to create a user session on Siebel Server either via Object Manager or EAI Object Manager.

So, I just asked my DBA to do the needful and now I think I am good, and yes I was able to invoke Inbound integration sucessfully. Now its the time when I can share these login credentials along with the WSDL to other party.
.

Tuesday, December 1, 2009

Debugging Siebel eMail Response !!

In our Siebel application, we are using OOB functionality for creating Service Requests via emails, and yes I think you guessed it right we are using Siebel eMail Response workflows which are available in Siebel Tools and you just need to configure them as per your need and these works really well.

(For people who are new to this subject, to find these workflows you need to query in Siebel tools as "eMail Response*", and if you want to learn configure these, just follow the simple steps given in Communications Server Administration Guide)

I really like this OOB feature of Siebel as it works like a magic: user sends an email to Siebel email box whichever you have configured, Response Group keeps monitoring that and whenever see a new email just picks it up, delete it from the email box and invoke the Siebel Workflow. Now from here you can do anything what any workflow in Siebel is capable of doing, design your workflow as per the requirement and you are done.

Pretty simple isn't it, but sometimes it tough to debug it if you land-up in some issue here. I was working on the similar kind of requirement where everything seems working fine but the only problem was: "Response Group was not able to pick the email from Siebel email box".

Response Group only job is to just pick the email and create a MIME format file in "<_siebsrvr>/bin/incoming" folder and passes it as an input argument to eMail Response workflow, but since Response Group was not able to pick the email, so I thought of confirming whether it is reaching to the Siebel emailbox or not, so I logged into webmail client and found all emails keep lying there only.

Since I was able to see all the emails and I have also verified the username/password being used for the email profile in Siebel was correct, that means there is some problem with the POP3 setting of the emailbox. So to check it what you can do is :

a) Get the POP3 server name / username / password for the emailbox which is being monitored by reponse group. (You can find it in "Administration - Communications -> Communications Drivers and Profiles" view by querying for the communication drivers as "Internet SMTP/POP3 Server" and check the name in "Profile Parameter overrides" applet).

b) Click Start -> Run -> type "telnet <_servername> pop3", hit enter.

c) In Telnet window, type "USER <_username>" (without quotes)
if you see +OK, that means username is correct.

d) Type "PASS <_password>" (without quotes)
if you see +OK, that means password is correct.
But I recieved an error message saying "Unknown username or bad password"

So this is something we can't control from Siebel, I checked with the Server administration team who handles all the email servers and they fixed the issue for POP3 settings on the email box and tried the above steps again and this time no error.
[Server admin people really likes to resolve the issue when you go to them with the exact root cause ;) ]

One more reason I can think of for such a behaviour when you have not clicked on "Submit Response Group Changes" for the Response group monitoring the emailbox.
.

Thursday, August 27, 2009

Error while running blank query on an applet !!

Today while working on one of the issue in UAT env, when I navigated to Assets screen to see list of all assets, ran a blank query, I got the following error :

There were more rows than could be returned. Please refine your query to bring back fewer rows(SBL-DAT-00500).

In the very first sight, it seems query is bringing a large number of records which Siebel can't handle. hmmm... okayy, lets try running a query which will bring less records so I put a query on "Type" field on the applet and ran the query and it worked fine. That means there is some limitation in Siebel while fetching the records and if the number of records goes beyond that limit it gives up. So, one might ask what is that upper limit??

Upper limit for number of records that Siebel can pull from a single query is equal to the value set for "MaxCursorSize" parameter available in your siebel.cfg file. Here below can be the values :

a) 0 : If this parameter set to 0 (zero), that means Siebel can fetch 10,000 records in a single query. This is the recommended value.

b) -1 : it indicates infinite number of records, results in low performance and not recommended by Siebel.

c) >0 : any number greater than 0 will fetch that many records in one query.

So, what happens is if you run a query on UI and you try to scroll the records and crosses the limit what has been set by "MaxCursorSize" parameter, you will get the above mentioned error. Moreover, the parameter is applied for each and every query that Siebel runs with the exception that it might override by "Maximum Cursor Override" property at the business component level.

I checked for the value of "MaxCursorSize" parameter in CFG and it was set to 0. Just to cross verify I also ran a query in the database and confirmed that number of records in S_ASSET records were more than 10,000 records. But, wait a minute, I didn't even scroll once on the Asset Screen and I just tried to navigate on the default view of the screen and still I received this error. This is something else is going on here, isn't it?

One more thing to notice here is that I realized that even I have more than 10,000 Accounts records in the application, but there is no issue when I navigate to All Accounts view. That means something special does exist with Asset business component which is causing this issue. And here below is the reason for it :

"Hierarchy Parent Field" property of business component was set to "Parent Asset Id" and due to this while running a blank query on the Assets UI, resulted in putting a "/*+ ALL_ROWS */" hint in the SQL that Siebel runs in the background. This is the difference I observed when I just removed the "Hierachy Parent Field" and compiled the SRF again and blank query worked fine this time. No issues. But this doesn't mean that this is the solution for the issue, you can't just remove this property to avoid this error because it get reflect in all the applet based on this business component. So here is the solution for this :

Use "Disable Buscomp Hierarchy", a user property available on the applet and set its value to True. Since it is applet based user property, only applies to the applet on which it is used.

Disable Buscomp Hierarchy = True

What it does is : it will just ignore the effect of "Hierarchy Parent Field" on the business component and run the query without "/*+ ALL_ROWS */" hint in the background to bring the records as per the normal process.

I put this user property on the All Assets List Applet and ran a blank query again, everything worked fine.

Hope it helps !!
.

Tuesday, August 25, 2009

Refreshing a record in Siebel applet - Possible ways !!

Sometimes it happens you clicks on a button on an applet which is supposed to do some modification on the current record but you get an error saying : The selected record has been modified by another user. This happens when the same record has been updated into the database (by another user or some other process like Workflow, EAI etc) and system is trying to update the old context of record on the UI. So the better way to get the updated copy of the record by refreshing it and then do any modifications. But the bottom line is you should not loose the context of the current record, so if you are thinking of using ClearToQuery() and ExecuteQuery(), it will not solve the purpose here.

There are few possible ways by which you can refresh a record on the UI, without loosing the context of the current record, depending upon the requirement you can take the decision which one to use.

1. RefreshRecord : Business Component Method

This is a method available on Business Component which are derived from CSSBCBase class. Here is how you can use it, if writing code in PreInvokeMethod of applet :
if (MethodName == "MyMethod")
{
this.BusComp().InvokeMethod("RefreshRecord");
...............................................
}

This method will just refresh the highlighed record on the UI.

2. RefreshBusComp : Business Component Method

This is similar to RefreshRecord method available on Business Component which are derived from CSSBCBase class. The only difference is that it will refresh all the records in the current query context :

if (MethodName == "MyMethod")
{

this.BusComp().InvokeMethod("RefreshBusComp");
...............................................
}

3. FINS Teller UI Navigation : Business Service

Unlike RefreshRecord and RefreshBusComp, this business service can be used for refreshing any applet/buscomp, no matter which class it has been derived from. The method need to use is "RefreshCurrentApplet".
if(MethodName == "MyMethod")
{

TheApplication().GetService("FINS Teller UI Navigation").InvokeMethod("RefreshCurrentApplet", TheApplication().NewPropertySet(), TheApplication().NewPropertySet());

}


.


Friday, August 21, 2009

Automating Siebel SRF Full Compile process!!!

One of most boring and mechanical task for Siebel Administrators is to do a Full Compile of SRF from Siebel Tools connected to Server Siebel Repository and put it onto the Siebel Server whenever Development team ask to do so.

Here is atleast we can make a process in which Admin guy doesn't require to open Siebel Tools with Server database and do a Full Compile. This can be automated, just follow the below steps :

1. Copy paste the below lines of command into a text file and save it in .bat file lets say : FullCompile.bat

D:\Siebel\8.1\Tools_1\BIN\siebdev.exe /c D:\Siebel\8.1\Tools_1\bin\enu\siebel.cfg /d ServerDataSrc /u <_username> /p <_password> /bc "Siebel Repository" D:\Siebel\8.1\Client_1\OBJECTS\ENU\DailyFullCompileSRF.srf

exit

2. You can change the location of Siebel Tools / Client directory in the above command, as per your requirement. Also the Username and Password.

3. Create a Windows Scheduled Task to run this .bat file on the daily basis. I have set the time for scheduled task as everyday 7AM morning, and I see the newly compiled SRF ready once I reach office :) . SRF name : DailyFullCompileSRF.srf.

I am not sure whether this works in Unix env via creating a cron job, if somebody has tried that please share your experience.

.

Wednesday, August 19, 2009

Siebel LOV data mystery in 8.x !!!

I was working on one requirement in which there was a need to have two LOV record with same Display Values but different Language-Independent Code (LIC). If you have came across this kind of requirement earlier then you must be knowing that we can create two LOV records with same Display Value / LIC via providing some different value in "Sub Type" field. This is due to that fact that we have two indexes (User Keys) defined on "S_LST_OF_VAL" table, i.e. S_LST_OF_VAL_U1 & S_LST_OF_VAL_U2.

So, I went to "Application -> Administration - Data -> List of Values" view and tried creating the LOV records. Here is data I needed :





And here is what I got when I tried saving the second record.
Found another LOV record with the same display value but different language independent code 'First'. (SBL-SVC-52160)








Surprise !!!! I have specify the different Sub Type and still I am getting this error.

Now it seems that you cannot create two LOV records with the same Display Value. I checked it into metalink and found the same that you cannot do this if you are working in 8.x. I remember we used to create these kind of LOV records in 7.7 and 7.8. And the reason what Siebel says behind this behaviour is that LookupValue() and LookupName() function will return unique value.

Anyways, but this is what my requirement and I need to have these LOV records created, and as per the analysis I did with the user key indexes of S_LST_OF_VAL table, we can have it in database. So here below is way you can create the two LOV records with same Display Value :


"Instead of Copying the LOV record, if you create each record by clicking "New" button and specify different Sub Type then Siebel allows you to create." (May be a loophole what metalink says but this is how I created the two records)






I don't know why is behaving this way and this is what I observed. Anyways I got what I want to achieve. And this is FYI, when I used LookupName() function in Calc Field, it was returning the value of first record. i.e. LookupName("Test", "SiebelMantra") = First.

Your comments are welcome in case you see problem earlier and used some different workarounds.

.

Wednesday, August 12, 2009

How to do a SetFieldValue on a ReadOnly field on an Applet?

yaa... I know this sounds something interesting so please now stop scratching your head, today I will tell a unique trick by which you can do a SetFieldValue on a field on an applet which is actually displayed as ReadOnly on the UI. Let me reiterate : We want to change the value of a field which is ReadOnly on the Applet, NOT on Business Component. Special Thanks to Amol, my colleague, for bringing this up.

First of all : "Why we need this trick?". Sometimes it happen that for testing purpose Developers/QA people need to set a value in Field but if that is ReadOnly on the applet, what we generally do is just fire a SQL query in the database to set its value and do whatever we want OR you can write a small piece of code in Business Service and simulate it to just solve the purpose temporarily. Here below is a trick by which you can do this without much of effort.

Here below is the screenshot which displayes we have field : "Description" readonly on the UI. And the requirement is set its value to "SiebelMantra".

Here is the solution :
Just copy paste the below text into Address bar :
javascript: alert(theApplication().ActiveBusObject().GetBusComp("Action").SetFieldValue("Description", "SiebelMantra"))

I don't think to explain what we have typed in Address bar, if you already aware how to write browser scripts in Siebel. You can use it further as per your need. Try it !!

.

Thursday, July 30, 2009

Limitation in "PRM ANI Utility Service" business service

I was working on one requirement which I was trying to implement using Workflow, where I need to perform the following :
a) Query on Account using EAI Siebel Adapter
b) Get the contact name for the very first child under the accounts.

requirement sounds very simple, same the case with me and I thought of using PRM ANI Utility Service to achieve the purpose with the help of just two steps in the workflow. So here is how these two steps looks like :

Process Properties:
Step1 : Query AccountBusiness Service : EAI Siebel Adapter
Business Service Method : Query
Step2 : Get Contact IdBusiness Service : PRM ANI Utility Service
Business Service Method : GetProperty

As per my expectation, I didn't get the "First Name" into process property "Name", but instead I was getting the error :

Error invoking service 'PRM ANI Utility Service', method 'GetProperty' at step 'Get Contact Id'.(SBL-BPR-00162)--Error Running Method 'Execute'.(SBL-PRM-00104)

I was getting crazy as not able to figure it out what exactly the root cause of it, but after some hit and trials it worked fine for me when there was only one single child record (Contact) under the Account for which I was querying. So let me tell you the reason why I was getting the error :



This is the snapshot from the watch window, where you can see there were actually 3 records under the accounts for which I was querying and due to this PRM ANI Utility Service was not able to figure it out for which record I need the First Name. So this is the limitation of this business service and you need to make sure while using "GetProperty" and "SetProperty" of this business service that there should not be more than one child in the propertyset.

I tried with querying for the Account having single Contact associated and it worked fine. So the only workaround is to write a customize business service if you want to get/set a property value of any child record.
Give it a try !!
.

How to call "Asynchronous Server Requests" business Service?

Sometimes there is a requirement we need to run few processes that should not stop the user on the screen to go further and do next steps when Siebel is processing something in the background. That is the place when Asychronous processes come into the picture and the solution that Siebel provides for these kind of scenarios is to give a call to "Asynchronous Server Requests" business service.

There are only two ways (that I know my past experience, please add if anyone know more) by which you can call "Asychronous Server Requests" Business Service :

a) Via e-Script : easy way to do that and most people know this.
b) Via Workflow : this is bit tricky
Lets see each one of them in detail. Taken an assumption that you need to invoke a workflow (asynchronously). Assume the workflow name is "Send Email Opportunity Sales Rep", which just sends an email to the Sales Person on the Opportunity and the Input Agrument to the workflow is : "OpptyId" (1-XR45)

Via e-Script :
Here is the piece of code that you can to achieve the above requirement :
var svc = TheApplication().GetService("Asynchronous Server Requests")
var input = TheApplication().NewPropertySet();
var child = TheApplication().NewPropertySet();
var output = TheApplication().NewPropertySet();
input.SetProperty("Component", "WfProcMgr");
child.SetProperty("ProcessName", "Send Email Opportunity Sales Rep");
child.SetProperty("OpptyId", "1-XR45");
input.AddChild(child);
svc.InvokeMethod("SubmitRequest", input, output);
very simple, isn't it. We just need to make sure that the Input Argument of the calling Workflow (Send Email Opportunity Sales Rep) should be the properties of the Child Property Set.

Via Workflow :
Here is the example below in which I have used this and you can accomodate the below two steps in any of the workflow you are using :

Process Properties :
Name : Inputs
Type : Hierarchy

Step1: Set Input Arguments
Business Service : Workflow Utilities
Business Service Method : echo


Step2: Call Asynchronous Service
Business Service : Asynchronous Server Requests
Business Service Method : SubmitRequest


Thats it, you are done. Just to add it here, I tried doing the same stuff with the help of runtime events but it is limitation there and we cannot do that.

.

Friday, July 24, 2009

How to Pass arguments between Workflow & Customize Business Service?

Generally what happens is whenever we create any Customize Business Service, we rarely create "Methods" for it under "Siebel Tools -> Object Explorer-> Business Service -> Business Service Method". What we do is we directly start coding in "Service_PreInvokeMethod" like :
Today I am going to tell you how we can pass arguments of type "String" and "Hierarchy" in the call to Customized Business Service (which don't have any methods specified in "Business Service Method" also don't have any Input/Output arguments specified). If you have worked on the similar requirement earlier, you might be knowing the trick here but for the new people this might be useful.

Lets take the "String" arguments first :


Assuming a requirement to create a workflow where we need to call a customized business service which contains the complex logic and return back the Service Request's status. Please cosider this a requirement for an example here.

Input to Customized Business Service : Service Request Number
Output from Customized Business Service : Status

Here is the Workflow :

So, this seems very simple, right, whatever the "property name" I am setting in the Business Service, the same name should be used in the "Output Argument" of the step.

Lets see what extra need to do in case you are passing a Hierarchy as Input/Output arguments.

Workflow Requirement :
1. Query via EAI Siebel Adapter to get the SiebelMessage for Service Request Number.
2. Pass the Siebel Message as Input Argument to Customized Business Service to update something in it.
3. Get the updated Siebel Message as Output from Customized Business Service.
4. Update the Service Request via EAI Siebel Adapter.


Here is the workflow :


I think you need to try it out at your end to actually understand the trick here. Check it out !!

.

Thursday, July 23, 2009

Apply / Activate make Siebel Tools hang ??

Something strange happened with me today and it seems to be a issue with the Siebel Tools that whenever I tried "Apply/Activate" a table into my Siebel Local Database, Tools gets hanged. Frustration !!! I can not continue with my work as I need to add a new field into the business component and see it on the UI.

Checked the support web for this kind of behaviour and found that during "Apply/Activate" Siebel create a table with name "D_U_M_M_Y" into the local database and we need to drop that table from local database before doing any more "Apply/Activate".

I tried connecting to the Local Database via DBISQLC and ran the below query :
select * from siebel.D_U_M_M_Y

but I got the error saying "Table siebel.D_U_M_M_Y not found".
So not able to find the correct resolution as of now.

So, the only workaround I can think of is applying the physical database changes manually. Here is below I did:

1. I need to add one column in S_EVT_ACT_X table of Varchar2(15 Char).
2. Added the column in Siebel Tools under S_EVT_ACT_X table.
3. Ran the following command in DBISQLC (after connecting to the local database) :

alter table S_EVT_ACT_X
add NEWCOLUMN VARCHAR(15)

This way I achieved what I was trying to do. There is something more of it I would like to tell you here which might be useful in case you want to apply/activate a complete new customized table.

Consider a scenario, one of your colleague (Siebel Developer) has created a new Customized table for some requirement and put in his changes into the Siebel Database and now you to have that table available into your local database as well. You can "GET" the project to see the logical schema for the table into the Local Database but the problem is "Apply/Activate" is not working. So here is one workaround I can suggest :

1. Get the DDL for the table via connecting Oracle SQL Developer or TOAD or any other database client you use.
2. Open DBISQLC and run the "Create Table" command (some modifications needs to apply before running the query)


Here below is the example that might be helpful for the modifications required :
I got the below DDL for one of the table :

CREATE TABLE "SIEBEL"."CX_NEW_TABLE"
( "ROW_ID" VARCHAR2(15 CHAR) NOT NULL ENABLE,
"CREATED" DATE DEFAULT sysdate NOT NULL ENABLE,
"CREATED_BY" VARCHAR2(15 CHAR) NOT NULL ENABLE,
"LAST_UPD" DATE DEFAULT sysdate NOT NULL ENABLE,
"LAST_UPD_BY" VARCHAR2(15 CHAR) NOT NULL ENABLE,
"MODIFICATION_NUM" NUMBER(10,0) DEFAULT 0 NOT NULL ENABLE,
"CONFLICT_ID" VARCHAR2(15 CHAR) DEFAULT '0' NOT NULL ENABLE,
"NEWCOLUMN1" DATE, "NEWCOLUMN2" CHAR(1 CHAR),
"NEWCOLUMN3" VARCHAR2(250 CHAR),
"NEWCOLUMN4" VARCHAR2(50 CHAR),
)


but if you try running this query directly into DBISQLX you might get errors. So below are the changes required :

a) Replace VARCHAR2(15 Char) to VARCHAR(15)
b) Replace CHAR(1 CHAR) to CHAR
c) Replace Number(10,0) to Integer
d) Replace sysdate to getdate()
e) Remove "Enable" from the query.

Finally the new query will look like :

CREATE TABLE "SIEBEL"."CX_NEW_TABLE"
( "ROW_ID" varchar(15) NOT NULL,
"CREATED" DATE DEFAULT getdate() NOT NULL,
"CREATED_BY" varchar(15) NOT NULL ,
"LAST_UPD" DATE DEFAULT getdate() NOT NULL ,
"LAST_UPD_BY" varchar(15) NOT NULL ,
"MODIFICATION_NUM" Integer DEFAULT 0 NOT NULL ,
"CONFLICT_ID" varchar(15) DEFAULT '0' NOT NULL,
"NEW COLUMN 1" DATE, "NEW COLUMN 2" CHARACTER,
"NEW COLUMN 3" varchar(250),
"NEW COLUMN 4" varchar(50),
)


After making all the changes mentioned above run the query in DBISQLC and it works fine.
As I already mentioned this is just a workaround that I can think of, if you have some better idea for this, please let me know as well :). Your comments are most welcome !!
.

Tuesday, July 21, 2009

"Invalid or Missing Encryption Key" error ??

This is the error you might see if you are working on Siebel 8.0 or higher and trying connecting to the Local Database via System DSN or DBISQLC.

After the launch of Siebel version 8.0 the local database is now encrypted, if you have not provided some specific parameters while Local Database Extract.

The point to be noted here you can successfully login into the Siebel Tools / Client using the same local database without any issues. But you cannot, if want to play with it via backend. Sounds strange but this is how it actually works.

The only solution that I found is to specify few extra parameters apart from what we generally specify during the Local Database Extract and after that it worked fine. So here is the complete list of Parameters that you can use while database extract to avoid this kind of error.

1. Navigate to "Administration-Server Management -> Jobs".
2. Create new record with "Component/Job" = "Database Extract".
3. Under Job Parameters, add the following :

a) Client Database encryption method = None
b) Client Name = "Your Login Name"
c) Database Init Method = Sql Anywhere
d) Database template file name = sse_utf8.dbf
e) Encrypt client Db password = False
f) Extract all Repository Tables = False

4. Click on Submit Job.
5. Once completed, rename the "sse_data.dbf" in "SiebelSrvr/Tools/Local" folder and connect to the Local database again to initialize the local database again.
6. Do a "Full-Get" to get all the necessary repository objects.
7. Try connecting to the Local Database via System DSN or DBISQLC, it should work fine. Make sure you use the Username and password in CAPS.

Hope it helps !!!!

Saturday, July 18, 2009

How to Change the Oracle/Siebel Logo in Client application?

Whenever you do a fresh Siebel Implementation, your client (for whom you are developing the application) may ask to change the Siebel/Oracle Logo displayed on the upper right corner in the application. Well, everybody wants to flaunt the name :)


Alright then, lets see how we can do that.

1. Open the client cfg file to check which application you are using. You can find "ApplicationName" parameter under [Siebel] section. I am using "Siebel Financial Services".
2. Go to Siebel Tools -> Object Explorer -> Application, query for your application name.
3. Scroll to right side to the view and you will see Container Web Page. I can see the value : "FINS Container Page".
4. Copy the container web page name and query in Object Explorer->Web Page. Scroll to right to see the Web Template name it is using. I can see : "FINS Page Container"
5. Copy the web template name and query in Object Explorer->Web Template. Click on the plus (+) sign to open the "Web Template File" and check for the File Name. I can see : "FINSPageContainer.swt"
6. So, now you know the SWT file which is actually responsible for giving you a layout what you see when Siebel client opens.
7. Go to \Client\WebTempl folder and search for the SWT file and open it.
8. You will find various sections inside it and the same set of SWT files is getting repeated again and again. The SWT file responsible for rendering the Logo is banner swt which is "CCFrameBanner.swt".
9. Go to \Client\WebTempl folder and search for the CCFrameBanner.swt file and open it.
10. Search for "www", you may find "
www.oracle.com" OR "www.siebel.com" depending upon which Siebel version you are using. This is the URL that get invoked once you click on Logo in the application. It has been changed to "www.oracle.com" after Oracle bought Siebel.
11. You will see the Image Name = "POWERED_BY" and Category = "HTML Control Icons", this is actually the name of Bitmap and Bitmap Category respectively.
12. So, navigate to Object "Explorer->Bitmap Category" and query for "HTML Control Icons", expand the bitmap category to see Bitmaps and query for "POWERED_BY".
13. And finally you can see the file which is being displayed as the Logo. I can see the filename as "ebus.gif". So this is the file that I need to replace with the file which contains my logo.
14. You can find this file in "\Client\PUBLIC\enu\IMAGES". Just change the file name to something else to keep the backup and put your new file as "ebus.gif".

hhhhooooo.... finally you are done. Just refresh the screen or restart the session after deleting all cookies and you will see your desired logo on the UI.


ENjoyyyy !!!

Thursday, July 9, 2009

"Page Cannot be displayed" in Siebel Tools ??

We generally see this error message in Internet Explorer when somehow IE is not able to connect to the URL that user is trying to access. But today when I just see this message in Siebel Tools, it was really a surprise for me as this is something new I am seeing for the first time.

Let me tell you what exactly I was trying to do : I just wanted to place a new Control on "Contact Form Applet". So queried for "Contact Form Applet" and right clicked and select "Edit Web Layout". What generally we see is the new window being opened in the right side with form layout of the applet where all the controls is displayed and we can change their position or add new. But this was not the case with me and I can see "Page Cannot be displayed" message in that window.

Amol Tandon (one of my colleague) found the reason for it. This happens when "WebClientSiteDir" parameter in Tool's CFG is not pointing to the correct path. You can see this parameter in Tool's CFG :

WebClientSiteDir = C:\Siebel\8.1\Tools_1\public\enu

The reason I was getting this error, I got the Siebel installed in "D Drive" and used the old Tools cfg and forget to change the C: to D: everywhere in the CFG.

So just change the parameter and everything worked fine.

WebClientSiteDir = D:\Siebel\8.1\Tools_1\public\enu

.

Monday, June 29, 2009

Getting hard time opening DBISQLC ?

Whenever you need to run a query in your Siebel Local database, sometimes it feels bad as we need to follow the below steps everytime :

1. Navigate to SiebSrvr/Bin folder.
2. Open DBISQLC
3. Need to fill in the followig fields in Connection window :
a) Under Login Tab: fill in User Id and Password (in CAPS)
b) Under Database Tab : Click on Browse and locate the SSE_DATA.dbf file.
4. Click on "Ok".

hhmmmm, following the above steps everytime is not a good choice, isn't it?

okayyy.. lets automate this and try to open dbisqlc in just a button click, sounds good !! I know :)

Here are the steps : (taking the assumption Siebel is installed in "E:\Siebel\8.1\Client", "E:\Siebel\8.1\Tools")

1. Create a new batch file (for eg: "mydbisqlc.bat") on the desktop.
2. Copy paste the below lines of text in it.
cd E:\Siebel\8.1\Client_1\BIN
e:
dbisqlc -c
userid=SIEBELMANTRA;password=MYPASSWORD;databasefile=E:\Siebel\8.1\Tools_1\LOCAL\sse_data.dbf

.........................Note : Please change your user name and password in the above command.

3. Save the file on Desktop for keep it handy.
4. Double click on it and enjoy.

I know you must be smiling now after getting this cool tip !!!!
Check it out !!!!!!
.

Thursday, June 25, 2009

Vanilla Views not visible in Local Dedicated Client

One of my colleague got his new Local database extracted and when he tried connecting to the Local Database via dedicated client, found that lot many views are not visible on the UI. Just to double check, he also confirmed from one another colleague who also got his new database and same problem was there with his dedciated client as well.

Now few more things I asked him to confirm :

1. Connect to Thin-Client and check whether the views are visible : Yes, views are visible in the thin-client.

2. Connect to Server Database via dedicated client and check whether the views are visible. Yes, views are visible via Server dedicated client.

This problem occurs when : "User is possessing any one of the responsibility associated with the view and having "Local Access" flag unchecked."

Solution :
Being a developer, you should have access to all the views, so better to have visibility for all the views instead of findings specific views which are not visible and fixing those.

1. Open "DBISQLC.exe" and connect to the Local Database.
2. Run the following command :
a) update siebel.S_APP_VIEW_RESP
set LOCAL_ACCESS_FLG = 'Y'

b) Commit


3. Restart the dedicated session and you should see all the views on the UI.

Hope this helps.

.

Monday, June 22, 2009

SBL-DBX-00083: Unable to start due to incorrect system preference setting

No Parameter has been changed on the Siebel Server and no settings has been touched and suddenly this error started coming while running "Database Extract" component. So the way everybody's next step is to search for "SBL-DBX-00083" in Metalink, I also tried the same thing and very easily got to know that the solution for this problem can achieved by following the below steps :

a) Go to "Administration - Application -> System Preferences"
b) Query for : "Docking: Transaction Logging" parameter and change the value to "True"
c) Restart the Siebel Server
d) Restart the "Transaction Processor" component.

You must be thinking when the resolution is already available in Metalink, then why I am explaining that here..... :), because there is something new I observed.

Let me tell you what exactly happened and I think you might be interested in reading that. When I went to "Administration-Application -> System Preferences" view and queried for "Docking: Transaction Logging" parameter, I found none.
So I thought it might not be there (just a guess), finally I decided to create a new one with the value "TRUE". Hope I am going into the right direction as I was just following what is written in Metalink. After that restarted the Siebel Server and want to check if "Transaction Processor" component was running, but it wasn't. So I just restarted it, but I saw that the "Transaction Manager" has again got errored out with the error : "SBL-TXP-00011: Unable to Start the APIs". hmmmmm... I haven't got rid of one error and I found another one. This is what Siebel world is :)

Again went to the Support Web to check for the resolution and this is something strange now. The resolution for this error is also the same that I need to have "Docking: Transaction Logging" parameter to "TRUE". But I have already created that one, right?

I am not sure what is going on? Why Siebel is not accepting the parameter value that I have just mentioned under System Preferences view?

Idea came into my mind and here below is what it was :

a) Go to Adminitration-Application -> System Preferences view.
b) Do a "About View" to check for the Business Component Name. It was "System Preferences".
c) Go to Siebel Tools, check for the table name. It was "S_SYS_PREF".
d) Run the below query :
Select * from siebel.s_sys_pref
where sys_pref_cd like 'Dock%'
I got surprised, when I saw two records returned with the following names :

a) Docking:Transaction Logging with Value = "FALSE"
b) Docking: Transaction Logging with Value = "TRUE"

Can you observe the difference in the name of the parameters above two. Second one have a space after "Docking: ".

That means the parameter was already existing but not displayed on the UI and by mistake I have created a new one. So I deleted the one I created from UI and changed the value for the exiting one from backend like this :
update siebel.S_SYS_PREF
set val = 'TRUE'
where sys_pref_cd like 'Dock%'

restarted the Siebel Server and found that Transaction Processor is also running fine. Tried with a new Database Extract again and it went fine.

Be careful from now on, it may happen with you as well. If something is not available on the UI, that doesn't mean it is not available in the database. :)

Full Compilation of Vanilla Respository Errors out

Sound strange, isn't it !!!

If I would say that I have just done the new Local Database Extract from fresh Vanilla Repository being setup for the new Env, and its full compilation is erroring out, nobody will agree to this. I am using Siebel 8.1 version.

To replicate it, follow the steps :

1. Create a job for "Database Extract" with the following parameters :
Client Name = LoginName
Extract all Repository Tables = TRUE

2. Re-initialize the Local Database.
a) Rename "sse_data.dbf" file in <_toolsdir>/Local folder to some another name.
b) Connect to Siebel Tools and click "Yes", when asked for initializing new database.

3. Do a Full Compile.

The error I got was :
Script compilation failed at line 25 in procedure 'Execute':
Syntax error at Line 25 position 1:Expected '}'
(SBL-SCR-00128)
Let me tell you the possible reason for this. If you have observed the parameter name : "Extract all Repository Tables " has been set to TRUE while database extract, what it does is, loads the local respository file (sse_data.dbf) with all the repository contents and saves the developer time as he doesn't require to do a "Full Get" once database get initialized. I used to use this parameter often but seems like due to this parameter some junk script is getting extracted into the local database due to which Full Compilation is failing.

So, I just changed its value to "False", extracted the database and then initialized the new database and done a Full Get. After that I tried Full Compilation again. Everthing worked fine now.

Thursday, June 18, 2009

Error while Siebel Local Database Initialization

Today, I tried intializing the Siebel local database for my Siebel Tools, but everytime getting the error :

Cannot open connection to <_siebelserverhostname>::5047. The Synch Manager component on the server is most likely unavailable.
The connection was refused by server . No component is listening on port 5047.


It seems to happen due to the following reason :

a) Either "Synchronization Manager" component is not running.
b) Siebel Tool's CFG file doesn't contain the correct Sync Port Number.

Alright, lets check it out where the problem lies.

Go to "Administration - Server Management -> Enterprises" and select the Siebel Server on which "Synchronization Manager" component is enabled. And I found that the component was running fine.

Now the next step is to check for the Sync Port Number. As it is already mentioned in the error that there is no listener on port 5047, that means Siebel Tool's CFG is requesting on port 5047 for synchronization. To confirm whether it is correct or not, follow the below steps :

a) Go to "Administration - Server Configuration -> Enterprises -> Component Definitions" view and query for "Synchronization Manager" component.

b) Under the Component Parameters applet, query for "Static Port Number" and check for the value.

To my surprise, I found that the port number was 5048. I think I got the resolution of the problem.

To correct the sync port number in Siebel Tool's CFG, go to "[Local]" section in the CFG and change the value for "DockConnString" parameter with the updated sync port number.

Old Parameter
DockConnString = <_siebelserverhostname>::5047

New Parameter
DockConnString = <_siebelserverhostname>::5048

Again tried initializing the local database and everything worked fine.

Hope this helps !!


Friday, May 29, 2009

Component/Job not visible in Server Administration applet

Today we got the new Siebel 8.1 Env to work on, being set-up by our Admin team. Everything is new because the fresh implementation has just kicked-off and the new team of developers required to get their Database Extract.

So, as per the normal process, I went to "Administration - Server Management -> Jobs" view to start a job for "Generate New Database". I clicked on "New" and tried opening the "Pick Applet" which is available on "Component/Job" field on the Jobs applet and got suprise to see that no "Component" was available in the pick applet.

hmmm.... first thing came into my mind was : "Any component is running on this Siebel Server?". Well to check it, I went to "Administration - Server Configuration -> Enterprises -> Component Groups", queried for "Siebel Remote" and found that all the components was enable on the Siebel Server. So no issues from components side.

After some of the discussion I came to know about the issue and let me know how I resolved it. I went to "Component Definitions" view and clicked on "Synchronize" button. It sometime for the hour-glass to go-off and then I again tried created a job for "Generate New Database" and all the components are now displaying in the pick applet.

Advice for "Admin People", please click on synchronize button after setting up the new Siebel Env :)

Saturday, May 9, 2009

Debugging Email Issue : Mail Profile Parameter

One of my friend called me up this morning and said somehow emails stop working in Production Env. And when I asked about the issue in detail, he told me that any of the email via Workflow Policy is not going, he tried lot many times but none of the user has received any of the email but if use F9 functionality, email was firing properly.

hmmmmm !!! Okayy... not a problem, lets start the debugging and lets see where exactly the issue exist.

1. Since F9 functionality is working that means Siebel Server is successfully creating an SMTP request using the Communication Profile (that we generally used in Production Env).

2. Do some operation, so that Workflow Policy gets trigger.

3. Checked whether policy gets trigger or not, using the below SQL statement :

select * from s_escl_req
where rule_id = "Policy Row Id"

record was existing in the table and checked the BT_ROW_ID column has the rowid of the record for which policy triggered.

4. Lets wait for 1 min, (generally 1 min is the sleeping time of all monitor agents) and lets see whether it is getting processed by monitor agent or not.

5. Yes, after around 1 min, the record gets deleted from S_ESCL_REQ and a new record gets created in S_APSRVR_REQ table for sending an email to the user with status "Queued".

6. Uptill now everything seems working fine and now Email Manager should pick this request from S_APSRVR_REQ table and should send an email. Lets wait for 1 min more.

7. Ooops... record is still existing in S_APSRVR_REQ table with the status "Queued". That means Email Manager has some issue and it is not picking the request from this table. Okayy.. now lets see what Mr. Email Manager is doing right now [may be on vacation :) ]

8. Navigate to "Administration -> Server Management -> Enterprises". Query for "Email Manager" and found that it was there and the status was online. It seems working, drilldown on it and navigated to "Tasks" view and no error log was being generated for it. But since it is running then it should process the record in S_APSRVR_REQ table. And one more point is we are successfully sending emails via F9 functionality.

9. Okayy, now lets check which email communication profile this "Email Manager" is using.

10. Navigate to "Administration - Server Configuration -> Enterprises -> Component Definitions". Query for "Email Manager". Query for "Mail Profile" under Parameters list.

11. And yes, we found something strange. "Profile Name" was somehow blank. Don't know the reason but since it is not having Communication Profile mentioned to process the request, it is not doing its job perfectly.

12. Put the same communication profile name which we were using for F9 functionality. Restart the Siebel Server and found all emails which got stuck in "Queued" status in S_APSRVR_REQ table, has successfully processed and has the status "Success" now.

So finally, issue get resolved.

Wednesday, May 6, 2009

Debugging Siebel Workflow Process at Runtime

Sometimes it happens that you perform some operation, which needs to trigger a workflow process (synchronous / asynchronous) and you realised that it has not performed as per the expectation and want to see what exactly it has done. Workflow is a collection of some steps which gets executed sequentially, so you might need to track what it has done in each step and in which step some problem has occured.

Siebel provides a way to debug a already deployed workflow at the runtime and its very easy as you can do it in web client itself. What you need to do is :
1. Navigate to "Administration-Business Process -> Workflow Deployment -> Active Workflow Processes" view.
2. Query for the Workflow Process in the bottom applet.
3. Change the "Monitoring - Level" for the workflow process to "4 - Debug".
4. Now go and perform the same action again which will trigger this workflow.
5. If it again errored out or not performed as per the expectation and you want to track it execution step by step, navigate to : "Administration-Business Process -> Workflow Instance Monitor" view.
6. Query for the Workflow Process in upper applet. System will show all the instances executed for that workflow in the bottom applet. Sort the instances via "Start Date" descending.
7. Navigate to "Step Instances" view.
8. Now you can see, what all process properties were in each step of the workflow and make out what went wrong.
Isn't easy to have any workflow running in Debug mode at the runtime?

Hope this helps.

.

Saturday, May 2, 2009

Siebel CFG Parameter : AutoStopDB

Everytime I close the Siebel Tools, I wonder that the Siebel Anywhere database engine (dbeng.exe) keep running in the Task Manager and sometimes it happens that it keeps consuming lot much of system memory, so I use to go to Task Manager and kill the process.

But again the question is, when I don't want to keep the Siebel Tools running anymore, why Database Engine keeps running?

So, here is the answer :
Siebel provides a CFG parameter (both in Client's and Tools's CFG file) under [Local] / [Sample] Section, name is "AutoStopDB" with the default value as "FALSE".
The "False" value of the parameter signifies that the Siebel Anywhere DB engine keeps running if you close the Client / Tools instance. As per the recommendation it should be "FALSE", in case you mostly connect to the same Database via Client and Tools, so that next you open the new instance of Client or Tools, system should not take time to connect to the database again.

So, depending upon the requirement, you can make it TRUE or FALSE. I change it to TRUE, coz I always use to connect to Local DB via Siebel Tools and to Server via Client.

Tuesday, April 28, 2009

FirstRecord() in PreCanInvoke Event : Refresh Issue

Today I am going to tell you about an interesting issue that we faced in our Production Env and really worked hard to figure it out the root cause for it.


The issue was :

On Activity Form applet, we have "Comments" field, which is 2000 characters long and user to write a detail description in this field related to that activity record. Now few of the users faced the issue that "while typing some text in Comments field, suddenly the whole text written get deleted and Comments field become blank". User get frustrated as he need to type in the whole text again and also the next time not sure whether he will able to complete putting text in Comments field or not. For a temporary workaround they used to first type in all the text in a NotePad file and then copy paste the complete text at once in Comments field and save the record.

What we tried :

When we tried replicating this issue in our dedicated env, we were unable to replicate it. After lot much of effort our QA Team was able to replicate it sometimes on our thin client. But the problem was this is not always happening with them as well. On some of the machines we were not able to replicate it at all. Totally a random behaviour.

Now the problem was to find out the steps so that we can replicate it. We have one option to try i.e. by disabling all the Server Script and check if we can replicate the issue in thin client (since in dedicated client everything was working fine).

We changed the "EnableScripting" = False and restart the Siebel server, and found that the issue is not coming anymore. So we narrowed down for the root cause of the problem to Scripting.


And, here is what we finally found :

On PreCanInvoke method of the applet we had a script written, something like :


if (MethodName == "Test")
{
if(this.BusComp().FirstRecord())
CanInvoke = "True";
return (CancelOperation);
}


So, what was happening when user was typing some text in Comments field, it seems like IE web page get refreshed and due to this the code written on "PreCanInvoke" method was getting invoked and due to the "FirstRecord()" method used inside the code, the current record get refreshed and resulting in no text in Comments field.

Finally, we were able to find the root cause of the problem, now its the time to look for some workaround. So we decided not to enable/disable button using PreCavInvoke script, rather put a check message in PreInvoke method when there is no record displayed. So here below is final version of script we used :

PreCanInvoke Method

if (MethodName == "Test")
{

CanInvoke = "True";
return (CancelOperation);

}


PreInvoke Method :

if(MethodName == "Test")
{
if(this.BusComp().FirstRecord())
{
TheApplication().RaiseErrorText("This operation is not valid, when record is not displayed");

}
return (CancelOperation);
}


Recommendation:
Avoid writing scripting on PreCanInvoke Method of Applet, as this is the event which fires on each and every action we do on the applet + at the time of automatic refresh of web page.

Sunday, April 26, 2009

Scheduling Automatic Export in Siebel

List applets provide the OOB export functionality which is very useful sometimes when Managers want to do some analysis depending on various combinations and permutations on the live data very quickly. But if you need to do the same task on the daily basis, you will think, can't I get the export automatically from Siebel via email instead of I go to the list applet and take the export. The same happened with my client too. He want to automate this export process that he generally does on the daily basis from All Service Requests List Applet.

Lets see how this is achievable :

On the very high level, the solution is to :
  1. Create a Workflow which can take the Export and send it in an email to the user.
  2. Create a RCR (Repeating Component Request) which will get executed on the daily basis and run a workflow.

Workflow Creation:


Here below are major steps that used in Workflow to acheive the solution.

  • Query Service Request
    Business Service Name = Import/Export
    Business Service Method = Export
    Input arguments for this step are as follows :

    ==> FileName : "<_filename.xls>" (for eg: /temp/export.xls). Please make sure you should provide the extension as .xls

    ==> FileType: XML

    ==> IntObjectName : Service Request (this is the IO that I have created which has only one Integration Component i.e. Service Request). You can also use the OOB available IO for this purpose, if fits into the requirement.


  • Send Email
    Business Service Name : Outbound Communications Manager
    Business Service Method Name : SendMessage
    Input arguments for this step are as follows :

    ==> MsgToList : "<_youremailaddress>"

    ==> CommProfile : "<_communicationprofilename>". if you want to know, how to setup a Communication Profile, please refer to :
    http://siebelmantra.blogspot.com/2009/04/how-to-setup-communication-profile-for.html

    ==> MsgSubject : Export from Siebel

    ==> MsgBody : This is the test export from Siebel

    ==> AttachFileList : <_filename.xls>. (for eg: /temp/export.xls).

Workflow is ready, Publish and Activate it and simulate it on the Server to check if running fine.

RCR (Repeating Component Request) Creation :

Here below are the steps for creating the RCR job and let the Workflow run on the daily basis.

  • Navigate to "Administration-Management -> Jobs" view.
  • Click on "New" and select "Component/Job" = "Workflow Process Manager".
  • Under Repeating Info section, select the following :
  • Under Job Parameters applet, create a new select with the following info :
    Workflow Process Name : <_name>
  • Click on "Submit Job"

And you are done with the complete process. Siebel will automatically take the export and send you the file on the daily basis.

Enjoy !!!!


Friday, April 24, 2009

How to setup a Communication Profile for sending email from Siebel ?

I was working on our Sandbox Env, that we have newly setup for some R&D purpose, and got the requirement to send an email from Siebel via F9 functionality. Since it is a new env, nothing has been setup on that from administration standpoint, so I need to start from the scratch to setup a communication profile. So let me tell you today what all you to do for this :

  1. Navigate to "Administration - Communications -> Communication Profiles & Drivers" view.
  2. Query for "Internet SMTP/POP3 Server" under Communications Drivers applet.
  3. Create a new Profile. Lets say "Test Email Profile".
  4. Under Profile Parameter Overrides applet, add the following parameters :
    ==> From Address : Any Email Address (Generally it should be Siebel Email box Id )
    ==> SMTP Server : Name of the SMTP Server which will send the email.
    ==> SMTP Server Port : 25
  5. Click on "Menu" button on "Profiles" applet and click on "Submit Profile Changes".
  6. Uptill this point you are ready to use this communication profile but before this need to check whether Server Component, responsible for executing the email request are running properly or not. So continue with the next step.
  7. Navigate to "Administration-Configuration -> Enterprises -> Component Groups" and query for "Communications Management" under component groups applet and then query for "Communications Outbound Manager" component under "Components" applet. This is the component which is responsible for sending outgoing emails from Siebel.
  8. Check if "Enabled on Server" flag is checked under "Component Group Assignments" applet. If not click on "Enable" button.
  9. Navigate to "Administration-Configuration -> Enterprises -> Component Definitions" and query for "Communications Outbound Manager".
  10. Set the following two parameters to "Test Email Profile" (Communication profile created in Step# 3)
    ==> Comm Profile Override
    ==> Communication Profile
  11. Click on "Synchronize" button.
  12. Now restart the Siebel server.
  13. Navigate to Tools -> User Preferences -> Outbound Communications view and select "Siebel Email Client" in Email Client. Click on Save.


And you are done with the profile creation and hopefully it should work fine. Lets test it out.

Navigate to Service Request Screen -> My Service Requests view, Click F9 and system will give you the Popup form to send an email. Put your email address in "To" section and fill in the subject and body as per your wish and send it.

Check your Inbox, you will see the email in few minutes. Also drilldown on SR# field and navigate to "Activities" view, you will an activity of type "Email - Outbound" and the contents of the email in Comments field. This is Siebel OOB functionality of creating activity under Service Request whenever you send an email from Service Request record.

Troubleshooting :

Let me tell you about the error which is most likely to occur while sending emails from Siebel once you have setup a new Communication Profile. What happens is you followed above steps and still not received any email. Go to "Administration-Management" Drilldown on Component "Communications Oubound Manager" and check the log. You may see the error : "Client does not have permission to submit mail to this server".
This error most likely occur when there exist a firewall between your Siebel server and SMTP server, so what happens is Siebel Server is not able to create any email request on the SMTP server. Just talk to your network administrator and get the name of SMTP server without any firewall. It will work.

Hope this helps !!!!!