Microsoft Dynamics CRM Resources

I put this page together to keep track of useful links related to Microsoft Dynamics CRM.  I did it as much for my own use as anything but if anyone else finds it useful, all the better.

Workflow
Microsoft Dynamics CRM: Workflow Authoring Best Practices
Gonzalo Ruiz, Business IT Professionals, Inc., Microsoft, January 15, 2010,
I love this post. Gonzalo explains five important best practices for building workflows.

Microsoft Dynamics CRM – Advanced Workflows
Ayaz Ahmad, MVP – Microsoft Dynamics CRM, Microsoft Dynamics CRM Team Blog, January 05, 2010

Workflow: Wait Command CRM 4.0
Dynamics Forums > CRM, February 01, 2010
Discussion around how to use the Wait and Timeout Activities in CRM Workflow

Workflow E-mail Utilities
Jim Steger, Sonoma Partners, December 15, 2008

E-Mail Router
Configuring CRM 4.0 R8 On-Premise E-Mail Router with Exchange Online / BPOS
Steve Noe, B01/27/2010

Development and Customization

ISV Utilities for Comparing Customizations and Transferring Configuration Data
Inna Agranov, Microsoft Corporation, February 2009

Inline Grids for Sales Orders in Microsoft Dynamics CRM
Ben Vollmer, November 14, 2008

Operations
CRM Client AutoUpdate
Eric Newell, May 08, 2008

Hosting
Change default Organization in CRM 4.0
Just Cruising Today Blog, January 15, 2009

Data Migration
Microsoft CRM 4.0 Data Migration Manager versus Scribe
Dale Simmons, Customer Effective Blog, March 13, 2008

Data migration overview
Microsoft Dynamics CRM Resource Center

Tool to Update MSCRM 4.0 data inline and Export to CSV for Re-import
Microsoft, CodePlex

Microsoft Dynamics CRM 4.0 Bulk Update and Export tool
CodePlex, OrbitOne Internet Solutions

Advanced Data Migration Map Editor for MSCRM 4.0 Data Migration
Microsoft, CodePlex, Mar 17, 2008

Integrating CRM using SQL Integration Services (SSIS)
CRM MVP Darren Liu, Crowe company, May 07, 2008

SQL Server Integration Services And Microsoft Dynamic CRM
Microsoft, CodePlex, Sep 15, 2008

MSCRM 4.0 Bulk Data Export Tool
Microsoft, CodePlex, Apr 18, 2008

CRM Data Import Tool
Veeran Bansal, Adithya Vishwanath, Arun Kumar, Microsoft Dynamics CRM Team Blog, January 25, 2008

Advanced Data Migration Map Editor for CRM 4.0 – Redux
Gaurav Agrawal, May 02, 2008

Advertisements

ISV Hosting Toolkit for Microsoft Dynamics CRM – Part 2

The Free Trial

A potential customer found your web site somehow.  Now is your chance so you better catch their attention before they leave.  So, put a link to a free trial or demo of your software where they’ll see it.

Get CourseMax or Try it Today!

Get CourseMax or Try it Today!

On the CourseMax site, we show a link prominently everywhere someone might think about trying the software.  The experts say a graphical link on the top-right of the page works best.  The first option we offer them is a free trial but, if they are ready to buy it now, we give them that option too.

Once they click on one of these links, they are taken to a form where they fill out the minimum info we need to set them up with a free trial:

Buy CourseMax CRM or Get a Free 30-Day Trial

Buy CourseMax CRM or Get a Free 30-Day Trial

First Name:
Last Name:
Email:
Company:
CRM Organization Name:

We ask them for other pieces of information (phone, web site, etc.) but the above fields are the required fields on the form. Once this prospect submits the web form the application checks to see if the Organization Name is available (the CRM Org name must be unique), then creates an Account and Contact record in our CRM system and links the Contact as the Primary Contact for the account.

