Learn › Power Apps & Platform › 1 · Foundations

Dataverse: the platform's database

Dataverse is the managed, relational data layer under the Power Platform — tables, relationships and a built-in role-based security model. It is what makes model-driven apps powerful, and it is why they cost premium money by default.

What Dataverse actually is

Dataverse is a managed, cloud-hosted relational store built into an environment. It is not 'a database you administer' — Microsoft runs the engine; you model tables (the current name for entities), columns, relationships (one-to-many, many-to-many), keys, and choices (option sets). On top of raw storage it layers business logic that fires server-side regardless of which app touches the row: business rules, calculated/rollup columns, and plug-ins. That server-side enforcement is the point — the rules travel with the data, not with the UI.

Concept What it is
Table The row/column container (formerly 'entity')
Relationship Enforced link between tables (lookup / many-to-many)
Security role A bundle of table + field privileges at an access level
Business unit The org-hierarchy node that scopes 'local' access
Team A group that can own rows and hold roles

The security model in one paragraph

Access is role-based and privilege-granular. A security role grants Create/ Read/Write/Delete/Append/Assign/Share per table, and each privilege has an access level — None, User (own rows), Business Unit (local), Parent:Child BU (deep), or Organization (global). Users, and teams, are assigned roles; the effective permission is the union of every role they hold. This is far more granular than SharePoint or list permissions — and far easier to get subtly wrong (see the dedicated Dataverse security concept).

Where it bites — failure modes

  • Premium by default. Any app or flow that reads or writes Dataverse requires a premium Power Apps / Power Automate licence for every user. The 'why did this suddenly cost money' surprise is usually a table added to a previously SharePoint-only app.
  • Storage capacity is metered and billed. Dataverse database, file and log capacity is a tenant-pooled entitlement; runaway audit logging or a bulk import can push you over and block provisioning.
  • Over-broad roles. Granting Organization-level Read 'to make it work' quietly exposes every row in the environment — the classic least-privilege miss.
  • The default environment has a Dataverse too (once someone provisions it), and it inherits the everyone-is-a-maker problem — ungoverned business data in the least-governed place.

What to watch (proofs)

  • Which environments have a Dataverse database: Get-AdminPowerAppEnvironment exposes the CommonDataServiceDatabaseType / provisioning state per environment — a new Dataverse in an ungoverned env is a governance signal.
  • Storage consumption: Power Platform admin center → Resources → Capacity, per environment — the metered spend and the runaway-log tripwire.
  • Role assignments: the Dataverse security roles and their access levels (admin center → environment → Settings → Security roles, or the Web API roles/systemuserroles tables) — Organization-level grants are the finding.
  • Premium exposure: apps/flows touching Dataverse vs licensed users (Get-MgUserLicenseDetail against the app inventory) — cost risk or breakage.

PowerShell for this concept

  • Get-AdminPowerAppEnvironment
  • Get-AdminPowerAppCdsDatabaseCurrencies
  • Get-MgUserLicenseDetail

Discussion

No messages yet — start the thread.

Sign in with your email to join the discussion — we send a one-time link, no password.