Migration hub

Migrating to the Power Platform: what moves, what breaks, per source system

SQL Server, Access, a SharePoint list or an Excel file into Dataverse or SharePoint lists, for a NZ firm with under 20 staff. One section per source with its gotchas, one data-type map for all of them, the licence line in NZD, and the cases where I would leave it alone.

Checked September 2026 against Microsoft's NZ price list and Learn

Every migration into the Power Platform is the same three decisions in a different order. Where the data lands (SharePoint lists on the licence you already have, or Dataverse at NZ$32.40 per user per month), what gets rebuilt (forms, reports, stored procedures and VBA never move), and what the source does to you on the way (identity columns, multi-value fields, precision, and the thing that talked to the database that nobody wrote down). The sections below are the gotcha lists per source; the fixed-price bands for the work are on the services page. Who this kind of migration is for, and who it is not, is on the Power Platform consultant page.

Where each source usually lands

SourceUsual homeThe one question that flips itTool that does the move
SQL Server databaseDataverseIs it really one flat table under 20,000 rows? Then SharePointPower Platform dataflow, through the on-premises data gateway if the server is yours
Access databaseSharePoint lists, unless money or eight-plus related tablesDoes an accountant reconcile anything in it? Then DataverseAccess: External Data, Export to Dataverse (Dataverse only); a flow or dataflow for SharePoint
SharePoint listStays a list until it hits a wallRow-level security, real relationships, or 20,000+ rows? Then DataversePower Apps: new table, Import from SharePoint list
Excel workbookOne SharePoint list, or an Excel table in TeamsTwo people editing on the same day and money on it? Then a list with an app, or DataversePower Apps: Import from Excel, or a dataflow with cleaning steps

The reasoning behind that table, with the five-question test, is in SharePoint or Dataverse: how to choose. What follows assumes you have picked a home.

SQL Server to Dataverse

The full decision, costs and timeline are in moving a SQL Server database into Microsoft 365. This is the mechanics, and the eight things that go wrong. The cost, weeks and capacity line on one page is SQL Server to Dataverse in NZ.

The method

  1. Build the Dataverse tables first, by hand or from the schema: names, relationships, autonumber columns that continue your job or invoice sequence, alternate keys for anything that had a unique index.
  2. Install the on-premises data gateway on a machine that can reach the SQL Server, if the server is on your network. No inbound ports; it calls out.
  3. Create a Power Platform dataflow with SQL Server as the source, select the tables, add the cleaning steps in Power Query (trim, fix dates, drop the columns nobody uses), and map each query to its Dataverse table.
  4. Run it into a dev environment first. Read every row the validator rejects. Fix the data in SQL, not in the target.
  5. Load parent tables before child tables so lookups resolve, or run the dataflow twice.
  6. Reconcile row counts and a handful of known records, then repeat on cut-over day into the live environment.

The gotchas

Do I need a licence to run the dataflow itself?

The person building and running the dataflow needs a Power Apps Premium licence, because SQL Server is a premium connector and the gateway needs a premium licence too. One licence for the migration is fine; the ongoing cost is set by who uses the result.

Can I keep SQL Server and just build the app on it?

Yes, through the gateway, and it suits a firm whose server is current and staying. Every user of the app then needs Power Apps Premium at NZ$32.40 a month, the same as Dataverse, and you still patch and back up the server. It is the right call when the database is fine and the front end is the problem.

Access to Dataverse, or to SharePoint lists

The buyer's version, with what it costs, is in moving an Access database off the shared drive, and the short cost-and-weeks version is Access to Power Apps in NZ. The mechanics:

The method, Dataverse

  1. Copy the .accdb somewhere safe and open it in Access from Microsoft 365 (the migration tool is not in Access 2016 or 2019).
  2. In Access, change Number: Single and Number: Double columns to Decimal if the values need more than five decimal places. Note every unique index; they do not migrate.
  3. External Data, Export to Dataverse. Pick the environment (or Dataverse for Teams), optionally a solution, and the tables.
  4. Read the validator. It lists unsupported types and rows that exceed Dataverse limits, and keeps the failing rows in a local Access table rather than dropping them.
  5. Let it relink. The Access forms keep working against the cloud tables while the Power App is built alongside.
  6. Recreate the unique indexes as alternate keys, rebuild multi-value lookups as Choice columns if the validator flagged them, and turn calculated fields back into formula columns.

The method, SharePoint lists

The export tool goes to Dataverse only. For SharePoint, create the lists with the right column types, then load each table with a Power Automate flow or a dataflow reading the Access file from OneDrive. Lookups between lists are plain lookup columns, so load parents first and map the child rows by the parent's title or an ID column you keep.

The gotchas

Is Access going away?

Access in Microsoft 365 is supported and still updated. Access 2016 and 2019 left support on 14 October 2025 and Access LTSC 2021 on 13 October 2026, so the version you open the file with is the risk, not the file. Dates are on the end-of-support page.

SharePoint list to Dataverse

