SPSync vs Fabric mirroring, Dataflow Gen2 and Copy jobs for SharePoint lists

Fabric can mirror a SharePoint list into OneLake or copy it with Dataflow Gen2 or a Copy job. What Microsoft documents for each, and when SPSync fits better.

Choose SPSync when the list must reach a database outside OneLake or you need lookups as keys and deleted items kept; choose Fabric mirroring or Dataflow Gen2 when every report already lives in Fabric.

Documentation reviewed

Where Fabric fits

Where it breaks

Feature by feature

FeatureSPSyncFabric mirroring, Dataflow Gen2 and Copy job
SharePoint Online supportCore productYes. Mirroring (preview) replicates a list into OneLake; Dataflow Gen2, the pipeline Copy and Lookup activities and Copy job (full load only) read it through the SharePoint Online List connector
On-prem SharePoint supportOn the roadmapNo
DestinationsRelational, warehouse, lake and search/vector destinations: 20 destination engines (30+ named targets such as Azure SQL, MariaDB and Supabase), including SQL Server, Postgres, BigQuery, Databricks, ClickHouse, Parquet, Iceberg, pgvector and Azure AI Search; see /destinations/Mirroring writes Delta tables to OneLake only. Dataflow Gen2 and Copy job write to Fabric items such as Lakehouse and Warehouse, plus Azure SQL, SQL Server, Oracle, Snowflake and PostgreSQL depending on the tool
SQL access to the copyTables in your own database, where you can add views and dbt modelsMirroring gives a read-only SQL analytics endpoint; you can add views and queries but cannot change the data
Lookup normalisationLookups become joinable key columnsNot documented as normalised into relational keys, for mirroring or the connector
Multi-value columnsChild tablesNot documented as split into child tables
DeletesSoft delete by default, hard delete with the command-line toolMirroring: not described on Learn's SharePoint list pages. Copy job: a full load has no record of which items were removed
Delta syncEvery few minutes by default, plus a reconcile, weekly by defaultMirroring replicates continuously, near real time per Microsoft's overview; Dataflow Gen2 refreshes up to 48 times a day; Copy job is full load only
Schema evolutionNew columns appear automatically; on SQL Server, PostgreSQL, MySQL, ClickHouse, Oracle, SQLite and DuckDB retyped columns get a _v2 columnQuery steps may need updating for new columns; mirroring behaviour for new columns is not described for SharePoint lists
Hosted optionSPSync in your AzureFabric is always hosted, tied to a running Fabric capacity
Desktop appmacOS and WindowsAuthoring is in Power BI Desktop or the Fabric portal
CLI / CIBuilt-in CLIFabric REST APIs and deployment pipelines
Per-site least-privilege permissionsDelegated sign-in or app-only with Sites.Selected, bring-your-own-appSharePoint connection with an organisational account, workspace identity or, for Dataflow Gen2, a service principal
Pricing modelLicensed per installation and per target family, on annual terms, with Standard Support included; no public price list, quoted after a callMirroring: no charge for replication compute, queries billed against your capacity. Dataflow Gen2 and Copy job: Fabric Capacity Units against your capacity SKU

Your reports already run in Fabric and the data behind one of them sits in a SharePoint list. You want it in OneLake without hand-building a pipeline, and Fabric now offers more than one way to do it. This page sets out what Microsoft documents for each route, where each one stops, and when SPSync is the better choice. For how mirroring differs from sync, copy and replication in Microsoft’s own usage, see what each word means for a SharePoint list.

How does Fabric mirroring work for a SharePoint list?

Fabric mirroring can replicate a SharePoint list into OneLake. In a workspace you choose New, then Mirrored SharePoint Online List, and give it the site URL and a sign-in. Microsoft’s SharePoint list mirroring page says Fabric then replicates the list continuously as Delta tables. Each mirrored database gets a SQL analytics endpoint, which is a read-only copy: you can write T-SQL views and queries against it but cannot change the data. Document library data reaches OneLake through shortcuts, without a copy.

What to know before relying on it, checked on Microsoft Learn on 2026-10-22:

What Learn leaves out matters as much. SharePoint list mirroring has no limitations page, though sources such as Azure SQL Database have one, and the SharePoint page does not describe how lookup columns, multi-value columns or deleted items arrive in the Delta tables. The overview calls mirroring near real time and says the delay depends on the volume and frequency of changes, with no figure for SharePoint. Check how your own list’s lookups and deletes come through before building reports on a mirror.

SharePoint list to a Fabric Lakehouse with Dataflow Gen2 or a Copy job

Before mirroring, Fabric had two ways in, and both still work. Microsoft’s connector page lists a SharePoint list as a source for Dataflow Gen2, for the Copy and Lookup activities in a pipeline, and for Copy job.

A Dataflow Gen2 follows the steps in Microsoft’s connection guide:

  1. In the workspace, choose New and then Dataflow Gen2.
  2. Choose Get data and pick SharePoint Online list.
  3. Enter the site URL, a gateway if you need one, and the authentication kind.
  4. In the Navigator, pick the list and choose Transform data to shape it in Power Query.
  5. Set a data destination, such as a Lakehouse table, and a refresh schedule.

