From 7eb63b57ba3fd6e109305da30b5fdee588c4a72f Mon Sep 17 00:00:00 2001 From: Divya <165976969+divyajetti9@users.noreply.github.com> Date: Wed, 15 Oct 2025 15:47:12 -0500 Subject: [PATCH 1/2] README.md --- .../README.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 Server-Side Components/Business Rules/Auto-Generate Knowledge Article for Resolved Incidents/README.md diff --git a/Server-Side Components/Business Rules/Auto-Generate Knowledge Article for Resolved Incidents/README.md b/Server-Side Components/Business Rules/Auto-Generate Knowledge Article for Resolved Incidents/README.md new file mode 100644 index 0000000000..c3366c2f09 --- /dev/null +++ b/Server-Side Components/Business Rules/Auto-Generate Knowledge Article for Resolved Incidents/README.md @@ -0,0 +1,9 @@ +## Overview +This ServiceNow Business Rule automatically creates a Knowledge Article when an Incident is resolved and includes detailed resolution notes. +It helps promote knowledge sharing, reduce repeated issues, and improve ITSM efficiency. + + +## Features +- Automatically creates a Knowledge Article in the **Draft** state. +- Extracts content from the Incident's **Resolution Notes**. +- Prevents duplicate Knowledge Articles by checking for similar issue titles. From fff54030973d52005440dd9f2efb6b634aa7732c Mon Sep 17 00:00:00 2001 From: Divya <165976969+divyajetti9@users.noreply.github.com> Date: Wed, 15 Oct 2025 15:50:59 -0500 Subject: [PATCH 2/2] script.js --- .../script.js | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Server-Side Components/Business Rules/Auto-Generate Knowledge Article for Resolved Incidents/script.js diff --git a/Server-Side Components/Business Rules/Auto-Generate Knowledge Article for Resolved Incidents/script.js b/Server-Side Components/Business Rules/Auto-Generate Knowledge Article for Resolved Incidents/script.js new file mode 100644 index 0000000000..5cdb128b36 --- /dev/null +++ b/Server-Side Components/Business Rules/Auto-Generate Knowledge Article for Resolved Incidents/script.js @@ -0,0 +1,39 @@ +(function executeRule(current, previous) { + + // Only run when the incident moves to Resolved + if (current.state == previous.state || current.state != 6) { + return; + } + + // Make sure we have resolution notes to use for the KB article + if (!current.close_notes) { + gs.info('Skipping KB creation: No resolution notes found for ' + current.number); + return; + } + + // Get a clean version of the short description for comparison + var issueTitle = current.short_description ? current.short_description.toLowerCase().trim() : ''; + + // Check if a similar KB article already exists + var kbCheck = new GlideRecord('kb_knowledge'); + kbCheck.addQuery('short_description', 'CONTAINS', issueTitle); + kbCheck.query(); + + if (kbCheck.next()) { + gs.info('KB already exists for issue: ' + current.number + '. Skipping new KB creation.'); + return; + } + + // Create a new Knowledge Article + var kb = new GlideRecord('kb_knowledge'); + kb.initialize(); + kb.short_description = current.short_description; + kb.text = current.close_notes; + kb.workflow_state = 'draft'; + kb.kb_category = ''; // You can set a default category if needed + kb.u_source_incident = current.number; // Optional: track which incident created it + kb.insert(); + + gs.info('New KB article created from Incident: ' + current.number); + +})(current, previous);