<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Blog on It Must Be Code!</title><link>https://itmustbecode.com/categories/blog/</link><description>Recent content in Blog on It Must Be Code!</description><generator>Hugo</generator><language>en-CA</language><lastBuildDate>Sun, 19 Oct 2025 21:21:41 +0000</lastBuildDate><atom:link href="https://itmustbecode.com/categories/blog/feed.xml" rel="self" type="application/rss+xml"/><item><title>PCF Controls Tips &amp; Tricks: How to Bundle and Resolve Static JSON Files</title><link>https://itmustbecode.com/pcf-controls-tips-tricks-how-to-bundle-and-resolve-static-json-files/</link><pubDate>Sun, 19 Oct 2025 21:21:41 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/pcf-controls-tips-tricks-how-to-bundle-and-resolve-static-json-files/</guid><description>&lt;p&gt;&lt;strong&gt;JSON files&lt;/strong&gt; are one of the most common and convenient ways to store structured data. They’re lightweight, human-readable, and easy to parse in JavaScript. In PCF Control development, they can be used a quick and convenient way to store and access static data.&lt;/p&gt;
&lt;p&gt;In this post, I’ll show you how to easily &lt;strong&gt;configure&lt;/strong&gt; your PCF control projects to bundle static JSON files and resolve their contents at runtime.&lt;/p&gt;
&lt;figure&gt;&lt;img src="./image-3.png"loading="lazy"&gt;&lt;/figure&gt;
&lt;h2 id="how-it-started"&gt;&lt;strong&gt;How it started&lt;/strong&gt;
&lt;/h2&gt;&lt;p&gt;It all started when I began receiving complaints that my open-source &lt;a class="link" href="https://github.com/drivardxrm/CountryPicker.PCF" target="_blank" rel="noopener"
&gt;&lt;strong&gt;Country Picker PCF&lt;/strong&gt;&lt;/a&gt; control had suddenly stopped working properly. After some investigation, I realized the issue came from its dependency on a free third-party service used to query the country data— &lt;strong&gt;restcountries&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>PCF Controls Tips and Tricks : How to skip Linting at Build-Time</title><link>https://itmustbecode.com/pcf-controls-tips-and-tricks-how-to-skip-linting-at-build-time/</link><pubDate>Tue, 08 Jul 2025 01:09:42 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/pcf-controls-tips-and-tricks-how-to-skip-linting-at-build-time/</guid><description>&lt;p&gt;Have you ever been unable to properly &lt;strong&gt;build&lt;/strong&gt; a PCF control because of &lt;strong&gt;linting&lt;/strong&gt; errors? Well, lately I have, and it can get really frustrating. Especially when the errors have nothing to do with your code, but are caused by an unexpected failure in the way the PCF framework handles the linting process.&lt;/p&gt;
&lt;figure&gt;&lt;img src="./image-4.png"loading="lazy"&gt;&lt;/figure&gt;
&lt;p&gt;Turns out I&amp;rsquo;m not alone as other members of the PCF community like &lt;a class="link" href="https://www.linkedin.com/in/cchannon/" target="_blank" rel="noopener"
&gt;Charles Channon&lt;/a&gt; have recently flagged linting issues with recent &lt;code&gt;pcf-scripts&lt;/code&gt; releases.&lt;/p&gt;</description></item><item><title>PCF Controls Tips &amp; Tricks : How to detect Authoring Mode</title><link>https://itmustbecode.com/pcf-controls-tips-tricks-how-to-detect-authoring-mode/</link><pubDate>Mon, 02 Jun 2025 02:57:10 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/pcf-controls-tips-tricks-how-to-detect-authoring-mode/</guid><description>&lt;p&gt;When you configure a &lt;strong&gt;PCF control&lt;/strong&gt; on a Dataverse model-driven app, the form designer will try to &lt;strong&gt;render&lt;/strong&gt; the control even though it&amp;rsquo;s not running in the actual app context.&lt;/p&gt;
&lt;p&gt;This usually isn&amp;rsquo;t a problem, but for complex controls that depend on runtime data, it can cause errors—and even break the form designer.&lt;/p&gt;
&lt;p&gt;Moreover, as a PCF developer, you might want to show a simplified or placeholder version of your control in the form designer to help makers understand how it will look when the app actually runs.&lt;/p&gt;</description></item><item><title>How to Create Deep Links to D365 F&amp;O Records with Dataverse Virtual Tables</title><link>https://itmustbecode.com/how-to-create-deep-links-to-d365-fo-records-with-dataverse-virtual-tables/</link><pubDate>Wed, 23 Apr 2025 02:30:01 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/how-to-create-deep-links-to-d365-fo-records-with-dataverse-virtual-tables/</guid><description>&lt;p&gt;It is a common requirement for SaaS platform that exposes form over data to be able to share a secure link (a.k.a. &lt;strong&gt;Deep Link&lt;/strong&gt;) to access a given record. That way, links can be shared publicly— &lt;em&gt;via email or Teams message for example&lt;/em&gt;—but clicking them still requires the user to &lt;strong&gt;authenticate&lt;/strong&gt; and have the right &lt;strong&gt;permissions&lt;/strong&gt; to access the record.&lt;/p&gt;
&lt;p&gt;For instance, Power Platform &lt;strong&gt;model-driven apps&lt;/strong&gt; have this functionality &lt;strong&gt;built in.&lt;/strong&gt; You can simply copy and share the URL exposed in the browser while looking at a specific record. If the recipient has the right credentials, they can click the link and go straight to the record. This predictable URL format also makes it super handy to build &lt;strong&gt;automations&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Model-Driven App Trick : How to Hide a Ribbon Button when the Form is Dirty</title><link>https://itmustbecode.com/model-driven-app-trick-how-to-hide-a-ribbon-button-when-the-form-is-dirty/</link><pubDate>Sun, 09 Mar 2025 19:56:52 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/model-driven-app-trick-how-to-hide-a-ribbon-button-when-the-form-is-dirty/</guid><description>&lt;p&gt;I recently encountered a requirement on a model-driven app project to display a custom ribbon button only when the form had &lt;strong&gt;no unsaved changes&lt;/strong&gt;—in other words, the button needed to be hidden whenever the form was &lt;strong&gt;dirty&lt;/strong&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src="./image.png"loading="lazy"&gt;&lt;/figure&gt;
&lt;p&gt;While the solution is quite simple, I thought it would be a good idea to write about it and put all the pieces of the puzzle together. I also explore and provide a solution for the 2 current button extension models—the &lt;strong&gt;Classic Ribbon&lt;/strong&gt; and the &lt;strong&gt;Modern&lt;/strong&gt; commanding .&lt;/p&gt;</description></item><item><title>Azure Function Isolated Worker : Avoid comments in the Host file</title><link>https://itmustbecode.com/azure-function-isolated-worker-avoid-comments-in-the-host-file/</link><pubDate>Mon, 16 Dec 2024 21:01:31 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/azure-function-isolated-worker-avoid-comments-in-the-host-file/</guid><description>&lt;p&gt;As a .NET developer, the yearly release cycle is always one of my most anticipated event. This years edition is no exception, as it brings &lt;strong&gt;.NET 9&lt;/strong&gt; to the forefront with its load of improvements. However, it also marks the &lt;strong&gt;end of support&lt;/strong&gt; for &lt;strong&gt;.NET 6&lt;/strong&gt;, meaning it&amp;rsquo;s time to think about upgrade and migration plan.&lt;/p&gt;
&lt;figure&gt;&lt;img src="./image-2.png"loading="lazy"&gt;&lt;/figure&gt;
&lt;p&gt;Over time, I’ve developed and continue to maintain a several of &lt;strong&gt;Azure Functions&lt;/strong&gt; projects built on . &lt;strong&gt;NET 6&lt;/strong&gt; using the &lt;strong&gt;In-Process&lt;/strong&gt; model. With .NET 6 reaching its end of life and the &lt;strong&gt;In-Process&lt;/strong&gt; model being slowly deprecated (&lt;a class="link" href="https://azure.microsoft.com/en-us/updates?id=retirement-support-for-the-inprocess-model-for-net-apps-in-azure-functions-ends-10-november-2026" target="_blank" rel="noopener"
&gt;End of life Nov 2026&lt;/a&gt;), I decided it was the perfect timing to upgrade my projects to a newer .NET version, but also to make the switch to the &lt;strong&gt;Isolated Worker&lt;/strong&gt; model.&lt;/p&gt;</description></item><item><title>How to Secure a Dataverse Plug-in with Managed Identity using Plugin Identity Manager for XrmToolBox</title><link>https://itmustbecode.com/how-to-secure-a-dataverse-plug-in-with-managed-identity-using-plugin-identity-manager-for-xrmtoolbox/</link><pubDate>Sun, 03 Nov 2024 19:41:42 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/how-to-secure-a-dataverse-plug-in-with-managed-identity-using-plugin-identity-manager-for-xrmtoolbox/</guid><description>&lt;p&gt;The ability to assign &lt;strong&gt;&lt;a class="link" href="https://learn.microsoft.com/en-us/power-platform/admin/managed-identity-overview" target="_blank" rel="noopener"
&gt;managed identities&lt;/a&gt;&lt;/strong&gt; to Dataverse &lt;strong&gt;plug-ins&lt;/strong&gt; was recently introduced in the Power Platform and was received with waves of likes and thumbs up from the Power Platform community.&lt;/p&gt;
&lt;p&gt;Rightfully so, this powerful feature enables Dataverse &lt;strong&gt;plug-ins&lt;/strong&gt; to securely connect with &lt;strong&gt;Azure&lt;/strong&gt; resources without the hassle of managing credentials.&lt;/p&gt;
&lt;p&gt;However, due to technical constraints and limited &lt;a class="link" href="https://learn.microsoft.com/en-us/power-platform/admin/set-up-managed-identity" target="_blank" rel="noopener"
&gt;documentation&lt;/a&gt;, setting up plug-in managed identities is not that straightforward and can prove to be a daunting process, even for seasoned Power Platform developers.&lt;/p&gt;</description></item><item><title>How to Get PCF Controls Ready for Dark Mode in Model-Driven Apps</title><link>https://itmustbecode.com/how-to-get-pcf-controls-ready-for-dark-mode-in-model-driven-apps/</link><pubDate>Fri, 05 Apr 2024 04:03:22 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/how-to-get-pcf-controls-ready-for-dark-mode-in-model-driven-apps/</guid><description>&lt;p&gt;Although not officially released, there are strong signals that the support for &lt;strong&gt;Dark mode&lt;/strong&gt; 🌚 is coming very soon to Power Platform Model-Driven apps.&lt;/p&gt;
&lt;p&gt;Recent investments made in the platform like the &amp;rsquo; &lt;strong&gt;New look&lt;/strong&gt;&amp;rsquo; that leverages the Fluent 2 design system are paving the way to Dark Mode.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;🔗 &lt;a class="link" href="https://itmustbecode.com/adapting-pcf-controls-for-model-driven-apps-new-modern-look/" &gt;Adapting PCF Controls for Model Driven apps New (Modern) Look&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;🔗 &lt;a class="link" href="https://learn.microsoft.com/en-us/power-apps/user/modern-fluent-design?WT.mc_id=DX-MVP-5004959" target="_blank" rel="noopener"
&gt;Modern, refreshed look for model-driven apps - Power Apps | Microsoft Learn&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Finance and Operations Virtual Entity Manager for XrmToolBox</title><link>https://itmustbecode.com/finance-and-operations-virtual-entity-manager-for-xrmtoolbox/</link><pubDate>Sun, 25 Feb 2024 14:52:19 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/finance-and-operations-virtual-entity-manager-for-xrmtoolbox/</guid><description>&lt;p&gt;As Microsoft pursues its One Dynamics, One Platform initiative, substantial investments are made to integrate the &lt;strong&gt;D365 Finance and Operations&lt;/strong&gt; suite with the &lt;strong&gt;Power Platform&lt;/strong&gt; and &lt;strong&gt;Dataverse&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;These includes the ability to surface most F&amp;amp;O tables as &lt;strong&gt;&lt;a class="link" href="https://learn.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/power-platform/virtual-entities-overview?WT.mc_id=DX-MVP-5004959" target="_blank" rel="noopener"
&gt;virtual entities&lt;/a&gt;&lt;/strong&gt; in Dataverse. Bringing full CRUD capabilities, but also opening up the whole Power Platform ecosystem to &lt;strong&gt;consume and act&lt;/strong&gt; on F&amp;amp;O data. Think Power Automate, Model-driven and Canvas Apps, PCF Controls, Power Pages, etc.&lt;/p&gt;</description></item><item><title>PCF Controls with FluentUI v9 - Avoid DOM id collisions</title><link>https://itmustbecode.com/pcf-controls-with-fluentui-v9-avoid-dom-id-collisions/</link><pubDate>Tue, 16 Jan 2024 02:24:28 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/pcf-controls-with-fluentui-v9-avoid-dom-id-collisions/</guid><description>&lt;p&gt;Recently, while developing a PCF control with the &lt;strong&gt;FluentUI React v9&lt;/strong&gt; library, I encountered a rather unusual and annoying runtime display bug. Its resolution ended up shedding light on an important concept that had previously escaped my attention and I thought it deserves its own blog post.&lt;/p&gt;
&lt;h2 id="the-symptoms"&gt;🤒The symptoms
&lt;/h2&gt;&lt;p&gt;The control I was developing is my latest community PCF control, the &lt;strong&gt;FluentUI Month Picker&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;🔗&lt;a class="link" href="https://pcf.gallery/fluentui-month-picker/" target="_blank" rel="noopener"
&gt;FluentUI Month Picker | PCF Gallery&lt;/a&gt;
🔗 GitHub repo : drivardxrm/FluentUI.MonthPicker.PCF&lt;/p&gt;</description></item><item><title>Adapting PCF Controls for Model Driven apps New (Modern) Look</title><link>https://itmustbecode.com/adapting-pcf-controls-for-model-driven-apps-new-modern-look/</link><pubDate>Tue, 17 Oct 2023 01:59:13 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/adapting-pcf-controls-for-model-driven-apps-new-modern-look/</guid><description>&lt;p&gt;If you&amp;rsquo;re a user of a Power Platform&amp;rsquo;s model-driven app, you&amp;rsquo;ve likely come across the &amp;rsquo; &lt;strong&gt;Try the new look&lt;/strong&gt;&amp;rsquo; switch appearing on your app header.&lt;/p&gt;
&lt;figure&gt;&lt;img src="./image-6.png"loading="lazy"&gt;&lt;/figure&gt;
&lt;p&gt;Indeed, toggling this switch will result in the platform adopting a modern Fluent Design System (a.k.a. &lt;a class="link" href="https://fluent2.microsoft.design/" target="_blank" rel="noopener"
&gt;&lt;strong&gt;Fluent 2&lt;/strong&gt;&lt;/a&gt;) for rendering model-driven form elements such as fields and command bars.&lt;/p&gt;
&lt;p&gt;While this evolution is undoubtedly a positive and necessary step for the platform as a whole, it can present several challenges for PCF Control authors aiming to ensure their controls seamlessly blend with the out-of-the-box UI, delivering a polished user experience.&lt;/p&gt;</description></item><item><title>PowerApps Grid Control - How to make Cell Renderers more Generic</title><link>https://itmustbecode.com/powerapps-grid-control-how-to-make-cell-renderers-more-generic/</link><pubDate>Mon, 02 Oct 2023 01:46:28 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/powerapps-grid-control-how-to-make-cell-renderers-more-generic/</guid><description>&lt;p&gt;The &lt;strong&gt;Power Apps grid control&lt;/strong&gt; is a new and improved version for the &lt;strong&gt;data grid&lt;/strong&gt; control for Power Platform &lt;strong&gt;model-driven applications&lt;/strong&gt;. It introduces a modern data grid user experience and a range of noteworthy features, including the ability to perform inline editing and seamless infinite scrolling of the grid records, amongst others.&lt;/p&gt;
&lt;p&gt;Simply implement the &lt;strong&gt;Power Apps grid control&lt;/strong&gt; component on your applications data grids (table views or form subgrids) to unlock up its capabilities.&lt;/p&gt;</description></item><item><title>Calling PAC CLI ModelBuilder from an Azure DevOps Pipeline</title><link>https://itmustbecode.com/calling-pac-cli-modelbuilder-from-an-azure-devops-pipeline/</link><pubDate>Sun, 04 Jun 2023 19:44:35 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/calling-pac-cli-modelbuilder-from-an-azure-devops-pipeline/</guid><description>&lt;p&gt;In a previous blog post, I described how to use the new &lt;strong&gt;modelbuilder&lt;/strong&gt; command group of the Microsoft Power Platform CLI ( &lt;strong&gt;PAC CLI&lt;/strong&gt;) to generate &lt;strong&gt;early-bound&lt;/strong&gt; classes for Dataverse code customization projects.&lt;/p&gt;
&lt;p&gt;This time we&amp;rsquo;ll take this a step further and explore how to &lt;strong&gt;automate&lt;/strong&gt; the early-bound class creation process by invoking the PAC CLI modelbuilder within an &lt;strong&gt;Azure DevOps pipeline&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;🔗Link to previous post here :
&lt;a class="link" href="https://itmustbecode.com/how-to-generate-dataverse-early-bound-classes-with-pac-cli-modelbuilder/" target="_blank" rel="noopener"
&gt;How to Generate Dataverse Early-Bound Classes with PAC CLI ModelBuilder&lt;/a&gt;&lt;/p&gt;</description></item><item><title>How to Generate Dataverse Early-Bound Classes with PAC CLI ModelBuilder</title><link>https://itmustbecode.com/how-to-generate-dataverse-early-bound-classes-with-pac-cli-modelbuilder/</link><pubDate>Wed, 12 Apr 2023 03:37:47 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/how-to-generate-dataverse-early-bound-classes-with-pac-cli-modelbuilder/</guid><description>&lt;p&gt;As a Power Platform developer, I have always been a strong advocate for the use of &lt;strong&gt;early-bound&lt;/strong&gt; classes in customization projects that targets Dataverse tables and actions. Early-bound classes not only increase code readability and maintainability, they also significantly reduce the risk of errors. I think that being proficient and fast in generating early-bound classes is a must-have skill for any developers who works with the platform.&lt;/p&gt;
&lt;p&gt;Recently, the Microsoft Power Platform CLI ( &lt;strong&gt;PAC CLI&lt;/strong&gt;) introduced the new &lt;strong&gt;modelbuilder&lt;/strong&gt; command group that enables early bound classes generation directly from the CLI. Traditionally the generation of early-bound classes was primarily accomplished through a specialized tool called &lt;strong&gt;CrmSvcUtil&lt;/strong&gt;. Yet, integrating these capabilities into a more versatile and widespread tool like &lt;strong&gt;PAC CLI&lt;/strong&gt; is a logical step forward that will undoubtedly improve user adoption in the long run.&lt;/p&gt;</description></item><item><title>Dataverse Plugins : Unlock the latest C# features with PolySharp</title><link>https://itmustbecode.com/dataverse-plugins-unlock-the-latest-c-features-with-polysharp/</link><pubDate>Fri, 20 Jan 2023 03:30:30 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/dataverse-plugins-unlock-the-latest-c-features-with-polysharp/</guid><description>&lt;p&gt;Whenever a new version of C# is released I&amp;rsquo;m always eager to explore the new features of the language. However, as a Power Platform developer, it can be frustrating knowing that they can&amp;rsquo;t be used to develop Dataverse plugins, which constitutes a significant part of my daily work.&lt;/p&gt;
&lt;p&gt;As a matter of fact, due to a dependency on the Microsoft CRM SDK, Dataverse plugins are confined to use an older version of the .NET framework (4.6.2) which natively supports C#7.3, while the latest version is C# 11.&lt;/p&gt;</description></item><item><title>PCF Control compile error : Cannot find module 'ajv/dist/compile/codegen'</title><link>https://itmustbecode.com/pcf-control-compile-error-cannot-find-module-ajv-dist-compile-codegen/</link><pubDate>Tue, 03 Jan 2023 18:09:56 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/pcf-control-compile-error-cannot-find-module-ajv-dist-compile-codegen/</guid><description>&lt;p&gt;I was working on a new PCF control project and I encountered an unexpected error when attempting to build the project, even though no custom code had been added yet. (Cannot find module &lt;strong&gt;ajv/dist/compile/codegen&lt;/strong&gt;)&lt;/p&gt;
&lt;figure&gt;&lt;img src="./image.png"loading="lazy"&gt;&lt;/figure&gt;
&lt;p&gt;For reference, I&amp;rsquo;m using the latest version ( &lt;em&gt;at the time of writing&lt;/em&gt;) of the &lt;strong&gt;Microsoft Power Platform CLI&lt;/strong&gt; ( &lt;strong&gt;1.21.4+g4869036&lt;/strong&gt;) and here are the steps to reproduce :&lt;/p&gt;
&lt;figure&gt;&lt;img src="./image-2.png"loading="lazy"&gt;&lt;/figure&gt;
&lt;ol&gt;
&lt;li&gt;Execute the &lt;strong&gt;init&lt;/strong&gt; method of the &lt;strong&gt;pac cli&lt;/strong&gt;. This will scaffold a new PCF control projects with all the basic dependencies.&lt;/li&gt;
&lt;li&gt;Execute &lt;strong&gt;npm install&lt;/strong&gt; to download the dependencies&lt;/li&gt;
&lt;li&gt;Try to build the project : &lt;strong&gt;npm run build&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;❌Fails with error : Cannot find module &amp;ldquo;ajv/dist/compile/codegen&amp;rdquo;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pac pcf init -ns &amp;lt;Namespace&amp;gt; -n &amp;lt;ProjectName&amp;gt; -t field
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm run build
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The error message is quite straitforward and points toward a node module that cannot be found : &lt;strong&gt;ajv/dist/compile/codegen&lt;/strong&gt; . Upon checking the &lt;strong&gt;node_modules&lt;/strong&gt; directory, even if the &lt;strong&gt;ajv&lt;/strong&gt; module seems present, the &lt;strong&gt;compile/codegen&lt;/strong&gt; part is nowhere to be found.&lt;/p&gt;</description></item><item><title>How to Call a Dataverse Custom API from a Canvas App</title><link>https://itmustbecode.com/how-to-call-a-dataverse-custom-api-from-a-canvas-app/</link><pubDate>Mon, 31 Oct 2022 04:01:32 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/how-to-call-a-dataverse-custom-api-from-a-canvas-app/</guid><description>&lt;p&gt;Dataverse Custom APIs are a powerful extension model of the PowerPlatform. However, at the time of writing, there are no direct method to execute a Custom API inside the PowerApps Canvas App model.&lt;/p&gt;
&lt;p&gt;In this post I will show how to call any Custom API from a Canvas App with the use of a generic &lt;strong&gt;Power Automate&lt;/strong&gt; Flow and the new &lt;strong&gt;ParseJSON&lt;/strong&gt; functionality.&lt;/p&gt;
&lt;figure&gt;&lt;img src="./image-25.png"loading="lazy"&gt;&lt;/figure&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;UPDATE 17-FEB-2023&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Dataverse Custom APIs can now be called &lt;strong&gt;directly&lt;/strong&gt; from PowerFx in Canvas Apps and Custom Pages. ( &lt;em&gt;still in experimental phase&lt;/em&gt;)&lt;/p&gt;</description></item><item><title>The PCF Control Framework chooses Esbuild-Loader for Faster Build Time</title><link>https://itmustbecode.com/the-pcf-control-framework-chooses-esbuild-loader-for-faster-build-time/</link><pubDate>Mon, 10 Oct 2022 13:45:03 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/the-pcf-control-framework-chooses-esbuild-loader-for-faster-build-time/</guid><description>&lt;p&gt;While I was starting a new PowerApps Component Framework ( &lt;strong&gt;PCF&lt;/strong&gt;) project, I stumbled upon the latest release notes of the framework&amp;rsquo;s main package ( &lt;strong&gt;&lt;a class="link" href="https://www.npmjs.com/package/pcf-scripts" target="_blank" rel="noopener"
&gt;pcf-scripts&lt;/a&gt;&lt;/strong&gt; v1.18.4). I was stoked 🤩 to see that they &lt;strong&gt;improved&lt;/strong&gt; the performance of the &lt;strong&gt;bundling&lt;/strong&gt; process by switching from &lt;strong&gt;&lt;a class="link" href="https://babeljs.io/" target="_blank" rel="noopener"
&gt;babel-loader&lt;/a&gt;&lt;/strong&gt; to &lt;a class="link" href="https://github.com/privatenumber/esbuild-loader" target="_blank" rel="noopener"
&gt;&lt;strong&gt;esbuild-loader&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src="./image-11.png"loading="lazy"&gt;&lt;/figure&gt;
&lt;p&gt;Let&amp;rsquo;s take this opportunity to nerd-out on the &lt;strong&gt;bundling&lt;/strong&gt; process of a PCF control and see if this change really &lt;strong&gt;measures up&lt;/strong&gt; ⌚.&lt;/p&gt;</description></item><item><title>Storybook for PCF Controls - Part 2 : Publish to GitHub Pages</title><link>https://itmustbecode.com/storybook-for-pcf-controls-part-2-publish-to-github-pages/</link><pubDate>Thu, 29 Sep 2022 00:16:42 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/storybook-for-pcf-controls-part-2-publish-to-github-pages/</guid><description>&lt;p&gt;This is the &lt;strong&gt;second part&lt;/strong&gt; of a series on &lt;strong&gt;&lt;a class="link" href="https://storybook.js.org/" target="_blank" rel="noopener"
&gt;Storybook&lt;/a&gt;&lt;/strong&gt; for PowerApps Component Framework ( &lt;strong&gt;PCF&lt;/strong&gt;) controls, where I take one of my community PCF control hosted on Github (&lt;a class="link" href="https://github.com/drivardxrm/CountryPicker.PCF" target="_blank" rel="noopener"
&gt;CountryPicker.PCF&lt;/a&gt;) and implement a Storybook from scratch.&lt;/p&gt;
&lt;p&gt;While the &lt;a class="link" href="https://itmustbecode.com/storybook-for-pcf-controls-part-1-set-the-story-straight/" &gt;first post&lt;/a&gt;, revolved around the setup and authoring process of the &lt;strong&gt;Storybook&lt;/strong&gt;, this one focuses on the &lt;strong&gt;publishing&lt;/strong&gt; steps required to make Storybook static site &lt;strong&gt;publicly&lt;/strong&gt; available from &lt;strong&gt;GitHub Pages&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Storybook for PCF Controls - Part 1 : Set the Story Straight</title><link>https://itmustbecode.com/storybook-for-pcf-controls-part-1-set-the-story-straight/</link><pubDate>Mon, 12 Sep 2022 01:43:09 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/storybook-for-pcf-controls-part-1-set-the-story-straight/</guid><description>&lt;p&gt;In the frontend development world, &lt;strong&gt;&lt;a class="link" href="https://storybook.js.org/" target="_blank" rel="noopener"
&gt;Storybook&lt;/a&gt;&lt;/strong&gt; as emerged as the &lt;strong&gt;industry standard&lt;/strong&gt; to showcase and test UI components.&lt;/p&gt;
&lt;p&gt;In this series of posts I will show how easy (and rewarding) it is to implement and publish a Storybook for a &lt;strong&gt;PowerApps Component Framework (PCF)&lt;/strong&gt; project. That way users can have a direct and interactive access to the control without having to install anything on their side.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Part 1&lt;/strong&gt;, will focus on &lt;strong&gt;setting up&lt;/strong&gt; Storybook and write the stories in the context of a PCF control project.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Part 2&lt;/strong&gt;, will demontrate how to &lt;strong&gt;publish&lt;/strong&gt; the Storybook to &lt;strong&gt;Github Pages&lt;/strong&gt; on every commit using &lt;strong&gt;GitHub Actions&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-is-storybook"&gt;What is Storybook
&lt;/h2&gt;&lt;p&gt;In essence, &lt;strong&gt;Storybook&lt;/strong&gt; is a framework that helps web developers express and test frontend workflows. It can be used for &lt;strong&gt;building&lt;/strong&gt;, &lt;strong&gt;documenting&lt;/strong&gt;, and &lt;strong&gt;testing&lt;/strong&gt; UI components in isolation.&lt;/p&gt;</description></item><item><title>Develop PCF Controls with FluentUI React v9</title><link>https://itmustbecode.com/develop-pcf-controls-with-fluentui-react-v9/</link><pubDate>Fri, 26 Aug 2022 04:50:52 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/develop-pcf-controls-with-fluentui-react-v9/</guid><description>&lt;p&gt;Microsoft recently unveiled the first stable version of &lt;strong&gt;FluentUI React v9&lt;/strong&gt;( &lt;strong&gt;&lt;code&gt;@fluentui/react-components&lt;/code&gt;&lt;/strong&gt;). This new edition of FluentUI is the result of joint efforts from the &lt;strong&gt;Office&lt;/strong&gt; and &lt;strong&gt;Teams&lt;/strong&gt; product teams to streamline their respective React front-end libraries into one component framework.&lt;/p&gt;
&lt;p&gt;To celebrate this 🎉, I have released 2 community PowerApps Control Framework ( &lt;strong&gt;PCF&lt;/strong&gt;) Controls that targets this new library.&lt;/p&gt;
&lt;p&gt;In this post I will reflect on my experience authoring PCF controls with this new set of components and highlight the main differences with prior versions.&lt;/p&gt;</description></item><item><title>PCF Controls - Tree-Shaking For Better Bundle Size</title><link>https://itmustbecode.com/pcf-controls-tree-shaking-for-better-bundle-size/</link><pubDate>Mon, 25 Jul 2022 02:29:08 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/pcf-controls-tree-shaking-for-better-bundle-size/</guid><description>&lt;p&gt;Building modern front-end controls and application requires great care to keep the &lt;strong&gt;size&lt;/strong&gt; of the assets as &lt;strong&gt;low&lt;/strong&gt; as possible. The development of PowerApps Control Framework (PCF) controls doesn&amp;rsquo;t fall short from this rule.&lt;/p&gt;
&lt;p&gt;In this post I will show how to optimize the &lt;strong&gt;tree-shaking&lt;/strong&gt; process and &lt;strong&gt;reduce&lt;/strong&gt; thebundle size of PCF controls with simple adjustments to &lt;strong&gt;module resolution&lt;/strong&gt; of the Typescript configuration file.&lt;/p&gt;
&lt;h2 id="how-i-got-there"&gt;How I got there
&lt;/h2&gt;&lt;p&gt;After seeing this tweet from &lt;a class="link" href="https://twitter.com/ScottDurow" target="_blank" rel="noopener"
&gt;Scott Durow&lt;/a&gt; that announced the release of &lt;a class="link" href="https://react.fluentui.dev/" target="_blank" rel="noopener"
&gt;&lt;strong&gt;FluentUI React v9&lt;/strong&gt;&lt;/a&gt; , I felt the urge and I immediately started a new PCF control project that targets this new library.&lt;/p&gt;</description></item><item><title>PCF control - Generate Shields.IO Badges in the PowerPlatform</title><link>https://itmustbecode.com/pcf-control-generate-shields-io-badges-in-the-powerplatform/</link><pubDate>Thu, 07 Apr 2022 02:49:10 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/pcf-control-generate-shields-io-badges-in-the-powerplatform/</guid><description>&lt;p&gt;One of the thing I like the most about &lt;strong&gt;PCF controls&lt;/strong&gt; for the PowerPlatform is the ability to change the normal behavior and rendering of forms attributes to add a new twist to the user experience.&lt;/p&gt;
&lt;p&gt;With that in mind, for my latest communityPCF control, &lt;a class="link" href="https://github.com/drivardxrm/ShieldsIO.Badge.PCF" target="_blank" rel="noopener"
&gt;ShieldsIO.Badge.PCF&lt;/a&gt;, I wanted to bring the ability to render custom (and awesome ) &lt;strong&gt;Shields.IO badges&lt;/strong&gt; to the &lt;strong&gt;PowerPlatform&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Using badges in Model-driven or Canvas Apps forms is a great way to provide &lt;strong&gt;concise&lt;/strong&gt;, &lt;strong&gt;actionable&lt;/strong&gt; and &lt;strong&gt;visually appealing&lt;/strong&gt; controls to end users.&lt;/p&gt;</description></item><item><title>Related Record Filtering with the Lookup Dropdown PCF</title><link>https://itmustbecode.com/related-record-filtering-with-the-lookup-dropdown-pcf/</link><pubDate>Wed, 09 Feb 2022 02:37:48 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/related-record-filtering-with-the-lookup-dropdown-pcf/</guid><description>&lt;p&gt;In the latest release of the &lt;strong&gt;LookupDropdown PCF&lt;/strong&gt; control for Dataverse, I have added a new feature that adds support for &lt;strong&gt;related record filtering&lt;/strong&gt;, hence the ability to filter the values of a dropdown in real-time based on the value of another lookup field. When rendered, this can produce nice cascading effect as seen below.&lt;/p&gt;
&lt;figure&gt;&lt;img src="./image-8.png"loading="lazy"&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src="./image-9.png"loading="lazy"&gt;&lt;/figure&gt;
&lt;p&gt;In this post I will show how to configure the PCF control for this scenario and dissert on what&amp;rsquo;s happening under the hood to make the magic happen.&lt;/p&gt;</description></item><item><title>Azure Key Vault Secrets in Dataverse</title><link>https://itmustbecode.com/azure-key-vault-secrets-in-dataverse/</link><pubDate>Tue, 25 Jan 2022 05:21:28 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/azure-key-vault-secrets-in-dataverse/</guid><description>&lt;p&gt;&lt;strong&gt;Environment variables&lt;/strong&gt; in Dataverse are a powerful vehicule to develop portable customizations between different environment. Recently, a new &lt;strong&gt;Secret&lt;/strong&gt; Data Type was introduced that enables the use of secrets stored in &lt;strong&gt;Azure Key Vaults&lt;/strong&gt; 🔐 .&lt;/p&gt;
&lt;p&gt;The integration between &lt;strong&gt;Dataverse&lt;/strong&gt; and &lt;strong&gt;Azure Key Vault&lt;/strong&gt; was long-awaited and I am really happy to see it materialize. It brings new kind of use cases and an &lt;strong&gt;additional security layer&lt;/strong&gt; to protect sensitive information needed in platform customizations.&lt;/p&gt;</description></item><item><title>Better UX with a Lookup Dropdown PCF Control</title><link>https://itmustbecode.com/better-ux-with-a-lookup-dropdown-pcf-control/</link><pubDate>Thu, 06 Jan 2022 02:35:50 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/better-ux-with-a-lookup-dropdown-pcf-control/</guid><description>&lt;p&gt;One of the most anticipated feature of the &lt;strong&gt;PowerApps Control Framework&lt;/strong&gt; (PCF) last year was the &lt;strong&gt;Lookup datatype support&lt;/strong&gt;. Hence the ability to bind a PCF control to a &lt;strong&gt;Lookup&lt;/strong&gt; field in a Dataverse Model-Driven form to customize it&amp;rsquo;s behavior.&lt;/p&gt;
&lt;p&gt;The feature was released last summer (&lt;a class="link" href="https://powerapps.microsoft.com/en-us/blog/announcing-the-general-availability-of-the-power-apps-component-framework-for-canvas-apps/" target="_blank" rel="noopener"
&gt;see official post&lt;/a&gt;) and the first idea that came to my mind was to create a PCF control that renders a lookup field as a &lt;strong&gt;dropdown&lt;/strong&gt; list instead of the of the out-of-the-box lookup selector.&lt;/p&gt;</description></item><item><title>PCF Controls - Useful Webpack Plugins</title><link>https://itmustbecode.com/pcf-controls-useful-webpack-plugins/</link><pubDate>Tue, 16 Nov 2021 04:58:31 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/pcf-controls-useful-webpack-plugins/</guid><description>&lt;p&gt;In my last post I explained how to enable &lt;strong&gt;custom webpack configurations&lt;/strong&gt; in a &lt;strong&gt;PowerApps Control Framework&lt;/strong&gt; project. I also showed how to generate the &lt;strong&gt;source-map&lt;/strong&gt; file of the generated PCF bundle.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a class="link" href="https://itmustbecode.com/pcf-controls-custom-webpack-configurations/" &gt;PCF controls – Custom Webpack configurations&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;To continue on this track and push things a little further, I want to explore how to enhance the PCF development experience with the use of &lt;strong&gt;webpack plugins&lt;/strong&gt; that can be referenced in the custom configuration file.&lt;/p&gt;</description></item><item><title>PCF controls - Custom Webpack configurations</title><link>https://itmustbecode.com/pcf-controls-custom-webpack-configurations/</link><pubDate>Wed, 20 Oct 2021 02:06:29 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/pcf-controls-custom-webpack-configurations/</guid><description>&lt;p&gt;When developing Power Platform PCF controls, at build-time, &lt;strong&gt;&lt;a class="link" href="https://webpack.js.org/" target="_blank" rel="noopener"
&gt;Webpack&lt;/a&gt;&lt;/strong&gt; is invoked to &lt;strong&gt;bundle&lt;/strong&gt; the code and dependencies into deployable assets.&lt;/p&gt;
&lt;p&gt;While the &lt;strong&gt;out-of-the-box&lt;/strong&gt; configurations are suitable for most of the basic PCF control needs, sometimes, you need to throw &lt;strong&gt;your own custom&lt;/strong&gt; instructions in the game. This is what we are going to cover in this post.&lt;/p&gt;
&lt;h3 id="webpack-and-pcf"&gt;&lt;strong&gt;Webpack and PCF&lt;/strong&gt;
&lt;/h3&gt;&lt;p&gt;I will not spend too much time on the fundamentals of Webpack, there are tons of great blog post that deep-dives on the matter. But I think its important to understand what Webpack is and how it works in PCF control development.&lt;/p&gt;</description></item><item><title>Embed Images in Model-Driven In-App Notifications</title><link>https://itmustbecode.com/embed-images-in-model-driven-in-app-notifications/</link><pubDate>Thu, 23 Sep 2021 03:38:29 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/embed-images-in-model-driven-in-app-notifications/</guid><description>&lt;p&gt;&lt;strong&gt;In-App notifications&lt;/strong&gt; for Model-Driven apps ( &lt;em&gt;still in preview at the time of writing&lt;/em&gt;) exposes a central &lt;strong&gt;notification hub&lt;/strong&gt; in Power Platform model-driven apps and the &lt;strong&gt;notifications&lt;/strong&gt; model provides a fantastic vehicle to deliver &lt;strong&gt;contextual&lt;/strong&gt; and &lt;strong&gt;user-specific&lt;/strong&gt; information.&lt;/p&gt;
&lt;figure&gt;&lt;img src="./image-8.png"loading="lazy"&gt;&lt;/figure&gt;
&lt;p&gt;In this blog post, I will continue my exploration of &lt;strong&gt;In-App notifications&lt;/strong&gt; and show how we can spice things up a little bit and create &lt;strong&gt;visually rich&lt;/strong&gt; and &lt;strong&gt;appealing&lt;/strong&gt; 💎 notifications by embedding &lt;strong&gt;images&lt;/strong&gt; inside the content.&lt;/p&gt;</description></item><item><title>Send Model-Driven In-App Notifications with Power Automate</title><link>https://itmustbecode.com/send-model-driven-in-app-notifications-with-power-automate/</link><pubDate>Fri, 03 Sep 2021 17:15:43 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/send-model-driven-in-app-notifications-with-power-automate/</guid><description>&lt;p&gt;I &lt;strong&gt;n-App notifications&lt;/strong&gt; for PowerPlatform Model-Driven apps are now &lt;a class="link" href="https://powerapps.microsoft.com/en-us/blog/announcing-public-preview-for-in-app-notifications-for-model-driven-apps/" target="_blank" rel="noopener"
&gt;available in preview&lt;/a&gt;. The feature provides a central &lt;strong&gt;notification hub&lt;/strong&gt; in the app and the notifications provides a fantastic vehicle to deliver &lt;strong&gt;contextual&lt;/strong&gt; and &lt;strong&gt;user-specific&lt;/strong&gt; information to end users.&lt;/p&gt;
&lt;p&gt;While my last post showed how to &lt;strong&gt;&lt;a class="link" href="https://itmustbecode.com/enable-model-driven-in-app-notifications-with-power-automate/" &gt;enable notifications&lt;/a&gt;&lt;/strong&gt; in model-driven apps, let&amp;rsquo;s see what the &lt;strong&gt;real deal&lt;/strong&gt; is and start creating simple notifications.&lt;/p&gt;
&lt;p&gt;As a use case, we will create a &lt;strong&gt;Power Automate&lt;/strong&gt; flow that will notify users whenever a new article is posted on the official PowerApps blog (&lt;a class="link" href="https://powerapps.microsoft.com/en-us/blog" target="_blank" rel="noopener"
&gt;https://powerapps.microsoft.com/en-us/blog&lt;/a&gt;). Something like this.&lt;/p&gt;</description></item><item><title>Enable Model-Driven In-App Notifications with Power Automate</title><link>https://itmustbecode.com/enable-model-driven-in-app-notifications-with-power-automate/</link><pubDate>Sun, 29 Aug 2021 20:45:22 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/enable-model-driven-in-app-notifications-with-power-automate/</guid><description>&lt;p&gt;&lt;strong&gt;In-App notifications&lt;/strong&gt; for PowerPlatform model-driven apps has been released in public preview ( &lt;em&gt;see official Microsoft blog post below&lt;/em&gt;). I am particularly excited about this new feature as it opens up very interesting scenarios that can have a significant impact on the user experience.&lt;/p&gt;
&lt;p&gt;&lt;figure&gt;&lt;img src="https://docs.microsoft.com/en-us/powerapps/developer/model-driven-apps/media/app-notification-with-single-action.png" alt="App notification with single action"loading="lazy"&gt;&lt;figcaption&gt;App notification with single action&lt;/figcaption&gt;&lt;/figure&gt;
&lt;a class="link-card" href="https://powerapps.microsoft.com/en-us/blog/announcing-public-preview-for-in-app-notifications-for-model-driven-apps/" target="_blank" rel="nofollow noopener"&gt;
&lt;img class="link-card__image" src="https://powerapps.microsoft.com/images/shared/social/social-share-post-ignite.png" alt="" loading="lazy"&gt;
&lt;span class="link-card__content"&gt;
&lt;strong class="link-card__title"&gt;Announcing public preview for in-app notifications in model-driven apps&lt;/strong&gt;
&lt;span class="link-card__summary"&gt;With this public preview, notifications can be send to users within the model-driven app and are displayed using a notification center and notification toasts.&lt;/span&gt;
&lt;span class="link-card__domain"&gt;powerapps.microsoft.com&lt;/span&gt;
&lt;/span&gt;
&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Catalog Manager for XrmToolBox</title><link>https://itmustbecode.com/catalog-manager-for-xrmtoolbox/</link><pubDate>Wed, 23 Jun 2021 14:52:36 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/catalog-manager-for-xrmtoolbox/</guid><description>&lt;p&gt;&lt;strong&gt;Business Events&lt;/strong&gt; ( &lt;em&gt;still in preview at the time of writing&lt;/em&gt;) are opening up new paradigms for event-driven patterns in the Dataverse. (👉see Microsoft &lt;a class="link" href="https://docs.microsoft.com/en-us/powerapps/developer/data-platform/business-events?WT.mc_id=DX-MVP-5004959" target="_blank" rel="noopener"
&gt;press release&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Essentially, They rely on 2 new tables &lt;strong&gt;Catalog&lt;/strong&gt; and &lt;strong&gt;Catalog Assignment&lt;/strong&gt; that are surfaced in the Solution explorer.&lt;/p&gt;
&lt;figure&gt;&lt;img src="./image-5.png"loading="lazy"&gt;&lt;/figure&gt;
&lt;p&gt;However, the authoring capabilities are &lt;strong&gt;limited&lt;/strong&gt; for the moment and it&amp;rsquo;s hard to have a high level view of the Catalogs in your environment. Hence the idea behind the &lt;strong&gt;Catalog Manager&lt;/strong&gt; tool for XrmToolBox.&lt;/p&gt;</description></item><item><title>Dataverse Custom API: Enabled For Workflow</title><link>https://itmustbecode.com/dataverse-custom-api-enabled-for-workflow/</link><pubDate>Tue, 25 May 2021 11:56:49 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/dataverse-custom-api-enabled-for-workflow/</guid><description>&lt;p&gt;If you are developing &lt;strong&gt;Dataverse Custom APIs&lt;/strong&gt;, you might have noticed that a new column (field) called &amp;rsquo; &lt;strong&gt;Enabled For Workflow&lt;/strong&gt;&amp;rsquo; recently showed up in the Custom API form. In this post, we will try to make sense of this new feature, understand its &lt;strong&gt;impact&lt;/strong&gt; on the Custom API extension model, and show how to use workflow-enabled APIs.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;At the time of writing the feature is not yet &amp;rsquo; &lt;em&gt;officially&lt;/em&gt;&amp;rsquo; documented, I will update the post and put the link here when available&lt;/p&gt;</description></item><item><title>Dataverse Custom API: Function (GET) vs Action (POST)</title><link>https://itmustbecode.com/dataverse-custom-api-function-get-vs-action-post/</link><pubDate>Thu, 25 Mar 2021 21:45:30 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/dataverse-custom-api-function-get-vs-action-post/</guid><description>&lt;p&gt;The new &lt;strong&gt;Dataverse Custom API&lt;/strong&gt; feature ( &lt;em&gt;now in General Availability&lt;/em&gt; 🚀) empowers developers with the ability to create their own &lt;strong&gt;custom messages&lt;/strong&gt; to extends the capabilities of the &lt;strong&gt;Power Platform.&lt;/strong&gt; These custom messages are then exposed by the Dataverse endpoints (WebApi and Organizationservice) like other out-of-the-box messages (Create, Update, etc..).&lt;/p&gt;
&lt;p&gt;While the &lt;strong&gt;Custom API model&lt;/strong&gt; shares a lot of similarities with the traditional &lt;strong&gt;Custom Action model&lt;/strong&gt; that is available since Dynamics 2013, it also exposes a bunch of &lt;strong&gt;unique features&lt;/strong&gt; that are worth taking a look at.&lt;/p&gt;</description></item><item><title>Dataverse Custom API: Keep It Private</title><link>https://itmustbecode.com/dataverse-custom-api-keep-it-private/</link><pubDate>Mon, 25 Jan 2021 02:40:22 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/dataverse-custom-api-keep-it-private/</guid><description>&lt;p&gt;Pursuing my series of blog posts on Dataverse Custom API features, this one will be &lt;em&gt;&amp;lsquo;short and sweet&amp;rsquo;&lt;/em&gt; and explores the usage of the &lt;strong&gt;IsPrivate&lt;/strong&gt; attribute that can be found on the Custom API Table.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The ability to set an API as a Private message is a unique feature of the Custom API model and does not exist for classic Workflow Custom Actions.&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;🚨The &lt;strong&gt;IsPrivate&lt;/strong&gt; Attribute is (currently) &lt;strong&gt;not available/editable&lt;/strong&gt; using the out-of-the-box Custom API authoring experience (Model-Driven form). That&amp;rsquo;s a &lt;strong&gt;very good reason&lt;/strong&gt; to try my &lt;strong&gt;&lt;a class="link" href="https://itmustbecode.com/customapi-manager-for-xrmtoolbox/" &gt;Custom API manager&lt;/a&gt;&lt;/strong&gt; tool for XrmToolBox where the attribute can be set easily. 😏&lt;/p&gt;</description></item><item><title>Dataverse Custom API: AllowCustomProcessing Explained</title><link>https://itmustbecode.com/dataverse-custom-api-allowcustomprocessing-explained/</link><pubDate>Mon, 11 Jan 2021 12:58:32 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/dataverse-custom-api-allowcustomprocessing-explained/</guid><description>&lt;p&gt;This is the first article in a series of posts aimed at showing the &lt;strong&gt;main differences&lt;/strong&gt; between &lt;strong&gt;Dataverse Custom API&lt;/strong&gt; s and the more traditional &lt;strong&gt;Workflow Custom Actions&lt;/strong&gt;. This article will focus on the &lt;strong&gt;AllowedCustomProcessingStep&lt;/strong&gt; attribute of Custom APIs.&lt;/p&gt;
&lt;h2 id="custom-api-vs-custom-action"&gt;Custom API vs Custom Action
&lt;/h2&gt;&lt;p&gt;Dataverse &lt;strong&gt;Custom APIs&lt;/strong&gt; and Workflow &lt;strong&gt;Custom Action&lt;/strong&gt; share common ground. The 2 models will expose &lt;strong&gt;custom Messages&lt;/strong&gt; that can be called by the &lt;strong&gt;Dataverse WebApi&lt;/strong&gt; like other Out-of-the-Box Messages of the Platform (ex. Create, Update). The differences are found in the underlying implementation of each model.&lt;/p&gt;</description></item><item><title>Custom API Manager for XrmToolBox</title><link>https://itmustbecode.com/customapi-manager-for-xrmtoolbox/</link><pubDate>Mon, 04 Jan 2021 02:46:01 +0000</pubDate><guid isPermaLink="false">https://itmustbecode.com/customapi-manager-for-xrmtoolbox/</guid><description>&lt;p&gt;Like most Power Platform developers, I am a heavy user of the &lt;a class="link" href="https://www.xrmtoolbox.com/" target="_blank" rel="noopener"
&gt;&lt;strong&gt;XrmToolBox&lt;/strong&gt;&lt;/a&gt; a community project led by &lt;strong&gt;&lt;a class="link" href="https://mvp.microsoft.com/en-us/PublicProfile/4028956" target="_blank" rel="noopener"
&gt;Tanguy Touzard&lt;/a&gt;&lt;/strong&gt;. The myriad of tools it surfaces just makes my day to day job a lot less painful. I also &lt;strong&gt;secretly&lt;/strong&gt; been wanting to write a tool of my own to contribute to this amazing project for a long time.&lt;/p&gt;
&lt;h2 id="the-wait-is-over-"&gt;&lt;strong&gt;The wait is over&lt;/strong&gt; 🎉
&lt;/h2&gt;&lt;p&gt;Today, I&amp;rsquo;m proud to release my first tool called &lt;strong&gt;&lt;a class="link" href="https://www.xrmtoolbox.com/plugins/XTB.CustomApiManager/" target="_blank" rel="noopener"
&gt;Custom API Manager&lt;/a&gt;&lt;/strong&gt;, and I really think that it will fill a gap in the current Custom API authoring experience.&lt;/p&gt;</description></item></channel></rss>