Tutorial https://dynamics-chronicles.com/ en Power Apps Code Apps in Practice: Recreating Model-Driven App Patterns https://dynamics-chronicles.com/article/power-apps-code-apps-practice-recreating-model-driven-app-patterns <span property="schema:name" class="field field--name-title field--type-string field--label-hidden">Power Apps Code Apps in Practice: Recreating Model-Driven App Patterns</span> <span rel="schema:author" class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/axel" lang="" about="/user/axel" typeof="schema:Person" property="schema:name" datatype="" class="username">Axel</a></span> <span property="schema:dateCreated" content="2026-03-11T14:56:40+00:00" class="field field--name-created field--type-created field--label-hidden">Wed, 03/11/2026 - 15:56</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Body</div> <div property="schema:text" class="field__item"><h2></h2> <p>Power Apps Code Apps went from preview to general availability in record time. With that, Microsoft has sent a clear signal that it is taking this technology very seriously.</p> <p>In fact, Code Apps are something of a small revolution. They allow pro-code developers to deliver custom web apps directly within a Dataverse environment without the need to implement authentication libraries.</p> <p>But that is not all: Low-code developers can benefit from them as well. With tools like GitHub Copilot and Claude Code, you no longer necessarily need to understand a programming language such as React in order to build full-blown web application. Instead, you can simply describe the features you want in a prompt and have them implemented.</p> <p>This will fundamentally change the way how apps will be implemented in the future. <a href="https://storybooks.fluentui.dev/react">React Fluent UI components</a> can be integrated into Code Apps and open up entirely new possibilities for designing user interfaces such as accordions, cards or TreeViews.</p> <h2>Motivation</h2> <p>There is, however, one important point to consider: At the time of writing, Power Apps Code Apps are stand-alone apps. That means they are not integrated into a model-driven app, but exist as independent applications, similar to canvas apps. There is also no custom page in a model-driven app to represent a code app.</p> <p>But what if you still need the typical built-in functionality of a model-driven app upfront, such as filtering records in a data grid? One option would be to add a button to the model-driven app or try to integrate the app through an iframe.</p> <p>This article explores another approach: recreating typical model-driven app functionality directly inside the custom app. The goal is to assess how much effort this requires and how quickly something like this can be implemented, <strong>not to reinvent the wheel, but to demonstrate the capabilities and the power of Code Apps. </strong>And of course also to show that, for many use cases, you no longer need a model-driven app as the entry point.</p> <h2>PoC: Table Browser App</h2> <p>The goal was to build an new code app "Table Browser" from scratch which demonstrates that a standalone Power Apps Code App can reproduce familiar Model-Driven-App-style functionality, such as filtered and searchable record lists with the same look and feel like Model-Driven-Apps. This can serve as an entry point and opens the door to building a fully fledged standalone app with a much richer user experience, including features such as tree views and other advanced interface patterns that are difficult to realize in a traditional Model-Driven App.</p> <p>It is also a <strong>proof of concept</strong>: each feature was chosen to answer a specific question about what Code Apps can do. A secondary goal was to evaluate these two tools in a real-world scenario and gain hands-on experience with AI-assisted development.</p> <p><strong>The entire app was built in a single Saturday</strong> — using both <strong>GitHub Copilot</strong> and <strong>Claude Code</strong> as AI coding assistants. Fun fact: Claude Code estimated the development effort for the entire app at 12 to 15 days if implemented by a senior developer without the help of AI.</p> <p><img alt="Screenshots Table Browser App" data-entity-type="file" data-entity-uuid="db68f02b-3641-4694-afb2-2c9bd8b91f85" src="/sites/default/files/inline-images/TableBrowser.png" /></p> <p> </p> <p></p> <h3>Proof Points</h3> <ul> <li><strong>Performance</strong>: Can a Code App render large Dataverse record sets noticeably faster than a Model-Driven grid? Yes.</li> <li><strong>Infinite scroll</strong>: How much code does it take to implement demand-driven pagination? Very little — a scroll event plus a <code>getAll</code> call with <code>top</code> and <code>skip</code>.</li> <li><strong>Metadata access</strong>: How easy is it to read column metadata at runtime? One SDK call to <code>retrieveMultipleRecordsAsync</code> on <code>EntityDefinition</code> gives you full attribute detail.</li> <li><strong>View definitions</strong>: Can a Code App read the default system view and use it to determine which columns to show? Yes — <code>savedquery</code> records expose the column layout as XML, which the app parses to build its default column set.</li> <li><strong>Form definitions</strong>: Can a Code App reconstruct the default form layout — tabs, sections, fields — without hardcoding it? Yes — <code>systemform</code> records contain the full form structure as JSON and XML, which the app uses to render the record detail dialog.</li> <li><strong>Column persistence</strong>: Can user preferences be stored in Dataverse instead of localStorage — cross-device, without a custom table? Yes, via personal views (<code>userquery</code>).</li> </ul> <p></p> <h3>Key capabilities</h3> <ul> <li>Browse records from multiple Dataverse tables with infinite scroll and client-side search</li> <li>Inspect column metadata and field properties (schema view)</li> <li>Customize visible columns per table — persisted as personal views (<code>userquery</code> records) in Dataverse</li> <li>View full record details in a form-based dialog with tabs and sections</li> <li>Switch between list (DataGrid) and card grid layouts</li> <li>Light/dark mode, display density, and accent color theming (persisted to localStorage)</li> </ul> <h3>UI Features</h3> <p>The goal was to implement the same look and feel that we know from Model-Driven-App. This can easily be achieved by using the  <a href="https://storybooks.fluentui.dev/react">React Fluent UI components</a> library. The following chapters show which features have been implemented. </p> <h4>List View</h4> <img alt="List View" data-entity-type="file" data-entity-uuid="597a8d02-4260-4b33-979d-5f83a837e491" src="/sites/default/files/inline-images/Accounts-List-800x600_0.png" class="align-center" /> <p> </p> <ul> <li>The app uses the metadata to look for the default view of the table and shows all columns defined there.</li> <li>Columns width can be changed by drag and drop.</li> <li>Columns can be sorted. If sorted, an api call is used for server side sorting</li> <li>Smooth paging: Scrolling to the end of the list reloads the next page of data (e.g. the next 50 records)</li> </ul> <p> </p> <h4>Search and highlighting</h4> <img alt="Search Highlighting" data-entity-type="file" data-entity-uuid="95b7edfa-b8c9-492c-b6c1-7c5586c995fe" src="/sites/default/files/inline-images/Search-Highlighting-800.png" class="align-center" /> <p> </p> <ul> <li>Search was implemented with a single field which searches in all text fields <ul> <li>This was easier to implement</li> <li>A filter below every column, as in model driven apps could be another option for the future.</li> </ul> </li> <li>Highlighting the matched text was very easy to implement, so this functionality was added as well, even though it does not exist in model-driven apps</li> </ul> <p> </p> <h4>Column selection and reordering<br />  </h4> <img alt="Select columns" data-entity-type="file" data-entity-uuid="60057dc1-b686-4bab-9768-013a98b68d35" src="/sites/default/files/inline-images/Select-columns%20-%20800.png" class="align-center" /> <p> </p> <ul> <li>A modal dialog window can be used to select the columns to display</li> <li>A drag and drop component can be used to reorder the columns. The <a href="https://dndkit.com/overview">@dnd-kit/sortable library </a>was used to implement this feature</li> <li>The adjusted view is updated in the Dataverse personal view</li> </ul> <p> </p> <h4>Card View</h4> <img alt="Card View" data-entity-type="file" data-entity-uuid="83ad4ccb-1adc-4366-a153-900f2c7a75d6" src="/sites/default/files/inline-images/Accounts-Cardview-800.png" class="align-center" /> <p> </p> <ul> <li>A Card View as an alternative to a List View was implemented</li> <li>This was quite easy because a card already exists as a UI component in the React UI Components</li> <li>This view is especially useful for data with images</li> </ul> <p> </p> <h4>Detail View Edit Dialog</h4> <img alt="Detail View Edit Dialog" data-entity-type="file" data-entity-uuid="9715deab-a704-462f-a6d6-e44f5fed7d02" src="/sites/default/files/inline-images/Editor-800_0.png" class="align-center" /> <p> </p> <ul> <li>A detailed review was implemented to show and edit the current record</li> <li>The code dynamically parses the system form record to create the layout dynamically from the defaults form definition (including tabs)</li> <li>Field types text, text area, option set, lookup, yes/no, date/time are supported and fully working</li> <li>Of course, the form doesn't support PCF or sub grids.</li> <li>An alternative approach approach for the future, could be to redirect to a detail view, like a Model-Driven-App does </li> </ul> <p> </p> <h4>Table Column Definitions</h4> <img alt="Column meta data list" data-entity-type="file" data-entity-uuid="b3926707-c64d-40ce-a2ba-1a91b65b3814" src="/sites/default/files/inline-images/Schema-Browser-800.png" class="align-center" /> <p> </p> <ul> <li>A column meta data list was implemented</li> <li>It automatically shows all columns of the table with display name, data type, required, and description</li> <li>It proves that metadata can easily be fetched by the @microsoft/power-apps/data lib (for code apps)</li> <li>The column metadata can also be filtered</li> <li>The screenshot shows the list in dark mode. Of course, dark mode is available for the whole application. </li> </ul> <h4> Settings dialog </h4> <img alt="Settings dialog" data-entity-type="file" data-entity-uuid="aa4c2d07-fcce-4ca5-a210-87e179d8f429" src="/sites/default/files/inline-images/settings-400.png" class="align-center" /> <p> </p> <ul> <li>A small settings dialog was implemented for the settings of dark mode, display density, and accent color</li> <li>This was very easy to implement since dark mode, accent color and density are just properties in the React Fluent UI library</li> <li>The settings are stored in the local storage of the browser for simplicity</li> </ul> <h2>Lessons learned with GitHub Copilot and Claude Code</h2> <p>The project was developed almost entirely in "interactive agent-driven mode".<br /> Both GitHub Copilot and Claude Code were used as active development assistants during the entire process.<br /> <br /> The agents were involved in:</p> <ul> <li>Concept discussions</li> <li>Implementation</li> <li>Refactoring</li> <li>Architectural decisions</li> <li>Documentation improvements</li> <li>Iterative improvements to the collaboration workflow</li> </ul> <p>In addition to generating code, the agents were also used to discuss best practices and improve the documentation and structure of the project itself. Both agents used the same model (Claude Sonnet 4.6), but produced different results due to their overall architectural differences.</p> <p><br /> <strong>Claude Code</strong></p> <p>Overall, Claude Code produced more consistent and reliable results.<br /> <br /> Strengths included:</p> <ul> <li>Better architectural reasoning</li> <li>More structured implementations</li> <li>Clearer explanations</li> <li>Higher-quality refactorings</li> </ul> <p>Claude Code was particularly strong when working across multiple files or when performing larger structural changes in the project. In the beginning it introduced reusable UI components even before having instructions to do so.<br /> When working with Claude Code, development sessions occasionally reached usage limits. This required temporarily switching back to GitHub Copilot until the session limit reset. As a result, the project naturally evolved into a mixed workflow where both tools contributed to the final implementation.</p> <p><strong>GitHub Copilot</strong></p> <p>GitHub Copilot performed well for smaller tasks but showed some weaknesses when acting as a full development agent.<br /> <br /> Some common issues included:<br /> - Guessing instead of reasoning<br /> - Repeating the same incorrect approach multiple times<br /> - Getting stuck in loops when a problem was not clearly defined<br /> <br /> However, some of these issues were likely influenced by better instructions given to the agent (e.g. links to the official documentation, instructions to always look there first) <br /> <br /> At the beginning of the project, important rules were not yet defined, for example:<br /> - Asking for confirmation before large refactorings<br /> - Explaining architectural changes before applying them<br /> - Avoiding speculative changes<br /> <br /> Once clearer rules were established, the results improved.</p> <h2>Architecture</h2> <p>The architecture naturally follows the architecture of Power Apps Code Apps. Services for accessing data and model classes were generated using the pac tool.</p> <p>The following architecture diagram was generated with Claude Code. This no longer has to be done manually by hand either...</p> <img alt="Architecture" data-entity-type="file" data-entity-uuid="8f7e12a6-d6cd-42d9-b7c4-01ede36e8977" src="/sites/default/files/inline-images/architecture.png" class="align-center" /> <h2>Conclusion</h2> <p>It is extremely impressive how quickly and easily a Power Apps Code App can be developed with GitHub Copilot or Claude Code. What makes development so fast and straightforward is the combination of coding agents with an intelligent framework for app development.</p> <p>Throughout the entire development process, there was never any sense of working with an unstable product or with something that had only recently reached general availability. There were no crashes at all, and deploying the app via solution to another environment also worked flawlessly.</p> <p>Only in a few places does the API appear to be not entirely complete yet. For example, <code>RetrieveRecordAsync</code> did not work, so a workaround had to be implemented using <code>GetAll</code> with a filter expression. However, the most important actions for loading, filtering, and saving data are already very stable.<br /> <br /> Code Apps will fundamentally change the way we build apps in Dataverse environments and across the Power Platform. Canvas Apps may soon become obsolete and be replaced by Code Apps. There may also be more options in the future to integrate Code Apps into Model-Driven Apps. Until then, however, both can coexist peacefully side by side.</p> <p><br />  </p></div> </div> <div class="field field--name-field-image field--type-image field--label-above"> <div class="field__label">Image</div> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-above field__item">/sites/default/files/2026-03/Power-Apps-Code-Apps-in-Practice_1.png</div> </div> </div> </div> </div> Wed, 11 Mar 2026 14:56:40 +0000 Axel 870 at https://dynamics-chronicles.com Use XRM type definition in your Javascript file https://dynamics-chronicles.com/article/use-xrm-type-definition-your-javascript-file <span property="schema:name" class="field field--name-title field--type-string field--label-hidden">Use XRM type definition in your Javascript file</span> <span rel="schema:author" class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/nguyen-van-hao" lang="" about="/user/nguyen-van-hao" typeof="schema:Person" property="schema:name" datatype="" class="username">Nguyen Van Hao</a></span> <span property="schema:dateCreated" content="2026-01-27T12:12:09+00:00" class="field field--name-created field--type-created field--label-hidden">Tue, 01/27/2026 - 13:12</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Body</div> <div property="schema:text" class="field__item"><p>We implement Javascript webresource for form scripting (form onload, field on change,...). Our code need to follow the official document <a href="https://learn.microsoft.com/en-us/power-apps/developer/model-driven-apps/clientapi/clientapi-xrm">Xrm object</a>, <a href="https://learn.microsoft.com/en-us/power-apps/developer/model-driven-apps/clientapi/clientapi-execution-context?tabs=pass-execution-context-legacy">execution context</a>, <a href="https://learn.microsoft.com/en-us/power-apps/developer/model-driven-apps/clientapi/clientapi-form-context">form context</a>,..</p> <p>Javascript is not a strong type programing language, we don't have suggession/intellisense like C#, Typescript</p> <p>In this article, I will show you how to get suggession/intellisense for your JS code</p> <p><strong>Step 1:</strong> Download the file xrm type definition <a href="https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/xrm/index.d.ts">here</a></p> <p>Save it to a folder, for example Types\xrm.d.ts</p> <p><img src="data:image/png;base64,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" /></p> <p><strong>Step 2.</strong> Add this line to the top of the JS file that you want to have intellisense</p> <p><em>/// &lt;reference path="../Types/xrm.d.ts" /&gt;</em></p> <p><img src="data:image/png;base64,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" /></p> <p> </p> <p><strong>Step 3:</strong> Add type annotation for function param</p> <p><img src="data:image/png;base64,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" /></p> <p> </p> <p><strong>Step 4.</strong> Enjoy the magic</p> <p>You will have suggestions while typing like this</p> <p><img src="data:image/png;base64,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" /></p> <p> </p> <p>It also shows suggestions for Xrm.WebApi</p> <p><img src="data:image/png;base64,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" /></p> <p>That's all. Hope this help you.</p> <p> </p> </div> </div> Tue, 27 Jan 2026 12:12:09 +0000 Nguyen Van Hao 869 at https://dynamics-chronicles.com Row Summary in Model-Driven Apps https://dynamics-chronicles.com/article/row-summary-model-driven-apps <span property="schema:name" class="field field--name-title field--type-string field--label-hidden">Row Summary in Model-Driven Apps</span> <span rel="schema:author" class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/stephane-pelhatre" lang="" about="/user/stephane-pelhatre" typeof="schema:Person" property="schema:name" datatype="" class="username">Stephane Pelhatre</a></span> <span property="schema:dateCreated" content="2025-10-14T08:04:03+00:00" class="field field--name-created field--type-created field--label-hidden">Tue, 10/14/2025 - 10:04</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Body</div> <div property="schema:text" class="field__item"><h3>Introduction</h3> <p>In model-driven applications, forms often contain many fields spread across multiple tabs and sections, which can make it difficult and time-consuming to find key information. Navigating between these tabs slows productivity and increases the risk of missing important information. Finding key insights quickly can be a challenge.</p> <p>The Row Summary feature solves this problem by displaying a clear and concise summary of the most important information. Makers can customize the columns to include and choose how the summary is presented (as bullet points or as a short paragraph). This allows users to get the necessary context at a glance, without having to scroll through the entire form.<br /> Furthermore, the summary can include clickable links to related records.</p> <p>At the time of writing this article, this feature is still in preview.<br /> Summaries are currently only supported in the English language.<br /> Preview features aren’t meant for production use and might have restricted functionality.</p> <h3>Enable Row Summary feature</h3> <p>Before you can configure a Row Summary, you need to enable the feature in your environment:</p> <ol> <li>Go to <a href="https://admin.powerplatform.microsoft.com">Power Platform Admin Center</a></li> <li>Select your environment</li> <li>Go to <strong>Settings &gt; Product &gt; Features</strong><br /> <img alt="enable0" data-entity-type="file" data-entity-uuid="02031ea5-0e19-4bd1-a664-fd4c5a7e848e" src="/sites/default/files/inline-images/enable%20feature1.png" /><br />  </li> <li>Enable the feature <strong>AI Insight Cards</strong><br /> <img alt="Enable1" data-entity-type="file" data-entity-uuid="cd7be403-59f5-40d9-8689-8efcdb06684f" src="/sites/default/files/inline-images/Enable1_0.png" /></li> </ol> <p>Once enabled, you’ll be able to access and configure the Row Summary feature in model-driven apps.</p> <h3>Configure Row Summary for a table</h3> <p>To configure a row summary for main forms for a specific table:</p> <ol> <li>Open <a href="https://make.powerapps.com/">Power Apps Portal</a> and select your environment</li> <li>Select the table where you want to apply the row summary (e.g., Contact) from the left navigation pane and click on <strong>Row summary</strong> in the section <strong>Customizations<br /> <img alt="Enable2" data-entity-type="file" data-entity-uuid="b9449246-8aee-46cd-a2d8-8558df313b72" src="/sites/default/files/inline-images/Enable2.png" /></strong><br /> <br /> Another way is to select your table from the left navigation pane and click on <strong>Forms </strong>in the section <strong>Data experience<br /> <img alt="Enable8" data-entity-type="file" data-entity-uuid="6f75bf72-246c-4780-bc0b-f2ad9375243e" src="/sites/default/files/inline-images/Enable8.png" /></strong><br /> <br /> Then click on <strong>Row summary</strong> on the command bar and from the dropdown select <strong>Edit Summary </strong>to begin customization<br /> <img alt="Enable3" data-entity-type="file" data-entity-uuid="c793e558-8c1f-4a6b-833e-f9e49427ff71" src="/sites/default/files/inline-images/Enable3.png" /><br />  </li> <li>Following window is displayed:<br /> <img alt="Enable4" data-entity-type="file" data-entity-uuid="58879e41-495b-46dc-a92e-e65860d37813" src="/sites/default/files/inline-images/Enable4.png" /><br />  </li> <li>Now you have to define columns to include in the summary and write a prompt<br /> - In the Prompt editor, click on <b>+Add data </b>or type "/" to choose the columns you want the AI to summarize (in my example: full name, job title, company name, marital status)<br />   If you click on <b>+Add data </b>you can add several columns in one step which is not the case if you type "/"<br /> - Write a custom instruction (prompt) describing how the summary should be generated<br />   In my example below : <em>Generate a concise summary using the selected fields. Use bullet points and return “No value” if a field is empty<br /> <img alt="Enable5" data-entity-type="file" data-entity-uuid="95317f6a-7933-44f3-a180-db57a3eb4c88" src="/sites/default/files/inline-images/Enable5.png" /></em><br />  </li> <li>Click on <strong>Test </strong>to preview the summary output (the most recently edited record is used to generate the test response)<br /> <img alt="Enable6" data-entity-type="file" data-entity-uuid="57e8d46b-b361-4f40-b55e-b680a06ca89b" src="/sites/default/files/inline-images/Enable6.png" /><br />  </li> <li>Once satisfied, click on <strong>Apply to main forms</strong> to enable the summary across all main forms for your table<br />  </li> </ol> <p>Display the list of forms : an AI icon is visible for forms where the summary is active (only main forms)<br /> <img alt="Enable7" data-entity-type="file" data-entity-uuid="133c10d2-1fe7-4f3c-9d1a-84a2acbc2c20" src="/sites/default/files/inline-images/Enable7.png" /></p> <p>To modify an existing row summary:</p> <ol> <li>In <a href="https://make.powerapps.com/">Power Apps Portal</a> select your table where you want to modify the row summary</li> <li>Click on <strong>Forms </strong>in the section <strong>Data experience</strong><br /> Then click on <strong>Row summary</strong> on the command bar and from the dropdown select <strong>Edit Summary <br /> <img alt="Modify1" data-entity-type="file" data-entity-uuid="1aaa7ca0-540a-4689-a304-c93c8a7eed58" src="/sites/default/files/inline-images/Modify1.png" /></strong><br /> <br /> An alternative to the previous method (point 2) is to click on <strong>Row summary (applied) </strong>in section <strong>Customizations<br /> <img alt="Modify2" data-entity-type="file" data-entity-uuid="5c91604b-7fb9-4bbf-8863-bee3a28ea558" src="/sites/default/files/inline-images/Modify2.png" /></strong><br />  </li> <li>Make your changes to the prompt or included columns and reapply</li> </ol> <p>To remove a summary from all forms:</p> <ol> <li>In <a href="https://make.powerapps.com/">Power Apps Portal</a> select your table where you want to remove the row summary</li> <li>Click on <strong>Forms </strong>in the section <strong>Data experience</strong>.<br /> Then click on <strong>Row summary</strong> on the command bar and from the dropdown select <strong>Hide on all main forms<br /> <img alt="Hide1" data-entity-type="file" data-entity-uuid="c077490f-7872-44dd-9507-082ea7e198de" src="/sites/default/files/inline-images/Hide1.png" /></strong></li> </ol> <h3><br /> View Row Summary in Dynamics 365</h3> <p>Open your app in Dynamics 365 and navigate to the entity (e.g., Contact) where the row summary is configured.<br /> Select a record in the view : an AI summary icon is displayed.<img alt="Use1" data-entity-type="file" data-entity-uuid="1ccfd515-4736-456a-a423-127321a7c6bb" src="/sites/default/files/inline-images/Use1_1.png" /><br /> <br /> Click on this icon : AI-generated summary is displayed in a modal popup.<img alt="Use2" data-entity-type="file" data-entity-uuid="f97e3e25-2fda-42f9-99a3-88f8916b2e2d" src="/sites/default/files/inline-images/Use2_0.png" /></p> <p>Note that you can copy the summary into the clipboard.</p> <p>If you open a record (e.g., Contact) the summary is displayed at the top of the form in a collapsible bar (called Insights bar).<br /> <img alt="Use3" data-entity-type="file" data-entity-uuid="0b67c080-7a67-4464-afb1-c6086f909571" src="/sites/default/files/inline-images/Use3_0.png" /></p> </div> </div> <div class="field field--name-field-image field--type-image field--label-above"> <div class="field__label">Image</div> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-above field__item">/sites/default/files/2025-10/ChatGPT%20Image%20Oct%2020%2C%202025%2C%2006_24_24%20PM.png</div> </div> </div> </div> </div> Tue, 14 Oct 2025 08:04:03 +0000 Stephane Pelhatre 861 at https://dynamics-chronicles.com Dataverse: Duplicate Detection Rules vs Alternate Keys https://dynamics-chronicles.com/article/dataverse-duplicate-detection-rules-vs-alternate-keys <span property="schema:name" class="field field--name-title field--type-string field--label-hidden">Dataverse: Duplicate Detection Rules vs Alternate Keys</span> <span rel="schema:author" class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/stephane-pelhatre" lang="" about="/user/stephane-pelhatre" typeof="schema:Person" property="schema:name" datatype="" class="username">Stephane Pelhatre</a></span> <span property="schema:dateCreated" content="2025-10-08T15:57:17+00:00" class="field field--name-created field--type-created field--label-hidden">Wed, 10/08/2025 - 17:57</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Body</div> <div property="schema:text" class="field__item"><h3>Introduction</h3> <p>Having clean data in Dataverse can be tricky. One of the challenges is detecting and managing duplicate records.<br /> With out-of-the-box tools you can implement duplicate detection rules or create alternate keys.<br /> If you are a developer, you can implement a custom validation in a plugin.<br /> In this article we will focus on out-of-the-box features (duplicate detection rules and alternate keys) and compare them.</p> <h3>Duplicate detection rules</h3> <p>First step is to check if the feature <em>Duplicate Detection</em> is enabled in your environment (it is enabled by default):</p> <ol> <li>Connect to Dynamics 365 and open <strong>Power Platform Environment Settings </strong>app</li> <li>Click on <strong>Data Management</strong> on the left pane and select <strong>Duplicate detection settings<br /> <img alt="Enable1" data-entity-type="file" data-entity-uuid="82de77bd-935c-4901-8e51-323c559ac4e7" src="/sites/default/files/inline-images/enable%201_2.png" /></strong><br />  </li> <li>Check that the option <strong>Enable duplicate detection</strong> is enabled<br /> <img alt="Enable2" data-entity-type="file" data-entity-uuid="29cd6636-f3cb-4b3a-8a4b-113f4c280994" src="/sites/default/files/inline-images/enable%202_1.png" /><br /> <br /> There are 3 triggers that you can activate:</li> </ol> <ul> <li>When a record is created or updated</li> <li>When Microsoft Dynamics 365 for Outlook goes from offline to online</li> <li>During data import</li> </ul> <p>Second step is to make sure the feature is enabled for your table:</p> <ol> <li>Open <a href="https://make.powerapps.com/">Power Apps Portal</a> and select your environment</li> <li>Select your table on the left pane and click on <strong>Properties<br /> <img alt="Enable3" data-entity-type="file" data-entity-uuid="b063d228-a864-4888-984c-3c98f81a79f1" src="/sites/default/files/inline-images/enable%203.png" /></strong><br />  </li> <li>Expand <strong>Advanced options</strong> pane and ensure that <strong>Apply duplicate detection rules</strong> is checked<br /> <img alt="Enable4" data-entity-type="file" data-entity-uuid="3a0e8ef4-f0d5-488f-b539-5a63673485d7" src="/sites/default/files/inline-images/enable%204_0.png" /></li> </ol> <p>Then you can create duplicate detection rules:</p> <ol> <li>Connect to Dynamics 365 and open<strong> Power Platform Environment Settings </strong>app</li> <li>Click on <strong>Data Management</strong> on the left pane and select <strong>Duplicate detection rules<br /> <img alt="rule1" data-entity-type="file" data-entity-uuid="39c290ff-cd34-416d-8e94-472057d321ed" src="/sites/default/files/inline-images/rule1_0.png" /></strong><br />  </li> <li>All out-of-the-box duplicate detection rules are displayed<br /> <img alt="rule2" data-entity-type="file" data-entity-uuid="ebc76ed5-f1b1-4038-9fdf-ef7aef026f24" src="/sites/default/files/inline-images/rule2_1.png" /><br />  </li> <li>Click on <strong>New </strong>on the command bar<br /> Below an example with the out-of-the-box rule <em>Contacts with the same first name and last name </em>for Contact table<br /> <img alt="rule3" data-entity-type="file" data-entity-uuid="99d8e059-d2be-45da-b97b-3e4c57da25f4" src="/sites/default/files/inline-images/rule3_0.png" /><br /> <br /> Provide a name and description for the rule and define the criteria for identifying duplicates:</li> </ol> <ul> <li><strong>Base Record Type</strong>: select the type of record the rule applies to (e.g., Contacts).</li> <li><strong>Matching Record Type</strong>: select the type of record to compare. Typically, this is the same as the base record type, but you can compare different types (e.g., Contacts and Leads).</li> <li><strong>Exclude Inactive Records</strong>: check this box if you want to exclude inactive records from the duplicate detection process.</li> <li><strong>Case-Sensitive</strong>: check this box if the rule should be case-sensitive.</li> <li><strong>Field Selection</strong>: for each criterion, select the fields to compare and the operator (e.g., Exact Match).</li> <li>I<strong>gnore Blank Values</strong>: check this box if you do not want the rule to consider blank fields as equal.<br type="_moz" /> <br /> You can add several criterions to your rule criteria:<br /> For text fields you have 3 choices:<br /> - <em>Exact Match</em><br /> - <em>Same First Characters</em><br /> - <em>Same Last Characters</em><br /> For Datetime fields you have 2 choices:<br /> - <em>Same date</em><br /> - <em>Same date and time</em><br /> For whole number/decimal and lookup fields only <em>Exact Match</em> is available</li> </ul> <p>      5. After configuring the criteria, click on <strong>Save</strong>.<br />           To make the rule active, select it and click on <strong>Publish</strong>.<br />           Note that you can only publish up to five rules for the same base record type at a time.</p> <p>Now let's try creating a duplicate record using Dynamics 365 UI. For example a contact with existing first name and last name.<br /> You should see a pop-up dialog with the warning message <em>Duplicate records found</em>.<br /> <img alt="rule4" data-entity-type="file" data-entity-uuid="2b2bc889-8f1c-4e1a-b9eb-c9475edd7e12" src="/sites/default/files/inline-images/rule4_0.png" /></p> <p>You have 3 possibilities:</p> <ul> <li><strong>Ignore and save</strong> : if you are certain the record is unique or requires a new entry despite the match, click "Ignore and Save" to create the duplicate</li> <li><strong>Merge </strong>: if you want to combine the information from both records into a single, primary record, select "Merge." You will typically be prompted to choose which record will be the primary one, and then you can select which fields to keep from each record</li> <li><strong>Cancel </strong>: do not create the duplicate record</li> </ul> <h3>Alternate keys</h3> <p>An alternative to duplicate detection rule is to create alternate keys.<br /> This method is the same as creating unique-index(es) from the database perspective. Hence this method will be more strict compared to duplicate detection rules.<br /> An alternate key can combine one or several columns.<br /> It can contain multiple rows with NULL values. NULL values are not indexed.</p> <p>Some limitations:</p> <ul> <li>There can be a maximum of 10 alternate keys for a table in a Dataverse instance</li> <li>Columns used in the key must not have field-level security applied</li> <li>Alternate keys aren't supported in virtual tables</li> <li>When a key is created, the system validates the key, including that the total key size doesn't violate SQL-based index constraints like 900 bytes per key and 16 columns per key. If the key size doesn't meet the constraints, an error message is displayed</li> <li>Unicode characters in key value. If the data within a column that is used in an alternate key contains one of the following characters /,&lt;,&gt;,*,%,&amp;,:,\\,?,+ then retrieve (GET), update or upsert (PATCH) actions won't work. If you only need uniqueness, then this approach works, but if you need to use these keys as part of data integration then it's best to create the key on columns that won't have data with those characters</li> </ul> <p>To create an alternate key for a specific table:</p> <ol> <li>Open <a href="https://make.powerapps.com/">Power Apps Portal</a> and select your environment</li> <li>Select the table into which you want to create an alternate key</li> <li>Click on <strong>Keys</strong></li> <li>Provide a display name and select the columns to include in your key<br /> In the example below I create an alternate key in table <em>Contact </em>for columns birthday and last name<img alt="key2" data-entity-type="file" data-entity-uuid="420b5f90-3b7b-492f-b551-2310c5edbee1" src="/sites/default/files/inline-images/key2_4.png" /> <p>Only columns of the following types can be included in alternate key table definitions:<br />     - Decimal Number<br />     - Whole Number<br />     - Single line of text<br />     - Date Time<br />     - Lookup<br />     - Option Set</p> </li> <li> <p>Click on <strong>Save</strong>. The system will automatically create the index in the database.<br /> If the system detects duplicate data in the table, the creation will fail and you need to delete data first.<br /> If there are lots of existing records in your table, index creation can be a lengthy process.<br /> During creation of the key status will be <em>Pending</em>. Once the creation is complete status changes to <em>Active</em>.<br /> <img alt="key3" data-entity-type="file" data-entity-uuid="0febdf8e-6580-49ef-ad78-428a12defaf2" src="/sites/default/files/inline-images/key3_2.png" /></p> </li> </ol> <p>Now let's try creating a duplicate record using Dynamics 365 UI. To be consistent with the alternate key created previously, a contact with existing birthday and last name.<br /> You should see a pop-up error with the message <em>Duplicate record</em>.</p> <p><img alt="Key 4" data-entity-type="file" data-entity-uuid="efbb6b10-e151-47cf-801c-7fb645d4e9f4" src="/sites/default/files/inline-images/key4_0.png" /></p> <p>Therefore, it is impossible to create a duplicate record with the user interface. This makes sense as uniqueness is ensured at the database level.</p> <h3>Creating/Updating records programmatically</h3> <p>We have seen that behavior is different when we create a duplicate record with the UI using duplicate detection rules or alternate keys.<br /> But what happens if we create duplicate records programmatically with Dynamics 365 SDK or Web API?</p> <h4>Duplicate detection rules</h4> <p>By default duplicate detection rules are not applied when you are creating or updating records using Web API or Dynamics 365 API. Therefore duplicate records will be created.<br /> If you want Dynamics 365 to raise an error you must utilize an optional parameter.<br /> With Web API use parameter <code>MSCRM.SuppressDuplicateDetection</code> in the header of your HTTP request (<em>POST </em>to create a record or <em>PATCH </em>to update a record)  to avoid creation of a duplicate record of an existing record.<br /> The value assigned to <code>MSCRM.SuppressDuplicateDetection</code> determines whether the Create or Update operation can be completed:</p> <ul> <li><em>true</em>: Create or update the record, if a duplicate is found.</li> <li><em>false</em>:  Do not create or update the record, if a duplicate is found.</li> </ul> <p>So ensure that <code>MSCRM.SuppressDuplicateDetection</code> is set to <em>false </em>in your Web API request to detect duplicates.<br /> You will get the following error message if you try to create a duplicate record:</p> <p><em>{<br />   "error": {<br />     "code": "0x80040333",<br />     "message": "A record was not created or updated because a duplicate of the current record already exists."<br />   }<br /> }</em></p> <p>Note that if you do not use <code>MSCRM.SuppressDuplicateDetection </code>duplicates will be created.<br /> Below an example of POST request to create a contact named "John Doe" with activation of duplicate detection rules.</p> <pre> <code class="language-http">POST [Organization URI]/org1/api/data/v9.2/contacts If-None-Match: null OData-Version: 4.0 OData-MaxVersion: 4.0 Content-Type: application/json Accept: application/json MSCRM.SuppressDuplicateDetection: false { "firstname":"John", "lastname":"Doe" }</code></pre> <p>And below an example performed with XrmToolbox plugin <em>WebAPI Launcher.</em><br /> Note parameter <code>MSCRM.SuppressDuplicateDetection </code>in the header.</p> <p><img alt="Prog 1" data-entity-type="file" data-entity-uuid="a80f712c-01c1-45fe-9ce2-42ea21edc56f" src="/sites/default/files/inline-images/Prog1.png" /></p> <p>And the result of this Web API request if we try to create a duplicate:<br /> <img alt="Prog 2" data-entity-type="file" data-entity-uuid="49f87afd-9a4c-408b-9717-5cea346adfb2" src="/sites/default/files/inline-images/Prog2.png" /></p> <p>With Dynamics 365 SDK you have to use <code>SuppressDuplicateDetection</code> optional parameter in your request (<em>CreateRequest </em>or <em>UpdateRequest</em>) if you want the configured duplicate detection rules to run and throw an exception while creating or updating a record.<br /> So set its value to <em>false </em>in your code to trigger duplicate detection rules.<br /> You will get the following error if you try to create a duplicate record:<br /> <em>A record was not created or updated because a duplicate of the current record already exists</em></p> <p>Below a C# example to create with the SDK a contact named "John Doe" with activation of duplicate detection rules.</p> <pre> <code class="language-cs">namespace CrmDuplicateDetection { class Program { static void Main(string[] args) { CrmServiceClient.MaxConnectionTimeout = TimeSpan.FromHours(3); var connectionString = WebConfigurationManager.AppSettings["connectionString"]; var client = new CrmServiceClient(connectionString); var contact = new Entity("contact") { ["firstname"] = "John", ["lastname"] = "Doe" }; var createRequest = new CreateRequest { Target = contact }; // Pass parameter 'SuppressDuplicateDetection' to trigger Duplicate Detection Rules createRequest["SuppressDuplicateDetection"] = false; var response = (CreateResponse)client.Execute(createRequest); } } }</code></pre> <h4>Alternate keys</h4> <p>If you try to create a duplicate record programmatically with Dynamics 365 SDK you will get an error even if you set parameter <code>SuppressDuplicateDetection</code> to <em>false </em>in your <em>CreateRequest</em>/<em>UpdateRequest </em>request (and same if you set <code>MSCRM.SuppressDuplicateDetection </code>to <em>false </em>in the header of your Web API request).</p> <p>Below an example of Web API POST request to create a contact with last name and birthdate that already exist in Dataverse.</p> <p><img alt="Prog3" data-entity-type="file" data-entity-uuid="4e4b2b72-300c-4482-aeec-429c11f598ca" src="/sites/default/files/inline-images/Prog3.png" /></p> <h3>Conclusion</h3> <p>As we have seen alternate keys are a strict way to avoid duplicates creation and ensure data correctness.<br /> It is not possible to create duplicate records using Dynamics 365 user interface or Web API/Dynamics 365 SDK.<br /> But alternate keys have some limitations (10 alternate keys max per table, not supported in virtual tables, cannot include columns with field level security enabled, no operator Same First/Last characters in the criteria).<br /> Duplicate detection rules are more flexible when creating duplicate records through the UI (ability to merge records or force the creation of duplicates).<br /> And with Web API/Dynamics 365 SDK you can choose whether you want to apply duplicate detection rules when creating/updating records.<br /> So the choice between duplicate detection rules and alternate keys will depend on whether you want to allow duplicates creation under certain circumstances.<br /> If you never want to create duplicate records (either through the user interface or programmatically) alternate keys are a good solution because the check is done at database level.<br /> But if you want to warn users when they try to create a duplicate record in the UI and allow them to confirm or not the duplicate creation (and use <em>Merge </em>feature) duplicate detection rules are a good choice.<br /> The same is true if you have interfaces between a third-party system and Dynamics 365 (an Azure webjob or Azure function for instance) and want to allow or not creation of duplicates.<br /> But if you have an existing interface that allows the creation of duplicate records and want to change this behavior, you will have to modify the source code of the interface to use <code>SuppressDuplicateDetection</code> parameter to trigger duplicate detection rules.</p> </div> </div> <div class="field field--name-field-image field--type-image field--label-above"> <div class="field__label">Image</div> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-above field__item">/sites/default/files/2025-10/ChatGPT%20Image%20Oct%2020%2C%202025%2C%2006_26_53%20PM.png</div> </div> </div> </div> </div> Wed, 08 Oct 2025 15:57:17 +0000 Stephane Pelhatre 860 at https://dynamics-chronicles.com Dataverse : Using bulk operation messages https://dynamics-chronicles.com/article/dataverse-using-bulk-operation-messages <span property="schema:name" class="field field--name-title field--type-string field--label-hidden">Dataverse : Using bulk operation messages</span> <span rel="schema:author" class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/stephane-pelhatre" lang="" about="/user/stephane-pelhatre" typeof="schema:Person" property="schema:name" datatype="" class="username">Stephane Pelhatre</a></span> <span property="schema:dateCreated" content="2025-09-01T13:08:36+00:00" class="field field--name-created field--type-created field--label-hidden">Mon, 09/01/2025 - 15:08</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Body</div> <div property="schema:text" class="field__item"><h2>Introduction</h2> <p>As you may know plug-in messages have been introduced for bulk operations in Dynamics 365.</p> <p>Bulk operations messages are:</p> <ul> <li>CreateMultiple: Create multiple records of the same type in a single request.</li> <li>UpdateMultiple: Update multiple records of the same type in a single request.</li> <li>UpsertMultiple: Create or update multiple records of the same type in a single request.</li> <li>DeleteMultiple : Delete multiple records of the same type in a single request. For elastic tables only.</li> </ul> <p>Bulk operations are optimized to perform on multiple rows in a single transaction, so performance should increase overall as the number of operations per request increases.<br /> This optimization allows for any plug-in step that is registered for the bulk operation to be more efficient.<br /> Indeed, each time a plug-in is invoked for a single operation, some milliseconds are required to invoke the plug-in class containing the logic.<br /> When a plug-in is registered for a bulk operation message, the class is invoked once and can process all the operations more efficiently.</p> <h2>Availability</h2> <p>Messages CreateMultiple and UpdateMultiple are available for all custom tables, but not all standard tables.<br /> Message UpsertMultiple is available if the table supports both CreateMultiple and UpdateMultiple messages.<br /> Message DeleteMultiple is not supported by standard and custom tables, it is available only for elastic tables.<br /> All messages (CreateMultiple, UpdateMultiple, UpsertMultiple, DeleteMultiple) are available for elastic tables.</p> <p>If you want to use messages CreateMultiple/UpdateMultiple with a standard table you first need to check that the message is available for the table.<br /> You can execute the below fetchxml to get the list of tables that support UpdateMultiple message</p> <p><em>&lt;fetch&gt;<br />   &lt;entity name="sdkmessagefilter"&gt;<br />     &lt;attribute name="primaryobjecttypecode" /&gt;<br />     &lt;link-entity name="sdkmessage" from="sdkmessageid" to="sdkmessageid" link-type="inner"&gt;<br />       &lt;filter&gt;<br />         &lt;condition attribute="name" operator="eq" value="UpdateMultiple" /&gt;<br />       &lt;/filter&gt;<br />     &lt;/link-entity&gt;<br />   &lt;/entity&gt;<br /> &lt;/fetch&gt;</em></p> <p>If we adapt the fetchxml to get the list for message CreateMultiple we get the same list. So currently standard tables that support CreateMultiple also support UpdateMultiple<em>.</em></p> <p>You can also use the below static method to detect whether a given table supports CreateMultiple or UpdateMultiple.</p> <p><img alt="availability" data-entity-type="file" data-entity-uuid="7ad1249c-393f-4426-8d69-837529256351" src="/sites/default/files/inline-images/availabilty_code.png" /></p> <h2>What is changing in your code</h2> <h3>Context</h3> <p>For bulk messages we need to use the new IPluginExecutionContext4 interface instead of IPluginExecutionContext, to get targets and entity images collections from the plugin context as explained below.</p> <p><img alt="context" data-entity-type="file" data-entity-uuid="cd2b0c24-6d24-4f1d-9247-f67988264326" src="/sites/default/files/inline-images/context.png" /></p> <p>After retrieving IPluginExecutionContext4 object we can use new features (see below).</p> <h3>Targets entityCollection</h3> <p>For single Create/Update the input parameter <em>Target </em>is a single <em>Entity</em>.<br /> For bulk message input parameter <em>Targets </em>is an <em>EntityCollection</em>.<br /> The plug-in code loops through the entities in the collection and apply logic to each entity.<br /> Below a simple piece of code that checks if the collection is a list of contacts and stores the ids:</p> <p><img alt="targets" data-entity-type="file" data-entity-uuid="822c449d-5acf-410c-819f-9b8ee4521723" src="/sites/default/files/inline-images/targets.png" /></p> <h3>Entity images</h3> <p>Entity images are configured in the plug-in step registration.<br /> For single Create/Update we receive images PostEntityImages/PreEntityImages with type <em>EntityImageCollection</em>.</p> <p><img alt="image_single" data-entity-type="file" data-entity-uuid="77e3b23b-f82d-4c69-aa06-2cc3527c0d65" src="/sites/default/files/inline-images/images.single.png" /></p> <p>For messages CreateMultiple/UpdateMultiple entity images are an array of <em>EntityImageCollection</em>.<br /> These entity images are available when you use IPluginExecutionContext4 interface, which provides PreEntityImagesCollection and PostEntityImagesCollection properties. </p> <p><img alt="image_multi" data-entity-type="file" data-entity-uuid="c05c0850-cef2-4675-917c-80646c7d1c4b" src="/sites/default/files/inline-images/images_multiple.png" /></p> <p>When you configure entity images for plug-in steps for CreateMultiple and UpdateMultiple you have to carefully select which columns to include.<br /> <span lang="EN-US" xml:lang="EN-US" xml:lang="EN-US">It is not recommended to select the default option (all columns) : indeed </span>data is multiplied by the number of entities passed in the Targets parameter and contributes to the total size of the message.<br /> As a consequence you may hit the limit on message size.</p> <h3>Attribute filters</h3> <p>When you register a plug-in step on Update or UpdateMultiple message, you can specify filtering attributes in the step registration.</p> <p><img alt="attribute_filter" data-entity-type="file" data-entity-uuid="ab198db5-e123-42bc-b4a6-9f71da1a8024" src="/sites/default/files/inline-images/attribute_filter.png" /></p> <p>With Update, the plug-in runs when one of the selected attributes is included in the Target entity.<br /> With UpdateMultiple, the plug-in runs when one of the selected attributes is included in any of the entities in the Targets parameter.<br /> As a consequence for UpdateMultiple you can't assume that every entity in the Targets parameter contains attributes that are used in a filter.</p> <h2>Number of records</h2> <p>Officially there is no limit on the number of records you can send in a bulk operation.<br /> However, as the number of records increases, the request size also increases and the payload is larger. As a consequence you may encounter the error "Message size exceeded when sending context to Sandbox".<br /> You get this error when the total size of the request exceeds 116.85 MB. With bulk operation messages you're more likely to hit this limit as you send larger payloads.<br /> In this case you have to reduce the number of records you send to the bulk operations.<br /> Microsoft recommends to send 1000 records maximum if the size of the record data is small.<br /> But for large entities like Contact or Account you will probably have to reduce to 100 or 200 records per bulk operation.<br /> So to summarize there is no rule : you will have to experiment the maximum number of records you can process in a bulk operation, depending on the entity and also the configuration of pre/post images.</p> <h2>Behavior when on error occurs</h2> <p>As a single transaction is used for bulk operation, any error that occurs in a bulk operation causes the entire operation to roll back. It means that even if some records have been processed before the error occurs all changes will be cancelled.<br /> So my advice is to use bulk operations when you have a high degree of confidence that all operations will succeed.<br /> Moreover as you are more likely to get an unexpected error with bulk operation you have to take care of exception handling in your code.<br /> Note that as there is no transaction with elastic tables a partial success is possible if you use an elastic table.</p> <h2>Do you have to migrate your code?</h2> <p>Microsoft recommends to use bulk operation CreateMultiple/UpdateMultiple when you develop a new plug-in as there is no drawback to use those new messages.<br /> But what about existing plug-ins?<br /> Of course it is not mandatory to migrate your plug-ins implemented with message Create/Update to bulk messages CreateMultiple/UpdateMultiple.</p> <p>Each of the bulk operation message still has a corresponding message that operates on individual records: Create, Update.</p> <p>Developers are not required to maintain custom logic in two places. To have the same custom logic and maintain it in one place the message processing pipelines for these messages have been merged.<br /> What does it means?<br /> When a bulk operation message CreateMultiple/UpdateMultiple is used, the respective Create/Update event occurs for each entity instance in the Targets parameter. Any plug-in  for the corresponding individual event continue to work.<br /> So you don't need to write new plug-ins to manage events raised by these messages.<br /> When a single operation message is used, the respective bulk operation event occurs with an EntityCollection containing a single Entity instance passed in the Targets parameter. So you can move any logic that responds to a single operation event to the corresponding bulk operation event and the logic will be applied for both individual and multiple operations.</p> <p>As a consequence, duplicate logic can potentially be applied on both single and bulk message of an event. Note that Dataverse will not try to prevent this.<br /> So developers have to make sure that the same logic applied for the single message of an event is migrated to the multiple message of the event and removed from the single version of the event. If you do not take care the logic will be applied twice.</p> <h2>Benchmark</h2> <p>To evaluate the potential improvement in execution time I performed the following benchmark:</p> <p>Creation and update of 100 contacts in a batch (C# console application).<br /> To create contacts I set the fields 'first name' and 'last name'. And to update contacts I modify the first name.<br /> I used the 4 following methods:</p> <ol> <li>Method 1<br /> Creation/Update of 100 records with the classic single message <em>Create</em>/<em>Update </em>(so 1 call for each record)</li> <li>Method 2<br /> Creation/Update of 100 records with a call for each of them to the bulk message <em>CreateMultiple</em>/<em>UpdateMultiple</em><br /> The goal is to check if using bulk message with only 1 record has an impact on performance<br /> In this case we create a collection that contains only 1 record</li> <li>Method 3<br /> Creation/Update of 100 records with one call to the bulk message <em>CreateMultiple</em>/<em>UpdateMultiple</em></li> <li>Method 4<br /> Creation/Update of 100 records with one call to <em>ExecuteMultiple</em></li> </ol> <p>Results:</p> <ul> <li>Method 1<br /> Create 100 records: 27.7 sec<br /> Update 100 records: 29.2 sec</li> <li>Method 2<br /> Create 100 records: 27.5 sec<br /> Update 100 records: 30.2 sec</li> <li>Method 3<br /> Create 100 records: 20.6 sec<br /> Update 100 records: 15.6 sec</li> <li>Method 4<br /> Create 100 records:  22.4 sec<br /> Update 100 records: 18.7 sec</li> </ul> <p>To summarize the results:</p> <ul> <li>Creating/updating records with classic single message or with bulk message for each record gives roughtly the same execution time</li> <li>Creating/updating records with bulk message is faster than with single message called for each record</li> <li>Creating/updating records with bulk message is slightly faster than with ExecuteMultiple</li> </ul> <p>Globally if you have to create or update a single record, using the bulk message will not degrade/improve performance.<br /> So for your future developments there is no reason to not use bulk message even if you create/update one record.</p> <p>If you have to create/update several records you should use bulk message: you will get better performance.<br /> Bulk message is a little bit faster than ExecuteMultiple.<br /> <br /> But as explained previously you will have to experiment the maximum number of records you can process in a bulk operation.<br /> Don't forget that plug-in has a timeout of 2 minutes.<br /> For instance if I try to create 300 records with bulk message I get a timeout.</p> <p><img alt="errorbatch" data-entity-type="file" data-entity-uuid="a2f7761e-be94-4737-86ee-16c3614c68d7" src="/sites/default/files/inline-images/errorbatch.png" /></p></div> </div> <div class="field field--name-field-image field--type-image field--label-above"> <div class="field__label">Image</div> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-above field__item">/sites/default/files/2025-09/An%20octopus%20bot%20doing%20multiple%20operation%20on%20computer.%20Cyber%20punk%20style.%20.jpeg</div> </div> </div> </div> </div> Mon, 01 Sep 2025 13:08:36 +0000 Stephane Pelhatre 757 at https://dynamics-chronicles.com Dataverse Functions Deep Dive https://dynamics-chronicles.com/article/dataverse-functions-deep-dive <span property="schema:name" class="field field--name-title field--type-string field--label-hidden">Dataverse Functions Deep Dive</span> <span rel="schema:author" class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/stephane-pelhatre" lang="" about="/user/stephane-pelhatre" typeof="schema:Person" property="schema:name" datatype="" class="username">Stephane Pelhatre</a></span> <span property="schema:dateCreated" content="2025-08-28T12:38:15+00:00" class="field field--name-created field--type-created field--label-hidden">Thu, 08/28/2025 - 14:38</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Body</div> <div property="schema:text" class="field__item"><h1>Introduction</h1> <p>Microsoft released in 2024 Dataverse low-code plugins. The promise was great : writing plugins using low-code tools. No need to have development skills and use a development environment as Microsoft Visual Studio, write C# code and register plugin in your environment.</p> <p>There are two types of low-code plugins supported in Dataverse : instant and automated. The difference is the trigger. For instant low-code plugin the trigger is manual, the plugin must be explicitly called (for example from a Power Automate flow). Automated low-code plugins work like classic plugins : the trigger is a Dataverse table event. For example you can create an automated low-code plugin on Create event for Account table. Low-code plugin feature is still in preview.</p> <p>Then Microsoft has introduced Power Fx functions (eventually renamed Dataverse functions). Functions are a low-code/no-code way to write reusable logic directly within Dataverse. Functions use Power Fx to execute a set of commands within Dataverse that run on the server-side. The trigger is also manual, so a function must be called explicitly .<br /> The situation is therefore somewhat confusing as instant low-code plugins resemble Dataverse functions and both features are available in preview.<br /> Technically functions and low-code plugins are 2 different tools, with their own Microsoft Learn Docs having their own sections.</p> <p><br /> <img alt="learn1" data-entity-type="file" data-entity-uuid="44b88b89-6a30-4095-989b-760bbb9c8a46" src="/sites/default/files/inline-images/learn1.png" /><br /> <br /> Officially instant low-code plugins are deprioritized and are replaced with Dataverse functions. Automated low-code plugins are still available. You can find more information here : <a href="https://learn.microsoft.com/en-us/power-apps/maker/data-platform/low-code-plug-ins?tabs=instant">Use low-code plug-ins in Dataverse</a></p> <p><img alt="disclaimer" data-entity-type="file" data-entity-uuid="605f4e9b-b739-481f-9a8e-e47499ed96a8" src="/sites/default/files/inline-images/disclaimer.png" /></p> <p>In this article we will first briefly examine low-code plugins. We won't go into detail because, as we will see, they don't really work.<br /> Then we will examine Dataverse functions in detail.</p> <h1>Low-code plugins</h1> <p>Let's briefly talk about low-code plugins.<br /> To access low -code plugins interface you need to install a model-driven app called <strong>Dataverse Accelerator</strong>:</p> <ol> <li>Go to <a href="https://admin.powerplatform.microsoft.com">Power Platform Admin Center</a></li> <li>Click on <strong>Environments </strong>on the left pane.<br /> Then click on the ellipsis (...)  next to your environment, select <strong>Resources </strong>and then <strong>Dynamics 365 apps</strong><br /> <img alt="acc0" data-entity-type="file" data-entity-uuid="030c4df0-e33f-49c0-82b5-f23e20a023bb" src="/sites/default/files/inline-images/accelerator0.png" /><br />  </li> <li>Click on <strong>Install app</strong> on the command bar<br /> <img alt="acc1" data-entity-type="file" data-entity-uuid="fcff52a6-a59b-4706-84c7-68149c785334" src="/sites/default/files/inline-images/accelerator1.png" /><br />  </li> <li>Select <strong>Dataverse Accelerator </strong>in the list and click on <strong>Next</strong><br /> <img alt="acc2" data-entity-type="file" data-entity-uuid="c497a9b0-3e23-454e-abf4-bc433ea3ac87" src="/sites/default/files/inline-images/accelerator2.png" /><br />  </li> <li>Check<strong> I agree to the terms of service</strong> and click on <strong>Install</strong><br /> <img alt="acc3" data-entity-type="file" data-entity-uuid="4f8e8ec3-cbd7-49c0-a2b5-193d159f68ca" src="/sites/default/files/inline-images/accelerator3.png" /><br />  </li> <li>Once the installation is complete Dataverse Accelerator app is available in the list of apps<br /> <img alt="acc4" data-entity-type="file" data-entity-uuid="71c96b13-e889-4785-a26b-92c27d68e791" src="/sites/default/files/inline-images/accelerator4.png" /></li> </ol> <p>Now you can play the app and you will see the interface below:<br /> <img alt="acc5" data-entity-type="file" data-entity-uuid="6ba71fb7-e4c1-4b55-9a06-36a5ea3ae43d" src="/sites/default/files/inline-images/accelerator5.png" /></p> <p>As explained in the introduction there are two types of plugins : instant plugins that must be called explicitly and automated plugins that are triggered by an event on a table.<br /> There is a button to create an instant plugin and another to create an automated plugin. Note that it 's a bit strange to have the option to create an instant plugin as this feature is deprioritized and replaced by Dataverse functions.</p> <p>Then if you click on either of the two buttons ... nothing happens and the screen remains blank. I tried with several Dataverse environments located in different regions (US, Western Europe) with the same result : a blank screen.</p> <p>This problem is understandable for instant plugins as they are replaced by functions. But regarding automated plugin it's a problem : it's impossible to create an automated plugin.<br /> It was working a few months ago (but buggy as hell), but as of the date of writing this article (October 2025),  it no longer works.<br /> Maybe it will work again in the future or maybe Microsoft will remove this feature.</p> <h1>Dataverse Functions</h1> <h2>Introduction</h2> <p><span class="font-[700]">Functions</span><span> are a </span><span class="font-[700]">low-code/no-code way</span><span> to write </span><span class="font-[700]">reusable logic directly within Dataverse</span><span> (running server-side) without having to write C# code or deploying plugins.</span><br /> Functions can have parameters: parameters allow you to pass information between the function and the context that runs it, making it easier to design business logic that can be reused in varying situations. Input parameters are used to provide data to the function, and allow you to control how the function behaves by passing in different values you specify in the Power Fx formula. Output parameters allow you to retrieve the results of a function for further use in your program.</p> <h2>How to create a function</h2> <ol> <li>Open <a href="https://make.powerapps.com/">Power Apps Portal</a> and select your environment</li> <li>Open the solution <span> where you want to build a function</span></li> <li>Click on <strong>New </strong>--&gt; <strong>Automation </strong>--&gt; <strong>Function<br /> <br /> <img alt="funct1" data-entity-type="file" data-entity-uuid="e0c1dbf6-6b79-4ab9-beb1-c17f68779994" src="/sites/default/files/inline-images/function1.png" /></strong><br /> Provide the following details:<br /> <strong>- Display name</strong> : The human-readable name of the function. Can't be changed once created.<br /> <strong>- Description </strong>:<strong> </strong>provide additional context about the function, such as purpose, behavior, and so on. Can't be changed once created.<br /> - <strong>Input parameters(s)</strong> : add required input parameters. Input paramerts are optional.<br />   To add a parameter click on <strong>+ New input parameter<br />   </strong>Following types are supported: Boolean, Datetime, Decimal, Float, Integer, String<br /> <strong>- Output result(s) </strong>: add output results parameters. Output results are optional. To add an output result click on <strong>+ New output result<br /> - Table references </strong>:<strong> </strong>used to associate functions to specific tables. You can select up to five tables to read or write from in your function’s formula.<br /> - <strong>Formula</strong>: custom function that can be used to perform actions or calculations, defined using the Power Fx expression language<br /> <br /> Let's create a simple function to sum two numbers.<br /> I define my function <em>CustomSum </em>with two inputs parameters <em>x</em> and <em>y</em> and one output parameter <em>z</em>.The Power Fx formula to sum the 2 numbers is : <em>{z:x+y}<br /> <img alt="funct3" data-entity-type="file" data-entity-uuid="136c5ff0-ee42-4e87-8bb8-3193944a26d9" src="/sites/default/files/inline-images/function3.png" /></em><br /> <br /> Another example: let's implement a function that creates a contact from two input parameters <em>firstname </em>and <em>lastname</em> (both with string data type)<br /> This time we need to access a table to create a record, so I select 'Contacts' table in <strong>Table references</strong><br /> I also define an output result <em>message</em> to indicate that the contact was created successfully<br /> In the Power Fx formula I use the function<em> Collect() </em>to create the record <pre> <code>Collect(contact, { firstname: firstname, lastname: lastname } ); { message: "New contact " &amp; firstname &amp; "," &amp; lastname &amp; " created" }</code></pre> <br /> <img alt="funct5" data-entity-type="file" data-entity-uuid="80eca25a-afe7-4c8a-bd5f-f6881222e098" src="/sites/default/files/inline-images/function5.png" /><br />  </li> <li>Click on <strong>Save </strong>to create the function<br /> Various components are created and added to the solution:<br /> - a Custom API<br /> - a Function<br /> - a FxExpression<br /> - a custom API Request Parameter for each input parameter (2 in my example)<br /> - a Custom API Response Property for each ouput result  (1 in my example)<br /> <img alt="funct4" data-entity-type="file" data-entity-uuid="aa87857a-3cff-4987-a669-42b989c4a082" src="/sites/default/files/inline-images/function4.png" /></li> </ol> <h2>How to test a function</h2> <p>If you expect to find a button in the command bar when you select your function wihtin the solution, forget it. It is not possible to test a function inside a solution.<br /> To test a function:</p> <ol> <li>Come out of the solution</li> <li>Click on <strong>More </strong>on the left pane and then click on <strong>Discover all</strong><br /> <img alt="test1" data-entity-type="file" data-entity-uuid="dec92a15-b73b-4b91-bc6c-78e72e9883b3" src="/sites/default/files/inline-images/test1.png" /><br />  </li> <li>Click on <strong>Functions<br /> <img alt="test2" data-entity-type="file" data-entity-uuid="bc569094-54e2-4dde-91f8-b32c6c2e111d" src="/sites/default/files/inline-images/test2.png" /></strong><br />  </li> <li>Select your function and click on <strong>Test </strong>on the command bar<br /> <img alt="test3" data-entity-type="file" data-entity-uuid="b8f89e90-38a6-4ca1-91bb-af75b448d081" src="/sites/default/files/inline-images/test3.png" /><br /> <br /> Another way is to click on the ellipsis (...) and select <strong>Test </strong>in the menu<br /> <img alt="test4" data-entity-type="file" data-entity-uuid="5b04f55d-c6bf-4d27-aeb3-3deb9fe61873" src="/sites/default/files/inline-images/test4.png" /><br />  </li> <li>Enter a value for each input parameter and click on <strong>Play</strong><br /> Result is displayed in the text area at the bottom.<br /> In my example with function <em>CustomSum </em>I set x = 10 and y = 5 and we can see that value assigned to output result is 15<br /> Result is : <em><span style="color: rgb(50, 49, 48); font-family: &quot;Segoe UI&quot;, &quot;Segoe UI Web (West European)&quot;, -apple-system, BlinkMacSystemFont, Roboto, &quot;Helvetica Neue&quot;, sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; display: inline !important; float: none;">{"@odata.context":"https://orgxxxxx.crm.dynamics.com/api/data/v9.0/$metadata#Microsoft.Dynamics.CRM.cr0de_CustomSumResponse","z":15}</span></em><br /> <img alt="test5" data-entity-type="file" data-entity-uuid="3f7b97be-ada1-4da5-8a83-3e77fbdecb78" src="/sites/default/files/inline-images/0_test5.png" /><br /> <br /> For the second function <em>Create Contact</em> I set firstname = 'John' and lastname = 'Doe'. You can see the result below:<br /> <img alt="test6" data-entity-type="file" data-entity-uuid="1a7ed145-cd11-4aaf-ae7b-66f13f7784ce" src="/sites/default/files/inline-images/0_test6.png" /></li> </ol> <h2>How to delete a function</h2> <p>You must be careful if you want to delete a function. If you delete the function component in your solution only the function itself will be deleted, but related components (Custom API, FxExpression, custom API Request Parameters, Custom API Response Properties) will not be deleted. Therefore, you will end up with orphaned components.<br /> To delete the function and all related components you must follow the same steps as for testing a function (see above): come out of the solution, click on <strong>More </strong>then <strong>Discover all </strong>and select <strong>Functions</strong>.<br /> Then you can click on <strong>Delete </strong>on the command bar or click on the ellipsis (...) and select <strong>Delete</strong>.<br /> <img alt="delete" data-entity-type="file" data-entity-uuid="a866fca3-3a7b-4f01-b973-d675d5a6f857" src="/sites/default/files/inline-images/delete_1.png" /></p> <h2>Trace logs</h2> <p>You can access Dataverse functions trace logs in the same place as classic plugins.<br /> Open <strong>Power Platform Environment Settings</strong> app and click on <strong>Plug-in Trace Log</strong> on the left pane.<br /> <img alt="logs1" data-entity-type="file" data-entity-uuid="8bbdb569-991e-4d5a-9e5c-2ccb1c5baad7" src="/sites/default/files/inline-images/logs1.png" /><br />  </p> <p>You have access to execution information (duration, message block, exception, ...)</p> <p><img alt="logs2" data-entity-type="file" data-entity-uuid="f54b19a3-7cee-4282-aa46-d90e1f014021" src="/sites/default/files/inline-images/logs2.png" /></p> <h2>Invoke a function</h2> <p>We now know how to create and test a function, but it's time to use it.<br /> As explained previously, functions are only triggered manually, so you need to call them explicitly.<br /> You can invoke functions in Dataverse from:</p> <ul> <li>a canvas app</li> <li>a custom page in a model driven app</li> <li>a Power Automate flow</li> <li>from another function</li> <li>in your code (Web API)</li> </ul> <p>You can obtain a code snippet of your function that you will then use to call that function:</p> <ol> <li>Open <a href="https://make.powerapps.com/">Power Apps Portal</a> and select your environment</li> <li>Click on <strong>More </strong>on the left pane and then click on <strong>Discover all</strong></li> <li>Click on <strong>Functions</strong></li> <li>Select you function and click on <strong>Copy code snippet</strong> on the command bar<br /> <img alt="snip1" data-entity-type="file" data-entity-uuid="439b7a85-4f1b-408b-ab80-fdb76a8ce0b2" src="/sites/default/files/inline-images/snippet1.png" /><br /> <br /> Another way is to click on the ellipsis (...) and select <strong>Copy code snippet </strong>in the menu<br /> <img alt="snip2" data-entity-type="file" data-entity-uuid="b89ddb6b-6339-4b0a-a2e2-789f5839cf52" src="/sites/default/files/inline-images/snippet2.png" /></li> </ol> <p>Below the code snippet for my functions <em>CustomSum </em>and <em>Create contact</em></p> <pre> <code>Environment.cr0de_CustomSum({x:Value,y:Value}) Environment.cr0de_Createcontact({firstname:Value,lastname:Value})</code></pre> <h3>Invoke a function from the Dataverse Web API</h3> <p>You can invoke a Dataverse function from the Web API with a POST request<br /> Example with the function <em>CustomSum</em>:</p> <pre> <code class="language-http">POST [Organization URI]/api/data/v9.2/cr0de_CustomSum OData-MaxVersion: 4.0 OData-Version: 4.0 Content-Type: application/json; charset=utf-8 { "x":4, "y":5 }</code></pre> <p>Here the result I get with the plugin WebAPI Launcher in XrmtoolBox:<br /> <img alt="invoke10" data-entity-type="file" data-entity-uuid="44eb24cb-10c3-456e-ae83-0e83343dd8dd" src="/sites/default/files/inline-images/0_invoke1.png" /></p> <h3>Invoke a function from within another function</h3> <p>You can invoke a function from any other function.<br /> To invoke a function within another function, use the syntax: <code>Environment.MyFunction({inputParam1: value1, inputParam2: value2, ... inputParamN: valueN})</code>.<br /> Since the output is always a record, use the dot notation to access the output parameters.<br /> For example, if the function <em>MyFunction </em>has two output parameters defined as out1 and out2, you can access them in either of these two ways:</p> <ul> <li><code>Environment.ExistingFunction({inputParam1: value1, inputParam2: value2, ... inputParamN: valueN}).out1</code></li> <li><code>Environment.ExistingFunction({inputParam1: value1, inputParam2: value2, ... inputParamN: valueN}).out2</code></li> </ul> <p>To demonstrate this, I create a new function <em>CustomSum2 </em>to add 2 and 3. To perform this operation I use the first function <em>CustomSum.</em><br /> The new function <em>CustomSum2</em> has no input parameter and one output result <em>result </em>(Integer type).<br /> Power Fx formula of the new function:<br /> {<br /> <em>    result:Environment.cr0de_CustomSum({x:2,y:3}).z<br /> }</em></p> <p><img alt="invoke2" data-entity-type="file" data-entity-uuid="eaac6da7-5374-4492-a892-214c80c44ab3" src="/sites/default/files/inline-images/invoke2.png" /></p> <h3>Invoke a function from a Power Automate cloud flow</h3> <p>To use a function in a cloud flow:</p> <ol> <li>Add a step to your flow</li> <li>select <strong>Microsoft Dataverse</strong> connector</li> <li>select <strong>Perform an unbound action</strong> action</li> <li>In <strong>Action Name</strong>, select the function (<em>cr0de_CustomSum</em> in my example) and provide values for the input parameters (x = 6 and y = 3 in my example)<br /> <img alt="Invoke3" data-entity-type="file" data-entity-uuid="4d9ea59f-c1d5-4363-b9a0-7ec590538a01" src="/sites/default/files/inline-images/invoke3.png" /><br />  </li> <li>Add a <strong>compose </strong>action using the output of the unbound action as an input so that you can access the results of the function as needed</li> </ol> <p>Below the result:<br /> <img alt="invoke4" data-entity-type="file" data-entity-uuid="907196bc-9660-40ae-aac2-7ccc1a6eb670" src="/sites/default/files/inline-images/0_invoke4.png" /></p> <h2>Limitations with functions</h2> <p>Functions have some limitations:</p> <ul> <li>Max 5 tables per function</li> <li>Only manual trigger, cannot be automated (that's the goal of low-code plugins)</li> <li>Cannot call external API, limited to Dataverse</li> <li>Still in preview : <span>may have bugs. Not suitable for production</span></li> <li>The following Power Fx function aren't currently supported with functions in Dataverse<br /> <br /> <img alt="limit1" data-entity-type="file" data-entity-uuid="6b6110fe-9eb0-4820-8e80-340d6b89de84" src="/sites/default/files/inline-images/limit1_0.png" /></li> </ul> <p> </p> </div> </div> <div class="field field--name-field-image field--type-image field--label-above"> <div class="field__label">Image</div> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-above field__item">/sites/default/files/2026-01/dataver_functions2.png</div> </div> </div> </div> </div> Thu, 28 Aug 2025 12:38:15 +0000 Stephane Pelhatre 849 at https://dynamics-chronicles.com Dataverse / Dynamics 365 : Azure Managed Identities from Plugins. Step by Step. https://dynamics-chronicles.com/article/dataverse-dynamics-365-azure-managed-identities-plugins-step-step <span property="schema:name" class="field field--name-title field--type-string field--label-hidden">Dataverse / Dynamics 365 : Azure Managed Identities from Plugins. Step by Step. </span> <span rel="schema:author" class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/julienbiedermann" lang="" about="/user/julienbiedermann" typeof="schema:Person" property="schema:name" datatype="" class="username">julien.biedermann</a></span> <span property="schema:dateCreated" content="2025-07-17T12:47:18+00:00" class="field field--name-created field--type-created field--label-hidden">Thu, 07/17/2025 - 14:47</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Body</div> <div property="schema:text" class="field__item"><h2>Introduction</h2> <p>The days of storing Client ID and secret of your Key Vault in Dynamics are coming to an end. With <a href="https://learn.microsoft.com/en-us/power-platform/admin/managed-identity-overview">Power Platform Managed Identity</a>, Dataverse plug-ins can now <strong>connect to Azure resources that support managed identity without the need for credentials</strong>. Please note that at the time of writing this article, this feature is still in preview and is not intended for production use.</p> <p>This marks a significant improvement in security and access management, eliminating the risks associated with storing credentials while simplifying integration between Dataverse and Azure. In this article, we’ll explore how this feature works and the process for implementing it.</p> <h2>How to implement it</h2> <p>Microsoft’s documentation is missing some details that can make the configuration process challenging. In this article, I’ll provide a clear, step-by-step guide with practical examples to help you set everything up quickly and efficiently. My goal is to simplify the process and ensure you have a smooth experience getting it to work. </p> <h3>Step 1 : Create a new app registration or user-assigned managed identity</h3> <ol> <li>Create new "User Assigned Managed Identity". You can follow this <a href="https://learn.microsoft.com/en-us/entra/identity/managed-identities-azure-resources/how-manage-user-assigned-managed-identities?pivots=identity-mi-methods-azp#create-a-user-assigned-managed-identity">documentation</a> to create it.</li> </ol> <p><img alt="Create User Assigned Managed Identity" data-entity-type="file" data-entity-uuid="225ecf33-42a1-4fb3-bece-9574ec494fc5" src="/sites/default/files/inline-images/Create%20User%20Assigned%20Managed%20Identity.png" /></p> <ol start="2"> <li>Copy and save the "Client ID" value of your managed identity to be used in step 6</li> </ol> <p><img alt="Client ID managed identity" data-entity-type="file" data-entity-uuid="c17834d3-195e-4ae9-91ba-e1b4a05252f2" src="/sites/default/files/inline-images/managed_identity_2.png" /></p> <h3>Step 2 : Create Key Vault</h3> <ol> <li>Create a key vault</li> <li>Create a secret with name "DynamicsChroniclesSecret" and with secret value = "Managed identity for Power Platform is working"</li> <li>In "Access control (IAM)" of your key vault, add the role assignment "Key Vault Secrets User" to the User Assigned Managed Identity created in step 1</li> </ol> <h3>Step 3 : Create a certificate</h3> <ol> <li>Open Powershell to create a certificate using this script</li> </ol> <pre> <code># Generate a self-signed certificate $cert = New-SelfSignedCertificate -Subject "CN=dynamicschronicles, O=corp, C=dynamicschronicles.ch" -DnsName "www.dynamicschronicles.ch" -Type CodeSigning -KeyUsage DigitalSignature -CertStoreLocation Cert:\CurrentUser\My -FriendlyName "dynamicschronicles" # Set a password for the private key $pw = ConvertTo-SecureString -String "complexpwd12345" -Force -AsPlainText # Export the certificate as a PFX file Export-PfxCertificate -Cert $cert -FilePath 'C:\temp\dynamicschronicles_certificate.pfx' -Password $pw Write-Host "Self-signed certificate exported as C:\temp\dynamicschronicles_certificate.pfx." # Display thumbprint $cert.Thumbprint </code></pre> <ol start="2"> <li>Copy and save the "Thumbprint" value to be used in step 5</li> </ol> <p><img alt="Thumbprint" data-entity-type="file" data-entity-uuid="e5b3e636-8b63-47f9-9b6b-0a40dc76586c" src="/sites/default/files/inline-images/thumbprint1.png" /></p> <h3>Step 4 : Create a plug-in assembly, sign it and register it</h3> <ol> <li>Create a <a href="https://learn.microsoft.com/en-us/power-apps/developer/data-platform/tutorial-write-plug-in">new plug-in using Visual Studio</a>. Here is an example of code :</li> </ol> <pre> <code class="language-cs">using Microsoft.Xrm.Sdk; using System; using System.Collections.Generic; using System.Net.Http; using System.Net.Http.Headers; namespace ManagedPlugin { public class ManagedPlugin : IPlugin { public void Execute(IServiceProvider serviceProvider) { // Obtain the tracing service ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); // Obtain the execution context from the service provider. IManagedIdentityService managedIdentityService = (IManagedIdentityService) serviceProvider.GetService(typeof(IManagedIdentityService)); // Obtain the execution context from the service provider. IPluginExecutionContext context = (IPluginExecutionContext) serviceProvider.GetService(typeof(IPluginExecutionContext)); // Initialize empty token string token = string.Empty; string[] scopes = new string[] { "https://YOUR-DYNAMICS-ORG-URL.crm4.dynamics.com/.default" }; try { tracingService.Trace("Scopes in GetAccessTokenManagedIdentity: " + string.Join(", ", scopes)); token = managedIdentityService.AcquireToken(scopes); tracingService.Trace($"MANAGED IDENTITY TOKEN : {token}"); } catch (Exception ex) { tracingService.Trace($"Failed to acquire token {ex.Message}"); } var keyvaultname = "YOUR-KEYVAULT-NAME"; var secretname = "DynamicsChroniclesSecret"; // Get Token var kv_scopes = new List&lt;string&gt; { "https://vault.azure.net/.default" }; var kv_token = managedIdentityService.AcquireToken(kv_scopes); tracingService.Trace($"KV TOKEN : {kv_token}"); var keyvaultsecretUrl = $"https://{keyvaultname}.vault.azure.net/secrets/{secretname}?api-version=7.4"; try { using (HttpClient client = new HttpClient()) { client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", kv_token); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var request = new HttpRequestMessage(HttpMethod.Get, new Uri(keyvaultsecretUrl)); var response = client.SendAsync(request).Result; string json = response.Content.ReadAsStringAsync().Result; var keyVaultResponse = System.Text.Json.JsonSerializer.Deserialize&lt;KeyVaultResponse&gt;(json); tracingService.Trace($"KV SECRET VALUE : {keyVaultResponse.value}"); } } catch (Exception ex) { tracingService.Trace($"Failed to acquire token {ex.Message}"); } } } } public class KeyVaultResponse { public string value { get; set; } public string id { get; set; } } </code></pre> <ol start="2"> <li>Replace the following values with yours <ol> <li>Line 27 =&gt; "https://YOUR-DYNAMICS-ORG-URL.crm4.dynamics.com/.default"</li> <li>Line 40 =&gt; "YOUR-KEYVAULT-NAME" (name of the key vault created in step 2)</li> </ol> </li> <li>Build the plugin</li> <li>Sign the plugin using <a href="https://learn.microsoft.com/en-us/dotnet/framework/tools/signtool-exe">signtool</a> and the following Powershell command</li> </ol> <pre> <code>.\signtool sign /f "C:\temp\dynamicschronicles_certificate.pfx" /p "complexpwd12345" "C:\Path_to_your_plugin\bin\Debug\ManagedPlugin.dll"</code></pre> <ol> <li><a href="https://learn.microsoft.com/en-us/power-apps/developer/data-platform/tutorial-write-plug-in#register-plug-in">Register the plug-in</a> and register a new step (i.e. create of account)</li> </ol> <h3>Step 5 : Configure federated identity credentials</h3> <ol> <li>Open the User Assigned Managed Identity created in step 1</li> <li>Navigate to "Settings/Federated credentials" and click on "Add Credential"</li> </ol> <p><img alt="Federated Credentials" data-entity-type="file" data-entity-uuid="fb29314e-d517-45ab-b09c-9c7d8183cd89" src="/sites/default/files/inline-images/FederatedCredentials_0.png" /></p> <ol start="3"> <li>Select "Other" for "Federated credential scenario"</li> <li>Set "Issuer" = https://[Dynamics environment ID prefix].[Dynamics environment ID suffix].environment.api.powerplatform.com/sts <ol> <li>Replace "[Dynamics Environment ID prefix]" with your environment ID <span style="color:#c0392b;">(except the last two characters and without dashes)</span></li> <li>Replace "[Dynamics Environment ID suffix]" with the two last characters of the environment ID</li> </ol> </li> <li>Set "Subject identifier" = component:pluginassembly,thumbprint:[Thumbprint],environment:[Dynamics environment ID] <ol> <li>Replace "[Thumbprint]" with Thumbprint value copied in step 2 </li> <li>Replace "[Dynamics environment ID]" with your environment ID (with dashes)</li> </ol> </li> <li>Set "Name" to whatever you want</li> <li>For "Audience", you can keep the default value</li> </ol> <p><img alt="Environment ID" data-entity-type="file" data-entity-uuid="8e2ed5e8-d8d5-45c7-a3c6-e6e2cdb66053" src="/sites/default/files/inline-images/EnvironmentID.png" /></p> <p><img alt="Federated Credentials" data-entity-type="file" data-entity-uuid="0331c265-af66-4a9d-b593-c229f522bff8" src="/sites/default/files/inline-images/FederatedCredentials1_0.png" /></p> <ol start="8"> <li>Click on "Add" to create the Federated Credential</li> </ol> <h3>Step 6 : Create managed identity record in Dataverse</h3> <ol> <li>Open <a href="https://www.xrmtoolbox.com/">"XRMToolbox"</a> and open the tool <a href="https://www.xrmtoolbox.com/plugins/Driv.XTB.PluginIdentityManager/">"Plugin Identity Manager"</a> (you can also create it manually if you want, see documentation <a href="https://learn.microsoft.com/en-us/power-platform/admin/set-up-managed-identity#create-managed-identity-record-in-dataverse">here</a>)</li> <li>Select your plugin assembly (1)</li> <li>Click on "Link to New Identity"</li> </ol> <p><img alt="Plugin Managed Identity" data-entity-type="file" data-entity-uuid="ac3a181c-b8e4-45c7-b318-2c925e6e13e6" src="/sites/default/files/inline-images/plugin_identity1.png" /></p> <ol start="3"> <li>Fill in the following information and click on "Create and Link" <ol> <li>ApplicationId = "Client ID" value of your managed identity copied in step 1</li> <li>TenantId = Your tenant Id (Directory ID in Azure)</li> </ol> </li> </ol> <p><img alt="Plugin Managed Identity" data-entity-type="file" data-entity-uuid="abecf5db-9e86-4cb9-a3c2-67fee74f336f" src="/sites/default/files/inline-images/plugin_identity2_0.png" /></p> <h2>Verification</h2> <p>Good news ! You're ready to go and check if everything is working well. To do so:</p> <ol> <li>Trigger your plugin. In our case, it will be the creation of an account</li> <li>Open Plugin Trace Log and check the plugin execution and if the secret is correctly retrieved</li> </ol> <p><img alt="Plugin Trace Logs" data-entity-type="file" data-entity-uuid="6d0ec0ce-be69-4d48-b97a-e4747971b3e8" src="/sites/default/files/inline-images/plugintrace1.png" /></p> <p> </p> <p>Everything is working well — we are now able to connect and retrieve secrets from Key Vault without having to store or manage any credentials in Dataverse.</p> <p>I hope this step-by-step guide was clear and helped you configure everything easily on your end. If that’s not the case or if any steps need further clarification, please let me know in the comments.</p> </div> </div> <div class="field field--name-field-image field--type-image field--label-above"> <div class="field__label">Image</div> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-above field__item">/sites/default/files/2025-07/article.png</div> </div> </div> </div> </div> Thu, 17 Jul 2025 12:47:18 +0000 julien.biedermann 810 at https://dynamics-chronicles.com Dataverse Managed Environments Deep Dive https://dynamics-chronicles.com/article/dataverse-managed-environments-deep-dive <span property="schema:name" class="field field--name-title field--type-string field--label-hidden">Dataverse Managed Environments Deep Dive</span> <span rel="schema:author" class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/julienbiedermann" lang="" about="/user/julienbiedermann" typeof="schema:Person" property="schema:name" datatype="" class="username">julien.biedermann</a></span> <span property="schema:dateCreated" content="2024-10-08T12:45:19+00:00" class="field field--name-created field--type-created field--label-hidden">Tue, 10/08/2024 - 14:45</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Body</div> <div property="schema:text" class="field__item"><p><em>Dataverse Managed Environments Deep Dive:</em></p> <h2>What is Managed Environments ?</h2> <p>Managed environments is a set of features that allows administrators to manage Power Platform at scale with more control, less effort, and more visibility.</p> <p>List of features available with Managed Environments for now (18/09/24) :</p> <ul> <li>Limit sharing</li> <li>Weekly usage insights</li> <li>Data policies</li> <li>Pipelines in Power Platform (preview)</li> <li>Maker welcome content (preview)</li> <li>Solution checker</li> <li>IP Firewall</li> <li>IP cookie binding</li> <li>Customer Managed Key (CMK)</li> <li>Lockbox</li> <li>Extended backup</li> <li>DLP for desktop flow</li> <li>Export data to Azure Application Insights</li> <li>Catalog in Power Platform</li> <li>Default environment routing</li> <li>Create an app description with Copilot</li> <li>Virtual Network support for Power Platform</li> </ul> <h2>Requirements to enable Managed Environments</h2> <p>You may ask why to not activate this option on every environments ? What are the requirements and implications of enabling Managed Environments.</p> <p>Everything is about <a href="https://learn.microsoft.com/en-us/power-platform/admin/managed-environment-licensing">licensing</a>, when activating Managed Environments, every user that want to access the resources (Power Apps, Power Automate, Power Virtual Agents, and Power Pages website) in this environment must have a standalone licenses, Dynamics 365 Enterprise license or capacity add-ons.</p> <p>Example of which licenses cannot run app in Managed Environments:</p> <ul> <li>Microsoft/Office 365 licenses (Business, E1, E3, E5, F1, F3, …) that are coming with access to some limited Power Apps, Power Automate capabilities.</li> </ul> <h2>How to enable/disable Managed Environments ?</h2> <h3>Permissions required</h3> <ul> <li>You must have the role of <strong>global admin</strong>, <strong>Power Platform service admin</strong>, or <strong>Dynamics 365 admin Microsoft Entra ID</strong>.</li> <li>Any user with permission to see environment details can consult the Managed Environments property for an environment (from the list).</li> </ul> <p>Users with the <u>Delegated Admin role</u> or the <u>Environment Admin security</u> role <u>aren't allowed to change the Managed Environments property</u> in an environment.</p> <h3 id="enable-or-edit-managed-environments-in-the-admin-center">Enable Managed Environments in the admin center</h3> <p>Open the <a href="https://admin.powerplatform.microsoft.com">Power Platform admin center</a>.</p> <p><img alt="Dataverse Managed Environments Deep Dive" data-entity-type="file" data-entity-uuid="42a65883-de3b-41ab-928c-6acef48071b9" src="/sites/default/files/inline-images/2024-03-20%2011_20_50-Ideas%20-%20OneNote.png" /></p> <p><img alt="Dataverse Managed Environments Deep Dive" data-entity-type="file" data-entity-uuid="9d9aab6e-a3eb-4138-94c2-9af66ef9405a" src="/sites/default/files/inline-images/2024-03-20%2011_24_31-Presentation1%20-%20PowerPoint.png" /></p> <h3>Enable Managed Environments using PowerShell</h3> <p>Below the script to enable Managed Environments (don't forget to replace &lt;EnvironmentID&gt;, it can be found here <a href="https://admin.powerplatform.microsoft.com">https://admin.powerplatform.microsoft.com</a>) :</p> <pre> <code>$GovernanceConfiguration = [pscustomobject] @{ protectionLevel = "Standard" settings = [pscustomobject]@{ extendedSettings = @{} } } Set-AdminPowerAppEnvironmentGovernanceConfiguration -EnvironmentName &lt;EnvironmentID&gt; -UpdatedGovernanceConfiguration $GovernanceConfiguration</code></pre> <h3>Copy Managed Environment settings using PowerShell</h3> <p>These commands can be useful for deploying Managed Environments settings from one environment to another one. If the target environment wasn't a Managed Environment, copy settings will also enable it as a Managed Environment.</p> <pre> <code>#Get settings from the source Managed Environment $sourceEnvironment = Get-AdminPowerAppEnvironment -EnvironmentName &lt;SourceEnvironmentId&gt; # Copy the settings from the source Managed Environment above to the target environment Set-AdminPowerAppEnvironmentGovernanceConfiguration -EnvironmentName &lt;TargetEnvironmentId&gt; -UpdatedGovernanceConfiguration $sourceEnvironment.Internal.properties.governanceConfiguration</code></pre> <h3 id="disable-managed-environments-using-powershell">Disable Managed Environments using PowerShell</h3> <p>Managed Environments can be disabled by administrators using PowerShell. Before disabling Managed Environments, the administrator must ensure that none of the Managed Environments capabilities are in use.</p> <p>Below the PowerShell script to disable Managed Environments :</p> <pre> <code>$UpdatedGovernanceConfiguration = [pscustomobject]@{ protectionLevel = "Basic" } Set-AdminPowerAppEnvironmentGovernanceConfiguration -EnvironmentName &lt;EnvironmentID&gt; -UpdatedGovernanceConfiguration $UpdatedGovernanceConfiguration</code></pre> <h2>Quick overview of the available features</h2> <h3>Limit sharing</h3> <p>Canvas app can be shared with users. With this feature, admins can limit how broadly users can share canvas apps. It is possible to restrict sharing with security groups and also set a limit on the number of individuals with whom the app can be shared.</p> <p><img alt="Limit sharing" data-entity-type="file" data-entity-uuid="b9791d77-0dad-4c9c-bbcf-16ca3f8ca6b8" src="/sites/default/files/inline-images/managed-environment-limit-sharing.png" /></p> <p>Here is what the user will see when trying to share an app that is not matching the limit sharing rule:</p> <p><img alt="Limit sharing rule" data-entity-type="file" data-entity-uuid="778b4a9c-df95-4f99-a7b3-24575b055462" src="/sites/default/files/inline-images/managed-environment-canvas-app-sharing-rule.png" /></p> <p> </p> <h3>Usage Insights</h3> <p>Keep updated on the status of your managed environments with Power Platform's weekly admin digest. Receive analytics detailing your top apps, most influential makers, and inactive resources that can be safely cleaned up, all conveniently delivered to your mailbox every week.</p> <p>Here is the setting to enable <a href="https://learn.microsoft.com/en-us/power-platform/admin/managed-environment-usage-insights">Usage Insights</a> (please note that also need to <a href="https://learn.microsoft.com/en-us/power-platform/admin/tenant-level-analytics#how-do-i-enable-tenant-level-analytics">enable tenant-level analytics</a> to get usage insights):</p> <p><img alt="Dataverse Managed Environments Deep Dive" data-entity-type="file" data-entity-uuid="256209f5-7ba7-4024-9f04-43ba2a28b569" src="/sites/default/files/inline-images/managed-environment-weekly-digest-include-environmenta.png" /></p> <h4>Who will receive the weekly digest ?</h4> <p>The weekly digest is sent to all users with the roles of <a href="https://learn.microsoft.com/en-us/power-platform/admin/use-service-admin-role-manage-tenant#power-platform-administrator">Power Platform administrator</a> and <a href="https://learn.microsoft.com/en-us/power-platform/admin/use-service-admin-role-manage-tenant#dynamics-365-administrator">Dynamics 365 service administrator</a>.</p> <p> </p> <p>To include more recipients, choose "Add additional recipients for the weekly email digest", then opt for "Weekly digest" and input email addresses into the "Additional recipients" box.</p> <h4>What information is presented in the weekly digest ?</h4> <p>The first part of the weekly digest shows the number of apps used and active users in your managed environments in the past month.</p> <p><img alt="Dataverse Managed Environments Deep Dive" data-entity-type="file" data-entity-uuid="331d9713-9ea9-4587-927c-b608eb05519c" src="/sites/default/files/inline-images/managed-environment-weekly-digest-first-section.png" /></p> <p>The second part of the weekly digest shows lists apps and flows that haven't been launched in a while. The last launch column shows the last date of use for the app or flow. If an app or flow isn't being used, we recommend that you work with its owner to update or remove it.</p> <p><img alt="Weekly digest 2" data-entity-type="file" data-entity-uuid="764a55f8-67fb-4ea0-aabd-f91f7e80bec1" src="/sites/default/files/inline-images/managed-environment-weekly-digest-second-section.png" /></p> <p>The third part of the weekly digest shows the most popular apps and flows in your managed environments in the past month, indicated by the number of sessions and runs. When a user launches and interacts with an application, that's considered a session.</p> <p><img alt="Dataverse Managed Environments Deep Dive" data-entity-type="file" data-entity-uuid="dc03c8a3-52b1-4660-b73c-2805c3400a52" src="/sites/default/files/inline-images/managed-environment-weekly-digest-third-section.png" /></p> <h3>Data Policies</h3> <p>With this feature, admins can easily identify all the data policies that are applied to an environment.</p> <p><img alt="Dataverse Managed Environments Deep Dive" data-entity-type="file" data-entity-uuid="982e94ba-bc71-490f-b556-47302bd37d67" src="/sites/default/files/inline-images/managed-environment-weekly-see-active-data-policies.png" /></p> <p>When clicking on "See active data policies for this environment", the data policies page opens in a new tab. The view is filtered to display only the data policies that are applied to the managed environment. The environment filter is exclusively available for managed environments.</p> <h3>Pipelines in Power Platform</h3> <p><a href="https://learn.microsoft.com/en-us/power-platform/alm/pipelines">Pipelines in Power Platform</a> aim to democratize application lifecycle management (ALM) for Power Platform and Dynamics 365 customers by bringing ALM automation and continuous integration and continuous delivery (CI/CD) capabilities into the service in a manner that's more approachable for all makers, admins, and developers. <u>All target environments used in a pipeline must be enabled as Managed Environments</u>.</p> <p><img alt="Pipelines in Power Platform" data-entity-type="file" data-entity-uuid="30f92476-c22b-4699-91e8-e36b744de8c9" src="/sites/default/files/inline-images/deployment-pipelines.png" /></p> <h3>Enable maker welcome content</h3> <p>Admins can provide customized <a href="https://learn.microsoft.com/en-us/power-platform/admin/welcome-content">welcome content</a> to help their makers get started with Power Apps. When you add your own help content, it replaces the default Power Apps first-time help experience for makers.</p> <p><img alt="Welcome maker" data-entity-type="file" data-entity-uuid="56512f08-08c0-4fd5-ae58-22652100d8da" src="/sites/default/files/inline-images/maker-welcome-2.png" /></p> <p>Here is an example:</p> <p><img alt="Dataverse Managed Environments Deep Dive" data-entity-type="file" data-entity-uuid="95173b23-51f9-4fe7-b1bf-ef466de46797" src="/sites/default/files/inline-images/welcome_0.png" /></p> <h3>Solution checker enforcement</h3> <p>With solution checker enforcement feature, you can perform a rich static analysis check on your solutions against a set of best practice rules and identify problematic patterns.</p> <p><img alt="Solution checker" data-entity-type="file" data-entity-uuid="8ff93285-1b14-4170-9bae-765522228726" src="/sites/default/files/inline-images/managed-environment-solution-checker_0.png" /></p> <table border="1" cellpadding="1" cellspacing="1" style="width: 500px;"> <thead> <tr> <th scope="col" style="width: 89px;">Setting</th> <th scope="col" style="width: 397px;">Description</th> </tr> </thead> <tbody> <tr> <td style="width: 89px;">None</td> <td style="width: 397px;">Turns off the automatic solution validations during solution import. There aren't any experience or behavioral changes to solution authoring, exports, or imports.</td> </tr> <tr> <td style="width: 89px;">Warn</td> <td style="width: 397px;">All custom solutions are automatically verified during solution import. When a solution with highly-critical issues is being imported, you are warned about the action but the import itself continues, and if everything else with the import is fine, the solution is imported into the environment. After a successful import, a message stating that the imported solution had validation issues is shown. Additionally, a summary email is sent with details of the solution validation.</td> </tr> <tr> <td style="width: 89px;">Block</td> <td style="width: 397px;">All custom solutions are automatically verified during solution import. When a solution has highly-critical issues, the import process is canceled, and a message stating that the imported solution had validation issues is shown. This happens before the actual import, so there aren't any changes to the environment due to the import failure. Additionally, a summary email is sent with details of the solution validation.</td> </tr> </tbody> </table> <h4>Who will receive the emails ?</h4> <p>When the validation mode is set to <strong>Warn</strong> or <strong>Block</strong>, a summary email is sent when a solution is imported or blocked. When the solution is imported into an environment, the summary email shows the count of issues by severity in the solution.</p> <p>The email is sent to all users with the roles of Power Platform administrator and Dynamics 365 service administrator. It is also sent to recipients of the weekly digest emails.</p> <p>By default, emails are sent for solutions containing medium or higher severities. When the checkbox "Send emails only when a solution is blocked [...]" is selected, emails won't be sent in warn mode. In block mode, emails aren't sent except for critical violations, which block solution import.</p> <h4>Rule exclusions</h4> <p>You have the option to opt out of enforcing certain solution checker rules. For instance, if fixing a specific rule requires considerable time and effort across the solution, but you still want other rules to be enforced, you can exclude that rule from enforcement. Utilize the "Excluded Rules" dropdown menu to choose which rules to exclude from enforcement. As a reminder, only critical severity rules block a solution from being imported.</p> <p><img alt="Dataverse Managed Environments Deep Dive" data-entity-type="file" data-entity-uuid="e39c4cea-9864-445f-a078-3489b93eb4ed" src="/sites/default/files/inline-images/managed-environment-solution-checker-rule-exclusions-list.png" /></p> <h3>IP firewall in Power Platform environments</h3> <p>The IP firewall helps to protect your organizational data by limiting user access to Microsoft Dataverse from only allowed IP locations. The IP firewall analyzes the IP address of each request in real time. For example, suppose the IP firewall is turned on in your production Dataverse environment, and allowed IP addresses are in the ranges associated with your office locations and not any external IP location like a coffee shop. If a user tries to access organizational resources from a coffee shop, Dataverse denies access in real time.</p> <p><img alt="IP Firewall diagram" data-entity-type="file" data-entity-uuid="21a43cf8-79dc-45da-954a-e201947b4c29" src="/sites/default/files/inline-images/ip-firewall-dataverse-diagram.png" /></p> <h3>Safeguarding Dataverse sessions with IP cookie binding</h3> <p>Prevent session hijacking exploits in Dataverse with IP address-based cookie binding. Let's say that a malicious user copies a valid session cookie from an authorized computer that has cookie IP binding enabled. The user then tries to use the cookie on a different computer to gain unauthorized access to Dataverse. In real time, Dataverse compares the IP address of the cookie's origin against the IP address of the computer making the request. If the two are different, the attempt is blocked, and an error message is shown.</p> <h3>Manage your customer-managed encryption key</h3> <p>Customers have data privacy and compliance requirements to secure their data by encrypting their data at-rest. This secures the data from exposure in an event where a copy of the database is stolen. With data encryption at-rest, the stolen database data is protected from being restored to a different server without the encryption key.</p> <p>All customer data stored in Power Platform is encrypted at-rest with strong Microsoft-managed encryption keys by default. Microsoft stores and manages the database encryption key for all your data so you don't have to. However, Power Platform provides this customer-managed encryption key (CMK) for your added data protection control where you can self-manage the database encryption key that is associated with your Microsoft Dataverse environment. This allows you to rotate or swap the encryption key on demand, and also allows you to prevent Microsoft's access to your customer data when you revoke the key access to our services at any time.</p> <h3>Securely access customer data using Customer Lockbox in Power Platform and Dynamics 365</h3> <p>Most operations, support, and troubleshooting performed by Microsoft personnel (including subprocessors) don't require access to customer data. With Power Platform Customer Lockbox, we provide an interface for the customers to review and approve (or reject) data access requests in the rare occasion when data access to customer data is needed. It's used in cases where a Microsoft engineer needs to access customer data, whether in response to a customer-initiated support ticket or a problem identified by Microsoft.</p> <p><em>Customer Lockbox is available in public clouds and US Government Community Cloud (GCC), GCC High, and Department of Defense (DoD) regions.</em></p> <h3>Back up and restore environments</h3> <p>For environments that don't have Dynamics 365 applications, the default backup retention period is seven days. Admins who run production Managed Environments of this type can use PowerShell to change the retention period to 7, 14, 21, or 28 days.</p> <p><em>A Managed Environment can be restored only to another Managed Environment. A non-Managed Environment can't be restored to a Managed Environment.</em></p> <h2>Is activating the Managed Environments a risky move?</h2> <p>Apart from the dependence on licenses, to me, the risk associated with activating the feature is minimal, here are the reasons:</p> <ul> <li>This is transparent for the users if no feature are activated</li> <li>This option is at the environment level (not at tenant level) <ul> <li>This gives more flexibility and it allows to test the features in dev environment</li> </ul> </li> <li>Activation of a feature does not have retroactive effect</li> <li>This option can be disabled at any time</li> </ul> <p>On the other hand, admins need to be careful before activating a feature because it can have an impact on users. For example, activating "limit sharing" can block user in their job. It is important to test feature before activating them in production.</p> <h4>When to activate Managed Environments?</h4> <ul> <li>A feature requires to have Managed Environments activated</li> <li>For large organizations with lots of environments, users, apps</li> </ul> <h2 class="title">Dataverse Managed Environments Deep Dive</h2> </div> </div> <div class="field field--name-field-image field--type-image field--label-above"> <div class="field__label">Image</div> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-above field__item">/sites/default/files/2024-09/article.png</div> </div> </div> </div> </div> Tue, 08 Oct 2024 12:45:19 +0000 julien.biedermann 766 at https://dynamics-chronicles.com Cloud Flow Run History in Dataverse https://dynamics-chronicles.com/article/cloud-flow-run-history-dataverse <span property="schema:name" class="field field--name-title field--type-string field--label-hidden">Cloud Flow Run History in Dataverse</span> <span rel="schema:author" class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/julienbiedermann" lang="" about="/user/julienbiedermann" typeof="schema:Person" property="schema:name" datatype="" class="username">julien.biedermann</a></span> <span property="schema:dateCreated" content="2024-09-26T12:40:21+00:00" class="field field--name-created field--type-created field--label-hidden">Thu, 09/26/2024 - 14:40</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Body</div> <div property="schema:text" class="field__item"><div class="alert alert-warning" role="alert"> <ul> <li>Please note that, at the time of writing this article, this feature is still in preview.</li> <li>Preview features aren’t meant for production use and might have restricted functionality. These features are available before an official release so that customers can get early access and provide feedback.</li> </ul> </div> <h1>Quick overview</h1> <p>The <a href="https://learn.microsoft.com/en-us/power-automate/dataverse/cloud-flow-run-metadata">Manage Cloud Flow Run History in Dataverse</a> feature provides users with the ability to efficiently track, manage, and analyze the execution history of their Power Automate cloud flows directly within Microsoft Dataverse. The cloud flow run history records are stored in FlowRun table using Dataverse’s nonrelational database, elastic tables.</p> <p>Please note that only solution cloud flows (solution-aware cloud flows), with their definitions in Dataverse, can have their run history stored in Dataverse.</p> <p>The documentation for the Flow Run table/entity reference is <a href="https://learn.microsoft.com/en-us/power-apps/developer/data-platform/reference/entities/flowrun">here</a>.</p> <h2>Storage use for FlowRun records</h2> <p>FlowRun data uses Dataverse database storage capacity. By default, flow run data is stored for 28 days (2,419,200 seconds).</p> <h2>Set FlowRun time to live (TTL)</h2> <h3>In Dataverse</h3> <p>Setting the FlowRunTimeToLiveInSeconds value in the Organization table to zero stops all ingestion of new FlowRun records.</p> <h3>In Power Platform admin center</h3> <p>The FlowRunTimeToLiveInSeconds value in the Organization table can be set in the Power Platform admin center environments experience. To choose the FlowRun entity time to live that's used in an environment:</p> <ol> <li>Sign in to Power Platform admin center.</li> <li>Navigate to Environments.</li> <li>For the desired environment, open the Settings page.</li> <li>Select Product &gt; Features.</li> <li>Under Cloud flow run history in Dataverse, set the FlowRun entity time to live retention value to 28 days (the default), 14 days, 7 days, or Disabled.</li> </ol> <h2>Clean up FlowRun records immediately</h2> <p>If your environment is low on storage, you can free up database space by configuring the TTLInSeconds value for specific FlowRun records. These records will be automatically cleaned up and permanently deleted within one to two minutes. Be certain the records are no longer needed, as deletion is irreversible.</p> </div> </div> <div class="field field--name-field-image field--type-image field--label-above"> <div class="field__label">Image</div> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-above field__item">/sites/default/files/2025-01/manage-cloud-flow-run-history.png</div> </div> </div> </div> </div> Thu, 26 Sep 2024 12:40:21 +0000 julien.biedermann 815 at https://dynamics-chronicles.com Dataverse Elastic Tables Deep Dive Tutorial https://dynamics-chronicles.com/article/dataverse-elastic-tables-deep-dive-tutorial <span property="schema:name" class="field field--name-title field--type-string field--label-hidden">Dataverse Elastic Tables Deep Dive Tutorial</span> <span rel="schema:author" class="field field--name-uid field--type-entity-reference field--label-hidden"><a title="View user profile." href="/user/joaoneto" lang="" about="/user/joaoneto" typeof="schema:Person" property="schema:name" datatype="" class="username">joao.neto</a></span> <span property="schema:dateCreated" content="2024-06-27T12:46:41+00:00" class="field field--name-created field--type-created field--label-hidden">Thu, 06/27/2024 - 14:46</span> <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-above"> <div class="field__label">Body</div> <div property="schema:text" class="field__item"><p><em>Dataverse Elastic Tables Deep Dive Tutorial</em></p> <h2>Intro</h2> <p>Said to be the "Super Heros" of the information world, that they're super fast and can store lots of information and that they're a game changer for storing massive loads of data.</p> <p>I went to undercover what's behind the scenes of this Elastic Tables feature and check if the rumours are fake or not!</p> <h2>Principles and Architecture</h2> <p><span><span>Microsoft use Cosmos DB instead of azure SQL to store data, meaning they have a special column called Partition ID that organizes information in a "folders" like structure.</span></span></p> <img alt="Dataverse Elastic Tables Deep Dive Tutorial" data-entity-type="file" data-entity-uuid="91e65d2a-0e56-4924-a2c7-301931f858bd" height="173" src="/sites/default/files/inline-images/CosmosDBPartitions.jpg" width="351" class="align-center" /> <p><strong><span><span><span>Partitioning and Horizontal Scaling:</span></span></span></strong></p> <ul type="circle"> <li><span><span>Elastic tables use Azure Cosmos DB partitioning to scale individual tables</span></span></li> <li><span><span>Each elastic table contains a system-defined Partition Id column</span></span></li> <li><span><span>Rows are divided into distinct subsets (logical partitions) based on the value of the partitionid column, like storing rows per in folder by its partitionId</span></span></li> <li><span><span>Choosing a consistent partitioning strategy is crucial for optimal performance</span></span></li> </ul> <p><strong><span><span><span>Unique References and Partitioning:</span></span></span></strong></p> <ul type="circle"> <li><span><span>Unique references for elastic tables combine the primary key and the partitionid value</span></span></li> <li><span><span>There is no limit on the number of logical partitions</span></span></li> <li><span><span>If you don’t set a partitionid value, it remains null</span></span></li> <li><span><span>Custom partitionid values allow multiple records with the same primary key but different partition IDs</span></span></li> <li><span><span>PartitionId cannot be changed after creating a row</span></span></li> </ul> <p><strong><span><span><span>Consistency level</span></span></span></strong></p> <p><span><span>Elastic table supports strong consistency during a logical session. A logical session is a connection between a client and Dataverse. When a client performs a write operation on an elastic table, it receives a session token that uniquely identifies the logical session. To have strong consistency, you must maintain the logical session context by including the session token with all subsequent requests.</span></span></p> <p><span><span>Session tokens ensure that all the read operations that are performed during the same logical session context return the most recent write that was made during that logical session. In other words, session tokens ensure that reads always honor the read-your-writes and write-follows-reads guarantees during a logical session. If a different logical session performs a write operation, other logical sessions might not immediately detect those changes.</span></span></p> <p><strong><span><span><span>Transactional behavior</span></span></span></strong></p> <p><span><span>For example, you have a synchronous plug-in step that is registered on the PostOperation stage of the Create message on an elastic table. In this case, an error that occurs in the plug-in does not roll back the record that is created in Dataverse. You should always avoid intentionally canceling any operation by throwing InvalidPluginExecutionException in the PreOperation or PostOperation synchronous stage. If the error is thrown after the Main operation, the request returns an error, but the data operation succeeds. Any write operations that are started in the PreOperation stage succeed.</span></span></p> <p><span><span>However, you should always apply validation rules in a plug-in that is registered for the PreValidation synchronous stage. Validation is the purpose of this stage. Even when you use elastic tables, the request returns an error, and the data operation won't begin.</span></span></p> <p><strong><span><span><span>Expire data by using Time to live</span></span></span></strong></p> <p><span><span>Dataverse automatically includes a Time to live integer column with elastic tables. This column has the schema name TTLInSeconds and the logical name ttlinseconds.</span></span></p> <p><span><span>When a value is set in this column, it defines the amount of time, in seconds, before the row expires and is automatically deleted from database. If no value is set, the record persists indefinitely, just like standard tables.</span></span></p> <p><strong><span><span><span>Flexible schema with JSON columns</span></span></span></strong></p> <p><span><span>Elastic tables enable you to store and query data with varying structures, without the need for predefined schemas or migrations. There's no need to write custom code to map the imported data into a fixed schema. More information: Developer guide: Query JSON columns in elastic tables Elastic tables enable you to store and query data with varying structures, without the need for predefined schemas or migrations. There's no need to write custom code to map the imported data into a fixed schema. More information: Developer guide: Query JSON columns in elastic tables.</span></span></p> <h2><span><span><span>Limitations</span></span></span></h2> <p><span><span><span>Table features currently not supported with elastic tables:</span></span></span></p> <ul type="disc"> <li><span><span>Business rules</span></span></li> <li><span><span>Charts</span></span></li> <li><span><span>Business process flows</span></span></li> <li><span><span>One Dataverse connector for Power BI</span></span></li> <li><span><span>Many-to-many (N:N) relationships to standard tables</span></span></li> <li><span><span>Alternate key</span></span></li> <li><span><span>Duplicate detection</span></span></li> <li><span><span>Calculated and rollup columns</span></span></li> <li><span><span>Currency columns</span></span></li> <li><span><span>Column comparison in queries</span></span></li> <li><span><span>Table sharing</span></span></li> <li><span><span>Composite indexes</span></span></li> <li><span><span>Cascade operations: Delete, Reparent, Assign, Share, Unshare</span></span></li> <li><span><span>Ordering on lookup columns</span></span></li> <li><span><span>Aggregate queries:</span></span> <ul type="circle"> <li><span><span>Distinct value of attribute1 while orderby on attribute2 value</span></span></li> <li><span><span>Pagination when having multiple distincts</span></span></li> <li><span><span>Distinct with multiple order by</span></span></li> <li><span><span>Order by and group by together</span></span></li> <li><span><span>Group by on link entity (left outer join)</span></span></li> <li><span><span>Distinct on user owned tables </span></span></li> </ul> </li> <li><span><span>Table connections</span></span></li> <li><span><span>Access teams</span></span></li> <li><span><span>Queues</span></span></li> <li><span><span>Attachment</span></span></li> </ul> <p><span><span><span>Currently, you can't add the following types of columns:</span></span></span></p> <ul type="disc"> <li><span><span>Money (MoneyAttributeMetadata)</span></span></li> <li><span><span>MultiSelectPicklist (MultiSelectPicklistAttributeMetadata)</span></span></li> <li><span><span>State (StateAttributeMetadata)</span></span></li> <li><span><span>Status (StatusAttributeMetadata)</span></span></li> <li><span><span>Image (ImageAttributeMetadata)</span></span></li> <li><span><span>Calculated, Rollup, or Formula Columns</span></span></li> <li><span><span>Currency</span></span></li> <li><span><span>Lookup based on the Customer option</span></span></li> </ul> <p><strong><span><span>Relationships with elastic tables:</span></span></strong></p> <ul type="disc"> <li><span><span>Doesn't support creating many-to-many relationships </span></span></li> <li><span><span>One-to-many relationships are supported for elastic tables with the following limitations:</span></span> <ul> <li><span><span>Cascading isn't supported. Cascading behavior must be set to Cascade.None when the relationship is created</span></span></li> <li><span><span>Formatted values for lookup columns aren't returned when the following conditions are true</span></span></li> <li><span><span>The table that is retrieved is a standard table, and the lookup refers to an elastic table</span></span></li> </ul> </li> <li><span><span>You're using a custom elastic table partitionid value. In other words, the partitionid value is set to something other than the default value (null).</span></span></li> <li><span><span>Elastic tables support one-to-many relationships, and related rows can be retrieved when a record is retrieved. Related records can't be included in a query</span></span></li> </ul> <p><strong><span><span>Also: </span></span></strong></p> <ul> <li><span><span>Duplicate detection or adding activities aren't supported</span></span></li> <li><span><span><span>Return related rows in a query</span></span></span></li> <li><span><span>Elastic tables don't currently support returning related rows when a query is run. If you try to return related rows</span></span></li> <li><span><span>Deep insert is not supported with elastic tables. Each related record needs to be created independently</span></span><span><span> </span></span></li> <li><span><span>Elastic tables don't support multi-record transactions</span></span></li> <li><span><span>Elastic tables also don't support grouping requests in a single database transaction that uses the SDK ExecuteTransactionRequest class or in a Web API $batch operation changeset. Currently, these operations succeed but aren't atomic</span></span></li> </ul> <h2>Hands-on</h2> <p>After the theoretical side of the elastic tables let's demystify them by putting our hands-on creating and playing with some of the standard features.</p> <h3>Creating an elastic table</h3> <p><span><span>On the Power Apps maker portal inside your solution create a new table and then select the type elastic.</span></span></p> <p><img alt="Dataverse Elastic Tables Deep Dive Tutorial" data-entity-type="file" data-entity-uuid="a0496f2a-fd21-4e1a-9f21-1ac3e88615b2" height="529" src="/sites/default/files/inline-images/table01.png" width="383" /></p> <p>In the table properties as shown in the image below we can check that some of the default table features aren't available for the elastic tables (creating activities, duplicate detection rules, connection, SharePoint document management, ...)</p> <p><img alt="Dataverse Elastic Tables Deep Dive Tutorial" data-entity-type="file" data-entity-uuid="072a9abe-0636-40d3-9bea-c7e06cbc1e02" height="526" src="/sites/default/files/inline-images/table02.png" width="391" /></p> <h3>Exploring the elastic table Columns</h3> <p>Creating a new column on the elastic table has pretty much the same look &amp; feel except for the missing options in the data type choice list (Currency, Formula, Customer Lookup).</p> <p>A new option arises with the elastic tables within the data type single line of text we can now chose a new format, the JSON.</p> <p><img alt="Dataverse Elastic Tables Deep Dive Tutorial" data-entity-type="file" data-entity-uuid="bb73c162-47c9-460c-b570-e77ae0ee8095" height="432" src="/sites/default/files/inline-images/JsonColumn01.png" width="215" /></p> <p>We now have our table created and let's see the aspect of some of the default columns present in it with our JSON Column in the image below.</p> <p>Two new columns are present:</p> <ul> <li>Partition ID: as explained above it defines the logical compartiment to store the record, it cannot be changed after the record creation</li> <li>Time to Live: measured in seconds and determine the time the record will remain in the table</li> </ul> <p><img alt="Elastic Table View" data-entity-type="file" data-entity-uuid="a99ed98e-8e02-4c52-81ea-9c7abff673e7" height="148" src="/sites/default/files/inline-images/ElasticTableView01.png" width="1191" /></p> <p><span><span><span><span>Considerations around the partitionid column that should meet these criteria:</span></span></span></span></p> <ul> <li><span><span>The values in it don't change. After a row is created that has a partitionid value, you can't change it</span></span></li> <li><span><span>It has a high cardinality value. In other words, the property should have a wide range of possible values. Each logical partition can store 20 gigabytes (GB) of data. Therefore, by choosing a partitionid value that has a wide range of possible values, you ensure that the table can scale without reaching limits for any specific logical partition</span></span></li> <li><span><span>It spreads data as evenly as possible among all logical partitions</span></span></li> <li><span><span>No values are larger than 1,024 bytes</span></span></li> <li><span><span>No values contain slashes (/), angle brackets (&lt;, &gt;), asterisks (*), percent signs (%), ampersands (&amp;), colons (:), backslashes (\), question marks (?), or plus signs (+). These characters aren't supported for alternate keys</span></span></li> </ul> <p><span><span>If a partitionid value isn't specified for a row, Dataverse uses the primary key value as the default partitionid value. For write-heavy tables of any size, or for cases where rows are mostly retrieved by using the primary key, the primary key is a great choice for the partitionid column.</span></span></p> <h3>When querying the JSON column:</h3> <p>Using the the default filter in the table view only uses standard text filtering options so here we will only be able to check for the presence of strings inside the JSON but no more than this.</p> <p><img alt="Dataverse Elastic Tables Deep Dive Tutorial" data-entity-type="file" data-entity-uuid="055f4a4b-b39d-45ed-9cb6-36db0d72831a" height="351" src="/sites/default/files/inline-images/JsonColumnFiltering01.png" width="284" /></p> <p>However great news comes with You can use the <code>ExecuteCosmosSQLQuery</code> message that enables to run any Cosmos SQL query directly against your elastic table and filter rows based on properties inside JSON.</p> <p>So let's try it in our created table and column !</p> <p>Using the WebAPI we create the following http request, also available using the Dataverse SDK for .NET:</p> <pre> <code class="language-http">/api/data/v9.2/ExecuteCosmosSqlQuery( QueryText=@p1, EntityLogicalName=@p2, QueryParameters=@p3)? @p1='select c.props.sc_name as name, c.props.sc_jsoncolumn as json, c.props.sc_jsoncolumn.age as age from c where c.props.sc_jsoncolumn.car=@car and c.props.sc_jsoncolumn.age &gt;= @age' &amp;@p2='sc_elasticpoc' &amp;@p3={'Keys':['@car', '@age'],'Values':[{'Type':'System.String','Value':'Mustang'} , {'Type':'System.Int32','Value': '20'}]}</code></pre> <p>where "sc_elasticpoc" is our table, the "sc_jsoncolumn" is our JSON column and c.props is the prefix on the schema name of the columns. In this prefix, <code>c</code> is an alias or shorthand notation for the elastic table that is being queried.</p> <p>And the result is:</p> <pre> <code class="language-http">{ "@odata.context":"https://orgf9a090a4.crm17.dynamics.com/api/data/v9.2/$metadata#expando/$entity" ,"@odata.type":"#Microsoft.Dynamics.CRM.expando","PagingCookie":"","HasMore":false,"Result@odata.type":"#Collection(Microsoft.Dynamics.CRM.expando)" ,"Result": [{"@odata.type":"#Microsoft.Dynamics.CRM.expando","name":"elastic 2","age":20 ,"json": {"@odata.type":"#Microsoft.Dynamics.CRM.expando","name":"Paul","age":20,"car":"Mustang"}}] }</code></pre> <h3>Final considerations between Elastic and Standard tables:</h3> <p><strong>Performance:</strong></p> <p>As some announcements might let us think that elastic tables offer super performance over standard tables there are some studies that shows that's not quite the reality like in the Piotr Gaszewski blog (<a href="https://piotrgaszewski.hashnode.dev/dataverse-elastic-tables">https://piotrgaszewski.hashnode.dev/dataverse-elastic-tables</a>) that states:</p> <ul> <li> <p><span><span>Standard Create, Update, Delete operations: takes the same or a little bit more time to execute in elastic tables than in standard ones</span></span></p> </li> <li> <p><span><span>Multiple Create, Update, Delete operations: <span><span>takes significantly less time to execute in elastic tables than in standard ones (1/2 to 1/10)</span></span></span></span></p> </li> <li> <p><span><span>Retrieve data operations: takes 2 to 3 times longer <span><span><span><span>in elastic tables than in standard ones </span></span></span></span></span></span></p> </li> </ul> <p><span><span>So elastic tables offers significantly less performance execution times when using single atomic operation, however when working with multiple records on the same request it offers some advantages. </span></span></p> <p><strong><span><span>Service API Limits:</span></span></strong></p> <p><span><span>As per MS, Elastic Tables are still exposed to the Dataverse API throttling limits and bulk operation messages should be used to increase the throughput for high volume operations.</span></span></p> <p><strong><span><span>Is security model user compatible:</span></span></strong></p> <p><span><span>MS says yes that Elastic tables adhere to the Dataverse security model using</span></span></p> <ul type="disc"> <li><span><span>an User or Organisation level ownership</span></span></li> <li><span><span>field level security</span></span></li> </ul> <p><strong><span><span>And yes audit is also available for elastic tables!</span></span></strong></p> <h2>Conclusion:</h2> <p>Elastic tables enlarges the table types offer in dataverse, but it's to take with caution in my opinion because these pretty tables aren't the way to go to standard development in a relation database context, since table lookups aren't available ootb and since many other table features aren't also available which reduces a lot the scope of action of these tables.</p> <p>Regarding performance finally they're also not the way to go if you search for increasing CRUD performances, except using multiple CRUD operations.</p> <p>So my final take on the elastic tables would be for storing large datasets of data and mainly for IoT data that would managed by a service layer capable of using multiple CRUD operations and then consuming the data on a business intelligence scheme (as an example only).</p> <h2 class="title">Dataverse Elastic Tables Deep Dive Tutorial</h2> </div> </div> <div class="field field--name-field-image field--type-image field--label-above"> <div class="field__label">Image</div> <div class="images-container clearfix"> <div class="image-preview clearfix"> <div class="image-wrapper clearfix"> <div class="field field--name-field-image field--type-image field--label-above field__item">/sites/default/files/2024-06/output%20%281%29.jpg</div> </div> </div> </div> </div> Thu, 27 Jun 2024 12:46:41 +0000 joao.neto 778 at https://dynamics-chronicles.com