4About Business Components, Fields, Joins, and Links

About Business Components, Fields, Joins, and Links

This chapter describes business components, business component fields, and joins. It includes the following topics:

Overview of Business Components

A business component provides the foundation for controlling how Siebel CRM chooses, inserts, and updates data in underlying tables. The information that Siebel CRM stores in a business component is typically specific to an area, such as a product, a contact, or an account. This information might or might not depend on other business components. A business component can exist in one or more business objects. It can include a default sort specification or search specification that allows you to display records in the Siebel client in a predetermined sort order and according to a set of selection criteria. Multiple users can instantiate copies of the same business component. Siebel CRM includes the data modifications that one user makes in all instances of the business component. For more information, see Business Component and Options to Filter Data That Siebel CRM Displays in an Applet.

    How Business Component Fields Reference Base Table Columns

    Siebel CRM gets the main data for a business component from a base table and one or more joined extension tables. For example, the Account business component references the S_PARTY table, but the S_ORG_EXT joined extension table stores most of the data that the Account business component gets.

    Siebel CRM assigns a base table to each predefined business component. The base table for a party business component includes the most important columns that provide data to fields that reside in the business component. The Table property of the business component references the base table. A single business component field references a single base table column.

    The following figure describes an example of how fields in the Contact business component reference columns in the S_CONTACT table.

    Example of How Fields in a Business Component Reference Columns in a Base Table

    A business component does not always reference all columns that reside in the base table, but typically it does reference most of them. Implied fields in the business component represent system columns in the base table, such as ROW_ID, CREATED_BY, and LAST_UPD_BY. A system column does not require a field object definition in the business component.

    For more information, see How an Implicit Join Creates a Relationship Between a Base Table and a Business Component.

      A Business Component Can Reference Data from a Joined Table

      A business component can reference data from an extension table and a joined table. A party business component is a business component that references the S_PARTY table as the base table. The main data for a party business component comes from a joined table. A join defines the relationship that exists between the business component and the additional table. For more information, see How the S_Party Table Controls Access.

      A joined table provides rows on a one-to-one basis to the business component. The foreign key relationship that exists between the joined table and the base table of the business component creates this basis. For every record in the business component that corresponds to a row in the base table, a corresponding row can exist in the joined table. Every record in the base table does not include a record in the joined table.

      The following figure describes fields in a business component that reference columns in a base table and a joined table.

      How Fields in a Business Component Reference Columns in a Base Table and a Joined Table

        You Can Reuse a Business Component

        The following figure describes how you can create a business component once in terms of a logical collection of columns from one or more tables, and then use it in multiple business object contexts. For more information, see About Business Objects.

        Example of How You Can Reuse a Business Component

          How a Business Component Gets Data from an External Database

          A virtual business component is a type of business component that references external data. This data is typically real-time information that Siebel CRM gets from an external database, but a virtual business component can reference any source that can supply data in reply to a structured query. You can use a virtual business component if you must get data from a location other than a table in the Siebel database.

          One-to-Many Extension Table Details
          Opportunity Products View

          You can use an external business component (EBC), which is a type of business component that uses ODBC and SQL to supply data. For more information, see Integration Platform Technologies: Siebel Enterprise Application Integration.

          A virtual business component allows you to do the following:

          • Represent external data as a virtual business component in Siebel CRM. The business component specifies the library that Siebel CRM uses to access the data.

          • Use a business service to transfer data.

          A virtual business component includes the following qualities:

          • Supports single-value field.

          • Supports field-level validation.

          • Supports a predefined business component event model. For example, PreNewRecord, PreDelete, and so on.

          • Supports insert, delete, query, and update operations.

          • Can be a stand-alone business component or a child business component in a business object.

          • Supports dynamic applet toggles. For more information, see Options to Toggle Between Applets in a View.

          • Can work as the parent of a link in a one-to-many relationship with another business component:

            • Siebel CRM creates a Siebel row ID in a virtual business component in the same way that it creates this ID in a predefined business component.

            • Supports a many-to-many relationship to an external system that works similarly to a one-to-many relationship.

            • Does not support a many-to-many relationship to another virtual business component.

          • Can be the basis for an applet.

          • Can be accessed through an object interface.

          • Can access all business component events for scripting.

          • Cannot be docked.

          For more information, see Overview: Siebel Enterprise Application Integration.

            Business Components That Hold Temporary Data for a Task UI

            A transient business component (TBC) is a type of business component that allows Siebel CRM to create data that the user can edit in a task-based user interface (Task UI). The data that Siebel CRM stores in a TBC is temporary. Siebel CRM uses this data during the life of the task UI typically to control the flow or logic, and then discards it when the task UI is complete. In some situations, Siebel CRM can store data in a TBC to long-term storage in the Siebel database. For more information, see Siebel Business Process Framework: Task UI Guide.

              Class Property of a Business Component

              Siebel CRM contains a hierarchy of business component classes. The CSSBusComp class resides at the top (highest level) of the hierarchy. Siebel CRM gets all other specialized business component classes from this CSSBusComp class. You must set the Class property of any new business component that you create to CSSBusComp or CSSBCBase. The following functionality is common for a business component:

              • Move through the set of records that Siebel CRM returns from the Siebel database

              • Get or set field values in records

              • Create and delete records

              • Commit modifications

              • Undo and redo

              • Set a bookmark

              • Do a search

              • Do a sort

                Caution About Using Specialized Classes

                A specialized business component class is a type of class that Siebel CRM derives from a generalized business component class. It is recommended that you use a specialized business component class only if necessary. It is recommended that you do not use a specialized business component class with a typical business component. These specialized classes often use functionality that references other objects, such as fields, other business components, or other classes. You must not configure Siebel CRM in such a way that it modifies the values that these objects contain.

                You must not modify the Class property of a predefined business component. If you copy a predefined business component, then you must not modify the Class property of the copy.

                Caution: Using a specialized business component class or applet class improperly might cause an unpredictable problem that can be difficult to fix. For example, Siebel CRM might add or delete a child record, or modify an associate record. A run-time error might occur. It is recommended that you configure the class property with extreme care and thoroughly test any modification you make.

                Oracle only supports methods that Siebel Object Interfaces Reference describes for use in scripting. Modifying method logic before or after Siebel CRM calls this method can cause unpredictable behavior.

                For more information, see Siebel Developer's Reference.

                  How a Business Component Sorts Records

                  A sort specification is a property of a business component that imposes a sort order on the records that Siebel CRM returns to an applet that references this business component. For example, the Sort Specification property of the predefined Account business component includes the following value:

                  Name(ASCENDING), Location
                  

                  This value configures Siebel CRM to do the following:

                  • Sort account records according to the account name in ascending order.

                  • If the name is the same for multiple accounts, then it sorts the records that contain the same name according to the Account Location.

                  A sort specification includes the following qualities:

                  • If the Sort Specification property is empty, then Siebel CRM returns the records in the order that they occur in the table.

                  • If a predefined query exists, then it might override a sort specification that is defined on a business component.

                  • If Siebel CRM runs a sort on one of the following fields, then a sort specification can result in a negative effect on performance:

                    • A field that references a join

                    • A field that references a new extension column that is not indexed

                    For more information, see Siebel Performance Tuning Guide.

                  • Siebel CRM displays empty records at the beginning of the result set.

                  • Siebel CRM cannot sort a calculated field.

                  • You can sort values in a static list or a pick applet differently than how the default sort for the underlying business component does the sort. For more information, see Creating a Sort Specification for a Static List.

                  For more information, see the following topics:

                    How Siebel CRMSorts a Multi-Value Field

                    If Siebel CRM references a multi-value field in a sort specification, then it does the following sort:

                    • Sorts on the initial value of the multi-value field. You must use this configuration only if the multi-value group references a primary foreign key.

                    • Does not sort the records that reside in the underlying multi-value group. To sort these records, you must create a sort specification in the child business component of the multi-value link.

                    For more information, see About the Multi-Value Field.

                      How Siebel CRM Sorts a Check Box Field

                      If a sort specification references a check box field, then Siebel CRM sorts the following values:

                      • Y

                      • N

                      • NULL

                      If a sort specification references a check box field, and if you define the sort in descending order, then Siebel CRM returns the records in the following order:

                      • NULL

                      • Y

                      • N

                        How the Visibility Mode Affects a Sort Specification

                        Siebel CRM forces the sort that the All visibility mode uses to be on the primary key. The sort in Manager mode occurs on a column in the denormalized reporting relationship table. Siebel CRM can still sort records after the initial query. For better performance, you must configure Siebel CRM to sort records after it filters for a small record set.

                        You can use the All Mode Sort business component user property to force Siebel CRM to use a custom sort specification or to ignore all sort specifications. For more information, see Siebel Developer's Reference.

                          Guidelines for Creating a Business Component

                          This topic describes guidelines for creating a business component. For more information, see the following topics:

                            Guidelines for Naming a Business Component

                            Do not use the parent entity in the name of a business component that represents child entities. For example, use ABC Subsegment instead of ABC Account Subsegment. Similarly, you can include only the name of the business component in an applet that references these child business components. For example, ABC Subsegment List Applet instead of ABC Account Subsegment List Applet.

                            An exception to this requirement occurs if you must use multiple variations of the same business component or applet. A multiple variation might be necessary if Siebel CRM must display an entity as the highest level applet and as a child applet on other views, and if these two applets are not the same applet. In this situation, you can place the name of the parent entity at the beginning of the name of the child applet. For example, the ABC Account Contact List Applet is a contact list that Siebel CRM displays as the child of an account. It uses the word Account to distinguish it from the predefined ABC Contact List Applet.

                              Guidelines for Creating a Business Component That References a Specialized Class

                              If you must create a new business component, then you must avoid copying a business component that references a specialized class unless you do the following:

                              • Create a true copy of the original business component that contains the same functionality.

                              • Apply only minimal modifications.

                              For example, you can create a Locked Service Requests business component that displays only the service requests that are locked. To do this, you use a business component user property:

                              • Copy the Service Request business component, and then reference the CSSBCServiceRequest specialized class from this new business component.

                              • Create the Lock Field business component user property.

                              • Create the conditions that Siebel CRM must use to lock a service request.

                              • Create a search specification for the business component that gets only the service requests that meet the conditions. For more information, see Options to Filter Data That Siebel CRM Displays in an Applet.

                              The underlying behavior of the new business component remains the same as the original business component. You must avoid copying a specialized business component to reproduce an isolated feature that is associated with that business component.

                              If you set the Class property of a business component to CSSBCServiceRequest, then you must add the Abstract field to this business component. If you do not add this field, and if an applet references a business component that is a child of the business component that you add, then Siebel CRM might disable the New button in this applet.

                              For more information, see Caution About Using Specialized Classes.

                                Guidelines for Configuring How a Business Component Sorts Records

                                If you define the Sort Specification property of a business component, then use the following guidelines:

                                • The fields that your sort specification references must be child objects of the business component.

                                • Use a comma to separate field names.

                                • Include (DESCENDING) or (DESC) after the field name to indicate that Siebel CRM sorts a field in the list in descending order. For example, Start Date (DESCENDING). If you do not add a sort order, then Siebel CRM uses ascending order.

                                • Do not enclose the field name in square brackets. For example, [Account Name]. Siebel CRM accepts brackets in a search specification but not in a sort specification. For more information, see Options to Filter Data That Siebel CRM Displays in an Applet.

                                • Do not exceed 255 characters in the sort specification.

                                  Guidelines for Modifying a Predefined Business Component That Siebel CRM Does Not Use

                                  If you modify a predefined business component that Siebel CRM does not use, then use the following guidelines:

                                  • You must not delete, deactivate, rename, or modify any predefined object that Siebel CRM does not use. Do not delete these objects because other objects might reference them.

                                  • You can delete any custom business component that you create that Siebel CRM does not use and that does not reference any other object that Siebel CRM uses, such as an applet.

                                    Overview of Business Component Fields

                                    A business component field typically represents the following values:

                                    • Information from a database column that the field gets from a table column. The column can reside in the base table, an extension table, or a joined table of the business component.

                                    • A calculated value that Siebel CRM gets from the values in other fields but that it does not store in the Siebel database. For more information, see How a Business Component Field Calculates a Value.

                                    For more information, see Business Component Field.

                                      How a Business Component Field Provides Data to the Control or List Column of an Applet

                                      The following table describes several examples of how a business component field provides data to the control or list column of an applet.

                                      Table Examples of How a Business Component Field Provides Data to the Control or List Column of an Applet

                                      Data in This Business Component Field Provides Data to This Applet Control or List Column

                                      Name field of the Opportunity business component.

                                      Name control of the Opportunity Form Applet - Child applet.

                                      Account field of the Opportunity business component.

                                      Account control of the Opportunity Form Applet - Child applet.

                                      Primary Revenue Amount field of the Opportunity business component.

                                      Revenue control of the Opportunity Form Applet - Child applet.

                                      Name field of the Account business component.

                                      Name list column of the Account List Applet.

                                      Main Phone Number field of the Account business component.

                                      Main Phone Number list column of the Account List Applet.

                                      The following figure describes how properties of a business component field and an applet reference each other when referenced from a form applet in comparison to a list applet. If a business component field is not a calculated field, then the Join and Column properties together define the table and column that Siebel CRM uses to get the data for the field. For more information, see How an Implicit Join Creates a Relationship Between a Base Table and a Business Component.

                                      Comparison Between How a Form Applet and a List Applet Reference a Business Component
                                      Explanation of Callouts

                                      The following properties of a business component field and an applet reference each other:

                                      1. Field property of a control. The Field property of a control references a business component field.

                                      2. Field property of a list column. The Field property of a list column references a business component field.

                                      3. Business Component property. The Business Component property of an applet references the business component.

                                        How a Business Component Field Identifies the Type of Data

                                        The Type property of a business component field identifies the type of data that Siebel CRM gets from and sends to the Siebel database. Siebel CRM does not map these data types to the physical data types that it defines for the database. The data type of the field is typically more specific than the data type of the underlying column. For example, the DTYPE_NUMBER (decimal) and DTYPE_INTEGER field data types each reference the Number physical data type in the column. For more information, see Type Property of a Business Component Field.

                                        Just as the data type of the underlying table column restricts the set of field data types that work correctly, the data type of a business component field restricts the set of format options that Siebel CRM can use in the control or list column that reference the field.

                                        It is recommended that you do not map a field to a table column that is not the same type as the field. For example, do not map a DTYPE_NUMBER business component field to a Varchar table column.

                                        Siebel CRM gets most default values for formats from the Microsoft Windows Control Panel. Overriding the default format in the Siebel repository but might cause confusion. For example, overriding a number format to display more or fewer decimal places is useful, but overriding a date format to DD/MM/YYYY is confusing to a user who set the date format to MM/DD/YYYY in the Control Panel. For more information, see How Siebel CRM Handles Certain Date Formats.

                                        The Type property of a multi-value field is empty because Siebel CRM defines the data type of the field in the child business component that enters data in the multi-value field. For more information, see About the Multi-Value Field.

                                          How a Business Component Field Calculates a Value

                                          A calculated field is a type of business component field that gets values from other fields that reside in the same business component or from the parent business component in an active link where the current business component is the child business component. The Calculated property of a calculated field contains a check mark and the Calculated Value property contains a value that is not empty.

                                          The Calculated Value property contains an expression that Siebel CRM builds from field names, predefined functions, and string, numeric, and logical operators. For example, the Calculated Value property of the Full Name field that resides in the Contact business component includes the following value:

                                          IIf (Language () = "JPN", [Last Name] + ' ' + [First Name], 
                                          [First Name] + ' ' + [Last Name])
                                          

                                          This expression does the following:

                                          • If the active client language is Japanese, then create the Full Name from the Last Name, an empty space, and the First Name.

                                          • If the active client language is not Japanese, then create the Full Name from the First Name, an empty space, and the Last Name.

                                          If you create a calculated field, then consider the following:

                                          • If Siebel CRM modifies the calculated value of a field, then it does not refresh this calculated field, by default. It only refreshes a calculated field after it commits the record. To refresh the field immediately after Siebel CRM modifies the value in this field, you can make sure the Immediate Post Changes property of this field contains a check mark.

                                          • A calculated field cannot reference itself in the Calculated Value property. For example, you cannot use Last Name in a calculation expression for the Last Name field.

                                          • If the Cache Data property of the business component contains a check mark, then Siebel CRM does not support a query on a calculated field in this business component.

                                          • You cannot use a script on a calculated field.

                                          For more information, see Siebel Developer's Reference.

                                            How a Business Component Field Sequences Records

                                            A situation might occur where you must create a field that provides sequential numbering for the parent business component. For example, you might need to number line items in an order or products in an opportunity. The sequence field behaves as follows:

                                            • It is editable and can be set to any number.

                                            • When Siebel CRM creates a new record, the initial sequence number is the maximum sequence number of the existing child records, incremented by one.

                                            • Siebel CRM does not renumber records to resolve the gap that results when it deletes a record. The user must do this work manually.

                                            For more information, see Determining How a Business Component Sequences Records.

                                              How Siebel CRM Creates a Sequence Field

                                              The following figure describes how Siebel CRM creates a sequence field.

                                              How Siebel CRM Creates a Sequence Field
                                              Explanation of Callouts

                                              Siebel CRM uses the following objects to create a sequence field:

                                              1. Parent business component. The business component that contains the parent records in the parent-child relationship where the child records are numbered. For example, the Opportunity business component is the parent in the parent-child relationship with Opportunity Product.

                                              2. Numbered business component. The business component that contains the child records in the parent-child relationship. For example, the Opportunity Product business component is the detail in the parent-child relationship with Opportunity. The numbered business component includes the following child object definitions:

                                                • Sequence value field. A DTYPE_NUMBER field that contains the resulting sequence value. Line Number and Order are examples of a sequence value field.

                                                • Business component user property. The Sequence Field business component user property must be present, with the Value property set to the name of the sequence value field.

                                              3. Sequence business component. This business component is named xx.yy.

                                                where:

                                                • xx is the name of the numbered business component.

                                                • yy is the name of the sequence value field.

                                                It references the CSSSequence specialized class, and it contains the following fields:

                                                • Sequence field. This field is named Sequence and is a DTYPE_NUMBER field.

                                                • Foreign key field. A foreign key field that references a foreign key column that resides in the detail table. The foreign key column references the primary key of the base table that the parent business component references. You can use it to create the link that resides between the parent business component and the sequence business component.

                                                For more information, see Caution About Using Specialized Classes.

                                              4. Detail table. The base table that the numbered business component and the sequence business component references.

                                              5. Main link. The parent-child relationship that exists between the parent business component and the numbered business component. This link is typically predefined, such as Opportunity or Opportunity Product.

                                              6. Sequence link. The parent-child relationship that exists between the parent business component and the sequence business component. You must typically add this link, except when a predefined Siebel application includes the sequence configuration. Opportunity and Opportunity Product.Line Number (Sequence) are examples of a link to a sequence business component.

                                              7. Business Object. Includes the main link and the sequence link.

                                              You can view an example configuration of a sequence field in a predefined Siebel application in Siebel Tools. For example, examine the Sales Assessment Attribute numbered business component, and the Sales Assessment Attribute Value.Order (Sequence) sequence business component.

                                                How Siebel CRM Defines Read-Only Behavior for a Business Component Field

                                                Table Sample table

                                                Column

                                                The name of the table’s column. Default table is the business component table. This property is required unless it is a calculated field.

                                                Name

                                                User-defined name for the field. It must be unique within the business component. This property is required.

                                                No Copy.

                                                If TRUE, the field’s value is not copied into the newly created record during a Copy Record operation. The No Copy property of a Multi Value Link will override the No Copy property of a Field in the child Business Component.

                                                Read Only

                                                If TRUE, the field value cannot be changed by the user.

                                                Required

                                                If TRUE, a value must be entered before the record can be written to the database.

                                                Text Length

                                                Siebel Tools gets the text length from the database and, for columns with a physical type of varchar, sets the Text Length property for a business component field to this value.

                                                If the physical type is character(1), the Text Length is set to 1 and the Type is set to DTYPE_BOOL.

                                                For number, date, and datetime fields, Siebel Tools does not put a value in Text Length. Exceptions are fields mapped to foreign key columns (these columns have names that end in ID and have a physical type of varchar and length of 15). These fields get a Siebel Type of DTYPE_ID and a Text Length of 15.

                                                If you edit the value in the Text Length property, it is ignored unless the value in a picklist is longer than what is specified on the business component field. In this case you get an error.

                                                Type

                                                The field data type. For information about the data types for the field object type, see How a Business Component Field Identifies the Type of Data.

                                                This topic describes how Siebel CRM defines read-only behavior for a business component. It includes the following information:

                                                You can turn on or turn off the read-only status of a business component or business component field while Siebel CRM is running, depending on the value that the field of the current record contains. For more information, see Defining Read-Only Behavior for a Business Component.

                                                The following table describes the business component user properties that you can use to define read-only behavior. For more information about user properties, see Siebel Developer's Reference.

                                                Table Business Component User Properties That You Can Use to Define Read-Only Behavior

                                                Business Component User Prop Description

                                                BC Read Only Field

                                                Defines a TRUE or FALSE field in the record. If TRUE, then the current record is read-only. For more information, see How the BC Read Only Field User Property Works.

                                                Field Read Only Field: fieldname

                                                Defines a TRUE or FALSE test field and a target field that reside in the same business component. If TRUE, then the target field is read-only.

                                                The format for FieldName works if FieldName is not a join field. If FieldName is a join field to another table, then this format does not update the field that uses this format in the Pre Default Value property of the field.

                                                For more information, see How the Field Read Only Field User Property Works.

                                                Parent Read Only Field

                                                Defines a TRUE or FALSE test on a field in the parent business component. If TRUE, then the target business component is read-only. For more information, see How the Parent Read Only Field User Property Works.

                                                Parent Read Only Field: business component name

                                                Defines a TRUE or FALSE test on a field that resides in the parent business component. This configuration is similar to the Parent Read Only Field business component user property, except the name of the user property rather than the value specifies the parent business component. For more information, see How the Parent Read Only Field: Business Component Name User Property Works.

                                                  How the BC Read Only Field User Property Works

                                                  The BC Read Only Field user property specifies a Boolean field that, if TRUE, modifies all fields that reside in the current record to read-only. It prevents the user from updating or deleting the record but it does not prevent the user from adding a new record to the business component.

                                                  The BC Read Only Field user property includes the following properties:

                                                  • Name. Contains the following value:

                                                    BC Read Only Field
                                                    
                                                  • Value. Contains the name of a field that resides in the parent business component of this business component user property. This field must be contain a TRUE or FALSE value.

                                                  Example of Using the BC Read Only Field User Property

                                                  Assume Siebel CRM must prevent the user from updating an inactive account. The Inactive Account field in an account record is a TRUE or FALSE field that, if TRUE, indicates that the account is inactive. To configure dynamic read-only behavior for the Account business component, you can add a business component user property to the Account business component. This example business component user property contains the following properties:

                                                  • Name. BC Read Only Field.

                                                  • Value. Inactive Account.

                                                    How the Field Read Only Field User Property Works

                                                    The Field Read Only Field user property is similar to the BC Read Only Field user property because it tests the field that you define in the Value property, and it enforces a read-only restriction if the value of the test field for the current record is TRUE. Unlike the BC Read Only Field user property, the Field Read Only Field user property restricts only one field in the business component record rather than restricting all fields in the entire business component record.

                                                    The Field Read Only Field user property includes the following properties:

                                                    • Name. Contains an expression in the following format:

                                                      Field Read Only Field: fieldname
                                                      

                                                      where:

                                                      • fieldname is the name of the field where Siebel CRM applies a read-only restriction.

                                                      For example:

                                                      Field Read Only Field: Account Status
                                                      

                                                      You must include only a single space between the colon and the field name.

                                                    • Value. Contains the name of the test field. This is a TRUE or FALSE field that resides in the parent business component of the user property.

                                                    You must create one Field Read Only Field user property for each field that you must make conditionally read-only.

                                                      How the Parent Read Only Field User Property Works

                                                      The Parent Read Only Field user property, like the BC Read Only Field user property, places a read-only restriction on an entire business component rather than on a single field. This restriction occurs if a TRUE or FALSE test field includes a TRUE value. Unlike the BC Read Only Field and Field Read Only Field user properties, the Parent Read Only Field user property places a restriction on a child business component of the business component that contains the test field. In the other user properties, Siebel CRM places the read-only restriction on the business component that contains the test field, or on another field in the same business component.

                                                      You can use the Parent Read Only Field user property to do the following:

                                                      • Restrict the child records that Siebel CRM includes in a multi-value group.

                                                      • Restrict the child records that Siebel CRM includes in a master-detail view. You must make sure that Siebel CRM does not use the restricted business component in the context of some other business object.

                                                      The Parent Read Only Field user property includes the following properties:

                                                      • Name. Contains Parent Read Only Field.

                                                      • Value. Contains an expression in the following format:

                                                        business component name.field name
                                                        

                                                        where:

                                                        • business component name is the name of the business component where the test field resides. For example, Account.Inactive Account.

                                                        • field name is the name of the test field. This field is the TRUE or FALSE field that Siebel CRM evaluates.

                                                      You add the user property as a child of the business component that Siebel CRM restricts according to a condition. The business component that contains the test field must be a parent of the restricted business component through a link or through a series of link relationships.

                                                      If you use the Parent Read Only Field user property, then the value of the Link Specification property of the test field must be TRUE. If it is not TRUE, then the dynamic read-only functionality does not work. If Siebel CRM displays the child record in the multi-value field in the parent business component, then the Link Specification property of the field does not have to equal TRUE.

                                                      Example of Using the Parent Read Only Field User Property

                                                      Assume that if the account record includes a Type of Competitor, then Siebel CRM must not update the Account Address Mvg Applet. To do configure this requirement, you add the same calculated field that the How the BC Read Only Field User Property Works topic describes. You then add a user property to the Business Address business component with the following values:

                                                      • Name. Parent Read Only Field.

                                                      • Value. Account.Competitor Calc.

                                                      This configuration causes the Account Address Mvg Applet to be read-only if the account record is for a competitor.

                                                        How the Parent Read Only Field: Business Component Name User Property Works

                                                        The Parent Read Only Field: business component name user property allows a child business component to do a TRUE or FALSE test on multiple parent business components. The behavior of the Parent Read Only Field: business component name user property is similar to the behavior of the Parent Read Only Field user property. The name rather than the value specifies the parent business component. If the calculated value of the field is TRUE or Y, then the child business component is read-only. For more information, see Siebel Developer's Reference.

                                                          Guidelines for Using a Business Component User Property With the Admin Mode Property

                                                          Do not use a business component user property with an applet that resides in a view if the Admin Mode Flag property of this view contains a check mark. If this Admin Mode Flag contains a check mark, then Siebel CRM does the following:

                                                          • Turns off all insert and update restrictions for the business components that the view uses, including the restrictions that the business component user property defines.

                                                          • Ignores the Sales Rep and Personal visibility modes of the business component.

                                                          • Makes records that do not include a primary team member visible.

                                                          • Does not override pop-up visibility.

                                                          You can include a check mark in the Admin Mode Flag property only if the view is part of a screen that contains only administration views. You can create a list view where the Admin Mode Flag property contains a check mark if this list view drills down to a detail view that Siebel CRM does not mark as an administration view. This configuration allows you to share a detail view with a list view that is not an administration view.

                                                          Caution: All views and drilldowns in a screen that is granted Admin Mode will behave according to the Admin Mode due to their subordinate relationship to the screen. If a view is a child of a screen that is in Admin Mode, and if the Admin Mode Flag property of the view does not contain a check mark, then Siebel CRM still displays the view in Admin Mode.

                                                            System Fields of a Business Component

                                                            A system field is a business component field that represents the data that Siebel CRM gets from a system column. All business components in Siebel CRM include system fields. You are not required to do any special configuration to display or manipulate a system field. You do not need to define it as a business component field. For example, you can reference a system field in the Field property of a control, list column, or in another object.

                                                            You must not modify a system field. For example, by renaming it. Siebel CRM does not support modifying a system field.

                                                            For more information, see System Columns of a Siebel Table, and.Displaying a System Field in an Applet.

                                                              Relationship Between a System Field and a System Column

                                                              The Id field that represents the ROW_ID column in a business component is an implicit field, and Siebel Tools does not display it in the Object Explorer as a child field of a business component. Every business component includes an Id field that represents the ROW_ID column of the base table of the business component, as defined in the Table property of the business component. The Siebel schema references the Id field in various properties throughout Siebel CRM. For example, in the Source Field property of a link where an empty value indicates the Id field.

                                                              You must not explicitly create a system field for a business component. If you create a business component field that references a system column, then Siebel CRM attempts to write a value to the column twice in the insert statement, which causes a duplicate column SQL error.

                                                              The following table describes the relationship that exists between a system field and a system column. Each field is predefined. You do not explicitly define it. You can configure Siebel CRM to reference a system field in the Field property of a control, list column, or other object, even though Siebel Tools does not display the field in the Business Components list.

                                                              Table Relationship Between a System Field and a System Column

                                                              System Field Name System Column Name Description

                                                              Id (or empty)

                                                              ROW_ID

                                                              Stores the primary key for the table.

                                                              Created

                                                              CREATED

                                                              Stores the date and time of when Siebel CRM created the row.

                                                              Created By

                                                              CREATED_BY

                                                              Stores the ROW_ID of the row from the S_USER table that references the person who created the record.

                                                              Updated

                                                              LAST_UPD

                                                              Stores the date of the most recent update that Siebel CRM performed on the row.

                                                              Updated By

                                                              LAST_UPD_BY

                                                              Stores the ROW_ID of the row from the S_USER table that references the person who last updated the record.

                                                              In some situations, Siebel CRM updates this field even though the user does not actively update the record. For example, if Siebel CRM configures a multi-value link with a primary join. For more information, see Defining the Primary ID Field of a Multi-Value Link.

                                                              (varies)

                                                              DB_LAST_UPD

                                                              Stores the date of the most recent update that Siebel CRM performed on the row in the Siebel database. The system field name varies.

                                                                Guidelines for Defining the Name of a Business Component Field

                                                                If you define the name of a business component field, then use the following guidelines:

                                                                • Do not use parentheses in a field name. If you do a query on a field name that contains parentheses, then you might receive an SQL error because SQL expects a valid SQL expression in the parentheses.

                                                                • Apply the following requirements if each field is the only such field in the business component:

                                                                  • If you name a currency code, then name it Currency Code.

                                                                  • If you name a currency date, then name it Exchange Date.

                                                                • If multiple instances of a similar field exist, then it is recommended that you prefix each field with the name of the corresponding Amount column. For example, Revenue Currency Code for revenue or Budget Currency Code for budgets. The reason for this configuration is that other fields reference these fields when you define the Currency Code Field property and the Exchange Date field. This configuration makes sure Siebel CRM can understand the reference.
                                                                • For a link, you must name the URL field URL and you must set the Class property of the business component to CSSBCBase.

                                                                For more information, see the following topics:

                                                                  About Joins

                                                                  This topic describes joins. It includes the following information:

                                                                  A join creates a relationship between a business component and a table that is not the base table of the business component. For more information, see Join.

                                                                  To observe how a join works, in the Siebel client, you can navigate to the Service Request screen, and then examine the Service Request List Applet. This applet includes the Account field. A join brings the Account field to the Service Request business component, and then the Service Request List Applet displays the data in the Siebel client.

                                                                  The following figure describes how a foreign key column that resides in the detail table defines the parent-child relationship. Multiple rows in the detail table include the same foreign key value that references back to the same row in the parent table. After you create a join, you can define more fields in the business component that reference columns in the joined table.

                                                                  Parent-Child Relationship in a Join

                                                                  You can use a joined field as the Source Field on the join specification. For example, if you must join grandparent data through the parent ID field on the parent business component.

                                                                  For more information about implicit joins, see How an Extension Table Stores Custom Data.

                                                                    How Siebel CRM Creates a Join

                                                                    The following figure describes how How Siebel CRM Creates a Sequence Field creates a join.

                                                                    How Siebel CRM Creates a Join

                                                                    Explanation of Callouts

                                                                    Siebel CRM uses the following objects to create a join:

                                                                    1. Business component. The business component is the parent of the join. Because of the join, a field in the business component that Siebel CRM joins can represent a column from the joined table.

                                                                    2. Joined field. A joined field is a business component field that represents a column from a table other than the base table of the business component. For more information, see How Siebel CRM Uses a Joined Field.

                                                                    3. Join. A join is a child of the business component. The join uniquely identifies a join relationship for the parent business component and provides the name of the joined table. The Table property of the join identifies the joined table. The join includes a child join constraint, which is an object that contains a constant value search specification that Siebel CRM applies to a column during a join. Siebel CRM uses it with an outer join. For more information, see Options to Filter Data That Siebel CRM Displays in an Applet.

                                                                      If Siebel CRM must get all records in the business component even if the joined fields are empty, then you must make sure the Outer Join Flag property contains a check mark.

                                                                    4. Join Specification. The join specification is a child of the join. It identifies the foreign key field in the business component and the primary key column in the joined table. For more information, see How Siebel CRM Uses the Join Specification.

                                                                    5. Foreign key field and foreign key column. The Source Field property of the join specification identifies the foreign key field. It represents a foreign key column that resides in the base table and it references the rows in the table that Siebel CRM uses in a join. For example, the foreign key field to the join on accounts data in the Contact business component is the Account Id field. This Account Id field references the PR_DEPT_OU_ID column in the base table.

                                                                    6. Joined table. The joined table is the parent table in the parent-child relationship. It provides columns to the business component through the join. The Table property of the join identifies the joined table.

                                                                    7. Primary key column. The Destination Column property of the join specification identifies the primary key column in the joined table. Each table in Siebel CRM includes a ROW_ID column that uniquely identifies the rows that the table contains. ROW_ID is the destination in most joins.

                                                                    8. Mapped column. Columns in the joined table are available for use in fields in the business component.

                                                                      How Siebel CRM Uses a Joined Field

                                                                      A joined field gets values through a join. Siebel CRM includes the name of the join in the Join property of the field. The Join property and Column property together identify the column and how to access it. If you create a joined field in a business component, then you can modify the Type property from the default DTYPE_TEXT to a more appropriate type. For example, if you join a table column that contains phone numbers, then you can modify the Type field to DTYPE_PHONE.

                                                                        How Siebel CRM Uses the Join Specification

                                                                        The Source Field property of the join specification identifies the foreign key field that resides in the business component. If left empty, then the Source Field is the Id field that indicates a one-to-one relationship between the business component and the joined table. Siebel CRM sometimes defines a system field as the foreign key field in the Source Field property. The Created By and Updated By fields are examples of system fields. For more information, see System Fields of a Business Component.

                                                                        The Destination Column property identifies the primary key column in the joined table. If the join occurs on a column other than ROW_ID, then the Destination Column property must not be empty. An empty value in the Destination Column property indicates that the destination column is ROW_ID that is typically the primary key in a table.

                                                                        In rare situations, multiple join specifications can exist in a single join. For example, the Sub Campaign business component includes a join to the S_LANG table with two join specifications. In this situation, the source fields in the join specifications must reference the same table. For more information, see Join Specification.

                                                                          How Siebel CRM Filters Duplicate Records From a Join In an Applet

                                                                          A join between two business components can return one or more records. For example, if the joined table is an intersection table. In the applet, Siebel CRM displays only the first record in the result set. An applet that references a business component cannot display duplicate records from the base table of the business component.

                                                                          For example, a many-to-many relationship exists between the Service Request and Organization business components. The link between these business components is Service Request/Organization. This link uses the S_SRV_REQ_BU table as the intersection table. In the Service Request business component, you can add a join to the S_SRV_REQ_BU table and a related joined field. If the user queries the business component to get a service request, and then the SELECT statement gets all the organizations that Siebel CRM associates with the service request. Siebel CRM displays only one service request record in the Siebel client. To view all the organizations that Siebel CRM associates with the service request, the user can open the multi-value group applet that references the Organization business component.

                                                                          For more information, see Guidelines for Naming an Object.

                                                                            Guidelines for Creating a Join

                                                                            If you create a join, then use the following guidelines:

                                                                            • Use a join only if it gets no records or only one record. For example, use a join to get the primary account for an opportunity.

                                                                            • Create a join only if the business component does not already include a join to a table that includes the data that your configuration requires, and only if a foreign key value exists between the base table of the business component and the joined table.

                                                                            • Create a join only if Siebel CRM stores the foreign key value in a field that it does not already define as a source in a predefined join.

                                                                            • If you use the Alias property to create an alias for each join, then a business component can include more than one join that references the same destination table. For example, the Action business component includes two joins that reference the S_CONTACT table:

                                                                              • The Owner join gets the person who created the activity.

                                                                              • The Primary Contact join gets the contact that is associated with the activity.

                                                                            • Make sure the Alias property of the join is unique even though the destination table is the same. Do not use the table name as the Alias name, even though this is common in the predefined Siebel repository. An implicit join uses the table name as the Alias to make sure that Siebel CRM does not use the name of the explicit join. To make sure that no conflict exists, you must always create a unique alias name for the join.

                                                                              Guidelines for Creating Joins With a Party Table

                                                                              If you create a join that does or does not involve a party table, then use the following guidelines:

                                                                              • If your join brings party data to a nonparty business component, then create a new join where the join specification references PAR_ROW_ID.

                                                                              • If your join brings party data to a party business component, then use the appropriate explicit join.

                                                                              • If you map fields in a party business component, then use the implicit join for the extension table.

                                                                              • If a join references a table that is a party table, then you must display the foreign key value as the source field. Unlike a join to a table that is not a party table, the destination column must reference the PAR_ROW_ID column that resides in the joined table.

                                                                              • If a join references a table that is not a party table, then Siebel CRM can update only the column that the field in the parent business component that contains the foreign key value references. You must define the following objects:

                                                                                • The joined table.

                                                                                • The join specification. The source field property must reference the parent business component that stores the foreign key value. The destination column property must reference the child table, which is typically ROW_ID.

                                                                              For more information, see How the S_Party Table Controls Access.

                                                                                About the Destination Field

                                                                                The Destination Field is a foreign key that references back to the parent business component. It identifies the field in the child business component that contains the data that constitutes the multi-value group. This field identifies the master record for each detail record. A foreign key field represents a foreign key column from the base table of the child business component. Account Id and Opportunity Id are typical foreign key fields.

                                                                                The Destination Field property must contain the name of a field in the base table of the business component that does not reference a join, and this field must be updated. The exception to this requirement occurs if a link references an intersection table, which is indicated if the Inter Table, Inter Parent Column, and Inter Child Column properties are not empty. In this situation, the Source Field and Destination Field properties are not defined.

                                                                                If you add a record to the child business component in a link, then Siebel CRM initializes a link destination field. You can create a source field for a many-to-many link. The destination always defaults to Id, even if you create another value.

                                                                                  About the Primary ID Field

                                                                                  The Primary ID Field is a field in the parent business component that includes the following items:

                                                                                  • Contains the row ID value of the primary record for each record of the multi-value group in the child business component.

                                                                                  • Identifies the field in the child business component that designates the record that is the primary.

                                                                                  • Identifies the foreign key field in the parent business component.

                                                                                  • Is identified in the Primary Id Field property of the multi-value link.

                                                                                  For more information, see Defining the Primary ID Field of a Multi-Value Link and Determining Whether You Can Reuse a Predefined Business Component Field.

                                                                                    About the Multi-Value Field

                                                                                    The multi-value field is a business component field that contains the name of the multi-value link in the Multi Value Link property and a check mark in the Multi Valued property. All other business component fields are single-value fields. A multi-value field contains data from a record in the child business component because of the multi-value link.

                                                                                    If you must query the parent applet for all parent records that contain a child record that holds a field value, then you must use a multi-value field.

                                                                                    The following table describes some of the properties of the multi-value field.

                                                                                    Table Some of the Properties of the Multi-Value Field

                                                                                    Property Description

                                                                                    Multi Value Link

                                                                                    Identifies the multi-value link that provides values through the link from the child business component. A multi-value field in the parent business component contains data that Siebel CRM gets from the current record in the child business component through the multi-value link and link. The Column property of a multi-value field is empty because Siebel CRM gets values from the current record in the child business component rather than from the base table of the parent business component.

                                                                                    Field

                                                                                    Identifies the field in the parent business component that provides values for the field in the child business component. Siebel CRM provides these values through the multi-value link object and the link object.

                                                                                    In Viewing an Example of a Multi-Value Group Applet, the Street Address multi-value field in the Account parent business component contains data from the primary record of the multi-value field in the child business component.

                                                                                    Multi Value Link Architecture

                                                                                    For more information, see How Siebel CRMSorts a Multi-Value Field and Activating a Multi-Value Field.


                                                                                    Objects and Relationships in a Link