Skip to main content

ERD Validation & Auto-Fix Reference

This document lists all validation rules and auto-fix capabilities that help recover from problematic ERD structures.

Overview

The application automatically validates Mermaid ERD files and provides one-click fixes for common issues. Each validation rule detects specific problems and most provide automatic corrections.

Validation Categories

1. Entity Structure Issues

Validation TypeSeverityAuto-FixDescription
missing_primary_keyErrorEntity lacks a primary key column
multiple_primary_keysErrorEntity has multiple PK columns (keeps first)
duplicate_columnsWarningEntity has duplicate attribute definitions
empty_entityErrorEntity has no attributes defined
missing_attributesErrorEntity declaration but no attributes

2. Naming Convention Issues

Validation TypeSeverityAuto-FixDescription
invalid_entity_nameWarningEntity name contains invalid characters
entity_name_too_longWarningEntity name exceeds 64 characters
reserved_entity_nameWarningEntity name conflicts with reserved words
entity_name_caseWarningEntity name case issues
invalid_attribute_nameWarningAttribute name contains invalid characters
attribute_name_too_longWarningAttribute name exceeds 128 characters
reserved_attribute_nameWarningAttribute name conflicts with reserved words
naming_conflictWarningAttribute name conflicts with system columns

3. Relationship Issues

Validation TypeSeverityAuto-FixDescription
missing_entityErrorRelationship references non-existent entity
missing_foreign_keyWarningRelationship lacks corresponding FK attribute
foreign_key_namingWarningForeign key doesn't follow naming conventions
duplicate_relationshipWarningMultiple identical relationships between entities
self_referencing_relationshipWarningEntity has relationship to itself
many_to_many_detectedWarningDirect M:N relationship (creates junction table)
orphaned_relationshipWarningRelationship with missing entities
circular_dependencyWarningCircular reference between entities
invalid_cardinalityWarningInvalid relationship cardinality syntax
bidirectional_relationshipWarningBidirectional relationship detected

4. Dataverse-Specific Issues

Validation TypeSeverityAuto-FixDescription
status_column_ignoredInfoStatus columns (uses built-in statecode/statuscode)
choice_column_detectedInfoChoice columns (converts to string for valid Mermaid)
system_column_conflictWarningConflicts with Dataverse system columns
system_attribute_conflictErrorConflicts with reserved system attributes

5. Technical/Parser Issues

Validation TypeSeverityAuto-FixDescription
cdm_detection_failedInfoCDM entity detection service unavailable
sql_reserved_wordWarningUses SQL reserved words

Auto-Fix Behaviors

Entity Fixes

  • Missing Primary Key: Adds string id PK as a primary key
  • Multiple Primary Keys: Keeps first PK, removes others
  • Duplicate Columns: Merges duplicates, preserving constraints and descriptions
  • Invalid Names: Sanitizes names to follow Dataverse conventions

Relationship Fixes

  • Missing Entity: Creates a missing entity with basic structure
  • Missing Foreign Key: Adds proper FK attribute to entity
  • Foreign Key Naming: Renames FK to follow {entity}_id convention
  • Many-to-Many: Creates junction table with proper relationships
  • Self-Referencing: Removes problematic self-relationships
  • Duplicate Relationships: Removes duplicate relationship definitions

Dataverse Fixes

  • Status Columns: Removes status columns (Dataverse uses built-in status)
  • Choice Columns: Converts to a string type for valid Mermaid rendering
  • System Conflicts: Renames conflicting attributes with a prefix

Naming Fixes

  • Invalid Characters: Removes/replaces invalid characters
  • Reserved Words: Adds entity prefix to avoid conflicts
  • Length Issues: Truncates names to fit limits
  • Case Issues: Applies proper PascalCase/camelCase

Usage

Automatic Validation

  • Upload ERD file → Automatic validation runs
  • Issues displayed with severity indicators
  • Fix buttons appear for auto-fixable issues

One-Click Fixes

  • Click the "Fix this" button on any warning
  • Fix applied automatically
  • Warning disappears on success
  • ERD content updated in real-time

Batch Operations

  • Fix all auto-fixable issues at once
  • Smart ordering prevents fix conflicts
  • Progress feedback during batch operations

Safety Features

  • Non-destructive: Original content preserved
  • Deterministic: Same input produces same fixes
  • Validated: All fixes produce valid Mermaid syntax
  • Reversible: Clear indication of what was changed
  • Atomic: Fixes either succeed completely or fail safely

Fix Success Rates

  • Entity Structure: ~95% success rate
  • Naming Issues: ~98% success rate
  • Relationships: ~85% success rate
  • Dataverse Issues: ~100% success rate

Debug Information

Each fix provides detailed information:

  • What was detected
  • What action was taken
  • Why the fix was necessary
  • Any manual steps required

Manual Review Required

Some fixes require manual review:

  • Junction table naming
  • Business logic preservation
  • Complex relationship patterns
  • CDM entity integration

Best Practices

  1. Run validation early - Catch issues before deployment
  2. Review auto-fixes - Understand what changed
  3. Test fixed ERDs - Verify business logic intact
  4. Use descriptive names - Reduce naming conflicts
  5. Follow conventions - Minimize validation issues