Вы находитесь на странице: 1из 21

Business Components

A business component is a logical representation of one or more tables. Business components provide the foundation for controlling how data is selected, inserted, and updated in underlying tables. The information stored in a business component is usually specific to a particular functional area, such as a product, a contact, or an account. This information may or may not depend on other business components. Business components can be included in one or more business object definitions. They can have default sort or search specifications that allow you to expose records in the user interface in a predetermined sort order and according to a set of selection criteria. Multiple users can instantiate copies of the same business component. Data changes made by any one user are reflected in all instances of the business component. The main data for a business component comes from a base table and one or more joined extension tables. For example, the Account business component is based on the S_PARTY table, but most of the data retrieved by the business component is stored in the joined extension table, S_ORG_EXT.

Business Components Include Data From Base Tables


Each standard business component has a base table assigned to it. For non-party business components the base table provides the most important columns for use as fields in the business component. The base table is assigned to the business component with the Table property in the Business Components object definition. Fields in the business component map to columns in the base table.

Configuring Data-Driven Read-Only Behavior


Business components and fields can be configured as dynamically accessible, with their readonly status turned on and off depending on the value in a particular field in the current record. This is accomplished using one of the following business component user properties, depending on the requirement:

BC Read Only Field


This user property specifies a Boolean field that, when TRUE, causes all fields in the current record to become read-only. This also prevents the user from updating or deleting the record, but does not prevent the addition of new records to the business component. The Name and Value properties in the user property record are specified as follows: Name. Contains the literal text BC Read Only Field. Value. Contains the name of a field in the same business component as the parent object definition of the user property. This field must be a TRUE or FALSE field.

An example of the use of BC Read Only Field is the situation in which you need to prevent users from updating inactive accounts. The Inactive Account field in an account record is a TRUE or FALSE field that, when TRUE, indicates that the account is inactive. To configure dynamic read-only behavior for the Account business component based on this field, add a business component user property child object definition to the Account business component, with the following property settings: Name. BC Read Only Field. Value. Inactive Account.

Field Read Only Field


This user property is similar to BC Read Only Field, in that it tests the field specified in the Value property and enforces a read-only restriction when the test field has a value of TRUE in the current record. However, unlike BC Read Only Field, the Field Read Only Field user property restricts one field in the same business component, rather than the entire business component record. The Name and Value properties in the user property record are specified as follows: Name. Contains an expression in the following format: Field Read Only Field: fieldname For example: Field Read Only Field: Account Status Note that there is 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 in the same business component as the parent object definition of the user property. One Field Read Only Field user property must be created for each field you want to make conditionally read-only. An example of the use of Field Read Only Field is the situation in which you want to make the Competitor field in an account record read-only when the Type field has a value of Competitor. In other words, if an account record has been included because that account is a competitor, you do not want users to be specifying that accounts competitors. The following procedure describes how to accomplish this.

To restrict the Competitor field in an account based on the accounts type 1 Navigate to the Business Component object type in the Object Explorer, and then to the
Account object definition in the Object List Editor. 2 Create a calculated Boolean field in this business component that will have a value of TRUE when the Type field has a value of Competitor. For purposes of the example, the name of this test field can be Competitor Calc, although the name is unimportant as long as it is referenced correctly in the user property. 3 In the calculation property of the Competitor Calc field, enter the following value: IIf([Type] = "Competitor", "Y", "N") 4 Expand the Business Component object type in the Object Explorer, and select the Business Component User Prop object type. Click the Object List Editor to make it active, and then add a record. 5 Set the following values in the new Business Component User Prop object definition:

Name. Field Read Only Field: Competitor Value. Competitor Calc

Parent Read Only Field


This property, like BC Read Only Field, places a read-only restriction on an entire business component, rather than a single target field. This restriction occurs when a TRUE or FALSE test field has a TRUE value. However, unlike BC Read Only Field and Field Read Only Field, this user property is used to place a restriction on a child business component of the business component containing the test field. In the other user properties, the read-only restriction is placed on the business component containing the test field, or on another field in the same business component. Parent Read Only Field is used primarily to restrict the detail records in a multivalue group. It could also be used to restrict the detail records in a master-detail view, but in that case you need to make sure that the restricted business component is not also used in the context of some other business object than the intended one. The Name and Value properties in the user property record are specified as follows: Name. Contains the literal text Parent Read Only Field. Value. Contains an expression in the following format: buscompname.fieldname where fieldname is the name of the test field, that is, the TRUE or FALSE field to be evaluated, and buscompname is the name of the business component in which the test field is located. For example: Account.Inactive Account The business component to be conditionally restricted is the one to which you add the user property as a child object definition. The business component containing the test field must be a parent of the restricted business component by way of a link or series of link relationships. An example of the use of this user property is the situation where you want to disable the update of the Account Address multivalue group when the account record has a Type of Competitor. To accomplish this, you add the same calculated field as in the Field Read Only Field example, and 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 causes the Account Address multivalue group to be read-only when the account record is for a competitor. NOTE: When using the Parent Read Only Field user property, the test field must have its Link Specification property set to TRUE. Otherwise the dynamic read-only functionality does not work. However, if the child record is displayed in the multivalue field in the parent business component, it is not necessary to have the Link Specification property of the field set to TRUE.

