Extending table

Hafsa1
Mega Sage

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"

6 REPLIES 6

vaishali231
Kilo Sage

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






When I'm creating new case type table, name automatically coming as in "sn_customerservice_payroll_case"

Hafsa1_1-1777893668595.png

 

Hafsa1_2-1777893776348.png

 

 

@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.

Tanushree Maiti
Kilo Patron

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.

 

Please mark this response as Helpful & Accept it as solution if it assisted you with your question.
Regards
Tanushree Maiti
ServiceNow Technical Architect
Linkedin: