Quote ribbon buttons missing in Chrome when Legacy Form Engine is activated

During a customer presentation last week I wondered why under some mysterious circumstances Quote Ribbon buttons like “Revise Quote” or “Create Order” were missing. After some fiddling around it turned out that this was caused due to the Legacy Form Rending Mode being activated in the global System Settings and Chrome being used as browser (maybe others, too — didn’t cross check this).

Problem

When using the Microsoft Dynamics CRM web client in the Chrome browser, certain Ribbon buttons were suddenly missing for no meaningful reason. For example certain standard system buttons in the ribbon were missing on Quote forms.

Solution

Disable the “Use legacy form rendering” setting in the global system settings. (Settings  Administration  System Settings → General). By doing so, you implicitly tell MSCRM to use the (relatively) new Turbo Forms Engine which was first introduced in Microsoft Dynamcis CRM 2015 hidden under a preview setting.

“Turbo Forms” describes a new browser page model used by MSCRM to render, load and maintain formular pages in the web client. It provides speed improvements and an optimized resource handling strategy in the browser. But also has trade backs (especially for older solution developments which have to be migrated/upgraded).

Processes and arguments of type “Picklist” ━ a dead end street

Yesterday, one of the few perfect fits for a combination of Dialog and Action Processes have crossed my mind while revising a business requirement. Being satisfied because having found an elegant solution wich furthermore consists of no code or indirections, I first designed the Action Process. The part which caused my today’s rumbling is the following:

First we defined an in-argument of type Picklist (=OptionSet) as required and 
then wanted to write it into an OptionSet field..

Problem 

Microsoft Dynamics 365 (online and on-premise) still does not allow Picklist arguments to be written into Picklist fields.

Solution (😉)

Come on, are you kidding me?? But the story doesn’t end here. I investigated on this issue and found out, that this restriction is imposed somewhere in the platform UI layer, because the underlying Workflow engine used internally by the CRM platform (Windows Workflow Foundation with references to product-specific assemblies) to handle is undoubtedly able to handle those argument types. I exported my Action in a temp solution and edited the XAML workflow definition file manually, so that the above Picklist argument is written into the target field “Business Partner Type”. With success. Oh, and by the way: manually editing declarative workflow processes from MSCRM is supported even for Online.

So again, being happy about having also fixed this issue, I went on by creating my Dialog Process which would have to be invoked by the actual user for choosing the business partner type along with some other parametrized inputs. Then, as last step I added an “Invoke Action” command … but wtf is this? The list of available Actions does not contain the one I just finished before!

After some cross-checks it turned out this behaviour is solely related to the fact that the Action said does contain an In-Argument of type Picklist. Nothing else.

Finishing Move

Action Processes with in-arguments of type “Picklist” cannot be invoked from other Processes. This dilletante limitation seems to be around (google for it) since 2013 and I would not bet a cent that it will be fixed anytime soon.