Parent Read Only Field: buscompname


This user property allows a child business component to have TRUE/FALSE tests on multiple parent business components. The behavior of Parent Read Only Field: buscompname is similar to that of

Parent Read Only Field, but its name, rather than its value, specifies the parent business component. When the calculated value of the specified field evaluates to TRUE or Y, the child business component becomes read-only.

About Joins
A Join object definition creates a relationship between a business component and a table other than its base table. This relationship allows the business component to use columns from the other table. The join uses a foreign key in the business component to obtain rows on a one-to-one basis from the joined table, even though the two tables do not necessarily have a one-to-one relationship.

About Implicit Joins


Implicit joins exist as part of the Siebel object architecture. They are not explicitly defined using Siebel Tools. Unlike joins that you define in Siebel Tools, users can update the columns from implicit joins. Implicit joins exist for the following: All 1:1 (_X) extension tables and all relevant intersection tables. Extension tables of S_PARTY, such as S_ORG_EXT, S_CONTACT, S_POSTN, and S_USER. These implicit joins are used to map data to party business components. For example, if you were to add a field to the Account business component and then selected the Join property, you would see several implicit joins that do not appear in the Join list displayed in the Tools Object List Editor, including joins with an alias of S_ORG_EXT and S_USERs. Implicit joins usually use the table name as the Join Alias. NOTE: Set the Outer Join Flag to TRUE if you want to retrieve all the records in the business component even when the joined fields are empty.

Using a Predefault Value for a Joined Field


Because a joined field cannot be updated, you cannot use a predefault value in the regular way as a default field value if nothing is specified when a record is inserted. You can use a predefault value for a joined field to show the field value immediately as the new record is being inserted. The following procedure uses the Opportunity Product business component as an example.

To use a predefault value for a joined field 1 Define a join to S_OPTY in the Opportunity Product business component. 2 Define two new fields based on the join to show Opportunity Sales Stage and Name. 3 Add the two fields to the Opportunity Product applet. 4 Compile and test using the standard OpportunitiesProducts view. a Add a new Product for an Opportunity. b Note that the joined fields are not populated until
you requery the applet. (However, the source fieldOppty Idfor the join is populated.) 5 Set the Predefault properties of the new fields to Parent: 'ParentBusinessComponent.JoinedField'.

For example, predefault Opportunity Name with Parent: 'Opportunity.Name' and predefault Opportunity Sales Stage with Parent: 'Opportunity.Sales Stage'. 6 Set the Link Specification property of the joined fields (Name and Sales Stage) in the parent business component to TRUE. 7 Compile and then add a new product for an Opportunity. The joined fields are populated immediately, and you do not need to requery the applet to see them.

About Links
A link defines a one-to-many (or master-detail) relationship between two business components. The Link object type makes master-detail views possible, in which one record of the master business component displays with many detail business component records that correspond to the master.

About the Cascade Delete Property


The Cascade Delete property determines whether a child record is deleted when the parent record is deleted. Take special precautions when determining this property. If set incorrectly, it may cause data integrity issues or orphaned records. The Cascade Delete property can be set to the following values: Delete. The detail records are deleted along with the master. This is most appropriate for values stored on _XM tables where the only related record is the parent record. Do not use DELETE if the child business component in this link is also a detail business component in another link. In this case, use CLEAR instead. Clear. The foreign key reference is removed if the master record is deleted, but the detail records remain in place. However, the value in the foreign key column is cleared. This is most appropriate for child values that might be shared with other parent records. None. No records are deleted and the foreign key column is not cleared. This is the default setting. Cascade Delete is not available for many-to-many links. With a many-to-many link, Siebel applications will automatically delete the intersection record but will leave the child record intact, as it may have other parents. When you delete a record which is pointed to by foreign keys of other tables, the references to it may or may not be deleted. If those references are not deleted, the user is left with row IDs which point to nonexistent records. In the case of multivalue groups, sometimes these foreign keys will be converted to say No Match Row Id.

Using the Check No Match Property with a Primary Join

When a multivalue link has been configured with a primary joinwhich is the typical situationthere are circumstances in which the foreign key used by this join to identify the primary record is unable to find the primary. For example, this can happen when the primary record has been deleted from the multivalue group or the multivalue group is newly created and has no records. In such cases, the multivalue link can be configured to update the primary foreign key to a value of NULL, or to a special value of NoMatchRowId, depending on your requirements. This behavior is configured through the Check No Match property of the Multi Value Link object type, and has performance consequences. The purpose of the special NoMatchRowId value is to prevent secondary queries on foreign key values that are known to have failed, thereby improving performance, much in the same way that using a primary join improves performance. The NoMatchRowId generating and testing behavior is activated by setting Check No Match to FALSE for the MVL. This setting has the following results: When the application encounters a master record where the primary foreign key is NULL or invalid, it performs a secondary query to determine if there are detail records in the multivalue group. If it finds there are no detail records, it sets the primary ID field to the special value NoMatchRowId. When the application encounters a master record where the primary foreign key has the value NoMatchRowId, this indicates to the system that there are no detail records in the multivalue group and the secondary query is not performed. If you set Check No Match to TRUE, the Siebel application will perform a secondary query whenever the outer join on the primary fails, or is set to NULL or NoMatchRowId. If the secondary query finds a matching detail record, it updates the foreign key with that records row ID, provided the MVL has an Auto Primary property setting of DEFAULT. If no matching child record is found, or Auto Primary is set to NONE, the application leaves the existing value intact. A Check No Match setting of TRUE can have serious negative performance consequences. If a multivalue group is sparsely populated (that is, most master records do not have any detail records in the multivalue group) and has Check No Match set to TRUE, it will be almost as slow as not having a primary join at all. Check No Match should be set to FALSE for most multivalue links because of the performance consequences. It should only be set to TRUE if the multivalue group could possibly have records added to it without going through the MVG itself. For example, account addresses might actually be inserted by means of the Business Address multivalue group on the Contact business component instead of the Address multivalue group on the Account business component. Also, if records can be added to the detail business component through EIM, the TRUE setting is the appropriate one. The Use Primary Join property should be set to TRUE if CheckNoMatch is TRUE. If CheckNoMatch is

