Ribbon Dependencies in Version 9 – isNaN is no more!

I recently blogged about the introduction of the script dependancies dialog in Version 9 where you can define the scripts that are needed by another. Although it does not solve the asynchronous loading issue for forms, it makes it simpler to add scripts to form since the dependencies will automatically be added for us. Up until now, there has been a common pattern when adding script to Ribbon Commands where the dependancies were added with a function of 'isNaN'. It didn't have to be isNaN, but that is the most popular 'no operation' function call.

With the introduction of the script dependencies, you only need to include the reference to ClientCommands.js and the ClientCommon.js will be loaded automatically for you first before the command is called.

Awesome – we no longer need the isNaN approach that always felt like a 'hack'.

Smart Buttons in the Ribbon Workbench

Happy 2017! This new year promises to be really exciting in the world of Dynamics 365. The spring release is going to be a big one for developers and I'm really looking forwards to it. In the meantime, I've released a new beta version of the Ribbon Workbench that includes the following features:

Copy and Paste of Commands, Buttons & Enable/Disable Rules Free text JSON Clipboard – allowing you to see what is on the clipboard and potentially copy/paste between instances and even make text changes before pasting. Full support for Smart Buttons

You can grab the latest beta of the Ribbon Workbench that support smart buttons from https://www.develop1.net/public/rwb/ribbonworkbench.aspx#DOWNLOAD Before I go into more detail about the JSON Clipboard, I wanted to tell you about Smart Buttons because I'm really excited about the possibilities that they may bring. So what are Smart Buttons? Smart Buttons are a concept I've been toying with since back in the Silverlight days of the Ribbon Workbench. They basically are buttons in the toolbox that add a predefined template of Ribbon Customisations that can be parameterised and contain references to prebuilt JavaScript web resources. When you add a standard button using the Ribbon Workbench you get to set the label, image and then reference a command that can in turn reference some JavaScript that you create separately. With a smart button, the JavaScript is already built for you and already installed in your Dynamics 365 organisation. Any solution that contains a smart button pre-build JavaScript must also contains a Smart Button manifest file that tells the Ribbon Workbench what's available and defines the templates it exposes. A typical uses of Smart Buttons are: Developers

Install a Smart Button solution in Development Org (e.g. the Develop1 Smart Button Solution described later) Install Ribbon Workbench in Development Org Add Smart Button to Development Org using Ribbon Workbench Deploy Smart Button solution to Pre-Production/Production – The Ribbon Workbench would not need to be installed Deploy solution from Development (containing smart button configuration)

Lead Developers

Create a standard way of performing certain actions from Ribbon Buttons based on common library code they have created. Create a smart button manifest webresource and include that in their solution as well. Instruct Developers to use Smart buttons in the Ribbon Workbench rather than adding ribbon customisations manually.

Third Party ISV's

Create an ISV solution that allows functionality to be invoked in custom entities (I will be publishing a smart button manifest for my network view solution so you can add visualise buttons to any entity). Rather than publishing instructions on how to add buttons manually, create a smart button manifest that is picked up by the Ribbon Workbench When installed on the ISV customer's organisation, the Ribbon Workbench scans the organisation for any smart button manifest files and picks up the ISV's custom buttons that are available for use.

I have built a simple Smart Button solution as a preview of this feature that provides the following:

Run Report – Allows you to select a report and create a short cut on any record form. Run Workflow – Allows you to select a workflow and create a short cut to run it on a record form or sub-grid. You can also specify a call-back function to call when it is completed so that you can refresh the form or perform some other action. This is one of the most requested items on the Ribbon Workbench's uservoice site. Run Dialog – This is similar to the Run Workflow button but starts a Dialog instead. Useful for creating your own custom 'Close Opportunity' forms.     Quick JS – Sometimes you want to run some simple JavaScript (such as setting a drop down value and saving the form) when you click a command bar button. Quick JS allows you to simply create a button and directly specify the JavaScript without creating a separate Webresource to hold the code.

You can download this preview Smart Button solution and give it a try from github: https://github.com/scottdurow/RibbonWorkbench/releases Creating your own Smart Buttons! In the next post I will describe the copy and paste JSON clipboard and how to use this to create a smart button manifest for your own solutions.  

Mastering Ribbon Workbench 2016

Since the release of the Ribbon Workbench 2016 I am in the process of updating the documentation to reflect the new user interface. This video series on mastering the Ribbon Workbench 2016 will take you through from installing to performing advanced customisations.

Part 1 - Downloading & Installing

Part 2 - User Interface Overview

Part 3 - Hide Actions

Part 4 - Moving Managed Buttons to a Flyout Menu

Part 5 - Hiding buttons conditional to the form context