This is the outgrew-it move, and it is the easiest of the four. Power Apps has it built in.

The method

  1. In Power Apps, Tables, New table, Import from SharePoint list. Pick the site and the list.
  2. Review the column mapping. Text, number, date, yes/no, choice and lookup columns map cleanly; lookups between lists become relationships if the parent list is imported first.
  3. Import. Items load as rows; version history and item-level permissions do not come across.
  4. Repoint the canvas app: change the data source from the list to the table. Most formulas survive; anything that used the list's numeric ID or the Title column convention needs a small edit.
  5. Move flows the same way, one connector swap per action.

The gotchas

Should I move a list to Dataverse just because it is big?

Not on size alone. Lists hold 30 million items; the pain is views past 5,000 items without an indexed filter, which indexing and filtered views fix for nothing. Move when you need relationships, row-level security or an audit trail, because that is what the NZ$32.40 a user buys. The 5,000 item limit has the detail.

Excel to Dataverse, or to a list

Most Excel migrations should stop at a SharePoint list. The decision tree is in replacing the spreadsheet that runs your business. When Dataverse is right, the mechanics:

The method

  1. Make it a table. One header row, one data type per column, no merged cells, no totals row, dates as dates not text.
  2. Split what is really two tables (jobs and clients on one sheet) into two sheets with a key column.
  3. Power Apps, Tables, Import from Excel, or a dataflow reading the workbook from OneDrive when you need cleaning steps that repeat.
  4. Check the type inference. A column with one stray text value becomes Text for the whole column; fix the source and reimport.

The gotchas

The data-type map, SQL Server and Access to Dataverse

The same table serves both sources. Limits are Dataverse's, checked September 2026.

SQL Server typeAccess typeDataverse columnWatch for
int, smallint, tinyintNumber: Integer, Long IntegerWhole NumberRange is plus or minus 2,147,483,647
bigintLarge NumberBig IntegerUsable through the API; canvas apps do not display it natively
decimal, numericNumber: DecimalDecimal NumberUp to 10 decimal places
float, realNumber: Single, DoubleFloating Point NumberUp to 5 decimal places; change to Decimal at the source if that matters
money, smallmoneyCurrencyCurrencyOne base currency per environment; the migration assumes it
nvarchar(n), varchar(n), charShort TextText4,000-character cap
nvarchar(max), textLong Text, Rich TextMultiline Text, Rich TextUp to 1,048,576 characters
bitYes/NoYes/NoNULL becomes No unless you decide otherwise
datetime, datetime2Date/TimeDate and TimeChoose user-local or time-zone independent per column; get it wrong and every date shifts by 12 hours
dateDate/Time (date part)Date OnlyNot supported in Dataverse for Teams
uniqueidentifierGUIDUnique IdentifierUsed as keys only
identity columnAutoNumberAutonumberSet the seed so the sequence continues
foreign keyLookup (single value)Lookup (relationship)Load parents first; match on an alternate key
varbinary, imageAttachment, OLE ObjectFile or ImageNot loaded by dataflow or the Access tool; export the files first
computed columnCalculated fieldFormula or Calculated columnThe Access tool stores the value; recreate the formula
unique indexUnique indexAlternate keyNot migrated by either tool; recreate by hand
lookup table with fixed valuesMulti-value lookup, value listChoice, ChoicesNeeds the two-column shape in Access before export
hyperlink stored as textHyperlinkURLFine

The licence line, in NZD

HomePer user, per monthNotes
SharePoint lists$0 on top of Microsoft 365Standard connectors only; the moment a flow touches SQL, HTTP or Xero it becomes premium
DataverseNZ$32.40 (Power Apps Premium, paid yearly)10 GB tenant default plus 250 MB database per licence; add-on NZ$64.70 per GB a month
Keep SQL Server, app through the gatewayNZ$32.40SQL Server is a premium connector; the gateway needs a premium licence
A standalone premium flow (the nightly sync)NZ$24.30 for its owner (Power Automate Premium)Or NZ$242.70 a month for a flow with no owner; usually the wrong buy

Microsoft's NZ price list, checked September 2026; the capacity side (what the tenant gets free, what 1 GB holds) is on Dataverse pricing in NZ. The whole list is on Power Platform pricing in NZ. The worked totals for 5, 10 and 20 people are in what Power Automate actually costs a small NZ business, and the app side in what a custom Power App costs.

When I would leave it alone

Copy first, improve second: how to move a desktop database without changing how you work.

Trial loads and fake data: what each stage of test data catches.

Coming from Visual FoxPro? Export first, then pick the destination.

Where to next

The 38-point migration checklist is the working document for any of the four; it is free and it works with whoever you hire. If the server underneath is on a deadline, the end-of-support dates set the timeline. If you are in Canterbury or anywhere in NZ and want it done at a fixed price, that is the job I do.

Know your source system and your row count?

That is enough for one free 30-minute call to get the home, the licence line and a fixed price. Or answer the five prep questions and skip to the useful part.

Christchurch-based. I reply within 1 working day.