Adding Custom Tab with Custom Button in CRM 2011


Hi,

There is one walkthrough in CRM SDK — Add a Custom Tab to a Specific Entity.

I have modified it to work for only the form of the entity.

And the tab and the button would appear only in case of existing record (not while record is getting created)

To use the code just replace new_case with the name of the entity and get the images from the walkthrough folder.

<RibbonDiffXml>
<CustomActions>
<CustomAction Id=”Sample.Form.new_case.CustomTab.CustomAction” Location=”Mscrm.Tabs._children” Sequence=”40″>
<CommandUIDefinition>
<Tab Id=”Sample.Form.new_case.CustomTab” Command=”Sample.Form.new_case.CustomTab” Title=”Eligibility” Description=”Eligibility” Sequence=”40″>
<Scaling Id=”Sample.Form.new_case.CustomTab.Scaling”>
<MaxSize Id=”Sample.Form.new_case.CustomTab.FirstGroup.MaxSize” GroupId=”Sample.Form.new_case.CustomTab.FirstGroup” Sequence=”10″ Size=”LargeMedium”/>
</Scaling>
<Groups Id=”Sample.Form.new_case.CustomTab.Groups”>
<Group Id=”Sample.Form.new_case.CustomTab.FirstGroup” Command=”Sample.Form.new_case.FirstGroup” Sequence=”10″ Title=”Eligibililty” Template=”Mscrm.Templates.3.3″>
<Controls Id=”Sample.Grid.new_case.CustomTab.FirstGroup.Controls”>
<Button Id=”Sample.Form.new_case.CustomTab.FirstGroup.FirstButton” ToolTipTitle=”Add Clients” ToolTipDescription=”To add clients to the case” Command=”Sample.Form.new_case.FirstButton” Sequence=”10″ LabelText=”Add Clients” Alt=”Add Clients” Image16by16=”$webresource:sample_/icons/1Icon16x16.png” Image32by32=”$webresource:sample_/icons/1Icon32x32.png” TemplateAlias=”o1″/>
<Button Id=”Sample.Form.new_case.CustomTab.FirstGroup.SecondButton” ToolTipTitle=”Manage Relationship” ToolTipDescription=”To manage relationship between the members” Command=”Sample.Form.new_case.SecondButton” Sequence=”10″ LabelText=”Manage Relationship” Alt=”Manage Relationship” Image16by16=”$webresource:sample_/icons/2Icon16x16.png” Image32by32=”$webresource:sample_/icons/2Icon32x32.png” TemplateAlias=”o1″/>
<Button Id=”Sample.Form.new_case.CustomTab.FirstGroup.ThirdButton” ToolTipTitle=”Add Programs” ToolTipDescription=”To add program request to the case” Command=”Sample.Form.new_case.ThirdButton” Sequence=”10″ LabelText=”Add Programs” Alt=”Add Programs” Image16by16=”$webresource:sample_/icons/3Icon16x16.png” Image32by32=”$webresource:sample_/icons/3Icon32x32.png” TemplateAlias=”o1″/>
<Button Id=”Sample.Form.new_case.CustomTab.FirstGroup.FourthButton” ToolTipTitle=”Determine Eligibility” ToolTipDescription=”To determine eligibility” Command=”Sample.Form.new_case.FourthButton” Sequence=”10″ LabelText=”Determine Eligibility” Alt=”Determine Eligibility” Image16by16=”$webresource:sample_/icons/4Icon16x16.png” Image32by32=”$webresource:sample_/icons/4Icon32x32.png” TemplateAlias=”o1″/>
</Controls>
</Group>
</Groups>
</Tab>
</CommandUIDefinition>
</CustomAction>
</CustomActions>
<Templates>
<RibbonTemplates Id=”Mscrm.Templates”/>
</Templates>
<CommandDefinitions>
<CommandDefinition Id=”Sample.Form.new_case.ThirdButton”>
<EnableRules>
<EnableRule Id=”Mscrm.Enabled “/>
</EnableRules>
<DisplayRules>
<DisplayRule Id=”Sample.new_case.form.FormStateNotNew.DisplayRule3″/>
</DisplayRules>
<Actions>
<JavaScriptFunction Library=”$webresource:new_JS” FunctionName=”CallThree”/>
</Actions>
</CommandDefinition>
<CommandDefinition Id=”Sample.Form.new_case.SecondButton”>
<EnableRules>
<EnableRule Id=”Mscrm.Enabled “/>
</EnableRules>
<DisplayRules>
<DisplayRule Id=”Sample.new_case.form.FormStateNotNew.DisplayRule2″/>
</DisplayRules>
<Actions>
<JavaScriptFunction Library=”$webresource:new_JS” FunctionName=”CallTwo”/>
</Actions>
</CommandDefinition>
<CommandDefinition Id=”Sample.Form.new_case.CustomTab”>
<EnableRules>
<EnableRule Id=”Mscrm.Enabled “/>
</EnableRules>
<DisplayRules>
<DisplayRule Id=”Sample.new_case.form.FormStateNotNew.DisplayRule1″/>
</DisplayRules>
<Actions/>
</CommandDefinition>
<CommandDefinition Id=”Sample.Form.new_case.FirstButton”>
<EnableRules>
<EnableRule Id=”Mscrm.Enabled “/>
</EnableRules>
<DisplayRules>
<DisplayRule Id=”Sample.new_case.form.FormStateNotNew.DisplayRule”/>
</DisplayRules>
<Actions>
<JavaScriptFunction Library=”$webresource:new_JS” FunctionName=”CallOne”/>
</Actions>
</CommandDefinition>
<CommandDefinition Id=”Sample.Form.new_case.FourthButton”>
<EnableRules>
<EnableRule Id=”Mscrm.Enabled “/>
</EnableRules>
<DisplayRules>
<DisplayRule Id=”Sample.new_case.form.FormStateNotNew.DisplayRule4″/>
</DisplayRules>
<Actions>
<JavaScriptFunction Library=”$webresource:new_JS” FunctionName=”CallFour”/>
</Actions>
</CommandDefinition>
<CommandDefinition Id=”Sample.Form.new_case.FirstGroup”>
<EnableRules>
<EnableRule Id=”Mscrm.Enabled “/>
</EnableRules>
<DisplayRules/>
<Actions/>
</CommandDefinition>
</CommandDefinitions>
<RuleDefinitions>
<TabDisplayRules>
<TabDisplayRule TabCommand=”Sample.Form.new_case.CustomTab”>
<EntityRule EntityName=”new_case” Context=”Form” AppliesTo=”PrimaryEntity”/>
</TabDisplayRule>
</TabDisplayRules>
<DisplayRules>
<DisplayRule Id=”Sample.new_case.form.FormStateNotNew.DisplayRule3″>
<FormStateRule State=”Create” InvertResult=”true”/>
</DisplayRule>
<DisplayRule Id=”Sample.new_case.form.FormStateNotNew.DisplayRule1″>
<FormStateRule State=”Create” InvertResult=”true”/>
</DisplayRule>
<DisplayRule Id=”Sample.new_case.form.FormStateNotNew.DisplayRule”>
<FormStateRule State=”Create” InvertResult=”true”/>
</DisplayRule>
<DisplayRule Id=”Sample.new_case.form.FormStateNotNew.DisplayRule2″>
<FormStateRule State=”Create” InvertResult=”true”/>
</DisplayRule>
<DisplayRule Id=”Sample.new_case.form.FormStateNotNew.DisplayRule4″>
<FormStateRule State=”Create” InvertResult=”true”/>
</DisplayRule>
</DisplayRules>
<EnableRules/>
</RuleDefinitions>
<LocLabels/>
</RibbonDiffXml>

