Force Active is a property of a business component (BC) field and is quite often misused, which can result in drastic performance on the Application.
Purpose of Force Active:
When set to true this property results in query of this field every time a business component is instantiated. Important word to note in the above statement is every time.
To explain what I mean every time we assume that we make a field called “Opportunity Name” as Force Active in Opportunity BC. Now, this field will be queried internally by Siebel
- Every time you do a BO.GetBusComp(”Opportunity”) in a script.
- Every time you navigate in application and the underlying BC is Opportunity.
- BC is accessed internally in any form.
Explanation
Every time you make a field Force active it will be made part of where clause each time a query is issued against that BC or table irrespective of the fact that field is required or not.
Extra care for Join Fields .
Users may experience slow database performance when the Force Active property is set to TRUE on fields coming from a join. Fields based on joins or multi-value links will affect performance more than fields mapped to the base table of a business component, because extra SQL is necessary to
retrieve the data. This leads to unnecessary table access and slow performance. Additionally this could prevent the database engine from using indexes efficiently.
Best Practices:
- If there are standard or custom join fields which are no longer used, inactivate the Join object and make sure that Force Active and Link Specification properties are set to FALSE.
- Avoid setting the Force Active property to TRUE for join fields. Instead, add the field to the necessary applet and set the Visible property to FALSE.
Moral of the Post:
Don’t just make a field force active until and unless it is absolutely necessary as over a period of time large number of force active fields can result in huge performance impact on application. Activate the field in case it is required in scripting.
In my experience the only time Force Active field is required is when you working on Runtime events and need to access the field in the conditional expression then you will have make the field as Force Active.

7 Comments at "Force Active - use with care"
Neel, Could you please send me the link for your webservices PPT.
Thanks
Hi susan,
This is the link to download the file
http://rapidshare.com/files/60854421/WebService.ppt
click on Free button once webpage opens enter the code shown and download should start.
Thanks Neel. It worked
Valuabele Info relate to Force Active
Good One Neel, I think we got to activate it for the fields used in the rules of the Data Validation Manager. Any suggestions??
No, it don’t think that is required. DVM is used for validations so you will be putting validations on fields that are UI and you don’t require to make those fields force Active.
If you put validation on Field that is not exposed on UI then your validation is functionally wrong.
DVM can also use fields which are not used on UI . For example I have a field which is not on UI and is system updated(Let say a flag).Based on this we need to to validate another fields.
Iif( Flag = Y) than Field1 = A else Y
here flag is not included in UI but Field1 is.
NS
Comment Now!