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:
-
Choose the π icon, enter Asset Setup, and choose the related link
-
Go to Features FastTab
-
Toggle Enable Attributes
-
βοΈ Enabled (default): Attribute system is active
-
β Disabled: Attribute tables hidden, performance optimized
-
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β
-
Choose the π icon, enter Attribute Definitions, and choose the related link
-
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"
-
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 Type | Storage Field | Example |
|---|---|---|
| Text | Value Text | "Panama" |
| Option | Value Text | "Good" |
| Integer | Value Integer | 5000 |
| Decimal | Value Decimal | 5000.50 |
| Date | Value Date | 01/15/2024 |
| Boolean | Value Boolean | true |
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