10Customizing Picklists
Customizing Picklists
This chapter describes how to customize picklists. It includes the following topics:
Overview of Customizing Picklists
You can customize the following types of picklists in Siebel CRM Desktop:
Static. Values in this picklist are constant. Siebel CRM Desktop gets these values from a simple list of values. For example, the Account Status picklist includes static values, such as Candidate, Active, or Inactive. Siebel CRM Desktop typically displays a static picklist as a dropdown list that includes static values.
Dynamic. Values in this picklist vary. Siebel CRM Desktop gets these values from another business component. For example, the accounts that Siebel CRM Desktop displays vary depending on if the user picks an account for a contact or picks an account for an opportunity. In this situation, the target business component might contain different values this week compared to last week because users enter new data over time. Siebel CRM Desktop typically displays a dynamic picklist as a pick applet that includes values that change.
For more information about picklists, see Configuring Siebel Business Applications.
Picklist Object Structure That Siebel CRM Desktop Uses
The following figure illustrates a hierarchy of the objects that Siebel CRM Desktop uses to create a picklist.

Explanation of Callouts
The picklist object structure that Siebel CRM Desktop uses includes the following items:
siebel_meta_info.xml. Includes a representation of the field that Siebel CRM Desktop gets from the integration object in Siebel CRM. It defines the picklist object.
Ln_siebel_basic_mapping.xml. Maps the field that Siebel CRM Desktop gets from the integration object in Siebel CRM to the IBM Notes field. It includes the object that stores the picklist values in IBM Notes.
Design Element. A form design element in IBM Domino Designer. Includes the definition for the user interface. You add a control for the new field and link it to the picklist data.
Object. The Siebel CRM Desktop representation of the integration object that it receives from Siebel CRM. For example, the Opportunity Object integration object. This object includes one or more fields.
Field. A Siebel CRM field, such as Channel. Each field includes the following attributes for the picklist:
HasPicklist. Specifies to include a picklist for the field. The value for HasPicklist must be yes.
PicklistIsStatic. Specifies to use a static picklist.
PicklistTypeId. Specifies the name of the Picklist object in Siebel CRM Desktop.
PicklistCollection. Specifies the name of the list of values in Siebel CRM that contains the values for the picklist. For example, the value of the PicklistCollection attribute for the Channel field of the Opportunity object is OPTY_CHANNEL_TYPE.
Picklist. Provides an interface to the list of values. It exposes these values and associated labels and does the translation. The Picklist object includes the following attributes:
SrcObjectTypeId. References the object in the siebel_meta_info.xml file that Siebel CRM Desktop uses to get data from Siebel CRM.
CollectionTypeFldName. Defines the field in Siebel CRM that Siebel CRM Desktop queries to use the PicklistCollection property on the object level. For example, if the PicklistCollection property on the Channel field on the Opportunity object is set to OPTY_CHANNEL_TYPE, and if the CollectionTypeFldName attribute is set to List_Of_Values, Type, then Siebel CRM Desktop uses the following query:
[Type]='OPTY_CHANNEL_TYPE'
ValueFldName. Specifies the name of the field that Siebel CRM Desktop uses to get the values for the list of values from Siebel CRM.
LabelFldName. Specifies the name of the label for the field that the ValueFldName attribute identifies.
Modifying the Values That Predefined Static Picklists Display
This topic describes how to modify the values that a static picklist displays so that it only displays values that include a check mark in the Active property in Siebel Tools. The predefined Siebel CRM Desktop configuration displays values in this way only for the List_Of_Values picklist. Each of the following picklists displays a value even if the Active property of this value does not include a check mark:
PickList_Generic
PickList_Hierarchical
PickList_Hierarchical_Child
The List_Of_Values picklist is the only object that automatically filters according to the Active property. To view code that illustrates this configuration, see About the Predefined List of Values Object.
To modify the values that a predefined static picklist displays
In the client, open an activity and then click the down arrow in the Type field.
In the drop-down list, note that this list of values displays the following items:
Calendar Entry
Administration
Adverse Event
Alert
Analyst
And so on
In this example, you will modify Siebel CRM Desktop so that it does not display the Adverse Event activity type.
Open Siebel Tools and then display the Integration Object object type.
For more information, see Displaying Object Types in Siebel Tools.
Add a field to the PickList Generic business component:
In the Object Explorer, click Business Component.
In the Business Components list, query the Name property for PickList Generic.
-
In the Object Explorer, expand the Business Component tree and then click Field.
In the Fields list, add a new field using values from the following table.
Property Value Name
Active
Column
ACTIVE_FLG
Repeat Step 4, but add the field to the PickList Hierarchical business component:
Add a field to the CRMDesktopPickListGenericIO integration object:
In the Object Explorer, click Integration Object.
In the Integration Objects list, query the Name property for CRMDesktopPickListGenericIO.
In the Object Explorer, expand the Integration Object tree and then click Integration Object Component.
In the Integration Components list, query the Name property for PickList Generic.
In the Object Explorer, expand the Integration Components tree and then click Integration Component Field.
In the Integration Component Fields list, add a new field using values from the following table.
Property Value Name
Active
Data Type
DTYPE_BOOL
External Sequence
24
External Name
Active
External Data Type
DTYPE_BOOL
XML Sequence
24
XML Tag
Active
Repeat Step 6, but add the field to the PickList Hierarchical integration component of the CRMDesktopPickListHierarchicalIO integration object.
Deploy your changes to the Siebel Runtime repository.
Use an XML editor open the siebel_meta_info.xml file.
To make sure that Siebel CRM Desktop gets only the active list of values, you modify the PickList_Generic, PickList_Hierarchical, and PickList_Hierarchical_Child picklists. When you modify these picklists, you also modify the master filter so that it makes sure Active = Yes.
Locate the
picklist TypeId='PickList_Generic'
object and then modify it to the following code:<picklist TypeId='PickList_Generic' SrcObjectTypeId='PickList_Generic' CollectionTypeFldName='Type' ValueFldName='Value' LabelFldName='Value' > <master_filter_expr> <![CDATA[ [Active] = 'Y' ]]> </master_filter_expr> </picklist>
Locate the
picklist TypeId='PickList_Hierarchical'
object and then modify it to the following code:<picklist TypeId='PickList_Hierarchical' SrcObjectTypeId='PickList_Hierarchical' CollectionTypeFldName='Type' ValueFldName='Value' LabelFldName='Value' LangFldName='Language' > <extra_src_fldname Visible='true'>Parent</extra_src_fldname> <master_filter_expr> <![CDATA[ [Active] = 'Y' ]]> </master_filter_expr> </picklist>
Locate the
picklist TypeId='PickList_Hierarchical_Child'
object and then modify it to the following code:<picklist TypeId='PickList_Hierarchical_Child' SrcObjectTypeId='PickList_Hierarchical' CollectionTypeFldName='Type' ValueFldName='Value' LabelFldName='Value' LangFldName='Language' > <extra_src_fldname Visible='true'>Parent</extra_src_fldname> <master_filter_expr> <![CDATA[ [Active] = 'Y' AND NOT [Parent Id] Is Null ]]> </master_filter_expr> </picklist>
Save the siebel_meta_info.xmlfile, upload it to the CRM Desktop Admin screen, and then add it to the active package.
Apply the package and then synchronize.
Test your changes. Repeat Step 2.
Make sure that Siebel CRM Desktop does not display the Adverse Event value in the drop-down list that the Type field uses.
Modifying the Values That Predefined Lists of Values Display
You can modify the field mapping that occurs between Siebel CRM Desktop and IBM Notes. The example in this topic modifies the mapping for the On Hold status. For more information, see How Siebel CRM Desktop Maps the Status Field of an Activity.
To modify the values that predefined lists of values display
Use an XML editor open the Ln_package_res.xml file.
Locate the following code:
<str key="lang_action_status_on_hold" comment="This should be taken from Siebel SEED DATA for [Action]/[Status]">On Hold</str>
Change the code you located in Step 2 to the following code:
<str key="lang_action_status_on_hold" comment="This should be taken from Siebel SEED DATA for [Action]/[Status]">Waiting</str>
Process of Creating Predefined Picklists
The example in this topic adds a predefined picklist to the Contact form that allows the user to choose from a set of predefined contact methods. These methods indicate how the contact prefers to be contacted, such as through email, pager, or phone.
To add a predefined picklist, you do the following:
Creating an Integration Object for the Contact Method Picklist
Extending an Integration Object for the Contact Method Picklist
For more information, see Overview of Customizing Picklists.
Identifying Predefined Picklist Objects in Siebel CRM
This task is a step in Process of Creating Predefined Picklists.
In this topic, you identify the picklist objects that you use to add a picklist. These object come predefined with Siebel CRM.
To identify predefined picklist objects in Siebel CRM
Identify the field that Siebel CRM associates with the picklist you must add:
Open Siebel Call Center.
Navigate to the Contacts list and then click a name in the Last Name field.
-
Click the More Info tab and then click the down arrow in the Contact Method field.
Siebel CRM displays the drop-down list for the Contact Method field. This is the drop-down list you customize in this example.
Choose the Help menu and then click About View.
The About View dialog box lists the applets in the order that Siebel Call Center displays them.
Note the applet name in that Siebel Call Center displays in the Contact Method drop-down list.
In this example, this is the Contact Form Applet - Child applet.
In Siebel Tools, in the Object Explorer, click Applet.
In the Applets list, query the Name property for the applet you noted in the sub-step two sub-steps previous to this sub-step.
This applet is Contact Form Applet - Child.
Right-click the Contact Form Applet - Child applet, and then choose Edit Web Layout.
If Siebel Tools displays the Read-only Object dialog box, then click OK. In this task, you do not modify the form so you can use a read-only version.
In the Applet Web Template editor, click the Contact Method control.
In the Properties window, note the value for the following property.
Property Value Field
Preferred Communications
In this example, Siebel CRM associates the Preferred Communications field with the Contact Method picklist.
Identify the picklist:
Open Siebel Tools.
In the Object Explorer, click Business Component.
-
In the Business Components list, query the Name property for Contact.
-
In the Object Explorer, expand the Business Component tree, and then click Field.
-
In the Fields list, query the Name property for Preferred Communications and then note the value for the following property.
Property Value PickList
Comm Media Picklist
Identify the business component that the picklist references:
In the Object Explorer, click Pick List.
In the Picklists list, query the Name property for Comm Media Picklist and then note the value for the following property.
Property Value Business Component
PickList Hierarchical Sub-Area
Identify the parent business object of the business component that the picklist references:
In the Object Explorer, click the Flat tab and then click Business Object Component.
In the Business Object Components list, query the Bus Comp property for PickList Hierarchical Sub-Area and then note the value for the following property.
Property Value Parent Business Object
CommSrv CM Channel Type PickList Administration
If your query does not return a result, then create a new business object component using values from the table in this step. If you create a new business object component, then make sure the business component where it resides is the primary business component for the business object that it references.
Creating an Integration Object for the Contact Method Picklist
This task is a step in Process of Creating Predefined Picklists.
In this topic, you create an integration object for the Contact Method picklist.
To create an integration object for the Contact Method picklist
In Siebel Tools, make sure the integration component object type is displayed.
For more information, see Displaying Object Types in Siebel Tools.
Choose the File Menu and then click New Object.
Click the EAI tab, click Integration Object and then click OK.
In the Integration Object Builder Dialog box, choose values for the following items and then click Next.
Property Value Project
Choose a project.
It is recommended that you create a separate project for any customization you make to Siebel CRM Desktop. For example, use a project named Siebel CRM Desktop.
Business Service
EAI Siebel Wizard
Choose values for the following items and then click Next.
Property Value Source Object
CommSrv CM Channel Type PickList Administration
This value is the name of the business object.
Source Root
PickList Hierarchical Sub-Area
This value is the name of the business component.
Integration Object Name
CRMDesktopPickListHierarchicalSubArea
This value is the name of the integration object you are creating.
Accept the default values, click Next, and then click Finish.
In the Object Explorer, click Integration Object, query the Name property for CRMDesktopPickListHierarchicalSubArea, and then note the following property of the integration object you created in Step 6.
Property Value XML Tag
ListOfCrmdesktoppicklisthierarchicalsubarea
Extending an Integration Object for the Contact Method Picklist
This task is a step in Process of Creating Predefined Picklists.
In this topic, you extend the Contact integration component. The Contact integration component is included in multiple locations. You must extend it in each of the following integration objects:
CRMDesktopContactIO
CRMDesktopAccountIO
CRMDesktopOpportunityIO
To extend an integration object for the Contact Method picklist
In Siebel Tools, make sure the integration component object type is displayed.
For more information, see Displaying Object Types in Siebel Tools.
In the Object Explorer, click Integration Object.
In the Integration Objects list, query the Name property for CRMDesktopContactIO, and then make sure the Object Locked property contains a check mark.
In the Object Explorer, expand the Integration Object tree and then click Integration Component.
In the Integration Components list, query the Name property for Contact.
In the Object Explorer, expand the Integration Components tree and then click Integration Component Field.
In the Integration Component Fields list, add a new record with the following values.
Property Value Name
Preferred Communications
The value for each of these properties must match the field name on the Contact business component. In this example, Preferred Communications is the field you must reference. This is the value you noted in Step j in the topic Identifying Predefined Picklist Objects in Siebel CRM.
External Name
Length
30
The value for this property must match the value that is set in the Length property of the Preferred Communications field.
Physical Data Type
DTYPE_TEXT
The value for each of these properties must match the value that is set in the Type property of the Preferred Communications field.
External Data Type
External Sequence
500
For more information, see Requirements for the Sequence Property.
XML Sequence
This value must equal the value in the External Sequence property. In this example, that value is 500.
XML Tag
PreferredCommunications
The value for this property must match the field name on the Contact business component but with the spaces removed. This is the value you noted in Step j of topic Identifying Predefined Picklist Objects in Siebel CRM.
Repeat Step 3 through Step 7 for the CRMDesktopAccountIO integration object.
Repeat Step 3 through Step 7 for the CRMDesktopOpportunityIO integration object.
Compile your changes.
For more information, see Using Siebel Tools.
Requirements for the Sequence Property
You can enter any numeric value in the sequence property. Example properties include External Sequence and XML Sequence. This value must be unique. It must not display in the same sequence property for any other integration component in the Opportunity integration object.
Adding Fields to the Customization Package
This task is a step in Process of Creating Predefined Picklists.
In this topic you add a field to the customization package.
To add a field to the customization package
Create a working set of files for the customization package:
Open a Windows command line and then navigate to the directory that contains the current files of the customization package.
For more information, see Files in the Customization Package and Using the Windows Command Line to Set Optional Parameters.
Create a copy of the current set of customization package files.
Move the original set of files to a backup directory.
If necessary, to restore the configuration that existed before you started this customization effort, you can revert to this backup set of files.
Create a working set of customization package files. You rename the set of files you copied in Step b.
For example, enter the following command:
rename v01* v02*
This command renames the prefix for all files in the directory that currently use v01 as the prefix. For example, it renames v01_forms.dxl tov02_forms.dxl. It is recommended that you use this technique to indicate that you have modified the customization package.
Verify that Siebel Tools added the integration object:
Use an XML editor open the siebel_meta_info.xml file.
For more information, see Files in the Customization Package.
Locate the PickList_Preferred_Communications object. You search for the following code:
<object TypeId="PickList_Preferred_Communications"
In the header of the PickList_Preferred_Communications object, make sure the following attributes exist and with the correct value.
Attribute Value IntObjName
CRMDesktopPreferredCommPickList
SiebMsgXmlElemName
PicklistHierarchicalSub-Area
SiebMsgXmlCollectionElemName
ListOfCrmdesktoppreferredcommpicklist
Create the picklist. You add the following element to the siebel_meta_info.xml file:
<picklist TypeId='PickList_Preferred_Communications' CollectionTypeFld Name='Type' SrcObjectTypeId='PickList_Preferred_Communications' ValueFldName='Value' LabelFldName='Value' LangFldName='Language' > <master_filter_expr> <![CDATA] [Parent] = LookupValue ('OFFER_MEDIA', 'Package') ]]> </master_filter_expr> </picklist>
For more information, see Specifying Attributes of the Pick List Element.
Add the Preferred Communications field to the Contact object:
Locate the Contact object. You search for the following code:
object TypeID='Contact'
Add the following code to the Contact object:
<field Name="Preferred Communications" Label="Preferred Communications" DataType="DTYPE_TEXT" HasPicklist="yes" PicklistIsStatic="yes" PicklistCollectionType="OFFER_MEDIA" PicklistTypeId="PickList Preferred Communications" IOElemName="PreferredCommunications" />
Repeat Step 4 for each of the following objects:
Account.Contact
Opportunity.Contact
In this example, these objects in the siebel_meta_info.xml file must include the Preferred Communications field. You must add this field to each object.
Add code that creates a map for the picklist between the Siebel Server and Siebel CRM Desktop for the parent Contact object:
Use an XML editor to open the Ln_siebel_basic_mapping.xml file.
Create a new object type for the picklist.
For more information, see Code That Creates a New Object Type for the Pick List.
Locate the parent object. You search the Ln_siebel_basic_mapping.xml file for the following code:
<type id="Contact"
Add code to the Contact object that defines a map between the Siebel Server and Siebel CRM Desktop.
For more information, see Code That Creates a Map Between the Siebel Server and Siebel CRM Desktop.
Add code that creates a map for the picklist between the Siebel Server and Siebel CRM Desktop for the child Account Contacts object:
Choose the code from the contact object that you use to map the child account object.
For more information, see Mapping Child Objects for a Custom Picklist.
Copy this code to the clipboard.
Locate the Account Contacts child object. Search the Ln_siebel_basic_mapping.xml file for the following code:
type id="Account.Contact.Association"
Locate the Contact field. Search in the Account.Contact.Association object for the following text:
field id="ContactId"
Locate the matching ContactId. Search the ContactId field for the following text:
user_field id="sbl Contact ID"
Paste the contact fields that you copied to the clipboard in Step a into the following user field:
sbl Contact ID
For more information, see Mapping Child Objects for a Custom Picklist.
Map the Preferred Communications field. You add the following code immediately after the code you pasted in Step f:
<field from="Preferred Communications" to="ContactPreferred Communications"></field>
Repeat Step 7 for the opportunity child object.
Specifying Attributes of the Pick List Element
If you specify a pick list element in the siebel_meta_info.xml file, then the TypeId attribute and the SrcObjectTypeId attribute of this element must match the value in the PicklistTypeId attribute. For example, assume you add the following field:
<field Name='Note Type' Label='#fld_account_account_note@note_type'
DataType='DTYPE_TEXT' HasPicklist='yes' PicklistIsStatic='yes'
PicklistTypeId='AccountNoteType' IOElemName='NoteType' />
In this example, you must set the TypeId attribute in the pick list element to AccountNoteType.
The following table describes values to use in the pick list element for a Siebel LOV. If you do not use a Siebel LOV, then adjust these values so they match the field names on the integration component field.
Attribute | Value |
---|---|
CollectionTypeFldName |
Type |
ValueFldName |
Value |
LangFldName |
Language |
To add more filters, you can use the master_filter_expr attribute. This attribute typically must match the value in the Search Specification property of the object definition for the pick list in Siebel Tools. In the example in Step 3 in the topic Extending an Integration Object for the Contact Method Picklist, the master_filter_expr attribute constrains the values to the correct LOV Type.
Code That Creates a New Object Type for the Pick List
To create a new object type for the pick list, you must use the following format for the type id attribute:
<type id="object_namefield_namePicklist" predefined_folder="1">
where:
object_name is the name of the object type in the siebel_meta_info.xml file.
field_name is the name of the field that resides in the object you define in the object_name.
For example:
<type id="ContactPreferred CommunicationsPicklist" >
To create a new object type for a picklist, add the following code to the Ln_siebel_basic_mapping.xml file:
<type id="ContactPreferred CommunicationsPicklist"> <field id="Label"> <reader> <lotus_std> <lotus_field id="picklistLabel" /> <convertor> <string /> </convertor> </lotus_std> </reader> <writer> <lotus_std> <lotus_field id="picklistLabel" /> <convertor> <string /> </convertor> < /lotus_std> </writer> </field> <field id="Value"> <reader> <lotus_std> <lotus_field id="picklistValue" /> <convertor> <string /> </convertor> </lotus_std> </reader> <writer> <lotus_std> <lotus_field id="picklistValue" /> <convertor> <string /> </convertor> </lotus_std> </writer> </field> <field id="SortOrder"> <reader> <lotus_std> <lotus_field id="SortOrder" /> <convertor> <integer /> </convertor> </lotus_std> </reader> <writer> <lotus_std> <lotus_field id="SortOrder" /> <convertor> <integer /> </convertor> </lotus_std> </writer> </field> <field id="IsDefault"> <reader> <lotus_std> <lotus_field id="IsDefault" /> <convertor> <bool /> </convertor> </lotus_std> </reader> <writer> <lotus_std> <lotus_field id="IsDefault" /> <convertor> <bool /> </convertor> </lotus_std> </writer> </field> </type>
Code That Creates a Map Between the Siebel Server and Siebel CRM Desktop
To create a map between the Siebel Server and Siebel CRM Desktop, you add the following code to the Contact object of the Ln_siebel_basic_mapping.xml file:
<field id="Preferred Communications"> <reader> <lotus_std> <lotus_field id="PreferredCommunications"> </lotus_field> <convertor> <string /> </convertor> </lotus_std> </reader> <writer> <lotus_std> <lotus_field id="PreferredCommunications"> </lotus_field> <convertor> <string /> </convertor> </lotus_std> </writer>| </field>
Mapping Child Objects for a Custom Picklist
It is recommended that you do not map a child object directly in the child object. Instead, you can copy values from the parent object and then paste them into the child object. This technique provides the following advantages:
Allows Siebel CRM Desktop to copy values on the contact to the child object, such as the account or opportunity.
If the user changes the value in a contact, then Siebel CRM Desktop automatically updates the child objects.
Example Code That Maps Child Objects for a Custom Picklist
The following is the example code you use to map a child object for a custom picklist.
<type id=”Account.Contact.Association”> ... <field id="ContactId" ver="1"> <reader> <lotus_std> <lotus_field id="CRMRightId"/> <convertor> <binary_hexstring/> </convertor> </lotus_std> </reader> <writer> <multiwriter> <lotus_field d="CRMRightId"/> <linked_fields> <link src_field="Full Name"> <lotus_std> <lotus_field id="ContactFullName"/> <convertor> <string/> </convertor> </lotus_std> </link> <link src_field="First Name"> <lotus_std> <lotus_field id="ContactFirstName"/> <convertor> <string/> </convertor> </lotus_std> </link> <link src_field="Last Name"> <lotus_std> <lotus_field id="ContactLastName"/> <convertor> <string/> </convertor> </lotus_std> </link> <link src_field="Preferred Communications"> <lotus_std> <lotus_field id="ContactPreferredCommunications"/> <convertor> <string/> </convertor> </lotus_std> </link> </linked_fields> </multiwriter> </writer> </field> ... </type>
The example code to map a child object for a custom picklist includes the following items:
The following attribute identifies the account child object of the parent contact:
type id="Account.Contact.Association"
The following tag identifies the Contact field in the account object:
field id="ContactId"ver="1"
The following attribute identifies the matching ContactId:
lotus_field id="CRMRightId"/
You copy these fields from the parent contact object and then paste them into the account child object.
<writer> <multiwriter> <lotus_field d="CRMRightId"/> <linked_fields> <link src_field="Full Name"> <lotus_std> <lotus_field id="ContactFullName"/> <convertor> <string/> </convertor> </lotus_std> </link> <link src_field="First Name"> <lotus_std> <lotus_field id="ContactFirstName"/> <convertor> <string/> </convertor> </lotus_std> </link> <link src_field="Last Name"> <lotus_std> <lotus_field id="ContactLastName"/> <convertor> <string/> </convertor> </lotus_std> </link>
You add the Preferred Communications field to allow you to add it to Account Contact forms. You create this field in Code That Creates a Map Between the Siebel Server and Siebel CRM Desktop.
<link src_field="Preferred Communications"> <lotus_std> <lotus_field id="ContactPreferredCommunications"/> <convertor> <string/> </convertor> </lotus_std> </link>
Customizing the Physical Layout for the Picklist
This task is a step in Process of Creating Predefined Picklists.
The following figure illustrates the Contact Details section of the contact form you customize in this example. You can use IBM Domino Designer to create this layout.

