Never Extend from the Task Table for Your Custom Scoped Application UNLESS...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
5 hours ago
TL;DR
- Direct task table extension inherits 16 (Zurich release) ITIL role-specific field-level ACLs that create unexpected security constraints for non-ITSM user populations
- These inherited ACLs remain invisible during development because developers often test with admin roles that bypass security restrictions
- Discovery typically occurs during UAT or production pilot, resulting in 40-80 hours of emergency ACL rework for each table extended from task under go-live pressure
- Solution: Intermediary buffer table with snc_internal role ACL overrides eliminates ITIL dependencies with a one-time investment of 1-3 hours
- Only extend directly from task when your users possess ITIL roles and require specific ITSM functionality
It's 4:47 PM on a Thursday. Your go-live is scheduled for Monday morning. The executive sponsor just sent an urgent Teams message: "Users in the pilot group can't edit the Description field—says they don't have permission." You open the application as admin—works perfectly. You impersonate a pilot user—the field is locked. Your heart sinks as you realize what happened. Those inherited ITIL role ACLs you never saw during six months of development have just surfaced. You're now staring at 120+ hours of emergency ACL overrides (because you extended 3 of your custom scoped app tables from task), security regression testing, and explaining to leadership why Monday's launch just became 'TBD.'
This scenario plays out repeatedly across ServiceNow development teams. The root cause? Direct task table extension inherits ITSM-specific security architecture designed for ITIL role populations. Most custom scoped applications serve business users outside this population—HR teams, legal departments, finance groups, operational teams who will never have (nor should they have) itil roles. These applications need task table functionality for SLA, workflow, assignment, and state management without ITSM security constraints.
The Inherited Security Burden
Task table inheritance delivers powerful workflow capabilities but carries field-level ACLs tied to ITIL roles. These ACLs were designed for ITSM Service Desk operations where users routinely possess itil or itil_admin roles. Custom business applications face a critical mismatch: task security architecture assumes ITIL role membership your users don't have.
Affected fields (Zurich release) requiring ACL overrides:
- approval_set (read)
- assigned_to (write)
- comments (write)
- comments_and_work_notes (read)
- description (write)
- due_date (write)
- escalation (write)
- impact (write)
- priority (write)
- short_description (write)
- state (write)
- urgency (write)
- work_notes (read)
- work_notes (write)
- work_notes_list (read)
- work_notes_list (write)
These ACLs often remain invisible throughout development because developers naturally test with their own accounts which contain admin role privileges. Admin role bypasses all ACL restrictions (unless admin overrides is checked, which for Task table ACLs OOB, this is not), creating false positive testing results. Too many development teams are missing the discipline to consistently impersonate business user roles during iterative development cycles. Everything works perfectly for developers; but this is not the case for scoped app end users.
The emergency rework cascade:
- Discovery during security validation, UAT, or production pilot
- Emergency ACL analysis under timeline pressure
- Field-level ACL override creation (one per affected field, for each table extended from task)
- Regression testing with actual user roles (can use impersonation)
- Security review and approval delays
- Project timeline impact and stakeholder communications
Additional complications include inherited UI actions like 'Follow' requiring removal or modification. The cumulative impact: 40-80 hours of unplanned rework, per table extended from task, occurring at the worst possible moment.
When Task Extension Provides Value: The "UNLESS" Criteria
Direct task table extension remains appropriate for specific use cases where ITIL role alignment exists and ITSM functionality delivers clear value.
Extend directly from task table when:
- Your application serves ITSM users who will always possess ITIL roles (the exception for custom scoped applications)
Historical justifications for extension from task table like approval workflow activities or task workflow activities no longer mandate task extension. Workflow activities, including use of OOB approvals, can be created for tables not extended from any OOB table using flow designer with groups and users in any combination. The exception: OOB SLAs only work with tables that are extended from task (or a child of the task table).
Critical decision gate: Does your custom scoped app user population possess ITIL roles? If NO, do not extend directly from task. If YES, task extension may be appropriate.
The Buffer Table Architecture
The solution: three-tier inheritance model establishing a security neutralization layer between task table inheritance and business applications.
Architecture pattern: OOB task (global) → app_buffer_table (scoped) → application_tables (scoped)
Buffer table specifications:
- Location: Custom scoped application (e.g., x_business_function_task_base)
- Purpose: Security neutralization layer AND business function specific fields
- Extends: OOB task table
- Function: Overrides inherited ITIL ACLs with snc_internal role
Implementation protocol:
Step 1: Create scoped application (x_business_function_task_base) as reusable framework for all non-ITSM applications (or one for each business function, for example, one for accounting, another for the PMO)
Step 2: Build buffer table (_business_function_task_base) extending task, inheriting all fields and functionality
Step 3: Override field-level ACLs with snc_internal role. The snc_internal role is part of the Explicit Roles plug-in and activiating it should be part of your platform hardening activities.
Step 4: Application development: Custom scoped application tables extend from buffer table, not directly from task. Inherit task functionality without ITIL constraints. Implement application-specific ACLs based on business roles. Test with actual user roles throughout development. You get the added benefit of having to override additional functionality or UI actions for your app in just one place (the buffer table) instead of over and over again for each table extended from the OOB task table.
Time investment analysis: Buffer table setup requires 1-4 hours one-time organizational investment, including testing. Per-application savings: 40-80 hours (per extended from OOB task table) emergency ACL rework avoided. ROI becomes positive after first application and compounds across entire portfolio.
Additional benefit: eliminates unnecessary, easily avoidable go-live risk and timeline uncertainty.
Comparative Development Analysis
Three development paths present distinct tradeoffs:
|
Development Task |
Custom Table (No Extension) |
Direct Task Extension |
Buffer Table Pattern |
|
Field Creation |
Manual required |
Inherited |
Inherited |
|
ACL Overrides |
None needed |
5+ field-level overrides |
None needed |
|
ITIL Role Constraints |
None |
Full inheritance |
Neutralized |
|
Go-Live Risk |
Low |
HIGH |
Low |
|
Development Time |
Baseline |
+40-80 hours |
Baseline |
Buffer pattern delivers task functionality with custom table security simplicity.
Testing Discipline: Breaking the Admin Role Habit
Root cause analysis reveals developer testing with admin role creates a false sense of security. Mitigation strategy requires creating test user accounts with actual business roles, impersonating test users during iterative development, including non-admin role testing in Definition of Done, and conducting security validation sprints with actual user personas.
Additionally, it is imperative that security development and full QA (quality assurance) testing be completed BEFORE any UI functionality is developed. UI functionality can be mis-interpreted as ACL security testing results.
Buffer table architecture provides defense in depth: even with disciplined testing, the pattern eliminates inherited ACL surprises entirely. Proper testing combined with buffer architecture yields zero late-stage ACL discoveries.
Conclusion: Proactive Architecture Prevents 4:47 PM Panic
Remember the opening scenario: don't be the developer explaining inherited ACLs to executive sponsors 72 hours before go-live. The decision framework is clear: extend from task only when your users possess ITIL roles and require specific ITSM functionality.
Buffer table value proposition: a one-time 1-4 hour investment can eliminate 40-80 hours per table, of emergency rework, remove go-live security risk, and scale across your application portfolio. Establish buffer tables as organizational standard for all non-ITSM custom scoped applications. Supplement buffer architecture with actual user role testing throughout development.
Take action:
- Review current task-extended applications for inherited ACL issues.
- Implement a buffer pattern architecture for your next custom scoped application project.
- Test security using role-appropriate test users, impersonation, and BEFORE your UI development begins
Reference:
- To see all of the field level roles assigned to ACLs for the task table:
/now/nav/ui/classic/params/target/sys_security_acl_role_list.do%3Fsysparm_query%3Dsys_security_acl.nameSTARTSWITHtask.%26sysparm_first_row%3D1%26sysparm_view%3D%26sysparm_choice_query_raw%3D%26sysparm_list_header_search%3Dtrue
- To view all of the field level ACLs on the task table:
/now/nav/ui/classic/params/target/sys_security_acl_list.do%3Fsysparm_query%3DnameSTARTSWITHtask.%26sysparm_first_row%3D1%26sysparm_view%3D%26sysparm_choice_query_raw%3D%26sysparm_list_header_search%3Dtrue
