Microsoft Dynamics CRM 2011– Adding and Removing Buttons from the Ribbon

This tutorial will show you how to add and remove buttons to the ribbon in CRM 2011.

There are three different places you can add buttons to on the CRM Ribbon. They are the entities grid view (HompageGrid), the form (Form), and the in-line grid inside of another form or dashboard (SubGrid).

Adding a Button to the Ribbon

Adding a button has two parts, the first part is finding the control which we want to add the button to, and the second part is modifying the customization.xml file to add the button.

Part 1: Find the Control

Download and install the latest CRM 2011 SDK. (http://www.microsoft.com/downloads/en/details.aspx?familyid=420f0f05-c226-4194-b7e1-f23ceaa83b69)

Open the following Visual Studio solution from the SDK: $\sdk\samplecode\cs\client\ribbon\exportribbonxml\exportribbonxml.sln

Run the program, connect to the necessary CRM organization, and generate the files. Note, if you are connecting to an online organization, the connection URL will be crm.dynamics.com

Your command window will look similar to the following when it is complete:

image

Open up the generated xml file from $\sdk\samplecode\cs\client\ribbon\exportribbonxml\exportedribbonxml\<entity_name>Ribbon.xml

From here you can find the different tabs for the HomepageGrid, Form, and SubGrid. In my case, I have opened the .xml file for tallan_ribbontest. Note that you cannot modify the ribbon by changing this file.

image

Now you have to locate the necessary control for the tab that you want to add or remove a button to.

In this example I am going to add a button to the Data group on the Main tab of the Form.

image

The control for this is as follows:

image

Part 2: Modifying the customization.xml file

Now that we have the control, we can add the button to our Ribbon.

Create a CRM Solution with the single entity whose ribbon you want to customize.

Export it as unmanaged and open the customizations.xml file. You can use any xml editor to modify it. In my case I am using Visual Studio.

Search for <RibbonDiffXml>. This is where we will be making most of our modifications.

image

Under the <RibbonDiffXml> node, we will modify the <CustomActions /> node to add the button.

Replace it with the following code:

<CustomActions>
  <CustomAction Id="Mscrm.Form.tallan_ribbontest.MainTab.ExportData.Controls.Link"
    Location="Mscrm.Form.tallan_ribbontest.MainTab.ExportData.Controls._children"
    Sequence="1">
    <CommandUIDefinition>
      <Button Id="Mscrm.Form.tallan_ribbontest.MainTab.ExportData.Controls.Link.Button"
      Command="Mscrm.Form.tallan_ribbontest.Link.Command"
      LabelText="Open Web Site"
      ToolTipTitle="Tip"
      ToolTipDescription="http://www.tallan.com"
      TemplateAlias="o1"
      Image16by16="/_imgs/ribbon/NewRecord_16.png"
      Image32by32="/_imgs/ribbon/newrecord32.png" />
    </CommandUIDefinition>
  </CustomAction>
</CustomActions>

The Location tag is defined as the Control that we found above, followed by "._children". This can be changed based on any control tag.

If you have your own images, you can add them as a web resource and reference them as follows:

  • Image16by16="$webresource:new_image16x16"
  • Image32by32="$webresource:new_image32x32"

Be sure not to forget to close the CustomActions node.

Next we will define the button command in the <CommandDefinitions /> node. We can define it as a URL, as JavaScript, or as other pre-defined commands. Here is an example of creating a common URL command and a JavaScript command.

URL:

<CommandDefinitions>
  <CommandDefinition Id="Mscrm.Form.tallan_ribbontest.Link.Command">
    <EnableRules>
    </EnableRules>
    <DisplayRules>
    </DisplayRules>
    <Actions>
      <Url Address="http://www.tallan.com" />
    </Actions>
  </CommandDefinition>
</CommandDefinitions>

This will link to the URL http://www.tallan.com

JavaScript:

<CommandDefinitions>
  <CommandDefinition Id="Mscrm.Form.tallan_ribbontest.Link.Command">
    <EnableRules>
    </EnableRules>
    <DisplayRules>
    </DisplayRules>
    <Actions>
      <JavaScriptFunction Library="$webresource:tallan_javascript" FunctionName="tallan.javascript.ribbonMethod">
        <CrmParameter Value="SelectedControlSelectedItemReferences" />
        <StringParameter Value="StringParameter" />
      </JavaScriptFunction>
    </Actions>
  </CommandDefinition>
</CommandDefinitions>

In this example the javascript websource name is "tallan_javascript", the function is "tallan.javascript.ribbonMethod", and the parameters are "SelectedControlSelectedItemReferences", and "StringParameter". These should be replaced accordingly.

After we have added the button and the command, save the customizations.xml file, add it back to your solution.zip file, and import it into your organization.

Once your customizations are published, you will be able to see the new button in the ribbon.

image

Removing a Button from the Ribbon:

Hiding a ribbon button is actually easier than adding a button. Removing a button has two parts. The first part is finding the Button Id that you want to hide, and the second part is adding the action to hide that button.

Part 1: Find the Button Id to remove

In this example we are going to hide the "Save" Button from the Form.

First we need to go back to the file that was generated from the SDK solution (<entity_name>Ribbon.xml)

Find the button that you want to remove.

image

We can see that this is the correct button because it is under the Form, it is the MainTab, it is under the Groups node instead of the Scaling node, and the button ID has the correct description.

Part 2: Remove the button using customization.xml

Now we go back to the customizations.xml file from above, and we add the following line to the CustomActions section.

<HideCustomAction Location="Mscrm.Form.tallan_ribbontest.Save" HideActionId="Mscrm.Form.tallan_ribbontest.Save.HideAction" />

Save the customization.xml file, add it back to your solution.zip file, import it back into the system, and publish the customizations.

The form will now look as follows:

image

Side Notes:

It is possible to add the XML schemas for the ribbon to have some intellisense while making modifications. In Visual Studio, from the XML menu click “Schemas…” then “Add…”. After that you can add the following Schemas:

    • ribboncore.xsd
    • ribbontypes.xsd
    • ribbonwss.xsd
    • customizationsolution.xsd

These schemas are located in the SDK in the following location: $\sdk\schemas

Robert Lanzilli (robert.lanzilli@tallan.com)

This entry was posted in Dynamics CRM and tagged , , , , , , . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*