CRM 2011 – Microsoft will start offering license mobility from July

I read this article from Microsoft which you can find here and it’s about license mobility that Microsoft will begin to offer from July.  My first comment is this information is quite confusing but the amoungst the many words seems to be the message that Microsoft are going to help current customers move from on premise to cloud computing and help convert the on premise licences to cloud licences.

there is also this article about

Microsoft’s Enrollment for Application Platform Program May Lower License Costs

I’m not really sure if the article below is helpful but I hope it might help you if you are thinking about moving from on premise to in the cloud

Microsoft Shares Licensing Updates at Microsoft Hosting Summit

BELLEVUE, Wash. — March 30, 2011 — Earlier today, Microsoft shared details regarding licensing enhancements to offer customers the flexibility to deploy application servers on-premises or hosted by Service Providers in the Cloud. These enhancements are referred to as license mobility. Microsoft is also announcing a reduction to the pricing and management overhead for Windows Server in the Microsoft Services Provider Licensing Agreement (SPLA) program by retiring all Outsourcing SKUs, eliminating use restrictions for Non-Outsourcing SKUs and adding the Core Infrastructure Suite to the SPLA program. These changes come into effect on July 1, 2011.

As customers evaluate and move their workloads and server applications to the cloud, they are looking to leverage existing licensing investments. This includes taking advantage of cost savings that Service Providers can deliver through shared infrastructure to achieve economies of scale and operational efficiency. To help address this, Microsoft will start offering license mobility in July to extend customers’ current Volume License investments under Software Assurance (SA) to the cloud. These terms also apply to future Volume License investments.

License mobility will cover Microsoft SQL Server, Microsoft Exchange Server, Microsoft SharePoint Server, Microsoft Lync Server, Microsoft System Center servers, and Microsoft Dynamics CRM. Licenses for application servers that are covered under software assurance can be run in service providers’ datacenters on shared hardware for that customer’s dedicated use.

More details shared during the Hosting Summit included licensing enhancements for Service Providers. These include the introduction of a new and more affordable Core Infrastructure Suite to the SPLA program. At the same time, Microsoft is retiring the Outsourcing SKUs for Windows Server effective July 1, 2011. At the point of retirement, workload restrictions for “non-outsourcing” SKU will be removed thereby reducing the pricing and management overhead for Windows Server in SPLA and eliminating use restrictions for Non-Outsourcing SKUs.

Also notable, for customers who wish to use Software as a Service (SaaS) from their Service Providers, Microsoft will expand the Subscriber Access Licenses (SAL) for SA SKUs to cover Enterprise SAL licenses for Exchange Server, Lync Server and SharePoint Server.

Additional details about these developments during the Hosting Summit are shared in the Q&A below.

What enhancements is Microsoft making to license mobility?
Adoption of Infrastructure as a Service (IaaS) continues to increase, compelling customers to move workloads and applications to the cloud. We understand that while customers are interested in moving to the cloud they are looking to leverage existing licensing investments.

To help address this, Microsoft will start offering license mobility in July to extend customers’ current Volume License investments under SA to the cloud. License Mobility will provide customers the flexibility to deploy certain server applications with active Software Assurance on-premises or in the cloud, without having to buy additional licenses. This includes Exchange Server, Lync Server, SharePoint Server, SQL Server and Dynamics CRM. This change provides customers with additional hosting flexibility and affordability.

How do these enhancements help service providers?
For Service Providers this change eliminates the prior requirement for dedicated hardware and enables improved economies of scale and operating efficiencies. The Service Provider Licensing Enhancements include:

  • A new Core Infrastructure Suite in SPLA that will make licensing the infrastructure at the Service Provider’s datacenter more affordable. This suite will include Windows Server Datacenter, System Center Server Management Suite Datacenter (SMSD) and Forefront Endpoint Protection.
  • Reduced pricing for certain Subscriber Access Licenses for Software Assurance (“SALs for SA”) that will make shared application hosting more affordable for customers with active Software Assurance. Additionally, we will expand the SALs for SA SKUs to cover Enterprise SAL licenses for Exchange Server, Lync Server and SharePoint Server.
  • Removing the Windows Server Outsourcer SKUs and associated price point will result in a lower single price offering across all Service Provider workloads.

Why is Microsoft making license mobility available to customers?
Microsoft is making enhancements to license mobility because our customers and partners have asked us to enhance the flexibility of our licensing to support the range of IT deployment options that are available to them today, including on-premises, Microsoft delivered cloud services and partner delivered cloud services.

