Pass selected rows’ GUIDs to ribbon button in D365 | Ribbon Workbench

Whenever your Ribbon button customization involves doing something to selected records, here’s the most common application that you need to take action on the selected record’s GUIDs.

Here’s how –

CRM Parameter

In Ribbon Workbench, let’s say you have a button command which is attached to a button and it calls a method ‘process’ which looks like this (it will be your method in your case)

  1. In Commands, Custom JavaScript Action will have a CRM Parameter called as SelectedControlSelectedItemIds [pretty self explanatory 😊]
    undefined


    And it’ll pass data of the selected GUIDs in my data variable passed to the method.
    undefined

Read the GUIDs

Here’s my sample code where I intend to read it from the function I used to call when user clicks on the ribbon button

  1. Now, let’s say I select a few records on the Main Sub-grid where I’ve put my button on.
    undefined

  2. Now, on clicking it, it’ll pass the three selected records’ GUIDs to the method that the button is calling. You can read it from the data parameter
    undefined
  3. You can further read from this array and use it to perform your operations.

Hope this was easy. Here are some more Ribbon Customization related posts you might want to look at –

  1. Debug Ribbon button customization using Command Checker in Dynamics 365 CE Unified Interface
  2. Show Ribbon button only on record selection in Dynamics CRM
  3. Hide Custom Ribbon Button [Easy Way] – Ribbon Workbench
  4. [SOLVED] Navigating URL from Ribbon’s custom button in Dynamics for Phones app
  5. Fix Ribbon icons on the Unified Interface in D365 CE
  6. D365 Ribbon Button shortcut to open a Document in SharePoint Online
  7. Pass data to HTML Web Resource using browser’s sessionStorage in Dynamics 365 CE

Thank you!!

Debug Ribbon button customization using Command Checker in Dynamics 365 CE Unified Interface

Developers, it’s a little irksome to keep struggling with issues around making your ribbon buttons work correctly during the development phase.

At times, you wonder why your button didn’t show up on the form although you had set everything up correctly. Or even for out-of-box button, that didn’t show?

Scenario

In this example, I’ll find out by my Project Service Quote record doesn’t have a Activate Quote button on the ribbon.

noActivationButton
We can use Command Checker to find out why.

 

Enable Command Checker

Remember, this only works in the Unified Interface and not on the classic UI.

Command Checker is a developer feature to identify how a certain ribbon button has or has not rendered on your form/view. So let’s begin –

Add this command to the end of the Entity form page URL: &flags=FCB.CommandChecker=true&ribbondebug=true

Add make it look like something like below –
https://<ORG_NAME&gt;.crm<REGION>.dynamics.com/main.aspx?appid=7fbb5a25-b903-ea11-a816-000d3a58f769&pagetype=entityrecord&etn=account&id=aaa19cdd-88df-e311-b8e5-6c3be5a8b200&flags=FCB.CommandChecker=true&ribbondebug=true

 

Command Checker

Form Command Checker

  1. Now, if you navigate to the ellipses on the ribbon, check that Command Checker has now appeared.
    formCommandChecked
  2. A Command Checker Window will appear as below. Navigate to the button you are having issue on.
    baseWindow
  3. Then, click on Command Properties as shown above to see what didn’t pass through. And as shown below, we could see that one of the conditions in Enable Rule didn’t get through and hence, the button didn’t show up on the ribbon.
    commandCheckerWindowIn case you are also looking at how to hide out-of-the-box ribbon buttons, check this – Hide Custom Ribbon Button [Easy Way] – Ribbon Workbench

Global Command Checker

And with that, you must have also observed the Command Checker on the Navigation Ribbon bar as well.
globalCommandChecker
And it opens up as below –
globalCommand

 

Some other Ribbon Workbench related posts –

  1. Show Ribbon button only on record selection in Dynamics CRM
  2. Enable Flow button on D365 Ribbon
  3. [SOLVED] Navigating URL from Ribbon’s custom button in Dynamics for Phones app
  4. Fix Ribbon icons on the Unified Interface in D365 CE
  5. Create a New Record button for Activity Type entity using Ribbon Workbench: D365
  6. D365 Ribbon Button shortcut to open a Document in SharePoint Online