set to TRUE and Use Primary Join is FALSE, then the Siebel application will always do the secondary query to find the child records.

Configuring the Primary ID Field


The Link and Multi Value Link object definitions have a set of properties that you can use to specify to the system how to obtain the record ID of the first record to display of the detail table each time the master record changes. These properties are Primary Id Field, Use Primary Join, and Auto Primary. Together they implement the primary ID field. The basic concept behind a primary ID is that it is faster for a Siebel application to retrieve one primary record from the MVG business component through a join than retrieve all of them through a subqueryespecially because users can see values from only one child record until they open up the MVG applet. To create a primary field for a one-to-many or many-to-many relationship, complete the following procedure.

To configure a primary field for a 1:M or M:M relationship 1 Create a Primary Id column. 2 Create a field based on that Primary Id column. 3 In a Multi Value Link object, set the Primary Id Field attribute to the new Primary Id field. 4 Set the Use Primary Join attribute to TRUE.
For example, in the Account business component the primary ID field for the Address multivalue group is called Primary Address Id. The Account Address Mvg Applet displays the corresponding multivalue group. The primary record, indicated with a check mark in the list column labeled Primary, has its row ID stored in the Primary Address Id field in the account record. Each time there is a different account record displayed, the multivalue fields for the Address load the primary Business Address records values only. It is not necessary to query the Business Address business component for multiple rows. This can be a significant performance enhancement, especially in list applets. NOTE: In a multivalue group applet, the list column that displays the check mark (indicating the primary or nonprimary status of each record) obtains its data from a system field called SSA Primary Field. This field does not appear in the Object Explorer or Object List Editor, but may be referenced by a list column for this purpose. The benefit of using a primary ID, from the systems standpoint, is that it converts a one-tomany relationship into a one-to-one relationship. This allows the row retrieval process to be simplified from a query with subqueries to a simple join query. This substantially improves performance, especially when the user is scrolling through the records of a list applet that displays the master. The properties of Link or Multi Value Link object types used to implement a primary ID field are as follows: Primary ID Field. This property specifies the name of the field in the master business

component that holds the row ID values pointing to primary records in the detail business component. NOTE: Do not display primary ID fields in the user interface. Exposing primary ID fields using an editable control or list column on an applet causes the update of the primary from the MVG applet not to be triggered. If you wish to expose primary ID fields on the UI, such as for testing, use a read-only control or list column. Use Primary Join. The Use Primary Join property is a TRUE or FALSE property that turns the Primary Join feature on or off. If TRUE, the primary detail record is obtained for each master record through a join on the primary ID field. If FALSE, the detail table is queried again with each master record change. Auto Primary. This property setting determines how row ID values are populated in the primary ID field, based on a system-supplied list column labeled Primary in the multivalue group applet. The user can manually select the primary. Auto Primary determines how, if at all, the primary selection is defaulted. The possible values for Auto Primary are DEFAULT, SELECTED, or NONE as follows: DEFAULT. The first record automatically becomes the primary.
SELECTED. The highlighted record becomes the primary when the user views the multivalue

group applet and then exits. NONE. The user must specify the primary manually. SELECTED only pertains when there are several multivalue links pointing to the same detail business component. This is the case for the Bill To Business Address and Ship To Business Address multivalue links in a standard Siebel Sales application. These multivalue links exist under both the Order and Account business components. In this case, an example of the desired behavior is as follows: if a primary is not set for the Bill To address, then when the Siebel application does a separate query to bring back all addresses associated with the account (or order), it will check to see whether one of the addresses has already been selected as primary for the Ship To address and, if so, it will SELECT (that is, set) that address as the primary for Bill To address as well. When the Auto Primary property of a Multi Value Link object has a value of SELECTED, setting read-only properties at the applet level still does not force the SSA Primary Field to be readonly. NOTE: If the destination business component of the Multi Value Link object is read-only, you may receive the following error message, This operation is not available for a read-only field SSA Primary Field. This is because the Primary ID field is automatically updated through the system field SSA Primary Field, which belongs to the destination business component. Additionally, if this business component is read-only, the field is read-only as well and cannot be updated.

Configuring a Hierarchical Picklist