To get the solution

http://www.box.net/shared/sgpnqdbjot

Hope this helps !

Sample Code to add a custom button to a custom group in CRM 2011


Hi,

Following is the sample code to add a custom button to a custom group for a custom entity (new_test)

The button gets displayed only when the record is created.

We need to define Display Rule for that in Rule Definitions and use that rule within Command Defintion for the Button


<RibbonDiffXml>
  <CustomActions>
   <CustomAction Id="Sample.Form.new_test.CustomTab.CustomAction" Location="Mscrm.Tabs._children" Sequence="40">
    <CommandUIDefinition>
     <Tab Id="Sample.Form.new_test.CustomTab" Command="Sample.Form.new_test.CustomTab" Title="My First Custom Tab" Description="Finally managed to put my first custom tab" Sequence="40">
      <Scaling Id="Sample.Form.new_test.CustomTab.Scaling">
       <MaxSize Id="Sample.Form.new_test.CustomTab.FirstGroup.MaxSize" GroupId="Sample.Form.new_test.CustomTab.FirstGroup" Sequence="10" Size="LargeMedium"/>
      </Scaling>
      <Groups Id="Sample.Form.new_test.CustomTab.Groups">
       <Group Id="Sample.Form.new_test.CustomTab.FirstGroup" Command="Sample.Form.new_test.FirstGroup" Sequence="10" Title="Custom Group" Template="Mscrm.Templates.3.3">
        <Controls Id="Sample.Grid.new_test.CustomTab.FirstGroup.Controls">
         <Button Id="Sample.Form.new_test.CustomTab.FirstGroup.FirstButton" ToolTipTitle="My First Button Tool Tip" ToolTipDescription="My First Button Tool Tip Description" Command="Sample.Form.new_test.FirstButton" Sequence="10" LabelText="First Button" Alt="Alt First Button" TemplateAlias="o1"/>
        </Controls>
       </Group>
      </Groups>
     </Tab>
    </CommandUIDefinition>
   </CustomAction>
  </CustomActions>
  <Templates>
   <RibbonTemplates Id="Mscrm.Templates"/>
  </Templates>
  <CommandDefinitions>
   <CommandDefinition Id="Sample.Form.new_test.CustomTab">
    <EnableRules>
     <EnableRule Id="Mscrm.Enabled "/>
    </EnableRules>
    <DisplayRules>
     </DisplayRules>
    <Actions/>
   </CommandDefinition>
   <CommandDefinition Id="Sample.Form.new_test.FirstGroup">
    <EnableRules>
     <EnableRule Id="Mscrm.Enabled "/>
    </EnableRules>
    <DisplayRules>
     </DisplayRules>
    <Actions/>
   </CommandDefinition>
   <CommandDefinition Id="Sample.Form.new_test.FirstButton">
    <EnableRules>
     <EnableRule Id="Mscrm.Enabled "/>
    </EnableRules>
    <DisplayRules>
     <DisplayRule Id="Sample.new_test.form.FormStateNotNew.DisplayRule">
       </DisplayRule>
    </DisplayRules>
    <Actions>
     </Actions>
   </CommandDefinition>
  </CommandDefinitions>
  <RuleDefinitions>
   <TabDisplayRules>
    <TabDisplayRule TabCommand="Sample.Form.new_test.CustomTab">
     <EntityRule EntityName="new_test" Context="Form" AppliesTo="PrimaryEntity"/>
    </TabDisplayRule>
   </TabDisplayRules>
   <DisplayRules>
    <DisplayRule Id="Sample.new_test.form.FormStateNotNew.DisplayRule">
     <FormStateRule State="Create" InvertResult="true"/>
    </DisplayRule>
   </DisplayRules>
   <EnableRules/>
  </RuleDefinitions>
  <LocLabels/>
 </RibbonDiffXml>

