What This Table Is
The sc_task table stores catalog fulfillment tasks that represent the actual work required to deliver requested catalog items. When a user submits a catalog request, the system creates a Requested Item (RITM), and that RITM spawns one or more sc_task records to handle the fulfillment workflow. These tasks bridge the gap between what users request and the technical work required to deliver it.
Owned by the Service Catalog module, this table supports the end-to-end catalog fulfillment process. The workflow typically flows: Catalog Request → Requested Item (RITM) → Catalog Task(s) → Fulfillment → Closure. Each sc_task represents a discrete piece of work, such as provisioning software, creating accounts, or shipping hardware.
The table extends task, inheriting all standard task fields like state, assignment_group, and assigned_to. No tables extend sc_task in the base system, making it a leaf table in the task hierarchy. The critical relationship is with sc_req_item through the request_item reference field.
In large enterprises, this table can contain millions of records with high daily transaction volumes. Performance characteristics depend heavily on proper indexing of request_item and state fields. The table supports the full audit trail of catalog fulfillment, making it critical for compliance reporting and fulfillment metrics.
When You'll Script Against This Table
You'll script against sc_task in Business Rules for automatic assignment and state transitions, Script Includes for catalog fulfillment logic, Workflow activities for approval routing, and Scheduled Jobs for SLA monitoring. Client Scripts handle form behavior and field dependencies, while UI Actions provide custom fulfillment operations.
Access requires catalog_admin or itil roles for full CRUD operations. Fulfiller groups get filtered access based on assignment. The catalog role provides read access to assigned tasks only.
Common scripting patterns:
- Auto-assign tasks based on catalog item or requested for location
- Update parent RITM state when all child tasks complete
- Calculate SLA deadlines based on catalog item fulfillment times
- Copy variable values from parent RITM for fulfillment context
- Generate approval records for high-value or sensitive requests
- Create follow-up tasks or change requests for complex fulfillments
- Send notifications to stakeholders at key fulfillment milestones
Table Gotchas
The state field uses different choice values than standard tasks. sc_task uses states like 'Open' (1), 'Work in Progress' (2), 'Closed Complete' (3), and 'Closed Incomplete' (4), not the incident/problem state values.
Tasks automatically inherit the requested_for user from their parent RITM, but assignment logic often ignores this. Always check assignment_group and assigned_to rather than assuming requested_for determines ownership.
- The
request_itemfield is mandatory and cannot be changed after creation - tasks are permanently tied to their parent RITM - Variables are stored on the parent RITM, not the task - use
request_item.variablesdot-walking to access request details
Closing all sc_task records for a RITM doesn't automatically close the RITM. You need explicit Business Rules or Workflows to handle parent state management based on child task completion.
- Performance trap: avoid queries without
stateorrequest_itemfilters on large instances - these fields are indexed for optimal performance - ACL gotcha: users can see tasks for items they requested even if they lack general task table access, but this doesn't extend to scripting contexts
Enjoying this? Get one deep-dive per week.
Join 1,000+ ServiceNow pros — scripts, GlideRecord patterns, Flow Designer techniques, and career moves. Free.
Related Tables
The parent task table provides the foundational fields and behavior for assignment, state management, and work notes. Understanding task table patterns is essential for effective sc_task development, especially for SLA and approval integrations.
The most critical relationship is with sc_req_item (Requested Items), which contains the catalog item details, variables, and user context. Developers constantly join these tables to access request specifics for fulfillment logic. The sc_request table (Catalog Requests) provides the top-level request container, while sc_cat_item defines the catalog item configuration and fulfillment groups.
Standard reference relationships include sys_user for assignment and requester tracking, sys_user_group for fulfillment team assignment, and cmn_location for location-based routing. Integration scenarios often involve change_request for changes triggered by catalog fulfillment and cmdb_ci for asset provisioning and configuration item updates.