Multi-Valued Fields
Multi-valued fields allow a single asset record to hold multiple values for the same field — for example, multiple IP addresses, multiple software installations, or multiple service managers. This is in contrast to standard specification fields, which store a single value per asset per field. This page explains when to use multi-valued fields, the available types, and how they differ from lookup lists and sub-tables.
Prerequisites
- You should understand single-valued specification fields before working with multi-valued fields. See Specification Data.
- You must have Administrator permissions in both xAssets and SQL Server to create specification fields.
When to Use Multi-Valued Fields
Use multi-valued fields when an asset genuinely has more than one value for a given attribute. Common examples:
| Scenario | Field Type | Example Values |
|---|---|---|
| A server with multiple IP addresses | Text Array | 192.168.1.10, 192.168.1.11, 10.0.0.5 |
| A computer with multiple installed applications | Lookup Array | Microsoft Office, Adobe Acrobat, Slack |
| An asset with multiple responsible managers | Asset Custodian | IT Manager, Finance Approver, Service Owner |
| A device with multiple MAC addresses | Text Array | AA:BB:CC:DD:EE:01, AA:BB:CC:DD:EE:02 |
If an asset has only one value (e.g., one operating system, one serial number), use a standard single-valued field instead.
Multi-Valued Field Types
xAssets provides three multi-valued specification data types:
Text Array
A Text Array field stores multiple free-text values per asset. Each value is an independent text entry with no relationship to a shared lookup table.
When to use: For data that varies freely per asset and does not come from a controlled list — IP addresses, MAC addresses, internal reference numbers.
How it works:
- Users add or remove values on the Specification Data tab of the asset editor.
- Each value is stored as a separate row in the specification data sub-table.
- Values can be queried and reported on individually.
Lookup Array
A Lookup Array field stores multiple values per asset, where each value is selected from a shared lookup table. This creates a many-to-many relationship between assets and lookup values.
When to use: For data where values should be consistent across assets — software categories, compliance tags, service types, risk classifications.
How it works:
- The lookup table is shared across all assets (just like a single-valued Lookup List field).
- Users select one or more values from the dropdown on the Specification Data tab.
- Adding a value to one asset does not affect other assets.
- The lookup table is managed through the Lookup Lists editor.
Lookup Array vs. Lookup List:
| Feature | Lookup List (single-valued) | Lookup Array (multi-valued) |
|---|---|---|
| Values per asset | One | Many |
| Values from shared list | Yes | Yes |
| Appears on asset forms | Yes (as a dropdown) | Yes (on Specification Data tab) |
| Suitable for | Category, status, type | Tags, classifications, certifications |
Asset Custodian
An Asset Custodian field stores multiple links to custodian (user) records per asset. This is a specialised multi-valued type that creates relationships between assets and people.
When to use: When multiple people have defined roles for a single asset — service managers, backup custodians, approvers, deployment managers.
How it works:
- Users select custodians from the custodian lookup.
- Each link can optionally carry a role label (e.g., "Primary Custodian", "Service Owner").
- The standard Custodian field on the asset remains a single-valued field for the primary custodian. Asset Custodian specification fields are for additional roles.
Sub-Tables and Inter-Table Relationships
Multi-valued fields in xAssets are implemented as sub-tables — separate database tables that link back to the main Asset table. This architecture provides several advantages:
- No column limits — you can have as many values per asset as needed, without consuming additional columns on the Asset table.
- Queryable — multi-valued data can be included in queries and reports. The query engine handles the one-to-many join automatically.
- Auditable — changes to multi-valued data are logged in the asset history.
- Exportable — multi-valued fields can be exported to Excel and included in data extracts.
How Sub-Tables Relate to the Asset Table
Asset Table (one record per asset)
├── Text Array sub-table (one-to-many: multiple text values per asset)
├── Lookup Array sub-table (many-to-many: shared lookup values across assets)
└── Asset Custodian sub-table (many-to-many: multiple custodians per asset)
Each sub-table record contains:
- A reference to the parent asset (AssetID)
- The specification field ID (identifying which field this value belongs to)
- The value itself (text, lookup ID, or custodian ID)
Creating a Multi-Valued Field
- Navigate to Admin > Custom Fields (Specification Data).
- Click New to create a new specification field.
- Enter a Field Name (e.g., "IP Addresses", "Service Managers", "Compliance Tags").
- Set the Table Name to "Asset" (or another table if extending a different entity).
- Select the Data Type: Text Array, Lookup Array, or Asset Custodian.
- Save the field.
For Lookup Array fields, you must also populate the lookup values:
- Navigate to the Lookup Lists editor.
- Find the lookup list for your new field.
- Add the allowed values.
Warning: The Data Type cannot be changed after creation. If you create a Text Array but later realise you need a Lookup Array, you must create a new field and migrate the data. Choose carefully.
Where Multi-Valued Fields Appear
Multi-valued fields appear in the Specification Data tab of the asset editor. Unlike single-valued specification fields, multi-valued fields cannot be placed directly on the main asset form — they are always accessed through the Specification Data tab.
In queries, multi-valued fields can be added as columns. When an asset has multiple values, the query result may show:
- The first value only (default)
- All values concatenated (configurable)
- One row per value, repeating the asset data (if the query is configured for expanded output)
Multi-Valued Fields vs. Lookup Lists
A common question is whether to use a multi-valued Lookup Array field or a single-valued Lookup List field with a more complex data model. The decision depends on the data:
| Question | If Yes, Use... |
|---|---|
| Can an asset have more than one value? | Lookup Array (multi-valued) |
| Should each asset have exactly one value? | Lookup List (single-valued) |
| Do you need to query "which assets have value X?" | Either — both are queryable |
| Do you need dependent dropdowns (e.g., Model depends on Manufacturer)? | Lookup List — multi-valued fields do not support Depends On |
| Do you need the field on the main asset form? | Lookup List — multi-valued fields appear on the Specification Data tab only |
Tips
Tip: Use Lookup Array fields rather than Text Array fields whenever the set of possible values is known and should be controlled. Lookup Arrays ensure data consistency and make reporting more reliable.
Tip: When creating Asset Custodian fields, use descriptive names that indicate the role (e.g., "Service Owner", "Backup Custodian", "Procurement Approver") so users understand the purpose of each field.
Tip: Multi-valued fields are ideal for tagging assets with multiple classifications — for example, compliance frameworks (SOX, PCI-DSS, HIPAA) or service categories (Production, DR, Dev/Test).
Warning: Avoid creating multi-valued fields for data that should be tracked as a separate entity with its own lifecycle. For example, software installations are better tracked through the Software Licencing module than through a multi-valued specification field.
Related Articles
- Specification Data — creating and managing all specification field types
- Specification Data Category — restricting fields to specific asset categories
- Specification Data Forms — adding fields to forms
- Lookup Lists — managing dropdown values for lookup fields
- Queries — including specification fields in queries