I am trying to add a custom pwa ribbon button, I am using the project server sample element.xml to add the button, the button does show up in the ribbon, but it is always disabled.

The customization Xml is :

    <?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <CustomAction Id="239da314-4999-458f-9612-623a13abc3c8.RibbonQuickStatus"
        <CommandUIDefinition Location="Ribbon.ContextualTabs.ProjectCenter.Home.Editing.Controls._children">
          <Button Id="Ribbon.ContextualTabs.MyWork.Home.Page.QuickStatus"
                  Alt="Quick Status app"
                  LabelText="Quick Status"
                  ToolTipDescription="Run the QuickStatus app" />
        <CommandUIHandler Command="Invoke_RibbonQuickStatusButtonRequest"
    </CommandUIExtension >

The result is like so:

enter image description here

I have even tried the EnabledScript property and set a JavaScript function to return true, that doesn't help either, which is why I omitted it out the customizations xml, not specifying the node means it would always be enabled.


To answer my own question, each time the ribbon button customization xml is changed and published, do an IISReset and clear the browser cache, that should fix the issue and the button should be enabled.

  • In my case recreating helped – Amit Bhagat Aug 2 '17 at 6:48

I have been facing similar issue. The XML which was working fine was also causing same issue.

IIS reset did not help.

I was using Chrome, switching to IE fixed the issue. Also, when switched to Chrome Incognito Window, it fixed. enter image description here

So, browser cache could be cause of issue.

Solution 2

Since, I came to know it is just browser cache issue, I thought Minimal Download Strategy could be causing issue, so deactivating that feature from site ( Web ) it fixed issue.


O365 is very strange. Not only do javascript: URLs not work for custom actions, also EnabledScript is not supported.

I ran into the disabled-bug, it turns out it must be some user-scoped caching mechanism, not sure whether server or clientside. Whenever I change commands or handler URLs and deploy again, the button is deactivated and the handler URL is still the old one.

Only when I open a new private browser session (ctrl-shift-p) and log in again, the cache is being renewed (also works in the previous browser window) and the commands work and show the right URLs.

Another big issue is missing tokens such as {ListId}, whenever {SelectedListId} is just "null", e.g. on form pages, making it impossible to pass the context for the command. One cannot do anything properly with O365, one big mess.

  • Perhaps because the OP already answered with clearing the cache, so your answer doesn't really provide anything new, other than speculation about other issues. – wjervis May 24 '16 at 12:08

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.