Tuesday 21 June 2011

Microsoft Dynamics CRM 4.0 Error Message – Font ‘Verdana’ does not support style 'Bold’

While performing both an update to Microsoft Dynamics CRM 4.0 Update Rollup 16 and also while running the Mictrosoft Dynamics CRM Configuration Wizard I received the following error message





Exception has been thrown by the target of an invocation. Font 'Verdana' does not support style 'Bold'.



I would normally use the CRM Diagnostics tool to look at the root cause but this was a remote installation that needed to be completed to a tight deadline.  Seeing this was an issue with a font I imedaiately looked towards the C:\Windows\Fonts folder.

My first thought was to take a copy of the Verdana font from another working machine and copy this to the machine having the issue. 

Copying the Verdana font to a shared location will create four files.  These will need to be copied to the C:\Windows\Fonts on the machine having the issue


Once this was completed I was able to run Rollup 16 and the Configuration Wizard.  This extra step tool an additional 10 minutes but I was still able to meet the agreed time for the installation with the user.

Thursday 16 June 2011

Microsoft Dynamics CRM 2011 New Features: Dynamic Marketing list

Please consider the following example.  In my CRM 2011 Testing environment I have the following contacts.  Using the Address 1: Country field I have 5 Contacts from the U.S. and 9 Contacts from the U.K

Lets assume I want to carry out a Marketing Campaign to only the Contacts that have a Country Value of U.K.
In CRM 4.0 I could use add these users to a marketing list, but the marketing list would only be accurate for the time it was created.  After the initial steps of adding the Contacts there is a possibility that the marketing list would be inaccurate.  In the example above, if a user migrated to the U.S. and CRM was updated to reflect this they would still be on the list marketing from the time they were initialy added. This would be the case until the Contact was manual removed.
Dynamic Marketing list changes this. In the same way users use Advanced Find,  Dynamic Marketing Lists allow us to create always accurate marketing lists based on criteria we set.
Consider the following example;
1)      Create a Marketing List – ensure you set the member type as Contact and Type as Dynamic, then save

2)      Select Manage Members from the Ribbon
3)      The next window is essential the Advanced Find window.  Select the Saved View you have created for the Dynamic marketing List or start from scratch.  Here I am going to start with Active Contacts saved view and modify this to include where Country equals U.K.
4)      Select Marketing List Members to view the members that have been added.

If you need marketing lists which are always up-to-date based on a predetermined filter the Dynamic feature is brilliant.
For those who still want to keep full control over the membership of a Marketing List, there is the Static option which requires users to manually add and remove members from the list.

Friday 10 June 2011

Dynamics CRM 4.0 for Outlook – Invalid Argument

If you use the From field in Microsoft Outlook while using Microsoft Dynamics CRM 4.0 and you Track the email, you may experience the following error when trying to send the email.





Invalid Argument Do you want to send the e-mail? If you click Yes, the e-mail will be sent out, but no corresponding activity will be created in Microsoft Dynamics CRM.


To begin resolving this issue I went straight to the CRM 4.0 Diagnostics Tool and ran a Trace from the Microsoft Dynamics CRM Server.  Once I had replicated the error, I Found the following error message in the trace file.

>CrmSoapExtension detected CrmException:
System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Microsoft.Crm.CrmArgumentException: The specified sender type is not supported. ---> System.ArgumentException: The specified sender type is not supported.

From my own experience of troubleshooting the Email Router I knew that the Invalid sender type was like due to email address I was trying to send from was in the system twice.
To troubleshoot further I used the brilliant script provided by Ben Lec (http://blogs.msdn.com/b/benlec/archive/2008/12/23/incoming-e-mails-are-not-tracked-in-crm.aspx)
For the email address below I used the email I was trying to Send FROM (Not my own)


declare @emailAddress as varchar(100)

set @emailAddress = 'support@tnyCRM.com'

SELECT FullName, SystemUserId, InternalEmailAddress, PersonalEMailAddress
FROM SystemUserBase
WHERE InternalEMailAddress = @emailAddress
OR PersonalEMailAddress = @emailAddress


SELECT Name, QueueId, EMailAddress
FROM QueueBase
WHERE EMailAddress = @emailAddress

SELECT Name, AccountId, EMailAddress1, EMailAddress2, EMailAddress3
FROM AccountBase
WHERE EMailAddress1 = @emailAddress
OR EMailAddress2 = @emailAddress
OR EMailAddress3 = @emailAddress

SELECT FullName, ContactId, EMailAddress1, EMailAddress2, EMailAddress3
FROM ContactBase
WHERE EMailAddress1 = @emailAddress
OR EMailAddress2 = @emailAddress
OR EMailAddress3 = @emailAddress

SELECT Subject, LeadId, EMailAddress1, EMailAddress2, EMailAddress3
FROM LeadBase
WHERE EMailAddress1 = @emailAddress
OR EMailAddress2 = @emailAddress
OR EMailAddress3 = @emailAddress

In my results I found that a Queue and a User were sharing the same E-mail address.  This was creating the Invalid Argument error.  Removing the email address from the user and keeping the address in the queue enabled me to send the email.

This issue occurs because when CRM tries to send an email through outlook and the sender is support@tnyCRM.com, it will search in the whole database to see who has an email address equal to support@tnyCRM.com.
If other records, for example an Account, Lead, Contact, User or Queue are also using support@tnyCRM.com in the From field in their email, the system will not know which record to track the email against and the email will not send as Tracked.