Migration

Move a Power Platform estate without discovering it in production.

The work is not the copying. It is knowing what has to travel together, and what is written inside each app that will not survive the journey.

The problem

The list is never what actually moves

A migration list is written by a person, from memory or a spreadsheet, and it is almost always a list of apps. None of the failures below shows up until somebody opens the app on the other side.

The app that calls a flow left behind

It arrives in the target with a broken button, and nobody notices until somebody presses it — usually the week after go-live, usually in front of the customer.

The app pulled out of its solution

Its siblings stay behind, and it arrives with connection references that rebind to nothing. Valid-looking, and wrong.

The hostname nobody searched for

A source-environment URL typed into a Launch() keeps pointing at where it came from — quietly, successfully, for months.

How a project runs

Seven stages, from your list to sign-off

Every stage rebuilds from the current assessment, so a plan opened in week six is a plan of the estate as it is in week six. Every screen on this page is the Contoso demo tenant — sample data, rendered through exactly the same code as a real assessment.

Building a migration selection across two environments, with the tools menu open
Start

Begin with the list you already have

Upload the apps you intend to move and the project builds itself around them. Matching is by app id and environment name, never by display name, because two environments routinely hold apps called the same thing and matching on the name quietly moves the wrong one.

  • Import a spreadsheet, or pick from the estate
  • Anything that could not be matched is listed rather than dropped
  • The plan rebuilds from the current assessment every time it opens
Environment drill-down showing an app selected, its flows, its connectors, and connectors reached only through a flow
Dependencies

Everything the selection quietly depends on

A migration list is written by a person, and it is almost always a list of apps. That is not what moves. Every connector the selection binds to, every connection behind it, and every flow an app calls — counted, and listed with what would break. Including the connectors an app never binds itself and only reaches through a flow.

  • Connectors ranked by how many objects bind to them, premium and custom marked
  • Custom connectors flagged: they must be rebuilt in the target first
  • Connections listed with the account each authenticates as
  • Flows each app calls, read from the app’s own data sources
Existing and missing solutions across every environment in a migration project
Solutions

One solution per thing that has to travel together

What is already packaged, what has to be built, and what needs adding to a solution that exists — counted in solutions rather than objects. Default and system solutions are excluded, because they already exist on the far side.

  • Proposals grouped so objects that must move together do
  • Filters for in a solution, create, and needs updating
  • A dry run reporting exactly what creating them would do, writing nothing
Search inside the apps dialog offering SharePoint references, hardcoded URLs, SQL servers, Power BI and object ids
Hidden references

Find what is hardcoded before it breaks

The admin APIs describe what an app is bound to. They say nothing about a SharePoint URL typed into a Patch(), or a source environment’s hostname in a Launch(). Those live in the app source — so every tool here reads the source, and every one of them exports.

  • Search app packages for SharePoint references, hardcoded URLs or any string
  • Find flow actions by kind, and the SQL server and database each step reaches
  • Power BI integrations: the connector, the data sources and the embedded tiles
  • Export any answer as Excel, CSV, the raw records or the untouched API payload
Tools menu on a migration plan offering to share all apps with the administrator and export users per app
Ownership

Take ownership of the whole plan at once

Apps owned by people who have left are the standard blocker on any migration, and you cannot add an app to a solution you cannot open. One action makes you a co-owner of every app in the plan, so they appear in your maker portal — rather than twenty-four trips to PowerShell.

  • Co-own every app in the plan from one labelled action
  • A users-per-app CSV: owner plus everyone it is shared with, by email
  • Each action reports exactly what it would do before it does it
Kanban board of a migration with apps in Awaiting, Ready in Dev, Pushed to UAT, Passed and Failed columns
Tracking

Know where every app has got to

A migration runs for weeks. Somebody sets up connections in dev on Monday, somebody else pushes to UAT on Thursday, and what everyone needs on Friday is a list of which apps are where. The stages are cumulative and ordered, so a progress figure cannot go backwards when somebody finishes something.

  • Awaiting, ready in dev, pushed to UAT, then passed, failed or blocked
  • Notes and tags on each card, so “blocked on IT” is attached to the app rather than said in a meeting
  • Failed UAT sits at the same depth as UAT — a failure is not progress
  • A running total across the project, counted cumulatively
A migration plan opened through a read-only share link, showing objects moving and progress by stage
Sign-off

Send the plan to the people who must agree it

A read-only link that opens the same plan through the same screens, with no account needed and no access to anything else. Email addresses and the accounts connections authenticate as are withheld.

  • An expiry date and a view count on the project
  • Revoke the link at any time
  • The same component as the live plan, so the two cannot drift
Sizing the work

Two screens that decide the estimate

Flows tab of a migration plan with trigger, connectors, actions and called-by columns

The flows that come with them

Every flow pulled in by the apps in the plan, with its trigger, connector count, action count and how many apps call it. The action count is the honest proxy for effort, and the “no solution” marks are the flows that will not travel with a solution export.

Diagram of an app with its flows and connectors drawn around it

What one app is actually joined to

The app in the middle, what it reaches around it, and a line saying plainly whether it is in a solution. An app that is not carries each of its connectors as a separate thing to recreate by hand in the target.

What it is for

The moves this is built around

Tenant to tenant

A merger, an acquisition or a divestment, where the target tenant has none of the connectors, connections or solutions the apps assume.

Default to managed

Pulling production work out of the default environment into something governed, without breaking the dependencies nobody documented.

Dev to UAT to live

Standing up a real ALM path for apps that were built straight into production, with the solution structure worked out first.

Plan your next migration on real data.

Assess the tenant, import your list, and see what it actually depends on before anything moves.

Read-only · nothing installed · the plan writes nothing to your tenant

LogiSam Assistant Guided help & instant answers

Answers come from this website. Privacy policy

↑↓ to navigate ↵ to open