Skip to main content

Attributes Configuration

Attributes allow you to add custom fields to assets based on their industry and classification level - without writing code.

Understanding Attributes​

What Are Attributes?​

Attributes are user-defined custom fields that extend Asset Pro beyond the standard fields.

Built-in Fields (always available):

  • No., Description, Status, Serial No., etc.

  • Same for all assets regardless of industry/classification

Attributes (configurable):

  • Industry-specific fields

  • Classification-specific fields

  • Customized per business needs

  • Examples: "Cargo Capacity", "MRI Field Strength", "Engine Hours"

Enable Attributes Feature​

Attributes are controlled by a feature toggle in Asset Setup.

To enable/disable:

  1. Choose the πŸ”Ž icon, enter Asset Setup, and choose the related link

  2. Go to Features FastTab

  3. Toggle Enable Attributes

    • β˜‘οΈ Enabled (default): Attribute system is active

    • ☐ Disabled: Attribute tables hidden, performance optimized

When to Disable Attributes

Disable if:

  • You only need standard fields

  • Performance is critical (large databases)

  • You don't need industry-specific customization

Most organizations should keep it enabled for flexibility.

Attribute Structure​

Attributes use a two-part structure:

1. Attribute Definitions​

Purpose: Define what custom fields are available

Structure:

  • Industry Code + Level Number + Attribute Code

  • Defines: Name, Data Type, Options, Validations

  • Applies to: Assets in that industry at that level (or all levels if Level 0)

Example:

Industry: FLEET Level Number: 2 (Vessel Category level) Attribute Code: CARGO-CAP Attribute Name: Cargo Capacity (TEU) Data Type: Decimal

2. Attribute Values​

Purpose: Store actual values for specific assets

Structure:

  • Asset No. + Attribute Code

  • Stores: The actual value in appropriate field (Value Text, Value Integer, etc.)

Example:

Asset No.: MV-001 Attribute Code: CARGO-CAP Value Decimal: 5000

Meaning: "Vessel MV-001 has Cargo Capacity of 5000 TEU"

Creating Attribute Definitions​

Accessing Attribute Definitions​

  1. Choose the πŸ”Ž icon, enter Attribute Definitions, and choose the related link

  2. Click New to create a new attribute definition

Attribute Definition Fields​

Industry Code (required)​

  • Which industry this attribute belongs to

  • Must be defined in Asset Industries

  • Examples: FLEET, MEDICAL, IT

Level Number (required)​

  • Which classification level this attribute applies to

  • 0 = All Levels (applies to all assets in industry)

  • 1, 2, 3... = Specific level only

Examples:

Level Number: 0 = Attribute available for ALL assets in FLEET industry Level Number: 2 = Attribute available only for assets classified at Level 2 Level Number: 3 = Attribute available only for assets classified at Level 3

Attribute Code (required)​

  • Short identifier for the attribute

  • Max 20 characters

  • Examples: CARGO-CAP, MRI-FIELD, ENGINE-HRS

  • Cannot be changed after creation

  • Must be unique within Industry + Level

Attribute Name (required)​

  • Display name of the attribute

  • Max 50 characters

  • Examples: "Cargo Capacity (TEU)", "MRI Field Strength", "Engine Hours"

  • This is what users see on forms

Data Type (required)​

  • Type of data this attribute stores

  • Options:

    • Text - Free text up to 250 characters

    • Integer - Whole numbers

    • Decimal - Decimal numbers (up to 5 decimal places)

    • Date - Date values

    • Boolean - Yes/No, True/False

    • Option - Dropdown list with predefined choices

Option String (for Option type only)​

  • Comma-separated list of allowed values

  • Required when Data Type = Option

  • Must have at least 2 values

  • Example: "Excellent,Good,Fair,Poor"

Option String Format
  • Separate values with commas: Value1,Value2,Value3

  • No quotes needed

  • Spaces around commas are trimmed

  • Example: "Red, Green, Blue" β†’ Three options: "Red", "Green", "Blue"

Mandatory​

  • β˜‘οΈ Checked: Users must enter a value

  • ☐ Unchecked: Optional field

  • Used for required industry-specific data

Default Value (optional)​

  • Pre-filled value when creating new assets

  • Must match the Data Type

  • Examples:

    • Text: "Not Specified"

    • Integer: "0"

    • Decimal: "0.0"

    • Date: "01/01/2024"

    • Boolean: "true" or "false"

    • Option: Must be one of the Option String values

Display Order (optional)​

  • Numeric value controlling display sequence

  • Lower numbers appear first

  • Example: 10, 20, 30, ... (allows insertions)

  • Leave at 0 for alphabetical order

