Pages

Showing posts with label Upgrade. Show all posts
Showing posts with label Upgrade. Show all posts

Sunday, May 25, 2014

Import Organization Failed: Subquery returned more than 1 value

While trying to import a CRM 2011 organization to CRM 2013 I encountered the following error:


Viewing the log detail unfortunately file did not shed much more light on this.

The only thing I had to go on was the SQL error itself. This indicated that somewhere the system was trying to execute a nested SQL statement that looked something like the following:

select field1 from table1 where field2 = (select field3 from table2)

And that the results from table2 returned more than a single row which is not allowed as the nested relationship is using the "=" rather than "in" operator.

Armed with this information, I decided to run a SQL trace while recreating the import error. And then performed a bit of a needle-in-haystack search for something that might fit the above - using correlating times from the SQL Trace and CRM trace file (although in retrospect I think I could have searched the SQL trace for a statement like 'update organization set set state=...' as this is what happens directly after the failed error).

Lo and behold, I came across the query below which matched the kind of query pattern I was looking for. The suspect had been identified...


Running the essence of the above query in SQL it came back with the following - looks like a smoking gun to me!


In the interest of moving forward as quickly as possible, I decided to run a query that eliminate this particular error by ensuring a singleton output.

update Role set RoleTemplateId = null
where RoleId != 'BDD45E0B-7482-DC11-AB36-005056BC02DA'
and RoleTemplateId='A4BE89FF-7C35-4D69-9900-999C3F603E6F'

Re-running the import again subsequently succeeded... and yet another successful CRM 2013 upgrade under the belt.

Tuesday, May 28, 2013

CRM 2011 Installation Requirements

This question gets posed to me every so often. In light of that, the following post will provide information describing the installation requirements for CRM 2011. I will also highlight what I consider to be practical best practice recommendations and finally at the end I have provided server breakdown installation scenarios.

First of all, please refer to the very useful link below. It contains a step by step visual walk through of all the installation components, including SQL, CRM prerequisites, CRM 2011, Email Router etc. The rest of this post makes abundant reference to this walk through.

http://social.technet.microsoft.com/wiki/contents/articles/3176.how-to-install-microsoft-dynamics-crm-2011.aspx

The following link similarly provides a visual walk through for installing and configuring the Microsoft Dynamics CRM E-mail Router (Online & Exchange Online).

http://social.technet.microsoft.com/wiki/contents/articles/4686.microsoft-dynamics-crm-e-mail-router-configuration-crm-2011-online-exchange-online.aspx

Finally, bookmark this link. It contains a very useful set of Q&A for commonly asked questions related to CRM 2011 server setup.

http://blogs.msdn.com/b/crminthefield/archive/2012/02/11/crm-2011-server-setup-commonly-asked-questions.aspx

Hardware and Software Requirements

  • See sections "Hardware Requirements" and "Software Requirements" 
Credentials
  • Installation User - see section "Required for installation of Dynamics CRM 2011" for permissions required for this user. 
    • Recommendation: Create a user called "CRMAdmin" under which you will install CRM
  • Services - CRM creates a number of windows services
    • Recommendation: It is recommended to have a separate to have a separate account for each of these. For example: 
      • Sandboxing service – e.g. create account CRMSandbox (see section “Microsoft Dynamics CRM Sandbox Processing Service” for permissions required for this user)
      • Async service – e.g. create account CRMAsyncProcess (see section “Microsoft Dynamics CRM Asynchronous Processing” for permissions required for this user)
      • Web Deployment service e.g. – create account CRMDeploymentWS  (see section “Web Deployment Service (CRMDeploymentServiceAppPool Application Pool identity)” for permissions required for this user)
      • Application service – e.g. create account CRMAppService (see section “Application Service (IIS Application Pool identity CRMAppPool)” for permissions required for this user)
Ports

See section "Ports" for a full description of default ports that are used as part of the CRM solution. You can also refer to the following post for a visual representation and link to a white paper covering the topic.

