Blog

Dataverse vs SharePoint Lists: How to Actually Choose

By Stephen Curry · AI & Microsoft Power Platform Strategist ·

"Should this be a SharePoint list or Dataverse?" is the question we hear most often in Power Apps engagements, and it deserves a better answer than the two it usually gets. The Dataverse-always answer is how you end up paying premium licensing for a vacation tracker. The lists-always answer is how you end up rebuilding a database, badly, on top of a list. Both tools are the right answer — to different questions. This is the framework we actually use to tell them apart, argued both ways, with the trade-offs left in.

The short answer

A SharePoint list is a collaboration surface: flat-ish data, owned by one team, living inside a site, edited by the same people who read it. Dataverse is a relational data platform: structured tables with enforced relationships, granular security, and server-side logic, designed to sit under applications that a business depends on.

Lean toward a list when the data is simple and mostly flat, one team owns it, everyone who can see the site can reasonably see the rows, volumes are modest, and the worst-case failure is an inconvenience.

Lean toward Dataverse when records relate to other records and that has to be enforced, different people must see different rows or fields, multiple apps or processes touch the same data, auditors will ever ask questions, or the app is becoming something the business plans its week around.

The rest of this post is the reasoning, because the edge cases are where the money is lost.

The case for the humble list

Lists get talked down by people selling the expensive option, so let's be fair to them: a large share of what organizations need day to day is exactly what a list is for.

It's already paid for. Lists ship with the Microsoft 365 licensing you own. For straightforward apps, standard licensing covers the whole stack — no premium step-up to justify to procurement.

It starts fast and stays visible. A list is created in minutes, lives in the site where the team already works, and comes with a usable UI before you build anything. Views, filters, alerts, and the Lists app are free functionality you'd otherwise have to build.

Permissions ride on the site. If "the people in this team site" is the right audience for the data, inheritance does the work for you.

The ecosystem meets you there. Power Apps customizes list forms, Power Automate triggers on list changes, and document libraries sit next to the data. For team-scale trackers — requests, inventories, registers, checklists — this is a complete, respectable architecture.

If that describes your app, stop here: build the list. You don't need Dataverse, and you don't need a consultant either.

Where lists run out of road

The failures are predictable, and they arrive gradually rather than announcing themselves.

Relationships aren't real. A lookup column points at another list; nothing enforces the relationship. Delete the parent and the children keep smiling at nothing. When your "list" is actually five lists doing joins by convention, you're maintaining a database engine made of habits.

Item-level security doesn't scale. Lists can do per-item permissions, but at volume it becomes both an administrative swamp and a performance problem. "Sales sees their rows, managers see their region, HR sees the salary column" is not a list conversation — and permission workarounds are usually the first sign a list is carrying an app it shouldn't.

The view threshold is still there. The long-standing 5,000-item list-view threshold is manageable with indexing and filtered views — but "manageable with care" is the point. Large, growing, heavily queried data means engineering around the platform instead of with it.

Logic lives in the wrong place. A list can't enforce business rules server-side across every app that touches it. Rules end up duplicated in forms and flows, drift out of sync, and get bypassed by anyone editing the list directly.

Nobody's watching the data. Field-level auditing, real change history you can hand an auditor, transactional integrity — this is not what lists are for, and compliance conversations expose that quickly.

None of these is a reason to abandon lists in general. Each is a signal that this particular app has outgrown its container.

What Dataverse actually changes

Dataverse is the data platform underneath Dynamics 365 — the same foundation Microsoft runs its own business applications on, which tells you the scale it's designed for.

Relationships are enforced, not implied. Tables relate to tables with referential integrity the platform guarantees. Cascade behaviors, required lookups, and duplicate detection are configuration, not convention.

Security is a model, not a workaround. Security roles, row-level and field-level access, business units, and hierarchy give you "each rep sees their accounts, managers see their team's, finance sees the numbers column" as designed behavior — and every app on top inherits it.

Logic runs server-side. Business rules, calculated and rollup columns, and real-time workflows execute at the data layer, so every app and integration obeys them — including the colleague with a direct connection you didn't know about.

It's built for application lifecycle. Solutions, environments, and pipelines make dev → test → production a real path instead of a copy of a copy — the discipline our ALM practice exists to install. Auditing, backup, and capacity management are platform features rather than aspirations.

And the honest costs: it's premium licensing (per-user or per-app plans, on top of Microsoft 365), it's more platform to administer, it expects deliberate data modeling, and for a simple tracker it is overkill. Dataverse is the right tool for applications. It's an expensive way to store a lunch-order signup.

