Hi Everyone,

To say the response to next week’s webinar was overwhelming would be putting it lightly:  I have attendees from 14 countries, spread around the globe.

Given such response, I have decided to add two new sessions to the webinar schedule for next week. This should:

  1. Help with time zone issues and to keep people from having to wake up in the middle of the night to attend.
  2. Give us a more intimate environment where everyone feels comfortable participating.

But wait, there’s more: I’ve also lengthened the webinar to 1.5 hours so that we have time for proper Q&A.

Here are the new sessions:

Session 1: UTC+1

Tue, Aug 5, 2014 8:00 AM – 9:30 AM CDT



Session 2: Original Session and Time

Tue, Aug 5, 2014 1:00 PM – 2:30 PM CDT



Session 3: UTC+10

Tue, Aug 5, 2014 7:00 PM – 8:30 PM CDT

(this translates to 10:00am, Wednesday, August 6th, in Sydney, AU)



If you wish to remain in the original session, then take no action. Should you wish to attend one of the new sessions, just click on the appropriate registration link above. Unfortunately, I have no way of automatically moving you from one webinar to another so you will need to repeat the sign–up process. I apologize for this inconvenience.

I will perform a data–cleanse over the weekend and remove anyone from the original session who has signed up for one of the new sessions to hopefully keep you from being bombarded by incorrect announcement emails.

Again, thank you for your interest and we’ll be talking next week!


Hi Everyone,

On Tuesday, August 5th, I’ll be holding a free webinar to discuss the requirements for a person to make the move from being a Dynamics CRM user, administrator, or developer, into becoming an architect of Dynamics CRM business solutions.

Over the past year or so, I have been slowly assembling a class that would teach people to think and act like solution architects.  This will be the first public visibility into the process.

I am using this free preview to gather feedback and opinions about the direction I am taking, while I still have time to make changes to the processes and curriculum.


What to expect

In this webinar we will be discussing the basic technical areas of expertise and skillsets that must be developed on your path to becoming an architect.  In part, if not in full.

We will also be reviewing several CRM-related design scenarios which will highlight the types of things you need to consider when developing solutions for Dynamics CRM.

At minimum, I would expect you to come out of the webinar with at least a basic understanding of the types of questions that must be asked when designing Dynamics CRM-related solutions.


What I can use your help with

Feedback during the webinar will, of course, be accepted.  In addition, I will send out a survey afterwards to help gather additional data points.


Who should attend?

Anyone who would like to further their knowledge related to solving business problems using Microsoft Dynamics CRM.



You must have working knowledge of Microsoft Dynamics CRM 4.0, 2011, or 2013. This is neither an Introduction to Microsoft Dynamics CRM or development class, but you do need to know the capabilities of the product.


Please let me know if you have any questions or comments.

Thanks, Mitch


Space is limited.
Reserve your Webinar seat now at:


Becoming an Dynamics CRM Technical Architect


Tuesday, August 5, 2014


1:00 PM – 2:00 PM CDT

After registering you will receive a confirmation email containing information about joining the Webinar.

System Requirements
PC-based attendees
Required: Windows® 8, 7, Vista, XP or 2003 Server

Mac®-based attendees
Required: Mac OS® X 10.6 or newer

Mobile attendees
Required: iPhone®, iPad®, Android™ phone or Android tablet

Hi Everyone,

I just wanted to remind you that registration for the Extending Microsoft Dynamics CRM 2013 workshop ends on Thursday, July 17th at 10:00am CDT.

For more information about this workshop, please review the following:



When you’re ready to register, just click this button:

Eventbrite - Extending Dynamics CRM 2013


Thanks and I’ll be talking to some of you next week.


A new version of SnapShot! for Dynamics CRM is available so if you are needing to produce the ultimate set of documentation for your Dynamics CRM organization, you should check it out.

Here are the changes found in v3.3:

New Reports:

  • Personal Settings have been added to the Main Report. This report contains the relevant settings from a user’s personal options configuration.
  • User Email Settings have been added to the Main Report.  This report contains information specific to a user and the various email–related settings they may have. This report was created to help me troubleshoot user’s email configuration issues at one of my customers.



  • The new security privileges added to the Dynamics CRM 2013 Spring Wave (SO1) have been added to the security role reports.


Bug Fixes:

  • An issue was corrected related to the user counts per security role. Depending on how you generated the SnapShot! Reports, these counts could sometimes be reported as zeroes.


For More Information:

Visit the SnapShot! product page:


You can download a sample report here:


I thought I’d put together a few reasons why you, the Dynamics CRM developer, should be attending my Extending Dynamics CRM 2013 workshop on July 21st.


Reason #1: Hands-on Instruction

Can you type?  Good; because you’ll be doing a lot of exercises.