To configure a hierarchical picklist 1 Configure a parent and a child picklist. a Set the Business Component property of the parent picklist to Picklist Hierarchical. b Set the Business Component property of the child picklist to PickList Hierarchical Sub-Area. 2 Go to the business component that contains the fields that you want to associate the
hierarchical picklists with.

a Set the Picklist property of the parent field to the parent picklist. b Set the Immediate Post Changes property of the parent field to TRUE. c Set the PickList property of the child field to the child picklist. d For the child field, create the following Pick Map objects.
Field picklist field constrain Field PickList Field Constrain [name of parent field] Parent TRUE [name of child field name] Value Leave blank. 3 Compile changes to a repository file. 4 Add LOV values using the Parent LIC column to designate the parent value.

Party Data Model


The S_PARTY table is the base table for all of the partiesPerson (Contact), User, Employee, Partner User, Position, Account, Division, Organization, Partner Organization, Household, User List, and Access Group. For each party record stored in the S_PARTY table, the value of the PARTY_TYPE_CD column denotes the party type. Along with the party type, extension tables provide the primary differentiation between the different parties. The party model organizes entities such as Person, Organization, Position, and Household. A party always represents a single person or a group that can be translated into a set of people such as a company or a household. Siebel data access technology makes use of the Party model. Certain parts of the data model use the Party model to abstract the difference between people, companies, households and other legal entities. This covers relationships between your company and people (contacts, employees, partner employees, users) and other businesses (accounts, divisions, organizations, partners). The base table for all such access is S_PARTY. Related tables are implicitly joined as extension tables. Because these extension tables are implicitly joined to S_PARTY, they are available through S_PARTY. Two preconfigured intersection tables (S_PARTY_PER and S_PARTY_REL) implement M:M relationships between party business components, such as Account and Contact. Which one you use depends on whether or not you need to enforce access control. Use S_PARTY_PER when implementing M:M relationships between two party business components where you need to define access control. Records in S_PARTY_PER propagate data access rights from the parent to the child parties. However, it is important to minimize the number of rows in S_PARTY_PER to maintain good response times in visibility-constrained queries. Therefore, when implementing M:M relationships where you do not need to enforce access control, such as when implementing a recursive M:M relationship between a party business component and itself, use S_PARTY_REL. For example, use S_PARTY_PER to implement relationships between members: Access groups and members

Accounts and contacts Employees and positions User lists and users If you need to extend tables in the party model, you need to create an extension table from S_PARTY. For example, S_CONTACT is an extension table of S_PARTY. Because S_CONTACT is of type Extension (Siebel), you cannot use it as a base table for an extension table. You must create an extension table and use S_PARTY as the base table. To display data from the new extension table, create a Join object (explicit join) to bring in data from the new extension table to the business component you are using.

How Parties Relate to Each Other


Parties have some required relationships, as described below. Divisions, organizations, and accounts are instances of the Organization party type. A division, internal or partner, is also an organization if its internal organization flag is TRUE (INT_ORG_FLG = Y) and it has an associated S_BU record. Every division is associated with one organization: either itself or the closest ancestor division that is also an organization. Every position is associated with a division. The position is then also automatically associated with one organization: the organization with which the division is associated. Persons (contacts), users, employees, partner users are instances of the Person party type. Typically, you associate each employee and partner user with one or more positions. The employee or partner user has only one active position at one time. The employee or partner user is automatically associated with one division and one organization at a timethe division and organization associated with the active position. For purposes of granting visibility to data, associations of parties of type Person with other types of parties are stored using the S_PARTY_PER table. For example, accounts are associated with contacts, users are associated with positions, and so on. A user associated with a position can see data for accounts or opportunities assigned to the position (when this is the active position). Relationships stored in S_PARTY_REL also affect data routing for mobile users. For purposes of storing ad hoc, informational relationships between parties, such associations are stored using the S_PARTY_REL table. For example, a company and its accounting firm may both be stored as accounts. Assuming that your application provides the capability to define this relationship, it can be stored in the S_PARTY_REL table. Ad hoc and informational relationships between parties are stored in the table S_PARTY_REL. For example, a company and its accounting firm may both be stored as accounts. The relationship between these two accounts can be stored in the S_PARTY_REL table, assuming that your application has been configured to define these relationships.

Person (Contact) Data Model

the base table and extension table (S_CONTACT) that define a Person, or Contact .A Person is the simplest representation of an individual in the database.

User Data Model


the base table and extension tables (S_CONTACT and S_USER) that define a User. A User is a Person with the following added qualities: The S_USER table contains a login for this user. The S_PER_RESP intersection table (not shown) specifies a responsibility for this user. It is possible to promote a contact to a user. For example, adding a User ID value for a person in the All Persons view in the Administration - User screen causes the person to appear as a user in the Users view.

Employee Data Model


the base table and extension tables (S_CONTACT, S_USER, and S_EMP_PER) that define an Employee. Internal Employees and Partner Users are each represented as Employee records. An Employee is a User with the following added qualities: S_EMP_PER provides employee data for this user. A position defined using the S_POSTN table is typically (but not necessarily) associated with an employee. If the organization to which the position belongs is not a partner organization, then the employee is an internal employee.
If the organization is a partner organization, then the employee is a partner user.

