Skip to content

Conversation

@snamjosh
Copy link
Contributor

This flow designer action will scan scripts for deprecated APIs and compatibility issues for ServiceNow releases.This action can be executed during development cycles so that you don't have wait until next upgrade to fix deprecated API in your code base.

This action will likely save time and effort for future servicenow upgrades.

Following is the example output JSON snapshot of flow execution.

`Viewing compatibility_report [string]

{
"analysis_metadata": {
"target_release": "Zurich",
"timestamp": "2025-10-13 18:47:50",
"total_scripts": 1,
"total_issues": 13,
"compatibility_score": 0
},
"analyzed_scripts": [
{
"script_id": "e6ece2f2733300102535b7385ef6a72d",
"script_name": "WindowsInstalledSoftware",
"script_type": "script_include",
"issues": [
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 44,
"line_content": "if (!JSUtil.nil(iePackage))",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 56,
"line_content": "if(!JSUtil.nil(iisPackage))",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 67,
"line_content": "if (!JSUtil.nil(osId)){",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 94,
"line_content": "if (!JSUtil.nil(softwareItem)){",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 95,
"line_content": "if (JSUtil.nil(softwareList[softwareItem.uniqueName]) || softwareList[softwareItem.uniqueName] == null || softwareList[softwareItem.uniqueName] == undefined)",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 100,
"line_content": "if (softwareList[softwareItem.uniqueName] != null && !JSUtil.nil(softwareItem.msi_id) && !JSUtil.nil(officeLicenses[softwareItem.msiID]))",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 132,
"line_content": "if (JSUtil.nil(svcVersion) && JSUtil.nil(ver))",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 158,
"line_content": "if (!JSUtil.nil(prodId) || !JSUtil.nil(dProdId)){",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 232,
"line_content": "if (JSUtil.nil(displayName) || displayName === "")",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 253,
"line_content": "if (/Acrobat/.test(displayName) && !JSUtil.nil(uninstallString) && (uninstallString.indexOf("{") >= 0) && (uninstallString.indexOf("}") >= 0)) {",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 256,
"line_content": "if (!JSUtil.nil(editionString)) {",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 273,
"line_content": "if (!JSUtil.nil(value) && value != null && value.length > 0 && value.toLowerCase() != "none" && value != "")",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 281,
"line_content": "if (!obj1.hasOwnProperty(key) || JSUtil.nil(obj1[key]) || obj1[key] == null || obj1[key].length == 0 || obj1[key].toLowerCase() == "none" || obj1[key] == "")",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
}
],
"lines_analyzed": 301,
"content_length": 10754,
"table_name": "sys_script_include"
}
],
"issues": {
"critical": [],
"high": [],
"medium": [
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 44,
"line_content": "if (!JSUtil.nil(iePackage))",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 56,
"line_content": "if(!JSUtil.nil(iisPackage))",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 67,
"line_content": "if (!JSUtil.nil(osId)){",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 94,
"line_content": "if (!JSUtil.nil(softwareItem)){",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 95,
"line_content": "if (JSUtil.nil(softwareList[softwareItem.uniqueName]) || softwareList[softwareItem.uniqueName] == null || softwareList[softwareItem.uniqueName] == undefined)",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 100,
"line_content": "if (softwareList[softwareItem.uniqueName] != null && !JSUtil.nil(softwareItem.msi_id) && !JSUtil.nil(officeLicenses[softwareItem.msiID]))",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 132,
"line_content": "if (JSUtil.nil(svcVersion) && JSUtil.nil(ver))",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 158,
"line_content": "if (!JSUtil.nil(prodId) || !JSUtil.nil(dProdId)){",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 232,
"line_content": "if (JSUtil.nil(displayName) || displayName === "")",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 253,
"line_content": "if (/Acrobat/.test(displayName) && !JSUtil.nil(uninstallString) && (uninstallString.indexOf("{") >= 0) && (uninstallString.indexOf("}") >= 0)) {",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 256,
"line_content": "if (!JSUtil.nil(editionString)) {",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 273,
"line_content": "if (!JSUtil.nil(value) && value != null && value.length > 0 && value.toLowerCase() != "none" && value != "")",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
},
{
"api_name": "JSUtil.nil(",
"severity": "medium",
"line_number": 281,
"line_content": "if (!obj1.hasOwnProperty(key) || JSUtil.nil(obj1[key]) || obj1[key] == null || obj1[key].length == 0 || obj1[key].toLowerCase() == "none" || obj1[key] == "")",
"replacement": "gs.nil(",
"description": "JSUtil.nil() is deprecated, use gs.nil() instead",
"migration_effort": "low"
}
],
"low": []
}
}`

…ow developers to verify their development objects for deprecated APIs.
@github-actions
Copy link

Valid PR for ActionPack

Thank you for your contribution. This PR complies with the CONTRIBUTING.md.
A maintainer will review this shortly. In the meantime, Happy Hacking!

@am-shakeel am-shakeel self-assigned this Oct 14, 2025
Copy link
Contributor

@am-shakeel am-shakeel left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good

@am-shakeel am-shakeel merged commit 7febe22 into ServiceNowDevProgram:main Oct 14, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants