ServiceNow Tables
Tables are the backbone of ServiceNow. Every piece of data in the system — every incident, every user, every configuration item — lives in a table. Understanding how tables work is the first step to building, administering, or developing in ServiceNow.
What Is a Table?
A table in ServiceNow is identical in concept to a spreadsheet sheet or a database table. Each row is one record. Each column is one field. Every table has a name that identifies what type of data it stores.
Table: Incident [incident] ────────────────────────────────────────────────────────── | number | short_desc | priority | state | |-----------|--------------------|-------- | -----------| | INC000001 | Email not working | 2-High | Open | | INC000002 | VPN disconnects | 1-Crit | In Progress| | INC000003 | Printer offline | 4-Low | Resolved | ──────────────────────────────────────────────────────────
Table Names vs. Display Labels
Every table has two names — a display label and a technical name. The display label is what users see ("Incident"). The technical name is used in scripts and URLs ("incident"). Knowing both is important when developing on the platform.
Display Label Technical Name ───────────────────────────────── Incident incident Change Request change_request Problem problem User sys_user Group sys_user_group ─────────────────────────────────
Finding Tables in ServiceNow
Administrators access the full list of tables by navigating to System Definition > Tables in the left navigation menu. This view shows every table in the instance — both built-in ServiceNow tables and custom tables created by the organization.
Table Inheritance: The Parent-Child Relationship
ServiceNow uses table inheritance — a powerful feature where one table extends another. The child table inherits all fields from the parent table, and adds its own unique fields on top.
Task Table [task] ← PARENT TABLE (base fields: number, state, priority, assigned_to)
│
├── Incident [incident] ← adds: caller_id, category
├── Problem [problem] ← adds: known_error, workaround
├── Change Request [change_request] ← adds: type, risk, conflict_status
└── Service Request [sc_request] ← adds: requested_for, price
The Task table is the most important parent table in ServiceNow. It holds the fields that every type of work record needs — number, state, priority, assigned group, description. All work-related tables extend Task, which keeps the platform consistent and makes cross-table reporting straightforward.
Why Inheritance Matters
Because Incident, Problem, and Change all inherit from Task, you can write one script or report that works across all of them. A field added to the Task table automatically appears in every child table. This design prevents duplication and keeps the system manageable.
The Base System Tables You Must Know
sys_user — User Table
Stores every user account in ServiceNow. Each row is one person. Fields include name, email, department, manager, and active status.
sys_user_group — Group Table
Stores teams and groups. An IT Support group, a Network Team group, an HR group — all live here. Users belong to groups. Groups get assigned tickets.
cmdb_ci — Configuration Item Table
Stores all IT assets — servers, laptops, applications, switches. Every CI record links to other CIs to build a map of how systems connect.
sys_dictionary — Data Dictionary Table
This system table defines every field on every table. When you add a new field to a form, ServiceNow creates a row in sys_dictionary to describe that field's type, size, and behavior.
Custom Tables
Administrators create custom tables when no built-in table fits a specific business need. For example, a company might create a "Vendor Contract" table to track contracts with external suppliers. Custom table names always start with the application's prefix, like u_vendor_contract (the "u_" prefix indicates a user-created table).
Table Configuration: Adding and Managing Fields
Administrators add new fields to a table by opening a record's form, right-clicking a field label, and selecting "Add field." This opens the field creation dialog without needing any code. Field types include:
- String: Plain text up to 255 characters
- Integer: Whole numbers
- Date/Time: Date and time values
- Boolean: True or False (checkbox)
- Reference: A link to a record in another table
- Choice: A dropdown list of fixed options
Viewing a Table's Data
To view all records in any table, type the table's technical name followed by .LIST in the search bar and press Enter. For example, typing incident.LIST opens the full list of all incident records. This shortcut works for any table in the system.
URL Bar Shortcut: Type "incident.LIST" → Opens all incidents Type "sys_user.LIST" → Opens all users Type "change_request.LIST" → Opens all changes
