Hi Everyone,

I am created a new information-delivery service on all of my web sites called KnowledgeBits.  These are tips and tricks that I have assembled over the years while working with various Dynamics CRM-related technologies or processes and are meant to give people a head-start with their activities.

Here is the current list of KnowledgeBit channels:

  • Administration
  • .NET Development (beginning and intermediate)
  • JavaScript (beginning and intermediate)
  • Plug-ins
  • Training Strategies

Each KnowledgeBit channel will be contain between 10 and 25 broadcasts which will be sent once per day.  I am still in the development process for several of the channels so the system will not be fully live for a couple of weeks-but you can still sign up up for delivery.

You can sign up here:


Thanks, Mitch

Hi Everyone,

If you are in the Dallas/Ft. Worth area and would like to join us next Wednesday (March 12th) for our monthly CRMUG meeting, we would love to have you.

Here is the registration page:


This month we are covering:

  • Convergence 2014 recap
  • Tips and Tricks
  • General discussions.

I would also like to invite everyone to bring one of the following:

  • A tip or trick that they have learned recently
  • An problem that is driving them crazy
  • A best practice to share with the group

User groups are all about sharing and that is what we wish to focus on in our monthly meetings.

Here is the meeting location:

La Cima Club
5215 North O'Connor Road
The Tower at Williams Square, Suite 2600
Irving TX 75039


Hi Everyone,

I have just released version 2.6 of my JavaScript conversion tool: Transformer! for Dynamics CRM.

You may read more about the update here.

Thanks, Mitch

SnapShot! 3.0 for Dynamics CRM is now available.  Here is a quick overview of what is included in this release:



SnapShot! was enhanced in the following ways:


Report Generation Speed

Internally SnapShot! was entirely re-architected to reduce the amount of time it took to extract data from Dynamics CRM. Additionally, the engines that generate the Microsoft Excel and Microsoft Word documents was replaced.  While the performance of each installation will vary, in my test environment this combination resulted in a speed improvement of greater than 50%.


Pack and Go

The ZIP archive technology I was using in SnapShot! produced .zip files that were not compatible with Windows 8 so it was replaced with something that was.


Business Object Report Generation

On the SnapShot! user interface, I separated the business objects from the other Dynamics CRM components. Business Objects include:

  • Business Units
  • Users
  • Queues
  • Teams
  • Security Roles

Since each of these can result in an extremely large Excel worksheet, I decided that the summary reports should each receive their own worksheet.


New Features

The following new features were added.

Audit Summary

This singular report allows you to see what entities and fields are being audited. Read more about this feature here.


JavaScript Function Reference

Produces a list of JavaScript functions found with in the JScript web resources of an organization. Read more about this feature here.


JavaScript Events

Converts the JavaScript events defined on a form into JavaScript calls using the built-in Xrm.Page methods. Read more about this feature here.


Automation Testing Matrix

This feature creates a comprehensive list of all of the workflows and plug-ins defined within the system which will allow your QA department (or the developers) to develop testing scenarios which will activate the various automation components to ensure they are functioning as designed.


For a complete list of all SnapShot! features, please visit our product page.


Want Something Special?

If you purchase SnapShot! before Friday, March 7th at 11:59pm MST, you will receive a 10% discount.

Use the code: Conv2014 when you check out.

Hi Everyone,

Next week I will be releasing an update to the ultimate Dynamics CRM documentation tool:
SnapShot! for Dynamics CRM.

This is such a major update that I am moving the version number to 3.0.  Here are some highlights:

  • The internal architecture has been completely changed and the report-generation engines replaced.
  • Report generation is at least 50% faster; more if you have a larger organization.
  • Enhanced support for Dynamics CRM 2013.
  • Additional analysis tools including a comprehensive auditing report.
  • Developer tools including an automation testing matrix to help your QA staff properly test your plug-ins and workflows.


Attending Convergence?

I will be there all week working in the Microsoft booth and appearing at the Ask the MVP sessions.  Track me down and ask me for the discount code for 10% off of the purchase price of SnapShot!.


Not Attending Convergence?

Email me at mitch at crmaccelerators dot net and ask for the same code.


Thanks for your support everyone.


A new version of my JavaScript conversion utility, Transformer! for Dynamics CRM, will be available soon.

