Answered by:
Simple Ribbon CustomAction for Task Form throws "Ribbon XML Validation Error"

Question
-
When trying to add a new button to the Task form, I cannot get around a "Ribbon XML Validation Error". I've stripped the RibbonXMLDiff down to its most simple form (even stripping out any CommandDefinitions) and it still throws the error. Can anyone see what the problem is here? I've done similar adds to, say, the Email form and it works fine.
<RibbonDiffXml> <CustomActions> <CustomAction Id="MVD.task.form.CompleteAndNew.CustomAction" Location="Mscrm.Form.task.MainTab.Save._children" Sequence="11"> <CommandUIDefinition> <Button Id="MVD.task.form.CompleteAndNew.Button" LabelText="Complete and New" ToolTipTitle="Complete and New" ToolTipDescription="Mark as complete, save, and create new task." TemplateAlias="o1" /> </CommandUIDefinition> </CustomAction> </CustomActions> <Templates> <RibbonTemplates Id="Mscrm.Templates"></RibbonTemplates> </Templates> <CommandDefinitions /> <RuleDefinitions> <TabDisplayRules /> <DisplayRules /> <EnableRules /> </RuleDefinitions> <LocLabels /> </RibbonDiffXml>
Friday, October 21, 2011 1:42 PM
Answers
-
I think you have to correct Location, put a Controls after Save
Location="Mscrm.Form.task.MainTab.Save.Controls._children"
MaKeer | myencounterwithcrm.wordpress.com | CRM2011 User Settings Utility | CRM2011 Lookup Preview- Proposed as answer by Makarand Keer Friday, October 21, 2011 7:56 PM
- Marked as answer by MattVanDyke Friday, October 21, 2011 8:24 PM
Friday, October 21, 2011 7:43 PM
All replies
-
I think you have to correct Location value of CustomAction, there is not group with Name Save, try putting actual GroupName here.
Location="Mscrm.Form.task.MainTab.<<Name of Group>>._children"
<RibbonDiffXml> <CustomActions> <CustomAction Id="MVD.task.form.CompleteAndNew.CustomAction" Location="Mscrm.Form.task.MainTab.<<Name of Group>>._children" Sequence="11"> <CommandUIDefinition> <Button Id="MVD.task.form.CompleteAndNew.Button" LabelText="Complete and New" ToolTipTitle="Complete and New" ToolTipDescription="Mark as complete, save, and create new task." TemplateAlias="o1" /> </CommandUIDefinition> </CustomAction> </CustomActions> <Templates> <RibbonTemplates Id="Mscrm.Templates"></RibbonTemplates> </Templates> <CommandDefinitions /> <RuleDefinitions> <TabDisplayRules /> <DisplayRules /> <EnableRules /> </RuleDefinitions> <LocLabels /> </RibbonDiffXml>
HTH
MaKeer | myencounterwithcrm.wordpress.com | CRM2011 User Settings Utility | CRM2011 Lookup Preview- Edited by Makarand Keer Friday, October 21, 2011 6:51 PM
- Proposed as answer by Makarand Keer Friday, October 21, 2011 7:48 PM
Friday, October 21, 2011 6:50 PM -
Thanks a million for the reply. The taskribbon.xml (found in the SDK...and I don't think it has changed from default) states that "Save" is in the name the name. See highlighted bold below. Am I missing something?
<Tab Id="Mscrm.Form.task.MainTab" Command="Mscrm.Form.task.MainTab" Title="Task" Description="Task" Sequence="10"> <Scaling Id="Mscrm.Form.task.MainTab.Scaling"> <MaxSize Id="Mscrm.Form.task.MainTab.Save.MaxSize" GroupId="Mscrm.Form.task.MainTab.Save" Sequence="10" Size="LargeMedium" /> <MaxSize Id="Mscrm.Form.task.MainTab.Collaborate.MaxSize" GroupId="Mscrm.Form.task.MainTab.Collaborate" Sequence="20" Size="LargeMedium" /> <MaxSize Id="Mscrm.Form.task.MainTab.Include.MaxSize" GroupId="Mscrm.Form.task.MainTab.Include" Sequence="22" Size="Large" /> <MaxSize Id="Mscrm.Form.task.MainTab.Management.MaxSize" GroupId="Mscrm.Form.task.MainTab.Management" Sequence="30" Size="LargeLarge" /> <MaxSize Id="Mscrm.Form.task.MainTab.Actions.MaxSize" GroupId="Mscrm.Form.task.MainTab.Actions" Sequence="40" Size="LargeMediumLarge" /> <MaxSize Id="Mscrm.Form.task.MainTab.Convert.MaxSize" GroupId="Mscrm.Form.task.MainTab.Convert" Sequence="41" Size="LargeMedium" /> <MaxSize Id="Mscrm.Form.task.MainTab.ExportData.MaxSize" GroupId="Mscrm.Form.task.MainTab.ExportData" Sequence="50" Size="LargeMedium" /> <MaxSize Id="Mscrm.Form.task.MainTab.Workflow.MaxSize" GroupId="Mscrm.Form.task.MainTab.Workflow" Sequence="60" Size="Large" /> <MaxSize Id="Mscrm.Form.task.MainTab.Find.MaxSize" GroupId="Mscrm.Form.task.MainTab.Find" Sequence="70" Size="Large" /> <Scale Id="Mscrm.Form.task.MainTab.ExportData.Scale.1" GroupId="Mscrm.Form.task.MainTab.ExportData" Sequence="90" Size="LargeSmall" /> <Scale Id="Mscrm.Form.task.MainTab.ConvertGroup.Scale.1" GroupId="Mscrm.Form.task.MainTab.Convert" Sequence="99" Size="LargeSmall" /> <Scale Id="Mscrm.Form.task.MainTab.Workflow.Scale.2" GroupId="Mscrm.Form.task.MainTab.Workflow" Sequence="100" Size="Popup" /> <Scale Id="Mscrm.Form.task.MainTab.Collaborate.Scale.1" GroupId="Mscrm.Form.task.MainTab.Collaborate" Sequence="110" Size="LargeSmall" /> <Scale Id="Mscrm.Form.task.MainTab.IncludeGroup.Scale.1" GroupId="Mscrm.Form.task.MainTab.Include" Sequence="111" Size="Popup" /> <Scale Id="Mscrm.Form.task.MainTab.ConvertGroup.Scale.2" GroupId="Mscrm.Form.task.MainTab.Convert" Sequence="113" Size="Popup" /> <Scale Id="Mscrm.Form.task.MainTab.Save.Scale.1" GroupId="Mscrm.Form.task.MainTab.Save" Sequence="130" Size="LargeSmall" /> <Scale Id="Mscrm.Form.task.MainTab.ExportData.Scale.2" GroupId="Mscrm.Form.task.MainTab.ExportData" Sequence="140" Size="Popup" /> <Scale Id="Mscrm.Form.task.MainTab.Management.Scale.4" GroupId="Mscrm.Form.task.MainTab.Management" Sequence="150" Size="Popup" /> <Scale Id="Mscrm.Form.task.MainTab.Collaborate.Scale.2" GroupId="Mscrm.Form.task.MainTab.Collaborate" Sequence="160" Size="Popup" /> <Scale Id="Mscrm.Form.task.MainTab.Save.Scale.2" GroupId="Mscrm.Form.task.MainTab.Save" Sequence="170" Size="Popup" /> <Scale Id="Mscrm.Form.task.MainTab.Actions.Scale.1" GroupId="Mscrm.Form.task.MainTab.Actions" Sequence="180" Size="Popup" /> </Scaling> <Groups Id="Mscrm.Form.task.MainTab.Groups"> <Group Id="Mscrm.Form.task.MainTab.Save" Command="Mscrm.Enabled" Sequence="10" Title="$Resources:Ribbon.Form.MainTab.Save" Image32by32Popup="/_imgs/ribbon/Save_32.png" Template="Mscrm.Templates.Flexible2"> <Controls Id="Mscrm.Form.task.MainTab.Save.Controls"> <Button Id="Mscrm.Form.task.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" /> <Button Id="Mscrm.Form.task.Save" ToolTipTitle="$Resources:Mscrm_Form_Other_MainTab_Save_Save_ToolTipTitle" ToolTipDescription="$Resources(EntityDisplayName):Ribbon.Tooltip.Save" Command="Mscrm.SavePrimary" Sequence="20" LabelText="$Resources:Ribbon.Form.MainTab.Save.Save" Alt="$Resources:Ribbon.Form.MainTab.Save.Save" Image16by16="/_imgs/ribbon/Save_16.png" Image32by32="/_imgs/ribbon/Save_32.png" TemplateAlias="o1" /> <Button Id="Mscrm.Form.task.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/FormEditorRibbon/SaveAndClose_16.png" Image32by32="/_imgs/ribbon/SaveAndClose_32.png" TemplateAlias="o1" /> <Button Id="Mscrm.Form.task.SaveAndNew" ToolTipTitle="$Resources:Mscrm_Form_Other_MainTab_Save_SaveAndNew_ToolTipTitle" ToolTipDescription="$Resources(EntityDisplayName):Ribbon.Tooltip.SaveAndNew" Command="Mscrm.SaveAndNewPrimary" Sequence="40" LabelText="$Resources:Ribbon.Form.MainTab.Save.SaveAndNew" Alt="$Resources:Ribbon.Form.MainTab.Save.SaveAndNew" Image16by16="/_imgs/ribbon/saveandnew16.png" Image32by32="/_imgs/ribbon/saveandnew32.png" TemplateAlias="o2" /> <Button Id="Mscrm.Form.task.Activate" ToolTipTitle="$Resources:Ribbon.HomepageGrid.account.Record.Status.Activate" ToolTipDescription="$Resources(EntityPluralDisplayName):Ribbon.Tooltip.Activate" Command="Mscrm.Form.Activate" Sequence="50" Alt="$Resources:Ribbon.HomepageGrid.account.Record.Status.Activate" LabelText="$Resources:Ribbon.HomepageGrid.account.Record.Status.Activate" Image16by16="/_imgs/ribbon/Activate_16.png" Image32by32="/_imgs/ribbon/Activate_32.png" TemplateAlias="o2" /> <Button Id="Mscrm.Form.task.Deactivate" ToolTipTitle="$Resources:Ribbon.HomepageGrid.account.Record.Status.Deactivate" ToolTipDescription="$Resources(EntityPluralDisplayName):Ribbon.Tooltip.Deactivate" Command="Mscrm.Form.Deactivate" Sequence="60" Alt="$Resources:Ribbon.HomepageGrid.account.Record.Status.Deactivate" LabelText="$Resources:Ribbon.HomepageGrid.account.Record.Status.Deactivate" Image16by16="/_imgs/ribbon/deactivate16.png" Image32by32="/_imgs/ribbon/Deactivate_32.png" TemplateAlias="o2" /> <Button Id="Mscrm.Form.task.Delete" ToolTipTitle="$Resources:Mscrm_Form_Other_MainTab_Management_Delete_ToolTipTitle" ToolTipDescription="$Resources(EntityPluralDisplayName):Ribbon.Tooltip.Delete" Command="Mscrm.DeletePrimaryRecord" Sequence="70" LabelText="$Resources:Ribbon.HomepageGrid.MainTab.Management.Delete" Alt="$Resources:Ribbon.HomepageGrid.MainTab.Management.Delete" Image16by16="/_imgs/ribbon/delete16.png" Image32by32="/_imgs/Workplace/remove_32.png" TemplateAlias="o2" /> </Controls> </Group> <Group Id="Mscrm.Form.task.MainTab.Management" Command="Mscrm.Enabled" Sequence="20" Title="$Resources:Ribbon.HomepageGrid.MainTab.Management" Image32by32Popup="/_imgs/ribbon/newrecord32.png" Template="Mscrm.Templates.Flexible2"> <Controls Id="Mscrm.Form.task.MainTab.Management.Controls" /> </Group> <Group Id="Mscrm.Form.task.MainTab.Include" Command="Mscrm.Enabled" Sequence="21" Title="$Resources:Ribbon.HomepageGrid.Add.Document" Image32by32Popup="/_imgs/ribbon/attachment_32.png" Template="Mscrm.Templates.Flexible"> <Controls Id="Mscrm.Form.task.MainTab.Include.Controls"> <Button Id="Mscrm.Form.task.AddFile" ToolTipTitle="$Resources:Mscrm_Form_Other_Related_Document_AddFile_ToolTipTitle" ToolTipDescription="$Resources(EntityDisplayName):Ribbon.Tooltip.AttachFile" Command="Mscrm.AddFileToPrimaryRecord" Sequence="10" LabelText="$Resources:Ribbon.HomepageGrid.Add.Document.AddFile" Alt="$Resources:Ribbon.HomepageGrid.Add.Document.AddFile" Image16by16="/_imgs/ribbon/Attachment_16.png" Image32by32="/_imgs/ribbon/Attachment_32.png" TemplateAlias="o1" /> <Button Id="Mscrm.Form.task.AddNoteToActivity" ToolTipTitle="$Resources:Ribbon.HomepageGrid.Add.Document.AddNote" ToolTipDescription="$Resources(EntityDisplayName):Ribbon.Tooltip.AddNote" Command="Mscrm.AddNoteToPrimaryActivityRecord" Sequence="20" LabelText="$Resources:Ribbon.HomepageGrid.Add.Document.AddNote" Alt="$Resources:Ribbon.HomepageGrid.Add.Document.AddNote" Image16by16="/_imgs/ribbon/AddNote_16.png" Image32by32="/_imgs/ribbon/noteyellowadd32.png" TemplateAlias="o1" /> </Controls> </Group>.......
Friday, October 21, 2011 7:04 PM -
Here's my complete, unmodified RibbonDiffXML. Oh, please find what's wrong with it!! :) This is silly that it doesn't work...I'm starting to wonder if there's a bug with this...I've done very similar CustomActions to the Email form with no problem.
<RibbonDiffXml> <CustomActions> <CustomAction Id="MVD.task.form.CompleteAndNew.CustomAction" Location="Mscrm.Form.task.MainTab.Save._children" Sequence="11"> <CommandUIDefinition> <Button Id="MVD.task.form.CompleteAndNew.Button" Command="MVD.task.form.CompleteAndNew.Command" LabelText="Complete And New" ToolTipTitle="Complete and New" ToolTipDescription="Complete this task and add a new task." TemplateAlias="o1" /> </CommandUIDefinition> </CustomAction> </CustomActions> <Templates> <RibbonTemplates Id="Mscrm.Templates"></RibbonTemplates> </Templates> <CommandDefinitions> <CommandDefinition Id="MVD.task.form.CompleteAndNew.Command"> <EnableRules> <EnableRule Id="MVD.task.WebClient.EnableRule" /> <EnableRule Id="MVD.task.form.NotNew.EnableRule" /> </EnableRules> <DisplayRules> <DisplayRule Id="MVD.task.form.FormStateNotNew.DisplayRule" /> <DisplayRule Id="MVD.task.WebClient.DisplayRule" /> </DisplayRules> <Actions> <JavaScriptFunction Library="$webresource:new_HelloWorld" FunctionName="Hello" /> </Actions> </CommandDefinition> </CommandDefinitions> <RuleDefinitions> <TabDisplayRules /> <DisplayRules> <DisplayRule Id="MVD.task.form.FormStateNotNew.DisplayRule"> <FormStateRule State="Create" InvertResult="true" /> </DisplayRule> <DisplayRule Id="MVD.task.WebClient.DisplayRule"> <CrmClientTypeRule Type="Web" /> </DisplayRule> </DisplayRules> <EnableRules> <EnableRule Id="MVD.task.WebClient.EnableRule"> <CrmClientTypeRule Type="Web" /> </EnableRule> <EnableRule Id="MVD.task.form.NotNew.EnableRule"> <FormStateRule State="Create" InvertResult="true" /> </EnableRule> </EnableRules> </RuleDefinitions> <LocLabels> </LocLabels> </RibbonDiffXml>
Friday, October 21, 2011 7:07 PM -
I think you have to correct Location, put a Controls after Save
Location="Mscrm.Form.task.MainTab.Save.Controls._children"
MaKeer | myencounterwithcrm.wordpress.com | CRM2011 User Settings Utility | CRM2011 Lookup Preview- Proposed as answer by Makarand Keer Friday, October 21, 2011 7:56 PM
- Marked as answer by MattVanDyke Friday, October 21, 2011 8:24 PM
Friday, October 21, 2011 7:43 PM -
You're my hero for the day! That did it.
So, why the heck can't I reference the Group name? The SDK specifically says to reference a "Tab or Group ID". Frustrating.
Thanks so much Makarand
-Matt
Friday, October 21, 2011 8:24 PM