Installation Summary

The reference provides a walk through of each of these procedures:
  • SQL Server 2008 R2 – Scroll to section “Installing SQL 2008 R2” for a step by step guide. I’d follow these instructions although I’d select Mixed Mode (step 5)
  • CRM Prerequisites – Scroll to section “Installing pre-requisites in Dynamics CRM Server 2011” – Walks through server roles that need to be installed on the CRM server.
  • CRM Installation – Scroll to section “2011 Dynamics CRM Installation” – this walks you through the wizard installer screens. Note:
    • License key - you should obtain this prior to beginning the CRM installation.
    • Server Roles - See write up below assuming a 3 server configuration.
    • Organizational Unit – This links to AD. 
      • Recommended: Create an OU called MSCRM or similar (can hang off the main OU). Note. The OU is required for the installation. CRM just copies security groups into the OU (UserGroup, ReportingGroup, PrivUserGroup, SQLAccessGroup). It is good practice to use a separate OU rather than an existing OU.
    • Service Accounts – per above
    • Web site – recommend that we’ll install to the Default Web Site. If that’s an issue we can use the 5555 port. No real practical difference other than URL (if configuring IFD, the IFD URL will override this)
    • Email Router – this will point to the server which will has the Email Router installed.
    • Organization Settings 
      • Display name should just be Your Company Name. This will create a database called YourCompanyName_MSCRM. Specify if you wish a different display name.
      •  Review other settings - generally no need to change the defaults supplied
    •  Reporting Server – This can point to any reporting server. Typically you would point to the report server of the database against which CRM is installed but if you have a dedicated reporting server, you can point it to that location.
  • CRM Reporting Extensions – Scroll to section “Installing Microsoft Dynamics CRM Reporting Extensions”
    • This will be installed on the SQL Server Reporting Services instance which essentially allows authentication from CRM to pass through to SSRS. 
  • Email Router – See server breakdown below for recommendation on which server to install
  • Rollups – Applied as necessary to all the CRM products (CRM Server, Email Router, Reporting Extensions). The latest rollup can be obtained from here.

Production Server Breakdown

The following is the recommended set up in a production environment. If you do not have two application servers then combine the two app servers together.

Database Server
  • SQL
  • Reporting Extensions
Front End Server 
  • CRM Pre-requisite roles (see above)
  • Install CRM (all roles) and Disable the Back End Server Roles (Async Processing Service, Sandboxing Service)
    • Having the roles available allows these roles to be started as a failover solution

Async Server (Mid Tier) 
  • CRM Pre-requisite roles (see above)
  • Install CRM and disable Front End Server Roles (Web Application Server, Organization Web Service, Discovery Web Service, Help Server)

Development/Test Server Breakdown

Typically it is sufficient for a development/test environment to be hosted on a single server. If that is the case, then install SQL and CRM with all server roles on the server.


Wednesday, March 14, 2012

The product key is not compatible with the installed version of Microsoft Dynamics CRM

I encountered this error message while recently trying to apply a permanent license key to a CRM installation.


The error message was clearly wrong because the license key was for the same version as the trial license.

The solution was to essentially ignore this error message. And the way to do so was to add a registry setting that instructs the installation wizard to ignore the errors arising out of the pre-installation systems checks and allow you to click "Next" to kick off the installation. This allowed the new license key to be updated without any side effects to the CRM installation.

The steps required to do so can be found here.

Tuesday, January 24, 2012

CRM 2011: Removing ISV Grid/Form Links

In the previous post I addressed how to go about removing the ISV links i.e. those shown in yellow in the screenshot below.



We will now review how to go about removing the ISV Grid/Form links that appear in green in the above screenshot.

Unlike the first scenario, these ISV links are contained within the entity forms definition themselves so to remove you will need to export the entity where you want to remove the link from. If the links are embedded in multiple forms/grids you may want to first create a solution to export all entities (just the entities) in your environment and once you've done so you can edit them all at once.

