This morning I was verifying the version of a CRM 4.0 installation when I realized that instead of opening individual files and checking their properties, I could just ask the Windows Explorer to show me the information.

Perform the following steps:

1) Navigate to your CRM 4.0 installation folder, ( c:\program files\Microsoft Dynamics CRM ).

2) Open the Setup folder.

3) Set the View of the folder to be Details.

4) Right click on the file list grid to display the pop-up menu:

image

5) Click the More… menu.

6) Scroll down the Details list until you find File Version and check the box beside it:

image

7) Click OK and your file list will update to show something like this:

image

 

Fairly simply, I know, but it just occurred to me that this feature was available and it is surely easier than checking files individually.

 

I have been noticing lately that the Build Configuration dropdown list that is normally found the the Standard Toolbar is missing from my Visual Studio 2010 installation.

After a bit of digging around the Internet, I found a solution, which I’ll document further here.

The Procedure

1) Select Tools, Customize…

2) Click the Commands tab

3) Select the Toolbar radio button.

4) Select Standard from the dropdown list.  The dialog should now look like this:

image

5) Scroll down to the bottom of the list and select the last item in the list.  In my case, unmodified, the last item is Error List.

6) Click the Add Command button.

7), Under Categories, select Build.  Under Commands, select Solution Configurations.  You should see this:

image

8) Click OK, the Close

9) The Visual Studio 2010 main menu should now look something like this:

image

 

I hope that saves you a bit of searching and hand-wringing.

 

I have updated the CRM JavaScript Export Tool to include the following major enhancements:

1) Added support for CRM Online.

2) Added support for the generation of a Visual Studio 2010 project.

3) Changed the naming convention of the export folder so that it also contains the date and time of the export.

Here is how the new user interface looks:

image

You can find it on the Free Utilities page.

 

Top Search Terms that Brought People to My Blog

On July 10, 2010, in Misc, by Mitch Milam

I was performing some maintenance this morning so I thought I’d review the search terms that brought people to my site.

It’s actually rather interesting data as it is spread across a large variety of technologies but since my blog covers a wide variety of technologies, I guess I shouldn’t be surprised.

Search Views
javascript close browser 198
crm 4.0 workflow 156
crmform.formtype 141
823287 141
mitch milam

   ** This is my Mom trying to keep up with me.

128
sql disconnect all users 120
close browser javascript 119
javascript close window without warning 111
javascript close browser window 101
visual studio icons 80
sharepoint terminology 78
an error occurred promoting this item to 75
disconnect sql users 75
window.close without warning 74
sql disconnect users 72
sqlsmo 71
marketing list member view 70
dynamic entity crm 4.0 67
fireonchange 67
fn_utctolocaltime 57
sql 2008 disconnect users 49
locaddrelatedto 48
disconnect users from database 45
disconnect user from sql database 44
sql disconnect users from database 44
principalobjectaccess 44
cisco vpn client netscreen 43
disconnect users from sql database 43
skinning sharepoint 43
crm workflow examples 42
sql disconnect user 41
an error occurred promoting this item to 41
close window without warning 41
sharepoint custom templates 41
crm knowledge base 41
disconnect all users from sql database 40
crm sdk plugin send email 40
crm 4.0 workflows 40
launchondemandworkflowform 39
crm fireonchange 38
article 823287 38
disconnect all users from database 37
javascript close browser without warning 37
a currency is required if a value exists 36
crm dynamic entity 36
crm 4 workflows 34
workflow crm 4.0 34
deletionstatecode crm 4.0 33
crm workflows 31
close window javascript without warning 31
 
 

Sales Centric is back in action

On July 6, 2010, in Dynamics CRM, by Mitch Milam

Well, it looks like Sales Centric and their Relationship Charts product is back on the market after having taken quite a long “vacation:�

http://www.salescentric.com/relationship_charts.asp

 

Marketing List Manager Add-On Updated

On July 6, 2010, in Dynamics CRM, Workflow, by Mitch Milam

I’ve updated my Add To Marketing list add-on with additional functionality and a new Name.

New Name

The new name is Marketing List Manager for Dynamics CRM

 

