Configuring Siebel Business Applications > Improving the Performance of Siebel Business Applications > Improving the Performance of a Siebel Application >

Defining the Primary ID Field of a Multi-Value Link


If you define a primary ID, then Siebel CRM can get one primary record more quickly from the master business component through a join than it can get all records through a subquery. The primary ID converts a one-to-many relationship into a one-to-one relationship. This configuration simplifies retrieval of the row from a query with subqueries to a simple join query. This configuration improves performance, especially if the user scrolls through the records of a list applet that displays the parent.

For example, in the Account business component the Primary ID Field property of the Business Address multi-value link is Primary Address Id. The Account Address Mvg Applet displays the corresponding multi-value group. Siebel CRM stores the row ID for the primary record in the Primary Address Id field in the account record. The Primary check mark in the list column identifies the primary. Each time Siebel CRM displays a different account record, the multi-value fields for the Address load only the values from the record of the primary Business Address. It is not necessary to query the Business Address business component for multiple rows. This configuration can significantly improve performance, especially in a list applet.

Most predefined multi-value links designate a primary record. A multi-value link that does not designate a primary record uses the first record that Siebel CRM gets from the child business component. The link and multi-value link include a set of properties that you can define to configure Siebel CRM to get the record Id of the first record that displays records from the child table each time it modifies the parent record. You can create a primary field for a one-to-many or a many-to-many relationship.

In a multi-value group applet, the list column that displays the check mark indicates the primary or nonprimary status of each record. This list column gets data for the column from the SSA Primary Field system field. Siebel Tools does not display this field in the Object Explorer or Object List Editor, but you can reference it from a list column.

For more information, see the following topics:

To define the Primary ID field of a multi-value link

  1. Create a Primary Id column.
  2. Create a new field that references the Primary Id column you created in Step 1.
  3. In a multi-value link, set the Primary Id Field property to the field you created in Step 2.

    The Primary Id Field property specifies the name of the field in the parent business component that contains the row IDs that reference primary records in the child business component.

    Do not display the Primary ID Field in the Siebel client. If you display the Primary ID Field in an editable control or list column on an applet, then the multi-value group applet does not update the primary. If you must display the Primary ID Field in the Siebel client, such as for testing, then use a read-only control or list column.

  4. Set the Use Primary Join property of the multi-value link to TRUE.

    For more information, see Configuring the Use Primary Join Property of a Multi-Value Link.

  5. Set the Auto Primary property.

    For more information, see Configuring the Auto Primary Property of a Multi-Value Link.

Configuring the Use Primary Join Property of a Multi-Value Link

The Use Primary Join property of a multi-value link enables the primary join feature. If you set Use Primary Join to TRUE, then Siebel CRM gets the primary child record for each parent record through a join with the Primary ID Field. If you set Use Primary Join to FALSE, then Siebel CRM queries the child table each time it modifies a parent.

Configuring the Auto Primary Property of a Multi-Value Link

The Auto Primary property determines how Siebel CRM enters row IDs into the Primary ID Field. It uses the Primary system list column in the multi-value group applet. The user can manually choose the primary. You can set the Auto Primary property to one of the following values:

About the Selected Option of the Auto Primary Property

The SELECTED option only applies if several multi-value links reference the same child business component. For example, with the predefined Bill To Business Address multi-value link and the predefined Ship To Business Address multi-value link. These multi-value links exist in the Order business component and in the Account business component. In this example, if a primary is not set for the Bill To address, then when Siebel CRM does a separate query to bring back all addresses that it associates with the account or order, it determines if one of the addresses is or is not already chosen as the primary for the Ship To address. If it is, then Siebel CRM sets that address as the primary for Bill To address.

How the Auto Primary Property Affects the Read-Only Status of the Primary ID Field

If the Auto Primary property of a multi-value link contains a value of SELECTED, then defining a read-only property at the applet level does not force the SSA Primary Field to be read-only. If the destination business component of the multi-value link is read-only, then Siebel CRM might display an error message that is similar to the following:

This operation is not available for a read-only field 'SSA Primary Field'

This errors occurs because Siebel CRM updates the Primary ID Field through the SSA Primary Field system field, which is part of the destination business component. If this business component is read-only, then the Primary ID Field is read-only and Siebel CRM cannot update it. For more information, see System Fields of a Business Component.

Configuring Siebel CRM to Not Override the Pick Map Value

If you set the Auto Primary property to DEFAULT in some configurations, then Siebel CRM might populate the Primary Owner Id with No Match Row Id. To avoid this problem, it is recommended that you set the Auto Primary property to NONE. For example, assume you do the following:

  • In Siebel Tools, create the following multivalue field in the Action business component:
    • Name. Owned By Division.
    • Multivalue Link. Employee.
    • Field Division.

      The Field in the Employee business component must be a multivalue field.

  • Expose the new multivalue field in the Contact Activity List Applet applet.
  • Log in to the Siebel CRM client as SADMIN, click Contacts, Contacts List, and then click the Last Name of any contact.
  • Create a new record in the Activities list. Note that Siebel CRM sets the value of the Employee field to SADMIN. This field is the Owned By multivalue field.
  • Click Query, and then click Go. Note that the Employee field is empty.
  • Open the Employee multivalue group applet. Note that one record exists for Siebel Administrator (SADMIN) but it is not the primary, and the Primary Owner Id field contains No Match Row Id.

In this situation, Siebel CRM incorrectly populates the Primary Owner Id with No Match Row Id. To avoid this problem, you can set the Auto Primary property to NONE instead of DEFAULT for the Employee multivalue list.

Configuring Siebel Business Applications Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Legal Notices.