Help Text (optional)​

  • Descriptive text explaining the attribute

  • Max 250 characters

  • Displayed as tooltip or help text

  • Example: "Total cargo capacity measured in Twenty-foot Equivalent Units"

Blocked​

  • β˜‘οΈ Checked: Attribute cannot be used for new assets

  • ☐ Unchecked: Active attribute

  • Use when phasing out an attribute

Attribute Definition Example: Fleet Management​

Attribute 1: Cargo Capacity

Industry Code: FLEET Level Number: 2 (Vessel Category level) Attribute Code: CARGO-CAP Attribute Name: Cargo Capacity (TEU) Data Type: Decimal Mandatory: Yes Default Value: (blank) Display Order: 10 Help Text: Total cargo capacity measured in Twenty-foot Equivalent Units

Attribute 2: Vessel Flag Country

Industry Code: FLEET Level Number: 0 (All levels) Attribute Code: FLAG-COUNTRY Attribute Name: Flag Country Data Type: Text Mandatory: Yes Default Value: (blank) Display Order: 20 Help Text: Country under which the vessel is registered

Attribute 3: Vessel Condition

Industry Code: FLEET Level Number: 0 (All levels) Attribute Code: CONDITION Attribute Name: Vessel Condition Data Type: Option Option String: Excellent,Good,Fair,Poor,Critical Mandatory: No Default Value: Good Display Order: 30 Help Text: Overall condition assessment

Attribute 4: Last Survey Date

Industry Code: FLEET Level Number: 0 (All levels) Attribute Code: SURVEY-DATE Attribute Name: Last Survey Date Data Type: Date Mandatory: No Default Value: (blank) Display Order: 40 Help Text: Date of most recent vessel survey/inspection

Attribute Applicability Logic​

Level Number = 0 (All Levels)​

Attribute applies to all assets in the industry, regardless of classification level.

Example:

Attribute: FLAG-COUNTRY (Level 0) Industry: FLEET

Applies to:

  • Assets classified at Level 1 (Fleet Type: Commercial) βœ…
  • Assets classified at Level 2 (Vessel Category: Cargo Ship) βœ…
  • Assets classified at Level 3 (Vessel Model: Panamax) βœ…
  • Assets with NO classification in FLEET industry βœ…

Use Cases:

  • Common fields across all asset types

  • Industry-wide attributes

  • Examples: "Flag Country" (all vessels), "Manufacturer Warranty" (all equipment)

Level Number = Specific Level​

Attribute applies only to assets classified at that specific level or deeper.

Example:

Attribute: CARGO-CAP (Level 2) Industry: FLEET

Applies to:

  • Assets classified at Level 2 (Cargo Ship) βœ…
  • Assets classified at Level 3 (Panamax) βœ… (inherits from parent level)
  • Assets classified at Level 1 (Commercial) ❌ (not deep enough)
  • Assets with NO classification ❌

Use Cases:

  • Category-specific fields

  • Fields that only make sense for certain classifications

  • Examples: "Cargo Capacity" (only for cargo vessels), "MRI Field Strength" (only for MRI machines)

Working with Attribute Values​

Viewing Attribute Values​

Phase 1 MVP: Attribute values are stored but not yet displayed on Asset Card UI.

Current Access:

  • Values stored in Attribute Value table

  • Direct table access: Choose πŸ”Ž icon, enter Attribute Value, choose the related link

  • Filter by Asset No. to see all attributes for an asset

Future Enhancement:

  • FactBox on Asset Card showing attributes

  • Inline editing of attribute values

  • Attribute filters in asset lists

Data Storage by Type​

Attribute values use separate fields based on data type:

Data TypeStorage FieldExample
TextValue Text"Panama"
OptionValue Text"Good"
IntegerValue Integer5000
DecimalValue Decimal5000.50
DateValue Date01/15/2024
BooleanValue Booleantrue
Single Value Storage

Only ONE value field is populated based on the Data Type:

  • Text/Option attributes β†’ Value Text

  • Integer attributes β†’ Value Integer

  • Decimal attributes β†’ Value Decimal

  • Date attributes β†’ Value Date

  • Boolean attributes β†’ Value Boolean

Other value fields remain empty/zero.

Validation Rules​

Option Type Validation​

For attributes with Data Type = Option:

  • Value Text must match one of the Option String values

  • Case-sensitive match

  • Trimmed spaces

Example:

Attribute: CONDITION Option String: Excellent,Good,Fair,Poor

Valid Values: "Excellent", "Good", "Fair", "Poor" βœ… Invalid Values: "excellent", "GOOD", "Average" ❌

