Welcome to Community Week 2025! Join us to learn, connect, and be recognized as we celebrate the spirit of Community and the power of AI. Get the details  

Want retire all articles with same number

Ash41
Kilo Sage

Hi Team 

 

Below is the code working fine for article that passed 5days on valid to, and retire articles. But I want to retire all the articles if any one of the article met the valid to date condition 5days. irrespective of state they are and version.

 

 

 

 

 

var x = new GlideDateTime(gs.now());
x.addDays(-5);
x = x.getDate();
 
var knowledge_article = new GlideRecord('kb_knowledge');
knowledge_article.addQuery('valid_to', '<=', x );
knowledge_article.addEncodedQuery('kb_knowledge_base=a7e8a78bff0221009b20ffffffffff17^workflow_state=published^ORworkflow_state=pending_retirement^ORworkflow_state=draft^ORworkflow_state=review^ORworkflow_state=extension_review^ORworkflow_state=scheduled_publish');
knowledge_article.addQuery('number', 'KB0015495');
knowledge_article.query();
while (knowledge_article.next()) {
    knowledge_article.workflow_state = 'retired';
    knowledge_article.u_auto_retire = 'true';
    knowledge_article.setWorkflow(false);
    knowledge_article.update();
}

 

 

 

 

 

1 ACCEPTED SOLUTION

@Ash41 

 

 

var kbNumber=[];
var x = new GlideDateTime(gs.now());
x.addDays(-5);
x = x.getDate();
 
var knowledge_article = new GlideRecord('kb_knowledge');
knowledge_article.addEncodedQuery('kb_knowledge_base=a7e8a78bff0221009b20ffffffffff17^ORkb_knowledge_base=42a1f18647dc9d50da21ebbd436d432e^ORkb_knowledge_base=003eef4cc35abd1080df7aef05013166^ORkb_knowledge_base=0d0ed6ff97b91d9c29faf1500153aff5^workflow_stateNOT INretired,outdated,rejected');
knowledge_article.addQuery('valid_to', '<=', x);
knowledge_article.query();
while (knowledge_article.next()) {
    kbNumber.push(knowledge_article.getValue('number'));
    //gs.print( "Number " + kbNumber + " State " + knowledge_article.workflow_state);
}
    var knowledge_article1 = new GlideRecord('kb_knowledge');
    knowledge_article1.addEncodedQuery('kb_knowledge_base=a7e8a78bff0221009b20ffffffffff17^ORkb_knowledge_base=42a1f18647dc9d50da21ebbd436d432e^ORkb_knowledge_base=003eef4cc35abd1080df7aef05013166^ORkb_knowledge_base=0d0ed6ff97b91d9c29faf1500153aff5^workflow_stateNOT INretired,outdated,rejected');
    knowledge_article1.addQuery('number','IN',kbNumber);
    knowledge_article1.query();
 while(knowledge_article1.next()){
  gs.print(" Query Number :"+knowledge_article1.number + "state: "+knowledge_article1.workflow_state );
 
 }
 

 

 

View solution in original post

4 REPLIES 4

Satishkumar B
Giga Sage
Giga Sage

@Ash41 Add a preliminary query to check if any articles meet the valid_to date condition. Only if such articles are found does it proceed to retire all relevant articles. try the below code. 

// Define the threshold date for retirement
var thresholdDate = new GlideDateTime(gs.now());
thresholdDate.addDays(-5);
thresholdDate = thresholdDate.getDate();

// Check if any articles meet the valid_to condition
var checkArticle = new GlideRecord('kb_knowledge');
checkArticle.addQuery('valid_to', '<=', thresholdDate);
checkArticle.addQuery('kb_knowledge_base', 'a7e8a78bff0221009b20ffffffffff17'); // Your Knowledge Base
checkArticle.query();