The Provisioning Workflow

There are some custom fields we added to the account record to deal with provisioning and billing.  The workflow triggers on an update of a field called “CreateOrganization”.  The Account record is actually created and saved first after the Primary Contact is created and linked then this field is updated and the record is saved again.

Each organization takes about 10 minutes to provision in the production environment.  The provisioning steps include:

  • Check to see if another Org is Being Provisioned (<1 sec)
  • Create CRM Organization (~4 minutes)
  • Import & Publish Customizations (~4 minutes)
  • Load & Register Plug-Ins (~1 minute)
  • Import & Publish Security Roles (~30 sec)
  • Create CRM User (~5 sec)
  • Create CRM Queue, POP Account, & Configure Email Router (~ 2 sec)
  • Update Account Provisioning Status to Completed (< 1 sec)
  • Send Prospect an Email Confirmation (< 1 sec)
  • Create a Bulk Delete Job in CRM Org (~14 sec)
  • Import Configuration Entity Records (~3 sec)

I left out a bunch of small steps that are specific to CourseMax but this is the bulk of the workflow.  As you can see, the majority of the work and time is in creating the CRM organization and loading the customizations.  Both of these tasks run for 4 minutes. Loading and registering plug-in assemblies takes another minute.

Lessons Learned

One lesson we learned is that the deployment service is prone to timing out.  You can try adjusting the timout periods but that can lead to more problems.  If more than one organization was provisioned at a one time, the deployment service inevitably timed out.  We had to implement a sort of a FIFO queue to make sure one provisioning task was sent to the deployment service at a time.

We also had to execute several of these tasks locally on the server where the deployment or CRM web services are running.  That meant that we had to create our own web services on each of the servers which then ran a local process to call the CRM web services. So our workflow actually makes calls to our custom provisioning web services rather than calling the deployment service and CRM web services directly.

These steps eliminated the timeout problems we experienced initially and optimized the process.  If CourseMax becomes so popular that dozens of people are requesting free trials every hour and the queue length becomes an issue, we’ll have to look at intelligently scaling out across multiple deployment servers.  But that will be a good problem to have.

Next up…more details on the provisioning and customer conversion workflows.

Add to FacebookAdd to DiggAdd to Del.icio.usAdd to StumbleuponAdd to RedditAdd to BlinklistAdd to Ma.gnoliaAdd to TechnoratiAdd to FurlAdd to Newsvine

Supporting the Outlook Client for Hosted Microsoft CRM 4.0?

This is just a quick post that is more of a question than a post.  I’ve talked to other CRM ISVs and CRM Hosters and there are differing opinions on how or whether to support the Outlook client.  The Outlook interface is a big selling point and makes the CRM experience much better in my opinion.  However, if you have ever been involved in technical support for Microsoft CRM, you know that the Outlook client is far and away the source of the most support issues.

Today, we applied Microsoft Dynamics CRM 4.0 Update Rollup 2 on our own CRM server.  I use the “Laptop Client” which has synchronization.  Just for grins, I tried to use the Outlook client after we updated the server but before I applied the update to the client.  As suspected, I got errors trying to go back online.

It is standard practice to have all clients go online prior to applying an Update Rollup.  That’s probably pretty workable at a small or medium business.  A few salespeople will forget but that’s ok since you can go around the office and fix up a few problems.  Deploying the update to all of your users is another task you’ll have to tackle.  In an on-premise implementation you can use group policy or some other method to push out the update.  But what about ISVs and Hosters?

If you are a hoster and you support the use of the Outlook client you have to deal with pushing out an update to all of your customers every two months when a new Update Rollup is released.  So, if you host CRM 4.0, here are my questions:

Do you support the Desktop Client, the Laptop Client, or both?

What do you use to push updates to your clients?

How do you handle the timing up of pushing out updates (update all servers then immediately push to clients)?

How do you handle notifying customers of an update?

