Here is a scenario that I have not encountered before.
A user has the CRM Client for Outlook installed and manually tracks emails. As expected, a copy of the email is created in CRM. However, when the email is opened the recipients and/or senders show as unresolved recpients even though records exist in CRM with those email addresses. Very puzzling.
So guessing that this is a platform issue rather than a problem with the CRM Client for Outlook I enabled tracing on the server and tracked an email (be sure to only turn on tracing for a short time, otherwise you will end up with large log files and perhaps reduce performance). I examined the trace file and found the following (I've highlighted EmailSearchBase):
select "emailsearch0".EmailAddress as "emailaddress" , "emailsearch0".ParentObjectId as "parentobjectid" , "emailsearch0".EmailSearchId as "emailsearchid" , "emailsearch0".ParentObjectTypeCode as "parentobjecttypecode" , "emailsearch0".EmailColumnNumber as "emailcolumnnumber" from EmailSearchBase
Now, I hadn't dealt with this table before, so I had a look in SQL Server Management Studio and found the table contained just a few rows with email addresses for CRM records. Searching the Internet revealed that this table is searched when emails are tracked to find matching records instead of all email-enabled entities separately. This was a change made for CRM 2011. OK, now I understand the purpose of the table but why did my scenario only have a few records and not hundreds or thousands?
This article explains that sometimes during an upgrade from CRM 4.0 to CRM 2011, the format for email fields changes from "email" to "text". Sure enough in my scenario email fields had become text. The article goes on to explain how to correct this and to force an update of the EmailSearchBase table.