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:
5) Click the More… menu.
6) Scroll down the Details list until you find File Version and check the box beside it:
7) Click OK and your file list will update to show something like this:
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:
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:
8) Click OK, the Close
9) The Visual Studio 2010 main menu should now look something like this:
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:
You can find it on the Free Utilities page.
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 |
Here are some things I found interesting while surfing the web this week:
( In no particular order )
Development
Random
SQL
Well, it looks like Sales Centric and their Relationship Charts product is back on the market after having taken quite a long “vacation:�
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
Last year I created an add-on for Dynamics CRM 4.0 that I called Data Validation. It had two functions:
- User interface validation
- 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:
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:
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.





