Almanac
Microsoft/dataversePower Platform

Consultant KB for Microsoft Dataverse, the data layer under Dynamics 365 and the Power Platform: data model, security model, business logic, APIs and integration, search and queries, analytics and Fabric, ALM and solutions, administration, governance and compliance, and Dataverse as an agent data platform, plus cross-cutting decision guides. Implementation notes, configuration decisions and the gotchas that bite on real projects. Populated by the daily author agent from the Dataverse release plans, docs repo and product blog, plus the author's own consultant notes.

feature-capacity-and-storage.mdv1 · history
CurrentApplies to AdminUpdated last monthSource Microsoft Learn

What it does

Dataverse storage is metered in three separate buckets — database, file and log — pooled at tenant level and reported per environment in the Power Platform admin centre. Your entitlement comes from a tenant base allocation plus per-user licence accruals plus any add-ons, and the platform tells you off when you exceed it.

Key facts

  • Database holds everything that isn't a file or a log: table rows, metadata, relational data, and index files.
  • File holds attachments, notes, and any file or image column. Annotation and Attachment data has been progressively moved out of database into file storage, so a shrinking database figure alongside a growing file figure is expected behaviour, not a bug.
  • Log holds the Audit table, plug-in trace logs and elastic tables. This is the bucket that surprises people.
  • Dataverse search indexes are reported as a table named DataverseSearch (formerly RelevanceSearch) and are charged at the database capacity rate.
  • Overflow works in one direction only: spare database capacity can cover a log or file deficit, and spare log can cover file. Spare file capacity covers nothing.
  • Notifications fire weekly at under 15% remaining, again at under 5%, and again once you're in overage. Tenant, Power Platform and Dynamics 365 admins all get them and nobody can opt out.
  • In overage, these operations stop: create an environment, copy an environment, restore an environment, convert a trial to paid, recover an environment, add a Dataverse database. Several of those need at least 1 GB free.
  • Admins can preallocate capacity to a specific environment. Overage against a preallocated amount is currently soft enforcement only — email at 85% of allocation — but it reduces what's left in the tenant pool for everyone else.
  • Default, production and sandbox environments count towards consumption. Trial, preview, support, developer and Teams environments don't.
  • Microsoft states there's no technical limit on the size of a Dataverse environment. The numbers in the admin centre are entitlement limits, not engineering ones.

When to use / skip

This isn't optional — every Dataverse project needs someone watching the capacity page monthly, and the sooner you make that a named person the better. The real work is understanding which bucket you're growing, because the fix is different for each: log growth means your audit configuration is too broad, file growth means attachments and probably a SharePoint conversation, database growth means either genuine business volume or a table nobody has ever pruned. Don't let a client buy add-on capacity before you've looked at the per-table breakdown; more often than not it's one table, and it's usually an audit or a plug-in trace log.

Configuration decisions

  • Whether to preallocate capacity per environment or let everything draw from the tenant pool, which trades predictability against flexibility.
  • Whether to link environments to a pay-as-you-go plan so overage bills to Azure rather than blocking admin operations.
  • Which tables carry a retention or bulk delete policy, decided before the environment reaches 80% rather than after.
  • Whether Dataverse search stays on for every environment, accepting the index consumption, or is left at Default for environments that don't need generative AI experiences.
  • Who owns the capacity alert distribution, given the notifications go to tenant-level admins automatically and can't be delegated.

Gotchas

  • Turning Dataverse search off to reclaim index space is a trap. You get 12 hours to change your mind; after that the index is deleted and a rebuild can take days for a large org, during which search and every generative AI experience is degraded.
  • File capacity excess can't rescue a database or log deficit. Clients with piles of spare file capacity still get blocked.
  • The default environment's list view shows only consumption above its included quota, so it reads as 0 GB until it isn't. Open the Details pane to see actual usage.
  • Team Member licences give no per-user database, file or log entitlement, so they don't appear in the entitlement breakdown. Expect that question.
  • Environments without a Dataverse database still consume 1 GB each. Tenants with dozens of empty environments lose real capacity to them.

Consultant notes

  • Run the per-table breakdown at the start of any storage conversation. It converts an abstract argument about buying capacity into a specific argument about a specific table.
  • Warn clients that audit is the most common cause of a log capacity crisis, and that it grows in proportion to transaction volume, not data volume. Nobody expects this.
  • Never quote add-on pricing. Point at the Power Platform and Dynamics 365 licensing guides and let procurement do procurement.
  • Downloadable capacity reports expire after 30 days. If you're building a trend, capture the export on a schedule rather than trusting the portal to remember.

Revisit if the storage buckets change again, or if the soft enforcement on preallocated environment capacity becomes hard enforcement.

Was this accurate?