While I like to hear the sound of my own voice, nothing beats practical practice and all of my courses have lots and lots of labs.


Reason #2: The Goodies

My main job is Dynamics CRM architecture and development. I have lots of tools that help me do my job and I share some of those with my development students.

Mostly they are code samples and frameworks to help you become more productive as a Dynamics CRM developer.


Reason #3: What Other People Have To Say

Don’t take my word for it, here are what some former students had to say about the workshops they attended:

Mitch’s Plug-in Development workshop helped me get out of the gate and a good way down the path of C# development for Microsoft Dynamics CRM – including both Plug-ins and Workflow Assemblies.

Mitch is an excellent instructor who responds to all questions and helps people along at their own pace. 

I highly recommend this workshop for anyone who is looking to get into the Microsoft CRM development game. It will accelerate your process and save you more than enough time to pay for itself.

Aron F.

Your class was an eye opening experience.  In addition to learning about Plug-In Development this class exposed me to so many other aspects of Microsoft Dynamics CRM that I was not aware of.

Marlon R. Joseph

Application Analyst III

Houston Baptist University

I found Mitch Milam’s workshop to be a great way to jump-start my plug-in development.  Besides presenting class material in such a way that it was easy to comprehend, Mitch also provided Visual Studio templates.  These templates proved to be extremely useful because they take care of the necessary plumbing when writing plug-ins, speeding up the development time.  Additionally, the labs we worked on in class covered real-life scenarios directly applicable to my day-to-day work.  In fact soon after the workshop, I solved a business problem by building a plug-in that was based on one of the labs we worked on in class.

Natalya Pinsker

Baltimore, MD,


Reason #4: There Are Only 15 Student Openings

As I mentioned, this is all hands-on so I have to put a limit to the number of students that can be part of the class.  15 people is at the upper limit of my typical classroom size, but since Microsoft doesn’t offer this course as Instructor-led, I want to make sure I can get as many people trained as possible.


Reason #5: A Bonus. Maybe.

I have a Dynamics CRM Architecture course under development and if I get enough students in the Extending course, I might just give you a free preview the week of July 28th.


So, what are you waiting for?

Sign up today. Review the original announcement for more information and a link to the registration page:


And drop me a line if you have any questions:

mitch at xrmcoaches dot com

In a multi-server environment (Development, QA/Staging/Testing, Production), you occasionally run into an issue where you need to have the latest production data in the lower environments.

Here is a set of steps that will help you move the Production CRM database into Development or QA.  PowerShell is your friend here so much of this process can be automated.

Unfortunately, I don’t have any code to share because this was a customer project. But, this is not that hard to reproduce yourself.

We will review the task of moving to the QA environment, but the steps will apply to any other environment as well.


Step 1: QA Environment – SQL Server

The first step is to save any data that is specific to that environment, including:

  • SharePoint configuration
  • Custom configuration data, such as is used by plugins


Step 2: Production Environment

Make or get the latest full backup of the production CRM database.


Step 3: QA Environment – CRM Server

Turn off the following services:

  • Email Router service.
  • Asynchronous Processing Services.
  • Sandbox service.
  • Unzip service

Use Get-Service and Stop-service

Using the CRM Deployment Manager:

  • Disable the QA organization.
  • Delete the QA organization.

Use Disable-CrmOrganization and Remove-CrmOrganization


Step 4: QA Environment – SQL Server

From the SQL Management Studio, perform the following tasks:

  1. Detach QA_MSCRM database.
  2. Move QA_MSCRM.MDF and QA_MSCRM.LDF to a separate file system as backup. This is optional, but I’m a little on the paranoid side.
  3. Delete the QA_MSCRM database.
  4. Restore the Production database backup to QA_MSCRM.

This can be automated using PowerShell using at least two techniques: SMO commands or raw SQL commands, with the latter being the easiest.


Step 5: QA Environment – CRM Server

Using the CRM Deployment Manager, import the QA database.

From the Operating System, perform these tasks:

  1. Run IISRESET.
  2. Turn on Email Router service.
  3. Turn on Sandbox service.
  4. Turn on Unzip service
  5. Turn on Asynchronous Processing Services.

Use Get-Service and Start-service


Step 6: QA Environment – SQL Server

Perform any PHI cleanup to remove or obfuscate sensitive information including:

  • Phone/Fax numbers
  • Email addresses
  • Contact first and last names
  • Address information

I would recommend the SSIS Integration Toolkit for Microsoft Dynamics CRM from KingswaySoft.

You may also wish to review the ALM Toolkit from AdxStudio for additional application life cycle management capabilities.

So that is about it. As you can see, it’s not rocket science, just a bunch of steps.

By the way, one assumption is that the servers are all in the same domain. If your environments are in different domains, you’ll have a bit more work to handle mapping users from one domain to the other, but that is something that is totally doable.

