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! 🙂