---
availability: INSTALLABLE
description: A plugin that allows users to approve or reject draft knowledge articles
under their approval.
installation_asset_uuid: fae68907-f960-4bf6-882f-5c1c5c12a236
name: Approve or Reject a Draft Knowledge Article
purple_chat_link: https://marketplace.moveworks.com/purple-chat?conversation=%7B%22messages%22%3A%5B%7B%22parts%22%3A%5B%7B%22richText%22%3A%22Are+there+any+knowledge+articles+that+need+my+approval%3F%22%7D%5D%2C%22role%22%3A%22user%22%7D%2C%7B%22parts%22%3A%5B%7B%22reasoningSteps%22%3A%5B%7B%22richText%22%3A%22Searching+for+knowledge+articles+in+%3Cb%3EServiceNow%3C%2Fb%3E+requiring+your+approval.%22%2C%22status%22%3A%22success%22%7D%5D%7D%2C%7B%22richText%22%3A%22%3Cp%3EI+found+2+articles+in+%3Cb%3EServiceNow%3C%2Fb%3E+waiting+for+your+approval.+Which+one+would+you+like+to+review%3F%3C%2Fp%3E%22%7D%2C%7B%22citations%22%3A%5B%7B%22citationTitle%22%3A%22KB0010123%3A+How+to+set+up+a+new+VPN+connection%22%2C%22connectorName%22%3A%22servicenow%22%7D%2C%7B%22citationTitle%22%3A%22KB0010125%3A+Onboarding+process+for+new+hires%22%2C%22connectorName%22%3A%22servicenow%22%7D%5D%7D%2C%7B%22buttons%22%3A%5B%7B%22buttonText%22%3A%22VPN+Connection+Guide%22%7D%2C%7B%22buttonText%22%3A%22New+Hire+Onboarding%22%7D%5D%7D%5D%2C%22role%22%3A%22assistant%22%7D%2C%7B%22parts%22%3A%5B%7B%22richText%22%3A%22VPN+Connection+Guide%22%7D%5D%2C%22role%22%3A%22user%22%7D%2C%7B%22parts%22%3A%5B%7B%22richText%22%3A%22%3Cp%3EOkay%2C+here+is+the+content+for+%3Cb%3EKB0010123%3A+How+to+set+up+a+new+VPN+connection%3C%2Fb%3E.%3C%2Fp%3E%22%7D%2C%7B%22richText%22%3A%22%3Ch3%3EPurpose%3C%2Fh3%3E%3Cp%3EThis+article+provides+step-by-step+instructions+for+installing+and+configuring+the+PaloAlto+GlobalProtect+VPN+client+on+your+company-issued+laptop.%3C%2Fp%3E%3Ch3%3EInstructions%3C%2Fh3%3E%3Col%3E%3Cli%3ENavigate+to+the+Software+Center+on+your+device.%3C%2Fli%3E%3Cli%3ESearch+for+%27PaloAlto+GlobalProtect%27+and+click+%27Install%27.%3C%2Fli%3E%3Cli%3EOnce+installed%2C+open+the+application.+The+portal+address+should+be+pre-configured+as+%3Ccode%3Evpn.yourcompany.com%3C%2Fcode%3E.%3C%2Fli%3E%3Cli%3EClick+%27Connect%27+and+enter+your+standard+company+credentials+when+prompted.%3C%2Fli%3E%3Cli%3EYou+are+now+connected+to+the+VPN.%3C%2Fli%3E%3C%2Fol%3E%3Cp%3EWhat+would+you+like+to+do%3F%3C%2Fp%3E%22%7D%2C%7B%22buttons%22%3A%5B%7B%22buttonText%22%3A%22Approve%22%2C%22style%22%3A%22outlined%22%7D%2C%7B%22buttonText%22%3A%22Reject%22%2C%22style%22%3A%22outlined%22%7D%5D%7D%5D%2C%22role%22%3A%22assistant%22%7D%2C%7B%22parts%22%3A%5B%7B%22richText%22%3A%22Reject%22%7D%5D%2C%22role%22%3A%22user%22%7D%2C%7B%22parts%22%3A%5B%7B%22richText%22%3A%22%3Cp%3EUnderstood.+Could+you+please+provide+a+reason+for+the+rejection%3F+This+will+be+added+as+a+comment+for+the+author.%3C%2Fp%3E%22%7D%5D%2C%22role%22%3A%22assistant%22%7D%2C%7B%22parts%22%3A%5B%7B%22richText%22%3A%22Step+3+is+incorrect.+The+portal+address+is+not+pre-configured.+Users+need+to+enter+it+manually.%22%7D%5D%2C%22role%22%3A%22user%22%7D%2C%7B%22parts%22%3A%5B%7B%22richText%22%3A%22%3Cp%3EOkay%2C+I+will+reject+the+article+%3Cb%3EKB0010123%3A+How+to+set+up+a+new+VPN+connection%3C%2Fb%3E+with+the+following+comment%3A%3C%2Fp%3E%3Ci%3EStep+3+is+incorrect.+The+portal+address+is+not+pre-configured.+Users+need+to+enter+it+manually.%3C%2Fi%3E%3Cp%3E%3Cb%3EDoes+this+look+right%3F%3C%2Fb%3E%3C%2Fp%3E%22%7D%2C%7B%22buttons%22%3A%5B%7B%22buttonText%22%3A%22Confirm+Rejection%22%2C%22style%22%3A%22filled%22%7D%2C%7B%22buttonText%22%3A%22Edit+Comment%22%2C%22style%22%3A%22outlined%22%7D%2C%7B%22buttonText%22%3A%22Cancel%22%2C%22style%22%3A%22outlined%22%7D%5D%7D%5D%2C%22role%22%3A%22assistant%22%7D%2C%7B%22parts%22%3A%5B%7B%22richText%22%3A%22Confirm+Rejection%22%7D%5D%2C%22role%22%3A%22user%22%7D%2C%7B%22parts%22%3A%5B%7B%22reasoningSteps%22%3A%5B%7B%22richText%22%3A%22Rejecting+knowledge+article+%3Cb%3EKB0010123%3C%2Fb%3E+in+%3Cb%3EServiceNow%3C%2Fb%3E+with+the+provided+comment.%22%2C%22status%22%3A%22success%22%7D%5D%7D%2C%7B%22richText%22%3A%22%3Cp%3EDone.+The+article+has+been+rejected+and+your+feedback+has+been+sent+to+the+author.%3C%2Fp%3E%22%7D%2C%7B%22citations%22%3A%5B%7B%22citationTitle%22%3A%22KB0010123%3A+How+to+set+up+a+new+VPN+connection%22%2C%22connectorName%22%3A%22servicenow%22%7D%5D%7D%5D%2C%22role%22%3A%22assistant%22%7D%5D%7D
solution_tags:
- IT
systems:
- servicenow
---
## **Introduction**
The **"Approve / Reject Knowledge Articles"** plugin allows approvers to review and take action on knowledge articles directly through the Moveworks AI Assistant, without logging into the ServiceNow system. This streamlines the article approval workflow, speeds up decision-making, and ensures timely publishing while maintaining content quality and governance. Approvers can also preview the article’s content before making their decision.
This guide will walk you through installing and configuring the plugin in **Agent Studio** in just a few minutes. Let’s get started
## **Prerequisites**
- Access to Agent Studio
## **What are we building?**
### **Agent Design**
This [purple chat](https://marketplace.moveworks.com/purple-chat?conversation=%7B%22messages%22%3A%5B%7B%22parts%22%3A%5B%7B%22richText%22%3A%22Are+there+any+knowledge+articles+that+need+my+approval%3F%22%7D%5D%2C%22role%22%3A%22user%22%7D%2C%7B%22parts%22%3A%5B%7B%22reasoningSteps%22%3A%5B%7B%22richText%22%3A%22Searching+for+knowledge+articles+in+%3Cb%3EServiceNow%3C%2Fb%3E+requiring+your+approval.%22%2C%22status%22%3A%22success%22%7D%5D%7D%2C%7B%22richText%22%3A%22%3Cp%3EI+found+2+articles+in+%3Cb%3EServiceNow%3C%2Fb%3E+waiting+for+your+approval.+Which+one+would+you+like+to+review%3F%3C%2Fp%3E%22%7D%2C%7B%22citations%22%3A%5B%7B%22citationTitle%22%3A%22KB0010123%3A+How+to+set+up+a+new+VPN+connection%22%2C%22connectorName%22%3A%22servicenow%22%7D%2C%7B%22citationTitle%22%3A%22KB0010125%3A+Onboarding+process+for+new+hires%22%2C%22connectorName%22%3A%22servicenow%22%7D%5D%7D%2C%7B%22buttons%22%3A%5B%7B%22buttonText%22%3A%22VPN+Connection+Guide%22%7D%2C%7B%22buttonText%22%3A%22New+Hire+Onboarding%22%7D%5D%7D%5D%2C%22role%22%3A%22assistant%22%7D%2C%7B%22parts%22%3A%5B%7B%22richText%22%3A%22VPN+Connection+Guide%22%7D%5D%2C%22role%22%3A%22user%22%7D%2C%7B%22parts%22%3A%5B%7B%22richText%22%3A%22%3Cp%3EOkay%2C+here+is+the+content+for+%3Cb%3EKB0010123%3A+How+to+set+up+a+new+VPN+connection%3C%2Fb%3E.%3C%2Fp%3E%22%7D%2C%7B%22richText%22%3A%22%3Ch3%3EPurpose%3C%2Fh3%3E%3Cp%3EThis+article+provides+step-by-step+instructions+for+installing+and+configuring+the+PaloAlto+GlobalProtect+VPN+client+on+your+company-issued+laptop.%3C%2Fp%3E%3Ch3%3EInstructions%3C%2Fh3%3E%3Col%3E%3Cli%3ENavigate+to+the+Software+Center+on+your+device.%3C%2Fli%3E%3Cli%3ESearch+for+%27PaloAlto+GlobalProtect%27+and+click+%27Install%27.%3C%2Fli%3E%3Cli%3EOnce+installed%2C+open+the+application.+The+portal+address+should+be+pre-configured+as+%3Ccode%3Evpn.yourcompany.com%3C%2Fcode%3E.%3C%2Fli%3E%3Cli%3EClick+%27Connect%27+and+enter+your+standard+company+credentials+when+prompted.%3C%2Fli%3E%3Cli%3EYou+are+now+connected+to+the+VPN.%3C%2Fli%3E%3C%2Fol%3E%3Cp%3EWhat+would+you+like+to+do%3F%3C%2Fp%3E%22%7D%2C%7B%22buttons%22%3A%5B%7B%22buttonText%22%3A%22Approve%22%2C%22style%22%3A%22outlined%22%7D%2C%7B%22buttonText%22%3A%22Reject%22%2C%22style%22%3A%22outlined%22%7D%5D%7D%5D%2C%22role%22%3A%22assistant%22%7D%2C%7B%22parts%22%3A%5B%7B%22richText%22%3A%22Reject%22%7D%5D%2C%22role%22%3A%22user%22%7D%2C%7B%22parts%22%3A%5B%7B%22richText%22%3A%22%3Cp%3EUnderstood.+Could+you+please+provide+a+reason+for+the+rejection%3F+This+will+be+added+as+a+comment+for+the+author.%3C%2Fp%3E%22%7D%5D%2C%22role%22%3A%22assistant%22%7D%2C%7B%22parts%22%3A%5B%7B%22richText%22%3A%22Step+3+is+incorrect.+The+portal+address+is+not+pre-configured.+Users+need+to+enter+it+manually.%22%7D%5D%2C%22role%22%3A%22user%22%7D%2C%7B%22parts%22%3A%5B%7B%22richText%22%3A%22%3Cp%3EOkay%2C+I+will+reject+the+article+%3Cb%3EKB0010123%3A+How+to+set+up+a+new+VPN+connection%3C%2Fb%3E+with+the+following+comment%3A%3C%2Fp%3E%3Ci%3EStep+3+is+incorrect.+The+portal+address+is+not+pre-configured.+Users+need+to+enter+it+manually.%3C%2Fi%3E%3Cp%3E%3Cb%3EDoes+this+look+right%3F%3C%2Fb%3E%3C%2Fp%3E%22%7D%2C%7B%22buttons%22%3A%5B%7B%22buttonText%22%3A%22Confirm+Rejection%22%2C%22style%22%3A%22filled%22%7D%2C%7B%22buttonText%22%3A%22Edit+Comment%22%2C%22style%22%3A%22outlined%22%7D%2C%7B%22buttonText%22%3A%22Cancel%22%2C%22style%22%3A%22outlined%22%7D%5D%7D%5D%2C%22role%22%3A%22assistant%22%7D%2C%7B%22parts%22%3A%5B%7B%22richText%22%3A%22Confirm+Rejection%22%7D%5D%2C%22role%22%3A%22user%22%7D%2C%7B%22parts%22%3A%5B%7B%22reasoningSteps%22%3A%5B%7B%22richText%22%3A%22Rejecting+knowledge+article+%3Cb%3EKB0010123%3C%2Fb%3E+in+%3Cb%3EServiceNow%3C%2Fb%3E+with+the+provided+comment.%22%2C%22status%22%3A%22success%22%7D%5D%7D%2C%7B%22richText%22%3A%22%3Cp%3EDone.+The+article+has+been+rejected+and+your+feedback+has+been+sent+to+the+author.%3C%2Fp%3E%22%7D%2C%7B%22citations%22%3A%5B%7B%22citationTitle%22%3A%22KB0010123%3A+How+to+set+up+a+new+VPN+connection%22%2C%22connectorName%22%3A%22servicenow%22%7D%5D%7D%5D%2C%22role%22%3A%22assistant%22%7D%5D%7D) shows the experience we are going to build.
## **Installation Steps**
We recommend setting up **ServiceNow** before installing this plugin. Please follow the [ServiceNow Connector](https://developer.moveworks.com/marketplace/package/?id=servicenow&hist=home%2Cbrws#how-to-implement) guide to configure the connection.
Ensure the following permissions are granted:
- **Table Access**:
- `Read` access to the `kb_knowledge` and `sysapproval_approver` tables
- `Update` access to the `kb_knowledge` table (to approve or reject articles)
- **Field Access**: Sufficient access to retrieve and update information related to knowledge article approvals
Once the connector is successfully configured, follow our [plugin installation documentation](https://help.moveworks.com/docs/ai-agent-marketplace-installation) for detailed steps on how to install and activate the plugin in **Agent Studio**.
## **Appendix**
### API #1 : Get Pending Approval Tasks For A Knowledge Article
```bash
curl --location 'https://<<API_SERVER_DOMAIN>>.service-now.com/api/now/table/sysapproval_approver?sysparm_query=approver.email%3D{{USER_EMAIL}}%5Estate%3Drequested%5Esource_table%3Dkb_knowledge&sysparm_fields=sys_id%2Capprover%2Cstate%2Cdocument_id%2Cdocument_id.display_value%2Cdocument_id.short_description%2Cdocument_id.link&sysparm_display_value=true' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <YOUR_ACCESS_TOKEN>'
```
**Query Parameters:**
- `USER_EMAIL` – Filters approval records where the approver's email matches the specified user email
- `state=requested` – Only includes approval records currently in the "requested" state
- `source_table=kb_knowledge` – Limits results to approvals related to knowledge base articles
- `sysparm_fields` (string) – Fields to include in the response
- `sysparm_display_value=true` – Returns display values for referenced fields
### API #2 : Get Knowledge Article Via Approver Task
```bash
curl --location 'https://<API_SERVER_DOMAIN>/api/now/table/sysapproval_approver/{{KNOWLEDGE_ARTICLE_SYS_ID}}?sysparm_fields=sys_id,approver,state,document_id,document_id.display_value,document_id.short_description,document_id.text,document_id.link,comments&sysparm_display_value=true' \
--header 'Authorization: Bearer <Your_Access_Token>' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json'
```
**Query Parameters:**
- `KNOWLEDGE_ARTICLE_SYS_ID` (string) – Unique ID of the approval record to retrieve.
- `sysparm_display_value=true` – Returns display values for referenced fields
- `sysparm_fields` (string) – Fields to include in the response
### API #3: Approve Or Reject Knowledge Article Via Approver Task
```bash
curl --location --request PATCH 'https://<API_SERVER_DOMAIN>/api/now/table/sysapproval_approver/{{KNOWLEDGE_ARTICLE_SYS_ID}}' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer <Your_Access_Token>' \
--header 'Content-Type: application/json' \
--data '{
"state": "{{state}}",
"comments": "{{comments}}"
}'
```
**Path Parameters:**
- `KNOWLEDGE_ARTICLE_SYS_ID` (string) – The unique system identifier (sys_id) of the approval record you want to approve or reject
**Request Body Fields:**
- `state` (string) – Updates the state of the approval.
- `comments`(string)– Text notes added to the approval record. Used to provide context or feedback for the approval decision.