22Improving the Performance of Siebel Business Applications

Improving the Performance of Siebel Business Applications

This chapter describes how to tune and improve the performance of a Siebel application. It includes the following topics:

How a CIAI Index Can Improve a Query

The CIAI query is a feature that uses an index to support a case-insensitive and accent-insensitive (CIAI) query on some text columns. The purpose of the CIAI query is to improve query performance. If a database uses a CIAI index to perform a search, then the Siebel database is not required to perform table scans to locate records, and the database can do the search more quickly.

For example, in the S_CONTACT table, assume the LAST_NAME column is defined for a CIAI query and uses the LAST_NAME_CI column. Assuming that your deployment uses an IBM DB2 database, if you query for the name Smith, then the object manager creates a query that is similar to the following:

SELECT column list FROM S_CONTACT 
WHERE LAST_NAME_CI = SMITH

The Siebel database then uses the CIAI index on LAST_NAME_CI to locate the records.

For Text and CLOB physical types, the Case Insensitivity Wizard does the following work:

  • Accepts the Text or CLOB physical type

  • Does not create a CIAI column or CIAI indexes for a Text or CLOB physical type

  • Sets the Default Insensitivity property to DB Case & Accent

For more information, see Types of Tables and Columns That CIAI Query Supports.

    How Siebel CRM Implements a CIAI Column and Index in a Database

    The type of database determines how Siebel CRM implements a CIAI column or index that exists in the Siebel repository. For example, it implements a CIAI column in the following ways:

    • On Microsoft SQL Server, as a calculated column

    • On Oracle Database, as indexes that use functions

    • On IBM DB2, as a schema column

      Effect of CIAI Columns on Sorts

      If querying on a column that is configured for CIAI, then the ORDER_BY clause might or might not include the CIAI column depending on the following situations:

      • A view with the Visibility Applet Type property set to All uses the CIAI column in the ORDER_BY clause.

      • A view with the Visibility Applet Type property set to Org does not use the CIAI column for sorts.

      If querying on another column in the same view that is not configured for CIAI, then Siebel CRM does not use the CIAI column in the ORDER_BY clause.

        Overview of the Case Insensitivity Wizard

        The Case Insensitivity Wizard is a tool you can use to configure a column to support a CIAI query. This wizard does the following work:

        • If you use an input file, then validates the format of all records in the input file. For more information, see Input File You Can Use with the Case Insensitivity Wizard.

        • Validates that all tables and columns are eligible for CIAI configuration. For more information, see How the Case Insensitivity Wizard Verifies Eligibility.

        • For each eligible base column, defines a new CIAI column and a CIAI index in the Siebel repository. The CIAI column contains data in the base column. The wizard converts this data to uppercase. For more information, see Index Strategy Variable of the Case Insensitivity Wizard.

        • Sets the Default Insensitivity property for the base column to DB Case & Accent. You can run the Case Insensitivity Wizard in a special mode to set the Default Insensitivity property on columns that do not contain an index.

        • Sets flags and does other configuration operations in the Siebel repository that Siebel CRM requires to support a CIAI query.

        Siebel Tools does not create columns or indexes in the Siebel database until you compile the Siebel repository.

          How the Case Insensitivity Wizard Verifies Eligibility

          The Case Insensitivity Wizard verifies that all tables and columns it configures for CIAI meet the following eligibility criteria:

          • The table and column exist in the Siebel repository.

          • The column is active and belongs to the defined table.

          • Siebel CRM supports the table type, column functional type, and column physical type for each CIAI configuration.

          • The column already includes one or more indexes. If no index is defined on the column, but the column is otherwise eligible, then the wizard accepts the column but does not create a CIAI column or any CIAI indexes for the column. The Case Insensitivity Wizard sets the Default Insensitivity property to DB Case & Accent. For more information, see Using the Case Insensitivity Wizard on Columns That Do Not Contain an Index.

            How the Case Insensitivity Wizard Applies a Naming Format

            When the Case Insensitivity Wizard creates a CIAI column name or index name, it uses a naming format that is similar to the naming format that the EIM Table Mapping Wizard uses. The naming format is fixed. You cannot override it. For more information, see Mapping a Custom Table to an Interface Table and Objects You Use with Enterprise Integration Manager.

            The Case Insensitivity Wizard uses the following naming format:

            • Column name. Appends a _CI suffix to the CIAI column name. For example, if the parent column is LAST_NAME, then the CIAI column is LAST_NAME_CI.

            • Index name. Uses the following format to append a string to the base table name:

              BASE_TABLE_NAME_C#

              where:

              • # is an integer starting at 1 and incremented as required to create a unique name.

              For example, S_CON_ADDR_C1 is a CIAI index that the wizard creates for the S_CON_ADDR table.

              How the Case Insensitivity Wizard Limits the Length of An Object Name

              The default length for a column name or index name is 30 characters. If a CIAI column name or index name exceeds the maximum length, then the Case Insensitivity Wizard does the following:

              • Truncates the column base name for a column name

              • Truncates the table base name for an index name

              The wizard does the following:

              • Deletes underscores one at a time, beginning with first underscore.

              • Deletes vowels one at a time, beginning with the last vowel.

              • Deletes characters one at a time, beginning with the last character. Characters include letters, numbers, and so on.

              The Case Insensitivity Wizard does not truncate a prefix or a suffix.

              You can manually limit the length of schema object names to 18 characters. For more information, see Limiting the Length of Schema Object Names Manually.

              How the Case Insensitivity Wizard Makes Sure Each Name Is Unique

              If the Case Insensitivity Wizard truncates a column or index name, then the name might not be unique. If this situation occurs, then the wizard truncates the farthest character in the base column name or base table name. The wizard replaces the truncated character with an integer, starting with 1. To maintain the overall string length, the wizard does the following:

              • Increments the integer if the truncated name is not unique

              • Truncates the name to make room for more digits if the wizard requires more digits to make the name unique

                How the Case Insensitivity Wizard Reports an Error

                The Case Insensitivity Wizard reports errors in a pane in the Case Insensitivity Wizard. The errors list provides information so that you can identify the column and the cause of the problem. You can do one of the following:

                • Correct the errors and rerun the Case Insensitivity Wizard.

                • Ignore the errors. When the Case Insensitivity Wizard configures columns, it skips each column that creates an error.

                You can export errors that the Case Insensitivity Wizard reports to a text file. Errors typically fall into one of the following categories:

                • Input file format error. Punctuation error or improper use of configuration options.

                • Table and column eligibility problem. Occurs if you choose tables and columns that the Case Insensitivity Wizard does not support.

                • Project not locked. You must lock any table you define in the Table variable before you run the wizard. The wizard displays the list of projects that you must lock.

                  Variables You Can Use with the Case Insensitivity Wizard

                  The Case Insensitivity Wizard includes the following variables:

                  • Table

                  • Column

                  • Method

                  • Index Strategy

                  • Operation

                    Method Variable of the Case Insensitivity Wizard

                    The method variable of the Case Insensitivity Wizard determines how the wizard configures a CIAI query for a column. This topic describes the methods that are available.

                    About the Force Case Method

                    If you set the method to Force Case, then the Case Insensitivity Wizard does not create a CIAI column or index. You can use the Force Case method for a column where the Force Case property of a table column is already set.

                    If the Force Case property is FirstUpper, Lower, or Upper, then Siebel CRM forces the column data to the case that is set in the Force Case property before it writes data to the Siebel database. All data in the base column is in the same case. The object manager can use the base column and the base column indexes for a query that is not case-sensitive. A CIAI column and CIAI indexes are not required. To get records, the object manager uses the indexes that Siebel CRM already defines on the base column.

                    If Force Case is FirstUpper, LOWER, or Upper, then the Case Insensitivity Wizard considers Force Case to be set for a column. If Force Case is empty, then the wizard does not consider Force Case to be set.

                    About the Database Method

                    The Database method defines a CIAI column for the base column. It uses the index strategy variable to create indexes. The Case Insensitivity Wizard does the following work for indexes that contain multiple columns as keys:

                    • For the first key where the column becomes CIAI enabled, the wizard defines a copy of the index. In the copy, the key references the CIAI column instead of the base column.

                    • For each additional key that is CIAI enabled, the wizard deletes the index copy in the Siebel repository and redefines it so keys reference the additional CIAI columns.

                    For example, assume the following:

                    1. The S_CONTACT table contains Base Column A. This column includes Index A, which uses the LAST_NAME and FST_NAME columns as keys.

                    2. You choose the LAST_NAME column for a CIAI query and define the Copy All index strategy.

                    3. The Case Insensitivity Wizard defines the LAST_NAME_CI column and a CIAI index for the new column.

                    4. To create Index B for Base Column A, the wizard copies Index A and specifies LAST_NAME_CI and FST_NAME as keys.

                    5. You choose the FST_NAME column for a CIAI query.

                    6. As part of configuring FST_NAME for a CIAI query, the wizard does the following work in the Siebel repository:

                      • Defines a new FST_NAME_CI column.

                      • Deletes Index B on Base Column A and redefines it with the LAST_NAME_CI and FST_NAME_CI keys.

                    For more information, see Index Strategy Variable of the Case Insensitivity Wizard.

                      Index Strategy Variable of the Case Insensitivity Wizard

                      The index strategy is a variable that determines how the Case Insensitivity Wizard defines indexes for the CIAI column.

                      The following table describes the index strategies you can use with the method variable set to Database. The wizard sets the Default Insensitivity property to DB Case & Accent no matter which index strategy you use.

                      Table Index Strategies You Can Use With the Database Method

                      Index Strategy Work That the Case Insensitivity Wizard Performs

                      None

                      Defines no new CIAI columns or indexes.

                      Single

                      Defines a new CIAI column and defines a single CIAI index on it.

                      For every index that includes the base column, the wizard does not create another index that references the CIAI column.

                      Copy All

                      Defines a new CIAI column and a CIAI index for the column.

                      For every index that includes the base column, the wizard defines a copy of that index. The copy references the CIAI column instead of the base column.

                        How the Case Insensitivity Wizard Uses Default Values

                        The Table Name and Column Name are the only required variables for the Case Insensitivity Wizard. If you omit the other variables, then the Case Insensitivity Wizard uses the defaults that this topic describes.

                        Default Values for the Method Variable

                        The Case Insensitivity Wizard uses the following default values for the method variable:

                        • If the Force Case property is set on the table column, then the wizard uses the Force Case method.

                        • If the Force Case property is not set on the table column, then the wizard uses the Database method.

                        Default Values for the Index Strategy Variable

                        The Case Insensitivity Wizard uses the following defaults for the index strategy variable:

                        • If the method is Force Case, then the wizard sets the index strategy to None.

                        • If the method is Database, and if the base column does not contain an index, then the wizard sets the index strategy to None.

                        • If the method is Database, and if the base column contains an index, then the wizard uses the Copy All index strategy.

                        If the Case Insensitivity Wizard uses None as an index strategy, then the wizard does not define new columns or indexes. It sets the Default Insensitivity property to DB Case & Accent.

                        The Case Insensitivity Wizard runs the following default logic:

                        • If the Force Case property is set on a column, then the wizard does not define columns or indexes.

                        • If the column contains an index, then the wizard does not define columns or indexes.

                        In these situations, the Case Insensitivity Wizard accepts the column as eligible but does not define columns or indexes. These default behaviors define implicit eligibility requirements.

                        Default Values for the Operation Variable

                        If you do not include the Operation variable, then the Case Insensitivity Wizard sets Operation to On, regardless of the method or index strategy.

                          Using the Case Insensitivity Wizard on a Table

                          If you run the Case Insensitivity Wizard to configure a large number of columns for a CIAI query, or if you must use a nondefault method or index strategy, then you can use an input file. The wizard reads the input file, and then configures the columns in the file. Using an input file allows you to control the configuration options that the Case Insensitivity Wizard uses. Oracle provides recommended input files. For more information, see Input File You Can Use with the Case Insensitivity Wizard.

                          To use the Case Insensitivity Wizard on a table

                          1. In Siebel Tools, open the repository.

                            For more information, see Choosing the Correct Repository when Running the Case Insensitivity Wizard.

                          2. Lock the tables that are listed in the input file.

                          3. Click the Tools menu, click Utilities, and then click Case Insensitivity.

                          4. Choose Administer the Columns Listed in This File, and then click Browse.

                            Siebel Tools displays the tools\objects directory, which contains the default csv input files.

                          5. Choose the csv file, click Open, and then click Next.

                            The Case Insensitivity Wizard validates the following:

                            • Format of the input file

                            • Eligibility of all tables and columns

                            If the file contains an error, then the wizard lists the records that contain the errors. If you continue, then the wizard skips records that contain errors. If errors exist, then click Export to export the error list to a text file, correct the errors, and then restart the Case Insensitivity Wizard.

                            For more information, see Input File You Can Use with the Case Insensitivity Wizard.

                          6. Click Next.

                            The Case Insensitivity Wizard displays the records in the input file.

                          7. Review the configuration settings and verify they are correct.

                            If you must modify any configuration settings, do the following:

                            1. Click Export.

                              The Case Insensitivity Wizard exports the list to a text file.

                            2. Edit the text file, and then restart the Case Insensitivity Wizard, specifying the edited text file as the input file.

                          8. Click Next.

                            The Case Insensitivity Wizard displays the modifications it will make to repository tables and indexes.

                          9. Optional. If you must save a record of the modifications, then click Export.

                            The Case Insensitivity Wizard writes the modifications to a text file.

                          10. Click Finish.

                            The Case Insensitivity Wizard configures the columns in the Siebel repository to support a CIAI query.

                          11. In the Tables list, click Apply/DDL.

                          12. Compile your modifications.

                            Input File You Can Use with the Case Insensitivity Wizard

                            The Case Insensitivity Wizard can accept a comma-delimited (.csv) file as input. Each line in the file is one record that defines one column that the wizard configures for a CIAI query. Oracle provides a recommended input file. The input files include a csv file extension and are located in the objects subdirectory of your Siebel Tools installation. These files list columns that Siebel CRM frequently uses for queries. You can edit these files or create new input files.

                            You must use the following format for each record:

                            TABLE_NAME,COLUMN_NAME,Method,Index Strategy,Operation
                            

                            where:

                            • TABLE_NAME and COLUMN_NAME are required.

                            For example:

                            S_CONTACT,EMAIL_ADDR,Database,Copy All,On
                            

                            The Case Insensitivity Wizard inserts the default value for any optional variable that you omit.

                            If you omit a variable from a record, then you must provide a delimiting comma that represents the placeholder for the variable. In the following example, the Index Strategy variable is omitted:

                            S_CONTACT,EMAIL_ADDR,Database,,On
                            

                            The Case Insensitivity Wizard does not perform special handling for a denormalized column. To configure a CIAI query on denormalized columns, you must include them in an input file.

                            For more information, see Variables You Can Use with the Case Insensitivity Wizard.

                              Using the Case Insensitivity Wizard on a Table Column

                              To run the Case Insensitivity Wizard, you can manually choose a table column. The wizard uses configuration defaults to configure the column. To modify the configuration options, you can export the configuration strings to a text file, edit them, and then use the edited file as an input file to run the wizard.

                              To use the Case Insensitivity Wizard on a table column

                              1. In Siebel Tools, open a repository.

                                For more information, see Choosing the Correct Repository when Running the Case Insensitivity Wizard.

                              2. In the Object Explorer, click Table.

                                As an alternative, you can display the Object Explorer in Flat mode, click Column, and then locate the column in the Columns list.

                              3. In the Tables list, choose the table you must modify.

                              4. In the Object Explorer, expand the Table tree, and then click Column.

                              5. In the Columns list, right-click the column you must modify, and then click Case Insensitivity.

                                The Case Insensitivity Wizard does the following:

                                • Validates the eligibility of the chosen column

                                • Lists any column that contains an eligibility error in the Configure Case Insensitivity dialog box.

                                  If an error occurs, then you can export the error list to a text file, correct the error, and then restart the Case Insensitivity Wizard. To export the error list, click Export. If no error occurs and you continue, then the Case Insensitivity Wizard skips any column that contains an error.

                                  To run the Case Insensitivity Wizard for multiple columns, hold down the CTRL key while you choose each column in the Columns list.

                              6. Continue with Step 7 of the procedure in Using the Case Insensitivity Wizard on a Table.

                                Using the Case Insensitivity Wizard on Columns That Do Not Contain an Index

                                The Case Insensitivity Wizard defines a CIAI column and index only on a column that already includes an index. You can run the Case Insensitivity Wizard for a column that does not include an index but that meets all the other eligibility criteria. This mode modifies the Default Insensitivity property from None to DB Case & Accent. In a query, Siebel CRM converts column values to uppercase before it does the comparison. This work allows a search to be case and accent insensitive.

                                For example, in the S_CONTACT table, assume the LAST_NAME column does not include an index. You run the Case Insensitivity Wizard to set the Default Insensitivity property to DB Case & Accent. If you query for the name Smith, or any case variant such as SMITH or smiTH, then the object manager uses a query similar to the following:

                                SELECT column list FROM S_CONTACT 
                                WHERE UPPER(LAST_NAME) LIKE UPPER(Smith) 
                                

                                To use the Case Insensitivity Wizard on columns that do not contain an index

                                1. In Siebel Tools, open a repository.

                                  For more information, see Choosing the Correct Repository when Running the Case Insensitivity Wizard.

                                2. Click the Tools menu, click Utilities, and then click the Case Insensitivity menu item.

                                3. Choose the Enable for All Unindexed Columns option, and then click Next.

                                  The Case Insensitivity Wizard does the following:

                                  • Locates unindexed columns that meet CIAI eligibility criteria

                                  • Displays a list of tables that you must lock

                                4. Click Export to export the list of tables to a text file, then exit the Case Insensitivity Wizard.

                                5. Open the text file in a text editor.

                                6. In Siebel Tools, lock all tables that the text file lists.

                                7. Start the Case Insensitivity Wizard again, choose the Enable for All Unindexed Columns option, and then click Next.

                                  The Case Insensitivity Wizard does the following:

                                  • Locates unindexed columns

                                  • Displays a list that describes how the unindexed columns are configured

                                8. Verify that method is Database and Index Strategy is None for all columns.

                                  If the index strategy is None, then the Case Insensitivity Wizard does not create a CIAI column or index.

                                9. Click Next.

                                  The Case Insensitivity Wizard displays a list that describes the Siebel repository modifications it will make.

                                10. Verify that the Default Insensitivity property is DB Case & Accent for all columns.

                                11. Click Finish.

                                  The Case Insensitivity Wizard makes the modifications to the Siebel repository.

                                  Using the Case Insensitivity Wizard to Do Various CIAI Configuration Tasks

                                  You can use the Case Insensitivity Wizard to do various CIAI configuration tasks.

                                  To use the Case Insensitivity Wizard to do various CIAI configuration tasks

                                  • Use the following table to determine how to run the wizard.

                                    Table Running the Case Insensitivity Wizard to do Various CIAI Configuration Tasks

                                    Work You Must Perform How to Run the Case Insensitivity Wizard

                                    Define new columns to support a CIAI query.

                                    Use an input file or choose files manually.

                                    Deactivate CIAI for defined columns.

                                    Use an input file that specifies the columns. For each column, set Operation to Off.

                                    Modify the Default Insensitivity property from None to DB Case & Accent for eligible columns without indexes.

                                    Choose the Tools menu, Utilities, and then the Case Insensitivity menu item. Choose the Enable for All Unindexed Columns option.

                                    Modify the method from Force Case to Database for columns that are already defined.

                                    Use an input file or choose files manually.

                                    Modify the method from Database to Force Case for columns that are already defined.

                                    Use an input file that specifies the columns. For each column, set Operation to Off. This configuration deactivates the CIAI column and CIAI indexes. Verify that the Force Case property is set for base columns.

                                    Modify the index strategy from Single to Copy All for columns that are already defined.

                                    Use an input file that specifies to modify the index strategy from Single to Copy All.

                                    Modify the index strategy from Copy All to Single for columns that are already defined.

                                    Do the following:

                                    • Run the Case Insensitivity Wizard, using an input file that specifies the columns. For each column, set Operation to Off. This configuration deactivates the CIAI column and CIAI indexes.

                                    • Next, run the Case Insensitivity Wizard on the same base columns with method set to Database and Index Strategy set to Single. This configuration activates the index on the CIAI columns.

                                    Using the Case Insensitivity Wizard to Deactivate CIAI Configuration

                                    You can use the operation variable to deactivate CIAI configuration of columns. The operation variable determines if the columns and indexes that the Case Insensitivity Wizard creates are or are not active. The available values are On or Off. The default value is On.

                                    To use the Case Insensitivity Wizard to deactivate CIAI configuration

                                    • Run the Case Insensitivity Wizard against a column. Set the Operation to Off.

                                      The wizard does the following work:

                                      • Deactivates the CIAI index on the CIAI column.

                                      • Sets the related CIAI indexes to inactive for indexes that reference the base column.

                                      • Does not deactivate CIAI columns that reference the base column. You must manually set inactive to TRUE for each of these columns.

                                      • Does not delete CIAI columns or CIAI indexes in the Siebel repository.

                                    You cannot manually modify the Default Insensitivity property of a predefined Siebel column to None. You must run the Case Insensitivity Wizard for this column with Operation set to Off. This column is the last column in the csv file.

                                      Choosing the Correct Repository when Running the Case Insensitivity Wizard

                                      This topic describes how to choose the correct repository.

                                      To choose the correct repository when running the Case Insensitivity Wizard

                                      1. If you are not upgrading a development environment, then do the following:

                                        1. In the development environment, run the Case Insensitivity Wizard on the Siebel Repository.

                                        2. Create another schema.ddl file, and then use it to update your test and production environments.

                                      2. If you are upgrading a development environment, then run the Case Insensitivity wizard on the New Customer Repository.

                                        Later in the upgrade process, Siebel CRM renames this repository to Siebel Repository. To revise the columns you configured for a case insensitive query, you can run the Case Insensitivity Wizard after an upgrade is complete. For more information, see Siebel Database Upgrade Guide.

                                        Limiting the Length of Schema Object Names Manually

                                        You can manually limit the length of schema object names to 18 characters.

                                        To limit the length of schema object names manually

                                        1. In Siebel Tools, click the View menu, and then click Options.

                                        2. Choose the Database tab of the Development Tools Options dialog box.

                                        3. Make sure the Limit Schema Object Names to 18 Characters option contains a check mark, and then click OK.

                                          Other Configurations to Set Case Sensitivity

                                          This topic describes other configurations you can use to set case sensitivity.

                                            Using CIAI with Siebel Remote

                                            This topic describes how to configure Siebel CRM to use CIAI with a Siebel Remote client.

                                            To use CIAI with Siebel Remote
                                            1. Extract the local database.

                                              For information about how to extract the local database, see Siebel Remote and Replication Manager Administration Guide.

                                            2. Access the remote client, and then use a text editor to open the application configuration file.

                                              For example, open uagent.cfg for Siebel Call Center.

                                            3. In the Siebel section, set the following parameter:

                                              WATCOM_CIAI_FUNC = CIAI_UPPER
                                              
                                            4. Save, and then close the application configuration file.

                                              Using the Force Case Property of a Field to Force Case Sensitivity

                                              You can use the ForceCase property of a business component field to force case sensitivity. If the user steps off the record, then Siebel CRM applies the case that is defined in the ForceCase property. If the ForceCase property contains no value, then the text remains in the same case that the user uses when this user enters the text.

                                              To use the Force Case property of a field to force case sensitivity
                                              • Set the ForceCase property of a business component field to one of the following values:

                                                • Upper to force the text to all uppercase

                                                • Lower to force the text to all lowercase

                                                • FirstUpper to force the first letter of each word to uppercase

                                                Improving the Performance of a Siebel Application

                                                  Preventing a Secondary Query on a Foreign Key

                                                  Siebel CRM typically configures a multi-value link with a primary join. In this situation, the foreign key that this join uses to identify the primary record might not find the primary. For example, this problem can occur in the following situations:

                                                  • The primary record is deleted from the multi-value group.

                                                  • The multi-value group is new and does not contain any records.

                                                  You can define the multi-value link to update the primary foreign key to a value of NULL, or to a special value of NoMatchRowId, depending on your requirements. The purpose of the NoMatchRowId value is to prevent a secondary query on a foreign key value that failed. This configuration improves performance in the same way that a primary join improves performance.

                                                  For more information, see Configuring the Auto Primary Property of a Multi-Value Link, and How Siebel CRM Creates a Multi-Value Group.

                                                  To prevent a secondary query on a foreign key

                                                  1. If most parent records in the multi-value group do not include any child records, then do not set the Check No Match property of the multi-value link to TRUE.

                                                    In this situation, if you set Check No Match to TRUE, then performance is almost as slow as not having a primary join at all, and you might encounter serious negative performance consequences. In most situations, you must not set Check No Match to TRUE.

                                                    For more information, see Configuring the Check No Match Property of a Multi-Value Link.

                                                  2. If a user can add a record to the multi-value group other than through the multi-value group, then consider setting Check No Match to TRUE.

                                                    Consider the following examples:

                                                    • If a user can add a record to the same multi-value group through a multi-value link that is defined on the Contact business component in addition to a multi-value link that is defined on the Account business component

                                                    • If Enterprise Integration Manager adds records to the child business component

                                                  3. If you set CheckNoMatch to TRUE, then set the Use Primary Join property of the multi-value link to TRUE.

                                                    If the CheckNoMatch property is TRUE, and if the Use Primary Join is FALSE, then to find the child records, Siebel CRM always does the secondary query. For more information, see Configuring the Use Primary Join Property of a Multi-Value Link.

                                                    Modifying Custom Search Specifications

                                                    You can improve performance by modifying custom search specifications.

                                                    To modify custom search specifications

                                                    • Examine your custom search specifications:

                                                      • Avoid a field in the search specification that references a join.

                                                        If a business component defines an outer join, and if the Search Specification property of a business component includes a joined field that uses this outer join, then the SQL code modifies the inner join for performance reasons.

                                                      • Avoid using a business component field that is calculated.

                                                      • Avoid using a NOT or OR operator in the search specification. These operators force the Siebel database to run a full table scan that can adversely affect performance.

                                                    For more information, see Siebel Performance Tuning Guide.

                                                      Using Declarative Configuration to Enable a Button

                                                      To enable a button, you can script the WebApplet_PreCanInvokeMethod to set the CanInvoke parameter of an event to TRUE. It is recommended you use declarative configuration to enable a button because a performance cost occurs when scripting the WebApplet_PreCanInvokeMethod event.

                                                      To use declarative configuration to enable a button

                                                      • Use declarative configuration rather than scripting to enable a button.

                                                        You can configure the CanInvokeMethod applet user property to enable a button. For more information on using a minibutton to call a custom method, see Siebel Object Interfaces Reference.

                                                        Improving Performance When Using Applet Toggles

                                                        Siebel CRM loads all available applet toggles each time the user navigates to an applet. It cannot cache an applet toggle, so a negative affect on performance might occur. For more information, see Siebel Performance Tuning Guide.

                                                        To improve performance when using applet toggles

                                                        • Make sure no applet toggles are defined that Siebel CRM does not use or that are not necessary.

                                                          Deactivating Unused Screens

                                                          This topic describes how to deactivate predefined screens that Siebel CRM does not use in your implementation.

                                                          To deactivate unused screens

                                                          • Use one of the following configurations:

                                                            • Log in to the Siebel client, and then use the Responsibility Administration Screen to disassociate all views of the unused screen from the responsibilities that your organization uses. This configuration does not require you to deploy changes to the Siebel runtime repository. It provides an easy upgrade path if you decide to use the screen or views later. At that time, no configuration or software upgrade is required. You only need to reassign the views to the relevant responsibility.

                                                            • Use Siebel Tools to deactivate the screen. This configuration requires you to deploy changes to the Siebel runtime repository. When you compile, Siebel CRM does not include the inactive screen in the Siebel runtime repository.

                                                            Considering Factors That Affect Chart Performance

                                                            When a chart traverses records in the business component, Siebel CRM monitors the progress in a display at the lower quadrant of the window. Traversing all records of a business component might require significant time, so a chart is not appropriate for a data set that contains more than one thousand records.

                                                            When you design your implementation, consider how the following factors affect the performance of a chart in Siebel CRM:

                                                            • The number of records in the business component

                                                            • If the chart must or must not search a multi-value group to get data

                                                            • If a data point field is or is not defined

                                                            • If the data point field is a currency field, then consider the number of records whose currency is not the functional currency

                                                            • The processor, operating system, and database system you use

                                                              Considering Factors That Affect MLOV Performance

                                                              A custom MLOV can affect performance especially if the field that the list references is part of a search or sort. If you configure an MLOV, then you must consider and verify performance qualities. For more information, see Siebel Performance Tuning Guide.