Hope it helps !

Sample Code to add a custom tab to a custom entity in CRM 2011


Hi,

Customizing the Ribbon interface in CRM 2011 is not that easy, if we compare it to the ISV.CONFIG.

Here i am posting a sample xml file that we can use to create a custom tab within an entity.

Suppose the schema name of the entity is new_test, so use the following code to add a custom tab to it.

I am posting the RibbonDiffXml part

<RibbonDiffXml>
 <CustomActions>
  <CustomAction Id=”Sample.Form.new_test.CustomTab.CustomAction” Location=”Mscrm.Tabs._children” Sequence=”40″>
   <CommandUIDefinition>
    <Tab Id=”Sample.Form.new_test.CustomTab” Command=”Sample.Form.new_test.CustomTab” Title=”My First Custom Tab” Description=”Finally managed to put my first custom tab” Sequence=”40″>
     <Scaling Id=”Sample.Form.new_test.CustomTab.Scaling”>
      <MaxSize Id=”Sample.Form.new_test.CustomTab.FirstGroup.MaxSize” GroupId=”Sample.Form.new_test.CustomTab.FirstGroup” Sequence=”10″ Size=”LargeMedium”/>
     </Scaling>
     <Groups Id=”Sample.Form.new_test.CustomTab.Groups”>
      <Group Id=”Sample.Form.new_test.CustomTab.FirstGroup” Command=”Sample.Form.new_test.FirstGroup” Sequence=”10″ Title=”Custom Group” Template=”Mscrm.Templates.3.3″>
       <Controls Id=”Sample.Grid.new_test.CustomTab.FirstGroup.Controls”/>
      </Group>
     </Groups>
    </Tab>
   </CommandUIDefinition>
  </CustomAction>
 </CustomActions>
 <Templates>
  <RibbonTemplates Id=”Mscrm.Templates”/>
 </Templates>
 <CommandDefinitions>
  <CommandDefinition Id=”Sample.Form.new_test.CustomTab”>
   <EnableRules>
    <EnableRule Id=”Mscrm.Enabled “/>
   </EnableRules>
   <DisplayRules>     
    </DisplayRules>
   <Actions/>
  </CommandDefinition>
  <CommandDefinition Id=”Sample.Form.new_test.FirstGroup”>
   <EnableRules>
    <EnableRule Id=”Mscrm.Enabled “/>
   </EnableRules>
   <DisplayRules>
    </DisplayRules>
   <Actions/>
  </CommandDefinition>
 </CommandDefinitions>
 <RuleDefinitions>
  <TabDisplayRules>
   <TabDisplayRule TabCommand=”Sample.Form.new_test.CustomTab”>
    <EntityRule EntityName=”new_test” Context=”Form” AppliesTo=”PrimaryEntity”/>
   </TabDisplayRule>
  </TabDisplayRules>
  <DisplayRules/>
  <EnableRules/>
 </RuleDefinitions>
 <LocLabels/>