Hope this helps! Happy 365ing!

 

Show Ribbon button only on record selection in Dynamics CRM

One of the most common asks is to show ribbon buttons to only be shown when at least 1 record in Dynamics 365 ribbon button are selected.
buttonShow

Here’s how you can do it –

Enable Rule in Ribbon Workbench

This can be achieved using Enable Rule for the button you wish to show on selection using Ribbon Workbench.

Let’s say your button ‘Promote’ (in this case) is on the Main View of the Account entity. You can add the following Enable Rule to the command –
enableRuleBound

And in the actual Enable Rule, you can select the SelectionCountRule to make this happen. You can set the minimum value to 1 so that it appears when at least 1 record is selected.
acutalEnableRule

Result

Now, if you see – By default, the button is hidden –
buttonHidden

Now, as you can see, only when at least 1 record from the view is selected, the button is visible.
buttonShow

In case you are looking to hide a custom button, check this post – Hide Custom Ribbon Button [Easy Way] – Ribbon Workbench

Hope this helps!!

Hide Custom Ribbon Button [Easy Way] – Ribbon Workbench

Ribbon Workbench – At times, you have some custom ribbon buttons in place. And you don’t really want to delete it and lose the configuration, but just hide it temporarily. Here’s what I usually do!

So, this is your custom button called Promote on the Account form, for example.
customButton

And you want to temporary hide it. And you can’t simply right click and select Hide.

customOptions

Just like you can simply right-click and select Hide on any other OOB button and your job is done
OOBHide

 

Enable Rule Command

  1. Add a Display Rule to the Command attached with the button you have.
    addDisplayRule
  2. Now, select Value Rule in the Display Rule section.
    addValueRule
  3. And simple Invert Result = True
    invertResult
  4. And your button is hidden!
    buttonHidde

Hope this quick tip helps!! Cheers!!

[SOLVED] Navigating URL from Ribbon’s custom button in Dynamics for Phones app

So, with all the buzz about the transition to the Unified Interface, I came across this issue where Url Command Action doesn’t work on the Dynamics for Phones app for a custom button

urlAction

Scenario

I’m Url Command Action in the Ribbon Workbench’s custom button to navigate to a PDF User Guide stored on the SharePoint for users to simply click and navigate.

classicUI

unifiedUI

Now, this works fine on the classic Web UI and Unified Interface Web Application.
targetPDF

 

But doesn’t work on the Dynamics for Phones app! Nothing happens when you click on it.

guideButtononPhone

Workaround/Resolution

