Knowledge manager unable to publish knowledge article


Description

Symptoms

A knowledge base manager cannot publish articles that are not owned by them.


Release or Environment


Cause

Expected behavior

Resolution

Out of the box, the 'Publish' UI action can only be seen by Admin, KB Owner, and revisor. This can be seen in the condition of the UI action:
new KBKnowledge().canPublish(current)

This is checking the can publish function which is called in the script include 'KBVersioningSNC'. Here is the function checked:

/**
* Checks whether this record can be published by the user
*
* @param GlideRecord: current
* @return Boolean
**/
canPublish: function(current){
if(current.workflow_state!='draft')
return false;
if(!this._knowledgeHelper.canContribute(current))
return false;
if(this._isReviser(current))
return true;
if(this.isOwnerOrAdmin(current))
return true;
return false;
},

This code is looking for a user who is the revisor (generally the author) or the KB owner or Admin. However, the managers are the users who can approve the publishing of a record. For example, once one of the previously mentioned users clicks "Publish" this kicks off the approval process and sets the article in a state of 'Review'. From this stage, the managers can approve the publishing of the article which then sets the article to published. This can be seen in the following documentation:

-----------
Approve an article that is being reviewed
Approve-article-in-review

Note:
In the Approvals related list, click Requested in the State column to display the Approval form for the article.
Click Approve.
The system displays the Knowledge form. The version number of the article increments to the next whole number (for example, from 2.02 to 3.0), and the state changes to Published.
----------

With the approval workflow, when a user clicks the 'Publish' ui action, this does not actually publish the article. This instead kicks off the approval workflow and places the article in 'Review'. Once an approver (ex: KB Owner/ KB Manger) approves this request, the record then changes to 'Published'.