What This Table Is
The sys_user_group table is the master registry for all groups in ServiceNow. Groups serve three primary functions: task assignment (referenced via assignment_group on task records), approval routing in workflows, and access control through role assignments. Every group that can receive work, approve requests, or control access lives in this table.
Owned by the Platform module, this table supports the entire ITSM process flow from incident assignment to change approval. When an incident gets assigned to "Network Team" or a change request needs approval from "CAB," both scenarios rely on records in sys_user_group. The table integrates tightly with user management, workflow engines, and access control systems.
The sys_user_group table doesn't extend another table but serves as a parent for specialized group types like sys_user_group_type categorization. Groups can have hierarchical relationships through the manager field, which references another group record, enabling organizational structures and escalation paths.
In large enterprises, expect 500-5,000 group records with high read volume from task assignments and approval processes. The table performs well for basic queries but can bottleneck when doing complex membership calculations across nested groups. Most performance issues arise from poorly written queries that traverse group hierarchies without proper indexing.
When You'll Script Against This Table
You'll hit sys_user_group most often in Business Rules on task tables (incident, request, change) for assignment routing logic. Script Includes that handle user access checks, approval workflows, and custom assignment engines constantly query this table. Client Scripts validate group selections in reference fields, while Scheduled Jobs sync group memberships with external systems.
Access requires user_admin role for write operations, though most developers encounter read access through assignment and approval processes. Group records have their own ACLs that can restrict visibility based on group type and organizational hierarchy.
- Assignment routing: Business Rules that set
assignment_groupbased on category, location, or impact - Approval workflows: Script activities that determine approver groups for changes and requests
- Escalation logic: Script Includes that find manager groups when SLAs breach
- User access validation: Checking if current user belongs to specific groups for custom UIs
- Group membership sync: Scheduled Jobs that update group rosters from LDAP or HR systems
- On-call rotation: Custom applications that manage group schedules and availability
- Reference field qualification: Dynamic filters that show only groups of specific types
Table Gotchas
The active field controls visibility in reference fields. Setting active=false doesn't prevent existing assignments but hides the group from new selections. Always check both active status AND existing references before deactivating.
Group membership queries through sys_user_grmember can be expensive. The getRoles() and isMemberOf() API methods are optimized and cached—use them instead of manual joins.
- The
typefield has no enforced referential integrity—invalid type values don't throw errors but break UI filters - Email notifications inherit from group
emailfield if individual member emails fail—empty group email = no notifications - Circular manager relationships are possible and will cause infinite loops in escalation scripts—always check hierarchy depth
The name field has a unique constraint that's case-insensitive. Attempting to create 'Service Desk' when 'SERVICE DESK' exists will fail with a cryptic duplicate key error.
- Assignment group queries on large task tables should include additional filters—querying all records for one group can timeout
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 sys_user_grmember table creates the many-to-many relationship between users and groups, storing individual membership records. Every group membership, role assignment, and approval delegation creates entries here. The sys_user table connects through this relationship for all user-to-group operations.
All task-based tables (incident, sc_request, change_request) reference sys_user_group through their assignment_group field. Approval processes connect through sysapproval_approver records that reference both the source task and the approving group. The sys_user_role table intersects with groups through role-based access control, where groups inherit roles that define what their members can access.
The cmn_location and cmn_department tables often appear in queries alongside groups for organizational reporting and assignment routing. Developers frequently join these tables to build assignment rules like "Network issues in Building A go to Network-Boston group."