1. Create a new solution OR use default solution
>>Settings > Customization > Solutions > New >
2. Open NewSolution >
3. Add the Opportunity Entity
4. Export the solution then extract
5. Open the customization.xml and find <RibbonDiffXml> of Opportunity Entity
6. Replace the <RibbonDiffXml> with the code below. What we have done here is that, we added a display rule and use this rule in Mark as Lost and Mark as Won ribbon button. The rule we added is this:
<DisplayRule Id="myApp.DisplayRule">
<EntityPrivilegeRule EntityName="systemuser" PrivilegeType="Create" PrivilegeDepth="Global" />
</DisplayRule>
>>>The user who has a create privilege on systemuser entity is the only user who could access and see these two buttons.
Code: Select all
<RibbonDiffXml>
<CustomActions>
<CustomAction Id="Mscrm.Form.opportunity.MarkAsLost.CustomAction" Sequence="201" Location="Mscrm.Form.opportunity.MainTab.Actions.Controls._children">
<CommandUIDefinition>
<Button Id="Mscrm.Form.opportunity.MarkAsLost" Command="Mscrm.Form.opportunity.MarkAsLost" Sequence="4" Alt="$Resources:Ribbon.Form.opportunity.MainTab.Actions.MarkAsLost" LabelText="$Resources:Ribbon.Form.opportunity.MainTab.Actions.MarkAsLost" Image16by16="/_imgs/SFA/MarkAsLost_16.png" Image32by32="/_imgs/SFA/MarkAsLost_32.png" TemplateAlias="o1" ToolTipTitle="$Resources:Mscrm_Form_opportunity_MainTab_Actions_MarkAsLost_ToolTipTitle" ToolTipDescription="$Resources:Mscrm_Form_opportunity_MainTab_Actions_MarkAsLost_ToolTipDescription" />
</CommandUIDefinition>
</CustomAction>
<CustomAction Id="Mscrm.Form.opportunity.MarkAsWon.CustomAction" Sequence="201" Location="Mscrm.Form.opportunity.MainTab.Actions.Controls._children">
<CommandUIDefinition>
<Button Id="Mscrm.Form.opportunity.MarkAsWon" Command="Mscrm.Form.opportunity.MarkAsWon" Sequence="3" Alt="$Resources:Ribbon.Form.opportunity.MainTab.Actions.MarkAsWon" LabelText="$Resources:Ribbon.Form.opportunity.MainTab.Actions.MarkAsWon" Image16by16="/_imgs/SFA/MarkAsWon_16.png" Image32by32="/_imgs/SFA/MarkAsWon_32.png" TemplateAlias="o1" ToolTipTitle="$Resources:Mscrm_Form_opportunity_MainTab_Actions_MarkAsWon_ToolTipTitle" ToolTipDescription="$Resources:Mscrm_Form_opportunity_MainTab_Actions_MarkAsWon_ToolTipDescription" />
</CommandUIDefinition>
</CustomAction>
<CustomAction Id="Mscrm.HomepageGrid.opportunity.MarkAsLost.CustomAction" Sequence="200" Location="Mscrm.Form.opportunity.MainTab.Actions.Controls._children">
<CommandUIDefinition>
<Button Id="Mscrm.HomepageGrid.opportunity.MarkAsLost" Command="Mscrm.HomepageGrid.opportunity.MarkAsLost" Sequence="6" Alt="$Resources:Ribbon.Form.opportunity.MainTab.Actions.MarkAsLost" LabelText="$Resources:Ribbon.Form.opportunity.MainTab.Actions.MarkAsLost" Image16by16="/_imgs/SFA/MarkAsLost_16.png" Image32by32="/_imgs/SFA/MarkAsLost_32.png" TemplateAlias="o1" ToolTipTitle="$Resources:Mscrm_HomepageGrid_opportunity_MainTab_Actions_MarkAsLost_ToolTipTitle" ToolTipDescription="$Resources:Mscrm_HomepageGrid_opportunity_MainTab_Actions_MarkAsLost_ToolTipDescription" />
</CommandUIDefinition>
</CustomAction>
<CustomAction Id="Mscrm.HomepageGrid.opportunity.MarkAsWon.CustomAction" Sequence="200" Location="Mscrm.Form.opportunity.MainTab.Actions.Controls._children">
<CommandUIDefinition>
<Button Id="Mscrm.HomepageGrid.opportunity.MarkAsWon" Command="Mscrm.HomepageGrid.opportunity.MarkAsWon" Sequence="5" Alt="$Resources:Ribbon.Form.opportunity.MainTab.Actions.MarkAsWon" LabelText="$Resources:Ribbon.Form.opportunity.MainTab.Actions.MarkAsWon" Image16by16="/_imgs/SFA/MarkAsWon_16.png" Image32by32="/_imgs/SFA/MarkAsWon_32.png" TemplateAlias="o1" ToolTipTitle="$Resources:Mscrm_HomepageGrid_opportunity_MainTab_Actions_MarkAsWon_ToolTipTitle" ToolTipDescription="$Resources:Mscrm_HomepageGrid_opportunity_MainTab_Actions_MarkAsWon_ToolTipDescription" />
</CommandUIDefinition>
</CustomAction>
</CustomActions>
<Templates>
<RibbonTemplates Id="Mscrm.Templates"></RibbonTemplates>
</Templates>
<CommandDefinitions>
<CommandDefinition Id="Mscrm.Form.opportunity.MarkAsLost">
<EnableRules>
<EnableRule Id="Mscrm.CanWritePrimary" />
</EnableRules>
<DisplayRules>
<DisplayRule Id="Mscrm.CanWriteOpportunity" />
<DisplayRule Id="myApp.DisplayRule" />
</DisplayRules>
<Actions>
<JavaScriptFunction FunctionName="complete" Library="/_static/sfa/opps/opps.js">
<BoolParameter Value="false" />
</JavaScriptFunction>
</Actions>
</CommandDefinition>
<CommandDefinition Id="Mscrm.Form.opportunity.MarkAsWon">
<EnableRules>
<EnableRule Id="Mscrm.CanWritePrimary" />
</EnableRules>
<DisplayRules>
<DisplayRule Id="Mscrm.CanWriteOpportunity" />
<DisplayRule Id="myApp.DisplayRule" />
</DisplayRules>
<Actions>
<JavaScriptFunction FunctionName="complete" Library="/_static/sfa/opps/opps.js">
<BoolParameter Value="true" />
</JavaScriptFunction>
</Actions>
</CommandDefinition>
<CommandDefinition Id="Mscrm.HomepageGrid.opportunity.MarkAsLost">
<EnableRules>
<EnableRule Id="Mscrm.SelectionCountExactlyOne" />
<EnableRule Id="Mscrm.VisualizationPaneNotMaximized" />
</EnableRules>
<DisplayRules>
<DisplayRule Id="Mscrm.CanWriteOpportunity" />
<DisplayRule Id="myApp.DisplayRule" />
</DisplayRules>
<Actions>
<JavaScriptFunction FunctionName="Mscrm.OpportunityActions.close" Library="/_static/_common/scripts/ribbonactions.js">
<CrmParameter Value="SelectedControlSelectedItemReferences" />
<BoolParameter Value="false" />
<CrmParameter Value="SelectedControl" />
</JavaScriptFunction>
</Actions>
</CommandDefinition>
<CommandDefinition Id="Mscrm.HomepageGrid.opportunity.MarkAsWon">
<EnableRules>
<EnableRule Id="Mscrm.SelectionCountExactlyOne" />
<EnableRule Id="Mscrm.VisualizationPaneNotMaximized" />
</EnableRules>
<DisplayRules>
<DisplayRule Id="Mscrm.CanWriteOpportunity" />
<DisplayRule Id="myApp.DisplayRule" />
</DisplayRules>
<Actions>
<JavaScriptFunction FunctionName="Mscrm.OpportunityActions.close" Library="/_static/_common/scripts/ribbonactions.js">
<CrmParameter Value="SelectedControlSelectedItemReferences" />
<BoolParameter Value="true" />
<CrmParameter Value="SelectedControl" />
</JavaScriptFunction>
</Actions>
</CommandDefinition>
</CommandDefinitions>
<RuleDefinitions>
<TabDisplayRules />
<DisplayRules>
<DisplayRule Id="myApp.DisplayRule">
<EntityPrivilegeRule EntityName="systemuser" PrivilegeType="Create" PrivilegeDepth="Global" />
</DisplayRule>
</DisplayRules>
<EnableRules />
</RuleDefinitions>
<LocLabels />
</RibbonDiffXml>
7. Save and import the solution into your organization.