Earlier this year at Build, we launched the experimental preview of Microsoft Dataverse low code plug-ins, a new capability at forefront of the low code and extensibility story trend in modern business workflows. Today, we’re thrilled to announce that low code plug-ins are now available in public preview, with new features and improvements that make them an even more powerful tool for organizations looking to build custom applications on the Microsoft Power Platform.
The niche of plug-ins is to provide additional functionality to a software program without requiring the user to modify the core code of the program. This allows users to customize their experience in a modular way that tailors the experience to meet their specific needs. Low code plug-ins allow users to define plug-in capabilities using the familiar Power Fx expression language and store these extensions conveniently in any Dataverse instance.
We are excited to announce that low code plug-ins and the Dataverse Accelerator first-party app will be available in all new environments starting October 2023. This is aimed at making low code plug-ins more accessible to everyone. The app provides seamless and efficient experiences to develop and manage plug-ins, helping customers get the most out of their investment in Power Platform.
In this article, we will cover plug-in features and the latest updates at a high level. Please refer to the documentation for further guidance on using these features.
Benefits customers can expect from using Dataverse low code plug-ins:
1. Markedly diminished development time
Plug-ins now provides a scripting language and interface that can be edited on the fly, encapsulated in the seamless Dataverse interface.
A single line of Power Fx can do the same as 50 lines of C# and is the optimal language for talking to Dataverse. With this integration, Power Fx is strongly typed with intellisense and compile-time errors on schema mismatch, doesn’t require a separate build step for strongly typed wrappers, and supports display names and delegation.
To contrast, in the past, pro-development of Dataverse plug-ins included needing to spin up Visual Studio, write plug-ins in C#, register and install the plug-in, and compile. Connecting to services like Dataverse or other external services required constructing complex OData queries or QueryExpressions.
This feature represents a huge leap forward in democratizing plug-in development.
2. Increased security
Since server-side logic executes on the server, it can help prevent unauthorized access to sensitive data or processes. Executing on the server-side means plug-ins provide a safe API to the client (which accesses exclusively server-side resources). They also avoid client-side issues such as tampering or spoofing. Finally, they can check for the current User running the plug-in, and act on that in a tamper-proof way.
3. Improved performance
By executing on the server, business logic can reduce the amount of data that needs to be transferred between the client and server, resulting in faster processing times.
This provides substantial performance improvement for canvas makers: instead of making multiple calls to the server for each Dataverse function, only one call is made.
4. Consistency and reliability
Server-side logic ensures that business rules are consistently applied across all clients, reducing the risk of errors or inconsistencies. Also, since you can define low code plug-ins in Power Fx, you can copy Power Fx code from client-side Power Apps and move into a server-side low code plug-in, without having to rewrite it in C#.
5. Securely access external services
You can now call connectors in the same way you would in Power Apps. This was not possible in the previous C# pro-code plug-ins offering.
Power Platform Connectors support
Starting November 2023, low code plug-ins support the robust Power Platform connectors infrastructure, making it easier to integrate with services outside of Dataverse. From the context of the plug-in, customers can either plug into the rich connector ecosystem of published first and third-party services in the marketplace, or choose to leverage the custom connectors feature, both of which have historically been a critical component in Power Apps canvas apps and Power Automate cloud flows. Connectors in low-code plugins use functional actions to interact with the service, as opposed to the tabular version of the connector as they are in canvas apps.
Instant plug-ins support for Bound actions
Bound instant plugins offer a new level of customization and scalability. Like automated plug-ins, bound instant plug-ins now allow customers to define complex custom code in the context of a record input. This helps optimize development architecture and reduce maintenance costs.
Fully supports application lifecycle management (ALM)
Low code plug-ins are now fully supported by Application Lifecycle Management (ALM) in Power Platform solutions. Developers can now build plug-ins without worrying about compatibility issues or conflicts when importing plug-ins into test and production environments. This plugs into all benefits of Power Platform ALM: convenient isolated development, more efficient collaboration, changes tracking; ultimately easier integration of plug-ins into complex projects. Learn more about application lifecycle management in the Power Platform.
We understand that security is a top priority for our customers, which is why we have provided administrators with options to control security settings and ensure that their data remains protected.
- Connector creation is governed by the existing robust Data Loss Prevention (DLP) infrastructure. Administrators can disable the usage of connectors specifically in the context of low code plug-ins by following the steps in our documentation.
- Plug-ins components are managed in Dataverse, so you can control who can author and run plug-ins through security roles.
- Use ALM. Save instant and automated plug-ins to unmanaged solutions by updating the Solution field found in the advanced settings of each editor. This makes moving all related objects between environments much more convenient. Updating the selection in either Solutions field dropdown will update the environment variable “working solution”, so the same solution will be selected next.
- Initially, in some environments’ Solutions view, you may see a yellow banner asking for an environment variable called ‘Working Solution’, which is used in the Dataverse Accelerator to manage which unmanaged solution is used to store low-code plug-in components in. You can provide the value “Default” to make the banner go away (which will add all components to the default solution) or choose the desired unmanaged solution using the Solution dropdown in either editor.