So, the workaround is, using JavaScript method to navigate the URL as shown below

  1. Write a JS file which uses Xrm.Navigation.openUrl(<link>); instead.
  2. Remove the URL Action Command and use JavaScript Command instead in the Ribbon Workbench.
    useJSAction
    jsFuntion
  3. Sample Code here
    oAccountFormCustomization = {
    guideButton: function()
    {
    Xrm.Navigation.openUrl(“https://<yourlink/>&#8221;);
    }
    };
  4. And this should work on your phone app when you click the button there and it should successfully navigate to the said URL (my SharePoint Document in this case)
    docAppears

 

Related

Here are some of my other posts that are related to custom ribbon button –

D365 Ribbon Button shortcut to open a Document in SharePoint Online

Fix Ribbon icons on the Unified Interface in D365 CE

Hope that works!!

 

Fix Ribbon icons on the Unified Interface in D365 CE

So, since adoption of Unified Interface is growing, people are asking – “What happened to the Ribbon icons?”. Well, a simple answer to this is tweaking the implementation a little.

Typically, you have custom icons on your classic Web UI that look like this –
classicIcon

But the same looks like a puzzle piece in the Unified Interface –
puzzlePiece

So, here’s what you need to do. Icons on the Unified Interface take SVG format. You’ll need to take you existing PNG Web Resources

 

Creating SVG Icons

Like most online services or applications, you can easily convert images to SVG. In this example, I’m using this online tool – https://www.online-convert.com/

Or you can try this too which I found quite a few people recommended – https://www.syncfusion.com/downloads/metrostudio

For this example, I used https://convertio.co/png-svg/ And I got my converted SVG document downloaded.
Now, create a new Web Resource in SVG and Upload the same.
svgWebResource

Ribbon Workbench

Once your Web Resource for the SVG format is set, going back to your Ribbon Workbench customization work space, go to the Button where you wan to update the icon and select the SVG Web Resource under Modern Image as shown below

modernImage

Publish Changes and See

Once your customization are published, you can simply refresh and check that your image has been updated

converted
Note: An online converted might not give you an accurate image. However, it is best recommended to create SVGs on an app. I’ve heard recommendations about https://www.syncfusion.com/downloads/metrostudio

Hope this helps!

Create a New Record button for Activity Type entity using Ribbon Workbench: D365

Problem

Typically, when you create a new Activity type of entity and you want a Create button for the same, it just appears in the Other Activities fly-out button and not on the Main ribbon in Activities to be specific.

currentProblem

And you can’t simply drag it out in the Ribbon Workbench since it is a dynamic button.

dynamicMenu

So, in this blog, I’ll create a button to open a new Create record form for my Activity type of entity called Assignment.

Customization

  1. Create a new Solution in your D365 environment and only add Activity entity into it.
    createSolution
  2. Load this solution into Ribbon Workbench and on the Main ribbon, add a button and give it a Name and Icon
    Note: Since there was no space in the Activity Ribbon, I had to sacrifice on of the least used Activities I had.
    sacrificeButton
  3. On that, I created a new Command and provided the below parameters –
    commandParameters
    Make sure you enter the name of your entity in String Parameter shown above correctly, in my case, it is new_assignment.
  4. Attach this Command to the Button
    mapButton
  5. Now Publish and check.

Create Assignment Button in Action

Now, when I go to Activities, I see my button called Assignments

buttonAppears

 

And when I click it, it open the full form for the Assignment entity

newForm

Hope this was quick!

Bringing back Maintain Bookings Availability View from D365 PSA 1.2.x into 2.4.x

Disclaimer: This is an experimental implementation and is not recommended out-of-the-box. My assumption is Microsoft would not provide support for anything that gets goes wrong while implementing this, with the original MS scripts or anything that intervenes with out-of-the-box functionality. Kindly implement at your own risk, do not change the existing out-of-the-box files and back up entities/files before any customization.

Maintain Bookings Schedule Board view in PSA 2.4.x?

Recently, I upgraded PSA from v1.2.x to v2.4.x. And I missed the classic Availability view of the Maintain Bookings of the older version. 2.4.x has the new Schedule Board approach.

Schedule Board based Maintain Bookings view as below
scheduleBoardView

Instead of the old Availability View from the v1.2.x version which looked like this –
availabilityView

Also, even other projects bookings were seen which wasn’t desired and editing the hours was added effort. Se let’s see what we can do her –

Pre-Requisites

  1. Knowledge of Ribbon Workbench in the XRMToolBox.
  2. Make sure you have any D365 environment having PSA in version 1.2.x. You’ll need the older ProjectTeamActions.js file from that version of D365 PSA 1.2.x.
    originalFile

Customization

  1. I prepared a new JS Web Resource (named it MyCustomProjectTeamActions) in the target PSA 2.4.x environment and added the code from the PSA 1.2.x’s PSA file ProjectTeamActions.js file referred in the Pre-Requisites section above
    customWebResource
  2. In the XRMToolBox, connect to the 1.2.x’s Specify Pattern button on the Team Member Sub-grid view, you can use that as a reference.
    longViewSpecifyPattern
    closeViewSpecifyPattern
  3. In your updated PSA 2.4.x’s Org, assuming you have copied the ProjectTeamActions.js from the older org to your custom Web Resource file in Step 1 above, you can prepare a new custom button next to the existing one and use your custom file instead on your button. I just called it ‘New Maintain Bookings’
    customMaintainBookingButton
    customWRInButton
  4. And Publish your changes. Then go to the Project’s Project Team Member view and see your new button work.

Seeing it Work

  1. Now your new button appears besides the current version’s Maintain Bookings.
    teamMemberView
  2. And that will bring up the Availability View for the Maintain Bookings on how it was in PSA 1.2.x
    availabilityView

Hope this helps you out too!