diff --git a/Server-Side Components/Business Rules/Auto-Generate-KB-Article/README.md b/Server-Side Components/Business Rules/Auto-Generate-KB-Article/README.md new file mode 100644 index 0000000000..ebbd3a6557 --- /dev/null +++ b/Server-Side Components/Business Rules/Auto-Generate-KB-Article/README.md @@ -0,0 +1,18 @@ +# Auto-Generate Knowledge Article from Resolved Incident + +## Overview +This ServiceNow Business Rule automatically creates a draft Knowledge Article when an Incident is resolved and contains resolution notes. It helps promote knowledge reuse and reduces repetitive tickets by capturing solutions directly from resolved Incidents. + +## Features +- Triggered when an Incident is moved to the "Resolved" state. +- Checks for presence of resolution notes (`close_notes`). +- Creates a draft Knowledge Article with the Incident number and resolution content. +- Tags the article with a default category (`General`). +- Optionally links the article to the source Incident via a custom field. + +## Business Rule Configuration +- **Table**: `incident` +- **When to Run**: `after update` +- **Condition**: + ```javascript + current.state == 6 && current.close_notes diff --git a/Server-Side Components/Business Rules/Auto-Generate-KB-Article/script.js b/Server-Side Components/Business Rules/Auto-Generate-KB-Article/script.js new file mode 100644 index 0000000000..f3cf05e4b4 --- /dev/null +++ b/Server-Side Components/Business Rules/Auto-Generate-KB-Article/script.js @@ -0,0 +1,17 @@ +(function executeRule(current, previous /*null when async*/) { + try { + // Check if Incident is resolved and has a resolution note + if (current.state == 6 && current.close_notes) { // 6 = Resolved + var kbGR = new GlideRecord("kb_knowledge"); + kbGR.initialize(); + kbGR.short_description = "Resolution for Incident " + current.number; + kbGR.text = current.close_notes; + kbGR.kb_category = "General"; // Default category, can be customized + kbGR.workflow_state = "draft"; + kbGR.u_source_incident = current.sys_id; // Optional: custom field to track source + kbGR.insert(); + } + } catch (ex) { + gs.error("An error occurred while creating a Knowledge Article from Incident."); + } +})(current, previous);