Data Type Validation​

System validates that stored value matches the data type:

Integer:

  • Must be a whole number

  • Example: "5000" βœ…, "5000.5" ❌, "abc" ❌

Decimal:

  • Must be a number

  • Up to 5 decimal places

  • Example: "5000.12345" βœ…, "5000.123456" ⚠️ (rounded), "abc" ❌

Date:

  • Must be a valid date

  • Example: "01/15/2024" βœ…, "2024-01-15" βœ…, "abc" ❌

Boolean:

  • Must be true/false or yes/no

  • Example: "true" βœ…, "false" βœ…, "yes" βœ…, "maybe" ❌

Complete Setup Example: Medical Equipment​

Scenario: Hospital Equipment Management​

Industry: MEDICAL

Classification Structure:

Level 1: Department (Radiology, Surgery, Lab) Level 2: Equipment Category (MRI, CT, X-Ray, Ultrasound) Level 3: Device Model (1.5T MRI, 3T MRI, 64-slice CT, etc.)

Step 1: Create All-Level Attributes​

Attributes that apply to all medical equipment:

Attribute 1: Manufacturer Warranty Expires

Industry Code: MEDICAL Level Number: 0 (All Levels) Attribute Code: WARRANTY-EXP Attribute Name: Manufacturer Warranty Expires Data Type: Date Mandatory: No Default Value: (blank) Display Order: 10

Attribute 2: Requires Specialized Training

Industry Code: MEDICAL Level Number: 0 (All Levels) Attribute Code: SPEC-TRAINING Attribute Name: Requires Specialized Training Data Type: Boolean Mandatory: Yes Default Value: false Display Order: 20

Attribute 3: Maintenance Contract Status

Industry Code: MEDICAL Level Number: 0 (All Levels) Attribute Code: MAINT-STATUS Attribute Name: Maintenance Contract Status Data Type: Option Option String: Active,Expired,No Contract,Pending Renewal Mandatory: Yes Default Value: No Contract Display Order: 30

Step 2: Create Level-Specific Attributes​

Attributes that apply to specific equipment categories:

Attribute 4: MRI Field Strength (Level 2: MRI equipment only)

Industry Code: MEDICAL Level Number: 2 Attribute Code: MRI-FIELD Attribute Name: MRI Field Strength (Tesla) Data Type: Decimal Mandatory: Yes Default Value: (blank) Display Order: 100 Help Text: Magnetic field strength measured in Tesla (e.g., 1.5T, 3T)

Attribute 5: CT Slice Count (Level 2: CT scanners only)

Industry Code: MEDICAL Level Number: 2 Attribute Code: CT-SLICES Attribute Name: CT Slice Count Data Type: Integer Mandatory: Yes Default Value: (blank) Display Order: 110 Help Text: Number of detector rows (e.g., 16, 64, 128, 256)

Attribute 6: Ultrasound Frequency Range (Level 2: Ultrasound only)

Industry Code: MEDICAL Level Number: 2 Attribute Code: US-FREQ Attribute Name: Ultrasound Frequency Range Data Type: Text Mandatory: No Default Value: (blank) Display Order: 120 Help Text: Frequency range in MHz (e.g., "2-5 MHz", "5-12 MHz")

Result: Intelligent Attribute Application​

Asset 1: 3T MRI Scanner

Classification: MEDICAL β†’ Radiology β†’ 3T MRI (Level 3)

Available Attributes: βœ… Manufacturer Warranty Expires (Level 0 - applies to all) βœ… Requires Specialized Training (Level 0 - applies to all) βœ… Maintenance Contract Status (Level 0 - applies to all) βœ… MRI Field Strength (Level 2 - MRI category) ❌ CT Slice Count (Level 2 - only for CT scanners) ❌ Ultrasound Frequency Range (Level 2 - only for ultrasound)

User enters: MRI Field Strength: 3.0

Asset 2: 64-Slice CT Scanner

Classification: MEDICAL β†’ Radiology β†’ 64-slice CT (Level 3)

Available Attributes: βœ… Manufacturer Warranty Expires (Level 0) βœ… Requires Specialized Training (Level 0) βœ… Maintenance Contract Status (Level 0) ❌ MRI Field Strength (only for MRI) βœ… CT Slice Count (Level 2 - CT category) ❌ Ultrasound Frequency Range (only for ultrasound)

User enters: CT Slice Count: 64

Best Practices​

Attribute Design Principles​

Start Simple:

  • Begin with 3-5 key attributes

  • Add more as needs become clear

  • Don't over-engineer initially

