Background scrip to bulk update Knowledge base for articles
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-25-2020 01:20 PM
Hi All,
I have created below background script to update the knowledge base for all articles from a certain knowledge base to a new KB .
After running this script knowledge base is not getting updated . Please suggest if I am missing something.
var TARGET_KB_SYS_ID = '1e2530df1bf010109604a9b4bd4bcb54';
var KB_ARTICLES_TO_MOVE = [];
var grKBA = new GlideRecord('kb_knowledge');
grKBA.addEncodedQuery('kb_knowledge_base=bb0370019f22120047a2d126c42e7073^ORkb_knowledge_base=d2a0cb82db1304500d2e633fd396194b^workflow_stateINdraft,review,published,pending_retirement,retired');
grKBA.addQuery();
while(grKBA.next()){
KB_ARTICLES_TO_MOVE.push(grKBA.number);
}
for (var i = 0; i < KB_ARTICLES_TO_MOVE.length; i++) {
moveKBArticle(KB_ARTICLES_TO_MOVE[i]);
}
function moveKBArticle(kbNumber) {
var kb = new GlideRecord('kb_knowledge');
kb.setWorkflow(false);
kb.addQuery('number',kbNumber);
kb.query();
if (kb.next()) {
kb.kb_knowledge_base = TARGET_KB_SYS_ID;
kb.update();
gs.print('Updated ' + kbNumber);
} else {
gs.print('Did not find ' + kbNumber);
}
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-25-2020 01:30 PM
Line
moveKBArticle(KB_ARTICLES_TO_MOVE[i]);
would give you sys_ids.
Can you replace
kb.addQuery('number',kbNumber);
with
kb.addQuery('sys_id',kbNumber);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-25-2020 01:33 PM
Hi
I have replaced the line as you mentioned , still knowledge base is not changing .
Please suggest.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-25-2020 01:42 PM
It returns numbers only & not sys_id. Can you use below with added logs.
var TARGET_KB_SYS_ID = '1e2530df1bf010109604a9b4bd4bcb54';
var KB_ARTICLES_TO_MOVE = [];
var grKBA = new GlideRecord('kb_knowledge');
grKBA.addEncodedQuery('kb_knowledge_base=bb0370019f22120047a2d126c42e7073^ORkb_knowledge_base=d2a0cb82db1304500d2e633fd396194b^workflow_stateINdraft,review,published,pending_retirement,retired');
grKBA.query(); //changed here as had syntax issue
while(grKBA.next()){
KB_ARTICLES_TO_MOVE.push(grKBA.number);
}
for (var i = 0; i < KB_ARTICLES_TO_MOVE.length; i++) {
moveKBArticle(KB_ARTICLES_TO_MOVE[i]);
}
function moveKBArticle(kbNumber) {
var kb = new GlideRecord('kb_knowledge');
kb.addQuery('number',kbNumber);
kb.query();
gs.print('Count is '+kb.getRowCount());
if (kb.next()) {
kb.kb_knowledge_base = TARGET_KB_SYS_ID;
kb.setWorkflow(false);
kb.update();
gs.print('Updated ' + kbNumber);
} else {
gs.print('Did not find ' + kbNumber);
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-25-2020 02:00 PM