Upcoming Developer Workshop: Extending Dynamics CRM

Just a reminder that my development workshop, Extending Dynamics CRM class, will be held Monday, March 9th through Friday, March 13th.

Course Description:

If you are looking to get started with Dynamics CRM development, and are looking for an instructor-led, hands-on workshop, then let me introduce you to Extending Dynamics CRM.

In case you did not know, Microsoft decided to only offer the Extending Dynamics CRM course via eLearning, starting with Dynamics CRM 2013. eLearning, which is a self–study program, is great for many people, but I think students gain a tremendous amount of learning and understanding from having an instructor who works with Dynamics CRM development on a daily basis. This student-instructor interaction combined with the ability for the student to ask questions and obtain clarifications, makes this course all the more valuable.

Download a PDF version of this document here.


This class is taught by Mitch Milam, nine–time Microsoft Most Valuable Professional for Dynamics CRM and an independent consultant specializing in Dynamics CRM architecture, development, and training.


We have taken the topics normally covered by the official Microsoft Extending Dynamics course, and expanded their depth quite substantially. Instead of a three–day course, this is a five–day course with most of the extra content being the addition of a large number of hands–on labs. The information covered is relevant to both Dynamics CRM 2013 and 2015.


Monday, March 9th through Friday, March 13th.

Class starts at 8:00am CST and will last five or six hours per day, depending on the topic. Please budget the entire day so that you have time to complete the homework assignments.


This is an Internet-based workshop. Classroom time and discussions will be facilitated using GotoMeeting. Each student will be given their own virtual development environment for the duration of the course. This will allow for the completion of labs and homework without causing conflicts with the other students.


$1,995 per student.

Discounts are also available for two or more students.

Note: Due to the hands–on nature of this workshop, there is a limit of 12 students per class.

Eventbrite - Extending Dynamics CRM (March)


For more information visit:


Correcting Filtered Views and an Inaccurate “First ten” list

I ran into a situation at one of my customers while performing an upgrade from Dynamics CRM 2011 to 2015. On several of their entity forms, they have a filtered lookup in place where one value is filtered based on the value of another field. In this case it is an Account/Contact set of fields, which looks like this:


The idea is that the Primary Contact lookup will be filtered to show only contacts associated with the Potential Customer. This is accomplished with the following settings on the Primary Contact field:


How this works

Here is how this set of settings works:

1. You first check the Only show records where checkbox,

2. Then set the first field to use the Potential Customer (Accounts) (Quotes) value.

This setting is a little confusing, so here is my interpretation:

Potential Customer = the Potential Customer field.

(Accounts) = look for Accounts. This field can also contain Contacts.

(Quotes) = I am guessing this means the quotes entity.

3. The second setting instructs the lookup to look for Contacts where the Company Name field of the Contact is the same as the Potential Customer field.

The Problem

The problem is that it does not seem to be working the way I think it should. When you first click on the magnifying glass icon, you will get a list of 10 contacts, that seem to be unrelated to the Account specified in the Potential Customer field, as you can see below:


If you scroll to the bottom of the list, and click on Look up more records, you will see the standard lookup dialog which is properly filtered:


This confuses the user quite a bit and makes them do extra work. 

The Solution

At this point, I am under the impression that this is a bug. The list of 10 items needs to be the same as the items shown in the actual lookup dialog.  This means we have to resort to a little JavaScript.

Add this code to the JavaScript library associated with your entity:

function preFilterPrimaryContactLookup() { Xrm.Page.getControl("new_primarycontactid").addPreSearch(addPrimaryContacLookupFilter); } function addPrimaryContacLookupFilter() { if (Xrm.Page.getAttribute("customerid") == null) { return; } var customer = Xrm.Page.getAttribute("customerid").getValue(); if (customer == null) { return; } fetchXml = '<filter type="and">' + '<condition attribute="parentcustomerid" operator="eq" value="' +

customer[0].id + '" />' + '</filter>'; Xrm.Page.getControl("new_primarycontactid").addCustomFilter(fetchXml); }

The first method, preFilterPrimaryContactLookup, simply adds what we call a Pre-Search condition to the Primary Contact field. That condition actually calls the second method, addPrimaryContacLookupFilter, to actually do the work.

addPrimaryContacLookupFilter extracts the ID of the Potential Customer, then creates a FetchXml Filter Condition where the Contact entity is filtered based on where the Parent Account (parentcustomerid) of the Contact is the same as Potential Customer of the Quote (in this case).

We finish this exercise by adding the following line to the form’s OnLoad event:



As I mentioned, I think this is a bug. I’ve seen it happen and not happen with different versions of Dynamics CRM 2015.

If you are trying to implement this technique, start with the standard configuration of the field, using the field properties in the form editor and if that does not work as you expect, add the JavaScript.

System-Wide Alerts in Dynamics CRM 2015

Dynamics CRM 2015 implemented a new system-wide alerts to inform you of issues with things like the Server-side Sync process. They appear in the user interface as a yellow bar at the top of the page, as you can see below:


Clicking the View Alerts button will take you to the Alerts view where you may review the individual alerts.

At this point I am not certain what will be alerted on, besides issues with Server-Side Sync, but those for sure are there.

Viewing Alerts

