<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Tomas Pivny</title>
    <link>https://www.tompivny.com/</link>
    <description>Recent content on Tomas Pivny</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Mon, 06 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.tompivny.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Working with Dataverse business event catalogs</title>
      <link>https://www.tompivny.com/posts/working-with-dataverse-business-events-catalogs/</link>
      <pubDate>Mon, 06 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://www.tompivny.com/posts/working-with-dataverse-business-events-catalogs/</guid>
      <description>&lt;p&gt;When you are creating a Power Automate flow with the Dataverse trigger &amp;ldquo;When an action is performed&amp;rdquo;, you are being asked to select a Catalog and a Category. Personally, I had no idea what they meant, so I just selected &amp;ldquo;ALL&amp;rdquo; which then allowed me to select my Custom API message. Finally I decided to dig deeper to find out more about what those Catalogs and Categories actually are.&lt;/p&gt;&#xA;&lt;p&gt;Microsoft covers this topic to a solid degree in these two KB articles so I recommend going through them before continuing:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Modernized Business Units: How does cross-hierarchy &#34;Parent: Child Business Unit&#34; access work?</title>
      <link>https://www.tompivny.com/posts/modernized-business-units-how-does-cross-hierarchy-parent-child-business-unit-access-work/</link>
      <pubDate>Sat, 21 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://www.tompivny.com/posts/modernized-business-units-how-does-cross-hierarchy-parent-child-business-unit-access-work/</guid>
      <description>&lt;p&gt;When dealing with advanced security requirements, &lt;a href=&#34;https://learn.microsoft.com/en-us/power-platform/admin/modernized-business-units-security&#34;&gt;Modernized Business Units&lt;/a&gt; are the go-to feature to use to utilize implicit access across Dataverse records. Essentially, by turning on this &lt;a href=&#34;https://learn.microsoft.com/en-us/power-platform/admin/wp-security-cds#enable-the-matrix-data-access-structure&#34;&gt;environment switch&lt;/a&gt;, you are enabling two things:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Dataverse tables with User or Team ownership type also have an &lt;code&gt;owningbusinessunit&lt;/code&gt; reference. Without using Modernized Business Units, this reference is always set to the record owner&amp;rsquo;s (user or team) business unit that he belongs to and it cannot be modified. Modernized Business Units allow changing this reference independently of the current record owner.&lt;/li&gt;&#xA;&lt;li&gt;Every business unit in Dataverse will get its own set of Dataverse &lt;a href=&#34;https://learn.microsoft.com/en-us/power-platform/admin/security-roles-privileges#security-roles-for-users&#34;&gt;security roles&lt;/a&gt;. In practice, when you enable this feature in an environment, for every existing business unit, Dataverse will generate its own security role to be used in the context of the business unit. Creating a new security role will also create the role for each existing business unit. Creating a new business unit will trigger generation of a new set of security roles.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Find out more about Modernized Business Units on MS Learn&lt;/p&gt;</description>
    </item>
    <item>
      <title>Async Dataverse Custom APIs execution</title>
      <link>https://www.tompivny.com/posts/async-dataverse-custom-apis-execution/</link>
      <pubDate>Wed, 31 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://www.tompivny.com/posts/async-dataverse-custom-apis-execution/</guid>
      <description>&lt;p&gt;Custom APIs in Dataverse have been available for a while now, serving as a great pro-code alternative to &lt;a href=&#34;https://learn.microsoft.com/en-us/power-apps/developer/data-platform/workflow-custom-actions&#34;&gt;custom actions&lt;/a&gt;. However, they are synchronous by design; calling the custom message exposed by the API executes the plugin logic as a main operation in the &lt;a href=&#34;https://carldesouza.com/dynamics-365-plugin-execution-pipeline/&#34;&gt;execution pipeline&lt;/a&gt;. There are scenarios where you may not want to wait for the plugin to complete. I have found two viable solutions to achieve this.&lt;/p&gt;&#xA;&lt;h1 id=&#34;background-operations&#34;&gt;Background Operations&lt;/h1&gt;&#xA;&lt;p&gt;Microsoft introduced &lt;a href=&#34;https://learn.microsoft.com/en-us/power-apps/developer/data-platform/background-operations?tabs=sdk&#34;&gt;Background operations&lt;/a&gt; back in 2023. To this day, they remain in (public) preview. They offer several nice features out of the box that:&lt;/p&gt;</description>
    </item>
    <item>
      <title>The &#34;Source of Truth&#34; Problem of Dataverse Security Assignments</title>
      <link>https://www.tompivny.com/posts/the-source-of-truth-problem-of-dataverse-security-assignments/</link>
      <pubDate>Sun, 07 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://www.tompivny.com/posts/the-source-of-truth-problem-of-dataverse-security-assignments/</guid>
      <description>&lt;p&gt;In the world of Power Platform ALM, we have largely solved the problem of moving logic and structure. We pack tables, flows, and other components into Solutions, commit them to git, and deploy them via pipelines (at least in my scenario). But there is a glaring gap in this automated chain: Security Assignments.&lt;/p&gt;&#xA;&lt;p&gt;While the Security Roles themselves travel inside Solutions as root components, the assignments of those roles to Dataverse Teams do not, as they are just data. The same applies to Column Security Profiles.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Multi Select Option Set PCFs and Client Scripts</title>
      <link>https://www.tompivny.com/posts/multi-select-option-set-pcfs-and-client-scripts/</link>
      <pubDate>Sun, 02 Feb 2025 00:00:00 +0000</pubDate>
      <guid>https://www.tompivny.com/posts/multi-select-option-set-pcfs-and-client-scripts/</guid>
      <description>&lt;p&gt;Recently, I&amp;rsquo;ve been finally diving into &lt;a href=&#34;https://learn.microsoft.com/en-us/power-apps/developer/component-framework/overview&#34;&gt;PCF (Power Apps Component Framework)&lt;/a&gt; development. One of the first controls I&amp;rsquo;ve built was a &lt;a href=&#34;https://learn.microsoft.com/en-us/power-apps/developer/component-framework/react-controls-platform-libraries&#34;&gt;React&lt;/a&gt; checkbox control with tooltips for a multi select option set as I wanted to have a replacement for the ugly combo box that Microsoft provides us as the only default option for this type of attribute.&lt;/p&gt;&#xA;&lt;p&gt;To my surprise, pairing the custom control with client scripts triggered by events on a form was not as straightforward as I expected. Let me share with you my findings.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Automating Power BI Report Distribution for SMEs: A Cost-Efficient Pattern</title>
      <link>https://www.tompivny.com/posts/automating-power-bi-report-distribution-for-smes-a-cost-efficient-pattern/</link>
      <pubDate>Mon, 11 Nov 2024 00:00:00 +0000</pubDate>
      <guid>https://www.tompivny.com/posts/automating-power-bi-report-distribution-for-smes-a-cost-efficient-pattern/</guid>
      <description>&lt;p&gt;For SME customers, Power BI licensing costs can be a significant barrier when distributing reports to stakeholders who don&amp;rsquo;t have licenses or the dedicated Premium / Fabric capacity. I previously worked with a customer who needed a highly cost-effective solution for sharing Power BI reports. We developed an automated system that efficiently distributes Power BI reports as static PDFs while minimizing licensing expenses.&lt;/p&gt;&#xA;&lt;p&gt;In this post, I want to share the solution as a pattern, as it might be useful for others to solve a similar problem.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
