June 28, 2013

Salesforce.com and Oracle Announce New Strategic Partnership - WTH?

Salesforce.com [NYSE:CRM] and Oracle [NASDAQ:ORCL] announced today a comprehensive nine-year partnership encompassing all three tiers of cloud computing: Applications, Platform and Infrastructure.

“We are looking forward to working with salesforce.com to integrate our cloud with theirs,” said Larry Ellison, CEO, Oracle

print from http://www.oracle.com/us/corporate/press/1964798

Salesforce.com plans to standardize on the Oracle Linux operating system, Exadata engineered systems, the Oracle Database, and Java Middleware Platform

Don't you guys are already running on OEL? It was declared since birth of salesforce that it runs on Oracle databases and have support licenses from Oracle, what has changed now?   

Oracle plans to integrate salesforce.com with Oracle’s Fusion HCM and Financial Cloud, and provide the core technology to power salesforce.com's applications and platform. Salesforce.com will also implement Oracle’s Fusion HCM and Financial cloud applications throughout the company. - 
Why would competitors will agree to use opposition's technology behind the scenes, it just makes one sense, Oracle has just added another cloud CRM to his CRM suite which is already overflowing with Siebel, Peoplesoft, Fusion and some cloud based CRM OD and Fusion cloud applications.

 Seems to me like coverup for Larry Ellison's next acquisition, he just can't tolerate any competitor in his area.

Makes me wonder how much he would have spent on this? any ideas?

This operation is not available for read only field 'Template'.(SBL-DAT-00402)

This operation is not available for read only field 'Template'.(SBL-DAT-00402)

This is one of most common error of every siebel implementation.Usually this error is followed by :
Cannot set a value for field %1 because it is not active. (SBL-EXL-00147)
The first thing which we tend to do is to set the force active property of field to true and recompile and end up getting this error in logs:

(omextlng.cpp (4682)) SBL-DAT-00402: This operation is not available for read only field 'Template'.

In my case I tried several things but couldn't pass through this error, until I noticed provided whereIndicator in New Record Command. Once I made this change both the error were resolved.

var ap = bo.GetBusComp("Activity Plan");

ap.InvokeMethod("SetAdminMode", "Y");



Using where indicator is only one of the reason for SBL-DAT-00402 error. Please share your experiences if this helps.

Date manipulation in Siebel Workflows - Contd

In continuation of Incrementing date in workflows.
See latest post on Date functions Siebel eScript

This article explains how to compare two dates type process property in Siebel Workflows.

Everything seems to work as expected, the only point is to make sure you have set the property type of the property holding date as "Date"

To add number of days to a date: [&Date] +30
To subtract number of days from a date : [&Date] - 4
To find if date is passed: [&Date] < Today()
To find if date is future date: [&Date] > Today()
To Add 1 Sec to a date: [&Date] + (1/(24*60*60))

Comparing Date in Siebel Workflow Expression
Comparing Date in Siebel Workflow Expression

Julian days also seems to work perfectly in Siebel Workflow Expression.

To get current Julian month use: JulianMonth(Today())
To get Julian Year: JulianYear(Today())
To get Julian Week: JulianWeek(Today())

Julian Month in Siebel Workflow Expression
Julian Month in Siebel Workflow Expression
Siebel Workflow Process Output
Workflow Process Output
Today(): returns current system date without timestamp.
Timestamp(): returns date with time stamp


June 24, 2013

How to increment date in Siebel workflows?

It is supposed to be the one of the toughest task in e-script is to handle date fields and manipulate the data. Recently I learned it is fairly simple to manipulate the date values in Siebel Workflows as compared to e-script.

This revelation goes to Naresh Lalam from siebel.ittoolbox . After his one of the comments I went up and verified that date fields can be simply manipulated from expression of Workflow Process

Provided :
1: Process Proerty storing Date is of type : Date
2: Number of days which needs to subtracted to added should be integer.
Output Arguments

On simulating these expression it results extremely simple output.

Workflow Process Properties

Credit : Naresh

cheers :)

How to make field conditionally editable in Siebel?