The decision framework

Run the actual app through these factors; most decisions are clear by the third row.

Factor Leans list Leans Dataverse
Data shape Flat, or one simple lookup Multiple related tables, enforced integrity
Audience & security Whole site can see it Different rows/fields for different roles
Apps touching it One list, one form Several apps, flows, or integrations share it
Volume & growth Modest, stable Large, growing, heavily queried
Business rules A required column or two Rules that must hold everywhere, server-side
Audit & compliance "Modified by" is enough Auditors will ask who changed what, when
Criticality Inconvenient if it breaks The business plans its week around it
Licensing reality Standard M365 covers it The app's value justifies premium plans

Two patterns cover most real cases. Team tool: flat data, one owning team, site-wide visibility, modest stakes — build the list and move on. Business application: related data, differentiated access, multiple consumers, real stakes — model it in Dataverse from the start, because retrofitting integrity later costs more than doing it once.

The hard calls are the apps in between — usually a list-born app that's quietly become critical. Which brings us to the migration question.

Already on a list? The signals it's time to move

The trap to avoid is the slow slide: a list-based app that grows lookups-pretending-to-be-relationships, permission workarounds, and flows compensating for missing integrity — until the workarounds are the architecture. The time to move is when you notice the first workaround, not after the third one breaks.

Three signals show up over and over: someone asks for security the site can't express; a second app or process starts writing to the same list; or a flow exists whose only job is to keep two lists agreeing with each other. Any one of them is the platform telling you the data has become an application.

When you do move, treat it as a modeling exercise, not a copy-paste. The list accumulated years of workarounds; lifting them into Dataverse faithfully would just give you a more expensive copy of the same problems. Design the tables the way the business actually relates — then migrate the data into the model, not the mess into the platform.

Where this lands

Argued both ways, the summary is: default to a list until the app tells you otherwise — then take the signal seriously, because ignoring it is the expensive path. Most of the cost we see isn't from choosing wrong on day one; it's from not re-deciding when the app changed underneath the choice.

If you're looking at one app, the framework above is enough — you don't need us. If you're looking at an estate — dozens or hundreds of list-based and Power Apps solutions, nobody sure which ones have quietly become critical — that's a governance question, and it's exactly what our Power Platform Health & Governance Gauge measures: what exists, what it touches, and which of these decisions are overdue.

FAQs

Can we start on a list and move to Dataverse later?

Yes, and for uncertain apps it's a reasonable strategy — a list is a cheap way to discover whether an app deserves to exist. Just move at the first workaround, not the fifth. The longer an app survives on workarounds, the more of them you have to untangle during migration, and the modeling debt compounds quietly.

Does Copilot or AI change this decision?

It raises the stakes on both sides. AI grounded in structured, well-modeled data with a real security model gives answers you can trust with less risk of surfacing something it shouldn't; Dataverse's security trimming carries straight through to Copilot and agents. Broadly shared lists, meanwhile, are exactly the kind of content an AI rollout exposes. If AI is on your roadmap, weight the security and data-shape rows of the framework more heavily.

Is Microsoft Lists different from SharePoint lists?

Same technology, different front door. The Lists app gives lists a nicer home and standalone feel, but the underlying platform — and everything in this post — is unchanged.

What about Excel?

If the data is currently a spreadsheet several people email around, a list is almost always the right first move — multi-user editing, views, history, and automation triggers with zero licensing conversation. The list-vs-Dataverse question comes after the data stops living in attachments.

Do we lose SharePoint if we choose Dataverse?

No — and the strongest architectures use both deliberately: structured business data in Dataverse, documents and collaboration in SharePoint, connected where the work needs them to meet. It's a seam to design on purpose, not a side to pick.

Sources

Microsoft's own documentation for the platform facts above. Limits and licensing change; check them at decision time.

  1. List view threshold for large lists and libraries — the 5,000-item view threshold and how indexing and filtered views work around it.
  2. SharePoint limits — item counts per list and the permission-inheritance limit on large lists.
  3. What is Microsoft Dataverse? — tables, relationships, business logic, and the platform's lifecycle features.
  4. Security concepts in Microsoft Dataverse — security roles, business units, row-level and column-level access.
  5. Query limitations: delegation and query limits — what canvas apps can and cannot push down to a data source.
  6. Licensing overview for Microsoft Power Platform — where standard Microsoft 365 licensing stops and premium plans begin.