Friday 29 March 2013

Dynamics CRM 2011 – Limitations of Report Wizard (OOB)

 

Feature List

Report Wizard (OOB)

Custom SSRS Report - BIDS

Remarks

Grouping

Yes

Yes

-

Adding extra rows and columns

No

Yes

-

Expressions Based Values

No

Yes

-

Design, Font, Colour Change

No

Yes

No option available while creating report through wizard. Is possible after exporting and changing the report.

Context specific

Yes (By Default)

Yes

-

Group Summary

Yes (With limited functions)

Yes

Average, Maximum, Minimum, Percentage of total, Sum are the summary types that can be used in report wizard for a field.

Lookup Functionality

No

Yes

-

Hyperlink

No

Yes

-

Use of Sub Reports

No

Yes

-

Charts

Yes (Limited Type)

Yes

Only vertical bar chart, horizontal bar chart, line chart, pie chart are supported in report wizard.

Tools like line, list, image, sub report, gauge, map,
indicator, sparkline

No

Yes

 

Custom Code

No

Yes

 

Functions Available in Expressions

No

Yes

 

Hide Show based on expressions

No

Yes

 

Report filters

No

Yes

 

Parameters

No

Yes

There is no way to add new parameter to the report
through report wizard.

Header - Body - Footer

No

Yes

 

Page Nos. in footer

No

Yes

 

Accessing Current Date Time

No

Yes

 

Entities could be involved in generating a report

One primary entity and it's first level related entity

No such limitation

 

I hope this would be helpful. Please feel free to comment on this post with more limitations.

Friday 15 March 2013

Dynamics CRM - Trigger a workflow from JavaScript

 
Updated on – 24th Sep 2015
 
Recently I had a requirement to trigger a workflow on click of ribbon button when it meets certain criteria. Refer below link for calling JavaScript function from custom ribbon button.

http://ankit.inkeysolutions.com/2012/01/crm-2011-how-to-use-visual-ribbon.html

The criteria values are checked using JavaScript and if all criteria are satisfied then the workflow is to be triggered. The function below will take two inputs where entityId is the id of the record for which the workflow will execute and workflowProcessId is the id of the workflow which we want to execute.
function startWorkflow(entityId, workflowProcessId) {
  var request = "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
   "<s:Body>" +
     "<Execute xmlns=\"http://schemas.microsoft.com/xrm/2011/Contracts/Services\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">" +
       "<request i:type=\"b:ExecuteWorkflowRequest\" xmlns:a=\"http://schemas.microsoft.com/xrm/2011/Contracts\" xmlns:b=\"http://schemas.microsoft.com/crm/2011/Contracts\">" +
         "<a:Parameters xmlns:c=\"http://schemas.datacontract.org/2004/07/System.Collections.Generic\">" +
           "<a:KeyValuePairOfstringanyType>" +
             "<c:key>EntityId</c:key>" +
             "<c:value i:type=\"d:guid\" xmlns:d=\"http://schemas.microsoft.com/2003/10/Serialization/\">" + entityId + "</c:value>" +
           "</a:KeyValuePairOfstringanyType>" +
           "<a:KeyValuePairOfstringanyType>" +
             "<c:key>WorkflowId</c:key>" +
             "<c:value i:type=\"d:guid\" xmlns:d=\"http://schemas.microsoft.com/2003/10/Serialization/\">" + workflowProcessId + "</c:value>" +
           "</a:KeyValuePairOfstringanyType>" +
         "</a:Parameters>" +
         "<a:RequestId i:nil=\"true\" />" +
         "<a:RequestName>ExecuteWorkflow</a:RequestName>" +
       "</request>" +
     "</Execute>" +
   "</s:Body>" +
 "</s:Envelope>";
 
  var requestURL = Xrm.Page.context.getClientUrl() + "/XRMServices/2011/Organization.svc/web";
  var xmlHttpRequest = new XMLHttpRequest();
  xmlHttpRequest.open("POST", requestURL, false)
  xmlHttpRequest.setRequestHeader("Accept", "application/xml, text/xml, */*");
  xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
  xmlHttpRequest.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute");
  xmlHttpRequest.send(request);
}


That’s it. The above common method can be used to trigger workflow from JavaScript.

I hope this would be helpful.



Friday 8 March 2013

Dynamics CRM 4.0 to 2011 upgrade - ISV tab dilemma

Currently, I am working on one of my projects where in I was told to develop an upgrade plan, to upgrade an organization from CRM 4.0 to 2011. The customer uses couple of third party add-ons and these add-ons have applied some changes in ISV.config file in CRM 4.0. I have prepared my lists for upgrade and started with test runs, during this time I found some unwanted ISV tab(highlighted in below screen shot) on some of the in-built and custom entities.

image

After some binging, I came to know that this is by design. All Custom Menu and Grid Buttons of CRM 4.0 would be upgraded as new tab besides Customize tab in CRM 2011. To know more about this symptom, you can refer below link.

http://support.microsoft.com/kb/2501761

There are couple of solutions which could be applied to get rid of this ISV tab as explained below,

1. You can remove these buttons from CRM 4.0 via updating ISV.config file before upgrade.

2. You can change the RibbonDiffXml part of customization xml file, as described in above link after upgrading an organization.

If you want to apply second solution then you can use Ribbon Workbench tool for CRM 2011. You can download & import this add-on with the help of below URL.

http://www.develop1.net/public/page/Ribbon-Workbench-for-Dynamics-CRM-2011.aspx

And then,

1. Create a solution with just the application ribbon in it.

2. Find the ISV tab

3. Right click on it and select 'Un-customise Tab'

4. Publish your solution.

According to my knowledge the Visual Ribbon Editor tool does not support this feature as of now.

I hope this would be helpful.