Division Data Model


the base table and extension table (S_ORG_EXT) that define a Division. In S_ORG_EXT, the flag INT_ORG_FLG = Y specifies that a division is an internal organization. (For an account, this flag is set to N.) (Accounts, Divisions, Organizations, and Partner Organizations share many of the same data model elements.)

Organization Data Model


the base table and extension tables (S_ORG_EXT and S_BU) that define an Organization An Organization, sometimes known as a business unit, is also a Division, but has a record in the

S_BU table.

Partner Organization Data Model


the base table and extension tables (S_ORG_EXT, S_BU, and S_ORG_PRTNR) that define a Partner Organization A Partner Organization is the same as an Organization but the flag PRTNR_FLG in S_ORG_EXT qualifies it as a Partner Organization.

Functions Used in Calculation Expressions


Count (mvlink) Returns the number of rows in the multi-value group defined by the MVL mvlink. Max ([mvfield]) Returns the Maximum value from a field in child records. You must define the child record being examined as a multivalue field that is part of a multivalue group. The multivalue group is associated with the business component of the field being evaluated. For example: Max ([Number of Employees]) gives the maximum number of employees of all the locations. Min ([mvfield]) Returns the minimum value from a field in child records. You must define the child record being examined as a multivalue field that is part of a multivalue group. The multivalue group is associated with the business component of the field being evaluated. For example: Min ([Number of Employees]) gives the minimum number of employees of all the locations. ParentBCName () Parent (master) business component name for active link (for example, Opportunity). ParentFieldValue (field_name) Returns the value of the field_name field in the parent business component. The result is not typed correctly but is always of type String. Also, the result does not change if the parent row is updated. The parent business component field must be exported by using Link Specification = TRUE. NOTE: If there is no parent business component, or if the parent business component has not yet been instantiated (such as in a script), the error No active link is returned. RowIdToRowIdNum ([Id]) Converts an alphanumeric row ID to a unique, pure numeric row ID in the Service Request business component. Sum ([mvfield]) Sums the values from a field in child records into a field in a parent record. The child record being summed from must be defined as a multivalue field that is part of a multi-value group that is associated with the business component of the field being summed to.

About User Properties


User properties are object definitions that are added as children to an applet, business component, control, field, or list column to configure specialized behavior beyond what is configured in the parent

object definitions properties. These user properties belong to the following Siebel object types: Applet Application Assignment Business Component Business Service Business Service Method Arg Control Field Integration Component Integration Component Field Integration Object List Column View Virtual Business Component

PDQDisabledViewn
This user property allows you to disable the Predefined Query (PDQ) dropdown for the view name defined for the property. NOTE: As of release 8.0, you no longer set this property in the application .cfg file; instead, you set it as an application user property in Siebel Tools. Value Name of the view for which you want to disable the Predefined Query (PDQ) dropdown. Some of the predefined property values include: PDQDisabledView0 = Order History View (eSales) PDQDisabledView1 = Order History View - My Company (eSales) PDQDisabledView2 = Order History Summary View (eSales) PDQDisabledView3 = Order Confirmation View (eSales) PDQDisabledView4 = Order Approval View (eSales) PDQDisabledView5 = Saved Quotes View (eSales) PDQDisabledView6 = Saved Quotes View - My Company (eSales) PDQDisabledView7 = Saved Quote Detail View (eSales) PDQDisabledView8 = Quote Summary View (eSales) Usage This user property is used to disable the Predefined Query (PDQ) dropdown for the view name defined for the property. Parent Object Type Application Functional Area Query

CanInvokeMethod: MethodName
This user property allows you to enable and disable methods, such as buttons, declaratively at the applet level. It is easier to use than PreCanInvokeMethod scripting and in many cases can be used instead. Name CanInvokeMethod: MethodName Value Value or expression that returns TRUE or FALSE

Usage This user property is used to enable and disable methods declaratively. For example, Copy Record on the Partner Product List Applet is disabled by default: Name: CanInvokeMethod: CopyRecord Value: N You can inactivate or modify the value for this user property. You can also create new instances of this user property as needed. Parent Object Type Applet Functional Area CSSFrame, CSSFrameList, and their subclasses

Default Applet Method


The Default Applet Method user property specifies the method that is executed when the user presses the Enter key in the applet. Value The value of this user property must be the name of a method that is accessible from the applet. Usage The method specified in this user property is executed when the Enter key is pressed. You can inactivate and modify values for this user property. You can also create new instances of this user property, but only one such user property on each applet. Parent Object Type Applet Functional Area CSSSWEFrame

DefaultFocus User Properties


These applet user properties set the field or control within an applet that receives focus by default that is, before a user interacts to dynamically change the field or control with focus. This user property is provided to allow overriding the field or control that receives default focus as determined by the applets mode. The modes in which an applet can be deployed are defined in Object Explorer > Applets > Applet Web Templates. CAUTION: If you set default focus to a field or control that is off the screen, one of two things may happen: The user may not know where focus is. The application may try to adjust the vertical position of the view to try to show the in-focus field or control. In either case, the behavior may be disruptive to end users.

Named Method n (Applet)


