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