M365 Show Podcast

Fusion Development with Power Apps and Azure Functions


Listen Later

You know those times when Power Apps just… hit a wall? Maybe a workflow stumbles, or Dataverse can’t quite crunch it. What if I told you there’s a way to break through with almost unlimited processing power—without leaving the Microsoft ecosystem? Today, we’re unpacking how Azure Functions and Power Apps can work together so your apps are never boxed in by low-code limits.Stick around, because we’re not just patching cracks; we’re building a system where every part does what it does best—securely and at scale.Why Fusion? What Power Apps and Azure Functions Each Bring to the TableIf you’ve ever found yourself hitting the upper limits of what Power Apps can handle, you’re not alone. Anyone who’s put together even a modest business app in Power Apps has noticed there’s a ceiling. You can build forms, automate simple workflows, drop in a gallery, maybe connect a few lists or tables in Dataverse, and for many departments, that’s the magic—apps without a developer in sight. But run into anything more demanding, and you’ll see where things unravel. For instance, you want to run a calculation using a custom algorithm built by your analytics team. Power Apps isn’t designed for that sort of heavy lifting. Try to work around it, and you’re suddenly stuck staring at delegation warnings, capped data set queries, or screens that crawl when someone tries to crunch numbers across thousands of records.Things only get more interesting once you venture outside the Microsoft 365 ecosystem. Maybe marketing wants to pull in risk scores from a non-Microsoft API or legal needs to validate data against an external government service. Power Apps, left alone, just isn’t set up for these leaps. Out-of-the-box connectors can take you part of the way, but sooner or later you need something more direct. That’s right about when the suggestion hits: “Why not use Azure Functions?”On the surface, Azure Functions sounds like cheating the system—a way to slip in C# or JavaScript and suddenly let your Power Apps do things Microsoft never planned for. Need to check inventory in a legacy ERP? No need to build an entire back-end. Just have Power Apps call a custom function, get back what you need, and move on. The biggest appeal is you don’t need to overhaul your solution; Azure Functions bolt onto your existing app, letting you layer in power as your requirements evolve. The integration isn’t perfect—but it means you don’t need to throw out weeks of low-code work just because you need a bit of real coding under the hood.Of course, it's worth asking: does this always make sense? Not everyone buys into the Azure Functions hype. Some architects will tell you that the second you start peppering Azure Functions into a low-code project, you’re probably just hiding complexity instead of managing it. Every new function is another endpoint to secure, another piece to document, and another spot where something can break. There are plenty in the Power Platform community who’ll point out cases where adding functions only made support harder, not easier. But then talk to anyone who’s tried scaling a business-critical Power App and they’ll tell you—Frankly, you don’t have a choice. If the CFO is waiting for dashboards that need live calculations from half a million records, you won’t get there with Power Apps alone. The trick is deciding where “just enough” ends and “overkill” begins.Let’s look at something tangible—a loan approval platform, for example. Picture this: your business has a proprietary risk scoring process that’s been tweaked for years by the analytics team. There’s confidential math, there are data pulls from three sources, and the result needs to be calculated instantly, every single time someone submits an application. Power Apps can’t handle that in a single flow or formula. So, you build a slim interface in Power Apps, where users key in application data. That data instantly shoots off to an Azure Function, where the heavy logic runs server-side. Finished result comes back, gets displayed, and everyone’s happy. You’ve kept the front end simple, shielded the secret sauce, and your users see results right away.Under all this, Dataverse is humming along—organizing records, tracking changes, keeping audit trails. Dataverse excels at making sure your data is reliable, current, and accessible. What it can’t do, though, is host resource-hungry computations or orchestrate sequence logic that spans cloud and on-premises apps. That’s another natural handoff point to Azure Functions. So if you’re sitting on databases that need shape-shifting queries, or you want to transform data on the fly, the line gets clear: Power Apps for interface and light workflow, Dataverse for structure, Azure Functions for magic tricks.But here’s a twist. Sometimes people toss Azure Functions at every tough problem and end up with a spaghetti mess of services and endpoints. It feels powerful—until you have to debug why a calculation took ten seconds longer today, or audit who changed what. Teams wind up with multiple functions overlapping or running out of sync, and soon nobody wants to touch the thing. So, the real challenge is judgment. Is this a gap that only custom code can fill, or are you just piling on extra layers?If you pick your spots carefully, you get what every Power Apps project wants: a friendly user experience with fast screens and clear logic—and a back end that doesn’t gasp for air at the first sign of complexity. You walk the line between speed and custom power. It’s all about understanding what each tool can and should handle. When used with a purpose, Power Apps and Azure Functions together actually save time—traction for the citizen developer, muscle for the power user, and structure for IT.That loan app, inventory system, or custom pricing engine? They become approachable and user-friendly without losing their teeth. But all this power only works if those parts really talk to each other—securely, reliably, and at the right moments. So let’s get into what actually happens when you wire these components together and what you have to watch out for, especially as data starts moving behind the scenes.How the Pieces Connect: Data Flow and Secure CommunicationHere’s where things start to get a little more real-world than Microsoft’s marketing slides ever show you. Picture this: Power Apps is humming along upfront, handing out forms and dashboards, with Dataverse doing the grunt work in the background, filing all your business data into neat rows. But once Azure Functions get involved, suddenly you’ve got sensitive info bouncing back and forth between moving parts that weren’t all designed to trust each other by default. This is where the magic—or the mess—happens.A lot of folks think, “I’ll just drop the Azure Function URL into Power Apps, set up a quick HTTP call, and boom, instant power-up.” The more you work with this stuff, though, the more you realize nothing is truly turnkey—especially when security is on the line. One wrong click, one lazy shortcut on an endpoint, and you’ve left the vault door propped wide open. Stories float around the Power Platform community where someone thought a hardcoded API key would get them across the finish line, only to find out it gave every curious app in the tenant access they never should’ve had. Quite a few of those stories end with a data breach, or at the very least, an emergency teardown when security comes sniffing.Power Apps tries to make most connections safe and simple using out-of-the-box connectors. These are great for Dataverse, SharePoint, and the other usual suspects. But as soon as you step into the world of custom APIs—especially when you’re running Azure Functions—you’re on your own for setup. Azure Functions, by default, don’t care who calls them. That’s both their power and their flaw. Nothing is stopping someone from pointing Postman at your function endpoint and firing off a payload unless you layer on proper authentication. Now, you have to manage tokens, define what data can come in and out, and keep your endpoints locked down.Let’s ground this in something practical. Imagine your Power App collects a customer number, then triggers an Azure Function that fetches data from a legacy ERP system—maybe invoices, order histories, or approval statuses the Power Apps ecosystem simply can’t see directly. If that handoff isn’t carefully managed, anyone with the endpoint can pull sensitive records. And let’s be honest: there are IT departments still out there passing static API keys between systems. It may work, but the dangers are clear. If that key leaks, either through an overlooked GitHub repo or just sloppy code, it could be reused outside your network, and no audit trail’s coming to save you.Security experts have a favorite solution—managed identities and OAuth flows. Managed identities let Azure Functions do what only they should do, based on permissions assigned in Azure Active Directory, with automatic token rotation and no static keys hanging around. OAuth adds another layer, letting users (or applications) prove they’re allowed to call your services. On paper, it’s clean. In real life, setting up OAuth between Power Apps and a custom Azure Function isn’t always documented clearly, and even seasoned architects have to triple-check which permissions are needed and how those tokens are handled. You end up flipping between Azure portal tabs, stacking permission groups, and testing different endpoint responses just to get a single call through. It’s not glamorous, but it’s where the game is won or lost.Even with all the right patterns, every point where a Power App or Azure Function touches Dataverse, and especially any place data jumps across systems, matters. Each one is an invitation for something to go sideways, whether it’s an expired token, a malformed payload, or an attacker sniffing for gaps. What people miss is that error handling starts with these boundaries—if your app expects clean data and a

Become a supporter of this podcast: https://www.spreaker.com/podcast/m365-show-podcast--6704921/support.
...more
View all episodesView all episodes
Download on the App Store

M365 Show PodcastBy Mirko