Use Level 0 for Common Fields:

  • Fields that apply across all asset types

  • Examples: Warranty dates, condition ratings, notes

  • Reduces repetition

Use Specific Levels for Specialized Fields:

  • Fields that only make sense for certain categories

  • Examples: "Cargo Capacity" for vessels, "MRI Field Strength" for MRI machines

  • Prevents clutter on irrelevant assets

Choose Appropriate Data Types:

  • Text: Use for codes, names, free-form descriptions

  • Integer: Use for counts, whole numbers

  • Decimal: Use for measurements, capacities, ratings

  • Date: Use for dates (not text!)

  • Boolean: Use for yes/no flags

  • Option: Use for predefined choices (better than free text)

Naming Conventions​

Attribute Codes:

  • Short, descriptive, uppercase

  • Use hyphens for readability

  • Examples: CARGO-CAP, MRI-FIELD, MAINT-STATUS

  • Avoid: ATTR1, FIELD_X, A123

Attribute Names:

  • Clear, user-friendly labels

  • Include units if applicable

  • Examples: "Cargo Capacity (TEU)", "MRI Field Strength (Tesla)"

  • Avoid: "Capacity", "Field", "Value"

Option Strings:

  • Use title case for consistency

  • Keep values concise

  • Examples: "Excellent,Good,Fair,Poor" not "EXCELLENT, GOOD, FAIR, POOR"

Mandatory Attributes​

Use sparingly:

  • Only for truly required business data

  • Example: "MRI Field Strength" is critical for MRI assets

  • Avoid: Making everything mandatory "just in case"

Impact:

  • Users cannot save asset without entering mandatory attributes

  • Can slow down data entry if overused

  • Balance completeness vs usability

Default Values​

When to use:

  • Common starting values

  • Industry standards

  • "Not Specified" for optional text fields

When NOT to use:

  • Fields that vary significantly

  • Measurements that must be looked up

  • Dates (usually asset-specific)

Display Order​

Recommended pattern:

  • Use increments of 10: 10, 20, 30, 40...

  • Allows inserting attributes later (e.g., 15, 25)

  • Group related attributes: 10-19 (basic info), 20-29 (technical specs), etc.

Example:

Display Order: 10 - Manufacturer Warranty Expires Display Order: 20 - Maintenance Contract Status Display Order: 30 - Requires Specialized Training Display Order: 100 - MRI Field Strength (technical specs start at 100) Display Order: 110 - Coil Type Display Order: 120 - Bore Size

Attributes vs Other Extensibility Options​

When to Use Attributes​

βœ… Use Attributes when:

  • Field is industry-specific or classification-specific

  • Different asset types need different fields

  • You want users to configure without coding

  • 5-20 custom fields needed

  • Values are simple data types (text, numbers, dates, options)

Examples:

  • Vessel cargo capacity

  • MRI field strength

  • Engine hours

  • Warranty expiration dates

When to Use Standard Fields​

βœ… Use Standard Fields when:

  • Field applies to ALL assets universally

  • Field is part of core asset management

  • Field needs complex business logic

  • Field requires deep system integration

Examples:

  • Status, Blocked (already built-in)

  • Current Holder (universal tracking)

  • Parent Asset No. (core functionality)

When to Customize Code​

βœ… Customize Code when:

  • Need complex validations

  • Need integration with other modules

  • Need calculated fields with business logic

  • Need workflow automation

  • Attributes are insufficient for complexity

Examples:

  • Auto-calculating depreciation

  • Integration with Fixed Assets module

  • Complex approval workflows

  • Real-time IoT sensor integration

Troubleshooting​

Cannot Create Attribute Definition​

Error: "Level Number must have a value in Classification Lvl"

  • Cause: Level Number references non-existent classification level

  • Solution: Create the classification level first, or use Level Number = 0 for all levels

Option String Validation Errors​

Error: "Option String must contain at least 2 values separated by commas"

  • Cause: Option String has fewer than 2 values

  • Solution: Add more comma-separated values: "Value1,Value2"

Error: "Option String can only be set for Option data type"

  • Cause: Set Option String for non-Option data type

  • Solution: Change Data Type to Option, or clear Option String

Default Value Validation Errors​

Error: "Default Value must be a valid integer/decimal/date/boolean"

  • Cause: Default Value doesn't match the Data Type

  • Solution: Enter a value that matches:

    • Integer: "100"

    • Decimal: "100.5"

    • Date: "01/15/2024"

    • Boolean: "true" or "false"

Attribute Value Errors​

Error: "Value X is not in the allowed options: Y"

  • Cause: Trying to set Option attribute to value not in Option String

  • Solution: Choose one of the predefined options from the Option String