How difficult has it been to support the Outlook client?

-Dan

ISV Hosting Toolkit for Microsoft Dynamics CRM – Part 1

The Proverbial Toolkit

The Proverbial Toolkit

In Part 1 of this series of posts I’ll summarize the parts of a toolkit an ISV needs for hosting Microsoft Dynamics CRM.  In the spirit of keeping my posts much shorter (based on good feedback), I’m going to break this topic down into bite-sized pieces.  I’ll follow-up with additional posts explaining in more detail the various pieces of the toolkit we built and some of the challenges we faced.

I mentioned in one of my first posts back in January, A Primer on Multitenancy for Microsoft Dynamics CRM, that at CourseMax we built an ordering, billing, and provisioning solution for our SaaS solution.  We host CourseMax ourselves at a colocation facility.  The toolkit is built almost entirely on Microsoft Dynamics CRM 4.0.  In other words, we use CRM to provision and manage CRM.  That’s an intersting paradigm, isn’t it.  I always found it fascinating to think about early programmers writing text editors (vi, ed, etc.  No, don’t even say “edlin”) that they would use to edit source code to build their text editor, to build their text editor, to build their…  Is that recursion?

Control Panels, Self-Service, and Free Trials

There are many vendors out there that offer software to hosters called “Control Panels“.  These are generic and sometimes extensible.  However, a control-panel is only part of the solution.  As an ISV, you want to offer customers a simple sign-up process that starts with a free-trial and is completely self-service.  That doesn’t mean you shouldn’t talk to them, but if they don’t ever want to talk to you, they don’t have to.  If they have to call you to order your software, many potential customers will move on to the next option, your competitor.

The Tools in the Toolbox

Here are the parts of an ISV Hosting Toolkit:

  • Customer Sign-Up Forms
    • Free Trial, Buy Now
  • Tenant Provisioning Workflow
    • Automatically Provision CRM Organization, Customizations, etc.
  • Conversion Workflow
    • Can We Help, Free-Trial Expiring, …
  • Free-Trial Conversion Form
    • Payment Method/Term, Process Payment, etc.
  • Automatic Billing Workflow
    • Send Monthly/Semi-Annual Invoice
    • Send Invoice Reminders
    • Update Payment Status when paid
    • Disable CRM Organization (Payment late)
    • Redirect CRM URL to Payment Page (When grace period begins)
    • Backup CRM Database
    • Delete CRM Database (When grace period expires)
  • Tenant Self-Service Seat Management
    • Manage Licenses (Increase/Decrease Number of Seats)
    • My Account
      • Account History
      • View Invoices
      • Pay Invoice
    • Manage CRM Users
      • Apply Licenses to Users
      • Add Users
      • Disable Users
  • Operational Control Panel
    • Update Customizations on Multiple CRM Organizations
    • Deploy Reports…
    • Register Plug-Ins
    • Deploy Data-Maps

Making it Easy

The key is making it easy.  By that, I mean make it easy for you and easy for your customers.  That’s why computers were invented, wasn’t it.  Having a click/try/buy option on your website is a big advantage for you over your competitors that don’t have this option.  Having automatic billing means that you don’t have to hassle as much with billing and collections.  I promised to keep it short so that’s all for now…

Add to FacebookAdd to DiggAdd to Del.icio.usAdd to StumbleuponAdd to RedditAdd to BlinklistAdd to Ma.gnoliaAdd to TechnoratiAdd to FurlAdd to Newsvine

Microsoft Released an “Update to the Update” of Rollup 2 for Microsoft Dynamics CRM 4.0

Hosting Environment for CRM 4.0

CRM 4.0 Rack in Colocation Data Center

Microsoft released a new version of Update Rollup 2 for Microsoft Dynamics CRM 4.0 on February 8th. The new version fixes some problems with UR2.   The issues that were fixed were fairly minor.  Unless you were having troubles with a localized version, there weren’t any other major problems that a quick edit of web.config wouldn’t solve.

