137 Germain CRT Validation Rules for Siebel CRM 7.7,7.8,8.0,8.1,8.2 Validation Rule Name Validation Rule Description Business Application Siebel Repository Level Improve CPU Improve Memory GS-SBL-REP-JDBC-1001 Limit to 100 joins per business component Siebel CRM Join GS-SBL-REP-JDBC-1002 Limit of 4 applets per view if possible Siebel CRM Applet GS-SBL-REP-JDBC-1003 Check that buscomp has at most 50 active fields Siebel CRM Business Component GS-SBL-REP-JDBC-1004 Check that table has more than 1 inde Siebel CRM Database GS-SBL-REP-JDBC-1005 Force Active on buscomp Siebel CRM User Property Force Active on a large number of fields on the GS-SBL-REP-JDBC-1006 BC(more than 20%) Siebel CRM Business Component UserProperties allmode sort [All Sort GS-SBL-REP-JDBC-1007 Mode]=normal Siebel CRM User Property GS-SBL-REP-JDBC-1008 State Model enable for business components not derived from CSSBCBase class Siebel CRM Business Component GS-SBL-REP-JDBC-1009 Long list property on picklists Siebel CRM User Property GS-SBL-REP-JDBC-1010 Checks for Manager List Mode on a BC Siebel CRM Business Component GS-SBL-REP-JDBC-1011 Server flag on Business Services Siebel CRM Business Service GS-SBL-REP-JDBC-1012 Checks MVL s with Check no Match set to TRUE Siebel CRM Link GS-SBL-REP-JDBC-1013 Checks for over 40 columns displayed on a list applet Siebel CRM Applet GS-SBL-REP-JDBC-1014 Limit to 3 virtual BC per view Siebel CRM View GS-SBL-REP-JDBC-1015 Check for lots of [immediate post changes] Siebel CRM Business Component GS-SBL-REP-JDBC-1016 Checks individual fields for case insensivity Siebel CRM Business Component GS-SBL-REP-JDBC-1017 Avoid calculated fields that do Counts and Sums Siebel CRM Business Component More than 3 toggles on an applet (stop it from GS-SBL-REP-JDBC-1018 caching with dynamic toggle) Siebel CRM Applet Check that there is no more than one static toggle GS-SBL-REP-JDBC-1019 applet Siebel CRM Applet Works out whether a view will be prevented from GS-SBL-REP-JDBC-1020 caching Siebel CRM View GS-SBL-REP-JDBC-1022 GS-SBL-REP-JDBC-1023 GS-SBL-REP-JDBC-1024 GS-SBL-REP-JDBC-1025 Use inner joyns rather than outer joins - limit to 10 outer join to business components Siebel CRM Join Total Displayed and Total Required properties for List Object in List Applets Siebel CRM User Property List applet contains more than 10 Active calculated fields Siebel CRM Applet There are multiple fields in the same BC mapped to the same column. Siebel CRM Business Component GS-SBL-REP-JDBC-1026 Views have the Visibility Applet Type and/or Visibility Applet properties incorrectly configured. Siebel CRM User Property GS-SBL-REP-JDBC-1027 Thread Applet property on views has been set to an applet not included in the view itself. Siebel CRM User Property GS-SBL-REP-JDBC-1028 Fields with picklist but no pickmap Siebel CRM Business Component
GS-SBL-REP-JDBC-1029 Integration Components with few Integration Component Fields mapping to large BCs Siebel CRM Business Component GS-SBL-REP-JDBC-1030 Deep Copy and Deep Delete BC User Prop Siebel CRM User Property GS-SBL-REP-JDBC-1031 LOV_TYPE not set for a column but Translation Table set Siebel CRM Database GS-SBL-REP-JDBC-1032 Missing Join Specification Siebel CRM Join GS-SBL-REP-JDBC-1033 Joins using custom Foreign Keys Siebel CRM Link GS-SBL-REP-JDBC-1034 Links using custom Foreign Keys Siebel CRM Link GS-SBL-REP-JDBC-1035 Cascade Delete Property for 1:Many Links Siebel CRM User Property GS-SBL-REP-JDBC-1036 Missing "-Num Tool Tips" Applet User Prop for Gantt applets Siebel CRM User Property GS-SBL-REP-JDBC-1037 Custom BCs based on S_PARTY missing "Inner Join Etension Table" BC User Prop Siebel CRM User Property GS-SBL-REP-JDBC-1038 SmartScripts: Avoid too large SmartScripts Siebel CRM SmartScript Checks mvls without primaries or use primary set GS-SBL-REP-JDBC-1039 to false Siebel CRM Link GS-SBL-REP-JDBC-1040 Checks for nested mvl s Siebel CRM Link GS-SBL-REP-JDBC-1041 Destination Fk in a link not on the leading column in an inde on the underlying table Siebel CRM Link GS-SBL-REP-JDBC-1042 Branching on the start step - Instead of having multiple branches coming off the Start step, you should have one branch to a decision step and then branch off from there. Siebel CRM Workflow GS-SBL-REP-JDBC-1043 GS-SBL-REP-JDBC-1044 GS-SBL-REP-JDBC-1045 Business Services invoked within Workflows should have Cache property set to TRUE. However the property for standard BS should not be altered Siebel CRM User Property Limit to 5 etension tables per business component Siebel CRM Database Limit to 100 primary ID fields in a business component Siebel CRM Database GS-SBL-REP-JDBC-1046 GS-SBL-REP-JDBC-1048 GS-SBL-REP-JDBC-1049 The Upgrade Ancestor property on custom business components based on specialized classes has not been configured Siebel CRM User Property Verify use of indeed columns for Integration Component User Keys Siebel CRM Database EAI: Large Number of Integration Component User Keys defined Siebel CRM Integration Component GS-SBL-REP-JDBC-1050 EAI: Integration Component Fields with PICKLIST property defined but the field object at BC level does not use any PickList Siebel CRM Integration Component Check if search spec contains field not in BC GS-SBL-REP-JDBC-2001 definition Siebel CRM Business Component GS-SBL-REP-JDBC-2002 Search specifications not indeed Siebel CRM Business Component GS-SBL-REP-JDBC-2003 Check if a search spec contains calculated field Siebel CRM Business Component GS-SBL-REP-JDBC-2004 Check if a BC is searching on a joined field Siebel CRM Business Component GS-SBL-REP-JDBC-2005 Sort Specifications not indeed Siebel CRM Business Component GS-SBL-REP-JDBC-2006 Check if a sort spec contains a calculated field Siebel CRM Business Component GS-SBL-REP-JDBC-2007 Check if a BC is sorting on a joined field Siebel CRM Business Component GS-SBL-REP-JDBC-2008 Checks for eist statements in SearchSpecs Siebel CRM Business Component Search spec that are set at applet and bc level GS-SBL-REP-JDBC-2009 may confict with each other. Siebel CRM Business Component
GS-SBL-REP-JDBC-3000 Error parsing escript Siebel CRM escript GS-SBL-REP-JDBC-3001 Check for calls to profileatr in browser script Siebel CRM escript Check for calls to EecuteQuery() or GS-SBL-REP-JDBC-3002 EecuteQuery(ForwardBackward) calls. Siebel CRM escript GS-SBL-REP-JDBC-3003 Adds script tracing routines to scripted objects Siebel CRM escript GS-SBL-REP-JDBC-3004 Redundant calls within the same function (e: TheApplication().ActiveViewName() == "View1" TheApplication().ActiveViewName() == "View2 ) Siebel CRM escript GS-SBL-REP-JDBC-3005 Nested Query loops - Avoid nested query loops. Nested query loops may involve a large number of subqueries and may significantly impact performance. Use this technique very sparingly. Implement a nested query loop in the correct order in order to minimize the number of iterations. Be aware that a nested query loop may be invoked implicitly, depending on how your script is writte~. Siebel CRM escript GS-SBL-REP-JDBC-3006 Using NetRecord() in lieu of SetSearchSpec() Siebel CRM escript GS-SBL-REP-JDBC-3007 Check for Activation of system fields Siebel CRM escript GS-SBL-REP-JDBC-3008 A call to ActivateField() is relevant only if followed by a call to the EecuteQuery() method. Siebel CRM escript GS-SBL-REP-JDBC-3009 Active by default:please note that it is not needed to eplicitly activate fields before making SetFieldValue calls performed immediately after using the NewRecord method. In fact after a NewRecord all fields in then BC will be active. Siebel CRM escript GS-SBL-REP-JDBC-3010 Eliminate use of global variables Siebel CRM escript GS-SBL-REP-JDBC-3011 Ensure objects created are properly destroyed. In escript, destroy an object by setting it to null (obc = null). Release objects in the reverse order in which the Siebel application created them; child objects first, parent objects second. Siebel CRM escript GS-SBL-REP-JDBC-3013 GS-SBL-REP-JDBC-3014 Report every time one of these api is called from within a script and recommend customer to review the active control to ensure it is properly built and tuned: FindActiveControl( ) api Siebel CRM escript Calls to SElib.dynamicLink, SElib.peek, SElib.pointer, SElib.poke Siebel CRM escript GS-SBL-REP-JDBC-3015 Declare your variables. Declaring your variables and specifying their data type, as appropriate, may use less memory and improve performance. Siebel CRM escript
GS-SBL-REP-JDBC-3016 Use the EecuteQuery() method sparingly (Siebel escript). Removing calls to eecute a business component, using the method EecuteQuery(), can yield significant performance benefit. It is better practice to use shared variables to share values of specific business component records across scripts than to separately invoke EecuteQuery() in each script. Siebel CRM escript GS-SBL-REP-JDBC-3017 GS-SBL-REP-JDBC-3018 GS-SBL-REP-JDBC-3019 Empty finally{} clauses - For some reason if you have nothing in your finally clause, the Siebel object manager will crash and not tell you Siebel CRM escript Duplicate Variables Siebel will crash if you declare variables more than once Siebel CRM escript Positioning records for the DeleteRecord() method Siebel CRM escript GS-SBL-REP-JDBC-3020 GS-SBL-REP-JDBC-3021 Minimize scripting on field-level or control-level events. Field-level or control-level events are fired more often than most other types of events. Consequently, invoking scripts from such events can dramatically impact scalability. Avoid scripting frequent events, or simplify scripts on these events. Eamples of such events include BusComp_PreGetFieldValue(), WebApplet_PreCanInvokeMethod(), and WebApplet_ShowControl(). Siebel CRM escript Reduce the amount of custom scripting in the application Siebel CRM escript GS-SBL-REP-JDBC-3022 Script: empty catch blocks Siebel CRM escript GS-SBL-REP-JDBC-3023 GS-SBL-REP-JDBC-3024 Script: Return statement in finally suppresses errors. If the return statement is placed in the finally clause of a try/catch/finally block, any eception generated in the method or thrown to the method by called methods is suppressed and the eception will not make it out of the method. Siebel CRM escript Empty escript function function() { with nothing eecuted in this function OR just some variable declaration(s) } Siebel CRM escript GS-SBL-REP-JDBC-3025 parseint() Method Siebel CRM escript GS-SBL-REP-JDBC-3026 floating point Siebel CRM escript GS-SBL-REP-JDBC-3027 do use negative array indices-getarraylength() and setarraylength() Methods Siebel CRM escript GS-SBL-REP-JDBC-3028 Error ReferenceError:Script is not defined - If the script you re referencing is on the current page, instead of doing this in your script: p = Script().GetPage("PageName"); You now just do p =GetPage("PageName"); Siebel CRM escript GS-SBL-REP-JDBC-3029 Script: code after RaiseError and RaiseErrorTet Siebel CRM escript invoking multiple business service methods from GS-SBL-REP-JDBC-3030 browser script Siebel CRM escript
GS-SBL-REP-JDBC-3031 Use 4 digits for Date Constructor in Siebel escript Siebel CRM escript GS-SBL-REP-JDBC-3032 GS-SBL-REP-JDBC-3033 GS-SBL-REP-JDBC-3034 Use the Switch construct (Siebel escript). The Switch construct directs the program to choose among any number of alternatives you require, based on the value of a single variable. Using this construct offers better performance than using a series of nested If statements, and is easier to maintain. Siebel CRM escript Browser Scripts in applets not having High Interactivity enabled Siebel CRM Business Object Invoking SmartScripts by name and not by ROW_ID Siebel CRM SmartScript GS-SBL-REP-JDBC-3035 GS-SBL-REP-JDBC-3036 Use appropriate error handling. Appropriate error handling can help maintain optimal performance. Although error handling is important, it also has a performance cost. Additional guidelines for using error handling in scripts are provided in Technical Note 514, located on Siebel SupportWeb. Siebel CRM escript Checks for calls to Workflow Process Manager vs Workflow Siebel CRM escript GS-SBL-REP-JDBC-3037 Identical business components eecutions. Siebel CRM Business Component GS-SBL-REP-JDBC-3038 GS-SBL-REP-JDBC-3039 Use the this object reference (Siebel escript). The special object reference this is escript shorthand for "this (the current) object." You should use it in place of references to active business objects and components. For eample, in a business component event handler, you should use this in place of ActiveBusComp(), usage of which may have a significant performance impact. Refer to the following eample: function BusComp_PreQuery() {this.activatefield("account");this.activatefield(" Account Location");this.ClearToQuery();this.SetSortSpec( "Account(DESCENDING)," +Account Location(DESCENDING));this.EecuteQuery();retur n (ContinueOperation);} Siebel CRM escript Script: updating fields belonging to different BCs than the current one in BusComp_PreWriteRecord event Siebel CRM escript GS-SBL-REP-JDBC-3040 Script: Object allocation in Service_PreInvokeMethod, before testing the method. If the allocation is not needed by the invoked method, it will be eecuted anyway. Allocation of objects is a time and memory consuming operation and it should be performed only when needed Siebel CRM escript GS-SBL-REP-JDBC-3041 Active by default:fields that are included in the definition of an applet on the active view Siebel CRM Business Component GS-SBL-REP-JDBC-3042 Active by default:fields that are used as part of a calculated field calculation when the calculated field is retrieved for use on the active applet Siebel CRM Business Component
GS-SBL-REP-JDBC-3043 Active by default:fields that are activated with BusComp.ActivateField (strfldname). They are active for the lifetime of the BC object variable or until deactivated eplicitly by the DeactivateFields() method. Siebel CRM escript GS-SBL-REP-JDBC-3044 Return statements - You need to have a return statement for all paths in a method. Siebel CRM escript GS-SBL-REP-JDBC-3045 SmartScripts: Unnecessary BC instantiation Siebel CRM SmartScript GS-SBL-REP-JDBC-3046 Field data validation made in script. Siebel CRM escript Active by default:fields that are used or GS-SBL-REP-JDBC-3047 referenced by BC user properties Siebel CRM User Property Active by default:fields that are used or GS-SBL-REP-JDBC-3048 referenced by applet user properties Siebel CRM User Property Active by default: Fields with their Force Active [s_field.forceactive] property (on the BC object) GS-SBL-REP-JDBC-3049 set to TRUE Siebel CRM Business Component Active by default: Fields with their Link Specification property [s_field.linkspec] (on the GS-SBL-REP-JDBC-3050 BC object) set to TRUE Siebel CRM Business Component [Workflow Process] is eecuted within Workflow GS-SBL-REP-JDBC-3051 Process Manager component. Siebel CRM escript GS-SBL-REP-JDBC-3053 Remove unneeded sort buttons Siebel CRM Applet GS-SBL-REP-JDBC-3054 Provide tuned PDQs Siebel CRM PDQ GS-SBL-REP-JDBC-3055 Do not return large result sets from server business services to browser scripts. Browser scripts that invoke server scripts should return simple values or a single record, and should not return large result sets. Siebel CRM escript GS-SBL-REP-JDBC-3056 Verify your script is defined on the appropriate method. A script that is not defined on the right method may have a performance impact. For eample, if special code needs to be run at the record level when an insert or update is done, it is better to invoke a script from BusComp_WriteRecord() rather than BusComp_SetFieldValue(). The reason for this is that SetFieldValue events are fired much more often than WriteRecord events. Limit your use of specialized invocation methods. Siebel CRM escript GS-SBL-REP-JDBC-3057 Verify your script is implemented in the right view. A script that is not implemented in the right view may cause significant performance impact. Siebel CRM escript GS-SBL-REP-JDBC-3058 Verify that this script is implemented in the right place in the configuration, based on data manipulations, navigation requirements, and business requirements in general. Siebel CRM escript
GS-SBL-REP-JDBC-3059 Use browser scripts for simple client-side functions such as field validation. Browser scripts are best used to perform simple procedural logic on the client side, such as performing field validation, or displaying blocking messages or alerts to users. Some such uses, particularly field validation, can reduce server round trips. Using more comple browser scripts, however, may reduce performance. For eample, using Set/Get Profile attribute calls, or invoking multiple business service methods, may require more server round trips and lead to performance problems. Adding etra functionality to scripts that display messages may have a similar effect. Siebel CRM escript GS-SBL-REP-JDBC-3060 Error Calling function GetQuestion has too many arguments You can t do = GetPage("PageName").GetQuestion("QuestionNa me").getcurrentvalue(); it now needs to be broken up into p = Script().GetPage("PageName "); = p.getquestion("questionname ").GetCurrentValue(); Siebel CRM escript GS-SBL-REP-JDBC-3061 Sequence Numbers Siebel is now more particular about sequence numbers. In particular, be careful with your Echo and Siebel Operation steps Siebel CRM Business Object GS-SBL-REP-JDBC-3062 Validation Error: Required arguments not defined - There are a few issues with Siebel reporting that some arguments are required on their vanilla business services when in fact they are not. Eg. EAI File Transport, Web Engine HTTP TN, EAI Siebel Adapter Siebel CRM escript GS-SBL-REP-JDBC-3063 Added error handling and empty pointer checks to the server script for BC and applet Siebel CRM escript GS-SBL-REP-JDBC-3064 White-Space Characters in Siebel escript Siebel CRM escript Standard fields, active in the standard GS-SBL-REP-JDBC-3065 configuration, have been inactivated. Siebel CRM escript GS-SBL-REP-JDBC-3066 Standard fields have been deleted. Siebel CRM escript GS-SBL-REP-JDBC-3067 Standard fields have been re-mapped Siebel CRM escript Number of PDQs for a Business Object and their GS-SBL-REP-JDBC-3068 size Siebel CRM PDQ GS-SBL-REP-JDBC-3069 Link Spec on a large number of fields on the BC Siebel CRM Link Standard fields, inactive in the standard GS-SBL-REP-JDBC-3070 configuration, have been re-activated. Siebel CRM Business Component GS-SBL-REP-JDBC-3071 Ensure objects created are properly destroyed. In SVB, destroy an object by setting it to nothing (Set obc = Nothing). Release objects in the reverse order in which the Siebel application created them; child objects first, parent objects second. In SVB objects destruction should be placed after the error handling label Siebel CRM escript
GS-SBL-REP-JDBC-3072 GS-SBL-REP-JDBC-3073 Use the Select Case construct (Siebel VB). The Select Case construct directs the program to choose among any number of alternatives you require, based on the value of a single variable. Using this construct offers better performance than using a series of nested If statements, and provides other benefits. Siebel CRM escript escript: Variable strong typing vs. typeless declaring Siebel CRM escript GS-SBL-REP-JDBC-3074 Decision Step with no default branch - At least one branch now needs to be a default branch. Siebel CRM Workflow GS-SBL-REP-JDBC-3075 Cloned BCs based on specialized class Siebel CRM Business Component