Security Exception: That assembly does not allow partially trusted callers in CRM 2011 plugin.


Hi,

We were getting the below error in one of our plugins. The reason was because we were making use of HttpContext class of System.Web assembly.

For our on-premise deployment it was working fine, we were getting this issue only on registering plugin on Sandbox mode.

We can find the explanation here

http://social.microsoft.com/Forums/en-US/crmdevelopment/thread/302377cf-97bd-4fe9-b7d0-fa7f08152927/

Bye.

Four Nested If Limitations on workflows in CRM.


Hi,

We recently had a requirement to write a workflow that would require nested if conditions. Much to our surprise we realized that only 4 nested if conditions are supported.

After selecting “Select this row for “IF 5″and clicking on “Add Step”, we can see the Add Step menu greyed out.

The workaround is to use Child Workflow.

Check out this wonderful article

http://www.wipfli.com/BlogPost_MCRM_blog_10_14_09.aspx

Hope it helps.

Using multiple JavaScriptFunction for Actions in CRM 2011 Ribbon.


Hi,

We had a requirement in which we wanted to add some functionality on the existing Distribute Campaign Activity button for Campaign Activity entity.

For e.g. before we start the distribution we wanted to check for a specific value for all the Marketing Lists associated to that Campaign Activity. Based on it we wanted to proceed further or stop the distribution.

So we created a new custom button using the same definitions used for the existing Distribute Campaign Activity button (i.e. same CommandDefinitions and RuleDefinitions). The only thing we added was the new JavaScriptFunction in the Actions menu. It was referring to the function name CheckMLUA inside the webresource name new_CheckML

Now inside this new JavaScriptFunction we wanted to call the CallDistribute function that is being used by the OOB Distribute Campaign Activity button

For this to work we defined the FunctionName as isNAN for campaignactivity.js.

“For each library, add a <JavaScriptFunction Library=”$webresource:webresourceName” FunctionName=”isNaN” /> node. It requires a function name, so we’ve just been putting isNaN in there so there’s no error.”

<JavaScriptFunction
Library=$webresource:new_CheckML
FunctionName=CheckMLUA />

<JavaScriptFunction
FunctionName=isNaN
Library=/_static/ma/campaignactivity/campaignactivity.js>

<CrmParameter
Value=PrimaryEntityTypeCode />

</JavaScriptFunction>

And our function

RibbonDiffXML

