Welcome back to Nevermore Technology’s grand ALM adventure. We’ve covered the what of ALM and how Nevermore uses a four-tier environment strategy to keep things civilised.
Now we’re cracking open the real magic of the Power Platform: Solutions.
They’re powerful. They’re necessary. And they’ll absolutely ruin your weekend if you don’t treat them right.
In Power Platform, a solution is a container for your apps, flows, tables, components, and (very often) your mistakes.
They’re the mechanism that lets you package up customisations, move them across environments, and apply updates in a structured way. Think of them as the zip file of your business logic—only with a lot more layers.
Solutions come in two forms:
At Nevermore, no one builds directly into the Default Solution unless they’re actively trying to get sacked.
Each team has their own dedicated unmanaged solution in the Dev environment. Once work is completed, the solution is exported as managed and pushed through the pipeline.
This does three important things:
Let’s get this straight:
Unmanaged | Managed | |
---|---|---|
Editable? | Yes | No (and that’s the point) |
For Dev? | Absolutely | No, unless you enjoy chaos |
For Prod? | Never, ever (seriously) | Yes, 100% |
Rollback? | Awkward | Structured (if you’ve done it right) |
When you install a managed solution, it sits on top of your environment like a tidy little layer of control. Until you try to uninstall it and realise there’s a sneaky dependency. But we’ll get to that in another blog.
For now, just remember: build unmanaged, deploy managed.
Every time you install a solution, update a component, or patch something “just quickly,” you’re adding another solution layer. These layers are stacked inside Dataverse, and they control how components behave at runtime.
The golden rule? Last one in wins. Unless it’s a form, in which case merge logic applies and your tabs may end up in Narnia.
[Placeholder for Image: Diagram of layering: System > Base Managed > Patch > Upgrade > Unmanaged]
That’s why Nevermore avoids using clone solutions or patch chains longer than your granny’s shopping list. Instead, they treat each release as a versioned, managed solution, with changes tracked in source control.
If a component gets too spicy, they create a clean new solution, repackage, and re-deploy. No Frankenstein layering allowed.
One of the best things Nevermore did was to adopt segmented solutions. That means splitting apps, flows, and data models into functional blocks—like:
SalesApp-Core
SalesApp-Flows
SalesApp-Reports
This means smaller, focused solutions that are easier to manage, test, and deploy.
More info here: Segmented Solutions
[Placeholder for Image: Screenshot of the “Add Existing” screen in Power Apps showing segmented selection]
If you’re still building in the Common Data Service Default Solution, stop what you’re doing, go outside, and have a word with yourself.
It’s tempting. It’s there. It works. And it will betray you the minute you try to export anything or run a pipeline.
Set a preferred solution, create a publisher with a proper prefix, and keep your components in something you control.
Nevermore’s publisher is nvrmr_
, which is far better than cr8a3_
, new_
, or the always charming zzz_
.
Solutions track dependencies between components. If App A relies on Table B, and Table B comes from another solution, then uninstalling Table B will throw a fit.
Nevermore’s golden rule: never delete a component without checking its dependencies first. Use the “Show Dependencies” option in Power Apps like it’s your best mate.
More on this when we dive into dependency hell in a future blog. Spoiler: it involves workflows, model-driven apps, and mild panic.
To wrap it up:
In Blog 4, we’ll walk through how Nevermore handles over 50 canvas apps—how they group them, test them, push updates, and avoid the dreaded “Who changed this?!” moment.
Spoiler: it’s not by using Excel and memory.