Attribute Types in JSM Assets
JSM Assets supports these attribute types:
| Type | Description | Use For |
|---|---|---|
| Text | Single line, max 255 chars | Names, codes, short values |
| Integer | Whole numbers | Counts, quantities, ports |
| Boolean | Yes/No checkbox | Flags, toggles |
| Date | Date only | Start dates, expiry dates |
| DateTime | Date and time | Timestamps, scheduled times |
| URL | Hyperlink | Documentation links, portals |
| Email address | Contact emails | |
| Textarea | Multi-line text, max 1M chars | Descriptions, notes |
| Select | Dropdown single choice | Status, category, type |
| Object | Link to another object type | Relationships |
| User | Link to Jira user | Asset owners, assignees |
User vs Object: When to Use Each
Use User type when linking to Jira users. This enables notifications to the linked user, permission-based visibility, and integration with Jira user management.
Use Object type when linking to Person objects in your CMDB. This is better for organizational data (reporting structure, departments), tracking people who are not Jira users, and maintaining historical records.
When to Use Each Type
Text vs. Textarea
| Scenario | Use | Example |
|---|---|---|
| Single value, < 100 chars | Text | Hostname: web-server-01 |
| Multiple lines or long content | Textarea | Description: This server hosts... |
| Structured format expected | Text | Phone: +1-555-555-1234 |
| Freeform notes | Textarea | Notes: Upgraded RAM on 2024-03-15... |
Tip: Text fields are searchable and sortable. Textarea fields are harder to query.
Text vs. Select
| Scenario | Use | Why |
|---|---|---|
| Limited, known options | Select | Enforces consistency |
| User-entered, unlimited options | Text | Can't predict all values |
| Values will expand over time | Select (add as needed) | Start controlled |
| Truly unique per object | Text | Serial numbers, hostnames |
Good Select examples:
Status: [Active, Inactive, Retired]
Environment: [Production, Development, Staging, Test]
Criticality: [Critical, High, Medium, Low]
Good Text examples:
Serial Number: ABC123456
Hostname: prod-web-03
Employee ID: E12345
Boolean: When Yes/No is Clear
| Good Boolean | Bad Boolean (Use Select) |
|---|---|
SSO Enabled: Yes/No |
Authentication: [SSO, Password, MFA, None] |
Is Production: Yes/No |
Environment: [Prod, Dev, Stage] |
Active: Yes/No |
Status: [Active, Pending, Retired] |
Rule: If there might be a third option later, use Select.
Required vs. Optional Attributes
When to Require
Require attributes that are:
| Criteria | Example |
|---|---|
| Essential for identification | Name |
| Critical for workflows | Status, Criticality |
| Needed for reporting | Owner, Department |
| Required by policy | Data Classification |
When to Keep Optional
| Criteria | Example |
|---|---|
| Not always known | End Date (current employees) |
| Only applies to some | Parent Department (top-level) |
| Nice to have | Description, Notes |
| External data you may not have | Serial Number (for software) |
The Minimum Viable Object
Every object type should have a small set of required fields that allow creation without blocking on missing data:
Too restrictive:
Server (all required):
- Hostname
- IP Address
- OS
- Owner
- Environment
- Data Center
- Rack
- Purchase Date
- Warranty Expiration
Just right:
Server:
- Hostname (required)
- Status (required, default: Active)
- IP Address (optional - assign later)
- OS (optional)
- Owner (optional - assign later)
- Environment (optional)
...
Select Fields: Best Practices
How Many Options?
| Options | Guidance |
|---|---|
| 2-3 | Consider Boolean instead |
| 4-10 | Ideal for Select |
| 10-20 | Still okay, but review if all are used |
| 20+ | Consider hierarchy or separate object type |
Ordering Options
| Type | Ordering |
|---|---|
| Status/Lifecycle | By workflow order: Draft > Active > Retired |
| Severity/Priority | By importance: Critical > High > Medium > Low |
| Size/Quantity | By size: Small > Medium > Large |
| Alphabetical | When no logical order exists |
Common Mistakes
Mistake 1: Too Many Attributes
Problem: 50+ attributes on an object type, most rarely filled.
Symptoms:
- Forms are overwhelming
- Data is sparse
- Users skip optional fields
- Reports are mostly empty columns
Solution: Start with 10-15 attributes. Add more based on actual need. Archive unused attributes (don't delete - they may have historical data).
Mistake 2: Freetext Chaos
Problem: Using Text when Select would work.
Active
active
ACTIVE
Running
In Use
Deployed
Production
All mean the same thing. Now your reports are broken.
Solution: Use Select with controlled values.
Mistake 3: Overloaded Fields
Problem: One field storing multiple pieces of information.
Contact: "John Smith (john@company.com) - 555-1234 - Ext 42"
Solution: Separate attributes:
Contact Name: John Smith
Contact Email: john@company.com
Contact Phone: 555-1234
Contact Extension: 42
Mistake 4: Duplicate Data
Problem: Storing the same data in multiple places.
Application:
- Owner Name: Jane Smith
- Owner Email: jane@company.com
Person:
- Name: Jane Smith
- Email: jane@company.com
Solution: Use an Object reference:
Application:
- Owner: [Reference to Person object]
Mistake 5: Missing Context
Problem: Attribute name doesn't explain what's expected.
Date: ??? (Purchase date? Install date? Warranty date?)
Owner: ??? (Business owner? Technical owner? Data owner?)
Solution: Specific names with descriptions:
Purchase Date: "Date the asset was purchased"
Business Owner: "Person accountable for business decisions"
Technical Owner: "Person responsible for technical maintenance"
Good vs. Bad Attribute Design
Example: Server Object Type
Bad Design:
| Attribute | Type | Issue |
|---|---|---|
| Info | Textarea | Too vague |
| Status | Text | Should be Select |
| Owner | Text | Should be Object reference |
| Date | Date | What date? |
| CPU/RAM/Disk | Text | Hard to query combined values |
Good Design:
| Attribute | Type | Required | Description |
|---|---|---|---|
| Hostname | Text | Yes | Unique server name |
| Status | Select | Yes | [Active, Maintenance, Decommissioned] |
| Owner | Object (Team) | No | Team responsible for this server |
| Environment | Select | Yes | [Production, Development, Staging, Test] |
| vCPUs | Number | No | Number of virtual CPUs |
| RAM (GB) | Number | No | Memory in gigabytes |
Attribute Checklist
Before adding an attribute, ask:
| Question | If No... |
|---|---|
| Will this be used? | Don't add it |
| Is there existing data to populate it? | Maybe make optional |
| Can we get this from another system? | Consider integration instead |
| Does this duplicate another attribute? | Use references |
| Is Text the right type? | Consider Select, Number, or Object |
| Should this be required? | Only if essential |
| Is the name clear? | Rename or add description |
Good attributes are specific, typed correctly, and required only when essential. Bad attributes are vague, freetext when they should be controlled, and create data quality nightmares.
Ready to Put This Into Practice?
JSM Launchpad deploys production-ready CMDB schemas with these best practices built in.