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:

http://www.infinite-x.net/2014/07/01/extending-dynamics-crm-2013-workshop

http://www.infinite-x.net/2014/07/08/why-you-should-be-attending-the-extending-dynamics-crm-workshop

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.

Mitch

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.

per Feridun Kadir:  Update Rollup 17 for Dynamics CRM 2011 has been released.

Here is the download link:

http://www.microsoft.com/en-ph/download/details.aspx?id=42672

and the associated KB Article:

http://support.microsoft.com/kb/2915687

I had one of my CRM Online organizations transition to the O365 platform a couple of weekends ago.  Not exactly a smooth process.  One of the issues I ran into was my email router was not running due to configuration changes.  Here is a list of things I worked through.  Hopefully this will help some other folks.

 

CRM Online URL

The URL that you utilize for CRM Online with Office 365 is different than that of CRM Online with Windows Live authentication.  The new format looks like this:

https://disco.crm.dynamics.com/[organization name]

[organization name] is the name of your CRM Online organization as seen on the Developer Resources page (Settings, Customizations, Developer Resources).

 

Unable to Publish Configuration

Is everyone familiar with the Chicken or the Egg conundrum?  Well I ran into that here.  I could not publish the configuration from the Email Router Configuration application because the Email Router Service was not running.

 

Email Router Service Will Not Start

The email router would not start because it could not find the Microsoft.Crm.Tools.EmailAgent.xml file, which is created by publishing the configuration.

 

The only way I successfully got around these issues was to perform a Repair on the CRM Email Router installation and that returned the system to normal.  The email router start successfully and I was able to publish my new configuration.

 

Other Issues

I did not, but you may also run into this issue:

The Email Router and Microsoft.Crm.Tools.EmailAgent.SystemState.xml file

 

Good luck. 

Mitch

Have you used the Dynamics CRM PowerShell commandlets to automate any of your deployment tasks? 

If not, then you should.  There is good stuff in there.

In the CRM SDK sample code folder, you will find a folder called ps, which is where the PowerShell samples are located.

Many of the Deployment operations have an asynchronous component so that you can “fire and forget” your operation, should you wish.

However, there are built-in facilities for monitoring the asynchronous process that was created:

$opstatus = Get-CrmOperationStatus -OperationId $opid
while($opstatus.State -eq "Processing")
    {
        Write-Host [(Get-Date)] Processing…
        Start-Sleep -s 30
        $opstatus = Get-CrmOperationStatus -OperationId $opid
    }

The while loop will continue to execute until the status changes away from Processing.

BUT, and there is always a but, there is another status that you might encounter that needs to be addressed:

while($opstatus.State -eq "Processing" -or $opstatus.State -eq "Queued")

The Queued status will appear if the Deployment service has other processes that it is attempting to complete.  Modifying the while loop will allow your code to wait for either.

Hi Everyone,

Version 3.2 of SnapShot! has been released.

I made minor changes to this release, mainly around the Status and Status reason fields. They are now included on the Field report and the OptionSet report.

Visit the SnapShot! product page for more information and to download the sample report.

As always, thanks for your support and let me know if you have any suggestions for additional reports.

Thanks, Mitch

Notes to myself on troubleshooting issues with SSRS.

Error: Report render failure. Error: An error has occurred during report processing. (rsProcessingAborted)

This is probably a security issue.

 

Useful article:

Microsoft Dynamics CRM 2011: Reports created by report wizard may fail when executing

 

List SPNs associated with a server:

setspn –L <servername>

 

SQL Reporting Services Log File Locations:

%programfiles%\Microsoft SQL Server\<SQL Server Instance>\Reporting Services\LogFiles

In most cases, <SQL Server Instance> will be something like: MSRS10_50.MSSQLSERVER

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

 

Enhancements

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.

Mitch

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:

SELECT t1.*
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.

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