In sales and CRM, measuring account engagement is crucial to identifying customer interactions and potential sales opportunities. In this guide, we will walk through how to calculate the engagement score for an account in Microsoft Dynamics 365 using activities such as emails, phone calls, and appointments.
PreOperation vs PostOperation for Action Plugin Registration in Dynamics 365
When developing a plugin for a custom action in Dynamics 365, choosing the correct plugin registration stage is crucial. This article explains the differences between PreOperation and PostOperation, highlights a real failure case, and provides best practices for plugin registration.
Understanding the Microsoft Dynamics 365 Plugin Execution Pipeline
In Microsoft Dynamics 365, plugins are executed within a pipeline that consists of multiple stages. The three primary stages—PreValidation, PreOperation, and PostOperation—determine when your custom code runs relative to the core data operation. Each stage has its own characteristics, benefits, and use cases. This article explains the differences between these stages.
How to Limit the Maximum Number of Records in a D365 View (Top N) Using a Plugin
Requirement
We need to limit how many records a Dynamics 365 (D365) view returns. Since there’s no out-of-box (OOB) way to do this, we introduced a custom column dsl_topn. This column holds the “Top N” value we want. A plugin then intercepts the FetchXML query and injects the <fetch top="N"/>
attribute, removing any conflicting paging attributes in the process.
Merging Word Documents in Dynamics 365 Using Only Built-In Features
Below is a straightforward approach to merge two Word documents in Dynamics 365—without resorting to third-party paid connectors or extensions. By leveraging a custom Action, a Power Automate flow, and a plugin with OpenXML (embedded via ILRepack), you can seamlessly combine Word files and store the merged result, all in one out-of-the-box solution.
Automating Web Role Assignments in Dynamics 365 with a Custom Plugin
Purpose of the Plugin
The plugin aims to streamline the user management process by automatically assigning a default web role to every new contact created in Dynamics 365. This is particularly useful in environments where new contacts need immediate and predefined access to certain parts of the system, ensuring they have the necessary permissions from the start.
Record Creation for N:N Relationships in Dynamics 365 with JavaScript and Custom Plugins
This comprehensive guide provides a detailed approach to automate the creation of many-to-many (N:N) relationship records in Dynamics 365 using a custom plugin and a JavaScript action. The solution streamlines the association of multiple records through a straightforward interface, making it indispensable in scenarios requiring batch processing or integration tasks.
Add and Remove Member from Marketing List Using Plugin in Dynamics 365
Introduction
Managing marketing list memberships efficiently is crucial for CRM systems like Microsoft Dynamics 365, where marketing lists play a key role in organizing campaigns and communications. This article demonstrates how to use custom plugins to add and remove contacts from marketing lists, leveraging Dynamics 365's SDK messages for optimized performance and robust error handling.
Understanding TimeSpan in Dynamics 365 Plugins
TimeSpan
is a .NET structure ideal for measuring and managing time intervals. It is frequently utilized in Dynamics 365 plugins to calculate differences between dates or manage time-based data efficiently.
Safely Handling AliasedValue in Dynamics 365 Plugins
Developing plugins for Dynamics 365 often involves extracting and manipulating data from linked entities using FetchXML. One common challenge in this scenario is handling the AliasedValue
objects that Dynamics 365 returns when querying attributes from these linked entities.
Enhancing Dynamics 365 Plugin Reliability with Specific Exception Logging
When developing plugins for Dynamics 365, handling exceptions robustly and providing clear, actionable error messages can significantly improve the maintenance and usability of your solutions. This article discusses a practical tip for logging specific exceptions to streamline troubleshooting and enhance system reliability.
Invoking Dynamics 365 Custom Actions from JavaScript to Trigger Plugins
Custom actions in Dynamics 365 are a versatile tool to extend your CRM capabilities, allowing you to encapsulate complex operations into callable functions. These actions are particularly useful when you need to trigger plugins that execute server-side logic in response to client-side events. Here’s a simplified guide on how to invoke these actions from JavaScript, covering both basic and advanced scenarios.
Optimizing Large-Scale Data Updates in Dynamics 365 with Asynchronous Plugins and Flexible FetchXML
Optimizing Large-Scale Data Updates in Dynamics 365 with Asynchronous Plugins and Flexible FetchXML
Introduction
In Dynamics 365, it's not uncommon to encounter scenarios where vast quantities of records require updates or complex manipulations. Naively processing large volumes in a single operation can strain performance and lead to timeouts. This article presents a strategy to tackle such challenges, emphasizing asynchronous processing, plugin chaining, and flexible FetchXML-driven initiation.
Understanding Relationship Types in Dynamics 365: N:N vs. 1:N & N:1
Understanding Relationship Types in Dynamics 365: N:N vs. 1:N & N:1
When modeling data relationships in Dynamics 365, understanding the distinction between N:N (Many-to-Many) and 1:N & N:1 (One-to-Many & Many-to-One) relationships is crucial. These relationship types serve different purposes and have unique characteristics.
Dynamics 365 Data Retrieval: Comprehensive Guide
Dynamics 365 Data Retrieval: Comprehensive Guide
Retrieving data effectively in Dynamics 365 (D365) is crucial for custom solutions' performance and scalability. This article explores different methods for data retrieval - QueryExpression, FetchXML, RetrieveMultiple, and direct record retrieval, providing complete sample codes for each scenario and a comparative analysis to help choose the right approach for specific needs.
Integrating Client-Side Scripts with Server-Side Plugins in Dynamics 365
Integrating Client-Side Scripts with Server-Side Plugins in Dynamics 365
Introduction
Integrating front-end actions with back-end server plugins in Dynamics 365 allows for robust process automation and enhanced user interaction. This article presents a generalized approach, showcasing a client-side script that triggers a custom action, subsequently invoking a server-side plugin for comprehensive business logic execution.
Call third party webapi from plugin using secure/ unsecure configuration (Sample C# code)
Call third party webapi from plugin using secure/ unsecure configuration (Sample C# code)
Utilising Pre/Post Entity Images in a Dynamics CRM Plugin
Utilising Pre/Post Entity Images in a Dynamics CRM Plugin
Lets take a closer look at how Pre and Post Images can be implemented as part of a CRM Plugin…
Tutorial: Write and register a plug-in
Tutorial: Write and register a plug-in
This tutorial is the first in a series that will show you how to work with plug-ins.
Customize the queries for subgrids of Dynamics 365 form
Subgrids are great but the limitation of needing a direct relationship between the sub entity and the main entity makes it very restrictive. There are many different use cases, if instead of using a pre-configured view that only allows linking to the active Record via a predefined relationship, we could instead bind a custom FetchXML do a subgrid and this custom FetchXML would allow for one token called #RecordID# to reference the currently open record on the form by returning the GUID.
In Classic UI people used the subgrid.control.SetParameter("fetchxml") function but this is now broken in Unified Interface. In Unified Interface it appears a Retrieve Multiple Plugin is the only way to achieve this which is extremely complicated for something as simple as binding a query to a subgrid.
Here is the only way to currently do this:
Reference:
- https://powerusers.microsoft.com/t5/Power-Apps-Ideas/Binding-FetchXML-to-Subgrid-with-reference-to-RecordID-to-filter/idi-p/675538
- https://cloudblogs.microsoft.com/dynamics365/no-audience/2012/04/16/deep-queries-for-subgrids/?source=crm