JSM LaunchPad is in the final stages of development. Coming soon to the Atlassian Marketplace.Get notified when we launch →

Attribute Best Practices in JSM Assets

Attributes capture the data that makes your CMDB useful. Choose the right types, require the right fields, and you'll have clean data. Make poor choices, and you'll fight data quality forever.

12 min read Schema Design

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 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
Note: Text is limited to 255 characters. Use Textarea for longer content. Multi-select is not a separate type - it's a Select attribute with "Allow multiple values" enabled.

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)
  ...
Tip: You can always tighten requirements later. Loosening them means dealing with existing objects that don't comply.

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.