Behind the Names: Unlocking Schema and Logical Names in Dataverse
Schema and Logical Names in Dataverse form the backbone of how data is structured, stored, and referenced within the platform. The Schema Name is a system-level, immutable identifier created when a table or column is generated; it is mainly used by developers, plugins, integrations, and API calls. It follows a strict format (prefix + name) and does not change even if the display name changes, ensuring long-term stability for solutions and custom code. The Logical Name, on the other hand, is the programmatic name Dataverse uses internally and externally when accessing data through the Web API, SDK, Power Automate, or Power Apps. Logical names are unique and aligned to the physical storage in the Dataverse database. While schema names provide structure and a consistent metadata definition, logical names enable efficient data operations and integration. Together, they create a reliable separation between user-friendly labels and system-driven identifiers, ensuring stability, consistency, and compatibility across environments, solutions, and automation.
- PascalCase naming (e.g., new_CustomerCategory)
- Used inside solution XML files
- Used by Power Apps Studio and Solution Explorer
- Cannot be changed after creation
- Human-readable & organizationally branded
- Critical for ALM, packaged deployments, and upgrades
- Solution XML (customizations.xml)
- Plugin registration tool (for referencing images)
- ERD diagrams
- Relationship schema (1:N, N:N)
- Model-driven app expressions
- Useful for documentation
- Ensures consistency and readability
- Used in relationship metadata
- Maintains clear naming conventions
- Web API (OData calls)
- SDK / C# Plugins
- Power Automate Dataverse connectors
- Query building and metadata lookups
- Internal storage engine
- Lowercase, underscore format (e.g., new_customercategory)
- Immutable (never changes once created)
- Required in all API calls
- Designed for machine efficiency
- Safe for URLs and OData standards
- C# plugin code: entity["crbe_firstname"]
- JavaScript: formContext.getAttribute("crbe_firstname")
- Web API: /api/data/v9.2/crbe_customerfeedbacks
- Power Automate Dataverse actions
- The system executes using this name
- Changing display names has no effect
- Used by all backend components
- Ensures stable API integrations
- Avoids collisions with Microsoft standard entities
- Helps identify your solution components easily
- Mandatory for ALM and managed solutions
- Good: Customer, Invoice, CardList
- Avoid plural: Customers, Invoices
- Good: GSTNumber
- Not good: GN
- abc_CardLististLink
- Not: abc_DetailTable
- Use: abc_AccountRiskAssessment
- Use PascalCase for schema name
- abc_IsBlacklisted
- abc_ConsumptionPerMonth
- abc_IsPrimary
- abc_HasActiveSubscription
- abc_CanBeBlacklisted
- abc_ContactId
- abc_AccountId
- abc_CustomerType
- abc_ApplicationStatus
- abc_ApprovalDate
- abc_InvoiceDate
- Format:
- publisherPrincipalTable_dependentTable
- abc_Account_CardAccount
- Format:
- publisherTable1_Table2
- abc_Account_Opportunity
- Always include
- Purpose
- Filter Criteria
- Active Card Accounts
- Expired Licenses (Last 30 Days)
- Accounts With Blacklisted Cards
- Format:
- Main – Purpose
- Quick – Purpose
- Main – Blacklist Management
- Quick – Contact Summary
- Account – Onboarding Process
- CardAccount – Blacklisting Review
- Format:
- System/Team – Entity – Action – Additional Info
- Ops – Account – Populate Blacklisting
- CRM – Lead – Convert to Account
- Finance – Invoice – Send Reminder Email
- Format:
- App – Role Level
- Cards – Administrator
- Cards – Read Only
- Sales – Manager
- Identifies components inside a solution
- Used by solution packaging, deployment, and ALM
- Required during component references in forms, views, relationships
- Supports PascalCase for readability
- Must be stable for export/import across environments
- Metadata in solution.xml, customizations.xml, and relationship.xml uses schema names.
- Ensures deterministic referencing, meaning solutions can be reliably imported/exported.
- Used by Dataverse database engine
- Used in Web API, OData, SDK, and Plug-ins
- Lowercase + underscores → URL-safe and API-friendly
- Optimized for querying, joins, filter expressions, and indexing
- For database tables/columns
- For runtime metadata lookups
- For Web API routes (/api/data/v9.0/abc_customers)
- PascalCase
- Easy for developers & solution designers
- Visible mainly inside apps (Power Apps Studio, Solution Explorer)
- Lowercase
- Must follow strict technical rules
- Used internally by Dataverse engine & APIs
- UI & metadata naming (schema name) to evolve
while
- the API/runtime naming (logical name) remains stable
This prevents breaking:
- Plugins
- JavaScript
- Workflows
- Power Automate flows
- External integrations
- Web API calls
- Lowercase names
- No uppercase (preferred)
- No special characters
- URL-safe identifiers
- lowercase
- underscores
- no spaces
- Solution upgrades do not change API names
- Managed solutions update UI labels without breaking API contracts
- Teams can rename display names without breaking logic
- Resolve metadata references quickly
- Build cache keys
- Generate SQL queries to underlying storage
- Manage partitioning & indexing
- Change Display Name anytime
- Keep Schema Name readable
- Expose Logical Name only to developers
- Better UX
- Friendly UI labels
- Clean developer experience
Schema Name = for developers
Logical Name = for machines
Published on:
Learn moreRelated posts
Power Platform Environment Deep Dive (Part 2)
In Microsoft Power Platform, choosing the right environment type is important because each environment is designed for a different business pu...
Power Platform Environment Deep Dive (Part 1)
Today, in the business enterpriese world, Power Platform enables organization to build application, automate workflow, analyze data crea...
Book Review : Life 3.0 by Max Tegmark
This is the third book I’ve read this year, and even though I’m still in the early chapters, it already feels like my favorite read of the yea...
Dataverse Views Demystified: Making Data Work for You
In Microsoft Dataverse, users do not always see all the data stored in a table. What they can view depends on their security permissions, role...
Decode & Fix : Shared App host initialization has timed out in Microsoft Power Apps
Issue :While working with apps in the Microsoft Power Platform, we encountered a critical issue where the application failed to load pro...
Dataverse Integration Patterns: Sync vs Async vs Event-driven (Real Use Cases)
As organizations start using Microsoft Power Platform, Microsoft Dataverse is no longer just a place to store data—it becomes a key part of ho...
Book Review : Don't Believe Everything You Think by Joseph Nguyen
My second book of this year is "Don’t Believe Everything You Think" by Joseph Nguyen. This book was recommended by a friend who strongly belie...
Book Review : Scary Smart by Mo Gawdat
The first book I read in 2026 was Scary Smart by Mo Gawdat, the former Chief Business Officer at Google.In today’s world, Artificial Intellige...
Managing Temporary User Access in Dataverse with Access Teams
Access Teams let you give people access to one specific record, not the whole table.Access Teams in Microsoft Dataverse are a powerful way to ...
