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:
- Have distinct identity - Each instance is individually tracked
- Have unique attributes - The data you capture differs from existing types
- Participate in relationships - You need to connect them to other things
- 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.
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.