Requirement: To make Siebel Fields editable only from certain views or certain users?

This sort of customization could come up when business would like to update fields from certain views only and make then read only from elsewhere.

Solution: This requirement can be achieved in many ways, listing script-less solutions here:

1. Clone the Applet and views and make the control read only by setting the read only flag on Applet

Benefits: As the solution makes copy of UI layer, it does not impact the business layer. If there is any script which is updating the field as part of another process it wont require any changes as field on the BC remains unchanged.
Drawbacks: Duplicate objects make application complex and difficult to manage.

2. Create Field Read Only Field user property to make the read only if the active view name is not same as the intended view.
This can be done by using : GetProfileAttr('ActiveViewName').
Benefits: No new object created thus keep the keep maintenance simple and keep the business logic at one location.

3. Use GetProfileAttrAsList in calculated field to check the responsibility of user.
If user has the responsibility then field will be editable and for all other users field will be read only. This responsibility can be added to SADMIN as well so that background workflows can only update this field.

syntax of calculated field:
IIf(InList(“EditableField”,GetProfileAttrAsList(“User Responsibilities”)))
If you have come across any other  scenario in which you were forced to write script then please share it with us in comments below.

Restrict certain queries on BC/EBC/VBC : GetSearchExpr()

Recently someone posted requirement on it toolbox to capture and change the queries executed by user on certain Siebel business components.

Few consultant suggested use pre query event of business component to change the search spec using GetSearchExpr and SetSearchExpr, however it is not possible to achieve this without releasing srf.

Perhaps there was a solution which could be achieved without releasing srf.In such type of requirements we can use Siebel Run Time events and client side business services which are independent of srf release.

June 22, 2013

Siebel Tools and Client is not responding?

Have you done something innovative and Siebel Client have stopped responding? Even task manager is stuck?

Do not restart your machine, instead try these commands from command prompt to force kill the exe:

taskkill /IM siebel.exe /F
taskkill /IM siebdev.exe /F
taskkill /IM iexplore.exe /F
taskkill /IM taskmgr.exe /F

Force kill siebel.exe

Siebel Configuration Interview Questions

Siebel Configuration Interview Questions

Siebel Configuration is one of core areas of Siebel Customization, and it usually get overlooked in projects.  It is equally important for an Siebel Consultant to know the basic configuration items along with specialized skills like EAI, EIM etc.. 

Following are some questions that easily assess the Consultant's understanding over Siebel Configuration.

Question: How to make applet read only in Siebel?

Answer: To make applet permanently read only, one can use No Update, No Insert, No Delete, No Merge property on applet to true. Read more

Question : How to build validation in Action Business Component to ensure that Start date is always a future date?

Answer: Validation field and validation message can be used to enforce the date entered. To check the future data following Syntax can be used.
> Today()


Question: How to create validation for first name field in Contact BC to have at least 5 characters?

Answer: Length method can be used in validation field to ensure minimum number of characters are entered in the field.
Syntax :
Len([First Name]) > 5


Question : How does Primary Id field improves performance of an MVG field? 

Answer: By default every MVG field executes a separate query on database to fetch data from child BusComp. When primary id field is specified and use primary join flag is set, application does not execute sub-query and instead uses join to fetch the data.

Question : What are the implications if Primary ID field is not used in MVG?

 Answer: If Primary Id is not specified on an MVG then view will take a lot more time to load as for every record in list applet another subquery will be executed.


Question : Is it possible to deploy SRF on server if objects are not checked in repository?

Answer:Yes, for Business Service, BusComps, BusObjects and Applet changes, srf can be deployed on server without checking in the objects, however workflow needs all the BO and BC to be checked in before it is activated.

Question: How to disable new record creation for certain users of Siebel?

Answer: Applet's PreCanInvokeMethod Method can be used to disable new button by setting CanInvoke to false, this can be done conditionally by checking the position or responsibility of the current user.

Question: How to make field editable for certain group of users only?

Answer: Create field read only field user property for the field and use calculated field expression to check the responsibilities of user, return N if user has the responsibility to edit the field and Y if it doesn't

Calculated field expression:

IIF(InList("Edit Field",GetProfileAttrAsList("User Responsibilities"))='Y','N','Y')

This way user who don't have the responsibility will see the field readonly.

Question : How to access user preference in script?

Answer: User preferences in siebel are stored in special class base bc which gets its values from spf files stored in file system. Through script user preferences can be retreived by querying the User Preferences BC like :
var oBOUser = TheApplication().GetBusObject("User Preferences");
var oBCUser = oBOUser.GetBusComp("User Preferences");
if (FirstRecord())
sDefTempValue = GetFieldValue(fieldName);


Question : How to access system preference in escript?

Query System Preferences BC on Name and Value fields to get the value of system preference..
        var boSysPref = TheApplication().GetBusObject("System Preferences");
        var bcSysPref = boSysPref.GetBusComp("System Preferences");
         bcSysPref.SetSearchSpec("Name", sName);
         bcSysPref.ExecuteQuery( ForwardOnly );
         if (bcSysPref.FirstRecord())
            sValue = bcSysPref.GetFieldValue("Value");

Question : How to set system preference in Siebel?

Answer: "Administration Application> System Preference" view can be used to set the value of system preference.


Question . What could be reason behind a Picklist field which is not showing the drop down icon?

Answer: There are only three reasons for picklist not showing drop down:
Picklist is not specified on BusComp field.
Picklist is not compiled or Picklist values are not created.
Control's Runtime property is not set to true on Applet

Question : Is it possible to make calculated field as editable?

Answer: Yes, by setting setting pick map on calculated field and field becomes editable, however it won't be able to save the value and will recalculate the value on refresh record.

Question : How can you get the value of parent field value in browser script?

Answer: Only fields displayed on UI are accessible in browser script, it is applicable for all the parent and child bus components.

Popular Interview Questions:

June 21, 2013

Not able to send child buscomp fields in Siebel F9 email functionality

Siebel Email F9 functionality is one of the favourites among the Siebel users. Being quick to setup, saves lot of user time, and ease of use makes it quick win.

However it lacks at certain aspects. One of them being not able to pre-populate data from child business component on the email template. On simple search it seems it should be possible to pull any field value, but actually it is not.

After spending some time on support web/metalink it is clear that it is not possible to use child buscomp in field substitution in F9 email functionality, as Siebel F9 email only support simple templates which can only iterate through primary bus comp and not the iteration(child) bus comp.

From Support web:
1) Use of 'Send Email' permits the use of a simple template.Advanced templates require an Outbound Communication Request.
2) Simple templates cannot contain Template Items.3) Template Items allow an iteration child business component, from which substitution fields may be selected.


Close look at the event model shows that siebel execute FileSendMail method on the applet when F9 button is pressed.

So if Siebel script/runtime event can trap that event then and calculate the child bus comp fields, then this data can be fed to the email popup using some field on primary bc.

1. Add script on applet

On these lines I added some script on the applet pre invoke and set profile attribute.

2. Create new calculated field
And used this profile attribute to provide data in template, this helped to get the value of child business component and onto the email template.

Looking forward for comments.

Next in series: Pre-populate CC or BCC in Siebel F9 Functionality

June 20, 2013

Siebel Contact Center - Demo Video From Oracle

Oracle Siebel CRM Support Timelines

Are you worried about your existing Siebel CRM investment? or thinking of implementing Siebel to manage your customer touch points? then look no further.
Siebel has not lost his shine even after presence of many cloud based CRM solutions. Siebel still remains the market leader and supporting clients around the world to manage customer relationships, infact it proves to be best return on investment.
With recent release of Open UI Innovation Pack, Oracle has proved that Siebel CRM still is current and meaningful in days of modern web browsers and devices.

Following is the Screen grab from the Oracle Siebel Statement of Direction May 2012.

Siebel Support timelines for existing Siebel versions
This clearly shows the extended support is available for next six years which is comfortably more than IT planning program of organisations and indefinite Sustaining Support ensures safety of the investments.

Siebel Open UI Demo - Video

Here is one Siebel Open UI demonstration from ec4uintern