1.2 Table Relationships & Cascading Rules
Key Takeaways
- Dataverse supports 1:N (One-to-Many), N:1 (Many-to-One), and N:N (Many-to-Many) relationships, establishing relational integrity across business entities.
- Native N:N relationships utilize a hidden system-managed intersect table storing only primary keys, whereas Manual Intersect tables enable storing custom transactional metadata.
- Relationship behaviors govern cascading lifecycle actions: Parental cascades all operations, Referential preserves child lifecycles, and Referential Restrict Delete blocks parent deletion if child records exist.
- Dataverse executes 7 distinct cascading actions: Assign, Share, Unshare, Reparent, Delete, Merge, and Rollup View.
- Cascading configurations enforce strict validation constraints: Delete cannot be set to Cascade User-Owned or Cascade Active, while Reparent cannot be set to Restrict Delete.
Table Relationships & Cascading Rules
Relational integrity is the bedrock of enterprise application architecture. In Microsoft Dataverse, relationships define how records in one table link to records in another. Beyond simple foreign key constraints, Dataverse relationships incorporate sophisticated cascading behaviors that automatically propagate security, assignment, reparenting, and deletion operations down complex parent-child hierarchies. Mastering these behaviors is vital for passing the PL-200 exam and preventing unintended data loss or security exposure in production.
1. Relationship Types in Dataverse
Dataverse supports three core relationship structures:
+-----------------------------------------------------------------------------+
| DATAVERSE RELATIONSHIP TYPES |
| |
| [1:N / N:1 RELATIONSHIP] |
| Account (1) ------------< (N) Contact |
| - Foreign key lookup column created on the Child (N) table |
| |
| [NATIVE N:N RELATIONSHIP] |
| Student (N) >--- [Hidden Intersect: student_course] ---< (N) Course |
| - System-managed table, stores only StudentID + CourseID |
| |
| [MANUAL INTERSECT TABLE (JUNCTION)] |
| Student (1) --< (N) Enrollment (N) >-- (1) Course |
| - Custom table with metadata: Grade, Term, Status, PaidDate |
+-----------------------------------------------------------------------------+
1. One-to-Many (1:N) and Many-to-One (N:1)
- A 1:N relationship represents a primary parent table linked to multiple child records (e.g., one Account has many Contacts).
- An N:1 relationship is simply the reciprocal view from the child table looking back to its single parent.
- Mechanism: Dataverse creates a Lookup column on the child table that stores the 128-bit GUID of the parent record.
2. Native Many-to-Many (N:N)
- Links multiple records in Entity A to multiple records in Entity B (e.g., Events and Attendees).
- Hidden Intersect Table: Dataverse automatically provisions and manages a hidden physical intersect table in the database. This table contains only two columns: the Primary Key GUID of Table A and the Primary Key GUID of Table B.
- Limitations: Users cannot add custom columns, forms, views, or business logic to a native N:N intersect table.
3. Manual Intersect (Junction) Table Pattern
When business requirements dictate that metadata must be captured about the relationship itself, consultants must implement a Manual Intersect Table (also known as a junction or bridge table).
- Structure: A custom table is created that sits between the two primary entities. The junction table contains two separate N:1 lookup columns (one pointing to Table A, one pointing to Table B).
- Metadata Payloads: The junction table can contain custom columns such as
EnrollmentDate,FinalGrade,Role,CertificationStatus, orAssignedBy.
| Criteria | Native N:N Relationship | Manual Intersect Table |
|---|---|---|
| Intersect Table Visibility | Hidden system table | Visible custom entity in Maker Portal |
| Custom Attributes | None (Only 2 GUIDs) | Unlimited custom columns |
| Business Logic Support | None | Full support (Business Rules, Power Automate, Plugins) |
| Form & View Customization | Subgrid only | Full Forms, Views, and Dashboards |
| Security & Ownership | Inherited from related entities | Independent User/Team or Org ownership |
2. Relationship Behaviors
When configuring a 1:N relationship, the consultant must define the Type of Behavior. This setting controls how operational events performed on the parent record propagate to related child records.
+-----------------------------------------------------------------------------+
| RELATIONSHIP BEHAVIOR TYPES |
| |
| +-------------------+ +-------------------+ +-------------------+ |
| | PARENTAL | | REFERENTIAL | | REFERENTIAL (REST)| |
| | - Deep cascade | | - Independent | | - Restrict Delete | |
| | - Delete parent | | - Delete parent | | - Blocks parent | |
| | deletes children| | leaves children | | deletion if | |
| | - 1 parent limit | | - Link removed | | children exist | |
| +-------------------+ +-------------------+ +-------------------+ |
| | |
| v |
| +-------------------+ |
| | CONFIGURABLE | |
| | - Granular tuning | |
| | - Custom action | |
| | by action rules | |
| +-------------------+ |
+-----------------------------------------------------------------------------+
1. Parental
In a Parental relationship, the child record's lifecycle is completely bound to the parent record. Any action taken on the parent record (Assign, Delete, Share, Unshare, Reparent) automatically cascades to all related child records.
- Strict Constraint: A table can have only ONE Parental relationship where it acts as the child entity. A table cannot have two distinct parental parents (e.g., if an Order Item is parented by Order, it cannot also be parented by Product).
2. Referential
In a Referential relationship, records are linked for navigation and lookup purposes, but each record maintains an independent lifecycle.
- If the parent record is deleted, the relationship link on the child record is cleared (Remove Link), but the child record remains active in the database.
3. Referential, Restrict Delete
In this behavior, the system prevents the parent record from being deleted as long as any related child records exist.
- Enterprise Use Case: Preventing a Customer Account from being deleted if open Invoices or active Contracts exist.
4. Configurable Cascading
Allows the functional consultant to customize each cascading action individually to meet precise business rules.
3. The 7 Cascading Actions and Option Rules
Dataverse evaluates cascading rules across 7 distinct operations executed on a parent record:
+-----------------------------------------------------------------------------+
| THE 7 DATAVERSE CASCADING ACTIONS |
| |
| 1. ASSIGN ---> Reassigning owner of parent propagates to children. |
| 2. SHARE ---> Sharing parent record grants access to children. |
| 3. UNSHARE ---> Revoking share on parent revokes access to children. |
| 4. REPARENT ---> Changing parent lookup updates child security scope. |
| 5. DELETE ---> Deleting parent cascades, removes link, or restricts. |
| 6. MERGE ---> Merging master/subordinate parent combines children. |
| 7. ROLLUP VIEW ---> Surfacing child activities in parent timeline grid. |
+-----------------------------------------------------------------------------+
Cascading Option Matrix
| Option Value | Description | Supported Actions |
|---|---|---|
| Cascade All | The action is applied to all related child records, regardless of state or ownership. | Assign, Share, Unshare, Reparent, Delete, Merge |
| Cascade Active | The action is applied only to active (statecode = 0) child records. Inactive child records remain untouched. | Assign, Share, Unshare, Reparent, Merge |
| Cascade User-Owned | The action is applied only to child records owned by the same user who owns the parent record. | Assign, Share, Unshare, Reparent, Merge |
| Cascade None | The action is not applied to any related child records. | Assign, Share, Unshare, Reparent, Merge, Rollup View |
| Remove Link | The lookup field on the child record is set to null (unlinked), leaving child records intact. | Delete ONLY |
| Restrict Delete | If any related child records exist, the deletion of the parent record is blocked and throws an error. | Delete ONLY |
[!WARNING] Critical Cascading Validation Rules for PL-200:
- Delete Operation Restrictions: The
Deleteaction supports only three options:Cascade All,Remove Link, orRestrict. Setting Delete toCascade ActiveorCascade User-Ownedis invalid and rejected by the platform.- Reparent / Assign / Share Restrictions:
Remove LinkandRestrict Deleteare ONLY valid for theDeleteaction. They cannot be applied to Assign, Share, Unshare, or Reparent.- Rollup View Options:
Rollup Viewsupports onlyCascade AllorCascade None.
Practical Scenario: Cascading Assign vs. Ownership Exposure
Consider a sales organization where an Account is assigned from Sales Rep A to Sales Rep B:
- If the Account-to-Opportunity relationship has
Assign = Cascade All, all Opportunities (including closed/lost deals owned by other team members) are reassigned to Rep B. - If configured as
Assign = Cascade User-Owned, only Opportunities currently owned by Rep A transfer to Rep B. Opportunities owned by technical specialists or secondary reps remain untouched. - If configured as
Assign = Cascade None, no Opportunities transfer ownership.
A hospital uses Dataverse to track Medical Devices and their associated Maintenance Logs (1:N relationship). Due to strict regulatory compliance, when a Medical Device is reassigned to a different department manager, all active maintenance logs must transfer to the new manager. However, historical completed (inactive) logs must permanently remain under the ownership of the technician who performed the work. How should the consultant configure the relationship?
A consulting firm manages Client Accounts and Project Engagements using a 1:N relationship. Account Managers frequently attempt to delete inactive Client Accounts, which inadvertently deletes associated Project Engagements containing billing records. The compliance team mandates that an Account must NEVER be deleted if any Project Engagements exist for that client. Which relationship behavior must be configured?
A training company needs to track student course registrations. A Student can enroll in multiple Courses, and a Course contains multiple Students. For each enrollment, the system must store the Enrollment Date, Final Letter Grade, Attendance Percentage, and Completion Certificate URL. How should the consultant structure this relationship in Dataverse?
A functional consultant is configuring a custom 1:N relationship between Department (Parent) and Employee (Child). The consultant attempts to set the Delete action to 'Cascade User-Owned' and the Reparent action to 'Restrict Delete' in the Configurable Cascading designer. What will happen when the consultant tries to save this relationship?