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

Understanding Object Types in JSM Assets

Object types are the building blocks of your CMDB schema. They define what you track. Get them right, and your CMDB becomes a powerful tool. Get them wrong, and you're managing a spreadsheet with extra steps.

15 min read Core Concepts

What Is an Object Type?

An object type is a category of things you want to track in your CMDB. Think of it as a class or template that defines:

  • What it represents (e.g., Server, Application, Person)
  • What information it stores (attributes like Name, Status, Owner)
  • How it connects to other things (relationships to other object types)

Every individual item in your CMDB is an object - an instance of an object type. If "Server" is your object type, then "PROD-WEB-01" and "PROD-DB-01" are objects of that type.

Real-World Analogy

Concept CMDB Term Example
Blueprint Object Type Server
Building Object PROD-WEB-01
Room features Attributes Hostname, IP Address, OS
Connections Relationships "Runs On" Rack-A-12

When to Create a New Object Type

Create a new object type when you have things that:

  1. Have distinct identity - Each instance is individually tracked
  2. Have unique attributes - The data you capture differs from existing types
  3. Participate in relationships - You need to connect them to other things
  4. Have their own lifecycle - They're created, changed, and retired independently

Decision Framework

Question If YES If NO
Does this need its own identity and name? New object type Attribute or select value
Will you have multiple instances? New object type Probably unnecessary
Does it need different attributes than existing types? New object type Maybe add to existing type
Will other objects link to it? New object type Could be an attribute
Will you query or report on it independently? New object type Attribute is fine

Example: Should "Operating System" Be an Object Type?

Scenario: You track servers and want to record which OS each server runs.

Option A: OS as an attribute (select field)

Server
├── Name: PROD-WEB-01
├── Operating System: "Windows Server 2022"  ← Just a field
└── IP Address: 10.0.1.50

Option B: OS as its own object type

Operating System
├── Name: Windows Server 2022
├── Vendor: Microsoft
├── Support End Date: 2031-10-14
└── Security Baseline: CIS Level 1

Server
├── Name: PROD-WEB-01
├── Runs On: Windows Server 2022  ← Reference to OS object
└── IP Address: 10.0.1.50

When to use Option A:

  • You only care about the OS name
  • You don't track OS metadata (EOL dates, versions, patch levels)
  • You have few OS variations

When to use Option B:

  • You need to track OS support dates and lifecycle
  • You want to query "all servers running OS X"
  • You manage patches and want OS-level metadata
  • Different teams care about OS independently

Object Type vs. Adding Attributes

A common mistake is creating too many object types when attributes would suffice. Another is creating too few and stuffing everything into one type.

Signs You Need a New Object Type

Indicator Example
Different lifecycle A "Contract" has renewal dates; a "Vendor" doesn't expire
Different owners Legal owns contracts; Procurement owns vendor relationships
One-to-many relationship One vendor has many contracts
Need to track history Contract amendments over time
Referenced by multiple types Multiple assets reference the same vendor

Anti-Pattern: The "God Object"

Don't create one object type called "Asset" with 100 attributes covering servers, laptops, software, and printers. This leads to:

  • Most attributes empty for most objects
  • Confusing forms with irrelevant fields
  • Poor data quality
  • Difficult reporting

Instead: Create specific object types (Server, Laptop, Software, Printer) that share common base attributes where appropriate.

Naming Conventions

Good naming makes your CMDB self-documenting.

Object Type Names

Guideline Good Bad
Singular noun Server Servers
Specific but not verbose Virtual Machine VMware ESXi Virtual Machine Asset
Business terminology Application App, SaaS, Software (pick one)
Consistent across schema Person, Team, Department User, Group, Org Unit

What to Avoid

  • Abbreviations without context: "VM" alone is fine; "VPC Peering Conn" is not
  • Version numbers: "Server v2" - just update the object type
  • Technical jargon outsiders won't understand: "CI" (Configuration Item) - use "Asset" or be specific
  • Redundant words: "Server Asset", "Application Object" - the CMDB context is implied

Common Object Type Patterns

These patterns appear across most CMDB schemas. Use them as a starting point.

People & Organization

Object Type Purpose Common Attributes
Person Employees, contractors, contacts Name, Email, Department, Manager, Status
Team Groups that own things Name, Lead, Department, Email, Slack Channel
Department Org structure Name, Code, Head, Parent Department
Vendor External organizations Name, Type, Account Manager, Support Contact

Infrastructure

Object Type Purpose Common Attributes
Server Physical or virtual compute Hostname, IP, OS, Environment, Owner
Network Device Switches, routers, firewalls Hostname, Type, Model, Location, Ports
Storage SAN, NAS, cloud storage Name, Type, Capacity, Protocol
Location Data centers, offices Name, Address, Type, Region

Object Type Hierarchy Considerations

JSM Assets supports object type hierarchy (parent-child relationships). Use this thoughtfully.

IMPORTANT: Attribute inheritance must be enabled when creating the parent object type. You cannot enable inheritance on object types that already have children. Plan your hierarchy upfront if you need attribute inheritance.

When to Use Hierarchy

Good use: Shared attributes and different specializations

Asset (parent)
├── Name
├── Status
├── Owner
│
├── Hardware Asset (child)
│   ├── Serial Number
│   ├── Warranty End
│   │
│   ├── Server (grandchild)
│   │   └── Hostname, IP, OS
│   │
│   └── Laptop (grandchild)
│       └── Assigned User, Model
│
└── Software Asset (child)
    ├── Version
    └── License Key

Flat vs. Hierarchical

Approach Pros Cons
Flat (all separate types) Simple, explicit, easy to query May duplicate attributes
Hierarchical DRY attributes, polymorphic queries More complex, can confuse users

Recommendation: Start flat. Add hierarchy only when you have clear attribute inheritance needs.

Quick Checklist: Designing Object Types

Before creating an object type, confirm:

  • It represents something with distinct identity
  • Multiple instances will exist
  • It has attributes different from existing types
  • Other objects will reference it OR you'll query it independently
  • The name is clear, singular, and consistent with your schema
  • You've considered whether it should be a child of existing type
  • You're not creating it just for one attribute's values

Summary

Principle Explanation
Object types = categories of things Not instances, not attributes
Create types for distinct things Own lifecycle, own attributes, own relationships
Use attributes for properties Values that describe, don't stand alone
Name consistently Singular, clear, business-aligned
Start flat Add hierarchy only when attributes truly need inheritance

Your object types form the vocabulary of your CMDB. Get them right, and everything else becomes clearer.

Ready to Put This Into Practice?

JSM Launchpad deploys production-ready CMDB schemas with these best practices built in.