</pre>
<RibbonDiffXml>
 <CustomActions>
 <CustomAction Id="WWB.Form.campaignactivity.MainTab.Actions.Distribute.CustomAction" Location="Mscrm.Form.campaignactivity.MainTab.Actions.Controls._children" Sequence="41">
 <CommandUIDefinition>
 <Button Id="WWB.Form.campaignactivity.MainTab.Actions.Distribute" Command="WWB.Form.campaignactivity.MainTab.Actions.Distribute.Command" Sequence="0" ToolTipTitle="$LocLabels:WWB.Form.campaignactivity.MainTab.Actions.Distribute.LabelText" LabelText="$LocLabels:WWB.Form.campaignactivity.MainTab.Actions.Distribute.LabelText" ToolTipDescription="$LocLabels:WWB.Form.campaignactivity.MainTab.Actions.Distribute.Description" TemplateAlias="o1" Image16by16="/_imgs/MA/CampaignActivityDistribute_16.png" Image32by32="/_imgs/MA/CampaignActivityDistribute_32.png" />
 </CommandUIDefinition>
 </CustomAction>
 </CustomActions>
 <Templates>
 <RibbonTemplates Id="Mscrm.Templates"></RibbonTemplates>
 </Templates>
 <CommandDefinitions>
 <CommandDefinition Id="WWB.Form.campaignactivity.MainTab.Actions.Distribute.Command">
 <EnableRules>
 <EnableRule Id="WWB.Form.campaignactivity.MainTab.Actions.Distribute.Command.EnableRule.FormStateRule" />
 </EnableRules>
 <DisplayRules>
 <DisplayRule Id="WWB.Form.campaignactivity.MainTab.Actions.Distribute.Command.DisplayRule.EntityPrivilegeRule" />
 </DisplayRules>
 <Actions>
 <JavaScriptFunction Library="$webresource:new_CheckML" FunctionName="CheckMLUA" />
 <JavaScriptFunction FunctionName="isNaN" Library="/_static/ma/campaignactivity/campaignactivity.js">
 <CrmParameter Value="PrimaryEntityTypeCode" />
 </JavaScriptFunction>
 </Actions>
 </CommandDefinition>
 </CommandDefinitions>
 <RuleDefinitions>
 <TabDisplayRules />
 <DisplayRules>
 <DisplayRule Id="WWB.Form.campaignactivity.MainTab.Actions.Distribute.Command.DisplayRule.EntityPrivilegeRule">
 <EntityPrivilegeRule EntityName="activitypointer" PrivilegeDepth="Basic" PrivilegeType="Create" />
 </DisplayRule>
 </DisplayRules>
 <EnableRules>
 <EnableRule Id="WWB.Form.campaignactivity.MainTab.Actions.Distribute.Command.EnableRule.FormStateRule">
 <FormStateRule State="Existing" />
 </EnableRule>
 </EnableRules>
 </RuleDefinitions>
 <LocLabels>
 <LocLabel Id="WWB.Form.campaignactivity.MainTab.Actions.Distribute.Description">
 <Titles>
 <Title languagecode="1033" description="Distribute Description" />
 </Titles>
 </LocLabel>
 <LocLabel Id="WWB.Form.campaignactivity.MainTab.Actions.Distribute.LabelText">
 <Titles>
 <Title languagecode="1033" description="Distribute" />
 </Titles>
 </LocLabel>
 </LocLabels>
 </RibbonDiffXml>
<pre>

The helpful links

http://rajeevpentyala.wordpress.com/2012/05/23/loading-dependent-jscript-libraries-in-ribbon-buttons-execution-crm-2011/

http://social.microsoft.com/Forums/is/crmdevelopment/thread/02ed3c05-05c2-4638-a139-e070db4561b0

Bye.

Writing a Plugin on “Distribute Campaign Activity” message in CRM.


Hi,

We recently had a requirement to execute a plugin  when a CampaignActivity is distributed using “Distribute Campaign Activity” button.

As it turned out, this message was not available.

As it was on premise, we enabled it in an unsupported manner i.e. by updating the sdkmessagefilterbase table in orgname_mscrm database.

SQL Query Used :-

update sdkmessagefilterbase

set isCustomProcessingStepAllowed=1

where

sdkmessageid=(select sdkmessageid from sdkmessagebase where name=‘DistributeCampaignActivity’)

and

primaryObjectTypecode=‘4402’


Hope this helps.

Hiding Ribbon Button using JavaScript in CRM 2011.


Suppose based on some value we want to hide the Run Workflow button from Ribbon through JavaScript in form’s onload event.

Firt get the Id of the button using IE Developer Tool and then use display property to hide it


var btnRunWorklfow=top.document.getElementById("new_student|NoRelationship|Form|Mscrm.Form.new_student.RunWorkflow-Large");
btnRunWorklfow.style.display='none';

Bye.

Hierarchical report in SSRS to show users and their managers (CRM)


Hi,

Just created a simple SSRS report that shows the Hierarchy of the users and their manager.

This is how the report looks like

The DataSet query used

Select the row, right click and select group properties option

Select Grouping based on systemuserid

Toggle the visibility based on FullName

Select parentsystemuserid as Recursive Parent from the Advanced option

Set the Left Padding property for the fullname TextBox.

Set the expression for level as Level()

The posts from which I learned creating the hierarchical reports

http://blog.infotoad.com/post/2009/08/10/Working-with-a-Recursive-Hierarchy-Group-in-SQL-Reporting-Services-2008.aspx

http://blog.davyknuysen.be/2010/04/16/parent-child-hierarchies-in-reporting-services/

Bye.