Monday, October 18, 2010

Why won’t they [Contacts] go away?


An interesting question came to me recently regarding how CRM synchronizes its Contacts with Outlook and when those contacts do and don’t get removed from Outlook based on what happens to them in in CRM.

Hmm, that’s an interesting question.  At first thought, one would think that any re-assign, delete, or deactivate done on the CRM side would result in the corresponding Contact within Outlook to be removed from Outlook.

Well, this is not the case.  Here is what happens:

CRM Action Outlook Result
Re-assign the Contact to another user. Removed from Outlook.
Deactivated in CRM. Orphaned in Outlook.
Re-Activated in CRM. Orphaned Contact Re-linked in Outlook.
Deleted in CRM. Orphaned in Outlook.

Think of the behavior this way: 

Re-assigned Contacts Since the contact was re-assigned, you probably don’t care about it anymore, so we’ll remove it from your Outlook contacts.
Deactivated and Deleted Contacts Hmm, someone wacked the contact in CRM, but you likely still care about them, so I’ll leave it in your Outlook contacts just in case you still need it.


The follow-on question from the requestor ran along these lines:  Hmm, ok. Well, while that explains why all my users still have THOUSANDS of CRM Contacts in their Outlook Contacts, HOW DO I CLEAN EM UP? (Yes, there was a definite tone of desperation in their voice.)

Here were some brainstorm thoughts:

1) If you restored all of the contacts back into CRM EXACTLY like there used to be, they should auto-link back up with the Outlook contacts and you could then to a re-assign to some system account and they would be gone.  the problem here is that they would have to be EXACT, including the primary key ID, and all the Outlook attributes and extra IDs.  If you have a good backup, this could possibly be an option.  Without a backup, keep reading…

2) Write a .NET application to spin through all of a user’s Outlook Contacts looking for the orphaned CRM Contacts and delete them.  This obviously would require a programmer’s time to write, debug and test such an application.  Then the users would all have to install the application.  Execute it, and then uninstall it.  Additionally, there are some strict security rules around manipulating Outlook from an external problem (We don’t want to be seen as a virus now, do we?!)  If this sounds too expensive and complicated to you, keep reading…

3) Have the user manually delete the CRM Contacts. Ok. but there are some things to consider here.

  • How do identify all the orphaned CRM contacts from among all my real contacts?
  • There ain’t no way any user has time to look at each contact one-by-one (we are talking THOUSANDS of contacts in this case)

What about a filter for just the CRM Contacts and then bulk delete?

Yea, I like that idea also!

Let’s work out a solution for option #3.

To start, how do we identify the Orphaned CRM Contacts?

To our benefit, every Outlook Contact that has ever been linked to a CRM Contact will have a bunch of user-defined attributes added to the Outlook Contact as shown here:


Note: You can see this list by opening a Contact and selecting the “All Fields” button in the Show section on the Ribbon:


So, now that we know there are some super cool user-defined fields we could filter on, let’s go create an Outlook filter for them…

But, if you try to create a standard CRM filter, you will be surprisingly disappointed.  When you look at the “User-Defined Fields”, you will find that the list is likely empty.


Note: To get to the Filter dialog, from your Contacts listing, Go to the View ribbon, Select View Settings from the Current View section.  In the Setting Dialog, select the Filter button.  (Or, just right-click any white space in the Contacts listing and select Filter.)

This is because the User-defined fields are only on the individual Contacts and are not defined on the Folder itself.  While it is possible to go and add those fields to the folder manually such that they will show up (an opportunity for another blog), we will take a simpler approach here to make this easier for the end users.

The answer?

Use a SQL filter condition.

In the same Outlook Filter dialog, select the SQL tab, check the “Edit these criteria directly…” checkbox, and input the following filter condition exactly as shown:


Now click Ok and the only Outlook Contacts that will be shown are Contacts that have at any time been linked to CRM.  YEA!

You can now do a simple Ctrl-A (for Select All), and hit the Delete key and they are all gone.

To remove the filter, re-open the Filter dialog and select the Clear All button on the bottom.  Select Ok one last time and you’re now back to your original Contact list without any orphaned CRM Contacts!

To summarize, CRM Contacts will only be removed from your Outlook Contacts if they are re-assigned to another user in CRM.  If they are Deactivated or Deleted, they will be orphaned in your Outlook Contacts so you don’t “lose them”.  If you need to delete all those orphaned CRM Contacts out of your Outlook Contacts, you can apply a simple “SQL” filter condition, do a Select All, and hit the Delete key.  And presto, they are now all gone.


- One is pleased to be of service


Technorati Tags: ,,

No comments:

Post a Comment