How does this impact your customers who are thinking about or are moving “to the cloud”?
License mobility gives customers an additional licensing option to take advantage of cloud and other multi-tenant environments. Not only will license mobility make the transition easier for existing SA customers, it provides customers who prefer to purchase perpetual licenses the ability to continue doing so while still taking advantage of the efficiencies that the cloud offers. The cloud is critical to our customers’ business and we want to do whatever it takes to provide them with the support needed as they make the change.

Each customer is approaching the cloud at their own pace. That’s why it’s important that we offer them the flexibility that license mobility provides. This new licensing right helps disconnect the purchase decision from the decision of where the customer deploys the license.

If a customer moves their license to the cloud, will they have the right to move it back to their on premise server in the future?
Yes, for Volume Licenses, customers will have the flexibility to move the license once every 90 days between environments. This is similar to the current 90 day policy on license movement between on premise servers.

When will this be available and what is the purchase requirement?
License mobility enhancements will become available worldwide on July 1, 2011.

What products are covered by license mobility?

  • Microsoft Dynamics CRM
  • Microsoft Exchange Server
  • Microsoft Lync Server
  • Microsoft SharePoint Server
  • Microsoft SQL Server
  • Microsoft Systems Center servers

What products are excluded from license mobility?
Products under the Windows Server operating system, Windows Client operating system, Desktop Applications and Developer Tools licensing models are excluded from license mobility. In addition, Windows Server Outsourcer SKUs are being removed which will result in a lower single price offering for all Service Provider workloads.

Why did Microsoft discontinue Outsourcing SKUs for Windows Server?
Microsoft continues to seek ways to simplify licensing offers and improve consistency across Microsoft products. With this in mind, and further motivated by partner feedback, Microsoft is retiring Outsourcing SKUs for Windows Server effective July 1, 2011. At the point of retirement, workload restrictions for “non-outsourcing” SKU will be removed. Thus, the “non-outsourcing” SKU will cover all scenarios currently covered by both SKUs. This change will significantly reduce the cost of Windows Server licenses for many service providers.

What are the benefits of retiring Outsourcing SKUs?
Removal of the Windows Server Outsourcing SKUs and associated price point will result in a lower single price offering across all Service Provider workloads. In addition, the change increases platform manageability by adding clarity to licensing terms and improving licensing consistency across Microsoft products.

CRM 2011 – How not to clutter up your CRM Async table

Today I have a bit of a Kerberos double hop of a blog post and anyone who laughed at that joke really is a CRM geek.

On one my favourite CRM blogs Jamie Miley he had a blog post called

Improving Async Performance in One Click in Microsoft Dynamics CRM 2011

well he then linked  to a very interesting post by Gonzalo Ruiz

Improving Async performance in oneclick

By this point you are wondering what the hell the blog post is actually about but I thought the information in the two blog posts is so important it should told to as many people as possible.  Also well done to Gonzalo Ruiz for writing a great blog post and having an interesting blog.  Anyone who used CRM 4 will know the AsyncOperationBase database table would slowly get clogged up because it kept data about any system jobs/workflows/plugins as well as individual workflows/plugins and async jobs.

When we reported speed issues to Microsoft they gave up some scripts to run which would clean this table up.  I believe that when you upgrade you database from CRM 4 to CRM 2011 the scripts clean up this table for you (although I would recommend doing it yourself before you upgrade to save time)

In CRM 2011 there are a couple of areas where you can state you don’t want workflows that succeeded to be entered into the table.   If you click the workflow and then go into administration tab.  Interesting dialogs do not have the option to delete when complete.

I was wondering if this is always a good choice to stop logging successful workflows.  You probably only want to see the workflow records of failed workflows but when you are developing a workflow it’s useful to click on a workflow result record and check the entities is created/updated to make sure it has done it correctly.  For workflows which are well tested and don’t fail very often then it’s probably a good idea and the benefits of decluttering the AsyncOperationBase are certainly worth it.

The same option is now available for asynchronous plugin steps as well:

This allows you to pick and choose which workflows and plugins are worth storing as system jobs every time they execute and which ones you want to delete upon completion to save space!

However, in order for the async auto-delete feature to take effect, you must first make sure that the “auto-delete” feature is enabled for the organization. There is a master switch that must be turned on:

select BitColumn from OrganizationProperties where ColumnName = ‘AsyncRemoveCompletedJobs’

Note that you can have a different value in that setting for each organization. In CRM Online, this value is always 1 (enabled) for all organizations.

CRM 2011 – How to get the Last Login Date and Time of a CRM Instance

today I found myself wondering if I check when a CRM instance was last used.  We have a bunch of CRM instances and I was wondering when or if they were being used.

I was a bit dissappointed not to find anything within CRM 2011 but then I found this article which had a piece of SQL code which could do the trick.  I guess this would probably work for CRM 4.