</RibbonDiffXml>

Hope it helps !

Could not load file or assembly ‘Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ or one of its dependencies. The system cannot find the file specified.”:”Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35


Hi,

Got this error while working with WCF services in CRM 2011 from within a windows application.

Resolved it by installing Windows Identity Foundation

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=eb9c345f-e830-40b8-a5fe-ae7a864c4d76&displaylang=en

Bye..

Get quotenumber (Quote ID) on PostCreate plugin


Hi,

I got the following comment on my blog.

“I wrote a plugin that creates a folder in SharePoint. It works just fine. However, I need to be able to use the quotenumber as the folder name. I am having problems figuring out how to retrieve that value. I am able to retrieve values of other fields, but the quote number is assigned when the record is saved. I am guessing that the quote number is not getting assigned until after the plugin is being called. I am not sure what to do. Any ideas?”

So i thought of trying it out. I created a Post Create plugin (synchronous) against quote entity. Than wrote code to retrieve the value for quotenumber from the inputparameters property bag. As it was create event i thought the value must be there for it. However i saw that the quotenumber property is not being passed as a part of inputparameters.

So than I used ForceSubmit method to get its value. However this time i was getting blank value. Than tried by registering the post entity image, but was still getting the blank value.

Finally i tried by registering the plugin in child pipeline, and to my surprise the value was there for the quotenumber attribute.

So to get the quotenumber we need to register our plugin in post create and childpipeline. ( no need of ForceSubmit method or PostEntityImage)

I hope it helps !

 

Bye.

Know more about Visual Studio 2010


Hi,

Check out these wonderful posts !

http://weblogs.asp.net/scottgu/archive/2009/08/25/vs-2010-and-net-4-series.aspx

http://scottcate.com/tricks/

Bye..

Nishant Rana's Weblog

Everything related to Microsoft .NET Technology

Skip to content ↓