ServiceNow Application Summary
SkillDev toolsSummarize existing ServiceNow applications with scope analysis, table structure, script inventory, and dependency mapping
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the ServiceNow Application Summary skill
What this skill tells your AI
The instructions your AI receives, as published by happy-technologies-llc/happy-platform-skills in skills/genai/app-summary/SKILL.md and read by ahel’s review.
Overview
This skill covers generating comprehensive summaries of existing ServiceNow applications, including:
- Application scope and metadata analysis
- Table structure and data model documentation
- Script inventory (business rules, client scripts, script includes, UI actions)
- ACL and role analysis
- Dependency and integration mapping
- Configuration artifact inventory
- Application health and complexity assessment
When to use: During application portfolio reviews, before upgrades or migrations, for developer onboarding, documentation generation, technical debt assessment, or when evaluating applications for consolidation.
Prerequisites
- Roles:
admin,application_developer, or read access to sys_scope and sys_metadata - Access: sys_scope, sys_app, sys_metadata, sys_db_object, sys_dictionary, sys_script tables
- Knowledge: ServiceNow application model, scoped application structure
- Related Skills: Complete
genai/app-generationfor context on application structure
Procedure
Step 1: Identify the Application
Find application by name:
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: sys_scope
query: nameLIKE[app_name]^active=true
fields: sys_id,name,scope,short_description,version,vendor,vendor_prefix,sys_created_on,sys_updated_on
limit: 10
REST Alternative:
curl -u "$SN_USER:$SN_PASS" \
"$SN_INSTANCE/api/now/table/sys_scope?sysparm_query=nameLIKE[app_name]^active=true&sysparm_fields=sys_id,name,scope,short_description,version,vendor&sysparm_limit=10" \
-H "Accept: application/json"
List all custom scoped applications:
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: sys_scope
query: scopeSTARTSWITHx_^active=true
fields: sys_id,name,scope,version,vendor,sys_created_on
limit: 100
Step 2: Get Application Metadata
Retrieve full application details:
MCP Approach:
Tool: SN-Get-Record
Parameters:
table_name: sys_scope
sys_id: [scope_sys_id]
REST Alternative:
curl -u "$SN_USER:$SN_PASS" \
"$SN_INSTANCE/api/now/table/sys_scope/[scope_sys_id]" \
-H "Accept: application/json"
Check sys_app for additional metadata:
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: sys_app
query: scope=[scope_name]
fields: sys_id,name,version,short_description,template,active
limit: 1
Step 3: Inventory All Application Artifacts
Get a count of all artifacts by type:
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: sys_metadata
query: sys_scope=[scope_sys_id]
fields: sys_id,sys_class_name,sys_name,sys_created_on
limit: 500
REST Alternative:
curl -u "$SN_USER:$SN_PASS" \
"$SN_INSTANCE/api/now/table/sys_metadata?sysparm_query=sys_scope=[scope_sys_id]&sysparm_fields=sys_id,sys_class_name,sys_name&sysparm_limit=500" \
-H "Accept: application/json"
Group the results by sys_class_name to produce an artifact summary:
Artifact Inventory:
sys_db_object (Tables): X
sys_dictionary (Fields): X
sys_script (Business Rules): X
sys_script_client (Client Scripts): X
sys_script_include (Script Includes): X
sys_ui_action (UI Actions): X
sys_ui_page (UI Pages): X
sys_security_acl (ACLs): X
sys_properties (Properties): X
sys_ui_form_section (Form Sections): X
...
Step 4: Analyze Table Structure
Get all tables in the application:
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: sys_db_object
query: sys_scope=[scope_sys_id]
fields: sys_id,name,label,super_class,is_extendable,number_ref,sys_created_on
limit: 50
For each table, get field definitions:
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: sys_dictionary
query: name=[table_name]^sys_scope=[scope_sys_id]^elementISNOTEMPTY
fields: element,column_label,internal_type,max_length,mandatory,reference,unique,active
limit: 100
REST Alternative:
curl -u "$SN_USER:$SN_PASS" \
"$SN_INSTANCE/api/now/table/sys_dictionary?sysparm_query=name=[table_name]^sys_scope=[scope_sys_id]^elementISNOTEMPTY&sysparm_fields=element,column_label,internal_type,max_length,mandatory,reference&sysparm_limit=100" \
-H "Accept: application/json"
Get table record counts (assess data volume):
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: sys_table_rotation
query: name=[table_name]
fields: name,max_size,size
limit: 1
Step 5: Inventory Scripts
Get business rules:
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: sys_script
query: sys_scope=[scope_sys_id]
fields: sys_id,name,collection,when,order,active,action_insert,action_update,action_delete
limit: 100
Get client scripts:
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: sys_script_client
query: sys_scope=[scope_sys_id]
fields: sys_id,name,table,type,fieldname,active,ui_type
limit: 100
Get script includes:
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: sys_script_include
query: sys_scope=[scope_sys_id]
fields: sys_id,name,api_name,client_callable,active,access
limit: 100
Get UI scripts:
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: sys_ui_script
query: sys_scope=[scope_sys_id]
fields: sys_id,name,global,active,ui_type
limit: 50
Step 6: Analyze ACLs and Roles
Get application roles:
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: sys_user_role
query: sys_scope=[scope_sys_id]
fields: sys_id,name,description,assignable_by
limit: 50
Get ACL rules:
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: sys_security_acl
query: sys_scope=[scope_sys_id]^active=true
fields: sys_id,name,operation,type,admin_overrides,condition,advanced
limit: 100
REST Alternative:
curl -u "$SN_USER:$SN_PASS" \
"$SN_INSTANCE/api/now/table/sys_security_acl?sysparm_query=sys_scope=[scope_sys_id]^active=true&sysparm_fields=sys_id,name,operation,type,admin_overrides&sysparm_limit=100" \
-H "Accept: application/json"
Step 7: Map Dependencies
Check for cross-scope references in scripts:
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: sys_scope_privilege
query: source_scope=[scope_sys_id]^ORtarget_scope=[scope_sys_id]
fields: sys_id,source_scope,target_scope,type,operation,status
limit: 50
Check for integrations (REST messages, SOAP, etc.):
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: sys_rest_message
query: sys_scope=[scope_sys_id]
fields: sys_id,name,rest_endpoint,authentication_type
limit: 20
Check for scheduled jobs:
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: sysauto_script
query: sys_scope=[scope_sys_id]
fields: sys_id,name,active,run_type,run_period
limit: 20
Step 8: Analyze UI Configuration
Get UI actions:
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: sys_ui_action
query: sys_scope=[scope_sys_id]^active=true
fields: sys_id,name,table,action_name,client,form_button,list_button
limit: 50
Get navigation modules:
MCP Approach:
Tool: SN-Query-Table
Parameters:
table_name: sys_app_module
query: sys_scope=[scope_sys_id]
fields: sys_id,title,link_type,name,query,order
limit: 30
Step 9: Compile the Application Summary
Generate a structured summary report:
Application Summary: [App Name]
================================================
Scope: [scope_name]
Version: [version]
Vendor: [vendor]
Created: [date] | Last Updated: [date]
Description: [short_description]
ARTIFACT INVENTORY:
Tables: [count]
Fields: [count]
Business Rules: [count] (active: X, inactive: Y)
Client Scripts: [count]
Script Includes: [count]
UI Actions: [count]
ACL Rules: [count]
Roles: [count]
Properties: [count]
Scheduled Jobs: [count]
REST Messages: [count]
Total Artifacts: [count]
TABLE STRUCTURE:
[Table 1 Name] ([Label])
- Extends: [parent table]
- Fields: [count]
- Key Fields: [list of mandatory/unique fields]
[Table 2 Name] ([Label])
...
SCRIPT INVENTORY:
Business Rules:
- [Rule Name] on [Table] ([when], order [N]) - [Active/Inactive]
Client Scripts:
- [Script Name] on [Table] ([type]) - [Active/Inactive]
Script Includes:
- [Include Name] (client_callable: [yes/no]) - [Active/Inactive]
SECURITY MODEL:
Roles:
- [Role Name]: [Description]
ACLs:
- [Table].[Operation]: [Conditions/Roles]
DEPENDENCIES:
Cross-scope references: [list]
Integrations: [list]
Scheduled Jobs: [list]
COMPLEXITY ASSESSMENT:
- Table Count: [Low/Medium/High]
- Script Density: [Low/Medium/High]
- Integration Points: [count]
- Overall Complexity: [Low/Medium/High]
Tool Usage
| Action | MCP Tool | REST Endpoint |
|---|---|---|
| Find application | SN-Query-Table | GET /api/now/table/sys_scope |
| Get app metadata | SN-Get-Record | GET /api/now/table/sys_scope/{sys_id} |
| List all artifacts | SN-Query-Table | GET /api/now/table/sys_metadata |
| Get tables | SN-Query-Table | GET /api/now/table/sys_db_object |
| Get fields | SN-Query-Table | GET /api/now/table/sys_dictionary |
| Get business rules | SN-Query-Table | GET /api/now/table/sys_script |
| Get client scripts | SN-Query-Table | GET /api/now/table/sys_script_client |
| Get script includes | SN-Query-Table | GET /api/now/table/sys_script_include |
| Get ACLs | SN-Query-Table | GET /api/now/table/sys_security_acl |
| Get roles | SN-Query-Table | GET /api/now/table/sys_user_role |
Best Practices
- Start with sys_metadata: This gives the fastest overview of all artifacts in a scope
- Group artifacts by type: Use sys_class_name to categorize and count artifacts efficiently
- Check active vs. inactive: Inactive artifacts may indicate technical debt or abandoned features
- Examine script complexity: Long scripts or high script counts suggest areas needing refactoring
- Map all integrations: Cross-scope and external integrations are critical for upgrade impact assessment
- Document undocumented apps: Many custom apps lack documentation; summaries fill this gap
- Compare versions: If multiple versions exist, compare artifact counts across versions
- Identify orphaned artifacts: Look for scripts referencing tables or fields that no longer exist
- Assess test coverage: Check for ATF (Automated Test Framework) tests within the scope
- Review update sets: Check sys_update_set for deployment history
Troubleshooting
Application Not Found
Symptom: No results when querying sys_scope Causes:
- Application is a global scope plugin, not a scoped app
- Application name differs from scope name
- Application is inactive Solution:
Tool: SN-Query-Table
Parameters:
table_name: sys_scope
query: nameLIKE[partial_name]^ORscopeLIKE[partial_name]
fields: sys_id,name,scope,active
limit: 20
Incomplete Metadata Count
Symptom: sys_metadata returns fewer artifacts than expected Cause: Some artifacts may not extend sys_metadata, or query limit is too low Solution: Increase limit and check for artifacts outside the scope:
Tool: SN-Query-Table
Parameters:
table_name: sys_metadata
query: sys_scope=[scope_sys_id]
fields: sys_id,sys_class_name
limit: 1000
Cannot Determine Table Relationships
Symptom: Reference fields exist but relationships are unclear Solution: Query sys_dictionary for reference fields specifically:
Tool: SN-Query-Table
Parameters:
table_name: sys_dictionary
query: name=[table_name]^internal_type=reference
fields: element,column_label,reference
limit: 50
Scope Privilege Errors
Symptom: Cannot access artifacts in a different scope Cause: Cross-scope access not granted Solution:
Tool: SN-Query-Table
Parameters:
table_name: sys_scope_privilege
query: target_scope=[scope_sys_id]^status=allowed
fields: source_scope,target_scope,type,operation
limit: 20
Examples
Example 1: Summarize a Custom HR Application
# Step 1: Find the application
Tool: SN-Query-Table
Parameters:
table_name: sys_scope
query: nameLIKEHR Onboarding
fields: sys_id,name,scope,version,vendor
limit: 5
# Result: sys_id = "scope123", scope = "x_acme_hr_onboard"
# Step 2: Get all artifacts
Tool: SN-Query-Table
Parameters:
table_name: sys_metadata
query: sys_scope=scope123
fields: sys_id,sys_class_name,sys_name
limit: 500
# Step 3: Get tables
Tool: SN-Query-Table
Parameters:
table_name: sys_db_object
query: sys_scope=scope123
fields: sys_id,name,label,super_class
limit: 20
# Step 4: Get scripts
Tool: SN-Query-Table
Parameters:
table_name: sys_script
query: sys_scope=scope123
fields: sys_id,name,collection,when,active
limit: 100
Example 2: Compare Two Application Versions
# Get artifacts for version 1.0
Tool: SN-Query-Table
Parameters:
table_name: sys_metadata
query: sys_scope=[scope_v1_sys_id]
fields: sys_id,sys_class_name
limit: 500
# Get artifacts for version 2.0
Tool: SN-Query-Table
Parameters:
table_name: sys_metadata
query: sys_scope=[scope_v2_sys_id]
fields: sys_id,sys_class_name
limit: 500
# Compare artifact counts by type between versions
Example 3: Identify All Applications by a Specific Vendor
Tool: SN-Query-Table
Parameters:
table_name: sys_scope
query: vendor=Happy Technologies LLC^active=true
fields: sys_id,name,scope,version,sys_created_on
limit: 50
Related Skills
genai/app-generation- Generate new applications from requirementsdevelopment/code-review- Review application scripts for qualitydevelopment/code-assist- Generate new scripts for existing applicationsadmin/update-set-management- Package and deploy applicationssecurity/acl-management- Detailed ACL analysis
Signals
- GitHub stars
- 37
- Forks
- 13
- Last commit
- Jul 2026
Advanced
- Catalog kind
- skill
- Gateway key
app-summary- Source
- github.com/happy-technologies-llc/happy-platform-skills