Skip to main content

Parent-Child Relationships

Parent-Child Relationships track the physical assembly structure of your assets - what components are physically inside or attached to other assets.

Understanding Physical Hierarchy

Classification vs Physical Hierarchy

Asset Pro uses two separate structures for different purposes:

Classification HierarchyPhysical Hierarchy
Purpose: Organizational taxonomyPurpose: Physical composition
Question: "What TYPE is this asset?"Question: "What's INSIDE this asset?"
Example: Commercial → Cargo Ship → PanamaxExample: Vessel → Engine → Turbocharger
Structure: Defined in Classification Levels/ValuesStructure: Defined via Parent Asset No. on assets
Unlimited levels (up to 50)Unlimited depth (up to 100 levels)

Don't Confuse the Two
Classification is about categorization: "This is a Panamax Bulk Carrier"
Physical Hierarchy is about composition: "This vessel contains Engine #1"

They are completely independent:

  • A vessel can be classified as "Panamax" (classification)

  • AND contain an engine as a child asset (physical hierarchy)

Real-World Example: Marine Vessel

Classification Structure:

Industry: Fleet Management ├─ Level 1: Fleet Type = "Commercial" ├─ Level 2: Vessel Category = "Cargo Ship" └─ Level 3: Vessel Model = "Panamax Bulk Carrier"

Physical Hierarchy:

MV-001: Main Vessel (Panamax Bulk Carrier) ├─ ENG-001: Main Engine (Diesel Engine) │ ├─ TC-001: Turbocharger (Turbo Component) │ ├─ FP-001: Fuel Pump (Pump) │ └─ OC-001: Oil Cooler (Cooling System) ├─ ENG-002: Auxiliary Engine (Generator) └─ PROP-001: Propeller (Propulsion Component)