The actual Alerts view is on the Dynamics CRM user interface at the end of the Sales Area:


The rather fascinating thing about Alerts, is that they are not actually Alerts, they are Traces.  So, when you are working with Advanced Find, you need to use the Traces entity.


Programmatic Access and Automation

The Traces (Alerts) entity is actually called TraceLog, which is the entity name to use when writing code using the Dynamics CRM SDK.

Traces are fairly locked-down so here are some of things you can do with the entity:

  • Create a workflow to trigger on the Traces entity
  • Perform a query using Advanced Find
  • In the SDK TraceLog is listed a “internal use only” but it appears you may use the SDK to perform standard CRUD operations.  NOTE: I have not tested this.


Privileges for the Traces entity are found on the Core Records tab:


It would appear that everyone can Create, Read, and Append Trace records, but only the System Administrator role can delete them.  Since these are standard security roles, you should be able to change these settings if you wish.


Traces are a very interesting addition to the Dynamics CRM platform and I need to get more information from Microsoft as to its intended use and if we as developers can actually create alerts that may be seen by the System Administrator.

That will be my next step, when I have time.

Dynamics CRM Environment Diagnostics.

When you install Dynamics CRM (on-premise) or import an existing organization database, it performs a series of environmental checks to verify that you will not run into issues during the actual installation or import.

If you double-click on one of the warnings or errors it will open up a help file and show you details about the message.  That file can be found here:

C:\Program Files\Microsoft Dynamics CRM\Tools\EnvironmentDiagnostics.chm

I found it quite interesting to read through the various details to see what is checked. That might help you to know some of those things before you actually begin the installation or import process.

21 Squared: CRM Administration–Early Bird offer ends Saturday

21 Squared: Dynamics CRM Administration will go on sale on Monday, February 9th.

I will be offering an early-bird discount to those individuals who sign-up early.

  • Normal Price: $149
  • Early-Bird Price: $99

Early-bird pricing will end on Saturday, February, 7th.

Simply complete the following form:

21 Squared: Dynamics CRM Administration Signup

You do not need to make a purchase at this time.  We will send you a notification on Monday which will include the discount code.

I have also updated the product page with additional lessons descriptions as well as a sample chapter and a table of contents.  You may read more about it here:


If you have any questions, please let me know.

Visual Studio: Where did my macros go


So I have this open-source project that I created a couple of years ago that helps the Dynamics CRM .NET developer upgrade their code from Dynamics CRM 4.0 to the programming model we now use with Dynamics CRM, which started with Dynamics CRM 2011.

I have only had 68 downloads of this project since it was uploaded, and I have always thought that was rather low.  This week, when I went to use it myself, I found out why:  Microsoft decided to remove the Macros capability in Visual Studio 2012.

Their official statement was that their usage data showed that less than 1% of developers used that feature.  I guess this is one of those few times in life that being in the 1% is just not good, huh?


It does, however, look like there may be some help circumventing this problem, in the form of Visual Studio extensions:

I have yet to try either of these, and I am sure there are others, so if anyone has any experience with running and/or editing macros created with Visual Studio 2010 or before, I’d like to know about it.

Vote It Up!

Here is the UserVoice topic was created to give feedback on bringing back macros as built-in functionality. You can add your vote , if you so wish:


CRMUG Dallas Chapter Meeting is February 11th.

Join us for the next Texas (Dallas) Chapter meeting on February 11th from 12:00 pm to 1:30 pm!

You may register here.

Attend this in-person learning and networking opportunity with Dynamics CRM peers in your area. Learn best practices, tips and tricks, and proven results from individual experiences to get the most out of your company’s investment.

Meeting Focus: CRM: If you build it, will they come?

Meeting Date & Time: Wednesday, February 11, 2015 from 12:00 pm – 1:30 pm CT (Please note that event registration defaults to ET. Please adjust your calendars accordingly.)


  • Welcome & Introductions
  • Chapter Business, CRMUG News & Events
  • Educational Session
  • Member Showcase
  • Networking/Roundtable Discussions


CRM systems have been around for 15 to 20 years now, but we still haven’t perfected the art of user adoption. Oftentimes systems are implemented with high expectations, only to fail to meet those expectations because users don’t seem to want to use the system. In this talk, Jake will discuss user adoption best practices and how you can increase the value of your CRM implementation by getting people to use it more.

About the speaker:

Jake Horn is Founder and Principal of Volitas a firm which focuses on complex Dynamics CRM implementations and systems architecture. He began his CRM adventure in 2000 when he joined the SalesLogix Professional Services Group and has focused his career on CRM systems implementation and systems architecture ever since.

CRM JavaScript Conversion Strategies Summary

Over on my main company site, CRM Accelerators, I have concluded a series on strategies related to converting your JavaScript from Dynamics CRM 4.0 to 2011+.


Here is the summary:

Webinar Recording

I also conducted a free webinar for MSDynamicsWorld recently and you may view that recording here:


Other Resources

Finally, I have a page dedicated to the topic of upgrading from Dynamics CRM 4.0 to 2011+:


It contains links to all of my articles and tools, plus links to articles written by others that I thought would be beneficial.

Sharing information and lessons learned with other developers

Sign up for our new KnowledgeBits service and get news, tips and tricks and more, delivered straight to your inbox.