And once again - as mentioned in the first scenario - the easiest way delete the links such that the ISV tab will no longer appear at all, is to use the default XML snippet as a replacement with what is currently in place.

To do so perform a search on "RibbonDiffXml" which should return you something that looks as follows:




Replace the entire RibbonDiffXml node with the following default  RibbonDiffXml:



            <RibbonDiffXml>
                  <CustomActions />
                  <Templates>
                        <RibbonTemplates Id="Mscrm.Templates"></RibbonTemplates>
                  </Templates>
                  <CommandDefinitions />
                  <RuleDefinitions>
                        <TabDisplayRules />
                        <DisplayRules />
                        <EnableRules />
                  </RuleDefinitions>
                  <LocLabels />
            </RibbonDiffXml>


Repeat as necessary for each case, save, import and publish. The end result should be a clean looking grid and form view without the extraneous ISV links imported from your 4.0 environment.




Monday, January 23, 2012

CRM 2011: Removing ISV Links

If you upgraded from a 4.0 to CRM 2011 environment you might find a number of ISV links appearing in your form and grid views as shown below.


I am not entirely sure at this moment how the system differentiates between the the ISV tab (highlighted in yellow) and ISV Grid/Form (highlighted in green) in deciding to put links in the 2 distinct areas. Anyway, each of these is addressed in a different way and both should be removed in order to start in a nice and clean upgraded environment without bringing along unnecessary artifacts. We will first go about removing the ISV tab (yellow highlight).

Removing these links are done in pretty much the same way as you would go about removing ISV links in 4.0. That is export the ISV XML configuration which is known in CRM 2011 as the Application Ribbons. Then go ahead and remove the links and re-import the solution and publish. If you want to remove only a select group of links then you'll need to modify the following areas appropriately:


  • CustomActions
  • CommandDefinitions
  • RuleDefinitions


Alternatively, if you just want to revert to the default out of the box situation where there are no ISV links (which you would typically do as part of the upgrade project before installing any new 3rd party ISVs), you can simply replace the exported Application Ribbon with a default Application Ribbon (which you can export from a vanilla installation or use the one below).

Once you publish the customization you should no longer see the ISV tab highlighted in yellow above.

Next: Removing the ISV Grid/Form links.



<ImportExportXml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Entities></Entities>
  <Roles></Roles>
  <Workflows></Workflows>
  <FieldSecurityProfiles></FieldSecurityProfiles>
  <Templates />
  <RibbonDiffXml>
    <CustomActions />
    <Templates>
      <RibbonTemplates Id="Mscrm.Templates"></RibbonTemplates>
    </Templates>
    <CommandDefinitions />
    <RuleDefinitions>
      <TabDisplayRules />
      <DisplayRules />
      <EnableRules />
    </RuleDefinitions>
    <LocLabels />
  </RibbonDiffXml>
  <EntityMaps />
  <EntityRelationships />
  <OrganizationSettings />
  <optionsets />
  <Languages>
    <Language>1033</Language>
  </Languages>
</ImportExportXml>


Tuesday, January 17, 2012

CRM 2011: Cannot Export Solutions

We were experiencing an issue in one of our CRM 2011 upgrade environment where the Export Solution function was not working. We would go through the wizard export process but after clicking on the final export step nothing happened. There is always a little delay between clicking the final Export button and the prompt asking you whether you want to open or save the solution zip file but in this case the prompt never happened. It also did not matter what we attempted to export - creating a solution with just one entity or web resource etc. still did not allow for this function to work so there did not seem to be a way to isolate the issue.

We were seeing an exception in the Event Log as shown below but this did not reveal anything significant. This issue was not caused by plugins since we only had the system plugins in the environment.


Running a trace using the diagnostics tool while reproducing the issue similarly did not produce anything  particularly useful.

