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

Advertisements

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