Let's Talk About Dataverse Low-Code Plugins
Tags: powerplatform, dataverse, api, powerautomate
Published: 2024-06-10 05:51:01

If you haven't heard about Dataverse Low-Code plugins let me catch you up.

For starters plugins are basically functional API's. They are built in C# and allow complex functionality in a single API call. A good example is a solution export, that is a plugin built but Microsoft that does the following:

- Gets solution detail from solution table
- Gets component list from solutioncomponent table
- Gets all of the flow definitions from the worflows table and saves them in their own folder
- Gets all of the environment variables from the environmentvariable definition table and the environmentvariablevalue table, saving them in their own folder
- Creates a xml file with connection references and missing dependencies
- Creates a xml file with solution info (like name, version etc)
- Packages it all up in a zip file

As you can see all of the work is based on Dataverse, bundling up multiple API calls and some C# code to create a zip file.

Low-Code plugins are in the name, they are plugins built in PowerFX (what Canvas Apps use) and then compiled into C#.

But they have one added benefit over normal C# plugins, they can handle connections too, so they can get data from SharePoint/Outlook?Custom Connectors etc.

So lets dive into the bad and the good 

## Its Buggy, very Buggy
Now this is clearly in preview and there is updates rolling out as I write this (moving from Model Driven App to part of the studio).But it has to be said, it is very buggy even for preview.

The first is I can't edit any plug in, once saved and closed, if I open and try and edit I get unexpected error (sometimes the save is just greyed out).

![unexpected error](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cb0fgjeylok9fseukyv5.png)
So every time I want to edit I have to copy the code and create a new plugin.

When selecting a solution I always get below error, luckily it doesn't seem to impact anything (but I don't know what could be going wrong because of it).

![update solution](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y96ojqb0q0djtd5jc94o.png)

And when trying to use intellisense or view error messages the popup often gets hidden.
![hidden popup](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/za0f7zytf1991b5uc47s.png)

## Support Power FX Expressions
Although a lot of expressions are supported, not all are. And I'm not just talking about the UI based ones, but things like Set and UpdateContext. That's right no local variables or arrays, along with some other useful expressions.

![set not supported](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9p5477hwgilqilqfcudi.png)

## Power FX Limitations
This one is a little harsh as Power FX is its biggest strengths, but Power FX is a little limited, I'm looking at you loops. Loops are a fundamental to programming languages and Power FX has a very limited implementation, with only a forEach (no For or while) and limited expressions allowed within. Additionally there no reusable functions (hopefully UDFs come soon.

_Note I also had limited inputs/outputs, as there was no objects or arrays, but this has been announced so decided to give them the benefit of the doubt in advance_

---
And now for the good.

## It works
This can't be underestimated, this can compile Power FX into C#, and it works. That's a crazy achievement, compiling is not easy, especially for 2 fundamentally different languages.

## Connections
Its called a Dataverse Low-Code Plugin, but it's more than that, it has connections. Normal Plugins don't have this functionality, this elevates this from a niche solution to a broader solution. Having the ability to interact with multiple connections, coupled with some automated triggers and instant triggers you could in theory use them as a flow replacement. No Power Platform API limits (that I know of) and in some cases quicker to develop, there are definite use cases for them to be used instead.

## Power Platform Integration
The plugins integrate extremely easy with Power Automate and Power Apps. For Power Apps you copy/paste some code in and add data source. For Power Automate just add a Dataverse unbound action and select your plugin (you will see all of the normal plugins Microsoft already created too).

![unbound](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yot5yfj28k6effn03twa.png)

That also means with the new Dataverse cross environment actions you can have a catalogue environment and call from any other environment (as long as it's not linked to a local Dataverse environment), wouldn't that functionality be cool for custom connectors.

Additionally this is the first step to the holy grail of code in Power Automate, having to do workarounds like Office Scripts isnt as neat as Logic Apps Code Snippits. I know its still another action, but its a step in the right direction and opens the door to creating them on the fly in the flow designer.

## Its an API
This is Dataverse, so it has excellent API support, meaning you can use these as fully fledged APIs. You can call them from Pro Dev solutions (though it is missing on behalf of, so will always use the connection reference account).

## Its For Experienced Developers
I talked about the missing focus on Experienced Developers/Power users in my [power platform more autopilot than copilot](https://dev.to/wyattdave/power-platform-more-autopilot-than-copilot-24lh) blog.

![dev matrix](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vnwixfwalw5awy29eus9.png)

Everything is focused on the bottom of the learning curve, a simple numbers game, this leaves a gap for all the developers that are pushing the boundaries of the Platform. They may not be quite ready for ProCode but want more challenges. Low-Code Plugins are perfect for filling that gap, close to ProCode but still enabling like LowCode.

---

In case you missed it, I'm incredibly excited for Low-Code Plugins (I dropping the Dataverse as I think they are bigger). Its negatives are all because its in preview (and this is the type of preview I like, new functionality, no losing functionality, cough Power Automate cough).

I generally think they have massive potentially, and if you think about it:

- Power BI was never really part of the Power Platform and wants to run off with Fabric
- Copilot Studio has its own ambitions and will soon outgrow the platform

So maybe there is room for a Power Plugins? Think about it, we have work flows, database, and front end, what about the back end. It could be used to create true full stack Power Page solutions, integrate with SharePoint Framework (SPFx) or Teams Apps just to name a few. So please Microsoft, divert some of those Copilot developers to Low-Code Plugins, make it a fully fledged part of the Power Platform, that would be so cool!

![power platform](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/it3pvgsijmgbg9li343v.png)

And what cool features could be added now it has its own full dev team, what about:

- Add Power FX variables and new loops
- Allow it to connect with other Dataverse Environments
- Allow on behalf of connections
- A Low-Code/Out of the box way to authenticate them across the Microsoft suite
- Create a custom Power Automate Action (the unbound is ok but would be nice to be more like a custom connector)
- Expand from just POST to GET,DELETE,PATCH,PUT (I know this is more cosmetic but its good to enforce standards)

I really think the future for Low-Code plugins is bright, as long as Microsoft gets behind them and gets them out of preview.