Name

global.UpdateNavTabRecords

Description

Removes old Navigation Tab records and creates new ones based on the Search Sources defined by the given Search Profile.

Script

var UpdateNavTabRecords = Class.create();
UpdateNavTabRecords.prototype = Object.extendsObject(AbstractAjaxProcessor, {
  type: 'UpdateNavTabRecords',
  
  updateRecords: function () {
  	var searchProfile = this.getParameter('sysparm_search_profile');
  	var searchAppConfig = this.getParameter('sysparm_search_config');
  	
  	//Clear NavTab records for given Search Profile
  	var navTabGr = new GlideRecord('sys_search_filter');
  	navTabGr.addQuery('search_context_config', searchAppConfig);
  	navTabGr.query();
  	navTabGr.deleteMultiple();
  	
  	//Fetch Ais Data Source Associated with the Search Profile
  	var searchSourceGr = new GlideRecord('ais_search_profile_ais_search_source_m2m');
  	searchSourceGr.addQuery('profile', searchProfile);
  	searchSourceGr.query();
  	
  	
  	var order = 100;
  	//For each search source in Search Profile -> Create new GR in NavTab 
  	while(searchSourceGr.next()) {
  					
  		//Create newRecord in navTab with
  		navTabGr.initialize();
  		navTabGr.name = searchSourceGr.search_source.name;
  		
  		var sourceTable = searchSourceGr.search_source.datasource.source;
  		navTabGr.label = ((new GlideRecord(sourceTable)).getClassDisplayValue());
  		navTabGr.order = order;
  		navTabGr.search_context_config = searchAppConfig;
  		navTabGr.ais_search_source = searchSourceGr.search_source;
  		navTabGr.insert();
  		order += 100;
  	}
  }
});

Sys ID

f8d06894c33290109e777d127840dd79

Offical Documentation

Official Docs: