Dataverse Table Ownership & Security Permissions

Dataverse Table Ownership & Security Permissions

Clear explanation of ownership types and permission scopes (organization vs user/team)

Overview
In Microsoft Dataverse every table has exactly one ownership type. Ownership determines whether row-level security can be applied and which permission scopes are available in security roles.

1. Organization‑Owned Tables

Records are owned by the organization, not by users or teams. Row-level scopes (User / BU / Parent:Child BU) are not available.

Available permission scopes in security roles:
  • None - no user can perform the action
  • Organization - every user with the privilege can act on all records
Typical use: global configuration, metadata, reference lists or settings where everyone can read or manage at org-level.

2. User or Team‑Owned Tables

Each record has an explicit owner (a user or a team). This enables row-level security with multiple scopes available to security roles.

Available scopes for privileges (applies to Create/Read/Write/Delete/Append/AppendTo/Assign/Share):
  • None - no access
  • User - only records the user owns (created or assigned)
  • Business Unit - records owned by anyone in the same BU
  • Parent:Child Business Units - records owned in the user’s BU and all child BUs
  • Organization - all records across the environment
Typical use: operational data where ownership, teams, and BU boundaries matter (projects, cases, opportunities).

Scope-by-scope examples

User: If Read = User, a user sees only records they own.
Example: Sunil creates a record → only Sunil can view it.

Business Unit: If Read = Business Unit, all users in that BU can view records owned by any BU member.
Example: BU1 has 5 users - they can see each other's records.

Parent:Child BU: If Read = Parent:Child BU, users in a parent BU can see records in their BU and child BUs.
Example: BU1 (parent) sees BU1A & BU1B records.

Organization: If Read = Organization, all users can view all records.

None: If Read = None, the user cannot see records (even their own).

Quick Summary

Ownership Type Available Scopes Notes
Organization‑owned None / Organization Use for global reference data and settings. No row-level security.
User/Team‑owned None / User / BU / Parent:Child BU / Organization Use for operational data where ownership & BU boundaries matter.

Why it matters: Ownership decides which permission scopes you can use and whether row-level security is possible. Choose ownership carefully during design because changing it later is complex.

Comments

Popular posts from this blog

Part 1: Creating Code Apps in Power Apps - A step-by-step guide (with real errors I faced & how I fixed them)

Calling Microsoft Graph API from Power Automate Using Azure App Services – Step-by-Step Guide

Step-by-Step Guide: Power Automate Custom Connector Using Graph API from Azure App Service