The purpose of Transformer! is to convert Dynamics CRM JavaScript from the 4.0 object model to the 2011/2013 object model.  In general, and depending on how your code was written, it will convert between 80-90% of the JavaScript into the CRM 2011 object model.

Your mileage may very since everyone writes code in a slightly different manner and using different coding techniques.


And I could use your help.  If you have run across a piece JavaScript that you feel could be automatically converted, I’d like you to send that code snippet to me so I can take a look.

OR, if you have never heard of Transformer! download the trial version and give it a shot.


Next Steps:


1. Download the Transformer! Trial Version Here:



2. Paste the code snippet into the CRM 4.0 conversion editor window.


3. Click the Convert button on the ribbon.


4. Send me the pre and post-conversion JavaScript.

mitch at crmaccelerators dot net



Unfortunately, SOAP calls are beyond the scope of what Transformer! can handle so if your code is SOAP-related, Transformer! will not be of much help.

People who are successful in finding code that we can add to our list of conversions will be rewarded with a product discount or an Amazon gift card.


Thanks in advance for the help.

I verified a strange bug related to attachments and the deleting of the parent record chain.

  • If you delete an Email with an attachment it deletes the attachment.
  • If you delete a Contact with emails that have attachments the email is deleted but not the attachment.

For on-premise CRM administrators, you can use this script to find the orphans:

FROM Attachment t1
LEFT JOIN ActivityMimeAttachment t2 ON t2.AttachmentId = t1.AttachmentId
WHERE t2.AttachmentId IS NULL

My assumption is that you would need to clean these up manually.

If you are using CRM Online, then you will have a much different story and one for which I do not have an answer.

In a nutshell, you need to use the CRM SDK write a small application that will compare the IDs in the Attachment table to those in the ActivityMimeAttachment table and produce a list of Attachments that are not connected to ActivityMimeAttachments, then delete those records.

Occasionally, and for reasons that are unclear, the CRM Email Router file  Microsoft.Crm.Tools.EmailAgent.SystemState.xml gets corrupted which causes the Email Router service to stop (and your email along with it).

If you find your Email Router is not running and a restart does not work-it immediately starts and stops, check the Windows Application event log to see if you see any errors in the MSCRMEmail category.

They actual error can vary, but it contains a message stating some type of problem with the Microsoft.Crm.Tools.EmailAgent.SystemState.xml file.

Here is a sample Microsoft KB article outlining one such error:

Error event when you try to start the Microsoft Dynamics CRM E-mail Router Service in Microsoft Dynamics CRM: "The E-mail Router service could not run the service main background thread"

Regardless of the error, the solution is to delete the Microsoft.Crm.Tools.EmailAgent.SystemState.xml file then restart the Email Router service.

Hi Folks,

The registration deadline for next week’s workshop: JavaScript Development in Dynamics CRM

ends on January 23rd at 12:00pm CST.

For more information and to register, visit:


In the first article we discussed using SQL to determine the size of the Attachments in the database.

My friend Aron Fischman shared with me similar queries using FetchXml:


<!--Email Attachment File Size Analysis-->
<fetch distinct='false' mapping='logical' aggregate='true'> 
  <entity name='activitymimeattachment'> 
    <attribute name='activitymimeattachmentid' alias='EmailAttachmentCount' aggregate='count'/> 
    <attribute name='filesize' alias='FileSizeSum' aggregate='sum'/> 
    <attribute name='filesize' alias='FileSizeAvg' aggregate='avg'/>
    <attribute name='filesize' alias='FileSizeMax' aggregate='max'/> 
    <attribute name='filesize' alias='FileSizeMin' aggregate='min'/> 

<!--Annotation File Size Analysis-->
<fetch distinct='false' mapping='logical' aggregate='true'> 
  <entity name='annotation'> 
    <attribute name='annotationid' alias='AnnotationCount' aggregate='count'/> 
    <attribute name='filesize' alias='FileSizeSum_bytes' aggregate='sum'/> 
    <attribute name='filesize' alias='FileSizeAvg_bytes' aggregate='avg'/>
    <attribute name='filesize' alias='FileSizeMax_bytes' aggregate='max'/> 
    <attribute name='filesize' alias='FileSizeMin_bytes' aggregate='min'/> 

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