Extending table
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Monday - last edited Monday
I have a requirement to extend table "sn_customerservice_case" to 6 child tables like payroll, HRservice, NAprocurement, EUprocurement etc..
What is the best practice as per ServiceNow to extend CSM table?
Shall I create as "x_csm_payroll_case"? or like below
"sn_customerservice_case_payroll"
"sn_customerservice_case_hrservice"
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Monday
Hey @Hafsa1
You should not create tables with the sn_ prefix, such as:
sn_customerservice_case_payroll
sn_customerservice_case_hrservice
This prefix is reserved for OOTB applications like ServiceNow Customer Service Management, and using it for custom development can lead to upgrade conflicts and namespace issues.
Recommended Approach
Create your child tables within your scoped application using the standard naming convention:
x_<company>_<purpose>_case
Examples:
- x_acme_payroll_case
- x_acme_hrservice_case
- x_acme_procurement_case
All these tables should extend from:
sn_customerservice_case
Important Design Consideration
Before creating multiple child tables, validate whether this is actually required.
Option 1: Use Multiple Child Tables (When Needed)
Use separate tables only if:
Each case type has distinct fields
Different business processes / workflows
Separate forms and SLAs
Option 2: Use Single Table (Preferred in Many Cases)
In many CSM implementations, a better approach is:
- Use only sn_customerservice_case
- Add a field like Case Type (Payroll, HR, Procurement, etc.)
- Control behavior using:
UI Policies
Client Scripts
Flows / Flow Designer
Assignment Rules
This approach:
Reduces complexity
Simplifies reporting and Performance Analytics
Avoids unnecessary table proliferation
*********************************************************************************************************
If this response helps, please mark it as Accept as Solution and Helpful.
Doing so helps others in the community and encourages me to keep contributing.
Regards
Vaishali Singh
Servicenow Developer
Linkedin - https://www.linkedin.com/in/vaishali-singh-2273361bb
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Monday
When I'm creating new case type table, name automatically coming as in "sn_customerservice_payroll_case"
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Monday
@vaishali231 whenever I'm creating in customer service scope it is taking "sn_customerservice" as prefix.
When I create on custom scope then only it allow x_csm_payroll_case". But scope is changed to "payroll".
Is't it will give issue while doing coding for customer service implementation.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Monday
Hi @Hafsa1
- Navigate to Tables: Go to System Definition > Tables and click New.
- Define the Table:
- Label: Name your table (CSM Payroll Case).
- Name: System will auto-populate (u_csm_payroll_case). Note: Ensure this new table should be in a custom scope as of CSM
- Extends Table: Select Customer Service Case [sn_customerservice_case].
- Configure Attributes:
- Create Module: Check this to add the table to the Application Navigator.
- Add Module to Application: Choose your custom application scope.
- Add fields specific to the new case type (for example, Payroll Employee ID).
- Click Submit.
Follow the same process with other child table
Key consideration:
Child tables inherit ACLs , client scripts, and business rules from the parent. Just validate if you need to create "override" versions for specific child tables.