Both structures coexist:

  • Each asset has its own classification (what type it is)

  • Each asset may have a parent (what it's physically inside)

Creating Parent-Child Relationships

Assigning a Parent Asset

  1. Open the Asset Card for the child asset

  2. Go to Physical Hierarchy group

  3. In Parent Asset No. field, select the parent asset

  4. System automatically calculates:

    • Hierarchy Level - Depth in tree (1, 2, 3, etc.)

    • Root Asset No. - Top-most ancestor

Example: Adding Engine to Vessel

Before: Asset: ENG-001 (Main Engine) Parent Asset No.: (blank) Hierarchy Level: 1 Root Asset No.: (blank)

After assigning parent: Asset: ENG-001 (Main Engine) Parent Asset No.: MV-001 Hierarchy Level: 2 (child of vessel) Root Asset No.: MV-001 (top-most parent)

Creating Multi-Level Hierarchies

You can create unlimited levels by assigning parents in sequence.

Step 1: Create Vessel (root asset)

Asset: MV-001 (Main Vessel) Parent Asset No.: (blank) Hierarchy Level: 1 Root Asset No.: (blank)

Step 2: Create Engine as child of Vessel

Asset: ENG-001 (Main Engine) Parent Asset No.: MV-001 Hierarchy Level: 2 Root Asset No.: MV-001

Step 3: Create Turbocharger as child of Engine

Asset: TC-001 (Turbocharger) Parent Asset No.: ENG-001 Hierarchy Level: 3 Root Asset No.: MV-001

Result: Three-level hierarchy

MV-001 (Level 1, Root) └─ ENG-001 (Level 2, Root: MV-001) └─ TC-001 (Level 3, Root: MV-001)

Physical Hierarchy Fields

Parent Asset No.

Purpose: Links this asset to its physical parent

Behavior:

  • Leave blank for standalone assets (root assets)

  • Select another asset to make this a child asset

  • System validates to prevent circular references

Validation Rules:

  • ❌ Cannot assign asset as its own parent

  • ❌ Cannot create circular references (A→B→C→A)

  • ❌ Parent must exist

  • ✅ Can change parent (re-parents the asset)

  • ✅ Can clear parent (makes asset standalone)

When you change parent:

  • Hierarchy Level recalculates

  • Root Asset No. recalculates

  • Entire sub-tree moves with the asset

Hierarchy Level (Read-Only)

Purpose: Shows depth in physical assembly tree

Values:

  • 1 = Root asset (no parent)

  • 2 = Direct child of root

  • 3 = Grandchild of root

  • 4+ = Deeper levels

Calculation:

  • Automatically calculated when Parent Asset No. is set

  • Parent's Level + 1

  • Recalculates when parent changes

Use Cases:

  • Filter assets by level (e.g., "Show only root assets" = Level 1)

  • Reports: "All Level 2 components across all vessels"

  • Identify depth of assembly structures

Root Asset No. (Read-Only)

Purpose: Points to the top-most parent in the hierarchy

Calculation:

  • System walks up parent chain until it finds asset with no parent

  • That asset is the root

  • All descendants share the same root

Example:

MV-001 (Root Asset No. = blank) ├─ ENG-001 (Root Asset No. = MV-001) │ └─ TC-001 (Root Asset No. = MV-001) └─ PROP-001 (Root Asset No. = MV-001)

Use Cases:

  • Group all components: Filter by Root Asset No. = MV-001

  • Complete assembly view: Show all assets belonging to one root

  • Bulk operations: Transfer entire assembly by root

  • Reporting: "All components under Vessel MV-001"

Has Children (FlowField)

Purpose: Indicates if this asset has child assets

Calculation:

  • FlowField: Checks if any assets have Parent Asset No. = this asset's No.

  • ☑️ True = Has children

  • ☐ False = No children (leaf asset)

Use Cases:

  • Identify parent vs leaf assets

  • Prevent deletion of assets with children

  • Reports: "All parent assets in the system"

Child Asset Count (FlowField)

Purpose: Counts how many direct children this asset has

Calculation:

  • FlowField: Count of assets where Parent Asset No. = this asset's No.

  • Direct children only (not grandchildren)

Example:

MV-001 ├─ ENG-001 │ ├─ TC-001 │ └─ FP-001 └─ PROP-001

Child Asset Count: MV-001: 2 (ENG-001, PROP-001) ENG-001: 2 (TC-001, FP-001) TC-001: 0

Validation Rules and Safeguards

Asset Pro enforces strict validation to maintain hierarchy integrity.

Rule 1: No Self-Parenting

Error: "Asset ASSET-0001 cannot be its own parent."

Cause: Trying to assign an asset as its own parent

Example:

Asset: ENG-001 Parent Asset No.: ENG-001 ❌ ERROR

Solution: Select a different asset as parent

Rule 2: No Circular References

Error: "Circular reference detected: Asset ASSET-0001 appears in its own parent chain."

Cause: Creating a circular loop in the parent chain

Example:

ENG-001 → Parent: MV-001 ✅ MV-001 → Parent: PROP-001 ✅ PROP-001 → Parent: ENG-001 ❌ ERROR (circular: ENG→MV→PROP→ENG)

Detection:

  • System walks up parent chain

  • If it encounters the current asset, it's circular

  • Checks up to 100 levels deep

Solution: Break the loop by assigning a different parent

Rule 3: Parent Must Exist

Error: "Parent asset ASSET-9999 does not exist."

Cause: Selected parent asset doesn't exist in Asset table

Solution: Select a valid existing asset

Rule 4: Maximum Depth Limit

Error: "Maximum parent chain depth of 100 levels exceeded for asset ASSET-0001."

Cause: Parent chain exceeds 100 levels

Why: Safety limit to prevent:

  • Circular references that evade detection

  • Performance issues with extremely deep trees

  • Data corruption scenarios

Solution:

  • Review hierarchy structure

  • Flatten excessive nesting

  • Investigate possible circular reference

Rule 5: Cannot Delete Parent with Children

Error: "Cannot delete asset ASSET-0001 because it has child assets."

Cause: Trying to delete an asset that has child assets

Solution:

  1. Delete or re-parent all child assets first

  2. Then delete the parent asset

Why: Prevents orphaned assets with invalid Parent Asset No.

Working with Hierarchies

Viewing Child Assets

From Asset Card:

  1. Open parent asset's Asset Card

  2. Note the Child Asset Count field

  3. To see children:

    • Go to Assets list

    • Filter: Parent Asset No. = (current asset No.)

    • Shows all direct children

Future Enhancement:

  • Dedicated "Child Assets" FactBox on Asset Card

  • Tree view of hierarchy

  • Drill-down navigation

Viewing Entire Assembly

Show all components under a root asset:

  1. Note the Root Asset No. of any asset in the assembly

  2. Go to Assets list

  3. Filter: Root Asset No. = (root asset number)

  4. Result: All assets in the entire assembly tree

Example:

Filter: Root Asset No. = MV-001

Results: ENG-001 (Level 2) TC-001 (Level 3) FP-001 (Level 3) OC-001 (Level 3) ENG-002 (Level 2) PROP-001 (Level 2)

Re-Parenting Assets

You can change the parent of an asset at any time.

Effect of Re-Parenting:

  • Asset moves to new parent

  • Hierarchy Level recalculates

  • Root Asset No. recalculates

  • Entire sub-tree moves with the asset

Example: Move Engine to Different Vessel

Before: MV-001 └─ ENG-001 └─ TC-001

Change: ENG-001 → Parent Asset No. = MV-002

After: MV-001 (empty now)

MV-002 └─ ENG-001 (moved) └─ TC-001 (moved automatically with parent)

Use Cases:

  • Component replacement/swapping

  • Asset relocations

  • Maintenance cycles (remove/reinstall components)

Making Asset Standalone

To remove an asset from a hierarchy:

  1. Open the Asset Card

  2. Clear Parent Asset No. field

  3. System updates:

    • Hierarchy Level = 1

    • Root Asset No. = (blank)

Effect:

  • Asset becomes a root asset

  • Any child assets remain attached (they stay children)

Example:

Before: MV-001 └─ ENG-001 └─ TC-001

Clear: ENG-001 → Parent Asset No. = (blank)

After: MV-001 (no children)

ENG-001 (now root) └─ TC-001 (still child of ENG-001)

Use Cases and Examples

Use Case 1: Marine Vessel Components

Scenario: Track all components of a cargo vessel

Structure:

MV-PANAMA-001 (Panamax Bulk Carrier) ├─ ENG-MAIN-001 (Main Propulsion Engine) │ ├─ TC-HIGH-001 (High Pressure Turbocharger) │ ├─ TC-LOW-001 (Low Pressure Turbocharger) │ ├─ FP-MAIN-001 (Main Fuel Pump) │ └─ OC-ENG-001 (Engine Oil Cooler) ├─ ENG-AUX-001 (Auxiliary Generator Engine) ├─ ENG-AUX-002 (Auxiliary Generator Engine) ├─ PROP-001 (Fixed Pitch Propeller) └─ NAV-001 (Navigation Equipment Suite) ├─ RADAR-001 (Radar System) ├─ GPS-001 (GPS System) └─ AIS-001 (AIS Transponder)

Benefits:

  • Complete bill of materials for vessel

  • Track component locations

  • Maintenance planning per component

  • Replacement history

  • Spare parts management

Use Case 2: Medical Equipment Assembly

Scenario: Track components of MRI machine

Structure:

MRI-750W-EAST (GE MRI Scanner) ├─ MAGNET-001 (Superconducting Magnet) │ └─ COOL-001 (Cryogenic Cooling System) ├─ RF-001 (RF Coil System) │ ├─ COIL-HEAD-001 (Head Coil) │ ├─ COIL-BODY-001 (Body Coil) │ └─ COIL-KNEE-001 (Knee Coil) ├─ COMP-001 (Computer System) └─ TABLE-001 (Patient Table)

Benefits:

  • Track expensive modular components

  • Component-specific maintenance schedules

  • Replacement cost tracking

  • Warranty management per component

  • Utilization tracking

Use Case 3: Construction Equipment

Scenario: Track attachments for excavator

Structure:

EX-320D-003 (CAT 320D Excavator) ├─ BUCKET-24IN (24" Digging Bucket) ├─ BUCKET-36IN (36" Digging Bucket) ├─ HAMMER-H120 (Hydraulic Hammer) └─ GRAPPLE-001 (Grapple Attachment)

Benefits:

  • Track interchangeable attachments

  • Know which attachments are currently installed

  • Maintenance per attachment

  • Billing for attachment usage

  • Inventory of available attachments

Use Case 4: IT Infrastructure

Scenario: Track components in server rack

Structure:

RACK-DC1-R08 (Data Center Rack 8) ├─ SRV-001 (Database Server) │ ├─ HDD-001 (4TB HDD) │ ├─ HDD-002 (4TB HDD) │ └─ RAM-64GB (64GB RAM Module) ├─ SRV-002 (Application Server) ├─ SRV-003 (Web Server) ├─ SW-001 (48-Port Network Switch) └─ UPS-001 (Rack UPS 3000VA)

Benefits:

  • Physical location tracking

  • Component-level asset tracking

  • Upgrade/replacement history

  • CMDB integration

  • Configuration management

Best Practices

When to Use Parent-Child

✅ Use for:

  • Physical components: Engine is inside vessel

  • Installed attachments: Bucket on excavator

  • Rack-mounted equipment: Server in rack

  • Modular assemblies: Coils in MRI machine

  • Removable parts: Swappable components

❌ Don't use for:

  • Classification: Use Classification Levels instead

  • Location tracking: Use Current Holder instead

  • Organizational structure: Use Classification instead

  • Related assets: Not the same as "related to"

Hierarchy Design Tips

Start Shallow:

  • Begin with 1-2 levels: Parent → Child

  • Add deeper levels as needed

  • Don't over-engineer initially

Logical Grouping:

  • Group by physical containment

  • Match how assets are actually assembled

  • Think: "If I disassemble this, what comes out?"

Practical Depth:

  • Most hierarchies are 2-4 levels deep

  • Going deeper than 5 levels is rare

  • If approaching 10+ levels, reconsider structure

Component Naming:

  • Include parent reference in child description

  • Example: "Main Engine - Turbocharger" (not just "Turbocharger")

  • Helps identification when viewing flat asset lists

Maintenance and Updates

Document Changes:

  • Record why components were re-parented

  • Use Description or notes

  • Tracks component swap history

Regular Review:

  • Quarterly: Verify hierarchy matches physical reality

  • After maintenance: Update component relationships

  • Before decommission: Break down assemblies

Handle Removed Components:

  • When component removed: Clear Parent Asset No.

  • Don't delete (preserves history)

  • Set Status = Disposed if component retired

Reporting and Analysis

Common Reports

Component Count by Root Asset

  • Filter: Root Asset No. = specific asset

  • Group by: Hierarchy Level

  • Shows: Complete assembly structure

Parent Assets Report

  • Filter: Has Children = Yes

  • Shows: All assets that contain components

  • Use: Identify major assemblies

Orphaned Assets Check

  • Filter: Parent Asset No. <> blank

  • Cross-check: Parent asset exists

  • Purpose: Data quality validation

Hierarchy Depth Analysis

  • Group by: Hierarchy Level

  • Shows: Distribution of assets by level

  • Identifies: Overly complex structures

Future Enhancements

Phase 1 MVP includes core parent-child structure. Future phases will add:

  • Tree View: Visual hierarchy browser

  • FactBoxes: Show children on Asset Card

  • Drag-Drop: Reorganize hierarchy visually

  • Bulk Operations: Move entire branches

  • BOM Reports: Complete assembly reports

  • Cost Rollup: Sum component costs to parent