Power Platform Understanding Dataverse

Every app needs somewhere to store its data. Every automation needs something to read from and write to. Every report needs a source of truth. In Power Platform, that place is Dataverse. Understanding Dataverse deeply — what it is, how it works, and how to design it well — makes you a far more effective Power Platform builder than someone who skips this foundation.

This topic explains Dataverse using everyday language and diagrams. No database degree required.

What Dataverse Is — A Plain English Explanation

Dataverse is a cloud-based database built into Power Platform. It stores your business data securely, enforces rules about who can see what, and makes that data available to all your apps, flows, reports, and chatbots simultaneously.

The Library Analogy

Think of Dataverse as a giant, well-organized library. Each table in Dataverse is like a section of the library — one section for customers, one for orders, one for products. Each row in a table is like one book — one customer record, one order record, one product record. Each column in the table is like a piece of information on that book — the customer's name, their email, their phone number.

The library has a librarian (Dataverse security) who decides who can read which section, who can add new books, and who can remove or change existing ones. No one walks in and takes books without permission.

Tables, Columns, and Rows: The Building Blocks

Tables

A table in Dataverse is the equivalent of a sheet in Excel or a table in a traditional database. It stores a specific type of business entity. A table called "Customers" stores customer records. A table called "Work Orders" stores work order records. A table called "Inventory Items" stores product stock information.

Dataverse comes with many standard tables already built in — things like Account, Contact, Lead, Opportunity, and Task. These standard tables follow Microsoft's Common Data Model, which means they work out of the box with Dynamics 365 and other Microsoft apps. You can also create custom tables for any business concept your organization needs.

The Table Structure Diagram

TABLE: Customers

┌──────────────┬─────────────────┬───────────┬──────────────┬──────────────┐
│ Customer ID  │   Full Name     │  Email    │    Phone     │  City        │
│ (Auto-number)│ (Text, Required)│ (Email)   │  (Phone)     │ (Text)       │
├──────────────┼─────────────────┼───────────┼──────────────┼──────────────┤
│ C-0001       │ Priya Sharma    │ p@abc.com │ 9810001234   │ Delhi        │
│ C-0002       │ James Carter    │ j@xyz.com │ 9820005678   │ Mumbai       │
│ C-0003       │ Liu Wei         │ l@mno.com │ 9830009012   │ Bengaluru    │
└──────────────┴─────────────────┴───────────┴──────────────┴──────────────┘

Each row = one customer record
Each column = one piece of information about that customer

Columns and Data Types

Every column in a Dataverse table has a data type that controls what kind of data it accepts. Choosing the right data type is important because Dataverse validates data automatically — if a column expects a date and someone types text, Dataverse rejects the entry.

DATAVERSE COLUMN TYPES (most common)

┌─────────────────┬──────────────────────────────────────┐
│ Data Type       │ Use It For                           │
├─────────────────┼──────────────────────────────────────┤
│ Text            │ Names, addresses, descriptions       │
│ Number          │ Quantities, prices, counts           │
│ Date and Time   │ Dates, timestamps, deadlines         │
│ Yes/No          │ True/false, active/inactive flags    │
│ Choice          │ Dropdowns (Status: Open/Closed/Hold) │
│ Lookup          │ Link to another table's record       │
│ File/Image      │ Documents, photos                    │
│ Currency        │ Money amounts with currency symbol   │
│ Email           │ Email addresses (clickable in apps)  │
│ Phone           │ Phone numbers                        │
│ URL             │ Website links                        │
│ Auto Number     │ Auto-generated IDs (C-0001, C-0002)  │
└─────────────────┴──────────────────────────────────────┘

Relationships: How Tables Connect

Real business data is not isolated. A Customer has multiple Orders. An Order has multiple Order Lines. Each Order Line refers to one Product. These connections between tables are called relationships, and Dataverse handles them elegantly.

Types of Relationships

Dataverse supports three types of relationships. A one-to-many relationship means one record in Table A relates to many records in Table B — one Customer to many Orders. A many-to-many relationship means many records in Table A relate to many records in Table B — many Students to many Courses (a student takes many courses, and a course has many students). A many-to-one relationship is the same as one-to-many, just viewed from the other direction.

A Real Business Relationship Diagram

CUSTOMERS ──────────── ORDERS ──────────── ORDER LINES
   │                      │                     │
   │ One customer          │ One order            │ One line refers
   │ has many orders       │ has many lines       │ to one product
   │                      │                     │
   └─ C-0001 (Priya)      └─ ORD-001            └─ Product: Laptop × 2
                          └─ ORD-002            └─ Product: Mouse × 1
                          └─ ORD-003
   └─ C-0002 (James)
                          └─ ORD-004            └─ Product: Keyboard × 3