Publishing and Testing Picklists
This task is a step in Process of Creating Predefined Picklists.
In this topic, you publish and test your customization.
To publish and test a picklist
Publish your changes.
For more information, see Using the Windows Registry to Control Siebel CRM Desktop.
Test your changes:
Open the client and then navigate to the Contact form.
Verify that the form includes a label and picklist for the Contact Method field, as illustrated in the following diagram:
Click the down arrow next to the Contact Method field, and then verify that Siebel CRM Desktop displays a picklist that contains the following values:
None
Chat
Email
Fax
Pager
Phone
Wireless Message.
Choose a value in the picklist and then verify that Siebel CRM Desktop changes the value in the Contact Method field to the value you choose.
Process of Creating Custom Static Picklists
To create a custom static picklist, you do the following:
Adding Fields to the Basic Mapping to Support Static Picklists
Modifying the Basic Mapping to Store Values for Static Picklists
The example in this topic adds a static picklist to the Opportunity form in Siebel CRM Desktop. Assume that a field named JVD Simple in the Opportunity business component already exists in Siebel CRM. It references a picklist named JVD Simple Picklist. The following table describes the properties of the list of values in Siebel CRM that this picklist references. Although this topic uses a static picklist as an example, you can use this topic to create a static picklist or a multi-value static picklist.
Type | Display Value | Translate | Language Independent Code | Language Name |
---|---|---|---|---|
JVD_SIMPLE |
Simple Value 1 |
Checked |
Simple Value 1 |
English-American |
JVD_SIMPLE |
Simple Value 2 |
Checked |
Simple Value 2 |
English-American |
JVD_SIMPLE |
Simple Value 3 |
Checked |
Simple Value 3 |
English-American |
Modifying Siebel CRM Objects to Support Static Picklists
This task is a step in Process of Creating Custom Static Picklists.
In this topic you modify Siebel CRM objects to support a static picklist.
To modify Siebel CRM objects to support a static picklist
Open Siebel Tools.
In the Object Explorer, click Integration Object.
In the Integration Objects list, query the name property for CRMDesktopOpportunityIO.
In the Object Explorer, expand the Integration Object tree and then click Integration Component.
In the Integration Components list, query the External Name Context property for Opportunity.
In the Object Explorer, expand the Integration Component tree and then click Integration Component Field.
In the Integration Component Fields list, add a new field using values from the following table.
Property Value Name
JVD Simple
Data Type
DTYPE_TEXT
Length
30
External Sequence
232
External Name
JVD Simple
External Data Type
DTYPE_TEXT
XML Sequence
232
XML Tag
JVDSimple
In the Object Explorer, expand the Integration Component Field tree and then click Integration Component Field User Prop.
In the Integration Component Field User Props list, add a new user property using values from the following table.
Property Value Name
PICKLIST
Value
Y
Deploy your changes to the Siebel Runtime Repository.
Adding Fields to the Metadata to Support Static Picklists
This task is a step in Process of Creating Custom Static Picklists.
In this topic you add a field to the metadata to support a static picklist.
To add a field to the metadata to support a static picklist
Use an XML editor open the siebel_meta_info.xml file.
Locate the following object:
TypeId="Opportunity"
Add a new field to the Opportunity object. You add the following code immediately following the code line you located in Step 2:
<field Name='JVD Simple' Label='JVD Simple' DataType='DTYPE_TEXT' IsFilterable='no'HasPicklist='yes' PicklistIsStatic='yes' PicklistCollectionType='JVD_SIMPLE'PicklistTypeId='List_Of_Values' IsHidden='no' IOElemName='JVDSimple' />
where:
Field Name is any name you choose. It is recommended that you use the same name that you use in Siebel CRM for this field.
Label is equal to the value you provide for the Name.
DataType is the data type you specify for the integration component field in Step 7 in the topic Modifying Siebel CRM Objects to Support Static Picklists.
IsFilterable is set to the default of no. IsFilterable is not relevant for this example.
HasPicklist must be set to yes.
PicklistIsStatic must be set to yes.
PicklistCollectionType is the name of the list of values.
PicklistTypeId identifies the name of the picklist type for static picklists. For more information, see About the Predefined List of Values Object.
IsHidden must be set to no.
IOElemName identifies the name you specified for the XML Tag property in Step 7 in the topic Modifying Siebel CRM Objects to Support Static Picklists.
About the Predefined List of Values Object
The following List_of_Values picklist object comes predefined with Siebel CRM Desktop. It determines the fields to get, the field type, where to query for the language, and it makes the list of values active. It is similar to the Picklist Generic business component in Siebel CRM:
<picklist TypeId='List_Of_Values' SrcObjectTypeId='List_Of_Values' CollectionTypeFldName='Type' ValueFldName='Value' LabelFldName='Value' LangFldName='Language'> <master_filter_expr> <![CDATA[ [Active] = 'Y' ]]> </master_filter_expr> </picklist>
Adding Fields to the Basic Mapping to Support Static Picklists
This task is a step in Process of Creating Custom Static Picklists.
In this topic you add a field to the basic mapping to support a static picklist.
To add a field to the basic mapping to support a static picklist
Use an XML editor to open the Ln_siebel_basic_mapping.xml file.
Locate the following object:
id=�?Opportunity�?
Add the following code immediately following the code line you located in Step 2:
<field id="JVD Simple"> <reader> <lotus_std> <lotus_field id="JVDSimple" /> <convertor> <string /> </convertor> </lotus_std> </reader> <writer> <lotus_std> <lotus_field id="JVDSimple" /> <convertor> <string /> </convertor> </lotus_std> </writer> </field>
where:
field id identifies the name of the integration component field you defined in Step 7 in topic Modifying Siebel CRM Objects to Support Static Picklists.
user_field id identifies the custom field in IBM Notes where Siebel CRM Desktop stores the field value. It is recommended that you use sbl as the first three characters for this field Id. For example, sbl JVD Simple.
Modifying the Basic Mapping to Store Values for Static Picklists
This task is a step in Process of Creating Custom Static Picklists.
In this topic you modify the basic mapping to store values for a static picklist.
To modify the basic mapping to store values for a static picklist
Locate a predefined static list of values.
The predefined List_Of_Values object in the metadata makes sure that Siebel CRM Desktop can get the values that it displays in the dropdown list. It gets these values from Siebel CRM. It must store these values in IBM Notes to allow the user to work offline. To do this, it is recommended that you use one of the static list of values that comes predefined in Siebel CRM Desktop. These objects typically contain the same fields.
For example, locate the following object:
id='ContactStatusPicklist'
Copy the entire ContactStatusPicklist object.
Paste the entire ContactStatusPicklist object immediately following the object you located in Step 1.
Change the following values:
<type id="type_Id field_Id Picklist" predefined_folder="1" ver="1"> <form message_class="IPM.Contact.SBL.type_Id_field_Id"></form>
where:
type_Id identifies the Id of the type, such as Opportunity.
field_Id identifies the Id of the field you specified in Step 3 in the topic Adding Fields to the Basic Mapping to Support Static Picklists, such as JVD Simple.
In the message_class attribute, replace any spaces that exist in the type_Id and the field_Id with an underscore (_).
For example:
<type id="OpportunityJVD SimplePicklist" predefined_folder="1" ver="1"> <form message_class="IPM.Contact.SBL.OpportunityJVD_SimplePicklist"></form>
If you do not correctly identify the type Id, then Siebel CRM Desktop does not display any picklist values in the dropdown list at run time.
The code in this book does not include the entire object. It includes only the items you must change for this example.
Modifying the Form to Support Static Picklists
This task is a step in Process of Creating Custom Static Picklists.
In this topic you add fields to the form to support a static picklist.
To modify the form to support a static picklist
Open IBM Domino Designer, and then do the following work to modify the form:
Add a field to the form.
Configure the field as a combobox.
Enter the list of predefined elements or apply the formula that the form requires.
For more information, see Opening IBM Domino Designer.
Uploading and Testing Your Static Picklist
This task is a step in Process of Creating Custom Static Picklists.
In this topic you upload and test your static picklist.
To upload and test your static picklist
Publish the following files that you modified:
siebel_meta_info.xml
Ln_siebel_basic_mapping.xml
For more information, see Using the Windows Registry to Control Siebel CRM Desktop.
Open the client and then navigate to the Opportunity form.
Make sure this form includes a new field named JVD Simple.
Make sure the JVD Simple field includes a picklist and that this picklist includes the values listed in the Display Value column in the table in topic Process of Creating Custom Static Picklists.
Creating Static Picklists That Use Long Values
The Display Value property of a list of values in Siebel CRM is limited to 30 characters. If you use the Display Value property as the source of the values that Siebel CRM Desktop displays in a static picklist, then each of these value cannot exceed 30 characters in length. The Description property of a list of values in Siebel CRM can contain up to 255 characters. The example in this topic describes how to use this Description property to create a list of values that includes values that are longer than 30 characters in length.
The example in this topic assumes that a field named JVD Simple in the Opportunity business component already exists in Siebel CRM and that this field references a picklist named JVD Simple Picklist. The table in the topic Process of Creating Custom Static Picklists describes the properties of the list of values that this picklist references. In addition, the following table describes values for the Description property.
Type | Display Value | Description |
---|---|---|
JVD_SIMPLE |
Simple Value 1 |
Description for Simple Value 1 |
JVD_SIMPLE |
Simple Value 2 |
Description for Simple Value 2 |
JVD_SIMPLE |
Simple Value 3 |
Description for Simple Value 3 |
To create a static picklist that uses long values
Do all the work described in Process of Creating Custom Static Picklists with the following modifications:
In Step 3 in topic Adding Fields to the Metadata to Support Static Picklists you set the following:
PicklistTypeId='List_Of_Values_Description
Do not do Uploading and Testing Your Static Picklist at this time.
Use an XML editor open the siebel_meta_info.xml file.
Locate and then make a copy of the predefined list of values.
For more information, see About the Predefined List of Values Object.
Modify the copy you made in Step 3 to the following:
<picklist TypeId='List_Of_Values_Description' SrcObjectTypeId='List_Of_Values' CollectionTypeFldName='Type' ValueFldName='Description' LabelFldName='Description' LangFldName='Language'> <master_filter_expr> <![CDATA[ [Active] = 'Y' ]]> </master_filter_expr> </picklist>
Note the following:
Bold text indicates the values that you must modify for this example.
You must change the value in the TypeId attribute to a unique value, such as List_Of_Values_Description.
The predefined list of values includes a ValueFldName attribute that is set to Value and a LabelFldName attribute that is set to Value. You must change the values of these attributes so that they reference the Description property.
Do Uploading and Testing Your Static Picklist with the following modification:
Make sure the JVD Simple field includes a picklist and that this picklist includes the values listed in the Description column in the previous table.
Process of Creating Dynamic Picklists
This topic describes how to create a dynamic picklist that uses predefined objects that already exist in Siebel CRM. You do the following work to create a dynamic picklist:
A dynamic picklist does not get values from the List Of Values table. It gets values from a business component that resides in Siebel CRM. The example in this topic creates a dynamic picklist that changes values according to the opportunity that the user chooses. For more information, see Overview of Customizing Picklists.
Modifying Siebel CRM Objects to Support Dynamic Picklists
This task is a step in Process of Creating Dynamic Picklists.
In this topic you modify Siebel CRM objects to support a dynamic picklist.
To modify Siebel CRM objects to support a dynamic picklist
Open Siebel Tools.
In the Object Explorer, click Business Component.
In the Business Components list, query the name property for Opportunity.
In the Object Explorer, expand the Business Component tree and then click Business Component Field.
In the Fields list, add a new field using values from the following table.
Property Value Name
JVD Industry
Join
S_INDUST
Column
NAME
Type
DTYPE_TEXT
Picklist
PickList Industry
In the Fields list, add a new field using values from the following table.
Property Value Name
JVD Industry Id
Join
S_OPTY_X
Column
ATTRIB_03
Type
DTYPE_TEXT
Extend the integration object with the new industry field. Do Modifying Siebel CRM Objects to Support Static Picklists with the following modifications:
In the Integration Component Fields list, add a new field using values from the following table.
Property Value Name
JVD Industry
Data Type
DTYPE_TEXT
Length
50
External Sequence
237
External Name
JVD Industry
External Data Type
DTYPE_TEXT
XML Sequence
237
XML Tag
JVDIndustry
Do not add an integration component field user property.
Modifying the Metadata, Basic Mapping, and Forms to Support Dynamic Picklists
This task is a step in Process of Creating Dynamic Picklists.
In this topic you add fields to the metadata, basic mapping, and forms to support a dynamic picklist.
To modify the metadata, basic mapping, and forms to support a dynamic picklist
Add the picklist field to the metadata. Do Adding Fields to the Metadata to Support Static Picklists with the following modifications:
Add the following code:
<field Name='JVD Industry' Label='JVD Industry' DataType='DTYPE_TEXT' HasPicklist='yes'PicklistIsStatic='yes'PicklistTypeId='PickList_Industry' IOElemName='JVDIndustry'/>
Note that this code does not include the CollectionType attribute because a dynamic picklist does not use the list of values that a static picklist uses. It also includes the PickList_Industry picklist type.
Create the new PickList_Industry picklist type. You add the following code immediately after the code you added in Step a.
<picklist TypeId='PickList_Industry' SrcObjectTypeId='Industry' ValueFldName='Name' LabelFldName='Name' />
This picklist definition is not as complex as the picklist definition you use to create a static picklist. A dynamic picklist does not use a list of values and does not require the CollectionTypeFldName attribute. This example uses the predefined Industry object to get the picklist values.
Add the JVD Industry field to the basic mapping. Do Adding Fields to the Basic Mapping to Support Static Picklists, but use the following code:
<field id="JVD Industry"> <reader> <lotus_std> <lotus_field id="JVDIndustry" /> <convertor> <string /> </convertor> </lotus_std> </reader> <writer> <lotus_std> <lotus_field id="JVDIndustry" /> <convertor> <string /> </convertor> </lotus_std> </writer> </field>
Bold text identifies the code that is different for a dynamic picklist.
Create the type that stores the list of values. Do Modifying the Basic Mapping to Store Values for Static Picklists, but use the following code:
<type id="OpportunityJVD IndustryPicklist" predefined_folder="1" ver="1"> <form message_class="IPM.Contact.SBL.OpportunityJVD_IndustryPicklist"></form>
Bold text identifies the code that is different for a dynamic picklist. For more information about doing this step, see Step 4 in the topic Modifying the Basic Mapping to Store Values for Static Picklists.
Open IBM Domino Designer, and then add the field to the following form:
(SBL)form:opportunity
For more information, see Opening IBM Domino Designer.
Upload and publish your work. Do Uploading and Testing Your Static Picklist.
Test your work:
Open the client and then navigate to the opportunity form.
Make sure the form displays the Industry picklist.
Choose the Industry picklist and then make sure it displays the appropriate values.
The picklist must display all the industries that are appropriate for the opportunity that Siebel CRM Desktop currently displays. For example:
Banks
Basic Materials
Beef Cattle Feedlots
Beef Cattle except feedlots
Berry Crops
And so on
Process of Creating Dynamic Picklists That Use Custom Objects
This topic describes how to create a dynamic picklist that uses custom objects that you define. You do the following work to add a dynamic picklist that uses custom objects:
For more information, see Overview of Customizing Picklists.
Modifying the Business Component
This task is a step in Process of Creating Dynamic Picklists That Use Custom Objects.
In this topic you modify the Opportunity business component to support a dynamic picklist that uses custom objects.
To modify the business component
Open Siebel Tools.
In the Object Explorer, click Business Component.
In the Business Components list, query the name property for Opportunity.
In the Object Explorer, expand the Business Component tree and then click Business Component Field.
In the Fields list, add a new field using values from the following table.
Property Value Name
JVD Fulfillment Center
Join
S_ORG_FUL
Column
NAME
Type
DTYPE_TEXT
Picklist
eAuto PickList Business Rule
In the Fields list, add a new field using values from the following table.
Property Value Name
JVD Fulfillment Center Id
Join
S_OPTY_X
Column
ATTRIB_06
Type
DTYPE_TEXT
Creating an Integration Object
This task is a step in Process of Creating Dynamic Picklists That Use Custom Objects.
The Fulfillment Center is not available as an object in predefined Siebel CRM Desktop. To make it available, you create an integration object.
To create an integration object
In Siebel Tools, choose the File menu and then click New Object.
In the New Object Wizards dialog box, click the EAI tab, click Integration Object, and then click OK.
In the Integration Object Builder dialog box, set values using information from the following table and then click Next.
Property Value Project
Choose the project you use for this development effort.
Business Service
EAI Siebel Wizard
In the next screen of the Integration Object Builder dialog box, set values using information from the following table and then click Next.
Property Value Source Object
Fulfillment Center
Source Root
Fulfillment Center
Integration Object Name
CRMDesktopFulfillmentCenterIO
In the Integration Object Builder - Choose Integration Components dialog box, do the following:
Expand the Fulfillment Center tree.
Remove the check mark from the Fulfillment Center_Position check box.
Click Next and then click Finish.
Siebel Tools creates and then displays the new integration object.
(Optional) Make the XML Tag property consistent with the other integration objects that Siebel CRM Desktop uses. You change properties using values from the following table.
Property Value XML Tag
ListOfCRMDesktopFulfillmentCenterIO
Make fields that Siebel CRM Desktop does not require inactive:
In the Object Explorer, expand the Integration Object tree, expand the Integration Component Tree, and then click Integration Component Field.
In the Integration Component Fields list, set the Inactive property to True for each of the following fields:
Description
Main Fax Number
Main Phone Number
Primary Position Id
UIActive
UISelected
operation
searchspec
The Integration Object Builder wizard creates an integration component that includes all fields that the business component includes, by default. You can remove the fields that Siebel CRM Desktop does not require to make web service calls more efficient.
In the Integration Component Fields list, add a new field using values from the following table.
Property Value Name
DS Updated
Data Type
DTYPE_DATETIME
Length
30
External Sequence
10
External Name
DS Updated
External Data Type
DTYPE_DATETIME
XML Sequence
10
XML Tag
DBLastUpd
Each integration component that Siebel CRM Desktop uses must include the DS Updated field.
In the Object Explorer, click Integration Component Key.
Although the Integration Object Builder wizard creates a key for the integration component that it creates, Siebel CRM Desktop requires more keys to support the synchronization process.
Create the modification key:
In the Integration Component Keys list, add a new key using values from the following table.
Property Value Name
Modification Key
Key Sequence Number
1
Key Type
Modification Key
In the Object Explorer, expand the Integration Component Key and then choose Integration Component Key Field.
In the Integration Component Key Fields list, create two new fields using values from the following table.
Name Field Name DBLastUpd
DS Updated
Mod Id
Mod Id
Create the primary key:
In the Integration Component Keys list, add a new key using values from the following table.
Property Value Name
Primary Key
Key Sequence Number
1
Key Type
User Key
In the Integration Component Key Fields list, add a new field using values from the following table.
Name Field Name Id
Id
Create the status key:
In the Integration Component Keys list, add a new key using values from the following table.
Property Value Name
Status Key
Key Sequence Number
1
Key Type
Status Key
-
In the Integration Component Key Fields list, add four new fields using values from the following table.
Name Field Name DBLastUpd
DS Updated
Id
Id
Mod Id
Mod Id
Name
Name
Deploy your changes to the Siebel Runtime Repository.
Modifying Siebel CRM Desktop to Support the New Integration Object
This task is a step in Process of Creating Dynamic Picklists That Use Custom Objects.
If you expose a new object to Siebel CRM Desktop, then you must create a new type in the Ln_connector_configuration.xml file. This file defines the objects that Siebel CRM Desktop synchronizes. For more information, see Files in the Customization Package.
To modify Siebel CRM Desktop to support the new integration object
Use an XML editor open the Ln_connector_configuration.xml file and then add the following code:
<type id="Fulfillment Center"> <view label="Fulfillment Center" label_plural="Fulfillment Centers" small_icon="type_image:Generic:16" normal_icon="type_image:Generic:24" large_icon="type_image:Generic:48" suppress_sync_ui="true"></view> <synchronizer name_format=":[:(Name):]" frequency="604800" threshold="0"> <links></links> </synchronizer> </type>
Create a new metadata type to support the new integration object. You use an XML editor open the siebel_meta_info.xml file and then add the following code:
<object TypeId='Fulfillment Center' Label='Fulfillment Center' LabelPlural='Fulfillment Centers' ViewMode='All' EnableGetIDsBatching='true' IntObjName='CRMDesktopFulfillmentCenterIO' SiebMsgXmlElemName='FulfillmentCenter' SiebMsgXmlCollectionElemName='ListOfCRMDesktopFul fillmentCenterIO' > <prohibit_operation AnyMod='yes' ErrMsg='#mod_operation_is_prohibited_err_msg'/> <extra_command_options> <option Name='PrimaryKey1M' Value='Id' /> <option Name='ForeignKey1M' Value='Id' /> <option Name='Cardinality' Value='1M' /> <option Name='ServerServiceVersion'Value='2' /> </extra_command_options> <field Name='Conflict Id' Label='Conflict Id' DataType='DTYPE_ID' IsFilterable='no' IsHidden='yes'IOElemName='ConflictId' /> <field Name='Created' Label='Created' DataType='DTYPE_DATETIME' IOElemName='Created' /> <field Name='Created By' Label='Created By' DataType='DTYPE_ID' IsFilterable='no' IsHidden='yes'IOElemName='CreatedBy' /> <field Name='DS Updated' Label='DS Updated' DataType='DTYPE_DATETIME' IsFilterable='no' IsHidden='yes' IsTimestamp='yes' IOElemName='DBLastUpd' /> <field Name='Id' Label='Id' IsPrimaryKey='yes' DataType='DTYPE_ID' IsFilterable='no' IsHidden='yes' IsPartOfUserKey='yes' IOElemName='Id' /> <field Name='Mod Id' Label='Mod Id' DataType='DTYPE_ID' IsFilterable='no' IsHidden='yes' IOElemName='ModId' /> <field Name='Name' Label='Name' DataType='DTYPE_TEXT' IsPartOfUserKey='yes' IOElemName='Name' /> <field Name='Updated' Label='Updated' DataType='DTYPE_DATETIME' IsHidden='yes' IOElemName='Updated' /> <field Name='Updated By' Label='Updated By' DataType='DTYPE_ID' IsFilterable='no' IsHidden='yes' IOElemName='UpdatedBy' /> </object>
Create the basic mapping object to support the new integration object. You use an XML editor to open the Ln_siebel_basic_mapping.xml file and then add the following code:
<type id="Fulfillment Center"> <field id="Name"> <reader> <lotus_std> <lotus_field id="LastName" /> <convertor> <string /> </convertor> </lotus_std> </reader> <writer> <lotus_std> <lotus_field id="LastName" /> <convertor> <string /> </convertor> </lotus_std> </writer> </field> </type>
When Siebel CRM Desktop synchronizes data it uses this code to determine where to store mapping data in IBM Notes.
Modifying the Remaining Siebel CRM Desktop Objects
This task is a step in Process of Creating Dynamic Picklists That Use Custom Objects.
The remaining tasks you must perform are nearly identical to the tasks you perform to add a dynamic picklist. The main difference is you must use the JVD Fulfillment Center field name. For more information, see Process of Creating Dynamic Picklists.
To modify the remaining Siebel CRM Desktop objects
Extend the integration object with the new industry field. Do Modifying Siebel CRM Objects to Support Static Picklists with the following modifications:
In the Integration Component Fields list, add a new field using values from the following table.
Property Value Name
JVD Fulfillment Center
Data Type
DTYPE_TEXT
Length
50
External Sequence
237
External Name
JVD Fulfillment Center
External Data Type
DTYPE_TEXT
XML Sequence
237
XML Tag
JVDFulfillmentCenter
Do not add an integration component field user property.
Add the picklist field to the metadata. Do Adding Fields to the Metadata to Support Static Picklists with the following modifications:
Add the following code:
<field Name='JVD Fulfillment Center' Label='JVD Fulfillment Center' DataType='DTYPE_TEXT' HasPicklist='yes'PicklistIsStatic='yes'PicklistTypeId='PickList_FulfillmentC enter' IOElemName='JVDFulfillmentCenter'/>
Create the new PickList_Industry picklist type. You add the following code immediately after the code you added in Step a:
<picklist TypeId='PickList__FulfillmentCenter' SrcObjectTypeId='Fulfillment Center' ValueFldName='Name' LabelFldName='Name' />
Add the JVD Industry field to the basic mapping. Do Adding Fields to the Basic Mapping to Support Static Picklists, but use the following code:
<field id="JVD Fulfillment Center"> <reader> <lotus_std> <lotus_field id="JVDFulfillmentCenter" /> <convertor> <string /> </convertor> </lotus_std> </reader> <writer> <lotus_std> <lotus_field id="JVDFulfillmentCenter" /> <convertor> <string /> </convertor> </lotus_std> </writer> </field>
Bold text identifies the code that is different for a dynamic picklist.
Create the type that stores the list of values. Do Modifying the Basic Mapping to Store Values for Static Picklists, but use the following code:
<type id="OpportunityJVD FulfillmentCenterPicklist" predefined_folder="1" ver="1"> <form message_class="IPM.Contact.SBL.OpportunityJVD_FulfillmentCenterPicklist"></ form>
Bold text identifies the code that is different for a dynamic picklist. For more information about doing this step, see Step 4 in the topic Modifying the Basic Mapping to Store Values for Static Picklists.
Open IBM Domino Designer, open the (SBL)form:opportunity form, and then create the JVD Fulfillment Center combobox.
Configure the combobox to use the following source:
OpportunityJVD FulfillmentCenter
For more information, see Opening IBM Domino Designer.
Upload and publish your work. Do Uploading and Testing Your Static Picklist.
Test your work:
Open the client and then navigate to the opportunity form.
Make sure the form displays the Fulfillment Center picklist.
-
Choose the Fulfillment Center picklist and then make sure it displays the appropriate values.
The picklist must display all the fulfillment centers that are appropriate for the opportunity that Siebel CRM Desktop currently displays. For example:
Concord Fulfillment Center
Copy Center
Marketing Department
And so on
Process of Creating Dynamic Picklists That Use a SalesBook Control
This topic describes how to create a dynamic picklist that uses a salesbook control. You do the following work to add a dynamic picklist that uses a salesbook control:
Modifying Siebel CRM Objects to Support a Dynamic Picklist That Uses a SalesBook Control
This task is a step in Process of Creating Dynamic Picklists That Use a SalesBook Control.
In this topic you modify Siebel CRM objects to support a dynamic picklist that uses a salesbook control.
To modify Siebel CRM objects to support a dynamic picklist that uses a salesbook control
Do all the work described in Process of Creating Dynamic Picklists That Use Custom Objects.
To add a dynamic picklist that uses a salesbook control, you reuse a number of the objects that you configure when you create a dynamic picklist that uses custom objects.
Activate the following integration component fields that you deactivated in Creating an Integration Object:
Description
Main Fax Number
Main Phone Number
Set the Data Type property for the following integration component fields to DTYPE_TEXT:
Main Fax Number
Main Phone Number
If the Data Type property for these fields is not DTYPE_TEXT, then Siebel CRM Desktop cannot synchronize data for these fields.
Add a new integration component field to the CRMDesktopFulfillmentCenterIO integration object using values from the following table.
Property Value Name
JVD Fulfillment Center Id
Data Type
DTYPE_ID
External Sequence
239
External Name
JVD Fulfillment Center Id
External Data Type
DTYPE_ID
XML Sequence
239
XML Tag
JVDFulfillmentCenterId
Deploy your changes to the Siebel Runtime Repository.
Modifying the Metadata
This task is a step in Process of Creating Dynamic Picklists That Use a SalesBook Control.
In this topic you modify the metadata.
To modify the metadata
Open the siebel_meta_info.xml file and then add the following new fields to the Fulfillment Center type:
<field Name='Description' Label='Description' DataType='DTYPE_TEXT' IsPartOfUserKey='no' IOElemName='Description' />
<field Name='Main Fax Number' Label='Main Fax Number' DataType='DTYPE_PHONE' IsPartOfUserKey='no' IOElemName='MainFaxNumber' />
<field Name='Main Phone Number' Label='Main Phone Number' DataType='DTYPE_PHONE' IsPartOfUserKey='no' IOElemName='MainPhoneNumber' />
For more information about adding fields to the metadata, see Adding Fields to the Metadata to Support Static Picklists.
Remove the JVD Fulfillment Center field definition that you added in Step 2 in the topic Modifying the Remaining Siebel CRM Desktop Objects.
This fields represents data that Siebel CRM gets through a join. The Fulfillment Center object includes this data so it is not necessary to synchronize it from the opportunity object.
Add a field definition for the JVD Fulfillment Center Id field. You add the following code:
<field Name='JVD Fulfillment Center Id' Label='JVD Fulfillment Center Id' DataType='DTYPE_ID' IsFilterable='no' IsRefObjId='yes' RefObjTypeId='Fulfillment Center' RefExposedToUI='no' IOElemName='JVDFulfillmentCenterId'/>
where:
IsRefObjId specifies that Siebel CRM Desktop uses this field to create a relation with another object in Siebel CRM Desktop.
RefObjTypeId specifies the type of object that includes the relation. For example, Fulfillment Center.
RefExposedToUI instructs Siebel CRM Desktop to display the related object in the client as a separate object.
Modifying the Basic Mapping and Connector Configuration
This task is a step in Process of Creating Dynamic Picklists That Use a SalesBook Control.
In this topic you modify the basic mapping and connector configuration.
To modify the basic mapping and connector configuration
Allow Siebel CRM Desktop to store values for the new fields you added in Step 1 in the topic Modifying the Metadata. You add the following code to the Fulfillment Center object in the Ln_siebel_basic_mapping.xml file. This code maps telephone number fields to existing IBM Notes fields and creates a custom field for the Description field:
<field id="Main Phone Number"> <reader> <lotus_std> <lotus_field id="BusinessTelephoneNumber" /> <convertor> <string /> </convertor> </lotus_std> </reader> <writer> <lotus_std> <lotus_field id="BusinessTelephoneNumber" /> <convertor> <string /> </convertor> </lotus_std> </writer> </field> <field id="Main Fax Number"> <reader> <lotus_std> <lotus_field id="BusinessFaxNumber" /> <convertor> <string /> </convertor> </lotus_std> </reader> <writer> <lotus_std> <lotus_field id="BusinessFaxNumber" /> <convertor> <string /> </convertor> </lotus_std> </writer> </field> <field id="Description"> <reader> <lotus_std> <lotus_field id="Description" /> <convertor> <string /> </convertor> </lotus_std> </reader> <writer> <lotus_std> <lotus_field id="Description" /> <convertor> <string /> </convertor> </lotus_std> </writer> </field>
Locate the following type definition for the opportunity object:
<type id="Opportunity"
Add the following code to the object you located in Step 2:
<field id="JVD Fulfillment Center Id"> <reader> <lotus_std> <lotus_field id="JVDFulfillmentCenterID" /> <convertor> <binary_hexstring /> </convertor> </lotus_std> </reader> <writer> <multiwriter> <lotus_field id="JVDFulfillmentCenterID" /> <linked_fields> <link src_field="Name" dest_field="JVD Fulfillment Center"> <lotus_std> <convertor> <string /> </convertor> </lotus_std> </link> </linked_fields> </multiwriter> </writer> </field>
The writer statement in this code includes a link field that allows Siebel CRM Desktop to get the value for the JVD Fulfillment Center field in the Opportunity object from the Name field of the Fulfillment Center object. This is similar to how Siebel CRM uses a pick map. If Siebel CRM gets values for multiple fields through a join, then you can add multiple fields in the link_fields section. These link_fields must exist in the basic mapping but you do not need to add them to the metadata.
Use an XML editor open the Ln_connector_configuration.xml file.
Locate the following definition for the Opportunity object:
<type id="Opportunity"
Add the following code to the definition you located in Step 5:
<link>JVD Fulfillment Center Id</link>
This code specifies the JVD Fulfillment Center Id field as a link on the Opportunity object. In the metadata you specify that the JVD Fulfillment Center Id field is related to another object in Siebel CRM Desktop. Siebel CRM Desktop uses that relation during synchronization.
Modifying the Business Logic and Testing Your Work
This task is a step in Process of Creating Dynamic Picklists That Use a SalesBook Control.
In this topic you modify the business logic and test your work.
To modify the business logic and test your work
Add a direct link description in the Business logic:
Open the SBL.BusinessLogic script library in the IBM Domino Designer.
Locate the
CreateMetaScheme
function.This function sets up the relationships between objects.
Locate the Opportunity section in the
CreateMetaScheme
function.Create the link definition for the Fulfillment Center object relation with the Opportunity object.
The following helper function should be used:
MetaSchemeHelpper.AddDirectLink(linkFrom As String, linkTo As String, fieldName As String, fieldStatusName As String, tag As String, removeOnUnlink as Boolean)
where:
linkFrom specifies the object type where the link field resides.
linkTo specifies the object type that the link field references.
fieldName specifies the name of the field which stores the ID for the linked object.
fieldStatusName specifies the name of the field which stores a Status of linked object (Unsaved or Deleted).
tag specifies the tag name for link.
removeOnUnlink specifies that the linked document should be removed in case of unlinking from the parent object (True) or remains in the local storage as a separate object (False).
In this example, you add the following code:
Call Helper.AddDirectLink("Opportunity", "Fulfillment Center", "JVDFulfillmentCenterId", "ObjectStatus", LINK_TAG_DIRECT, False);
Save and close the SBL.BusinessLogic script library.
Create a new view design element for SalesBook and lookup purposes:
Create a new view with the following name in IBM Domino Designer:
(SBL)\salesbook:FulfillmentCenters
Enter the following View Selection formula:
SELECT CRMDType = "Fulfillment Center"
Modify parameters of the first view column:
Title: display_name Sort: None Column Value:@Trim(@ReplaceSubstring(Name; "|" : @NewLine; "¦" : " ")) + "|" + @Text(@DocumentUniqueID) Hide Column: yes
Add the second column with the following parameters:
Title: Fulfillment Center Name Sort: Ascending Column Value: Name Hide Column: no
Enter the following code into the
Queryopendocument
event:Sub Queryopendocument(Source As Notesuiview, Continue As Variant) Continue = False End Sub
Save and close the view design element.
Add the picklist control to the Opportunity form handler:
Open the SBL.Forms script library in the IBM Domino Designer.
Locate the PostOpen procedure in the
FormOpportunityEx
class.Input the following code anywhere before calling InitDescriptors:
Dim FulfillmentController As New DescriptorControllerLookup("JVDFulfillmentCenterId", "Fulfillment Center", LINK_TAG_DIRECT, "sbFulfillmentButton", "(SBL)\salesbook:FulfillmentCenters ", "") With FulfillmentController .Caption = "Fulfillment Centers" .ChooseFrom = "Select from Fulfillment Centers" End With Set Me.addDescriptor = FulfillmentController
Save and close the SBL.Forms library
Add the picklist control to the Opportunity form layout:
Open the (SBL)form:opportunity form in IBM Domino Designer.
Add a Fulfillment Center label where you need it on the form layout.
Add a new field with the following parameters:
Name: JVDFulfillmentCenterId Editable: yes Type: Dialog list Show field delimiters: no Allow values not in list: no
Input the following Choices formula for this field:
sblist:= @DbColumn("":"NoCache"; ""; "(SBL)\\salesbook:FulfillmentCenters "; 1); thisV := @ThisValue; sblistsize := 2 + 2 * @Elements(sblist) + 2 * @Sum(@Length(sblist)) - @Sum(@Length(@Ascii(sblist; [AllInRange]))); maxlistsize := 64000; @If(sblistsize > maxlistsize; @True; @Return(sblist)); thisLabel := @If(thisV = ""; ""; @Trim(@Left(sblist; thisV))); nmax := @Max(@Length(@Trim(@Left(sblist; "|")))); n := 0; @DoWhile(n := n + 1; abcLabel := @If(thisV = ""; ""; @Left(thisLabel; n)); abcN := @If(thisV = ""; 1; n + 1); abclist := @Unique(@Left(sblist; abcN)); abclist := @If(thisV = ""; abclist; @Transform(abclist; "entry"; @If(@Matches(entry; @Left(abcLabel; 1) + "*" ); entry; @Nothing ))); plist := @Transform(sblist; "entry"; @If((abcLabel != "") & @Matches(entry; abcLabel + "*"); entry; @IsMember(@Left(entry; abcN); abclist); @Do(abclist := @Replace(abclist; @Left(entry; abcN); @Nothing) ; entry); @Nothing)); plistsize := 2 + 2 * @Elements(plist) + 2 * @Sum(@Length(plist)) - @Sum(@Length(@Ascii(plist; [AllInRange]))); (plistsize > maxlistsize) & (n < nmax)); plist
Enter the following code into the Onchange event of the field:
Sub Onchange(Source As Field) Call cOnChange(m_FormHandler, "JVDFulfillmentCenterId") End Sub
Add the new button with the following IBM Notes script code in the Click event:
Sub Click(Source As Button) Call cOnClick(m_FormHandler, "sbFulfillmentButton") End Sub
Save and close the Opportunity form.
Upload and publish your work. Do Uploading and Testing Your Static Picklist.
Test your work:
Open the client and then navigate to the Opportunity form.
Make sure the form displays the Center picklist.
Type text into the Center picklist.
As you enter each character of text the Center picklist must display different values in the autocomplete entries. These entries must change according to the character you enter. For example, if you enter the letter B, then the field must display entries that begin with the letter B.
Click the button that opens the SalesBook dialog box.
CRM Desktop must display the SalesBook dialog box. It must include a list of fulfillment centers. For example:
Concord Fulfillment Center
Copy Center
Marketing Department
And so on
Process of Creating Hierarchical Picklists
To create a hierarchical picklist, you do the following:
Modifying Siebel CRM Objects to Support Hierarchical Picklists
Modifying the Basic Mapping and Forms to Support Hierarchical Picklists
This topic describes how to configure Siebel CRM Desktop to display a hierarchical picklist. In this example, two fields use static picklists. The values displayed in the second picklist depend on the value that the user chooses in the first picklist. For more information about the hierarchical picklist, see Configuring Siebel Business Applications.
The example in this topic adds a hierarchical picklist to the Opportunity form in Siebel CRM Desktop. Assume that a hierarchical list of values named JVD_HIER already exists in Siebel CRM. The following table describes the properties of this hierarchical list of values.
Type | Display Value | Parent LIC |
---|---|---|
JVD_HIER |
Child 1 of Parent 1 |
Parent 1 |
JVD_HIER |
Child 1 of Parent 2 |
Parent 2 |
JVD_HIER |
Child 2 of Parent 1 |
Parent 1 |
JVD_HIER |
Child 2 of Parent 2 |
Parent 2 |
JVD_HIER |
Parent 1 |
Not applicable |
JVD_HIER |
Parent 2 |
Not applicable |
Modifying Siebel CRM Objects to Support Hierarchical Picklists
This task is a step in Process of Creating Hierarchical Picklists.
In this topic you modify Siebel CRM objects to support a hierarchical picklist.
To modify Siebel CRM objects to support a hierarchical picklist
Open Siebel Tools.
In the Object Explorer, click Pick List.
In the Picklists list, create two new picklists using values from the following table.
Name Business Component Search Specification JVD Hierarchical - Child
PickList Generic
Not applicable
JVD Hierarchical - Parent
PickList Generic
'[Parent] Is Null'
In the Object Explorer, click Business Component.
In the Business Components list, query the Name property for Opportunity.
In the Object Explorer, expand the Business Component tree and then click Field.
In the Fields list, create two new fields using values from the following table.
Name Join Column Type Picklist JVD Hier Child
S_OPTY_X
ATTRIB_47
DTYPE_TEXT
JVD Hierarchical - Child
JVD Hier Parent
S_OPTY_X
ATTRIB_46
DTYPE_TEXT
JVD Hierarchical - Parent
Extend the integration object to expose the new field:
In the Object Explorer, click Integration Object.
In the Integration Objects list, query the name property for CRMDesktopOpportunityIO.
In the Object Explorer, expand the Integration Object tree and then click Integration Component.
In the Integration Components list, query the External Name Context property for Opportunity.
In the Object Explorer, expand the Integration Component tree and then click Integration Component Field.
In the Integration Component Fields list, add a new field using values from the following table.
Property Value Name
JVD Hier Parent
Data Type
DTYPE_TEXT
Length
30
External Sequence
233
External Name
JVD Hier Parent
External Data Type
DTYPE_TEXT
XML Sequence
233
XML Tag
JVDHierParent
In the Object Explorer, expand the Integration Component Field tree and then click Integration Component Field User Prop.
In the Integration Component Field User Props list, add a new user property using values from the following table.
Property Value Name
PICKLIST
Value
Y
In the Object Explorer, click Integration Component Field. .
In the Integration Component Fields list, add a new field using values from the following table.
Property Value Name
JVD Hier Child
Data Type
DTYPE_TEXT
Length
30
External Sequence
234
External Name
JVD Hier Child
External Data Type
DTYPE_TEXT
XML Sequence
234
XML Tag
JVDHierChild
In the Object Explorer, click Integration Component Field User Prop.
In the Integration Component Field User Props list, add a new user property using values from the following table.
Property Value Name
PICKLIST
Value
Y
Deploy your changes to the Siebel Runtime Repository.
Modifying the Metadata to Support Hierarchical Picklists
This task is a step in Process of Creating Hierarchical Picklists.
In this topic you modify the metadata to support a hierarchical picklist.
To modify the metadata to support a hierarchical picklist
Use an XML editor open the siebel_meta_info.xml file.
Locate the following object:
TypeId="Opportunity"
Add new fields to the Opportunity object. You add the following code immediately following the object you located in Step 2:
<field Name='JVD Hier Parent' Label='JVD Hier Parent' DataType='DTYPE_TEXT' HasPicklist='yes' PicklistIsStatic='yes' PicklistCollectionType='JVD_HIER' PicklistTypeId=List_Of_Values_Parent' IOElemName='JVDHierParent'/>
<field Name='JVD Hier Child' Label='JVD Hier Child' DataType='DTYPE_TEXT' HasPicklist='yes' PicklistIsStatic='yes' PicklistCollectionType='JVD_HIER' PicklistTypeId='PickList_Hierarchical_Child' IOElemName='JVDHierChild'/>
Locate the following object:
<picklist TypeId="PickList_Hierarchical" . . . </picklist>
Add the child picklist. Add the following code after the object you located in Step 4:
<picklist TypeId='PickList_Hierarchical_Child' SrcObjectTypeId='PickList_Hierarchical' CollectionTypeFldName='Type' ValueFldName='Value' LabelFldName='Value' LangFldName='Language' > <extra_src_fldname Visible='true'> Parent </extra_src_fldname> <master_filter_expr> <![CDATA[ NOT [Parent Id] Is Null ]]> </master_filter_expr> </picklist>
The following filter makes sure that Siebel CRM Desktop gets only the four values that are applicable as child values:
NOT [Parent Id] Is Null
The following field sets up filtering for items that you configure later in this procedure:
<extra_src_fldname Visible='true'> Parent </extra_src_fldname>
Add the parent picklist. You add the following code:
<picklist TypeId='List_Of_Values_Parent' SrcObjectTypeId='List_Of_Values' CollectionTypeFldName='Type' ValueFldName='Value' LabelFldName='Value' LangFldName='Language'> <master_filter_expr> <![CDATA[ [Active] = 'Y' AND [Parent Id] Is Null ]]> </master_filter_expr> </picklist>
The following filter makes sure that Siebel CRM Desktop gets the values that are allowed as parent values:
[Active] = 'Y' AND [Parent Id] Is Null
Modifying the Basic Mapping and Forms to Support Hierarchical Picklists
This task is a step in Process of Creating Hierarchical Picklists.
In this topic you modify the basic mapping and forms to support a hierarchical picklist.
To modify the basic mapping and forms to support a hierarchical picklist
Add the parent field to the basic mapping. Do Adding Fields to the Basic Mapping to Support Static Picklists, but use the following code:
<field id="JVD Hier Parent"> <reader> <lotus_std> <lotus_field id="JVDHierParent" /> <convertor> <string /> </convertor> </lotus_std> </reader> <writer> <lotus_std> <lotus_field id="JVDHierParent" /> <convertor> <string /> </convertor> </lotus_std> </writer> </field>
Add the child field to the basic mapping. Do Adding Fields to the Basic Mapping to Support Static Picklists, but use the following code:
<field id="JVD Hier Child"> <reader> <lotus_std> <lotus_field id="JVDHierChild" /> <convertor> <string /> </convertor> </lotus_std> </reader> <writer> <lotus_std> <lotus_field id="JVDHierChild" /> <convertor> <string /> </convertor> </lotus_std> </writer> </field>
Create the type that stores the list of values for the parent picklist. Do Modifying the Basic Mapping to Store Values for Static Picklists, but use the following code:
<type id="OpportunityJVD Hier ParentPicklist">
Bold text identifies the code that is different for a hierarchical picklist. For more information about doing this step, see Step 4 in topic Modifying the Basic Mapping to Store Values for Static Picklists.
Create the type that stores the list of values for the child picklist. Do Modifying the Basic Mapping to Store Values for Static Picklists, but use the following code:
<type id="OpportunityJVD Hier ChildPicklist" predefined_folder="1" ver="1"> <form message_class="IPM.Contact.SBL.OpportunityJVD_Hier_ChildPicklist"></form>
Bold text identifies the code that is different for a hierarchical picklist. For more information about doing this step, see Step 4 in topic Modifying the Basic Mapping to Store Values for Static Picklists.
Allow the child picklist to store the value from the parent field. You add the following code to the OpportunityJVD Hier ChildPicklist type that you created in Step 4:
<field id="Parent"> <reader> <lotus_std> <lotus_field id="Parent" />| <convertor> <string /> </convertor> </lotus_std> </reader> <writer> <lotus_std> <lotus_field id="Parent" /> <convertor> <string /> </convertor> </lotus_std> </writer> </field>
Open IBM Domino Designer, and then open the following form:
(SBL)form:opportunity
For more information, see Opening IBM Domino Designer.
Create the JVD Hier Parent combobox.
Create the JVD Hier Child combobox.
Linking Fields and Testing Your Hierarchical Picklist
This task is a step in Process of Creating Hierarchical Picklists.
If the user chooses a value in the parent picklist, then this value filters the values that Siebel CRM Desktop displays in the child picklist. To set up this relationship in:
Siebel Tools. You set up a constraint on the pickmap.
Siebel CRM Desktop. You write a Lotus Script code in the Opportunity form handler and Opportunity form.
This code implements the business logic for the Opportunity form. The SBL.Forms library includes similar code for each form that Siebel CRM Desktop displays.
If you do not establish this relationship between the parent picklist and the child picklist, then the parent dropdown list displays all parent values as options and the child dropdown list displays all child values.
To link fields and test your hierarchical picklist
Open the SBL.Forms script library in IBM Domino Designer.
Add a new class:
'/** ' * Callback class for clearing fields ' */ Public Class CallbackClearFields As CallbackObject Private m_formEx As FormEx Private m_fieldNames As ArrayEx '/** ' * Constructor ' * @param formEx - current formEx object ' * @param fieldNames - names of fields which must be cleared ' */ Sub New(formEx As FormEx, fieldNames As ArrayEx) Set m_formEx = formEx Set m_fieldNames = fieldNames End Sub '/** ' * Invokes callback: clear all defined fields ' * @param params - arguments (not used) ' * @return Variant - result of invoking (not used) ' */ Public Function invoke(params As DynamicArguments) As Variant On Error Goto catch Dim i As Integer Dim control As ControlEditable For i = 0 To m_fieldNames.length - 1 Set control = m_formEx.FormManager.getControl(Cstr(m_fieldNames.Item(i))) If Not control Is Nothing Then control.Value = "" Else m_formEx.DocumentEx.Property(Cstr(m_fieldNames.Item(i))) = "" End If Next Call m_formEx.Form.Refresh() finally: Exit Function catch: LogMsg "CallbackClearFields.invoke", "Exception " & Err & ": " & Error & " in line " & Cstr(Erl), LOG_LEVEL_ERROR Resume finally End Function End Class
Locate the InitControls procedure in the
FormOpportunityEx
class and add the following code:Dim controlChannelType As New ControlEditable("JVDHierParent", Me.Form) Set callback = New CallbackClearFields(Me, NewSmartArray.Add("JVDHierChild")) Call controlChannelType.OnChange.Connect(callback) Call Me.FormManager.RegisterControl(controlChannelType)
Save and close the SBL.Forms script library.
Open the (SBL)form:opportunity form in IBM Domino Designer.
Locate the JVDHierParent field and input the following code in the Onchange event:
Sub Onchange(Source As Field) Call cOnChange(m_FormHandler, "JVDHierParent") End Sub
Locate the JVDHierChild field and modify the following parameter properties:
Refresh choices on document refresh - yes Note that field's choices parameters should contain valid @-formulas to make them dependent.
Example of JVDHierParent field's choices formula: key:="JVD Hier Parent"; @DbLookup("":"NoCache";"";"SBLPicklistsOpportunity";key;3; [FailSilent]) Example JVDHierChild field's choices formula: key := JVDHierParent; @DbLookup("":"NoCache";"";"SBLPicklistsOpportunity";key;3; [FailSilent]) where: SBLPicklistsOpportunity - name or alias of the view which contains correspondent picklist records
Save and close the Opportunity form.
Upload and publish your work. Do Uploading and Testing Your Static Picklist.
Test your work:
Open the client and then navigate to the Opportunity form.
Make sure the form displays the following picklists:
Hier Parent
Hier Child
Choose the Hier Parent picklist and make sure it includes the following values:
Parent 1
Parent 2
Choose Parent 1 in the Hier Parent picklist.
Siebel CRM Desktop should automatically change the value for the Hier Child picklist to Child 1 of Parent 1.
Choose the Hier Child picklist and make sure it includes the following values:
Child 1 of Parent 1
Child 2 of Parent 1
Choose Parent 2 in the Hier Parent picklist.
Siebel CRM Desktop should automatically change the value for the Hier Child picklist to Child 1 of Parent 2.
Choose the Hier Child picklist and make sure it includes the following values:
Child 1 of Parent 2
Child 2 of Parent 2
Configuring Lists of Values to Support Multiple Languages
The predefined Siebel CRM Desktop runs in the language that IBM Notes uses when you install Siebel CRM Desktop. This configuration works if IBM Notes and the Siebel object manager use the same language. For example, you can run an English IBM Notes client that connects to an English object manager, or a German IBM Notes client that connects to a German object manager. This configuration does not work in a Siebel deployment that uses multiple languages. For example, you cannot use the predefined configuration to run an English object manager with English IBM Notes clients and German IBM Notes clients. This topic describes how to configure Siebel CRM Desktop so that you can run an English object manager with multiple languages.
To configure lists of values to support multiple languages
Open Siebel Tools.
Create the new business components that will handle the multilingual values:
In the Object Explorer, click Business Component.
In the Business Components list, locate the List Of Values business component.
Click Edit and then click Copy Record.
Set properties for the copy you made in Step c using values from the following table.
Property Value Name
CRM Desktop List Of Values
Search Specification
([Class Code] <> 'CLASS' OR [Class Code] IS NULL) AND [Language]= Language()
This search specification makes sure this business component only returns values where the language of these values match the language that the object manager uses.
In the Business Components list, locate the PickList Hierarchical business component.
Click Edit and then click Copy Record.
Set properties for the copy you made in Step f using values from the following table.
Property Value Name
CRM Desktop PickList Hierarchical
Search Specification
[Language] = Language()
Create business objects for the business components that you created in Step 2:
In the Object Explorer, click Business Object.
Right-click in the Business Objects list, click New Record, and then set properties using values from the following table.
Property Value Name
CRM Desktop List Of Values
In the Object Explorer, expand the Business Object tree and then click Business Object Component.
Right-click in the Business Object Components list, click New Record, and then set properties using values from the following table.
Property Value Name
CRM Desktop List Of Values
Right-click in the Business Objects list, click New Record, and then set properties using values from the following table.
Property Value Name
CRM Desktop PickList Hierarchical
Right-click in the Business Object Components list, click New Record, and then set properties using values from the following table.
Property Value Name
CRM Desktop PickList Hierarchical
Update the integration objects:
In the Object Explorer, click Integration Object.
In the Integration Objects list, locate the CRMDesktopListOfValuesIO integration object and then modify the properties of this integration object using value from the following table.
Property Value Name
CRM Desktop List Of Values
In the Object Explorer, expand the Integration Object tree and then click Integration Component.
In the Integration Components list, query the Name property for the following value:
List Of Values
Modify the properties of the integration component you located in Step d using value from the following table.
Property Value Name
CRM Desktop List Of Values
External Name Context
CRM Desktop List Of Values
External Name
CRM Desktop List Of Values
In the Integration Objects list, locate the CRMDesktopPickListHierarchicalIO integration object and then modify the properties of this integration object using value from the following table.
Property Value External Name
CRM Desktop PickList Hierarchical
In the Integration Components list, query the Name property for the following value:
PickList Hierarchical
Modify the properties of the integration component you located in step g using value from the following table.
Property Value Name
CRM Desktop PickList Hierarchical
External Name Context
CRM Desktop PickList Hierarchical
External Name
CRM Desktop PickList Hierarchical
Deploy your changes to the Siebel Runtime Repository.
Update the Siebel CRM Desktop package so that it does not get the list of values in a certain language but instead accepts the language that the Siebel object manager returns:
Use an XML editor open the siebel_meta_info.xml file.
Remove the LangFldName='Language' attribute from the following PickList objects:
StatePickList
PickList_Hierarchical
List_Of_Values
AccountNoteType
RevenueType