Override the default open behavior of data rows in an entity-bound grid

Hello there, fellow power platform customizers/developers! Have you tried to override the default open behavior in subgrid and failed?


What I’ve found in my research:

Documentation by Microsoft says: “You can now create a command definition for an entity with Mscrm.OpenRecordItem as the value of the Id attribute (<CommandDefinition> (RibbonDiffXml)), and define custom action for the command <Actions> (RibbonDiffXml). Customer Engagement will look for this command Id for an entity when you try to open a record from the entity-bound grid, and if present, will execute the custom action instead of opening the entity record (default behavior).”
IMPORTANT NOTE: This feature is supported only for Unified Interface.

Did this. No luck. What now? Google…

I found only one related article/discussion: https://community.dynamics.com/crm/f/117/t/254488

Where you can get more concrete visualization about how it should look like. But nobody has tried it on the new UUI.


So, I had this snippet:

This <RibbonDiffXml> element is in customization.xml for each Entity.


Although we followed every step of documentation, this wasn’t working.

I was stuck, because no one had the solution on the internet and that’s why I’m writing this blogpost, so that you don’t find yourself in similar situation.



What documentation doesn’t say (written on 2018/12/04) is that you need to add another element to your customization.xml. You need to add <CustomActions>. So, the snippet should look like this:


Now import your solution and don’t forget to publish all customizations…


Happy PowerPlatforming!

Logic Apps foreach and variables

Sometimes we need to work with a variable inside a loop section. Whether it’s a precomputation or just a helper variable. Logic Apps allows us to do so. Yet the variable must be initialized on a global level (above all loops).

Here comes the problem:

By default, foreach runs in parallel, in 20 threads (instances). Now, because there is no such thing as mutex in Logic Apps, there is no way how to create a critical section. Critical section is a section only one thread at a time can enter. That results in dirty reads.

We can solve this problem by running the loop synchronously. You can do that by editing settings of the foreach block.

Now only one thread at a time will execute the foreach loop and no other thread will modify our variable while we work with it.

Notes: Adding custom fields to entity maps between Quotes, Orders and Invoices (solution aware)

Finally, it’s the weekend and I have some time to focus on an issue which bothered our team for a few months. As always we wanted to do it the right way so it will be fast, reusable, continuous integration compatible and without spawning unnecessary workflows and plugin instances.

Continue reading “Notes: Adding custom fields to entity maps between Quotes, Orders and Invoices (solution aware)”

Azure AD Connect, group-based licensing and proxy addresses

We have had the group-based licensing option available in preview for over a year. While this service is in preview, it makes provisioning hundreds of users from Active Directory really simple.

You simply create users in your on-premise Active Directory, assign them a valid User Principal Name, add them to the correct group and then sync them with Azure AD Connect, right? Not that fast cowboy!

Continue reading “Azure AD Connect, group-based licensing and proxy addresses”

Assembly Caching Issue in Dynamics 365 V9 – Update Assembly Version of Custom Workflow Steps With PowerShell

As Alex blogged we are currently facing a caching bug of plugin assemblies in Dynamics 365 cloud instances (V9). You can do an in-place upgrade with Plugin Registration Tool without an exception now (see Unable to in-place update plugin in Dynamics 365 (with build or revision number changed)) but for some assemblies it just won’t propagate to your workflow definitions.

In the past we could fix it by clicking a save button in Properties tab of the assembly in Plugin Registration Tool but this does not work anymore in V9.

I have put together another workaround which is usable in release automation scenarios.

Continue reading “Assembly Caching Issue in Dynamics 365 V9 – Update Assembly Version of Custom Workflow Steps With PowerShell”

Best practices for managing students in Active Directory

For quite a long time, we have been running a local service called SkolniLogin.cz which primarily focused on providing SSO experience for various systems at schools (primary and high schools) along with automatic synchronization with the school’s information system. Throughout the time we have hit a lot of edge scenarios, and compiled a best practices guideline.

Continue reading “Best practices for managing students in Active Directory”

Unable to in-place update plugin in Dynamics 365 (with build or revision number changed)

UPDATE 19/9/18: It has been fixed in version of Plugin Registration Tool https://www.nuget.org/packages/Microsoft.CrmSdk.XrmTooling.PluginRegistrationTool/

If you use 9.0 version of Plugin Registration Tool to update your assemblies in Dynamics 365 you may encounter the following exception:

Continue reading “Unable to in-place update plugin in Dynamics 365 (with build or revision number changed)”

Remove missing dependencies from solution XML with PowerShell

The import of the solution XYZ failed. The following components are missing in your system and are not included in the solution. Import the managed solutions that contain these components (Active) and then try importing this solution again.

If you ever run into this exception and there are all the components already present in the environment you just need to get rid of few lines in a solution definition in the ZIP file you are trying to import.

Do this only if you are absolutely sure that you know what you are doing.

Continue reading “Remove missing dependencies from solution XML with PowerShell”

Protip: Assigning section level permissions in OneNote

When you have a OneNote notebook shared with an entire group or site in SharePoint (or with few people in OneDrive for Business) you might want to be able to set permissions on a section or section-group level. While this functionality isn’t for some reason available directly from the UI, it is definitely possible. Read on to learn how!

Continue reading “Protip: Assigning section level permissions in OneNote”

Azure AD authentication for SSH

To be honest, managing authentication in Linux for multiple users/admins can be a huge pain. Different companies use various tools – generally, they use a centralized tool to distribute developer’s SSH keys. This can still be a pain, however if the company has Azure AD (or Office 365), why not to use those accounts for authentication?

Continue reading “Azure AD authentication for SSH”