This user property allows you to invoke a business component or business service method, or set a field value. It can be used in place of scripting. Value The value you provide for the Named Method user property depends on the action you want to perform. For setting a field value, the value consists of three quoted parameters separated by a comma and a space, as follows: "Name", "SET", "Field", "Expression" When Name is called, the value of Field is set using Expression. For invoking a business component method, the value consists of four quoted parameters separated by a comma and a space, as follows:

"Name", "Action", "BusComp", "Method" When Name is called, Method is invoked on the BusComp business component based on the defined Action. For a list of actions, see Table 16 on page 94. For invoking a business service method, the value consists of five quoted parameters separated by a comma and a space, as follows: "Name", "Action", "BusComp", "Service", "Method" When Name is called, Method from the Service business service is invoked on the BusComp business component based on the defined Action. For a list of actions, see Table 16 on page 94. You can optionally append an additional parameter that defines an expression. If you use a business service action, the expression is passed as a property set, so you must use name-value pairs rather than an array of strings (NameExpr, ValueExpr). Usage Sometimes it is necessary to trigger actions in response to data changes, for example when records are created, deleted, or updated. The response can be required to be triggered before or after the date change has been applied. Within the Siebel Application there is standard functionality, including user properties, to allow you to implement automated responses to data changes without the need to use custom scripts. The Named Method n applet user property can be used to invoke methods in a certain order. For example, the Named Method n applet user property can be used to update a legacy system with new Account records after a new record is created in the Siebel application. It first commits the record in the Siebel application, and then invokes a workflow process to update the legacy system. Named Method 2: WriteRecord 'INVOKE', 'WriteRecord', 'INVOKESVC', 'Workflow Process Manager', 'Run Process', '"ProcessName"', '"Account - New Order"', '"RowId"','[Id]' This user property is supported for applets based on the CSSFrameBase and CSSFrameListBase classes. You can create additional instances of this user property as needed. If you have more than one instance of this user property for a business component, each instance is executed sequentially by number (for example, Named Method 1, then Named Method 2, and so on). If there is only one such user property, then no number is required. See also About Setting Numbered Instances of a User Property on page 78 and Named Method n (Business Component) on page 143. Parent Object Type Applet Functional Area CSSFrameBase, CSSFrameListBase

Always Enable Child: buscompname


This user property allows you to specify whether a child business component of a service request can be updated after the service request is closed.

Always Enable Field n


This user property allows fields in a closed service request to be updated. Value TRUE Specifies that child business components of service requests can be updated when the service request is closed. Usage Closing a service request does not prevent updates to the child Customer Satisfaction business component, so you can survey your customers even if a service request has been resolved. The user property for the Service Request business component, named Always Enable Child: Customer Survey, allows you to enable and disable customer surveys.

You can allow updates to other business components by adding user properties to the Service Request business component and substituting the appropriate business component name for Customer Survey. NOTE: Another way to make a closed service request and its child business components accessible for additions and edits is to change its status to Open. Parent Object Type Business Component Functional Area Service Request Value The name of the field you wish to keep updatable. Usage In standard Siebel applications, when a user sets the Status field on a service request to Closed, the Sub-Status field is updated to Resolved. The record becomes read-only except for the Status and Sub-Status fields. This behavior is controlled by the specialized business component class CSSBCServiceRequest. To allow fields to be updated after the service request is closed, use the Always Enable Field n user property. You can inactivate and modify values for this user property. You can also create new instances of this user property as needed. Parent Object Type Business Component Functional Area Service Request

No Change Field n
This user property disallows changing a fields value after the record is committed. Value The value of this user property must be the name of a field in the business component, not enclosed in quotes. Usage This property can be specified with or without the numeric suffix. Append the numeric suffix to differentiate between multiple instances on a business component. For example, add No Change Field 1 and No Change Field 2 user properties to a business component to specify two different fields which cannot be changed after a record is committed. You can inactivate or modify the values for this user property. You can also create new instances of this user property as needed. Parent Object Type Business Component Functional Area Various

No Clear Field n
This user property disallows setting a fields value to NULL.

NoDelete Field
This user property allows you to restrict the deletion of records based on the value of the specified field. Value The value of this user property must be the name of a field in the business component, not enclosed in quotes. Usage This property can be specified with or without the numeric suffix. Append the numeric suffix to differentiate between multiple instances on a business component. For example, add No Clear Field 1 and No Clear Field 2 user properties to a business component to specify two different fields whose values cannot be set to NULL. You can inactivate or modify the values for this user property. You can also create new instances of this user property as needed. Parent Object Type Business Component Functional Area Various

Value The value of this user property must be the name of a field in the business component. Usage When you specify a field in this user property, the business component does not allow records to be deleted that have a value of Y in the specified field. For example, a record on the Contact business component cannot be deleted if NoDelete Field has a value of Protect Internal Employee Flag and the value of the Protect Internal Employee Flag field in the record is Y. You can inactivate or modify the values for this user property. You can also create new instances of this user property as needed, but you cannot create more than one instance for a business component. Parent Object Type Business Component Functional Area CSSBCBase

On Condition Set Field Value