Hi Everyone,

Since I think a lot of people never get around to searching the archives, I thought I’d mention a project I started a while ago to aid the .NET developer in moving your code to the Dynamics CRM 201x version.

The project may be found here:


Project Description
This project is designed to assist the .NET developer who is migrating their C# code from the CRM 4.0 object model to the CRM 2011 object model.

The initial purpose of the project is to generate Visual Studio macros which perform search and replace operations to which change the code from one syntax to the other.

It is planned that in a later stage of the project, we will read and covert source files directly.


This project contains all of the knowledge I accumulated during a couple of CRM 4.0 migrations I performed.

If you have some time, take a look.  If you have some knowledge to share and wish to make additions, then please let me know.

Thanks, Mitch

If you are looking to get started with Dynamics CRM 2013 development, July is the month.  I am proud to announce the arrival of my latest Dynamics CRM developer workshop: Extending Dynamics CRM 2013.



Monday, July 21st through Friday, July 25th.

Class will run between 4 and 6 hours per day, depending on the content.



This is a Internet-based workshop with each student having their own virtual environment for the duration of the course.



Day 1: Introduction to Dynamics CRM Development

The first day we will cover the basics of Dynamics CRM development including:

  • Dynamics CRM Architecture
  • Extensibility points
  • Working with the CRM SDK including:
    • Creating, retrieving, Deleting and Updating data
    • Executing requests
    • Generating early-bound classes using the CrmSvcUtil application


Day 2: CRM Query Strategies

On day two we will be working with the various data retrieval technologies built into the Dynamics CRM SDK.

  • QueryExpression
  • QueryByAttribute
  • FetchXml

Day 3: Plugins and Custom Workflow Activities

Day three will be filled by developing plugins and custom workflow activities.


Day 4: JavaScript

Day four will shift to the client where we will work with:

  • The Dynamics CRM 2013 JavaScript object model
  • The XrmSvcToolkit

Day 5: User Experience Customizations

The final day will be focused on:

  • Editing the SiteMap
  • Editing the Ribbon
  • Working with Solutions           

How Much:

Since this is a new class, the introductory price is $1,695.

Discounts are available for 2 or more students from the same organization.


Note: Due to the hands-on nature of this workshop, the class is limited to 15 students.


Eventbrite - Extending Dynamics CRM 2013

Available via NuGet.

1.1.1 is a bug-fix release. There are few features in Xamarin.Forms 1.1.1 over 1.1.0. As always we welcome all and any bug reports both here or in their own thread.


  • SearchBar.Text is now BindingMode.TwoWay by default
  • iOS VisualElementRenderer can now be subclassed by users
  • Small Layout performance boost

Bug Fixes

  • Android cells text now lays out appropriately, centering when no detail is set.
  • Android EntryCell no longer vertically squished
  • On Android MasterDetailPage.Master now correctly sets icon for back arrow
  • ActionBar now hides correctly on KitKat
  • Images with a UriImageSource inside of a ListView or TableView should no longer crash
  • Performance tweaks for android ViewCells introduced in 1.0.1 and accidentally disabled in 1.1.0 are now re-enabled.
  • CarouselPage's using templated item sources should no longer crash when resetting source
  • AndroidActivity.SetPage now correctly supports being called multiple times to change page contents
  • Fix crash on windows phone with TwoWay binding to ListView.SelectedItem
  • iOS toolbar items now use retina icons properly (no more fuzzy)
  • GroupHeaderTemplates no longer cause binding error spew to console when used
  • Fix binding warning spew when creating listviews from xaml
  • ToolbarItems now inherit their parent pages binding context
  • Setting ToolbarItem.Name in XAML will no longer result in build errors

I still occasionally run into hidden greatness inside of the Dynamics CRM SDK.  Last week I found a great addition to the QueryExpression and QueryByAttribute classes: The TopCount property.

This property was introduced into Dynamics CRM 2011 around the UR10-UR11 timeframe, so if you are on UR11, or later, or have Dynamics CRM 2013, you have this capability.

TopCount works exactly like the TOP operator from a SQL SELECT statement:

SELECT TOP 50 * FROM FilteredAccount


Here is how you use it:

Note: I have a small function called IsTopCountSupportedByServer that checks the version number against UR11 to make sure we can use TopCount.  If not, we drop back to the standard PagingInfo class.

var maxBatchSize = 50;

QueryExpression queryExpression = new QueryExpression(Account.EntityLogicalName);

if (IsTopCountSupportedByServer())
    queryExpression.TopCount = new int?(maxBatchSize);
    queryExpression.PageInfo.Count = maxBatchSize;
    queryExpression.PageInfo.PageNumber = 1;

This is just a really cool addition to our toolboxes and I am shocked I didn’t see this before.

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