So we turned to Microsoft Support to help us with troubleshooting this issue. After a lot of back and forth and having them escalate the issue to their dev team, the issue was finally nailed down to something quite simple. There were some attribute maps on the contact to opportunity mapping (1:N) that seemed to be causing the problem. In our case, the following 2 were identified:



Therefore the resolution was to follow the steps outlined below


  1. Go into Settings -> Customizations -> Customize the System
  2. Under entities, select the Contact entity
  3. Go into 1:N relationships
  4. Open the Contact to Contributions relationship for type of Parental relationship
  5. Open mappings
  6. Delete the 2 accountiddsc and accountidname mappings
  7. Save and close
  8. Publish all customizations


I am not sure how these errant mappings came into being in the first place. They were present in the original CRM 4.0 environment and came along with the upgrade. But the export issue only affected the CRM 2011 environment. I would suspect that whatever introduced this issue it is probably not limited to just the contact to opportunity mapping. Therefore if you are encountering this error and you do not find a similar mapping issue in the contact to opportunity that you look for other entity mapping containing the "*iddsc" field mappings - that will be the smoking gun...

Friday, December 9, 2011

CRM 2011 Upgraded Report not working

I am not sure if this is something specific in the environment that I am working but I had some custom reports that were not working post upgrade. To troubleshoot I opened up in SSRS and when I tried to run the preview, I received an error message indicating that one of the fields on the report was not in the dataset scope.


This was a "form" report (rather than grid output) and it seems the form elements were no longer associated with the parent "list" in which they were embedded. It could be that this was because this report was developed in SSRS 2005 and it was now being edited in SRS 2008 - I'm not sure.

To resolve I needed to add the "list" back into the report. The following are the steps taken to do so:


  • Highlight all report elements (ctrl+A)


  • Insert new List (tablix) into the report and drag to the size of the report body



  • Click into the list/tablix (ensure outline of tablix is showing) and paste and your report should now look something like this:

  • Update the dataset for the tablix that you just inserted

  • Try the preview again and if the report runs or you are presented with something similar to the screenshot below you should be all set



Thursday, December 8, 2011

CRM 2011: Cannot unregister workflow PlugIn

In a previous post I covered an issue I faced with regards to being unable to unregister a regular plugin. I subsequently had some additional difficulty in unregistering some other plugins that were also carried over from the upgraded 4.0 installation.

In this case, the plugins turned out to be workflow plugins. That is, plugins that are used to extend the workflow (or Process in CRM 2011 speak) functionality.

The error message that was shown contained some text that looked like this:
>Crm Exception: Message: The PluginType(a222ddda-c78e-45c8-91f9-fa06359ac29d) component cannot be deleted because it is referenced by 1 other components. For a list of referenced components, use the RetrieveDependenciesForDeleteRequest., ErrorCode: -2147160033
[2011-12-06 12:03:51.118] Process: w3wp |Organization:9dd6ac5e-4be6-46f9-af58-7caed1001d66 |Thread:   31 |Category: Platform |User: 6b51be4f-7308-dc11-9e28-00188be6f91e |Level: Info | MiniDump.CreateDumpInternal
The key phrase of course being the "reference" issue which I have highlighted.

The only dependencies that I could think of for a workflow plugin are in fact the Process definitions and Process instances. 

I first started out by cancelling all Processes that were in a "Wait" state using Advanced Find as they could be referencing the said plugins.


However after this step, the plugin could still not be unregistered. So my next step was to disable the active Process definitions. 

That still did not bring along the desired results. Only once the calls to the plugin were removed from the Process definitions was I able to finally unregister the plugin.

Although it would be nicer if a better error message were issued highlighting the specific dependency issues (in plain English preferably), I cannot complain too much about the fact that Microsoft is in fact enforcing this dependency logic. Although it took a while to go through the above steps, it is still preferable to having to deal with the fallout of broken Process definitions and instances down the line. And of course being in an upgrade environment, this also helps ensure that certain plugins may require tweaking as part of the upgrade process. 