This user property allows you to specify the value of a field to be set under a specified condition. Value The value for the On Condition Set Field Value user property consists of three quoted parameters, separated by a comma and a space, as follows: "Condition", "FieldName", "FieldValue" Condition specifies the condition to be evaluated. FieldName specifies the name of the field on the business component. FieldValue specifies the value. Usage When the specified condition evaluates to TRUE, the specified field (FieldName) is set to the specified value (FieldValue). For example: "[Primary Held Position Id] is not null and [Primary Held Position Id] <> ""No Match Row Id""", "Employee Flag", "Y" In this example, the Employee Flag field is set to Y when the condition is TRUE. You can modify the value for this user property and create new instances of it. You can also inactivate this user property.

On Field Update Invoke n


This user property allows you to invoke the specified business component method when a field is updated. Parent Object Type Business Component Functional Area CSSBCUser Value The value of the On Field Update Invoke user property consists of three quoted parameters separated by a comma and a space, as follows: [FieldToCheck], [BusCompName], [MethodName] [MethodName] is invoked on the [BusCompName] business component when [FieldToCheck] is updated. If [FieldToCheck] is not defined, the method is invoked when the user saves the record. You can optionally use a fourth parameter that defines a condition. If you define a condition, the method is only invoked if the condition evaluates to TRUE. Usage You can create additional instances of this user property as needed. If you have more than one instance of this user property for a business component, they are executed sequentially by number (for example, On Field Update Invoke 1, then On Field Update Invoke 2, and so on). If there is only one such user property, then no number is required. See also About Setting Numbered Instances of a User Property on page 78. For example, the Asset Mgmt - Asset (Order Mgmt) business component has four such user properties:

On Field Update Invoke "Product Name", "Asset Mgmt - Asset", "CopyXA" On Field Update Invoke 1 "Product Name", "Asset Mgmt - Asset", "GeneratePartNumber" On Field Update Invoke 2 "Product Name", "Asset Mgmt - Asset", "SaveCxProd" On Field Update Invoke 3 "Quantity", "Asset Mgmt - Asset", "SetExtendedQuantity" When the Product Name field in the Asset Mgmt - Asset (Order Mgmt) business component is updated, the CopyXA, GeneratePartNumber, and SaveCxProd methods are invoked on the Asset Mgmt - Asset business component. When the Quantity field in the Asset Mgmt - Asset (Order Mgmt) business component is updated, the SetExtendedQuantity method is invoked on the Asset Mgmt - Asset business component. In this example, where no [FieldToCheck] is specified, the CopyXA method is invoked on the Asset Mgmt - Asset business component when the user saves the record: On Field Update Invoke "", "Asset Mgmt - Asset", "CopyXA" NOTE: The empty quotes followed by the comma are necessary. Parent Object Type Business Component Functional Area CSSBCBase

On Field Update Set n


This user property allows you to set the value of a field in the business component when another field is updated. Value The value of the On Field Update Set user property consists of three quoted parameters separated by a comma and a space, as follows: "FieldToCheck", "FieldToSet", "Value", "Condition" where Value and Condition are optional parameters. The field FieldToSet is set to Value when the field FieldToCheck is updated. If the Value parameter is not defined, FieldToSet is set to the value of FieldToCheck. If the Condition parameter is defined, then FieldToSet is updated only if Condition evaluates to TRUE. Use the following guidelines when using this user property: Do not use this user property to set a multivalue or calculated field. That is, if FieldToSet is a multivalue or calculated field, it does not update when FieldToCheck is updated. Do not define FieldToCheck as a field on a multivalue group. This user property does not recognize changes to a multivalue group field, including changing the primary field by changing the primary record of a multivalue group. For example, if On Field Update Set has the value "Primary Address Id", "Email Address", "my@oracle.com" on the Contact business component, it fails to update Email Address when the primary on the multivalue group Street Address is changed. Usage The Value parameter may be an expression. In the following example, the Done field is set using an expression when the Done Flag field is updated: "Done Flag", "Done", "IIF ([Done Flag] = "Y", Today (), "")" NOTE: If you use an expression, it must evaluate to the data type of the targeted field. In the following example, the ToChar function is used to convert the date to a string before concatenating with another string and setting the value of the field. "Agreement Start Date", "Name", "ToChar([Agreement Start Date]) + [Agreement Type]"

The following example shows how the Condition parameter is used. The Revenue field of the Opportunity business component is set when the Primary Revenue Amount field is updated, but only when the IsParentBCRevn field has a value of N: "Primary Revenue Amount", "Revenue", "[Primary Revenue Amount]", "[IsParentBCRevn] = 'N'" Various address business components, such as Business Address, populate their Address Name field with a concatenation of street address, city, and state. This field is updated, or not, by using a few On Update Field Set instances and the value of a calculated field whenever the street address, city, or state are updated. For example, when the city is updated, an On Update Field Set user property with the following value is used: "City", "Address Name", "IIF( [Address Name Locked Flag] = ""N"", [Calculated Address Name], [Address Name])" Similar numbered instances of the user property are used to update the Address Name field when the street address or state are updated. You can create additional instances of this user property as needed. If you have more than one instance of this user property for a business component, they are executed sequentially by number (for example, On Field Update Set 1, then On Field Update Set 2, and so on). If there is only one such user property, then no number is required. Parent Object Type Business Component Functional Area CSSBCBase

Picklist Pre Default Field n


