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 Sort Items in "ALL" and "Pinned" Tabs on Change Catalog Vie

NikhithaNikki
Tera Contributor

When creating a new Change request in our ServiceNow instance, we see four tabs in the catalog view: Pinned, Models, Preapproved, and All.

The Models and Preapproved tabs are already sorted in a meaningful order, but the Pinned and All tabs appear unsorted, making it harder for users to find relevant items quickly.

I'd like to know:

  • Is there a way to customize the sorting of items in the All and Pinned tabs?
  • Can this be done via configuration, or does it require scripting or customization?
  • Are there any best practices or recommended approaches for sorting catalog items in these views?

Any guidance or examples would be greatly appreciated!

Thanks in advance!

NikhithaNikki_0-1754945185771.png

 

I have added below script in "StandardChangeTemplate" But it is only working for pre approved tab. It is not working for ALL , Pinned tabs.

var StandardChangeTemplate = Class.create();

StandardChangeTemplate.findById = StandardChangeTemplateSNC.findById;
StandardChangeTemplate.findAll = StandardChangeTemplateSNC.findAll;

StandardChangeTemplate.prototype = Object.extendsObject(StandardChangeTemplateSNC, {

    initialize: function(_gr, _gs) {
        StandardChangeTemplateSNC.prototype.initialize.call(this, _gr, _gs);
    },

    type: "StandardChangeTemplate"
});

StandardChangeTemplate.findAll = function(orderBy, textSearch, encodedQuery) {
    orderBy = orderBy || ChangeProcess.NAME;

    var changeRecordProducerGr = new GlideRecordSecure(StandardChangeTemplateSNC.CHANGE_RECORD_PRODUCER);
    changeRecordProducerGr.addActiveQuery();
    changeRecordProducerGr.addQuery("retired", false);

    if (textSearch !== undefined && textSearch !== "undefined" && textSearch.trim() !== "")
        changeRecordProducerGr.addQuery("name", "CONTAINS", textSearch).addOrCondition("short_description", "CONTAINS", textSearch);

    if (encodedQuery !== undefined && encodedQuery !== "undefined" && encodedQuery.trim() !== "")
        changeRecordProducerGr.addEncodedQuery(encodedQuery);

    changeRecordProducerGr.orderBy(orderBy);
    changeRecordProducerGr.query();

    //Get a list of readable templates which might have user criteria in place if enabled
    if ((gs.getProperty("com.snc.change_request.standard_change.use_user_criteria", 'true') === 'true') && (gs.getProperty("glide.sc.use_user_criteria", 'true') === 'true')) {
        var readableRecords = [];
        while (changeRecordProducerGr.next()) {
            var sysId = changeRecordProducerGr.getUniqueValue();
            if (new sn_sc.CatItem(sysId).canView())
                readableRecords.push(sysId);
        }

        changeRecordProducerGr = new GlideRecord(StandardChangeTemplateSNC.CHANGE_RECORD_PRODUCER);
        changeRecordProducerGr.addQuery('sys_id', "IN", readableRecords.join());
// START OF MODIFIED CODE THAT ENSURES CARDS ARE SORTED IN ORDER
        changeRecordProducerGr.orderBy(orderBy);
// END OF MODIFIED CODE THAT ENSURES CARDS ARE SORTED IN ORDER
        changeRecordProducerGr.query();
    }

    return changeRecordProducerGr;
};

 

   Thanks!
0 REPLIES 0