The only remaining step is of course to note all the above steps as far as cut over planning is concerned.

Wednesday, December 7, 2011

CRM 2011: Cannot unregister PlugIn

After having upgraded a CRM 4.0 installation to CRM 2011 I was attempting to unregister some of the plugins that were carried over from the 4.0 installation as part of the upgrade process. Yet whenever I tried to do so, I encountered an error telling me that the plugin could not be unregistered. The Error Message received was similar to the one shown below:


After a little bit of research, I discovered that the said plugin was actually a plugin that was developed way back using the CRM 3.0 plugin architecture and therefore had DLLs etc. in the "server\bin\assembly" sub-folder of the existing 4.0 environment being upgraded.

Once the files had been copied over to the corresponding sub-folder in the CRM 2011 upgrade environment, I was able to unregister the plugin successfully.

Not entirely sure that it makes sense in CRM 2011 to have to copy these DLLs present in order to unregister the plugin, but then again, I'm not sure it's worth spending any more time thinking about either.


Tuesday, August 2, 2011

Adding a Form Ribbon Button in CRM 2011

In CRM 4.0 it is possible to add a button to the body of a CRM form and there were many good reasons to do so. While this is still possible in CRM 2011, I would argue that it's no longer relevant with the introduction of the ribbon interface which allows a lot more granular control over the behavior and function than was available using ISV.config in CRM 4.0.

There are a number of good articles that walk through the technical process of adding a ribbon button that you can refer to. The following is a high level visual representation of adding a button that executes a custom action that should hopefully bring this all together succinctly. This article assumes you have read through some of the other literature that describes how you go about exporting, identifying, and editing the entity customization file that you wish to add a button to.

Please refer to the screenshot below.



The following are some of the more important sections of the edits that need to be made:

  1. CustomAction Id - Add an id here that uniquely identifies the custom action you are adding
  2. CustomAction Location - Identifies the ribbon to update. If you are updating an account, it will start with Mscrm.Form.account, if you are updating a lead it will start with Mscrm.Form.lead etc.
  3. CustomAction Sequence - Identifies where in the ribbon it will appear
  4. Button Id - Add an id here that uniquely identifies the button you are adding
  5. Button Command - Add a command name
  6. LabelText/Tooltips - Any descriptive text
  7. TemplateAlias - Defines how the button appears although I haven't delved very deep into this one yet. Default to "01". 
  8. Images - Reference 16 and 32 icons that you should add as a web resource to your environment (optional)
  9. CommandDefinition Id - This should match the Button Command referenced in step #5. 
  10. Command Definition Actions - This section defines the action to take when clicking the button. There are various actions that can be taken. The first example is commented and simply would take the user to a web page when clicked. The second example is a reference to a custom jscript function defined in the form jscript. I chose to reference the "default" contact library but this could be any jscript library.
  11. Function HelloWorld - The function in the second example above must be created in the relevant jscript library and should match the FunctionName from the CommandDefinition section
  12. Xrm.Page.ui.refreshRibbon - This is a command that you can optionally add to jscript. Some times after you click a ribbon button, you will want to disable that button or perhaps enable another button on the ribbon. By callling this command at the end of your jscript function, you instruct the ribbon to refresh and re-execute any of the Enable and Display rules to control the appearance of your button which I discuss in my next post.

That's it. Now when you click the ribbon button, you will receive a "Hello World" alert prompt.

That's a brief introduction to the topic. Refer to the CRM SDK for more configuration options.

Thursday, July 28, 2011

CRM 2011 OnClick Events

My former post highlighted the fact that the 4.0 syntax (unsupported though it was) no longer works in CRM 2011 and in fact has a lot more nefarious side effects than just not working as it should...