Within a view based on a parent business component, such as Action, the user may be able to create a new record of a child business component, such as Opportunity, through a picklist for the child business component. The Picklist Pre Default Field user property is used to default fields on the new record of the child business component to field values from the parent business component record. Value "field", "'buscomp1.field1','buscomp2.field2',' . . .'" where field is a field on the current business component buscompn.fieldn is a field name on a parent business component NOTE: The space after the first comma (the comma after field) is required. In addition, the list of buscompn.fieldn entries is enclosed in double quotes, and each buscompn.fieldn entry is enclosed in single quotes. Usage This property can be specified with or without the numeric suffix. Append the numeric suffix to differentiate between multiple instances on a business component. For example, add Picklist Pre Default Field 1 and Picklist Pre Default Field 2 user properties to a business component to specify two different fields that assume default field values from the parent business component. For example, a new opportunity can be created through an Opportunity picklist in each of the following applets: Activity Form Applet, based on the Action business component Comm Outbound Item Form Applet, based on the Comm Outbound Email business component When a new opportunity is created from the picklist in either context, the opportunitys Account and Account Id fields can be defaulted to the corresponding field values on the parent record by adding the following user properties to the Opportunity business component: Picklist Pre Default Field 1 with value "Account", "'Action.Account Name', 'Comm Outbound Email.Account Name'"

Picklist Pre Default Field 2 with value "Account Id", "'Action.Account Id', 'Comm Outbound Email.Account Id'" You can inactivate or modify the values for this user property. You can also create new instances of this user property as needed. Parent Object Type Business Component Functional Area Picklist generation

Sequence Field
This user property allows you to define a sequence field for a business component. Value The value for the Sequence Field user property must be the name of the field (typically Line Number or Sequence Number) in the business component that corresponds to the sequence number column in the underlying table. Usage This user property is used to configure a sequence field to create a sequential auto-generating line number on new record and copy record events. A sequence business component must be defined in the business object. For new record and copy record events, this user property specifies a field on the business component whose value is a number in a sequence that is autogenerated. A sequence business component must also be defined in the business object. NOTE: When defining a Sequence Field user property, set the Insert Position property to LAST for the applets that display records from the numbered detail business component. Leaving the Insert Position property blank can cause unexpected behavior in the line numbers generated in the applet. Configuring a sequence field on a business component requires several tasks to be completed. For detailed information on creating sequence fields, see Configuring Siebel Business Applications. Parent Object Type Business Component Functional Area Record sequencing

Url
This user property specifies the URL to which to go when the GotoUrl method is invoked for an applet control.

View
This user property specifies the view to display when the GotoView method is invoked for an applet control.

DisableSearch
This single-value field user property allows a Siebel developer to specify whether an end user can execute a wildcard query on a particular field. Value TRUE or FALSE Usage The intent of this field user property is to allow a Siebel developer to prevent users (and the Siebel query engine) from performing queries on non-indexed or text fields. If its value is TRUE, wildcard searching on the field is disabled, but exact match searching is allowed. If its value is FALSE or not specified, searching is allowed on the field. For example, if the [Name] field has the DisableSearch field user property set to TRUE, wildcard searches such as [Name] LIKE 'S*' are suppressed, and an error message is displayed. Exact searches such as [Name] = 'Siebel' are allowed. This user property is enforced when the following query options are exercised: query by example, Query Assistant, Search Center, queries initiated through

programmatic or message-based interfaces, and pre-defined queries. You can inactivate and modify the values for this user property, and you can create a new instance of this user property if it is not already defined on the field. Parent Object Type Field Functional Area Search

DisableSort (Field)
This single-value field user property allows a Siebel developer to specify whether an end user can sort a result set on a specific field of a business component.

Display Mask Char


This field user property allows you to display a masked version of secure data, typically a credit card number or account number. Value TRUE or FALSE Usage The intent of this business component field user property is to provide finergrained control over field-level sorting. If its value is TRUE, all sorting capabilities on the field are disabled in all applets based on the business component. The sort icons and tool tips do not appear in the list column header, and the field is not displayed in the Advanced Sort window. If its value is FALSE or not specified, sorting is enabled on the field. For example, if the Name field for a particular business component has the DisableSort user property set to TRUE, the sort icons and (Sortable) tool tip do not appear in the Name list column, and the Name field is not displayed in the Advanced Sort window. If a user attempts to perform a sort on the Name field in any applet based on that business component, an error message displays. You can inactivate and modify the values for this user property, and you can create a new instance of this user property if it is not already defined on the field. Parent Object Type Field Functional Area Sorting Value The value of this user property is a character. This character is used to mask characters in a secure data field, typically a credit card number or account number. By default, its value is x. Usage This user property is used with the Encrypt Source Field user property to display only the last 4 digits of a credit card number or account number, such as xxxxxxxxxxxx9999. This user property is set on a separate calculated field that is displayed in the UI instead of the field containing the entire credit card number or account number. For example, in the Quote business component, the Credit Card Number field is the encrypted field that stores the credit card number. The Credit Card Number Display field is a calculated field on which the following user properties are set: Display Mask Char with a value of x Encrypt Source Field with a value of Credit Card Number The applet field that displays the masked credit card number must reference the Credit Card Number - Display field.