If the CRM team sticks to the 2 month update cycle, we should see Update Rollup 3 in about month. I’m not really used to this short cycle of updates yet. However, I do like the idea of doing a rollup rather than individual hotfixes. My basic rule of thumb on installing CRM updates is that, if we don’t need it to fix a problem, wait for 3-4 weeks and let everyone else regression-test it (thanks everyone and please keep up the good work). If we are experiencing problems then we’ll test it first in our sandbox and make sure nothing breaks.

We’ll be installing the update to the update in the CourseMax data center this weekend. It’s a pretty involved process.  Here is the process we’ll go through:

  • Apply the update in the sandbox
    • Since our CRM server roles are split up, we’ll have to install it four times)
  • Run through the test plan on all four servers
  • Apply the update on the production servers
    • Six different servers this time
  • Run through the test plan again on Production

The test plan involves testing all of the various screens, triggering actions for plug-ins, testing workflows, testing e-mails and queues, and testing all of the external modules that hit the CRM web service, the Deployment Service, and the Discovery Service. Now you can understand why we wait until everyone else finds the problems first. We could test it in a single-role environment but that wouldn’t really do much good because we’d still need to run through the test plan twice in the hosting environment.  This is also why I’m not really comfortable yet with the 2 month update cycle.  I like to keep current with updates but it is a lot of work.  Keep in mind that this is in addition to the testing and updating we do for our own software. Our software consists of all of the plugins, workflows, scripts, sitemap customizations, etc. that make CourseMax CRM handle all the functions you need if you are a Training Organization.  If we would have installed the first version of Update Rollup 2 we would have had to go through this whole process twice within a month.

I was thinking about synchronizing the updates to the CourseMax software with Microsoft’s cycle.  The problem with doing that is that, if something does go wrong, it will be a nightmare because we won’t know whether it is our software causing the problem, the Microsoft update, or a combination of the two. By the way…In case you were wondering, our sandbox is a QA environment that mirrors our production environment. While it isn’t identical (4 servers instead of 6) to the production environment, it has all of the same server roles and exhibits the same network traffic. Our whole environment is virtualized using VMWare so it was pretty easy to copy it over. We just copied all of the virtual drives brought them up without network, then configured them on a separate VLAN. Since VMWare allows VLAN tagging, it is a completely soft configuration. The sandbox environment actually shares hardware with the production environment. Man I love virtualization…virtual servers, virtual LANs, virtualized storage (SAN). Everything is so much easier and efficient these days.

Here are the links to the new release of Update Rollup 2:
Informational post on the CRM Team Blog
Download Link

The new update fixes 2 problems found with the original update that was released on January 15th. The most common problem I was hearing about is that you could no longer publish workflows after the update if you had a custom web.config file. The fix was to add the following line to web.config in the authorized types section:

<authorizedType Assembly=”mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″ Namespace=”System.Globalization” TypeName=”CultureInfo” Authorized=”True”/>

From the CRM Team Blog:

Update Rollup 2 for Microsoft Dynamics CRM 4.0
On 2/8/2008, the CRM Sustained Engineering team released a new version of the Update Rollup 2 packages. The new version of Update Rollup 2 addresses some of the issues that have been noted in the comments for this blog entry.

Including:

Strings in the localized product showing up as garbage or in English.

Customized web.config causing issues after Update Rollup 2 is installed

Customers do not need to uninstall the original Update Rollup 2 packages. The new packages will install over the top. If a customer has not been affected by the issues in the original Update Rollup 2 package they do not need to update to the new version. Customers can install Client, Server, Router Update Rollup 2 in any order…

Add to FacebookAdd to DiggAdd to Del.icio.usAdd to StumbleuponAdd to RedditAdd to BlinklistAdd to Ma.gnoliaAdd to TechnoratiAdd to FurlAdd to Newsvine