You need to run the query against the MSCRM_CONFIG database.   When I ran the query it returned null for the user name but it did return the time .  You will have to join a few more tables to get the user name.

In Microsoft Dynamics CRM 2011 you can get the last login time of a CRM user by using the below query:


AuthInfo, O.FriendlyName, SUO.LastAccessTime


SystemUserOrganizations SUO

LEFT JOIN SystemUserAuthentication SUA ON SUO.UserId = SUA.UserId AND LEFT(AuthInfo, 1)=’C’

LEFT JOIN Organization O ON SUO.OrganizationId=O.Id


LastAccessTime IS NOT NULL


The query outputs the systemuser name, the organisation name and the date and time of the last login: OrganisationName 2011-03-23 16:36:13.457

You can finetune the query to your own wishes.

CRM 2011 – Build numbers and upgrading from RC to RTM

We were trying to work out what release number are CRM 2011 dev server was using and after typing CRM 2011 release, build numbers and all sorts of other variations on those words I finally found somewhere which listed all of them

So well done to Bite my Bytes for having the information, I assume it’s up to date, you can read them from the site here.  If anyone knows where this information is listed officially by Microsoft I would be interested to know because I couldn’t find it.

When managing Dynamics CRM 2011 deployments it usefull to know which rollup version is installed. Following table lists build numbers by version.
Version Build Number Release Date Windows Update Date
RC 5.0.9688.53
RTM 5.0.9688.583 February 16, 2011 Download
Update Rollup 1 5.0.9688.1045 April 7, 2011 April 26, 2011 Download
The problem I have now is I’m not sure if I can apply a patch or if you have to do a complete reinstall like we did when we went from the beta to the RC.
I found this upgrade article from Microsoft
It seems to suggest you can patch your way up but it’s recommended upgrade method is listed below
The recommended upgrade path from Microsoft Dynamics CRM RC to RTM is:

  1. Uninstall the RC.
  2. Install to existing databases using the RTM bits.
  3. Apply the RTM Patch (KB 2461082) against the RTM server. This will enable you to import RC organizations if needed. See KB 2511317. If you do not need to import RC organizations, then you will not need the patch in this scenario.
  4. After you upgrade your deployment to run with an RTM server, you may need to log into Deployment Manager and upgrade your RC organizations from 5.0.9688.xx to 5.0.9688.583. You can do this by selecting your RC organization, and then click Upgradein the Actions pane.
  5. Run the SQL Script from KB 2461082 against any Microsoft Dynamics CRM 4.0 organizations that were upgraded to Microsoft Dynamics CRM 2011 while the server was using RC bits.

CRM 2011 – Javascript and Subgrids code example

Someone posted a comment on my blog asking about Javascript and subgrids.  Although I don’t yet need to do anything with Javascript and subgrids I thought I would.  It certainly shows the benefit of Microsoft having forums for CRM problems.

Firstly the question is how to get the values from a subgrid, I found this good forum post and the Javascript is below

You can inspect the subgrid values on save by doing the following:

var gridControl = document.getElementById('subgrid_id').control; 
var ids = gridControl.get_allRecordIds(); 
 for(i = 0; i < ids.length; i++) 

 var cellValue = gridControl.getCellValue('column_name', ids[i]); 
 // logic 

Doing this on load is a bit more challenging since subgrids are loaded asynchronously and aren’t likely to be done loading when the form onload event fires. You can check the grid periodically though to see when it’s done loading by calling a function like the following in your form onload:

function subGridOnload() 

var grid = document.getElementById('grid_identifications'); 
 if (grid.readyState!="complete") 

 // delay one second and try again. 
 setTimeout(subGridOnload, 1000); 

// logic 

I then also found a forum post on attaching events to a subgrid, which you can read here

For CRM 2011, your code should look like this:

if (Xrm.Page.ui.getFormType() != 1) {

  Xrm.Page.ui.controls.get("IFRAME_OpportunityLines").onreadystatechange = function oppLineTotals() {
    if (Xrm.Page.ui.controls.get("IFRAME_OpportunityLines").readyState == 'complete') {
      var iFrame = frames[];
      iFrame.document.all.crmGrid.attachEvent("onrefresh", GridRefresh);

Funny thing, the sdk recomended function did not work for me (i.e. Xrm.Page.ui.controls.get(“GridName”) ), and yet the following works (tested!)

var grid = document.getElementById("GridName");
grid.attachEvent("onrefresh", EventHandlerFunction);

because the (Html Component) actually includes a public event “onrefresh”… And this event can be handled with any function. We dont need to dive into the eventManager and scriptEvents.