Siebel CRM Desktop for Microsoft Outlook Administration Guide > Customizing Multi-Value Groups > Process of Creating MVG Fields >
Example Code You Use to Add an MVG
This topic describes some of the code you use to add an MVG in this example. It includes the following topics:
Code That Adds a Custom Object Type
To add a custom object type, you add the following code anywhere in the siebel_meta_info.xml file assist with debugging, it is recommended that you place this code after the last Type definition: <object TypeId='ChannelPartner' Label='Channel Partner' LabelPlural='Channel Partners' EnableGetIDsBatching='true' ViewMode='Sales Rep' IntObjName='Channel Partner' SiebMsgXmlElemName='ChannelPartner' SiebMsgXmlCollectionElemName='ListOfChannelPartner' >
<field Name='DS Updated' Label='DS Updated' DataType='DTYPE_DATETIME' IsFilterable='no' IsHidden='yes' IOElemName='DSUpdated' />
<field Name='Id' Label='Id' IsPrimaryKey='yes' DataType='DTYPE_ID' IsFilterable='no' IsHidden='yes' IOElemName='Id'/>
<field Name='Name' Label='Name' DataType='DTYPE_TEXT' IsPartOfUserKey='yes' IOElemName='Name' />
<field Name='Location' Label='Location' DataType='DTYPE_TEXT' IsPartOfUserKey='yes' IOElemName='Location'/>
</object>
This code does the following:
- Uses properties of the integration object and integration component as the values for attributes.
- References only a few of the many fields that exist in the Channel Partner object in Siebel CRM.
- Uses the Name and Location fields as parts of the user key. You define the natural key in the connector_configuration.xml file.
Code That Maps a Custom Object
You can map a field of a Siebel CRM object to the Outlook field or to a custom Siebel CRM Desktop field. For example, you can do the following:
- Map the Name field in Siebel CRM to the LastName field in Outlook
- Map the mapLocation field in Outlook to the Location field in Siebel CRM
To map objects, you add the following code to the siebel_basic_mapping.xml file: <type id="ChannelPartner" hidden_folder="true" folder_type="10" display_name="CHPT"> <form message_class="IPM.Contact.SBL.Channel_Partner" display_name="Channel Partner" icon="type_image:User:16"></form> <field id="Name"> <reader> <mapi_std> <mapi_tag id="0x3A110000"></mapi_tag> <convertor><string/></convertor> </mapi_std> </reader> <writer> <Outlook_std> <Outlook_field id="LastName"></Outlook_field> <convertor><string/></convertor> </Outlook_std> </writer> <reader> <mapi_std> <mapi_tag id="0x3A060000"></mapi_tag> <convertor><string/></convertor> </mapi_std> </reader> <writer> <Outlook_std> <Outlook_field id="FirstName"></Outlook_field> <convertor><string/></convertor> </Outlook_std> </writer> </field> <field id="Location"> <reader> <mapi_user> <user_field id="sbl Location" ol_field_type="1"></user_field> <convertor><string/></convertor> </mapi_user> </reader> <writer> <Outlook_user> <user_field id="sbl Location" ol_field_type="1"></user_field> <convertor><string/></convertor> </Outlook_user> </writer> </field> </type>
Note the following requirements:
- The value for the type id tag in the siebel_basic_mapping.xml file must equal the value in the TypeId object in the siebel_meta_info.xml file.
- If you define a new type, then you must include the form tag. The forms_xx.xml file includes the form definition. The value for the form tag must equal the form id attribute in the form definition. This example does not require a form, so the form tag is empty. Even if your example does not require a form, to uniquely identify a type, you must define a value for the mesage_class attribute. This value must start with the following code:
IPM.Contact.SBL
Code That Configures Synchronization for a Custom Object
To configure synchronization for a custom object, you add the following code to the connector_configuration.xml file: <type id="ChannelPartner"> <view label="Channel Partner" label_plural="Channel Partners" small_icon="type_image:Account:16" normal_icon="type_image:Account:24" large_icon="type_image:Account:48"> </view> <synchronizer name_format=":[:(Name):]"> <links> </links> <natural_keys> <natural_key> <field>Name</field> <field>Location</field> </natural_key> </natural_keys> </synchronizer> </type>
Note the following:
- The value in the type id tag must equal the value in the TypeId object in the meta_info.xml file.
- The natural_key tag includes the Name and Location fields as part of the user key.
Code That Adds a Lookup View
To add a lookup view, you add the following code to the lookup_view_defs.xml file. For more information, see Customizing the SalesBook Control: <lookup_view_def key="lookup:channel_partners"> <display name="Channel Partners"></display> <filter dasl="[http://schemas.microsoft.com/mapi/proptag/0x001A001E] >= 'IPM.Contact.SBL.Channel_Partner' AND [http://schemas.microsoft.com/mapi/proptag/0x001A001E] <= 'IPM.Contact.SBL.Channel_Partner'"></filter> <view id="channel_partner:salesbook"></view> <quick_lookup dasl_format="[http://schemas.microsoft.com/mapi/id/{00062004-0000-0000-C000-000000000046}/8005001E] = '%s'"></quick_lookup>
<type id=""></type> </lookup_view_def>
Table 24 describes important attributes you use in this code.
Table 24. Attributes in the Code That Adds a Lookup View
|
|
key |
Id of the lookup control. |
display name |
Caption of the lookup control. |
filter |
Object that Siebel CRM Desktop displays on the lookup control. To specify an object type, you use the message_type attribute in the siebel_basic_mapping.xml file. |
view |
Id of the salesbook control that CRM Desktop uses for this lookup. |
type id |
The type of object that CRM Desktop creates if the user clicks New on the lookup control. If this attribute is empty, then CRM Desktop disables the button. |
Code That Adds a View
To add the definition for a view, you add the following code to the views.xml file: <str key="channel_partner:mvg"> <![CDATA[<?xml version="1.0"?> <view type="table"> <viewname>Phone List</viewname> <viewstyle>table-layout:fixed;width:100%;font-family:Segoe UI;font-style:normal;font-weight:normal;font-size:8pt;color:Black;font-charset:0</viewstyle> <viewtime>0</viewtime> <linecolor>8421504</linecolor> <linestyle>3</linestyle> <gridlines>1</gridlines> <collapsestate/> <rowstyle>background-color:window;color:windowtext</rowstyle> <headerstyle>background-color:#D3D3D3</headerstyle> <previewstyle/> <arrangement> <autogroup>0</autogroup> <collapseclient/> </arrangement> <multiline> <width>0</width> </multiline> <column> <name>HREF</name> <prop>DAV:href</prop> <checkbox>1</checkbox> </column> <column> <type>string</type> <heading>Name</heading> <prop>http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/sbl%20PartnerName</prop> <width>426</width> <style>padding-left:3px;;text-align:left</style> <editable>1</editable> <userheading>Name</userheading> </column> <column> <type>string</type> <heading>Location</heading> <prop>http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/sbl%20PartnerLocation</prop> <width>426</width> <style>padding-left:3px;;text-align:left</style> <editable>1</editable> <userheading>Location</userheading> </column> <orderby> <order> <heading>File As</heading> <prop>urn:schemas:contacts:fileas</prop> <type>string</type> <sort>asc</sort> </order> </orderby> <groupbydefault>0</groupbydefault> <previewpane> <markasread>0</markasread> </previewpane> </view>]]> </str>
Code That Adds a New Association
To add a new association, you add the following code to the business_logic.js file: var opportunity_channel_partner = add_mvg_link("Opportunity", "ChannelPartner", "Primary Partner Id", null,"Opportunity.Channel_Partner.Association", "OpportunityId", "ChannelPartnerId",null, "ChannelPartnerStatus",null, ["lookup:channel_partners"],false, false, false, true); deny_primary_delete(opportunity_channel_partner.mvg1);//optional opportunity_channel_partner.mvg1.dialog_template_params = { "dialog_caption": "#obj_activity_employee_plural","autocomplete_display_format": ":[:(Name):]", "associations_view_caption": "#head_associated_channel", "associations_view_id": "channel_partner:mvg", "primary_selector_display_format": ":[:(PartnerName):]" }
The ChannelPartnerStatus field contains the status of the Channel Partner object, such as unsaved, deleted, and so on. Table 25 describes the important attributes you can use with the add_mvg_link function.
Table 25. Attributes in the Code That Add a New Association
|
|
left_type |
The type of the first linked object. For example, Opportunity. |
right_type |
The type of the second linked object. For example, Channel Partner. |
left_obj_primary |
The field of the Opportunity object. This field contains the primary Id for the Channel Partner object. |
right_obj_primary |
The field of the Channel Partner object. This field contains the primary Id for the Opportunity object. |
assoc_type |
The Id of the association type described in the siebel_meta_info.xml file and the siebel_basic_mapping.xml file. |
left_link |
The field of the association object that contains the Id of the opportunity. |
right_link |
The field of the association object that contains the Id of the channel partner. |
left_assoc_status |
The field of the association that contains the status of the opportunity. |
right_assoc_status |
The field of the association that contains the status of the channel partner. |
left_objs_view_ids |
The list of lookup view definitions you must use to display opportunity objects. |
right_objs_view_ids |
The list of lookup view definitions you must use to display channel partner objects. |
left_primary_refresh_required |
If the primary object is changed, and if the left_primary_refresh_required attribute is true, then Siebel CRM Desktop updates the object Id for the primary field of the opportunity that you specify in the left_obj_primary attribute. If you use the following tag in the siebel_basic_mapping.xml file for this field, then set the left_primary_refresh_required attribute to true: writer class="link_fields"
|
right_primary_refresh_required |
If the primary object is changed, and if the right_primary_refresh_required attribute is true, then CRM Desktop updates the object Id for the primary field of the channel partner that you specify in the right_obj_primary attribute. If you use the following tag in the siebel_basic_mapping.xml file for this field, then set the right_primary_refresh_required attribute to true: writer class="link_fields"
|
assoc_left_link_refresh_required |
If the opportunity object is changed, then CRM Desktop updates the OpportunityId field of the association that you specify in the left_link attribute. If you use the following tag in the siebel_basic_mapping.xml file for this field, then set the assoc_left_link_refresh_required attribute to true: writer class="link_fields"
|
assoc_right_link_refresh_required |
If the channel partner object is changed, then CRM Desktop updates the ChannelPartnerId field of the association that you specify in the right_link attribute. If you use the following tag in the siebel_basic_mapping.xml file for this field, then set the assoc_right_link_refresh_required attribute to true: writer class="link_fields"
|
Code That Creates a SalesBook Control
To create a salesbook control, you add the following code to the views.xml file: <str key="channel_partner:salesbook"> <![CDATA[<?xml version="1.0"?> <view type="table"> <viewname>Phone List</viewname> <viewstyle>table-layout:fixed;width:100%;font-family:Segoe UI;font-style:normal;font-weight:normal;font-size:8pt;color:Black;font-charset:0</viewstyle> <viewtime>0</viewtime> <linecolor>8421504</linecolor> <linestyle>3</linestyle> <gridlines>1</gridlines> <newitemrow>1</newitemrow> <collapsestate/> <rowstyle>background-color:window;color:windowtext</rowstyle> <headerstyle>background-color:#D3D3D3</headerstyle> <previewstyle/> <arrangement> <autogroup>0</autogroup> <collapseclient/> </arrangement> <multiline> <width>0</width> </multiline> <column> <name>HREF</name> <prop>DAV:href</prop> <checkbox>1</checkbox> </column> <column> <heading>Last Name</heading> <prop>urn:schemas:contacts:sn</prop> <type>string</type> <width>322</width> <style>padding-left:3px;;text-align:left</style> <editable>1</editable> </column> <column> <type>string</type> <heading>Location</heading> <prop>http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/sbl%20Location</prop> <width>322</width> <style>padding-left:3px;;text-align:left</style> <editable>1</editable> <userheading>Location</userheading> </column> <orderby> <order> <heading>File As</heading> <prop>urn:schemas:contacts:fileas</prop> <type>string</type> <sort>asc</sort> </order> </orderby> <groupbydefault>0</groupbydefault> <previewpane> <markasread>0</markasread> </previewpane> </view>]]> </str>
|