![]()
Introduction
At the core of any application in Microsoft Power Platform and Dynamics 365 lies its data structure—defined by entities (now known as tables in Dataverse). While Microsoft provides a rich set of standard tables, real business needs often require the creation of custom entities to manage unique business processes and data models.
This article provides an in-depth look into custom entity creation and defining relationships between those entities in Microsoft Dataverse, the underlying data platform that powers model-driven apps, Power Apps, and Dynamics 365. Whether you’re building a custom CRM system, an inventory tracking app, or an HR onboarding solution, understanding how to create custom tables and define relationships is foundational.
What Is a Custom Entity?
In Dataverse, an entity (or table) is a structured set of fields that stores data. A custom entity is one you create to model business-specific data not covered by standard entities like Contact, Account, or Lead.
Examples:
InvoiceSupport TicketEmployee CertificationAsset Location History
Creating custom entities allows organizations to design applications around their own logic and workflows rather than adapting to pre-built models.
Creating a Custom Entity (Table)
You can create custom entities using:
- Power Apps Maker Portal (preferred method)
- Solution Explorer in Power Platform
- Classic Solution Designer (for legacy scenarios)
Step-by-Step: Creating a Custom Table in Power Apps
- Go to Power Apps (https://make.powerapps.com)
- Navigate to Dataverse > Tables
- Click “+ New table”
- Provide:
- Display Name: e.g., “Asset”
- Plural Name: e.g., “Assets”
- Name (Schema Name): auto-generated (
new_asset) - Optional: Select primary column, table type (standard/custom activity), etc.
- Click Create
Now you can begin adding columns (fields) and customizing the table.
Defining Columns (Fields)
Each entity/table has a primary column (like “Name” or “Title”), and you can define additional columns:
Common Column Types:
- Text (Single Line, Multi-line)
- Number (Whole, Decimal, Currency)
- Date/Time
- Choice (Option Set)
- Lookup (Relationship to another table)
- Boolean
- File or Image
Best Practices:
- Use meaningful names (
certification_date,project_owner_id) - Use choices for values with limited options
- Enable auditing for important fields
- Use field security profiles to protect sensitive data
Understanding Relationships
Once you’ve created custom entities, you can relate them to each other and to standard tables.
Three Types of Relationships:
| Relationship Type | Description | Example |
|---|---|---|
| 1:N (One-to-Many) | One record in table A can be associated with many records in table B | One account has many contacts |
| N:1 (Many-to-One) | Many records in table A relate to one record in table B | Many invoices linked to one customer |
| N:N (Many-to-Many) | Records in table A can relate to multiple records in table B and vice versa | Employees can have multiple certifications, and a certification can apply to many employees |
Creating Relationships:
- Open the custom table
- Go to the Relationships tab
- Click + New relationship
- Choose type: 1:N, N:1, or N:N
- Select the target table
- Configure relationship behavior (more on this later)
Relationship Behavior Settings
When defining relationships, you can specify behavior types that control cascading effects:
Options Include:
- Parental: Changes cascade from parent to child (e.g., delete, assign)
- Referential: Maintains link but no cascading changes
- Configurable Cascading: Define custom behavior for assign, share, delete, etc.
Example:
If you delete a Project, should all related Tasks be deleted as well?
Lookup Columns
Creating a lookup column is the most common way to establish a relationship in a form.
How It Works:
- A lookup field is essentially a foreign key.
- When creating a column, choose Data Type = Lookup
- Select the related table (e.g., Account, Project, etc.)
This allows users to select related records through a drop-down in forms.
Using Subgrids and Navigation
Once relationships are set up, you can use subgrids and navigation tiles to show related records in forms.
Examples:
- Show all Orders on an Account form
- Display a list of Notes related to a Case
- Navigate from an Employee record to associated Certifications
Business Scenarios
Let’s explore how relationships and custom entities work together in real-world apps.
Scenario 1: Asset Management
Custom Tables:
AssetLocationMaintenance Log
Relationships:
- Asset N:1 Location (each asset belongs to one location)
- Asset 1:N Maintenance Log (each asset has multiple logs)
This setup allows tracking where assets are and their maintenance history.
Scenario 2: Employee Onboarding
Custom Tables:
EmployeeOnboarding ChecklistTraining Session
Relationships:
- Employee 1:N Checklist
- Employee N:N Training (via an intermediate join table)
This model supports tracking tasks per employee and managing who attended which training sessions.
Custom Activity Entities
If your custom entity represents an action rather than a static record (like a meeting or task), you can create a custom activity entity.
Features:
- Appears in the Activity Timeline
- Has To/From, Start/End times
- Supports activity parties (multiple participants)
Use Cases:
Service VisitSite InspectionDelivery Appointment
Enable this in the entity settings by toggling “Define as an activity”.
Best Practices for Custom Entity and Relationship Design
- Prefix names with your org or solution name (
abc_invoice) - Avoid modifying standard entities unless absolutely necessary
- Document entity relationships clearly
- Use managed solutions for production environments
- Keep relationships logical and meaningful (avoid unnecessary N:N)
- Consider performance implications for complex N:N relationships
- Utilize icons and colors to distinguish custom tables in apps
Using Solutions for Deployment
Always create entities and relationships within a solution to package and move them between environments (Dev → Test → Prod).
Benefits:
- Easy versioning
- Track dependencies
- Export/import customizations
Limitations to Be Aware Of
- Lookup fields can slow down forms if overused
- N:N relationships are harder to manage with advanced business logic
- Only one primary name field per table
- System-generated relationships are harder to delete once used
Integration with Forms and Views
After creating entities and relationships:
- Customize forms to include lookup fields or subgrids
- Design views to filter based on related records
- Use Power Automate to automate relationship-based logic
Relationship and Entity Security
- Use security roles to control who can access which entities
- For lookup fields, users must have permission on both sides of the relationship
- Apply field-level security where needed (e.g., salary on an Employee table)
Reporting on Custom Entities
- Custom tables are available in Power BI, Excel Online, and Power Apps reports
- Relationships can be used in Dataverse views and Power BI data models for joining data
