Today’s guest blogger is MVP Joel Lindstrom, a Solutions Consultant at Customer Effective.
One of the items frequently requested, especially in large deployments of Microsoft Dynamics CRM, has been the ability to control Outlook client synchronization. CRM for Outlook provides a fantastic bi-directional synchronization between CRM and Outlook for Contacts, appointments, tasks, and other activities, but in some organizations, business requirements dictate that some or all of the synchronization be disabled, or that the settings not be user modifiable.
With CRM version 4.0, there were SQL database updates that could be used to prevent some types of synchronization, but they were unsupported and could often be overridden by a user updating his CRM for Outlook settings.
Also, contact synchronization options in CRM 4 are based on the user’s local data rules. By default, when users are created, their local data rules default to contacts owned by current user. While this worked well in some situations, in many cases, this either resulted in the user’s Outlook contacts being filled with too many contacts (if they own many contacts), or the contacts that they want to have not being synchronized to their outlook contacts. While this could be fixed by updating the user’s local data rules, it was often a surprise for users who just installed the client without first making modifications to their settings.
With Microsoft Dynamics CRM 2011, Microsoft has introduced a supported method for setting synchronization setting and controlling them from a global perspective.
First thing you will notice is that in CRM 2011 for Outlook, there are no more checkboxes to enable/disable synchronization for tasks, contacts, or appointments. Now everything is controlled through the local data rules, which are now called Outlook Filters.
Now for CRM 2011 for Outlook, you will not only see Outlook Filters for contacts, you will also see one for each activity type. These still default to the records that you own or are to which you are a party (such as appointments you are attending). However, you can now change the filter rules to change what activities synchronize to your calendar.
Imagine a sales manager who wanted to see all appointments involving someone on his team—he could update his outlook filter and include records where the owner of the appointment was on his team.
Also, if someone wanted fewer appointments or tasks to synchronize than everything owned by her, or wanted to turn off task synchronization,you can modify her filter rule for tasks, or disable it altogether.
Controlling Synchronization Filters
So what do you do if you want to control Outlook Filters for all of your users—say you want them to get a different set of filters than the default “my” filters, or you want to disable synchronization for contacts?
CRM 2011 introduces a new feature called filter templates. Outlook filters are stored in the SavedQuery table of the MSCRM database. Filter templates allow you to set one SavedQuery record as the default per entity, then when new users are added to the system, their data rules will reflect the default filter rules.
See this link from the CRM 2011 SDK regarding filter templates: http://msdn.microsoft.com/en-us/library/gg328205.aspx
So you could create one user, set their Outlook filters to the desired default, then set the SavedQuery.IsDefault attribute to 1 on the SavedQuery records for that user. Then subsequent users will default to these rules.
This gives system administrators much greater control over users default Outlook Filters, but what about preventing users from modifying their data rules later?
The security roles in 2011 have been enhanced with a new privilege setting called “Manage User Synchronization Settings” located on the bottom of the Core Records of the security role definition.
If you disable this setting, users will not be able to modify their outlook filters, ensuring that your default settings go unchanged.
Keep in mind that you may not want to do this, especially if you want users to be able to control what record synch/don’t synch; however, if your business requirements dictate limiting synchronization setting modification, this is a welcome addition.
Nice article, but do you have an example of how to do this? Being a non-programmer (or at least a very little skilled programmer) this doesn't help a lot.
I simply don't understand why MS can't make this available in the UI. It was real pain in CRM 4.0 and in my opinion it's not much better in 2011 if you need programming skills to do this. All other CRM applications I've worked with has this as a part of the Administration interface.
What about the attachments in appointments - do they synchronize between CRM and Outlook?
The "manage user synchronization" privilege seems not to work as stated in this article (I disabled the privilege and I still can modify filters).
It seems that it is more an administrator privilege to modify other user filters like explained in this article: "www.resultondemand.nl/.../3711daa2-27e8-494a-8e3b-52ba7c12022e.htm".
Can you confirm please?
Thanks a lot.
The way I describe it in the post could have been clearer.
First thing, the supported way to update the templates is through the SDK.
The filter templates are stored in the savedquery table. When a user synchronizes with CRM for the first time, their filters are set up in the UserQuery table, based on the default filter templates. Basically, it makes a copy of the filter templates to create their offline filters.
If you want to modify the default templates, you will need to update the records in the savedquery table. SavedQuery is the table that stores all system views in CRM.
To better understand the savedquery table, here is a list of all of the types of records in the savedquery table. the number represents the value in the querytype field.
Main Application View 0
Advanced Search 1
Associated View 2
Quick find search 4
Offline filter 16
Lookup View 64
Address book Filter 512
Application view without a subject. 1024
Saved query used for workflow templates and e-mail templates 2048
Solution Component view 4096
So the ones that contain the templates for synchronization are querytype 8192 and 131027. 131072 sets the default for what synchronizes for the Outlook synch (calendar, contacts, activities), and 8192 sets the default for offline synchronization filters.
The supported way to update these filters is to do it programatically via the SDK. There are code samples of how to do this, and our development staff could help you implement this approach. See msdn.microsoft.com/.../gg328205.aspx. Note there are also calls you can make to reset existing users to the default.