So how can the OnClick event be replicated in CRM 2011? The inspiration for my answer was provided from this post. I took the example that was provided and stripped it down to the following function:


function RegisterOnClickEvent(attr, fn) {
var e = document.getElementById(attr);  
    var f = "var click=function() { " +  
              fn + "(); " +  
" };";  
  
    eval(f);  

    // Attach to click event  
    e.attachEvent("onclick", click, false);  
}


Thereafter all you need to do to register an OnClick event for a bit field is to pass the following function call:

RegisterOnClickEvent("attribname","functionname");

CRM 2011: Error on page

While upgrading a CRM 4.0 environment to CRM 2011, I had to contend with the "Error on page" issue. That is, there was something in the jscript of the page that CRM was not liking which caused the page to render as with the "Error on page" message when loading and consequently with the "Microsoft Dynamics CRM has encountered an error" message when exiting the form.


I was further perplexed by the fact that this error did not appear to have anything to do with the form jscript as I disabled all onload and onchange events and yet the error did not go away. However after additional testing it did indeed appear to be linked to the jscript as when I cleared out the jscript of the form (as opposed to just disabling it) the error went away. Why the jscript should be affecting the form in such a way even when it is disabled is beyond me. It seems to defeat the purpose of being able to disable the jscript. But this is the first lesson from this exercise - jscript can affect form rendering even when it has been disabled. Maybe Microsoft will fix this in a future release.

Ok. So having determined that jscript was indeed the culprit the hunt was on to determine exactly which piece of jscript was throwing the form rendering off. This was a process of elimination whereby snippets of jscript would be removed until the offending jscript could be determined.

And what did it come to...?

I am sure this is not the only scenario which can result in this error but in my case it was because we had configured an on-click event for a field in the form. The 4.0 syntax of crmForm.all.field1.onclick = function() {} was troubling the application.

Once this had been removed the error went away... as did the cloud that was hanging over my head.

Wednesday, July 27, 2011

CRM 2011 Mashups

Earlier I provided an introduction to mashups in CRM 4.0 including downloads and instructions on how to configure this in your CRM 4.0 environment. This topic then segwayed into a discussion about integration approaches one of them of course being the mashup/virtual integration approach.

It's time now to come full circle and discuss how the mashup/virtual integration can be configured in a CRM 2011 environment. With the new configuration options provided by CRM 2011 it is no longer necessary to refer to an external redirection web page in order to accomplish the objective (using the Navigation Pane). We will step through this example by creating a mashup between a CRM account and a bing map (arguably the most "classic" of mashups).


  • Navigate to Settings | Customizations | Custome the System | Entities | Account | Forms and open up the Main form
  • Click on the Navigation icon. After clicking this the left navigation panel is enabled. 

  • Navigate to Insert | Navigation Link and in the resulting dialog provide a Name and an Icon (none of the other fields need to be filled in - they will be provided at run time using jscript manipulation)


  • Save and Publish the form
  • Open an existing account, hit Ctrl+N to open it so it does not appear in application mode and launch the IE Developer Tools
  • Search for the "Map" navigational item and when you locate it, copy the "navLink" item from the "id" attribute

  • Copy the script below and replace the navlink id with what you copied in the above step

function Map() {


var addresr1        =Xrm.Page.data.entity.attributes.get("address1_line1").getValue();
var addresr2        =Xrm.Page.data.entity.attributes.get("address1_line2").getValue();
var city            =Xrm.Page.data.entity.attributes.get("address1_city").getValue();
var state           =Xrm.Page.data.entity.attributes.get("address1_stateorprovince").getValue();
var postalcode      =Xrm.Page.data.entity.attributes.get("address1_postalcode").getValue();


if(addresr1==null)
{
addresr1="";
}
if(addresr2==null)
{
addresr2="";
}
if(city==null)
{
city="";
}
if(state==null)
{
state="";
}
if(postalcode==null)
{
postalcode="";
}
var parmval=addresr1+" "+addresr2+" "+city+" "+state+" "+postalcode;


var navAcctVal = document.getElementById("navLink{4527a3a5-4173-43b8-3a08-da7da29a1ac2}"); 
if (navAcctVal != null && navAcctVal != undefined) 
{ 
var u1 = encodeURI("http://www.bing.com/maps/?v=2&where1="+parmval); 
navAcctVal.onclick =function () { loadIsvArea(Mscrm.CrmUri.create(u1), true); }; 
}


}




  • Link the "Map" javascript function to the main form load event and publish
  • The next time you load an account and click on the Map link, you should be able to see a context sensitive bing map linked to the account you are reviewing


