Controlling User Synchronization Settings


Today’s guest blogger is MVP Joel Lindstrom, a Solutions Consultant at Customer Effective.

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

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

clip_image002

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?

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

Cheers,

Joel Lindstrom

Comments (11)

  1. Steen Schluter Persson says:

    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.

    /Steen

  2. sew says:

    Friends watch it regularlyEsp.for USA,UK and German friends

    http://adf.ly/1qDUb

  3. bart says:

    What about the attachments in appointments – do they synchronize between CRM and Outlook?

  4. Romain says:

    Hi,

    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: "http://www.resultondemand.nl/…/3711daa2-27e8-494a-8e3b-52ba7c12022e.htm".

    Can you confirm please?

    Thanks a lot.

  5. Joel Lindstrom says:

    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

    OutlookFilter                  256

    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

    Offlinetemplates                                                                                 8192

    Outlookfiltertemplates                                                                   131072

    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.

  6. Stephen says:

    If I create a custome Activity Type Entity, because I'd like something other than Service Activity or Appointment. Can that be sync'd to my Outlook Calendar?

  7. One way filtering says:

    I would like only a one way filter.

    CRM is leading, I don't want Outlook changes to be synced with CRM.

    Main reason is a recent Exchange crash at our company, followed by a sync action where all the planned and open appointments where deleted in CRM. When Exchangeserver was ok again, that same sync took care of all the appointmentrecords in Outlook by deleting them too. Leaving us with a manual reconstruction of all future appointments

  8. Joel Lindstrom says:

    Since this post was written, there have been some new ways to manage user filters.  One of the best is this free set of workflow assemblies at codeplex:  crm2011ldgmanager.codeplex.com

    These make it very easy to reset the synchronization filters without having to do any coding.

  9. PxPx says:

    By using the Template method and savedquery can you pick and chose which fields get synched.  So for instance, I dont want everything from the appointment entity to be synched how do I change this?

  10. Holger says:

    Hi,

    I have read so much about the Outlook filters about defining them, about doublets and rules. But one topic I couldn't find at all.

    If I sync all contacts where City = New York, afterwards I change the rule from New York to Boston, then the New Yorkers are removed from Outlook and the Boston contacts are added to the Outlook contacts as expected.

    If I sync all contacts where City = New York, the next day I change the rule from New York to Boston, then the New Yorkers remain with crmLinkState = 0 and the Boston contacts are added.

    I have several computers/users which got to many contacts and I have to delete these manually after setting a more detailled filter. Can you tell me why these contacts are not removed anymore?

  11. Chantelle says:

    Hi Joel

    Our users manually sync as they have to log in remotely, is there a way in the system to verify whether they have synced?

    Thanks