10Customizing Picklists

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.

    Picklist Object Structure That Siebel CRM Desktop Uses: This image is divided into three parts: Design Element, Ln_siebel_basic_mapping.xml, and siebel_meta_info.xml. Design Element contains the following objects: Combobox, View, and Type. Ln_siebel_basic_mapping.xml contains the following objects: Type, Field, and Type (TypeFieldPicklist). Siebel_meta_infol.xml contains the following objects: Object, Field, and Picklist.

    Explanation of Callouts

    The picklist object structure that Siebel CRM Desktop uses includes the following items:

    1. 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.

    2. 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.

    3. 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.

    4. 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.

    5. 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.

    6. 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

      1. In the client, open an activity and then click the down arrow in the Type field.

      2. 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.

      3. Open Siebel Tools and then display the Integration Object object type.

        For more information, see Displaying Object Types in Siebel Tools.

      4. Add a field to the PickList Generic business component:

        1. In the Object Explorer, click Business Component.

        2. In the Business Components list, query the Name property for PickList Generic.

        3. In the Object Explorer, expand the Business Component tree and then click Field.

        4. In the Fields list, add a new field using values from the following table.

          Property Value

          Name

          Active

          Column

          ACTIVE_FLG

      5. Repeat Step 4, but add the field to the PickList Hierarchical business component:

      6. Add a field to the CRMDesktopPickListGenericIO integration object:

        1. In the Object Explorer, click Integration Object.

        2. In the Integration Objects list, query the Name property for CRMDesktopPickListGenericIO.

        3. In the Object Explorer, expand the Integration Object tree and then click Integration Object Component.

        4. In the Integration Components list, query the Name property for PickList Generic.

        5. In the Object Explorer, expand the Integration Components tree and then click Integration Component Field.

        6. 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

      7. Repeat Step 6, but add the field to the PickList Hierarchical integration component of the CRMDesktopPickListHierarchicalIO integration object.

      8. Deploy your changes to the Siebel Runtime repository.

      9. 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.

      10. 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>
        
      11. 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>
        
      12. 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>
        
      13. Save the siebel_meta_info.xmlfile, upload it to the CRM Desktop Admin screen, and then add it to the active package.

      14. Apply the package and then synchronize.

      15. 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

      1. Use an XML editor open the Ln_package_res.xml file.

      2. 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>
        
      3. 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:

      1. Identifying Predefined Picklist Objects in Siebel CRM.

      2. Creating an Integration Object for the Contact Method Picklist

      3. Extending an Integration Object for the Contact Method Picklist

      4. Adding Fields to the Customization Package

      5. Customizing the Physical Layout for the Picklist

      6. Publishing and Testing Picklists

      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

        1. Identify the field that Siebel CRM associates with the picklist you must add:

          1. Open Siebel Call Center.

          2. Navigate to the Contacts list and then click a name in the Last Name field.

          3. 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.

          4. 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.

          5. 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.

          6. In Siebel Tools, in the Object Explorer, click Applet.

          7. 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.

          8. 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.

          9. In the Applet Web Template editor, click the Contact Method control.

          10. 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.

        2. Identify the picklist:

          1. Open Siebel Tools.

          2. In the Object Explorer, click Business Component.

          3. In the Business Components list, query the Name property for Contact.

          4. In the Object Explorer, expand the Business Component tree, and then click Field.

          5. 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

        3. Identify the business component that the picklist references:

          1. In the Object Explorer, click Pick List.

          2. 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

        4. Identify the parent business object of the business component that the picklist references:

          1. In the Object Explorer, click the Flat tab and then click Business Object Component.

          2. 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

          1. In Siebel Tools, make sure the integration component object type is displayed.

            For more information, see Displaying Object Types in Siebel Tools.

          2. Choose the File Menu and then click New Object.

          3. Click the EAI tab, click Integration Object and then click OK.

          4. 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

          5. 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.

          6. Accept the default values, click Next, and then click Finish.

          7. 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

            1. In Siebel Tools, make sure the integration component object type is displayed.

              For more information, see Displaying Object Types in Siebel Tools.

            2. In the Object Explorer, click Integration Object.

            3. In the Integration Objects list, query the Name property for CRMDesktopContactIO, and then make sure the Object Locked property contains a check mark.

            4. In the Object Explorer, expand the Integration Object tree and then click Integration Component.

            5. In the Integration Components list, query the Name property for Contact.

            6. In the Object Explorer, expand the Integration Components tree and then click Integration Component Field.

            7. 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.

            8. Repeat Step 3 through Step 7 for the CRMDesktopAccountIO integration object.

            9. Repeat Step 3 through Step 7 for the CRMDesktopOpportunityIO integration object.

            10. 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

                1. Create a working set of files for the customization package:

                  1. 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.

                  2. Create a copy of the current set of customization package files.

                  3. 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.

                  4. 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.

                2. Verify that Siebel Tools added the integration object:

                  1. Use an XML editor open the siebel_meta_info.xml file.

                    For more information, see Files in the Customization Package.

                  2. Locate the PickList_Preferred_Communications object. You search for the following code:

                    <object TypeId="PickList_Preferred_Communications"
                    
                  3. 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

                3. 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.

                4. Add the Preferred Communications field to the Contact object:

                  1. Locate the Contact object. You search for the following code:

                    object TypeID='Contact'
                    
                  2. 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" />
                    
                5. 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.

                6. Add code that creates a map for the picklist between the Siebel Server and Siebel CRM Desktop for the parent Contact object:

                  1. Use an XML editor to open the Ln_siebel_basic_mapping.xml file.

                  2. Create a new object type for the picklist.

                    For more information, see Code That Creates a New Object Type for the Pick List.

                  3. Locate the parent object. You search the Ln_siebel_basic_mapping.xml file for the following code:

                    <type id="Contact"
                    
                  4. 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.

                7. Add code that creates a map for the picklist between the Siebel Server and Siebel CRM Desktop for the child Account Contacts object:

                  1. 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.

                  2. Copy this code to the clipboard.

                  3. Locate the Account Contacts child object. Search the Ln_siebel_basic_mapping.xml file for the following code:

                    type id="Account.Contact.Association"
                    
                  4. Locate the Contact field. Search in the Account.Contact.Association object for the following text:

                    field id="ContactId" 
                    
                  5. Locate the matching ContactId. Search the ContactId field for the following text:

                    user_field id="sbl Contact ID" 
                    
                  6. 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.

                  7. 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>
                    
                8. 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:

                        1. The following attribute identifies the account child object of the parent contact:

                          type id="Account.Contact.Association"
                          
                        2. The following tag identifies the Contact field in the account object:

                          field id="ContactId"ver="1"
                          
                        3. The following attribute identifies the matching ContactId:

                          lotus_field id="CRMRightId"/
                          
                        4. 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>
                          
                        5. 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.

                          Contact Details Section of the Contact Form: The Contact Details section contains these fields: Contact Name, Company Name, Job Title, Save Correspondence check box, Account, Contact Team, Personal Addresses.

                            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

                            1. Publish your changes.

                              For more information, see Using the Windows Registry to Control Siebel CRM Desktop.

                            2. Test your changes:

                              1. Open the client and then navigate to the Contact form.

                              2. Verify that the form includes a label and picklist for the Contact Method field, as illustrated in the following diagram:

                              3. 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.

                              4. 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:

                              1. Modifying Siebel CRM Objects to Support Static Picklists

                              2. Adding Fields to the Metadata to Support Static Picklists

                              3. Adding Fields to the Basic Mapping to Support Static Picklists

                              4. Modifying the Basic Mapping to Store Values for Static Picklists

                              5. Modifying the Form to Support Static Picklists

                              6. Uploading and Testing Your Static Picklist

                              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

                                1. Open Siebel Tools.

                                2. In the Object Explorer, click Integration Object.

                                3. In the Integration Objects list, query the name property for CRMDesktopOpportunityIO.

                                4. In the Object Explorer, expand the Integration Object tree and then click Integration Component.

                                5. In the Integration Components list, query the External Name Context property for Opportunity.

                                6. In the Object Explorer, expand the Integration Component tree and then click Integration Component Field.

                                7. 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

                                8. In the Object Explorer, expand the Integration Component Field tree and then click Integration Component Field User Prop.

                                9. 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

                                10. 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

                                  1. Use an XML editor open the siebel_meta_info.xml file.

                                  2. Locate the following object:

                                    TypeId="Opportunity"
                                    
                                  3. 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

                                      1. Use an XML editor to open the Ln_siebel_basic_mapping.xml file.

                                      2. Locate the following object:

                                        id=�?Opportunity�?
                                        
                                      3. 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

                                        1. 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'
                                          
                                        2. Copy the entire ContactStatusPicklist object.

                                        3. Paste the entire ContactStatusPicklist object immediately following the object you located in Step 1.

                                        4. 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:

                                          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

                                            1. Publish the following files that you modified:

                                            2. Open the client and then navigate to the Opportunity form.

                                            3. Make sure this form includes a new field named JVD Simple.

                                            4. 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

                                              1. Do all the work described in Process of Creating Custom Static Picklists with the following modifications:

                                              2. Use an XML editor open the siebel_meta_info.xml file.

                                              3. Locate and then make a copy of the predefined list of values.

                                                For more information, see About the Predefined List of Values Object.

                                              4. 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.

                                              5. 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:

                                              1. Modifying Siebel CRM Objects to Support Dynamic Picklists

                                              2. Modifying the Metadata, Basic Mapping, and Forms to Support Dynamic Picklists

                                              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

                                                1. Open Siebel Tools.

                                                2. In the Object Explorer, click Business Component.

                                                3. In the Business Components list, query the name property for Opportunity.

                                                4. In the Object Explorer, expand the Business Component tree and then click Business Component Field.

                                                5. 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

                                                6. 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

                                                7. 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

                                                  1. Add the picklist field to the metadata. Do Adding Fields to the Metadata to Support Static Picklists with the following modifications:

                                                    1. 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.

                                                    2. 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.

                                                  2. 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.

                                                  3. 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.

                                                  4. Open IBM Domino Designer, and then add the field to the following form:

                                                    (SBL)form:opportunity
                                                    

                                                    For more information, see Opening IBM Domino Designer.

                                                  5. Upload and publish your work. Do Uploading and Testing Your Static Picklist.

                                                  6. Test your work:

                                                    1. Open the client and then navigate to the opportunity form.

                                                    2. Make sure the form displays the Industry picklist.

                                                    3. 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:

                                                    1. Modifying the Business Component

                                                    2. Creating an Integration Object

                                                    3. Modifying Siebel CRM Desktop to Support the New Integration Object

                                                    4. Modifying the Remaining Siebel CRM Desktop 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

                                                      1. Open Siebel Tools.

                                                      2. In the Object Explorer, click Business Component.

                                                      3. In the Business Components list, query the name property for Opportunity.

                                                      4. In the Object Explorer, expand the Business Component tree and then click Business Component Field.

                                                      5. 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

                                                      6. 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

                                                        1. In Siebel Tools, choose the File menu and then click New Object.

                                                        2. In the New Object Wizards dialog box, click the EAI tab, click Integration Object, and then click OK.

                                                        3. 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

                                                        4. 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

                                                        5. In the Integration Object Builder - Choose Integration Components dialog box, do the following:

                                                          1. Expand the Fulfillment Center tree.

                                                          2. Remove the check mark from the Fulfillment Center_Position check box.

                                                          3. Click Next and then click Finish.

                                                            Siebel Tools creates and then displays the new integration object.

                                                        6. (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

                                                        7. Make fields that Siebel CRM Desktop does not require inactive:

                                                          1. In the Object Explorer, expand the Integration Object tree, expand the Integration Component Tree, and then click Integration Component Field.

                                                          2. 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.

                                                        8. 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.

                                                        9. 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.

                                                        10. Create the modification key:

                                                          1. 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

                                                          2. In the Object Explorer, expand the Integration Component Key and then choose Integration Component Key Field.

                                                          3. 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

                                                        11. Create the primary key:

                                                          1. 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

                                                          2. In the Integration Component Key Fields list, add a new field using values from the following table.

                                                            Name Field Name

                                                            Id

                                                            Id

                                                        12. Create the status key:

                                                          1. 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

                                                          2. 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

                                                        13. 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

                                                          1. 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>
                                                            
                                                          2. 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>
                                                            
                                                          3. 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

                                                            1. 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.

                                                            2. Add the picklist field to the metadata. Do Adding Fields to the Metadata to Support Static Picklists with the following modifications:

                                                              1. 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'/>
                                                                
                                                              2. 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' />
                                                                
                                                            3. 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.

                                                            4. 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.

                                                            5. 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.

                                                            6. Upload and publish your work. Do Uploading and Testing Your Static Picklist.

                                                            7. Test your work:

                                                              1. Open the client and then navigate to the opportunity form.

                                                              2. Make sure the form displays the Fulfillment Center picklist.

                                                              3. 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:

                                                              1. Modifying Siebel CRM Objects to Support a Dynamic Picklist That Uses a SalesBook Control

                                                              2. Modifying the Metadata

                                                              3. Modifying the Basic Mapping and Connector Configuration

                                                              4. Modifying the Business Logic and Testing Your Work

                                                                For more information, see Overview of Customizing Picklists.

                                                                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

                                                                1. 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.

                                                                2. Activate the following integration component fields that you deactivated in Creating an Integration Object:

                                                                  • Description

                                                                  • Main Fax Number

                                                                  • Main Phone Number

                                                                3. 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.

                                                                4. 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

                                                                5. 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

                                                                  1. 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.

                                                                  2. 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.

                                                                  3. 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

                                                                    1. 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>
                                                                      
                                                                    2. Locate the following type definition for the opportunity object:

                                                                      <type id="Opportunity"
                                                                      
                                                                    3. 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.

                                                                    4. Use an XML editor open the Ln_connector_configuration.xml file.

                                                                    5. Locate the following definition for the Opportunity object:

                                                                      <type id="Opportunity"
                                                                      
                                                                    6. 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

                                                                      1. Add a direct link description in the Business logic:

                                                                        1. Open the SBL.BusinessLogic script library in the IBM Domino Designer.

                                                                        2. Locate the CreateMetaScheme function.

                                                                          This function sets up the relationships between objects.

                                                                        3. Locate the Opportunity section in the CreateMetaScheme function.

                                                                        4. 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);
                                                                            
                                                                        5. Save and close the SBL.BusinessLogic script library.

                                                                      2. Create a new view design element for SalesBook and lookup purposes:

                                                                        1. Create a new view with the following name in IBM Domino Designer:

                                                                          (SBL)\salesbook:FulfillmentCenters

                                                                        2. Enter the following View Selection formula:

                                                                          SELECT CRMDType = "Fulfillment Center"
                                                                          
                                                                        3. Modify parameters of the first view column:

                                                                          Title: display_name
                                                                          Sort: None
                                                                          Column Value:@Trim(@ReplaceSubstring(Name; "|" : @NewLine; "¦" : " ")) +  "|" + 
                                                                          @Text(@DocumentUniqueID)
                                                                          Hide Column: yes
                                                                          
                                                                        4. Add the second column with the following parameters:

                                                                          Title: Fulfillment Center Name
                                                                          Sort: Ascending
                                                                          Column Value: Name
                                                                          Hide Column: no
                                                                          
                                                                        5. Enter the following code into the Queryopendocument event:

                                                                          Sub Queryopendocument(Source As Notesuiview, Continue As Variant)
                                                                          Continue = False
                                                                          End Sub
                                                                          
                                                                        6. Save and close the view design element.

                                                                      3. Add the picklist control to the Opportunity form handler:

                                                                        1. Open the SBL.Forms script library in the IBM Domino Designer.

                                                                        2. Locate the PostOpen procedure in the FormOpportunityEx class.

                                                                        3. 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
                                                                          
                                                                        4. Save and close the SBL.Forms library

                                                                      4. Add the picklist control to the Opportunity form layout:

                                                                        1. Open the (SBL)form:opportunity form in IBM Domino Designer.

                                                                        2. Add a Fulfillment Center label where you need it on the form layout.

                                                                        3. 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
                                                                          
                                                                        4. 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
                                                                          
                                                                        5. Enter the following code into the Onchange event of the field:

                                                                          Sub Onchange(Source As Field)
                                                                          Call cOnChange(m_FormHandler, "JVDFulfillmentCenterId")
                                                                          End Sub
                                                                          
                                                                        6. 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
                                                                          
                                                                        7. Save and close the Opportunity form.

                                                                      5. Upload and publish your work. Do Uploading and Testing Your Static Picklist.

                                                                      6. Test your work:

                                                                        1. Open the client and then navigate to the Opportunity form.

                                                                        2. Make sure the form displays the Center picklist.

                                                                        3. 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.

                                                                        4. 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:

                                                                        1. Modifying Siebel CRM Objects to Support Hierarchical Picklists

                                                                        2. Modifying the Metadata to Support Hierarchical Picklists

                                                                        3. Modifying the Basic Mapping and Forms to Support Hierarchical Picklists

                                                                        4. Linking Fields and Testing Your Hierarchical Picklist

                                                                        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

                                                                          1. Open Siebel Tools.

                                                                          2. In the Object Explorer, click Pick List.

                                                                          3. 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'

                                                                          4. In the Object Explorer, click Business Component.

                                                                          5. In the Business Components list, query the Name property for Opportunity.

                                                                          6. In the Object Explorer, expand the Business Component tree and then click Field.

                                                                          7. 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

                                                                          8. Extend the integration object to expose the new field:

                                                                            1. In the Object Explorer, click Integration Object.

                                                                            2. In the Integration Objects list, query the name property for CRMDesktopOpportunityIO.

                                                                            3. In the Object Explorer, expand the Integration Object tree and then click Integration Component.

                                                                            4. In the Integration Components list, query the External Name Context property for Opportunity.

                                                                            5. In the Object Explorer, expand the Integration Component tree and then click Integration Component Field.

                                                                            6. 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

                                                                            7. In the Object Explorer, expand the Integration Component Field tree and then click Integration Component Field User Prop.

                                                                            8. 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

                                                                            9. In the Object Explorer, click Integration Component Field. .

                                                                            10. 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

                                                                            11. In the Object Explorer, click Integration Component Field User Prop.

                                                                            12. 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

                                                                          9. 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

                                                                            1. Use an XML editor open the siebel_meta_info.xml file.

                                                                            2. Locate the following object:

                                                                              TypeId="Opportunity"
                                                                              
                                                                            3. 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'/>
                                                                              
                                                                            4. Locate the following object:

                                                                              <picklist TypeId="PickList_Hierarchical" 
                                                                                . . .
                                                                              </picklist>
                                                                              
                                                                            5. 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>
                                                                              
                                                                            6. 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

                                                                              1. 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>
                                                                                
                                                                              2. 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>
                                                                                
                                                                              3. 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.

                                                                              4. 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.

                                                                              5. 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>
                                                                                
                                                                              6. Open IBM Domino Designer, and then open the following form:

                                                                                (SBL)form:opportunity
                                                                                

                                                                                For more information, see Opening IBM Domino Designer.

                                                                              7. Create the JVD Hier Parent combobox.

                                                                              8. 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

                                                                                1. Open the SBL.Forms script library in IBM Domino Designer.

                                                                                2. 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
                                                                                  
                                                                                3. 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)
                                                                                  
                                                                                4. Save and close the SBL.Forms script library.

                                                                                5. Open the (SBL)form:opportunity form in IBM Domino Designer.

                                                                                6. 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
                                                                                  
                                                                                7. 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
                                                                                  
                                                                                8. Save and close the Opportunity form.

                                                                                9. Upload and publish your work. Do Uploading and Testing Your Static Picklist.

                                                                                10. Test your work:

                                                                                  1. Open the client and then navigate to the Opportunity form.

                                                                                  2. Make sure the form displays the following picklists:

                                                                                    • Hier Parent

                                                                                    • Hier Child

                                                                                  3. Choose the Hier Parent picklist and make sure it includes the following values:

                                                                                    • Parent 1

                                                                                    • Parent 2

                                                                                  4. 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.

                                                                                  5. Choose the Hier Child picklist and make sure it includes the following values:

                                                                                    • Child 1 of Parent 1

                                                                                    • Child 2 of Parent 1

                                                                                  6. 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.

                                                                                  7. 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

                                                                                  1. Open Siebel Tools.

                                                                                  2. Create the new business components that will handle the multilingual values:

                                                                                    1. In the Object Explorer, click Business Component.

                                                                                    2. In the Business Components list, locate the List Of Values business component.

                                                                                    3. Click Edit and then click Copy Record.

                                                                                    4. 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.

                                                                                    5. In the Business Components list, locate the PickList Hierarchical business component.

                                                                                    6. Click Edit and then click Copy Record.

                                                                                    7. 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()

                                                                                  3. Create business objects for the business components that you created in Step 2:

                                                                                    1. In the Object Explorer, click Business Object.

                                                                                    2. 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

                                                                                    3. In the Object Explorer, expand the Business Object tree and then click Business Object Component.

                                                                                    4. 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

                                                                                    5. 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

                                                                                    6. 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

                                                                                  4. Update the integration objects:

                                                                                    1. In the Object Explorer, click Integration Object.

                                                                                    2. 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

                                                                                    3. In the Object Explorer, expand the Integration Object tree and then click Integration Component.

                                                                                    4. In the Integration Components list, query the Name property for the following value:

                                                                                      List Of Values
                                                                                      
                                                                                    5. 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

                                                                                    6. 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

                                                                                    7. In the Integration Components list, query the Name property for the following value:

                                                                                      PickList Hierarchical
                                                                                      
                                                                                    8. 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

                                                                                  5. Deploy your changes to the Siebel Runtime Repository.

                                                                                  6. 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:

                                                                                    1. Use an XML editor open the siebel_meta_info.xml file.

                                                                                    2. Remove the LangFldName='Language' attribute from the following PickList objects:

                                                                                      • StatePickList

                                                                                      • PickList_Hierarchical

                                                                                      • List_Of_Values

                                                                                      • AccountNoteType

                                                                                      • RevenueType