Thursday, May 19, 2011

Upgrading to MSCRM 2011

We upgraded our internal installation from CRM 4.0 to CRM 2011 several months ago so this entry is from memory. But in a nutshell, the upgrade from CRM 4.0 to CRM 2011 was by far the smoothest one yet.

Essentially all we needed to do was take the CRM 4.0 old database, import it onto the new SQL 2008 server and then use the CRM 4.0 import manager which pretty much took care of the rest. At that point, we just had to sit back and wait and put our faith in Microsoft... (which is true any time you click that "install" button at the end of the installation wizard process).

What's nice about this type of upgrade where you move to a new server is that you can pretty much leave your existing 4.0 installation in place until you've crossed the proverbial rubicon. Therefore the risk factor is much lower and you always have the option of rolling back (although you should never have to exercise that option...).

Obviously there are a lot of other things that need to be planned for and verified post upgrade such as plugins, reports, workflows etc. which will vary from installation to installation - those should be part of your due diligence upgrade plan. But assuming those have all been accounted for, the upgrade experience has thus far been a very smooth one.

The only things encountered in our internal upgrade were some strange "unknown" headers  appearing in the system:


Not exactly sure why these came about but it's likely due to the fact that we had made some changes to our 4.0 Site Map that caused the upgrade to get confused. Anyway this was easily handled by exporting the Site Map, adding title attributes to the relevant Groups and reimporting:

        <Group Id="System_Setting" Title="System">

The other oddity was that certain sections were missing the header groupings altogether:


Once again this was solved by going to the Sit Map and adding the ShowGroups attribute to the relevant areas:

 <Area Id="MA" ResourceId="Area_Marketing" Icon="/_imgs/marketing_24x24.gif" DescriptionResourceId="Marketing_Description" ShowGroups="true">

And that was pretty much it.

Wednesday, May 18, 2011

Distribute Workflow for CRM 2011

In CRM 4.0, a wonderful little free workflow plugin was introduced that allowed workflows to be distributed. This can be downloaded from codeplex. The idea behind this workflow plugin is simple and effective. For example, say after completing a campaign, I wanted to generate a follow up activity on each opportunity generated from the campaign, I could create a single workflow against the parent campaign monitoring the campaign status and as soon it was completed, I could generate workflows to be kicked off for each of the child opportunities. So one workflow could spawn sub-workflows for all it's children. Useful in many different scenarios.

The functionality described above was not out of the box in 4.0 and I don't believe it is out of the box in CRM 2011 either (please enlighten me if I'm wrong as I haven't researched this to the Nth degree). So why am I mentioning this?

Well in light of my previous blog entry which discussed limitations with CRM 2011 Online - one of the limitations was that workflow plugins are not supported... And guess what - the utility mentioned above is in fact a workflow plugin which means that if you've deployed this feature in your on premise installation, you may have difficulty replicating this functionality if you decide to move to CRM 2011. So either you will need to dispense with the functionality or come up with another creative way for handling the requirement. Of course, upgrading to CRM 2011 on premise does not present the same challenge, since workflow plugins can be added in that case.

If anyone is aware of a way of executing the workflow distribution logic in CRM 2011 Online in a simple and elegant manner as the aforementioned plugin enabled - your input would be appreciated.