Friday Fun – The Amazing adventures of Uncle Ben and the Egg!

I was inspired by reading one of my fellow CRM bloggers Jamie Miley, last week he put a non technical blog post on his blog (I know outrageous, what the hell do we pay him for!!).  On his blog he had a picture of his lovely daughter and a picture of a massive spider.

I thought he was right we should have a bit more Friday fun in the CRM world.  I am an Uncle and one of my jobs is to tell them stories about the amazing adventures I have had.  You can read more about it here, where you can see pictures and you can download the mp3 here

or you can listen to it on youtube

CRM 2011 – What customizations will break on your next upgrade?

I read a brilliant article from mscrm blogger today.  He has helped clarify a misty/murky area of my knowledge of what is and isn’t supported in CRM 2011.  To read the whole article go here

in fact even the start of his blog is interesting

 The customizations described in the SDK are supported and will be upgradable to the next version of CRM unless they explicitly say they may not or are deprecated.


Following the Supported Extensions for Microsoft Dynamics CRM from the SDK, I’ll provide a list of what is and is not supported. I’ll try and simplify my list and the descriptions so that you can use it as a quick reference, then if you need more clarification on a particular item you can look it up in the Supported Extensions MSDN Article. Hopefully you can use this information as a quick-reference to know whether or not something will be upgradable, supported, or unsupported.

He raises an important point there are lots of things you shouldn’t change in CRM, like database tables, never touch them because they might change at any moment (e.g. a rollup) and your code will stop working.  Microsoft have created the tools for you to not suffer from them changing things, they have an abstract layer over the top so you shouldn’t be affected.  The abstract layer is basically the CRM SDK.  You tell the CRM SDK to update an entity and it updates that entity and a bunch of other stuff to make sure it all works.

here is the list of things which are supported and unsupported.  If you stick to the straight and narrow and use tools Microsoft have provided you won’t have any worries but if you are thinking of doing some extra tweaks this list should help you know what to keep an eye when you next upgrade.

CRM Web Services:

Supported: (CRM Web Services)

  • Using the following web-services:
    • DiscoveryService
    • DeploymentService
    • Organization Data Service
    • Web Resource End Points:
      • The SOAP End Point
      • The REST End Point

Unsupported: (CRM Web Services)

  • Using the SOAP or REST Endpoint outside a Web Resource.

Form Scripts:

Supported: (Form Scripts)

  • Jscript functions and events available through the form editor
  • for data interaction
  • Xrm.Page.ui for form appearance and behavior

Unsupported: (Form Scripts)

  • DOM changes and access because they may not be upgradable. The structure of forms and elements could change in future releases.
  • Accessing/using methods not published in the SDK such as the innerControl methods.


Supported: (Ribbons)

  • Using the RibbonDiffXml to add, remove, or hide ribbon elements
  • Re-use of the ribbon commands defined by MCRM (however, they may be deprecated or changed later)

Unsupported: (Ribbons)

  • Re-use of JavaScript functions defined within ribbon commands

Solution File (customizations.xml)

Supported: (Solutions File – cusotmizations.xml)

  • Changes to the customizations.xml file must conform to the CustomizationsSolution.xsd schema.
  • Changes to the ribbon
  • Changes to navigation using the SiteMap
  • Form and dashboards changes using FormXml
  • Customization of Saved Queries

Unsupported: (Solutions File – cusotmizations.xml)

  • Defining any other solution components (than the ones listed above) by editing the exported customizations.xml file is not supported. This includes the following:
    • Entities
    • Attributes
    • Entity Relationships
    • Entity Messages
    • Option Sets
    • Web Resources
    • Processes (Workflows)
    • Plugin Assemblies
    • SDK Message Processing steps
    • Service Endpoints
    • Reports
    • Connection Roles
    • Article Templates
    • Contract Templates
    • E-mail Templates
    • Mail Merge Templates
    • Security Roles
    • Field Security Profiles


Supported: (Plugins)

  • Plugins are supported for all CRM 2011 deployments, Online, on-premise, and IFD.
  • Adding your plug-in and custom workflow activity assemblies to the %installdir%\server\bin\ folder is supported on Microsoft Dynamics CRM on-premises and IFD server installations only.
  • Non-Sandboxed plugins only work in CRM on-premises and IFD server installations.

Unsupported: (Plugins)

  • If it is a plugin and it works, it is supported. There are limitations to plugins, but it does not have to do with supportability.


Supported: (Workflow)

  • Creating custom workflow activities (assemblies)
  • Editing XAML workflows

Unsupported: (Workflow)

  • Because workflow is not currently able to be sandboxed, custom workflow activities (assemblies) and modified XAML workflows only work in the CRM 2011 on-premise and IFD deployments.

ISV folder

Supported: (ISV Folder)

  • Adding custom web-pages to the ISV folder in on-premise and IFD deployments is supported, but deprecated. These pages must use the 2007 ASMX web-service end point.

Unsupported: (ISV Folder)

  • The ISV folder has been deprecated and it is preferable for these pages to utilize web-resources instead wherever possible.


Supported: (Reports)

  • Fetch-Based reports for CRM Online, on-premise, and IFD deployments
  • SQL Based reports for on-premise and IFD deployments

Unsupported: (Reports)

  • SQL Based reports that access the tables and non-filtered CRM views.

Other Unsupported Customizations

  • Modifications to any of the CRM web pages and files such as .aspx, .css, .htm, .xml, .jpg, and .gif.
  • Modifying the schema of the database (other than adding indexes)
  • Changing data using SQL commands or any program that does not leverage the SDK to make the changes.
  • Referencing any CRM DLL other than:
    Microsoft.Xrm.Sdk.dll Microsoft.Crm.Sdk.Proxy.dll
    Microsoft.Xrm.Sdk.Workflow.dll Microsoft.Xrm.Sdk.Deployment.dll
    Microsoft.Crm.Outlook.Sdk.dll Microsoft.Crm.Tools.EmailProviders.dll
  • Using the CRM JavaScript code not made available through the Xrm object or is not documented in the SDK.
  • Using custom HttpModules to inject HTML/DHTML into the CRM User Interface
  • Creating an IIS Virtual Director or Application inside the CRM website

CRM 4 – showing inactive items in a lookup

The default settings for CRM 4 is to not show inactive orders.  This in most cases seems like a good idea because you don’t want fulfilled, cancelled etc orders cluttering the list of potential orders.

The example I have recently worked on is we created a credit note entity and wanted to select an order to credit.

I will add before we go on these changes are unsupported by microsoft but are in my opinion very low risk.

There are two options you have, the first option involves you changing either all the quick find look ups or lookup options for one entity everywhere in the CRM system.

The first solution involves you exporting the custom entity and changing the xml for the quick find or lookup view.  You basically remove the filter arguements from view.  This works because the quick find and the lookup view are basically saved views, the same kind  you can create if you made a view using the advanced find.  For step by step instructions read the links below.

There is also another way which involves only changing the lookup values for the form you specify it on.  It uses JavaScript and is surprisingly easy.

You basically add this Javascript to the onload event for the form in question

crmForm.all.bao_orderid.lookupclass = “alllookups”;

on the example above the Javascript is referring to the lookup field on the form and this then shows the active and inactive orders.  For step by step instructions please click on the link below

I hope that helps