Sunday, 26 May 2013

Adding Custom Button in MsCrm 2011

Suppose we want to add a button next to “Save & Close” button in Account Entity’s form.
To do that we need to define a CustomAction child element to CustomActions element within RibbonDiffXml.
Export the solution containing the account entity.
Attributes for CustomAction are
ID- Give it any unique id.
Location- For defining location we first need to find out the id for Save group within the MainTab of the form and then append _children to it.
_children needs to be defined to add a custom button to an existing group.
Open the accountribbon.xml file within
.. sdk\samplecode\cs\client\ribbon\exportribbonxml\exportedribbonxml\
There we can find the following info.

<Groups Id=”Mscrm.Form.account.MainTab.Groups“>


<Group Id=”
Mscrm.Form.account.MainTab.Save Command=”Mscrm.Enabled Sequence=”10 Title=”$Resources:Ribbon.Form.MainTab.Save Image32by32Popup=”/_imgs/ribbon/save32.png Template=”Mscrm.Templates.Flexible2“>


<Controls Id=”
Mscrm.Form.account.MainTab.Save.Controls“>


<Button Id=”Mscrm.Form.account.SaveAsComplete ToolTipTitle=”$Resources:Ribbon.Form.MainTab.Save.SaveAsComplete ToolTipDescription=”$Resources(EntityDisplayName):Ribbon.Tooltip.SaveAsComplete Command=”Mscrm.SavePrimaryActivityAsComplete Sequence=”10 LabelText=”$Resources:Ribbon.Form.MainTab.Save.SaveAsComplete Alt=”$Resources:Ribbon.Form.MainTab.Save.SaveAsComplete Image16by16=”/_imgs/ribbon/SaveAsCompleted_16.png Image32by32=”/_imgs/ribbon/SaveAsCompleted_32.png TemplateAlias=”o1
/>


Sequence : For sequence first find out the sequence defined for Save & Close button.
<Button Id=”Mscrm.Form.account.SaveAndClose ToolTipTitle=”$Resources:Mscrm_Form_Other_MainTab_Save_SaveAndClose_ToolTipTitle ToolTipDescription=”$Resources(EntityDisplayName):Ribbon.Tooltip.SaveAndClose Command=”Mscrm.SaveAndClosePrimary
Sequence=”30″
LabelText=”$Resources:Ribbon.Form.MainTab.Save.SaveAndClose Alt=”$Resources:Ribbon.Form.MainTab.Save.SaveAndClose Image16by16=”/_imgs/ribbon/saveandclose16.png Image32by32=”/_imgs/ribbon/saveandclose32.png TemplateAlias=”o1
/>


So now our CustomAction should look like this
<CustomAction Id=”CA_MyFirstButton Location=”Mscrm.Form.account.MainTab.Save.Controls._children Sequence=”31“>

Now we next need to define CommandUIDefinition and Button child element to our CustomAction
<CommandUIDefinition>

<Button
Id=B_MyFirstButton


LabelText=My First Button


ToolTipTitle=My First Button Tool Tip Title


ToolTipDescription=My First Button Tool Tip Description


TemplateAlias=o1


Image16by16=/_imgs/ribbon/saveandclose16.png


Image32by32=/_imgs/ribbon/saveandclose32.png

/>

</CommandUIDefinition>

Here we are using the existing icon of Save and Close button.
Save the file, zip it as a part of the solution and import and publish it.

Final definition should look something like this. 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<RibbonDiffXml>
<CustomActions>
<CustomAction
 Id="CA_MyFirstButton"
 Location="Mscrm.Form.account.MainTab.Save.Controls._children"
 Sequence="31">
<CommandUIDefinition>
<Button
 Id="B_MyFirstButton"
 LabelText="My First Button"
 ToolTipTitle="My First Button Tool Tip Title"
 ToolTipDescription="My First Button Tool Tip Description"
 TemplateAlias="o1"
 Image16by16="/_imgs/ribbon/saveandclose16.png"
 Image32by32="/_imgs/ribbon/saveandclose32.png"/>
</CommandUIDefinition>
</CustomAction>
</CustomActions>
<Templates>
<RibbonTemplates
 Id="Mscrm.Templates"/>
</Templates>
<CommandDefinitions/>
<RuleDefinitions>
<TabDisplayRules/>
<DisplayRules/>
<EnableRules/>
</RuleDefinitions>
<LocLabels/>
</RibbonDiffXml>