if (checkArticle.hasNext()) {
    // If any article meets the condition, retire all relevant articles
    var retireArticle = new GlideRecord('kb_knowledge');
    retireArticle.addQuery('kb_knowledge_base', 'a7e8a78bff0221009b20ffffffffff17'); // Your Knowledge Base
    retireArticle.addEncodedQuery('workflow_state=published^ORworkflow_state=pending_retirement^ORworkflow_state=draft^ORworkflow_state=review^ORworkflow_state=extension_review^ORworkflow_state=scheduled_publish');
    retireArticle.query();

    while (retireArticle.next()) {
        retireArticle.workflow_state = 'retired';
        retireArticle.u_auto_retire = 'true';
        retireArticle.setWorkflow(false);
        retireArticle.update();
    }
}

 


Mark it helpful 👍and Accept Solution !! If this helps you to understand.

…………………………………………........................................................................................

Hi Satish, 

 

I have tried with one record instead running for mutiple record at a time, still it retied other records as well.

// Define the threshold date for retirement
var thresholdDate = new GlideDateTime(gs.now());
thresholdDate.addDays(-5);
thresholdDate = thresholdDate.getDate();

// Check if any articles meet the valid_to condition
var checkArticle = new GlideRecord('kb_knowledge');
checkArticle.addQuery('valid_to', '<=', thresholdDate);
checkArticle.addQuery('kb_knowledge_base', 'a7e8a78bff0221009b20ffffffffff17'); // Your Knowledge Base
 checkArticle.addQuery('number', 'KB000xxx');
checkArticle.query();

if (checkArticle.hasNext()) {
    // If any article meets the condition, retire all relevant articles
    var retireArticle = new GlideRecord('kb_knowledge');
    retireArticle.addQuery('kb_knowledge_base', 'a7e8a78bff0221009b20ffffffffff17'); // Your Knowledge Base
    retireArticle.addEncodedQuery('workflow_state=published^ORworkflow_state=pending_retirement^ORworkflow_state=draft^ORworkflow_state=review^ORworkflow_state=extension_review^ORworkflow_state=scheduled_publish');
    retireArticle.addQuery('number', 'KB000xxx');
retireArticle.query();

    while (retireArticle.next()) {
        retireArticle.workflow_state = 'retired';
        retireArticle.u_auto_retire = 'true';
        retireArticle.setWorkflow(false);
        retireArticle.update();
    }
}

 

@Ash41 

 

 

var kbNumber=[];
var x = new GlideDateTime(gs.now());
x.addDays(-5);
x = x.getDate();
 
var knowledge_article = new GlideRecord('kb_knowledge');
knowledge_article.addEncodedQuery('kb_knowledge_base=a7e8a78bff0221009b20ffffffffff17^ORkb_knowledge_base=42a1f18647dc9d50da21ebbd436d432e^ORkb_knowledge_base=003eef4cc35abd1080df7aef05013166^ORkb_knowledge_base=0d0ed6ff97b91d9c29faf1500153aff5^workflow_stateNOT INretired,outdated,rejected');
knowledge_article.addQuery('valid_to', '<=', x);
knowledge_article.query();
while (knowledge_article.next()) {
    kbNumber.push(knowledge_article.getValue('number'));
    //gs.print( "Number " + kbNumber + " State " + knowledge_article.workflow_state);
}
    var knowledge_article1 = new GlideRecord('kb_knowledge');
    knowledge_article1.addEncodedQuery('kb_knowledge_base=a7e8a78bff0221009b20ffffffffff17^ORkb_knowledge_base=42a1f18647dc9d50da21ebbd436d432e^ORkb_knowledge_base=003eef4cc35abd1080df7aef05013166^ORkb_knowledge_base=0d0ed6ff97b91d9c29faf1500153aff5^workflow_stateNOT INretired,outdated,rejected');
    knowledge_article1.addQuery('number','IN',kbNumber);
    knowledge_article1.query();
 while(knowledge_article1.next()){
  gs.print(" Query Number :"+knowledge_article1.number + "state: "+knowledge_article1.workflow_state );
 
 }
 

 

 

Thanks for your help! 🙂