Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

How to make an article favourite for all users in Employee Portal

vidhya_mouli
Tera Sage

I have a specific article which I want to make favourite by default to all the users. I wrote this BG script for testing:

 

 

(function() {
    // Define the reference table and document ID
    var referenceTable = 'sn_cd_content_news';
    var referenceDocument = '735b830735d9507354d80735f1c07354';
    
    // Get a specific user to test the insertion
    var userSysId = 'd7aa800ac38951509ba42d4ce0013150'; // Replace with a sys_id from your results

  // Manually check if the favorite already exists
    var favGR = new GlideRecord('sp_favorite');
    favGR.addQuery('user', userSysId);
    favGR.addQuery('reference_table', referenceTable);
    favGR.addQuery('reference_document', referenceDocument);
    favGR.query();

gs.info(favGR.getEncodedQuery());
if (!favGR.next()) {
    gs.info('Inserting new favorite for user: ' + userSysId);
        var newFavGR = new GlideRecord('sp_favorite');
        newFavGR.initialize();
        newFavGR.user = userSysId;
        newFavGR.reference_table = referenceTable;
        newFavGR.reference_document = referenceDocument;
        newFavGR.insert();
}
})();

 

 

However, when I run the script, I get error: 

Script: Inserting new favorite for user: d7aa800ac38951509ba42d4ce0013150
Operation against file 'sp_favorite' was aborted by Business Rule 'Unique Favorite Item^6beb5aa1c31c1610e08896c90501318c'. Business Rule Stack:Unique Favorite Item

I manualy check sp_favorite to ensure that this record is nt already present in the table. How can I make this work?

1 ACCEPTED SOLUTION

Sandeep Rajput
Tera Patron
Tera Patron

@vidhya_mouli 

(function() {
    // Define the reference table and document ID
    var referenceTable = 'sn_cd_content_news';
    var referenceDocument = '735b830735d9507354d80735f1c07354';
    
    // Get a specific user to test the insertion
    var userSysId = 'd7aa800ac38951509ba42d4ce0013150'; // Replace with a sys_id from your results

  // Manually check if the favorite already exists
    var favGR = new GlideRecord('sp_favorite');
    favGR.addQuery('user', userSysId);
    favGR.addQuery('reference_table', referenceTable);
    favGR.addQuery('reference_document', referenceDocument);
    favGR.query();

gs.info(favGR.getEncodedQuery());
if (!favGR.next()) {
    gs.info('Inserting new favorite for user: ' + userSysId);
        var newFavGR = new GlideRecord('sp_favorite');
        newFavGR.initialize();
        newFavGR.user = userSysId;
        newFavGR.reference_table = referenceTable;
        newFavGR.reference_document = referenceDocument;
        newFavGR.setWorkflow(false);
        newFavGR.insert();
}
})();

Please see if this works.

View solution in original post

3 REPLIES 3

Sandeep Rajput
Tera Patron
Tera Patron

@vidhya_mouli 

(function() {
    // Define the reference table and document ID
    var referenceTable = 'sn_cd_content_news';
    var referenceDocument = '735b830735d9507354d80735f1c07354';
    
    // Get a specific user to test the insertion
    var userSysId = 'd7aa800ac38951509ba42d4ce0013150'; // Replace with a sys_id from your results

  // Manually check if the favorite already exists
    var favGR = new GlideRecord('sp_favorite');
    favGR.addQuery('user', userSysId);
    favGR.addQuery('reference_table', referenceTable);
    favGR.addQuery('reference_document', referenceDocument);
    favGR.query();

gs.info(favGR.getEncodedQuery());
if (!favGR.next()) {
    gs.info('Inserting new favorite for user: ' + userSysId);
        var newFavGR = new GlideRecord('sp_favorite');
        newFavGR.initialize();
        newFavGR.user = userSysId;
        newFavGR.reference_table = referenceTable;
        newFavGR.reference_document = referenceDocument;
        newFavGR.setWorkflow(false);
        newFavGR.insert();
}
})();

Please see if this works.

Thank you, it worked. And just want to check, is it possible to add this favourite to any new user inserted into sys_user table? We add users through integration.

@vidhya_mouli Yes, you can make small changes in the above script and add it in an onAfter Insert business rule which runs on sys_user table.