<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Power Platform on Chris Worth</title><link>https://chrisworth.dev/skill-tag/power-platform/</link><description>Recent content in Power Platform on Chris Worth</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Wed, 10 Dec 2025 16:57:31 -0600</lastBuildDate><atom:link href="https://chrisworth.dev/skill-tag/power-platform/index.xml" rel="self" type="application/rss+xml"/><item><title>Implementing Power Platform ALM with CLI Solution Export and Unpacking</title><link>https://chrisworth.dev/posts/power-platform-cli-alm-solution-extraction/</link><pubDate>Wed, 10 Dec 2025 16:57:31 -0600</pubDate><guid>https://chrisworth.dev/posts/power-platform-cli-alm-solution-extraction/</guid><description>&lt;p>Manual Power Platform deployments create unnecessary risk. Exporting solutions through the UI produces opaque .zip files with no visibility into what changed. Canvas apps remain binary .msapp files that source control can&amp;rsquo;t diff. Teams work blind, with no code review process and no way to track who changed what or why.&lt;/p>
&lt;p>The Power Platform CLI solves this by extracting solutions and canvas apps into source-controllable files. Once unpacked, you can version components in Git, review changes in pull requests, and automate deployments through CI/CD pipelines. The workflow transforms Power Platform development from manual exports to proper application lifecycle management.&lt;/p></description></item><item><title>Mastering Variables in Power Apps: Context, Global, and Named Formulas</title><link>https://chrisworth.dev/posts/power-apps-variables-mastery-guide/</link><pubDate>Mon, 07 Apr 2025 19:23:16 -0600</pubDate><guid>https://chrisworth.dev/posts/power-apps-variables-mastery-guide/</guid><description>&lt;p>An order form app I built once stored the entire cart in a single global variable. Every screen shared it, so every screen re-rendered on every change, and the app slowed to a crawl on mobile as the order grew. Moving cart state to context variables scoped per screen, plus a collection for the final order items, fixed it. The wrong scope, not the wrong logic, is usually what&amp;rsquo;s actually killing performance.&lt;/p></description></item><item><title>Why You Should Be Using Solutions in Power Platform</title><link>https://chrisworth.dev/posts/power-platform-solutions-guide-best-practices/</link><pubDate>Sat, 15 Mar 2025 09:00:00 -0600</pubDate><guid>https://chrisworth.dev/posts/power-platform-solutions-guide-best-practices/</guid><description>&lt;p>I spent a painful weekend manually recreating flows between environments, only to discover on Monday morning that I&amp;rsquo;d missed several critical dependencies. That experience taught me a harsh lesson: building Power Platform components without solutions is like building a house without blueprints. Eventually, you&amp;rsquo;ll pay the price when you need to move or rebuild anything.&lt;/p>
&lt;h2 id="the-true-cost-of-unstructured-development">The True Cost of Unstructured Development&lt;/h2>
&lt;p>Let&amp;rsquo;s be direct: if you&amp;rsquo;re building anything in Power Platform without solutions, you&amp;rsquo;re creating technical debt with every component. I learned this through painful experience:&lt;/p></description></item><item><title>Canvas Apps Offline: Using SaveData and LoadData When Connectivity Drops</title><link>https://chrisworth.dev/posts/power-apps-offline-capabilities-guide/</link><pubDate>Mon, 03 Mar 2025 10:00:00 -0600</pubDate><guid>https://chrisworth.dev/posts/power-apps-offline-capabilities-guide/</guid><description>&lt;p>Our field technicians were reverting to paper notes because their inspection app couldn&amp;rsquo;t retrieve equipment details in areas with no signal. After we added offline support with SaveData and LoadData, data entry errors dropped 70% and technicians got back nearly an hour a day they&amp;rsquo;d been losing to re-entering lost work. This article shows the same pattern: how to build a Canvas app that keeps working when the connection doesn&amp;rsquo;t, using the Power Apps functions &lt;strong>SaveData&lt;/strong> and &lt;strong>LoadData&lt;/strong>.&lt;/p></description></item><item><title>Power Platform Best Practices: Managing Connection References and Environment Variables</title><link>https://chrisworth.dev/posts/power-platform-connection-references-guide/</link><pubDate>Fri, 28 Feb 2025 00:00:00 -0600</pubDate><guid>https://chrisworth.dev/posts/power-platform-connection-references-guide/</guid><description>&lt;p>The first Power Platform solution I deployed from Development to Production failed immediately: every flow was still pointing at my Dev connections and Dev SharePoint URLs. That&amp;rsquo;s the exact failure mode connection references and environment variables exist to prevent, and it&amp;rsquo;s why managing them across environments isn&amp;rsquo;t a &lt;em>nice-to-have&lt;/em>. It&amp;rsquo;s essential.&lt;/p>
&lt;p>If you build solutions in Microsoft Power Platform across multiple environments (Dev, Test, Prod), you need a clear strategy for connection references and environment variables. Done right, it makes deployments smoother and maintenance easier. In this post, I&amp;rsquo;ll outline the best practices I&amp;rsquo;ve learned (often the hard way) to keep these components organized.&lt;/p></description></item><item><title>SharePoint Delegation in Canvas Apps: Mastering In-Out and Out-In Filtering Methods</title><link>https://chrisworth.dev/posts/sharepoint-list-delegation-power-apps-guide/</link><pubDate>Thu, 27 Feb 2025 14:30:00 -0600</pubDate><guid>https://chrisworth.dev/posts/sharepoint-list-delegation-power-apps-guide/</guid><description>&lt;p>The first time I hit this, my app was only searching the first 500 records of a 10,000-item SharePoint list. It missed the other 9,500 silently: no error, no warning the user would ever see, just wrong results. The cause was &lt;em>delegation&lt;/em>, and if you&amp;rsquo;ve built Canvas Apps against SharePoint lists you&amp;rsquo;ve likely already seen its warning icon (the blue underline or yellow triangle in the Power Apps studio) without knowing exactly what it was protecting you from.&lt;/p></description></item><item><title>Error Handling in Power Automate: A Comprehensive Guide</title><link>https://chrisworth.dev/posts/power-automate-error-handling-best-practices/</link><pubDate>Tue, 19 Nov 2024 19:15:55 -0600</pubDate><guid>https://chrisworth.dev/posts/power-automate-error-handling-best-practices/</guid><description>&lt;p>A mission-critical approval flow of ours failed silently during a major product launch: no error notifications, no logs, just dozens of unprocessed requests and stakeholders asking why nothing was moving. That&amp;rsquo;s the failure mode error handling exists to prevent, and it&amp;rsquo;s the difference between reliable automation and a career-limiting incident.&lt;/p>
&lt;p>Without error handling, flows terminate unexpectedly, leave processes in inconsistent states, and create cascading failures in dependent systems. I&amp;rsquo;ve seen simple flows without error handling cause major disruptions, while complex flows with proper error management gracefully handle unexpected situations. This is especially important when working with &lt;a href="https://chrisworth.dev/posts/power-automate-trigger-conditions-optimization/">Power Automate trigger conditions&lt;/a> and &lt;a href="https://chrisworth.dev/posts/power-platform-connection-references-guide/">connection references&lt;/a>.&lt;/p></description></item><item><title>Power Automate Trigger Conditions Guide: SharePoint Edition</title><link>https://chrisworth.dev/posts/power-automate-trigger-conditions-optimization/</link><pubDate>Mon, 18 Nov 2024 09:38:03 -0600</pubDate><guid>https://chrisworth.dev/posts/power-automate-trigger-conditions-optimization/</guid><description>&lt;p>If you&amp;rsquo;re building flows in Power Automate without trigger conditions, you&amp;rsquo;re wasting API calls and creating noise in your run history. I learned this after deploying a SharePoint approval flow that ran 47,000 times in a single week. 45,000 of those runs were completely unnecessary.&lt;/p>
&lt;p>Trigger conditions are expressions that determine whether your flow executes. When properly implemented, they can reduce flow runs by 90% or more. Here&amp;rsquo;s how to use them effectively with SharePoint.&lt;/p></description></item><item><title>Use OData Filtering in Power Automate Flows</title><link>https://chrisworth.dev/posts/power-automate-odata-filtering-performance-guide/</link><pubDate>Mon, 18 Nov 2024 09:22:44 -0600</pubDate><guid>https://chrisworth.dev/posts/power-automate-odata-filtering-performance-guide/</guid><description>&lt;p>Power Automate&amp;rsquo;s own &amp;ldquo;Get items&amp;rdquo; action nudges you toward the wrong pattern by default: pull the whole list, then filter it inside the flow. It looks harmless on a small list and hits throttling limits the moment a list has real volume behind it. OData filtering, applying the filter at the data source through the Filter Query field, fixes that at the root instead of working around it downstream.&lt;/p>
&lt;p>When I built our organization&amp;rsquo;s document approval system, retrieving thousands of items from SharePoint frequently caused timeouts and throttling errors. By implementing precise OData filters, we reduced processed items by 95% and eliminated those issues entirely. The &lt;a href="https://www.odata.org/">Open Data Protocol (OData)&lt;/a> queries and filters data directly at the source (whether SharePoint lists or Dataverse tables), improving performance and reducing what your flow processes.&lt;/p></description></item><item><title>Deep Linking in Power Apps Canvas Apps</title><link>https://chrisworth.dev/posts/power-apps-deep-linking-implementation-guide/</link><pubDate>Mon, 18 Nov 2024 08:32:39 -0600</pubDate><guid>https://chrisworth.dev/posts/power-apps-deep-linking-implementation-guide/</guid><description>&lt;p>We built QR codes that opened our equipment inspection app directly to a specific item&amp;rsquo;s details screen, cutting field technicians out of searching through hundreds of items. We used the same pattern for expense approvals: notification emails now link straight to the relevant approval screen, and approval time fell about 70% because managers stopped hunting for the right record. That&amp;rsquo;s what deep linking does: instead of routing users through multiple screens to reach one destination, a single link puts them there directly.&lt;/p></description></item></channel></rss>