The Lookup column type creates these relationships. When you add a Lookup column to the Orders table that points to the Customers table, Dataverse links the two tables. In your Power App, a user can see an order and immediately see all the customer's details — without you writing any join queries.

Dataverse vs. SharePoint Lists vs. Excel: When to Use What

Power Platform beginners often wonder whether to store data in Dataverse, a SharePoint list, or an Excel file. Each has its place. Choosing the wrong one causes performance problems or data integrity issues down the road.

DATA STORAGE COMPARISON

┌──────────────┬──────────────┬────────────────┬──────────────────┐
│ Feature      │  Excel File  │ SharePoint List│    Dataverse     │
├──────────────┼──────────────┼────────────────┼──────────────────┤
│ Best for     │ Simple lists │ Team lists,    │ Complex apps,    │
│              │ offline work │ documents      │ large data sets  │
│ Row limit    │ ~1 million   │ 30 million     │ No practical     │
│              │ but slow >   │ rows but slow  │ limit in cloud   │
│              │ 5,000 in PP  │ at large scale │                  │
│Relationships │Manual-vlookup│ Limited        │ Built-in, robust │
│ Security     │ File-based   │ SharePoint     │ Row-level, role- │
│              │              │ permissions    │ based, very fine │
│Business rules│ None         │ Validation only│ Rules, rollups,  │
│              │              │                │ calculated fields│
│ Offline use  │ Yes          │ Limited        │ Through Power    │
│              │              │                │ Apps mobile      │
│ Cost         │ Free         │Included in M365│ Requires         │
│              │              │                │ paid license     │
└──────────────┴──────────────┴────────────────┴──────────────────┘

Use Excel for personal data or simple calculations. Use SharePoint lists for team-level lists that do not need complex relationships. Use Dataverse for any serious business application — when you need role-based security, complex data models, business rules, and scalability.

Creating Your First Table in Dataverse

Open make.powerapps.com, switch to your developer environment, and click Tables in the left sidebar. You see a list of all existing tables. Click New table in the top-left area to create a custom one.

Step-by-Step Table Creation

Give the table a display name — this is the name users see, like "Service Requests." Dataverse automatically creates a logical name (usually cr123_servicerequests where cr123 is your publisher prefix). Choose a Primary Column — the main name field for each record (for service requests, this might be "Request Title"). Click Create and Dataverse provisions the table with its default columns automatically.

Default Columns Dataverse Adds Automatically

Every Dataverse table comes with a set of system columns that you cannot delete. These columns track important metadata automatically:

AUTOMATIC SYSTEM COLUMNS

┌──────────────────────┬────────────────────────────────────────┐
│ Column               │ What It Stores                         │
├──────────────────────┼────────────────────────────────────────┤
│ Primary Key (GUID)   │ Unique ID for each record              │
│ Created On           │ Date and time the record was created   │
│ Created By           │ User who created the record            │
│ Modified On          │ Last edit date and time                │
│ Modified By          │ User who last edited                   │
│ Owner                │ User or team who owns the record       │
│ Status               │ Active or Inactive                     │
│ Status Reason        │ More specific status detail            │
└──────────────────────┴────────────────────────────────────────┘

These system columns are incredibly useful. Power Apps can show "Last updated by Priya on 12 June 2025 at 3:45 PM" without you writing any code — Dataverse captures it automatically.

Business Rules: Data Validation Without Code

Dataverse business rules let you set conditions and actions on your data without writing a single line of code. Think of them as rules enforced at the data layer, no matter which app or flow touches the data.

What Business Rules Can Do

Business rules can show or hide a column based on another column's value, make a column required only when a specific condition is met, set a default value automatically, display an error message when invalid data is entered, and calculate a column's value based on other columns.

A Practical Example

You have a Service Request table. When the Status column is set to "Escalated," you want the "Escalation Reason" column to become required. Without a business rule, a user could change the status to Escalated and leave the reason blank. With a business rule, Dataverse forces them to fill in the reason before saving. This rule applies to every app and every flow that uses this table — you define it once, and it works everywhere.

Choices (Option Sets): Building Dropdown Lists

Many business fields have a fixed set of acceptable values. Status can be Open, In Progress, or Closed. Priority can be Low, Medium, High, or Critical. In Dataverse, these are called Choices (previously called Option Sets).

Global vs. Local Choices

A Global Choice is defined once and reused across multiple tables. A Priority choice defined globally can appear on the Customers table, the Work Orders table, and the Projects table — all sharing the same dropdown options. When you update the global choice (say, adding an "Urgent" priority level), all tables that use it update automatically. A Local Choice belongs to a single column in a single table and cannot be reused.

Calculated and Rollup Columns