More to follow!...

Ribbon Workbench Version Compatibility

I'm pleased to announce that in addition to the managed solution that you can install inside Dynamics CRM, the Ribbon Workbench 2016 is also available in the XrmToolbox (if you hadn't already noticed!). When you open the XrmToolbox you will see that there is the Ribbon Workbench available for download in the plugin store.

Keep checking out the store because tools are being added regularly by some great plugin authors. Thank you to all those who are helping to beta-test, I have been really encouraged by your comments and suggestions. The re-write of the Ribbon Workbench (to remove its dependency on Silverlight) and the XrmToolbox version has been on my 'to-do' list for much longer than I would have liked and so I'm particularly pleased with this release. The new Ribbon Workbench 2016 solution installs alongside the older version – so if you have an upgraded org you might get them all sitting there on your command bar.  I'm keeping there on one of my organisations for posterity but you can safely uninstall older versions without losing any of your customisations.

Here is a version compatibility matrix for users of the older versions:

Name

Ribbon Workbench

Ribbon Workbench 2013

Ribbon Workbench 2016

Icon

Latest Version

1.0.1.9

2.0.1.3

3.0.16

Requires Silverlight?

Yes

Yes

 

XrmToolbox Version?

   

Yes

CRM 2011(Inc. UR12+)

Supported

   

CRM 2013(Inc. SP1+)

 

Supported

 

CRM 2015(Inc. Update 1+)

 

Supported

Supported

CRM 2016(Inc. Update 1+)  

 

Supported

Supported

Ribbon Workbench 2016 Beta

A couple of weeks ago I had both the privilege and a most enjoyable hour on CRM Audio chatting with George, Joel and Shawn about the Ribbon Workbench and SparkleXRM. You'll have heard me mention that I'd be posting details on how to get involved with the Beta version of the new Ribbon Workbench 2016 that's written using HTML and JavaScript rather than Silverlight – so here it is! I've had a fruitful relationship with Silverlight over the years and it has been the enabler in many successful rich client Dynamics CRM customisations but things have moved on! In July 2015 the time had come to say goodbye in part because there was no Silverlight in Windows 10's Edge Browser. My main blocker for writing pure HTML and JavaScript Web Resources in the past had always been one a lack of productivity tooling, but that had moved on as well not least because of SparkleXRM, my framework for building rich user interface Dynamics CRM web resources. The Ribbon Workbench 2016 is written using SparkleXRM (although it comes pre-packaged in the solution) and if I'm honest I think one of my drivers originally for working so hard on that project was the inevitability of having to re-write the Ribbon Workbench in HTML one day. Without the framework it would have been a bridge-too-far, but as it happened I was pleasantly surprised as to how easy the conversion process went and I am really pleased with how it's turned out. Here are some highlights… Drag and Drop Flyout Editing

Delete Undo

Drag and Drop Command Editing

Can you help with Beta Testing? You can download the beta version by signing up to beta test today! Please report issues and bugs via UserVoice! Thank you!

Business Rules & “SecLib::RetrievePrivilegeForUser failed - no roles are assigned to user”

When publishing your Ribbon Workbench solution you may receive the following error:

"SecLib::RetrievePrivilegeForUser failed - no roles are assigned to user."

The first step in diagnosing these issues is to try and export the same solution using the CRM solutions area and then immediately re-import to see what error is shown. This is exactly what the Ribbon Workbench does behind the scenes. When doing this you might see:

Upon Downloading the Log File you'll see that the error occurs on a 'Process' and the same error message is shown as reported by the Ribbon Workbench. The User ID is also given which can be used in a URL similar to the following to find the user record causing the issue.

https://<orgname>.crm.dynamics.com/userdefined/edit.aspx?etc=8&id=%7b<User GUID>%7d

You will most likely discover that this user has been disabled or has no roles assigned – this could be that they have left the company or changed job role. You will need to find any Workflows or Dialogs that are assigned to them and re-assign to yourself before you can import the solution.

In most cases, you should not include Dialogs or Workflows in the solution that is loaded by the Ribbon Workbench since this only slows the download/upload publish process down. There is one exception to this – and that is Business Rules. Business Rules are associated with their particular entity and cannot be excluded from the solution. Oddly like Workflows and Dialogs they also are owned by a user but it is not shown in the user interface – nor is there an option to re-assign. There is a handy option on a user record that allows you to 'Reassign Records'

You would think that this would reassign any Business Rules but unfortunately you'll get the following error:

"Published workflow definition must have non null activation id."

The only way to reassign these Business Rules is to perform an advanced find for Processes of Type 'Definition' and Category 'Business Rule'

The results can then be reassigned to yourself using the 'Assign' button on the results grid. @ScottDurow