Blog Archives

Unable to enable .Net Framework 3.5 in Windows Server R2 Update – CRM 2013 installation blocker

As part of installing CRM 2013 for one of our clients we have faced an issue where we couldn’t enable .Net Framework 3.5 in windows server 2012 R2. Here is why and what did we do to fix it.

possible reasons:

  1. Windows Server R2 Update might have the security update 2966827 or 2966828 already installed in the server and this would block enabling .Net Framework 3.5.
  2. Internet connection in server is not working

In case of reason#1 – you may uninstall security update  2966827 or 2966828 and try to enable .Net 3.5


In case of reason#2 – you can select the alternate source path which has the windows server R2 source files to install .Net Framework 3.5

Steps to follow:

Step 1. Select  ‘ Specify alternate source path’ while adding .Net 3.5 feature

Add Roles And Features-Net3_5

Step #2: provide path to the source folder [usually <Image drive>:\Sources\SxS ] and continue with the feature enabling. This should work.

Add Roles And Features-Net3_5_2




Upgrade from CRM 2013 to CRM 2015 : A Step by step guide

Top_bottom banner

Recently, we did an upgrade from Microsoft CRM 2013 to Microsoft CRM 2015 and thought it would be helpful for someone who is keen to do that soon.

Pre requisites:

  • .Net 4.5.2 needs to be installed
  • Reporting Extension should be removed
  • Microsoft CRM 2013 SP1 should be installed

Time taken:

It took 30 minutes for me to finish the upgrade and it depends on the server and availability of resources.

Lets start the upgrade;

  1. Download the Microsoft CRM 2015 installer from MSDN site.
  2. Double click on the installer

Windows Server 2012 - CRM0 Read the rest of this entry

Associate/Disassociate plugin messages in CRM 2011/2013

In CRM, the Associate or Disassociate event happens:

If you have a N:N relationship between two entities and when you try to associate or disassociate records either from Associated view or Sub grid.

In Plugins, the Associate & Disassociate messages behave little different than other messages.

When you register a plugin on Associate message, you have to leave “Primary and Secondary” entities as ‘none’.

Since we don’t provide entity names, the registered Plug-in step triggers on all “Associate” operations, so we have to check few conditions to let the “Association” trigger happen only between intended entities.
You can use the below code template for Associate or Disassociate plugins

EntityReference targetEntity = null;

string relationshipName = string.Empty;

EntityReferenceCollection relatedEntities = null;

EntityReference relatedEntity = null;

if (context.MessageName == “Associate”) {

// Get the “Relationship” Key from context

if (context.InputParameters.Contains(“Relationship”)) {

relationshipName = context.InputParameters[“Relationship”].ToString();


// Check the “Relationship Name” with your intended one

if (relationshipName != “{YOUR RELATION NAME}”) {



// Get Entity 1 reference from “Target” Key from context

if (context.InputParameters.Contains(“Target”) && context.InputParameters[“Target”] is EntityReference) {

targetEntity = (EntityReference)context.InputParameters[“Target”];


// Get Entity 2 reference from ” RelatedEntities” Key from context

if (context.InputParameters.Contains(“RelatedEntities”) && context.InputParameters[“RelatedEntities”] is EntityReferenceCollection) {

relatedEntities = context.InputParameters[“RelatedEntities”] as EntityReferenceCollection;

relatedEntity = relatedEntities[0];