What This Table Is

The sc_cat_item table stores Service Catalog items — the orderable products and services that appear in the Service Portal catalog. Each record represents something users can request: hardware, software, access requests, or services. This table drives the core catalog experience, from display logic to fulfillment routing.

Owned by the Service Catalog module, catalog items orchestrate the entire request-to-fulfillment process. When users submit requests, the platform creates sc_req_item records that reference back to the catalog item definition. The catalog item determines which variables to present, which workflow to trigger, and who can fulfill the request.

This table extends sc_cat_item_producer, which itself extends sc_cat_item_top. The inheritance chain provides workflow capabilities and base catalog functionality. No tables extend sc_cat_item directly — it's the concrete implementation for standard catalog items.

Large enterprises typically see 500-5,000 catalog items with moderate query volume. Performance is generally good, but joins to variable sets and workflow tables can be expensive at scale. The platform caches catalog display logic heavily, so direct database queries may not reflect what users see in the portal.

When You'll Script Against This Table

You'll script against sc_cat_item in Business Rules (especially before/after inserts for approval routing), Script Includes that build catalog displays, and Catalog Client Scripts that control variable visibility. Flow Designer actions commonly query this table to determine fulfillment routing based on catalog item properties.

Access requires the catalog_admin role for full CRUD operations. The catalog role provides read access for catalog display logic. Scoped applications can read catalog items but modification requires elevation or cross-scope privileges.

Common scripting patterns:

  • Query by category and active state to build dynamic catalog displays
  • Join to variable sets via io_set_item to determine required fields
  • Check workflow assignments to route requests to correct fulfillment teams
  • Update delivery time estimates based on current fulfillment capacity
  • Bulk update catalog item states during maintenance windows
  • Generate approval rules based on cost thresholds and item categories
  • Create usage reports by aggregating request counts per catalog item

Table Gotchas

⚠️

The active field controls catalog display, but inactive items can still process existing requests. Always check both active status and whether the item accepts new requests.

  • The workflow field can reference workflows OR flows — check the flow_designer_flow field for Flow Designer implementations
⚠️

Variable sets attach via multiple junction tables. Don't assume io_set_item is the only relationship — check sc_cat_item_producer_mtom_io_set_item for inherited variable sets.

  • Catalog item pricing comes from multiple sources: the price field, variable-based pricing, and dynamic pricing scripts
  • The category reference has complex ACLs — users see different catalog structures based on role and group membership
⚠️

Queries filtering by available_when (e.g., 'on_desktop', 'on_mobile') require exact string matches. These aren't choice fields — they're calculated display conditions.

  • Delivery time calculations respect business schedules, but the delivery_time field stores raw duration values, not computed dates
Free Newsletter

Enjoying this? Get one deep-dive per week.

Join 1,000+ ServiceNow pros — scripts, GlideRecord patterns, Flow Designer techniques, and career moves. Free.

No spam · Unsubscribe anytime

This table extends sc_cat_item_producer, inheriting workflow and fulfillment capabilities. The parent chain (sc_cat_item_topsc_cat_item_producersc_cat_item) provides the foundational catalog item structure, workflow integration, and producer-specific functionality.

The most critical relationships are with sc_req_item (the actual user requests), sc_category (catalog organization), and io_set_item (variable set associations). Developers frequently join to wf_workflow to understand fulfillment processes and sys_user_group for assignment routing.

When building catalog reports or approval workflows, you'll almost always query sc_cat_item alongside sc_request and sc_req_item to understand request patterns. The relationship with item_option_new becomes essential when processing variable values from submitted requests.