New Functionality

Marketing List Manager is an plug-in that allows you to both add and remove members from a marketing list – a feature that is not currently available in Microsoft Dynamics CRM 4.0.

Read more about it here.

 

This morning I was adding some functionality to my Dynamics Tutorials site and needed to determine if a user was a member of a specific marketing list.

No problem, I thought.  I opened up the most excellent Stunnware Tools to create the query.

The only problem is that the Marketing List Member entity, listmember, does not support the RetreiveMultiple message, which means I can’t use QueryExpression to perform the query.

After digging around a while, I found that I could use QueryExpression but I would have to use the LinkEntity property to properly assemble the query.  Here is what I came up with:

bool retVar = false;

QueryExpression query = new QueryExpression { EntityName = EntityName.list.ToString()};

LinkEntity linkEntity1 = new LinkEntity { JoinOperator = JoinOperator.Natural,
                                          LinkFromEntityName = "list",
                                          LinkFromAttributeName = "listid",
                                          LinkToEntityName = "listmember",
                                          LinkToAttributeName = "listid",
                                          LinkCriteria = new FilterExpression() };

linkEntity1.LinkCriteria.FilterOperator = LogicalOperator.And;

linkEntity1.LinkCriteria.AddCondition(new ConditionExpression { AttributeName = "listid",
                                                                Operator = ConditionOperator.Equal,
                                                                Values = new Object[] { marketingListId } });

linkEntity1.LinkCriteria.AddCondition(new ConditionExpression { AttributeName = "entityid",
                                                                Operator = ConditionOperator.Equal,
                                                                Values = new Object[] { userId } });

query.LinkEntities.Add(linkEntity1);

RetrieveMultipleRequest request = new RetrieveMultipleRequest { ReturnDynamicEntities = true, Query = query };
RetrieveMultipleResponse response = (RetrieveMultipleResponse)crmService.Execute(request);

retVar = (response.BusinessEntityCollection.BusinessEntities.Count > 0);

How It Works

1)  We start by querying the Marketing List Entity ( list ).

2) We create a link entity that joins the Marketing List Member Entity to the Marketing List Entity.

3) The search criteria is actually specified on the linked, Marketing List Member Entity.  We’re asking for a specific userId and a specific marketingListId.

4) Next we add the linked entity to the query.

5) Finally we prepare and execute the request.

 

Since I am only interested if the contact exists within the marketing list, I simple set a boolean variable to true or false depending if the number of records returned ( found in the BusinessEntityCollection ) is greater than zero.

 

References

 

CRM Add-Ons Updated

On July 3, 2010, in Dynamics CRM, by Mitch Milam

Last year I created an add-on for Dynamics CRM 4.0 that I called Data Validation.  It had two functions:

  1. User interface validation
  2. Email management.

This week I decided to split those functions into two separate products.

I also change the licensing from a per-organization fee to a simple flat-fee.

You may read more about these products by visiting their respective product pages:

Email Manager

Data Validation

 

One of my local customers recently moved from Small Business Server 2003 to Small Business Server 2008.  Among other things, this required a move from SQL Server 2005 to SQL Server 2008 as well.

The movement of the databases went pretty much without issue, but we ran into some strange behavior with some of the custom CRM reports they had created.  The error looked something like this:

image

Not very helpful at all.

After reviewing the report in Visual Studio and still not finding any issues, I finally started looking at the system itself.  That’s when I found this in the SQL Server’s Event Log:

Report data set execution failure. Error: Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.
Incorrect syntax near ','.

Hmm. It keeps getting better and better. Now what exactly does that mean? 

 

Background

It turns out that when the SQL commands they had written to populate the report were sent to the SQL server, they were combined with other SQL commands.

Unfortunately, SQL didn’t like the way the commands were combined.  It wanted you to use a semi-colon ( ; ) to separate the commands so it could determine how the commands should be run.

Which is exactly what the error message states.

 

The Solution

To fix the issue, all I did was to add a semi-colon ( ; ) to the beginning of the custom SQL statement, which looked something like this:

;WITH FilteredAccount AS

And that solved the problem and the reports ran successfully.