Posts

Showing posts with the label Model Driven App

Implementing and Registering Dataverse Plugins: Create Message End-to-End Guide

Implementing and Registering Dataverse Plugins: Create Message End-to-End Guide Server-side logic in Dataverse runs when specific events occur. Plugins let you inject custom behavior during these events. This section covers how to compile plugin code, register it, connect it to a trigger, and validate its execution. Compile the Plugin Assembly Your plugin must be compiled into a DLL before Dataverse can run it. In Visual Studio, use Rebuild on your project. After a successful build, open the project’s output folder and locate the DLL inside bin\Debug . // Example: Locate compiled plugin DLL ProjectFolder\bin\Debug\YourPluginAssembly.dll Connect to Dataverse Environment Use the Plugin Registration Tool inside XrmToolBox. Launch the Connection Wizard, enter your organization URL, and authenticate. Set a highlight color for the environment to avoid deploying to the wrong system. Register the new assembly by selecting ...

Implementing Plugin Logic in Dataverse

Implementing Plugin Logic in Dataverse – Create Message Dataverse plugins allow you to execute server-side logic in response to platform events such as Create , Update , or Delete . This section focuses on implementing logic for the Create message, where data can be validated, enriched, or controlled before or after it is saved to the database. The Create message is triggered when a new record is saved in Dataverse. Plugins registered on this message are commonly used for enforcing business rules, setting default values, or creating related records automatically. Accessing the Target Entity The core of plugin logic begins with the Target entity. This object contains the attributes entered by the user during record creation. Defensive checks are mandatory to avoid runtime failures. if(context.InputParameters.ContainsKey("Target") || context.InputParameters["Target...

Plugin Project Structure and Coding Foundation

Plugin Project Structure and Coding Foundation With the development environment and tools ready, the next step is to organize your project files so you can begin writing plugin logic that Dynamics CRM will accept and run. Project Creation and Naming In Visual Studio, create a new project using the Class Library (.NET Framework) template. Use a clear naming pattern such as CompanyName.Plugins.EntityName. For example, a plugin for the Account table could be named LS.Plugins.AccountPlugins. Make sure the project targets .NET Framework 4.6.2, as this is required for compatibility with Dynamics CRM. Signing the Assembly Before a plugin can be registered in CRM, its assembly must be signed with a strong name key. In Visual Studio, open the project properties and go to the Signing tab. Check Sign the assembly, then create a new key file such as key.snk. For simplicity during development, you can choose to ...

Plugin Development Workflow: Registration, Deployment, and Validation Tools

Plugin Development Workflow: Registration, Deployment, and Validation Tools After completing the initial Visual Studio setup for plugin development, the next phase focuses on registering and validating plugin logic inside Dataverse. Writing code alone is not enough. The assembly must be deployed correctly and its behavior verified in the Dynamics interface. XrmToolBox – Deployment and Registration XrmToolBox is a community-maintained Windows application used extensively in Dynamics CRM and Dataverse development. It provides a collection of tools for managing environments, metadata, and custom components. The tool is distributed as a ZIP file and does not require installation. Extract it into a local directory under your user profile. Avoid placing it in cloud-synced folders such as OneDrive to prevent file locking issues. After launching XrmToolBox, use the Connection Wizard to authenticate and conn...

XrmToolBox & FetchXML Builder – Complete Setup Guide (Dataverse)

XrmToolBox & FetchXML Builder – Complete Setup Guide (Dataverse) XrmToolBox is a community-driven Windows application that hosts a collection of tools for managing and customizing Microsoft Dataverse environments. One of its most powerful extensions is FetchXML Builder, which enables crafting, testing, and validating FetchXML queries without writing code manually. Installing XrmToolBox Download the latest XrmToolBox release from the official source and extract the application to a folder on your system. XrmToolBox runs as a standalone executable and does not require an installer. After extraction, launch XrmToolBox. On first run, the application may prompt to install community plugins. You can skip this initially if you want to install only specific tools later. Connecting to Dataverse In XrmToolBox, open the connection dialog and choose the appropriate organization from your Dataverse enviro...

Preparing the Development Setup for Model-Driven App Plugins

Preparing the Development Setup for Model-Driven App Plugins Setting up the development environment for Model-Driven App plugins requires strict alignment with Microsoft Dataverse requirements. The environment must be configured exactly as specified; any deviation results in unsupported code that fails at registration or runtime. Choosing the Correct IDE Plugin development must be done using Visual Studio . Visual Studio Code is not sufficient because plugins depend on the full .NET Framework and project templates that VS Code does not provide. While installing Visual Studio, select the .NET desktop development workload. This ensures that all necessary build tools, compilers, and templates for .NET Framework class libraries are installed. Installing the Supported .NET Framework After selecting the workload, go to the Individual components tab in the Visual Studio Installer. Microsoft Dataverse ...

Plugins in Dynamics CRM and Model-Driven Apps

Plugins in Dynamics CRM and Model-Driven Apps In Dynamics CRM and Model-Driven Apps, plugins are custom code components used to extend platform behavior. They allow developers to enforce business rules, manipulate data, and integrate external systems. Both platforms operate on the same underlying data layer known as Microsoft Dataverse. Dataverse stores all information as tables, including business records such as accounts and contacts, as well as system-level components like forms and views. Plugins attach logic to these tables by responding to messages generated during data operations. How Plugins Work: The Messaging Pipeline Whenever a user performs an action—such as saving a record—the data is packaged into a structure called the Target and sent to Dataverse. This action generates a message like Create or Update . That message then moves through a predefined execution pipeline. Plugins can be registered at ...

Dataverse Actions – Complete Guide (Model-Driven Apps)

Image
Dataverse Actions – Complete Guide (Model-Driven Apps) Dataverse Actions are a powerful feature in Microsoft Dataverse that allow you to execute custom business logic directly from model-driven apps, Power Automate, or external systems. Actions are typically used when you want to perform an operation that goes beyond simple create, update, or delete actions on a table. What are Dataverse Actions? A Dataverse Action represents a reusable business operation. It can accept input parameters, perform logic, and return output values. Unlike workflows or plugins that automatically trigger, actions are explicitly invoked by users or automation. In model-driven apps, actions are commonly exposed as command bar buttons, allowing users to trigger business logic manually from a form or grid. Types of Dataverse Actions Bound Actions – These actions are associated with a specific Dataverse table. They operate...

Classic Workflows in Model-Driven Apps

Image
Classic Workflows in Model-Driven Apps: Complete Hands-on Guide Classic workflows are server-side automation processes in Microsoft Dataverse. They are widely used in model-driven apps for validation, automation, approvals, and record management. Classic Workflow Types and Their Usage Classic workflows in model-driven apps can be executed in different modes depending on the business requirement. Each type serves a specific purpose and choosing the correct type is critical for performance and data integrity. Workflow Type Execution Time Can Stop Save Typical Use Case Example from This Blog Background Workflow After record is saved No Automation that should not block users, such as updating fields, sending notifications, or assigning records. Set default Status to Draft when record is created. Real-Time Workflow Before record is saved ...

Business Rules (Model-Driven Apps & Dataverse)

Image
Business Rules in Microsoft Dataverse Business Rules allow you to define logic, validations, and UI behavior on Dataverse table forms without writing code. They work mainly inside model-driven app forms and partially in server-side operations depending on the scope. 1. Scope of Business Rules Entity – Applies to all forms of the table and also runs server-side when the record is created or updated by API/flows. All Forms – Applies to every model-driven form associated with the table. Specific Form – Applies only to the selected form. Note: Canvas apps require the rule to be set at table (Entity) scope, but Canvas apps support only limited actions. 2. Components of a Business Rule Condition – Evaluates field values or expressions. Set Field Value – Automatically fills or changes a field value. Clear Field Value – Removes existing values. Set Business Required – Makes a field Required, Optional, or Recommended. Set Visibility – Shows or...

Model-Driven App Components

Model-Driven App Components Component Type / Variant Use / Purpose Limitations / Notes Form Main Form Display and edit single record details; most commonly used Complex forms can impact performance; may require role-based access control Form Quick Create Form Fast creation of a record with essential fields only Limited fields; cannot include all form components Form Quick View Form Embedded read-only display of related table record inside another form Cannot edit fields; limited formatting options Form Card Form Compact view for timelines, dashboards, subgrids Limited fields and layout options; mainly for mobile or card display View System View Default view provided by Dataverse; shows list of records Cannot be deleted; can be customized ...

Dataverse Column Types

Dataverse Column Types Column Type Description / Use Example Limitations / Notes Single Line of Text Stores text up to 4000 characters Employee Name: "John Doe" Max 4000 chars; no formatting (rich text limited to 100k if enabled) Multiple Lines of Text Longer text, supports multiple lines Description, Notes Max 1,048,576 characters; can enable rich text formatting Choice (Option Set) Predefined dropdown list of values Status: Active / Inactive Only allows values defined in option set; cannot add free text MultiSelect Choice Multiple options from predefined set Skills: Java, C#, Python Max 150 selections; cannot be indexed for filtering efficiently Whole Number Integer values Age: 25 Range depends on format; cannot store decimals ...

Steps to Embed a HTML Page in a Model-Driven App Form

Image
 Step 1: Upload the HTML file as a Web Resource Open your solution, then click on + New and select Web Resource. Add your HTML code. Set the File Type to 'Webpage (HTML)', provide a Name and Display Name, then click Save. HTML CODE: <!DOCTYPE html> <html> <head>     <title>Account Info</title>     <meta charset="utf-8" />     <script src="ClientGlobalContext.js.aspx" type="text/javascript"></script>     <style>         body {             font-family: "Segoe UI", sans-serif;             padding: 20px;         }     </style> </head> <body>     <h2>Account Information</h2>     <p> <strong>Record Id:</strong> <span id="id">Loading...</span><br/> <strong>Entity Name:</strong> <span...

Steps to Embed a Canvas App Page in a Model-Driven App Form

Image
Step 1: Go to your solution and create a Canvas App page . Refer to the image below for guidance. Step 2: The Canvas App page will open in Power Apps Studio. In the OnStart property of the app, add the following code: Set ( a , Param ( "recordId" )) ;       // Returns the record ID Set ( b , Param ( "entityName" )) ; Next, insert a Label control and set its Text property to: "a: " & a & "" & Char ( 10 ) & " b: " & b & "" & Char ( 10 ) This will display the values of the parameters passed from the model-driven app. Finally, give your custom page a name and publish it. Step 3: Add the custom page to your Model-Driven App by editing the app in the App Designer. Refer to the image below for detailed steps. Then, select the custom page you added and uncheck the "Show in navigation" option. This ensures the page doesn't appear in the app’s left-hand navigation but can still be open...