Copy job is simpler still: pick a source, pick a destination, and it runs. For a SharePoint list, though, Copy job is full load only, so each run reads the whole list again. When the list is modest and every downstream report is already in Fabric, staying on one platform means one less tool to run. That is often the right call.

How often can I refresh SharePoint data in Fabric?

It depends on the route. Mirroring runs continuously once it is set up, with the near-real-time caveat above. A Dataflow Gen2 refreshes on demand or on a schedule of up to 48 times a day, according to Microsoft’s refresh page (checked 2026-10-22). A Copy job runs when you schedule it and copies the whole list each time.

Dataflow and Copy job runs consume Fabric capacity, so their cost depends on your capacity and how often you refresh. A schedule short enough for an operational dashboard runs often, and those runs share the capacity with everything else on it. Mirroring moves that cost off the replication and onto the queries. Without a Fabric capacity already in place, any of these routes starts with taking one on to copy a list.

SPSync reads changes every few minutes by default and runs a reconcile weekly by default. You set both in the desktop app, the command line or a CI job.

The shape of the copy

Microsoft describes the output in terms of SharePoint’s own columns. Lookup and multi-choice columns are not documented as turning into relational keys or child tables on any of these routes, so expect to model them downstream. A full load gives you the list as it stands on the day, with nothing to say which items were deleted since the last run or when. If finance asks why last month’s total moved, you will need your own snapshot to answer.

SPSync writes a normalised schema to the database you choose. After the first full copy it reads only the changes from SharePoint. Lookups become key columns you can join on, and multi-value columns become child tables. Deleted items are kept as soft deletes by default, and new SharePoint columns appear without anyone editing a query.

When to use SPSync instead of a Fabric mirror of a SharePoint list

Mirroring is the closest thing Microsoft offers to SPSync, and where all your reporting lives in Fabric it may be enough. SPSync is the better fit when one of these applies:

For a team in that last position, our post on Fabric SharePoint list mirroring or a SQL replica weighs the cost of running a capacity against a replica in the database you already run.

If you still want the data in Fabric, the Fabric page describes the route that works today: replicate to Azure Data Lake Storage Gen2 and point a OneLake shortcut at the container. A native Fabric destination is on the roadmap and has not shipped.

Moving off a dataflow or a mirror

  1. List the lists and columns the dataflow, pipeline, Copy job or mirror reads.
  2. Connect SPSync to the same SharePoint site and pick those lists.
  3. Choose the destination, such as Azure SQL, SQL Server or PostgreSQL, and set the sync schedule.
  4. Compare the new tables with the Fabric copy, paying most attention to lookup and multi-value columns.
  5. Repoint the Power BI reports and retire the dataflow, Copy job or mirror.

You can run SPSync from the desktop app on macOS or Windows, or from the command line in CI or on a server. SPSync in your Azure, a managed application for your own subscription, is deployed with you on a call while the Marketplace listing is prepared. Once deployed it is always on.

SPSync as a Fabric alternative for SharePoint lists

SPSync reads only the changes after the first load, keeps deleted items with a timestamp and turns lookups into key columns. Power BI reads the replica from Azure SQL, SQL Server or PostgreSQL, on your own servers or in any cloud, and SPSync's runs draw nothing from a Fabric capacity.

Other alternatives

Frequently asked questions

Is Fabric mirroring for SharePoint lists out of preview?

No. Microsoft's mirroring overview lists SharePoint List as a preview source (checked 2026-10-22), and Learn has no limitations page for it. SPSync's SharePoint list replication is a shipped product.

Does Fabric mirroring keep SharePoint lookups and deleted items?

Microsoft's SharePoint list mirroring page does not say how lookup columns, multi-value columns or deleted items arrive in the Delta tables (checked 2026-10-22), so test it on your own list. SPSync turns lookups into key columns, writes multi-value columns to child tables and keeps deleted items with a deletion timestamp.

Does a Fabric Copy job read only the changed list items?

No. Microsoft's connector page lists Copy job as full load only for a SharePoint Online list, so each run reads the whole list again (checked 2026-10-22). SPSync does one full load and then reads changes through Microsoft Graph delta queries.

Does running SPSync consume Fabric capacity?

No. SPSync runs on your desktop, a server or your own Azure subscription and writes to the database you choose, so its sync runs draw nothing from a Fabric capacity.

What happens to items deleted in SharePoint?

The row stays and its sp_deleted_at column is set, so a report can show deleted items or filter them out. To remove the row instead, set deletes: hard on that replication in the command-line tool's YAML config. Runs from the desktop app and from SPSync in your Azure always keep the row.

Desktop, Azure or command line

All three editions run the same engine, write the same tables and use the same licence key, so the choice comes down to who looks after the sync.

Desktop app

For macOS and Windows. Sign in with Microsoft, tick the lists, choose a database and sync from your own machine on the schedule you set. Delegated sign-in needs no admin unless your tenant requires admin consent for apps.

In your Azure

SPSync in your Azure, a managed application for your own subscription, is deployed with you on a call while the Marketplace listing is prepared. Once deployed it is always on, so the sync keeps running with every laptop closed.

Command line

Every replication is a YAML file you can review and commit. Run it from a server, a container or a CI pipeline, and re-run it safely any time.

Book a call

Book a call to talk through your use case, see further walkthroughs or demos, and set up a trial in your own environment.