8Controlling Synchronization
Controlling Synchronization
This chapter describes how to control synchronization. It includes the following topics:
For other ways to administer options that affect synchronization, see Using the Windows Registry to Control Siebel CRM Desktop.
Controlling Synchronization Filters
This topic describes how to control synchronization filters. It includes the following topic:
Controlling the Object Types That Siebel CRM Desktop Displays in the Filter Records Tab
You can specify the filter settings for every user and deploy them when you install the Siebel CRM Desktop add-in. This option allows you to customize the filters and other settings that Siebel CRM Desktop displays. It displays the following objects in the Filter Records tab of the Synchronization Control Panel dialog box, by default:
Contacts
Accounts
Opportunities
Activities
You can customize the Synchronization Control Panel dialog box to display or not display these object types.
To control the object types that Siebel CRM Desktop displays in the Filter Records tab
Use an XML editor to open the Ln_connector_configuration.xml file.
For more information, see Files in the Customization Package.
Locate the type tag for the object you must display or hide.
For example:
type id="Opportunity"
Locate the view tag of the type you located in Step 2.
Set the suppress_sync_ui attribute to one of the following values:
True. Hides the object.
False. Displays the object.
For more information, see View Tag of the Connector Configuration File.
Save your changes and then republish the customization package.
For more information, see Republishing Customization Packages.
(Optional) Add a new object to the list of objects that Siebel CRM Desktop displays on the Filter Records tab. You do the following:
In the XML code, add a new type and view tag for the new object.
Service Requests is an example of a new object.
Set the suppress_sync_ui attribute for this new object to false.
Controlling the Synchronization Exceptions Button In the Filter Records Tab
The Exclusions List allows the user to exclude an individual record from synchronization even if this record matches a defined filtering criteria. Siebel CRM Desktop does the following work:
It uses the following filters to identify the records that it must synchronize from the Siebel Server:
User filters. Filters that the user creates.
Master filters. A master filter is a type of predefined filter that the user cannot change. For example, a master filter can cause Siebel CRM Desktop to not synchronize a contact that includes an inactive status from Siebel CRM to IBM Notes.
Excludes the records that are in the Exclusions List. It excludes each record in the list only if some other record does not reference this record.
If the Exclusions List includes a record, and if no other record references this record, then Siebel CRM Desktop removes it from IBM Notes.
To control the Synchronization Exceptions button in the Filter Records tab
Use an XML editor to open the Ln_connector_configuration.xml file.
Locate the following features tag:
</features>
Make sure the following attribute that resides in the features tag that you located in Step 2 is set to true:
enable_sync_exclusions
This configuration displays the Synchronization Exceptions button on the Filter Records screen of the Synchronization Control Panel.
Examples of How Siebel CRM Desktop Uses the Exclusions List
Assume the following:
Contact 1 references account 1.
Contact 1 matches a filter but account 1 does not match a filter.
In this example, Siebel CRM Desktop synchronizes account 1 because contact 1 references it.
For another example, assume the following:
Contact 1 references account 1.
Contact 1 matches a filter and account 1 matches a filter.
IBM Notes displays contact 1 in the Contacts folder of the CRM and Personal Contacts view and account 1 in the Accounts folder of the Siebel Accounts view. It does this after the first synchronization finishes.
The user deletes account 1 and then Siebel CRM Desktop automatically moves account 1 to the Exclusions List.
Controlling the Date Range in the Filter Records Tab
The user can choose a predefined value from the Value drop-down list in the CRM Desktop Filter - Edit Criterion dialog box to modify the date range that Siebel CRM Desktop uses in a synchronization filter. If the user changes the date range, then the number of records that match the filter also change. For example, the user can set the filter to synchronize activities that start a month ago. If the user changes this date, then Siebel CRM Desktop adjusts the number of activities it synchronizes. You can customize these predefined date ranges. For more information, see Filters in the CRM Desktop Filter - Edit Criterion Dialog Box.
Customizing the Predefined Date Ranges
You can customize the Predefined Date Ranges that Siebel CRM Desktop uses for the filters that it displays in the Value drop-down list in the CRM Desktop Filter - Edit Criterion dialog box.
To customize the predefined date ranges
Use an XML editor to open the Ln_connector_configuration.xml file.
Locate the sliding_dates_presets tag.
Change the value for a preset name.
The following code comes predefined with Siebel CRM Desktop. To change a predefined date range, you change the number that the value attribute contains:
<sliding_dates_presets exact_date="#sliding_dates_exact" relative="#sliding_dates_from_today"> <preset name="#sliding_dates_yesterday"> <value>-1</value> </preset> <preset name="#sliding_dates_tomorrow"> <value>1</value> </preset> <preset name="#sliding_dates_month_ago"> <value>-30</value> </preset> <preset name="#sliding_dates_month_ahead"> <value>30</value> </preset> <preset name="#sliding_dates_today"> <value>0</value> </preset> </sliding_dates_presets>
Change the corresponding resources in the Ln_package_res.xml file.
For more information, see Controlling the Synchronization Intervals That Display in the Synchronization Tab.
Controlling the Fields That Display in a Filter
You can use the IsHidden property of the field in the siebel_meta_info.xml file to control the fields that are available in a filter. For more information, see Customizing How Siebel CRM Desktop Shares Native IBM Notes Items.
To control the fields that display in a filter
Use an XML editor to open the siebel_meta_info.xml file.
For more information, see Files in the Customization Package.
Locate the first instance of the tag that defines the field you must modify.
For example the following tag in the Contact.Account object defines the Account Status field:
<field Name='Account Status' Label='Account Status' DataType='DTYPE_TEXT' HasPicklist='yes' PicklistIsStatic='yes' PicklistCollectionType='ACCOUNT_STATUS' PicklistTypeId='PickList_Generic' IOElemName='AccountStatus' />
Do one of the following:
Make the field not available in filter criteria. You add the following property to this tag:
IsHidden='yes'
Make the field available in filter criteria. You add the following property to this tag:
IsHidden='no'
Note that the DataType property must not be DTYPE_ID.
Repeat Step 2 through Step 3 for each of the other objects you must modify.
For example, the Contact.Account object also includes the account status.
Controlling Synchronization Time, Day, and Size
This topic describes how to control synchronization time, day, and size. It includes the following topics:
Overview of Controlling Synchronization Frequency
Application settings that are related to synchronization frequency determine how often and the kind of data Siebel CRM Desktop synchronizes. The user can specify frequency or you can configure it:
The user can use the Synchronization tab of the Options dialog box to specify the interval that Siebel CRM Desktop uses to automatically start a synchronization. The user can double-click the CRM Desktop icon in the system tray or choose the Synchronize Now option from the options menu. The user can choose to synchronize all changes or only local changes. For more information, see Synchronizing All Changes or Only Local Changes.
You can configure the application metadata to determine how often Siebel CRM Desktop synchronizes each object. You can configure data that changes less often on the Siebel Server to synchronize less frequently. Example data includes list of value and other reference data, such as employees or positions. For more information, see the description about the frequency tag in Files in the Customization Package.
For more information about controlling synchronization frequency, see Controlling Synchronization Time, Day, and Size.
Controlling the Synchronization Intervals That Display in the Synchronization Tab
This topic describes how to control the synchronization intervals that Siebel CRM Desktop displays in the Synchronization tab of the CRM Desktop - Options dialog box.
To control the synchronization intervals that display in the Synchronization tab
Use an XML editor to open the platform_configuration.xml file.
For more information, see Files in the Customization Package.
In the initialization_script-CDATA section, add the following code:
<initialization_script> <![CDATA[ application.settings.set("CustomSyncPeriods", "10 = page-sync-periods-10- minutes; 20 = page-sync-periods-20-minutes; 30 = page-sync-periods-30-minutes; 60 = page-sync-periods-1-hour; 1440 = page-sync-periods-1-day"); ]]> </initialization_script>
where:
The following code describes an interval in minutes and a resource string that you add in Step 4:
10 = page-sync-periods-10-minutes
Save and then close the platform_configuration.xml file.
Use an XML editor to open the Ln_package_res.xml file and then add the following code:
<str key="page-sync-periods-10-minutes">Every 10 minutes</str> <str key="page-sync-periods-20-minutes">Every 20 minutes</str> <str key="page-sync-periods-30-minutes">Every 30 minutes</str> <str key="page-sync-periods-1-hour">Once an Hour</str> <str key="page-sync-periods-1-day">Once a Day</str>
For more information, see Controlling the Predefined Synchronization Intervals.
(Optional) Set the default synchronization mode.
For more information, see Synchronizing All Changes or Only Local Changes.
Republish the customization package on the Siebel Server.
For more information, see Republishing Customization Packages.
Controlling the Predefined Synchronization Intervals
The following values come predefined for a Synchronize All Changes session:
60 minutes (One time for each hour)
720 minutes (Two times for each day)
1440 minutes (One time for each)
10080 minutes (One time for week)
The following values come predefined for a Synchronize Local Changes session:
10 minutes (Every ten minutes)
20 minutes (Every twenty minutes)
30 minutes (Every thirty minutes)
60 minutes (Every sixty minutes)
Resource strings in the Ln_package_res.xml file determine the predefined synchronization intervals. You can customize these intervals. For example, the following resource string controls synchronization to occur every 10 minutes:
<str key="page-sync-periods-10-minutes">Every 10 minutes</str>
How Siebel CRM Desktop Automatically Synchronizes If it Is Offline
If Siebel CRM Desktop is offline during a scheduled synchronization, then it does not run synchronization automatically. It runs the next synchronization according to the predefined schedule. For example, assume the automatic full synchronization is scheduled to run one time for each day. If the next synchronization occurs at 8:00 P.M., and if Siebel CRM Desktop is offline at 8:00 P.M., then it does not run the synchronization. The next automatic full synchronization occurs at 8:00 P.M. on the next day.
Controlling the Time and Day When Synchronizations Occur
You can control the time of day and the day when Siebel CRM Desktop synchronizes to manage the load that synchronization puts on the Siebel Server. For example, to avoid an overloaded server, you can delay synchronizations that might normally occur at 9:00 A.M. on a Monday morning after a weekend sales conference to a later time.
Siebel CRM Desktop delays synchronization for the number of milliseconds that you specify. It adds this delay before it sends each server request to the Siebel Server. The delays are summative. For example, if 500 requests exist, and if the delay is 1200 milliseconds, then it delays the synchronization for 10 minutes.
To control the time and day when synchronizations occur
Use an XML editor to open the siebel_meta_info.xml file.
For more information, see Files in the Customization Package and Customizing Meta Information.
Add a tag named delays_schedule.
In the delays_schedule tag, set the following attribute to meet your scheduling requirements:
request_delay DaySpec
For more information, see Coding the Delays Schedule Tag.
Repeat Step 3, as necessary.
Coding the Delays Schedule Tag
You must use the following format if you code the delays_schedule tag:
To specify a day of the week, use MON, TUE, WED, THU, FRI, SAT, or SUN.
To specify a day, use one of the following formats:
yyyy/mm/dd
mm/dd
dd
where:
yyyy/mm/dd is the year, month, and day.
You can use the DaySpec attribute to specify a delay in milliseconds.
If you include the day and date, then the date takes precedence. In the following example, Siebel CRM Desktop uses 2011/12/16. It does not use MON:
<request_delay DaySpec="MON" "2011/12/16" StartTime="12:00:00" EndTime="13:00:00" DelayMsecs="6000" />
Example Code That Controls the Time and Day When Siebel CRM Desktop Synchronizes
The following code controls the time and day when Siebel CRM Desktop synchronizes:
<delays_schedule> <request_delay DaySpec="SUN" StartTime="10:22:17" EndTime="16:34:07" DelayMsecs="6000" /> <request_delay DaySpec="MON" StartTime="12:00:00" EndTime="13:00:00" DelayMsecs="6000" /> <request_delay DaySpec="TUE" StartTime="12:00:00" EndTime="13:00:00" DelayMsecs="6000" /> <request_delay DaySpec="WED" StartTime="12:00:00" EndTime="13:00:00" DelayMsecs="6000" /> <request_delay DaySpec="THU" StartTime="12:00:00" EndTime="17:00:00" DelayMsecs="6000" /> <request_delay DaySpec="FRI" StartTime="12:00:00" EndTime="13:00:00" DelayMsecs="6000" /> <request_delay DaySpec="SAT" StartTime="12:00:00" EndTime="13:00:00" DelayMsecs="6000" /> <request_delay DaySpec="2009/09/01" StartTime="12:00:00" EndTime="13:00:00" DelayMsecs="6000" /> <request_delay DaySpec="2009/12/31" StartTime="12:00:00" EndTime="13:00:00" DelayMsecs="6000" /> <request_delay DaySpec="05/07" StartTime="12:00:00" EndTime="13:00:00" DelayMsecs="6000" /> </delays_schedule>
Controlling the Size and Type of Synchronized Records
You can control the size and type of records that Siebel CRM Desktop synchronizes. Siebel CRM Desktop comes with one predefined filter named Default filter. If you use this filter, then Siebel CRM Desktop downloads the following records from the Siebel Server to IBM Notes:
All accounts, contacts, and opportunities that the user can view
All activities that the user owns
All notes that are related to the downloaded records
All attachments that are related to the downloaded records that are no larger than 5 MB in size and that include one of the following file extensions:
doc
docx
xsl
xslx
msg
txt
rtf
html
ppt
pptx
pdf
mht
mpp
vsd
Siebel CRM Desktop downloads any child record that is related to a parent record that the user can view. This configuration allows the user to view the child in the appropriate window of the parent record. For example, the Contacts list displays the following information:
All unshared contacts
All shared contacts that the user can view
If the user attempts to open the detail form for a record that Siebel CRM Desktop does not allow the user to view, then it displays a read-only version of the detail form. This read-only form includes only some of the details.
To control the size and type of synchronized files
Configure the Filter Presets tag of the Ln_connector_configuration.xml file.
For more information, see Filter Presets Tag of the Connector Configuration File, and Example Code That Sets the Size and Type of Field.
Notify the user to use the Filter Records tab of the Synchronization Control Panel.
The Filter Records Tab allows the user to restrict the file type and maximum file size. The settings you configure in the Filter Presets tag of the Ln_connector_configuration.xml file override settings the user makes in the Filter Records tab. For example, assume you set a maximum file size of 5 MB, and the user sets this limit to 9 MB. In this situation, Siebel CRM Desktop restricts the file size to 5 MB.
Synchronizing All Changes or Only Local Changes
A user can right-click the CRM Desktop icon in the system tray and then choose one of the following menu items to manually start a synchronization:
Synchronize All Changes
Synchronize Local Changes
You can enable or disable Synchronize Local Changes. This menu item allows the user to synchronize only local changes to the Siebel Server. It does not synchronize all changes. The installer enables it, by default. Siebel CRM Desktop synchronizes only new and modified records from IBM Notes to the Siebel Server during a Synchronize Local Changes session. It compares each modified record to the corresponding record that resides on the Siebel Server. Collisions might occur during this synchronization. For more information, see Resolving Synchronization Conflicts.
To synchronize all changes or only local changes
Open the Windows Registry and then locate the following key:
HKEY_CURRENT_USER\Software\Oracle\CRM Desktopfor IBM Notes
For more information, see Using the Windows Registry to Control Siebel CRM Desktop.
Right-click the EnablePeriodicSyncUpstream entry and then click Modify.
Enter one of the following values in the Value Data window of the Edit DWORD dialog box:
1. Enables Synchronize Local Changes. The default value is 1.
0. Disables Synchronize Local Changes.
Restart IBM Notes.
If you disable Synchronize Local Changes in Step 3, then Siebel CRM Desktop removes the Synchronize Local Changes menu item from the menu that it displays if the user right-clicks the CRM Desktop icon in the system tray. It also removes the Synchronize Recent Changes to Server Automatically check box and slider from the Synchronization tab on the CRM Desktop - Options dialog box.
Note the following:
If a full synchronization and a local synchronization are scheduled to automatically run at the same time, then Siebel CRM Desktop runs the full synchronization and skips the local changes synchronization until the next time the local synchronization is scheduled to run. Local synchronization is a type of synchronization that synchronizes only local changes.
If the full synchronization is scheduled to occur more frequently than the value that the UpstreamSyncMinThreshold parameter contains, then Siebel CRM Desktop disables local synchronization. The default value for the UpstreamSyncMinThreshold parameter is 600000 milliseconds, which is 10 minutes.
For more information, see Controlling the Predefined Synchronization Intervals.
Controlling the Number of Records That Synchronize
To produce the most desirable synchronization performance and scalability, and to maintain acceptable IBM Notes performance when the user works with Siebel CRM data, it is recommended that Siebel CRM Desktop synchronize no more than 10,000 records for a single user. If it synchronizes more than 10,000 records, then the following undesirable results might occur:
Longer synchronization times
More server resources required to support user synchronization sessions
Slower IBM Notes performance when working with Siebel CRM data
To control the number of records that synchronize
With administrator privileges, log in to a Siebel CRM client that is connected to the Siebel Server.
Navigate to the Administration - Server Configuration screen, and then the Servers view.
In the components tab, choose EAI Object Manager.
Set the value for the Maximum Page Size parameter to the maximum number of records that Siebel CRM Desktop can synchronize for a single user.
If Siebel CRM Desktop attempts to synchronize more records at run-time than the value you set, then it returns an error message to IBM Notes that indicates that the number of records requested is too large. For more information, see Resolving Exceeded Row Size Problems.
Configuring Siebel CRM Desktop to Disregard Erroneous Data That Users Modify
You can configure Siebel CRM Desktop to synchronize an object in only one direction. Using one-way synchronization can be useful to restore object types that the user modifies or removes in IBM Notes or to not allow the user to modify an object type. For example, employees or positions. One-way synchronization can also reduce the time required to synchronize. The synchronization engine can detect these modifications and refresh the object in IBM Notes without causing a collision. Siebel CRM Desktop does the following work for each object that it synchronizes in only one direction:
Does not create a collision
Does not display a delete confirmation
Does not start a job on the Siebel Server
This configuration allows Siebel CRM Desktop to disregard erroneous data that the user enters or erroneous modifications that users make to data so that it does not synchronize these modifications to the Siebel Server. To do this, you configure an object to synchronize in only one direction. The example in this topic configures the Employee object to synchronize in only one direction.
A user might use some IBM Notes features that compromise the validation rules that Siebel CRM Desktop uses. For example, Siebel CRM Desktop cannot control how the user uses the native All Fields tab that IBM Notes displays on IBM Notes objects. This tab is a predefined IBM Notes feature that Siebel CRM Desktop cannot disable or intercept. A user might open a Contact record, click the All Fields tab, remove the values from the First Name and Last Name fields, and then save this record even though Siebel CRM Desktop requires these names.
For more information, see Resolving Synchronization Conflicts.
To configure Siebel CRM Desktop to disregard erroneous data that users modify
Use an XML editor to open the Ln_connector_configuration.xml file.
For more information, see Files in the Customization Package.
Locate the
type
tag of the object that you must configure for one-way synchronization.For example:
type id="Employee"
Locate the
synchronizer
tag of thetype
tag you located in Step 2.Set the
read_only
attribute of the type tag you located in Step 3 totrue
.For example:
<type id="Employee"> <view label="#obj_employee" label_plural="#obj_employee_plural" small_icon="type_image:User:16" normal_icon="type_image:User:24" large_icon="type_image:User:48" suppress_sync_ui="true"> </view> <synchronizer name_format=":[:(First Name):] :[:(Last Name):]" frequency="604800" threshold="0" read_only="true"> <links> <link>Primary Organization Id</link> <link>Primary Position Id</link> </links> </synchronizer> </type>
To configure an object type to synchronize in only one direction, you set it to read only in IBM Notes. Siebel CRM Desktop synchronizes a read-only object in only one direction from the Siebel Server to the client.
Save your changes and then republish the customization package.
For more information, see Republishing Customization Packages.
Controlling the Number and Size of Batch Requests
Siebel CRM Desktop sends requests to the Siebel Server in batches. One Web Service call is one batch. Each batch includes multiple commands. Each command can request multiple IDs. To avoid overloading the server, you can specify the number of IDs that Siebel CRM Desktop requests for each command and the number commands that each batch contains.
For example, assume the following occurs:
Siebel CRM Desktop must get 300 accounts
A batch contains only one command
One command requests the IDs for all 300 accounts
The server fails in this situation. To avoid this problem, you can reduce the number of commands that each batch contains and the number of IDs that each command requests. Siebel CRM Desktop sets these values to 50, by default. If Siebel CRM Desktop uses this default value to process the 300 accounts, then it creates six separate commands where each command requests 50 account IDs. It creates one batch that includes these six commands.
To control the number and size of batch requests
Use an XML editor to open the siebel_meta_info.xml file.
For more information, see Files in the Customization Package and Customizing Meta Information.
Create or find the existing section under the root tag that contains the following name:
common_settings
For more information, see the documentation in the siebel_meta_info.xsd file available in Article ID 1502099.1 on My Oracle Support.
Set the following subtags:
max_commands_per_batch. Defines the maximum number of commands that each batch contains. The default value is 50.
max_ids_per_command. Defines the maximum number of IDs that the command requests. The default value is 50.
Controlling Other Configurations That Affect Synchronization
This topic describes how to control other configurations that affect synchronization. It includes the following topic:
Configuring How Siebel CRM Desktop Gets Updates That Occur During Synchronization
You can configure how Siebel CRM Desktop gets object updates from the Siebel Server that occur during a synchronization session. You can use this configuration to update a field that originates on the Siebel Server, such as an object Id or an automatically generated number. You can also use it to update a field Id that is involved with a calculated value that EAI (Enterprise Application Integration) inserts or updates in the Siebel database during synchronization.
The example in this topic adds a new Siebel ID field to the account object in the mapping schema. Siebel CRM Desktop uses this field internally to store the Siebel object Id in a text format. It updates this field during synchronization.
To configure how Siebel CRM Desktop gets updates that occur during synchronization
Use an XML editor open the siebel_meta_info.xml file.
Locate the tag of the object that represents the field that Siebel CRM Desktop must update during synchronization.
For example, locate the following object tag:
TypeId="Account"
Add the following tag to the tag that you located in Step 2:
<field Name='Siebel ID' Label='Siebel ID' DataType='DTYPE_TEXT' BackUpd='any' IsFilterable='no' IsCalculated='yes' Formula=':[:(Id):]' />
where:
BackUpd is the attribute that allows Siebel CRM Desktop to get updates that occur during synchronization. You can set it to one of the following values:
insert. Updates values that occur during an insert.
update. Updates values that occur during an update.
any. Updates values that occur during an insert or an update.
During synchronization, Siebel CRM Desktop inserts the value that the Id field contains into the Siebel ID field.
Save and then close the siebel_meta_info.xml file.
Open the Ln_siebel_basic_mapping.xml file.
Add the following code anywhere in the file:
<field id="Siebel ID"> <reader> <lotus_std> <lotus_field id="sbl Siebel ID"></lotus_field> <convertor> <string/> </convertor> </lotus_std> </reader> <writer> <lotus_std> <lotus_field id="sbl Siebel ID"></lotus_field> <convertor> <string/> </convertor> </lotus_std> </writer> </field>
Make sure that the value you use for the
lotus_field id
attribute is identical to the value that you use for thefield Name
attribute in Step 3 except that theuser_field id
attribute includes thesbl
prefix.Save your changes and then republish the customization package.
For more information, see Republishing Customization Packages.
Configuring Siebel CRM Desktop to Synchronize Private Activities
This topic describes how to configure Siebel CRM Desktop to synchronize private activities that the user creates in IBM Notes.
To configure Siebel CRM Desktop to synchronize private activities
Use an XML editor open the siebel_meta_info.xml file and then locate the following object:
<object TypeId="Action"
Remove the following code from the object you located in Step 1:
<master_filter_expr> <![CDATA[ [Private] IS NULL OR [Private] = 'N' ]]> </master_filter_expr>
This filter prevents Siebel CRM Desktop from synchronizing private activities.
Save your changes and then close the siebel_meta_info.xml file.
Open IBM Domino Designer, and then open the SBL.Forms script library.
For more information, see Opening IBM Domino Designer.
Locate the FormPIMEx class and then open the InitValidators procedure that resides in this class.
Remove the following code:
Set ValidationCallBack = New ValidationPimIsPrivate(m_ActivityProcessor) vld.ValidateCustom Fields, MSG_CANT_SYNC_PRIVATE, ValidationCallBack, ""
Save the changes you made in the SBL.Forms script library.
Open the SBL.ActivityHandlers script library.
Locate the ActivityProcessor class, and then open the SkipApptDocument procedure that resides in this class.
Locate the following code:
If Not doc Is Nothing Then SkipApptDocument = doc.IsPrivate Or _ doc.TypeID = AP_EVENT_TYPEID And _ doc.Property(AP_APPOINTMENT_TYPE_FIELD) <> AP_APPOINTMENT_TYPE_APPT And _ doc.Property(AP_APPOINTMENT_TYPE_FIELD) <> AP_APPOINTMENT_TYPE_MEETING End If
Modify the SkipApptDocument line that resides in the code you located in Step 10. You replace
IsPrivate Or
with the following bolded code:If Not doc Is Nothing Then SkipApptDocument = doc.TypeID = AP_EVENT_TYPEID And _ doc.Property(AP_APPOINTMENT_TYPE_FIELD) <> AP_APPOINTMENT_TYPE_APPT And _ doc.Property(AP_APPOINTMENT_TYPE_FIELD) <> AP_APPOINTMENT_TYPE_MEETING End If
Save the changes you made in the SBL.ActivityHandlers script library.
Save and test your changes, and then republish the customization package.
Controlling the View Mode During Synchronization According to Object Type
This topic describes how to control the view mode that Siebel CRM Desktop uses during synchronization for an object type. The view modes that are configured in the client application metadata affect data access. You can configure each synchronization object with a different level of data access. This configuration is implemented as a view mode argument that Siebel CRM Desktop passes to the EAI Siebel Adapter business service during synchronization. It establishes basic access control in the client.
For example, data about opportunities is available to the sales representatives who are on the team for the opportunity. The default configuration for Siebel CRM Desktop specifies that the opportunity synchronization object must use the sales representative view mode. Several view mode arguments are available. For example, All, Organization, Sales Rep, or Personal. For more information, see About the EAI Siebel Adapter Business Service.
To control the view mode during synchronization according to object type
Use an XML editor open the siebel_meta_info.xml file.
Locate the
type
tag of the object that must use a view mode during synchronization.For example, locate the following tag:
object TypeId='Account.Account_Note'
Locate the
viewmodes
subelement of the type tag you located in Step 2.Set the
viewmodes
subelement using the following format:viewmodes view_mode_context1="view_mode_value" view_mode_context2="view_mode_value" view_mode_context3="view_mode_value"
where:
view_mode_context is set to one of the following values:
General. Requests server records of synchronized object types that match the user synchronization filters with master filter restrictions applied. If you specify this value, then it overrides the value in the viewmode attribute. For more information, see Step 2 in the topic Using the Metadata to Control Siebel CRM Desktop.
Dedup. Detects duplicate records when Siebel CRM Desktop must add records to IBM Notes or to the server database. If you do not specify this value, then it sets the value for the Deduplication view mode to the value that you set for the General view mode. For more information, see Resolving Synchronization Conflicts.
QBID. (Query By Id) Requests objects that Siebel CRM Desktop must synchronize to IBM Notes to maintain referential integrity because this object is related to a synchronized record. It requests this object even if the object does not match a user synchronization filter. You must specify a Query by Id for each object type that Siebel CRM Desktop queries by Id. The default value is All.
view_mode_value is set to one of the following values:
All
Sales Rep
Personal
Organization
For example:
viewmodes General="Organization" Dedup="All"
Example That Controls the View Mode During Synchronization According to Object Type
The following code controls the view mode that Siebel CRM Desktop uses during synchronization for the Account.Account_Note object type:
<object TypeId='Account.Account_Note' Label='#obj_account_note' LabelPlural='#obj_account_note_plural' EnableGetIDsBatching='true' IntObjName='CRMDesktopAccountIO' SiebMsgXmlElemName='AccountNote' SiebMsgXmlCollectionElemName='ListOfAccountNote' > <viewmodes General="Organization" Dedup="All" /> <open_with_url_tmpl> <![CDATA[ :[:(protocol):]://:[:(hostname):]::[:(port):]/sales/:[:(lang):]/ ?SWECmd=GotoView&SWEView=Account+Note+View&SWERF=1&SWEHo=:[:(hostname):]&SWEBU=1&SWEAp plet0=Account+Entry+Applet&SWERowId0=:[:(parent_id):]&SWEApplet1=Account+Note+Applet&S WERowId1=:[:(own_id):] ]]> </open_with_url_tmpl> <extra_command_options> <option Name='PrimaryKey1M' Value='Id' /> <option Name='ForeignKey1M' Value='Account Id' /> <option Name='Cardinality' Value='1M' /> <option Name='ServerServiceVersion' Value='2' /> </extra_command_options> <field Name='Account Id' Label='Account Id' DataType='DTYPE_ID' IsNullable='no' IsFilterable='no' IsRefObjId='yes' RefObjTypeId='Account' RefObjIsParent='yes' IsPartOfUserKey='yes' IOElemName='AccountId' /> <field Name='Conflict Id' Label='Conflict Id' DataType='DTYPE_ID' IsFilterable='no' IsHidden='yes' IOElemName='ConflictId' /> <field Name='Created' Label='#fld_account_account_note@created' DataType='DTYPE_DATETIME' IsPartOfUserKey='yes' IOElemName='Created' /> <field Name='Created By' Label='Created By' DataType='DTYPE_ID' IsFilterable='no' IsRefObjId='yes' RefObjTypeId='Employee' IOElemName='CreatedBy' /> <field Name='Created By Name' Label='#fld_account_account_note@created_by_name' DataType='DTYPE_TEXT' IOElemName='CreatedByName' /> <field Name='Created Date' Label='Created Date' DataType='DTYPE_UTCDATETIME' IsHidden='yes' IOElemName='CreatedDate' /> <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='Note' Label='#fld_account_account_note@note' DataType='DTYPE_NOTE' IOElemName='Note' /> <field Name='Note Type' Label='#fld_account_account_note@note_type' DataType='DTYPE_TEXT' HasPicklist='yes' PicklistIsStatic='yes' PicklistCollectionType='FS_NOTE_TYPE' PicklistTypeId='List_Of_Values' IOElemName='NoteType' /> <field Name='Private' Label='Private' DataType='DTYPE_BOOL' IsHidden='yes' IOElemName='Private' /> <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>
Controlling How Siebel CRM Desktop Deletes Records During Synchronization
You can control how Siebel CRM Desktop deletes records during a synchronization. The delete confirmation feature allows the user to cancel, during synchronization, a deletion that the user made in IBM Notes. If you enable this feature, then Siebel CRM Desktop does the following work:
Displays the Confirm Synchronization tab on the Synchronization Control Panel dialog box.
Uses the Confirm Synchronization tab to allow the user to confirm the delete operation. If the user deletes records in IBM Notes, then Siebel CRM Desktop displays the Confirm Synchronization tab during synchronization. If the user confirms, then it removes the deleted records from the Siebel database on the Siebel Server. For more information, see How the Number of Deleted Records Determines Delete Confirmation.
To control how Siebel CRM Desktop deletes records during synchronization
Use an XML editor open the Ln_connector_configuration.xml file.
Configure Siebel CRM Desktop to display the Confirm Synchronization tab on the Synchronization Control Panel dialog box:
Add the following code to the root tag of the Ln_connector_configuration.xml file:
<features deletion_confirmation_mode="enable"/>
For more information, see Setting the Delete Confirmation Mode Attribute.
Specify the objects that Siebel CRM Desktop displays in the Delete on Siebel list in the Confirm Synchronization tab.
For more information, see Specifying the Type of Object the User Can Confirm for Deletion.
Configure Siebel CRM Desktop to suppress display of the Confirm Synchronization tab in the Synchronization Control Panel dialog box. You add the following code to the root tag of the Ln_connector_configuration.xml file:
<features deletion_confirmation_mode="suppress"/>
How the Number of Deleted Records Determines Delete Confirmation
The number of records that the user deleted determines if Siebel CRM Desktop displays the Confirm Synchronization tab. For example:
If the user deletes three or more accounts, ten or more contacts, or five or more opportunities, then Siebel CRM Desktop displays the Confirm Synchronization tab.
If the user deletes only one or two accounts, then Siebel CRM Desktop does not display the Confirm Synchronization tab.
For more information, see Threshold That Siebel CRM Desktop Uses to Display the Confirm Synchronization Tab.
Setting the Delete Confirmation Mode Attribute
You use the deletion_confirmation_mode attribute of the Ln_connector_configuration.xml file to control the Confirm Synchronization tab on the Synchronization Control Panel dialog box.
The following table describes the values you can use for the deletion_confirmation_mode attribute.
Value | Description |
---|---|
suppress |
Disables delete confirmation. Displays the Confirm Synchronization tab in the Synchronization Control Panel. |
enable |
Enables delete confirmation. Displays the Confirm Synchronization tab in the Synchronization Control Panel. Displays the Revert Deletions button and the Accept Deletions button. |
revert_only |
Displays the Confirm Synchronization tab in the Synchronization Control Panel but enables only the Revert Deletions button. Displays but does not enable the Accept Deletions button. This is the default setting. |
user_confirm |
Displays the Confirm Synchronization tab in the Synchronization Control Panel but displays only the Accept Deletions button. Displays but does not enable the Revert Deletions button. |
The following example sets the deletion_confirmation_mode attribute to revert_only. The ellipses (. . .) indicates code that this book omits from this example for brevity:
<root> <features deletion_confirmation_mode="revert_only" . . . </features>
Specifying the Type of Object the User Can Confirm for Deletion
You can specify the type of object that Siebel CRM Desktop displays in the Delete on Siebel list in the Confirm Synchronization tab. For example, you can specify Siebel CRM Desktop to display only opportunity records.
To specify the type of object the user can confirm for deletion
Use an XML editor to open the Ln_connector_cinfiguration.xml file.
Locate the object type that Siebel CRM Desktop must display in the Delete on Siebel list in the Confirm Synchronization tab list.
For example, for opportunities, you locate the following object type:
type id="Opportunity"
In the object you located in Step 2, add the synchronizer tag.
For example, add the following tag:
<synchronizer name_format=":[:(Name):]" threshold="5">
For more information, see Specifying the Type of Object the User Can Confirm for Deletion.
Repeat Step 2 through Step 3 for each type of object that Siebel CRM Desktop must display in the Delete on Siebel list.
Setting the Synchronizer Tag
The synchronizer tag in the Ln_connector_configuration.xml file controls the type of records that Siebel CRM Desktop displays in the Delete on Siebel list in the Confirm Synchronization tab list. It includes a threshold attribute. This attribute is set to 5 in the following example. It causes Siebel CRM Desktop to display the Confirm Synchronization tab only if the user deleted five or more opportunities since the last synchronization:
<type id="Opportunity" state_field="ObjectState"> <view label="#obj_opportunity" label_plural="#obj_opportunity_plural" small_icon="type_image:Opportunity:16" normal_icon="type_image:Opportunity:24" large_icon="type_image:Opportunity:48"></view> <synchronizer name_format=":[:(Name):]" threshold="5"> <links> </links> <natural_keys> </natural_keys> </synchronizer> </type>
The following table describes the values for the threshold attribute of the synchronizer tag.
Value | Description |
---|---|
0 |
Do not display delete confirmation for the object type. |
1 |
Display delete confirmation for the object type. |
Any value greater than 1 |
If you specify any value that is greater than one, then do the following:
|
Resolving Synchronization Conflicts
This topic describes how to configure Siebel CRM Desktop to resolve synchronization conflicts. It includes the following topics:
Overview of Synchronization Conflicts
Auto Resolver is a Siebel CRM Desktop feature that allows you to configure Siebel CRM Desktop to automatically resolve a synchronization conflict instead of allowing the user to manually resolve this conflict. One of the following synchronization conflicts might occur when Siebel CRM Desktop synchronizes local data with data from the Siebel Server:
Duplicating a record
Simultaneously updating a record on the client and on the server
Updating a record on the client and deleting this record on the server
Updating a record on the server and deleting this record on the client
Consider the following items:
Activity processing. Assume a user receives an event that Siebel CRM Desktop automatically shares. The user then downloads the same event from the Siebel Server during a synchronization. This situation might cause a duplication conflict, which is a type of conflict where two separate records include exactly the same information. You can configure the Auto Resolver so that Siebel CRM Desktop uses the record from the client database or from the Siebel Server database as the primary record, and then uses the data in this primary record to update the data in the nonprimary record.
Data update. Assume a user updates a date in a field on the client, and that the Siebel Server updates this same date on the server. In this situation, an update conflict occurs during synchronization between the client and server databases.
This topic uses the following terms:
remote identifies the Siebel Server.
local identifies the client.
It is recommended that you configure autoresolve for each individual field, and only when necessary. It is recommended that you do not configure Siebel CRM Desktop to resolve all conflicts. Sometimes the client will include the correct value and sometimes the Siebel Server will include the correct value. Using autoresolve might result in Siebel CRM Desktop maintaining an incorrect value. If the client or server might include the correct value, then it is recommended that you allow the user to choose the correct value.
How the Auto Resolver Resolves Conflicts
The Auto Resolver Manager (ar_manager) includes a function that it assigns when an on_conflict event occurs. If this event occurs, then the synchronizer indicates the conflict and then provides information about this conflict. This conflict information might include the following items:
Local object Id
Remote object Id
Set of local fields
Set of remote fields
Conflict type as a duplication conflict or a general conflict
And so on
The Auto Resolver does the following work to resolve a conflict:
Examines the first rule that the autoresolver.js file contains.
If the rule that it examines in Step 1:
Is applicable for the conflict. The Auto Resolver attempts to apply this rule to this conflict. If this rule:
Resolves the conflict. The Auto Resolver determines if another conflict exists. If it finds another conflict, then it repeats Step 1 and Step 2 until it processes all conflicts. If it does not find another conflict, then it quits this process.
Does not resolve the conflict. The Auto Resolver examines the next rule that the autoresolver.js file contains. It continues to process these rules sequentially in the order that they occur in the autoresolver.js file until it resolves the conflict or until it processes all rules.
Is not applicable for the conflict. The Auto Resolver examines the next rule that the autoresolver.js file contains.
If the Auto Resolver applies all rules but the conflict remains, then this conflict remains unresolved, and the Auto Resolver displays it in the Check Issues tab of the Control Panel dialog box of the CRM Desktop add-in.
Configuring Siebel CRM Desktop to Resolve Synchronization Conflicts
This topic describes how to configure Siebel CRM Desktop to resolve synchronization conflicts.
To configure Siebel CRM Desktop to resolve synchronization conflicts
Use a JavaScript editor to open the autoresolver.js file.
Navigate to the following section:
//Opportunity
Add the following code:
ar_manager.add_rule({ type: "object_type", field: " field_ID ", resolution_fn: ar_helpers.resolution_resolve_to("source", boolean) });
where:
ar_manager. Is the Auto Resolver manager. It is an interface to the C++ code that Siebel CRM Desktop runs to resolve the conflict.
add_rule. Is the C++ method that ar_manager sends to the C++ code.
type. Identifies the object type where Siebel CRM Desktop applies the rule.
field. Identifies the field that contains the data that Siebel CRM Desktop uses to resolve the conflict.
resolution_fn. Identifies the rule function that Siebel CRM Desktop passes to the C++ code. This function returns a string value that indicates if the Auto Resolver resolved the conflict.
resolution_resolve_to. Defines the rule. The rule is configured in the autoresolve_helpers.js file. It includes the following values:
source is remote or local, where remote is the Siebel Server and local is the client. It identifies the source that Siebel CRM Desktop uses to resolve the conflict.
boolean is true or false.
For example:
ar_manager.add_rule({type: "Opportunity", field: " Account Id ", resolution_fn: ar_helpers.resolution_resolve_to("local", true)});
In this example, if a synchronization conflict exists in the Account field of the Opportunity form, then this rule uses the value in the Account field from the client database as the permanent value only if the resolution_fn returns the following value:
local
For example:
ar_manager.add_rule({ type: "Opportunity", field: " Account Id ", resolution_fn: ar_helpers.resolution_resolve_to("local", false) });
In this example, if no values exists for this field on the client, then the Auto Resolver does not apply a resolution.
For another example, you add the following code to the //Opportunity section:
ar_manager.add_rule({ type:"Action", field:"Email To Line", resolution_fn: ar_helper.resolution_resolve_to("local", false) });
Examples of Auto Resolver Rules
This topic describes some of the predefined rules that Auto Resolver uses. You can use these rules as a guide when you create your custom rules. The autoresolver.js file contains these predefined rules. You must not modify any predefined rule.
Rule That Resolves Association Conflicts
The following predefined rule resolves association conflicts:
/*** ASSOCIATION AUTORESOLVER ***/
ar_manager.add_rule(new ar_helpers.associations_resolve_rule(ar_ctx))
where:
ar_helpers.associations_resolve_rule(ar_ctx)
identifies the code that Siebel CRM Desktop uses for the rule.ar_ctx
identifies the list of the required objects. For example:var ar_ctx = { "util": util, "conflicts_manager": conflicts_manager, "application": application, "data_model": business_logic.create_siebel_meta_scheme2()
where:
util
is a C++ object that contains a number of methods.conflicts_manager
is the object that Siebel CRM Desktop creates in the interface to the C++ code that the Auto Resolver uses.application
is a C++ object that contains a number of methods.data_model
is a C++ object that contains a number of methods.You cannot modify a reference to any of these C++ objects.
Rule That Resolves Conflicts for Objects Types
The following predefined rule resolves conflicts for certain object types regardless of field values:
/*** TYPE RULES ***/
ar_manager.add_rule({ types: ["Action", "Account", "Contact", "Opportunity"], resolution_fn: ar_helpers.condition_update_delete_conflict_stopper });
where:
types: ["Action", "Account", "Contact", "Opportunity"]
is a list of object types where Siebel CRM Desktop applies the rule.condition_update_delete_conflict_stopper
is the rule that Siebel CRM Desktop runs. The autoresove_helpers.js file contains this rule.
Rule That Resolves Conflicts for Fields
The following predefined rule resolves conflicts for certain object types, including field values:
/*** FIELD RULES ***/ // Not synchronized ar_manager.add_rule({ types: ["Contact", "Opportunity", "Account"], field: "Primary Position Id", resolution_fn: ar_helpers.resolution_resolve_not_synced_field_to("remote", false) });
where:
types: ["Contact", "Opportunity", "Account"]
is a list of object types where Siebel CRM Desktop applies the rulefield: "Primary Position Id"
identifies the field that contains the data that Siebel CRM Desktop uses to resolve the conflict.resolution_resolve_not_synced_field_to
is a rule that the Auto Resolver applies only for an object that Siebel CRM Desktop has not synchronized to the client. This situation can occur in a deduplication conflict.
The Auto Resolver applies this rule only for an object that it has not synchronized to the client. This situation can occur in a deduplication conflict.