Dataverse can calculate column values automatically, so your apps always show current, correct data without manual updates.

Calculated Columns

A calculated column computes its value using a formula based on other columns in the same record. For example, a "Full Name" calculated column can combine First Name and Last Name automatically. A "Days Since Created" column can calculate how many days have passed since the record was created.

Rollup Columns

A rollup column aggregates data from related records. For a Customer record, a rollup column can show the Total Order Value (sum of all related order amounts), the Number of Open Orders (count of related orders where status is Open), or the Date of Most Recent Order (maximum date from all related orders). Dataverse recalculates these automatically on a schedule.

ROLLUP EXAMPLE

Customer: Priya Sharma
┌──────────────────────────────────────────────────────────┐
│ Total Orders (Rollup)   │ 3                              │
│ Total Revenue (Rollup)  │ ₹47,500                        │
│ Last Order Date (Rollup │ 15 May 2025                    │
└──────────────────────────────────────────────────────────┘
      ↑ These values calculate automatically from ↓

Related Orders:
  ORD-001 → ₹15,000 (Jan 2025)
  ORD-002 → ₹20,000 (Mar 2025)
  ORD-003 → ₹12,500 (May 2025)

Security in Dataverse

Dataverse has a sophisticated, multi-layered security model. This is one of its most powerful features — and what makes it suitable for serious enterprise applications.

The Security Layers

Environment security controls who can log in to the environment at all. Security roles define what actions a user can perform on each table — create, read, write, delete, or share records. Record ownership means each record belongs to a specific user or team, and only the owner can see and edit it by default. Field-level security controls access to specific columns — for example, a Salary column that only HR managers can see.

Standard Security Roles

Dataverse includes several built-in security roles that you assign to users. The System Administrator role has full access to everything — suitable for Power Platform admins. The System Customizer role can modify the data model (add tables and columns) but has limited data access. The Basic User role can create and read their own records. Custom roles let you define exactly which tables and which actions a specific team can access.

Dataverse for Teams vs. Full Dataverse

Microsoft offers two versions of Dataverse. Dataverse for Teams is a lightweight version built into Microsoft Teams — free, easy to set up, but limited in capacity and features. Full Dataverse (what this course focuses on) lives in your Power Platform environment, supports enterprise-scale data, and unlocks all Power Platform premium features.

DATAVERSE VERSIONS COMPARISON

┌─────────────────────┬─────────────────────┬─────────────────────┐
│ Feature             │ Dataverse for Teams │ Full Dataverse      │
├─────────────────────┼─────────────────────┼─────────────────────┤
│ Cost                │ Free with M365      │ Requires paid lic.  │
│ Where it lives      │ Inside Teams        │ Power Platform env. │
│ Data limit          │ 2 GB per team       │ 10 GB+, scalable    │
│ Security roles      │ Basic               │ Full, custom roles  │
│ Business rules      │ Limited             │ Full                │
│ Usable from PP tools│ Power Apps/Automate │ All four tools      │
│ Best for            │ Small team apps     │ Enterprise apps     │
└─────────────────────┴─────────────────────┴─────────────────────┘

Importing and Exporting Data

Dataverse lets you import existing data from Excel or CSV files — useful when you migrate from a spreadsheet-based system. Open a table, click Import then Import data from Excel, map your spreadsheet columns to table columns, and click Import. Dataverse processes the file and creates records for each row.

Exporting data works similarly. Click Export then Export to Excel to download a snapshot of any table as an Excel file. For ongoing synchronization, use Power Automate flows that push data between Dataverse and external systems automatically.

The Common Data Model: Why Standardization Matters

The Common Data Model (CDM) is a Microsoft-defined set of standard table definitions — things like Account, Contact, Product, Invoice, and Appointment. Dataverse implements CDM out of the box. Using these standard tables instead of building everything from scratch has a major advantage: they connect automatically to Dynamics 365, Microsoft industry solutions, and thousands of third-party apps that also understand CDM. Building on standard tables puts you in a large, compatible ecosystem.

Key Points

  • Dataverse is the cloud database at the center of Power Platform — all four tools read from and write to it.
  • Data is organized in tables (like sheets), columns (like headers), and rows (like records).
  • Relationships link tables together — a Customer table relates to an Orders table through a Lookup column.
  • Use Dataverse for serious business apps that need security, scale, and relationships. Use SharePoint lists for simpler team-level lists and Excel for personal data.
  • Business rules enforce data validation at the data layer — they apply regardless of which app or flow touches the data.
  • Choices create reusable dropdown lists. Calculated columns compute values automatically. Rollup columns aggregate data from related records.
  • Dataverse security has four layers: environment access, security roles, record ownership, and field-level security.

Leave a Comment