<?xml version="1.0" encoding="UTF-8"?><unload unload_date="2025-11-01 14:47:21">
<sys_remote_update_set action="INSERT_OR_UPDATE">
<application display_value="Global">global</application>
<application_name>Global</application_name>
<application_scope>global</application_scope>
<application_version/>
<collisions/>
<commit_date/>
<deleted/>
<description>Automate the maintenance of the code search tables in ServiceNow by dynamically updating searchable fields and tables based on configurable system properties. 

It enhances search coverage across plugins and scopes, reducing manual effort and avoiding common permission errors. 

For full details and usage instructions, see blog post:
https://rubenferrero.com/servicenow/automate-code-search


Created by: Rubén Ferrero Álvarez (SwissFlowIt)

- LinkedIn: https://www.linkedin.com/in/ruben-ferrero/
- Website: https://rubenferrero.com
- SwissFlowIt: https://swissflowit.com</description>
<inserted/>
<name>Automate code search configuration</name>
<origin_sys_id/>
<parent display_value=""/>
<release_date/>
<remote_base_update_set display_value=""/>
<remote_parent_id/>
<remote_sys_id>296d380853013210e32738f0a0490e60</remote_sys_id>
<state>loaded</state>
<summary/>
<sys_class_name>sys_remote_update_set</sys_class_name>
<sys_created_by>rubenferrero</sys_created_by>
<sys_created_on>2025-11-01 14:47:21</sys_created_on>
<sys_id>fbd08d4c53013210e32738f0a0490e18</sys_id>
<sys_mod_count>0</sys_mod_count>
<sys_updated_by>rubenferrero</sys_updated_by>
<sys_updated_on>2025-11-01 14:47:21</sys_updated_on>
<update_set display_value=""/>
<update_source display_value=""/>
<updated/>
</sys_remote_update_set>
<sys_update_xml action="INSERT_OR_UPDATE">
<action>INSERT_OR_UPDATE</action>
<application display_value="Global">global</application>
<category>customer</category>
<comments/>
<name>sysauto_script_35b72cbc833c7210e88411b6feaad378</name>
<payload>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;record_update table="sysauto_script"&gt;&lt;sysauto_script action="INSERT_OR_UPDATE"&gt;&lt;active&gt;true&lt;/active&gt;&lt;advanced&gt;false&lt;/advanced&gt;&lt;business_calendar/&gt;&lt;condition/&gt;&lt;conditional&gt;false&lt;/conditional&gt;&lt;entered_run_end/&gt;&lt;entered_run_start/&gt;&lt;entered_time&gt;1970-01-01 00:00:00&lt;/entered_time&gt;&lt;max_drift/&gt;&lt;name&gt;Automate code search configuration&lt;/name&gt;&lt;offset/&gt;&lt;offset_type&gt;0&lt;/offset_type&gt;&lt;repeat_every/&gt;&lt;run_as display_value="System Administrator"&gt;6816f79cc0a8016401c5a33be04be441&lt;/run_as&gt;&lt;run_as_tz/&gt;&lt;run_dayofmonth&gt;1&lt;/run_dayofmonth&gt;&lt;run_dayofweek&gt;1&lt;/run_dayofweek&gt;&lt;run_daysofweek/&gt;&lt;run_end/&gt;&lt;run_month&gt;1&lt;/run_month&gt;&lt;run_period/&gt;&lt;run_start/&gt;&lt;run_time&gt;1970-01-01 00:00:00&lt;/run_time&gt;&lt;run_type&gt;daily&lt;/run_type&gt;&lt;run_weekinmonth&gt;1&lt;/run_weekinmonth&gt;&lt;script&gt;&lt;![CDATA[(function() {

    var config = JSON.parse(gs.getProperty('sn_codesearch.custom.autopopulate.config'));

    var query = 'sys_class_name=sys_dictionary' + '^' +
        buildQueryPart('excludeScopes', 'sys_scope!=', '^') +
        buildQueryPart('excludeTables', 'name!=', '^') +
        buildQueryPart('fieldTypes', 'internal_type=', '^OR') +
        buildQueryPart('fieldTypeLabels', 'internal_type.labelLIKE', '^OR') +
        (config.searchNames ? 'element=name' : '');

    var dictionaryGR = new GlideRecord('sys_dictionary');
    dictionaryGR.addEncodedQuery(query);
    dictionaryGR.query();

    var dictionary = []; // This structure simplifies further processing by organising fields per table

    while (dictionaryGR.next()) {
        var tableName = dictionaryGR.name.toString();
        var fieldName = dictionaryGR.element.toString();

        if (!dictionary[tableName]) {
            dictionary[tableName] = [];
        }

        dictionary[tableName].push(fieldName);
    }

    for (var i in dictionary) {
        var newFields = dictionary[i];
        //Skip if only "name" field was found
        if (newFields.length == 1 &amp;&amp; newFields[0] == 'name') {
            continue;
        }
        var codeSearchGR = new GlideRecord('sn_codesearch_table');
        codeSearchGR.addQuery('table', i);
        codeSearchGR.addQuery('search_group', config.searchGroup);

        codeSearchGR.query();
        if (codeSearchGR.next()) {
            //If new list of fields is different from existing one, update record
            var existingFields = codeSearchGR.getValue('search_fields') ? codeSearchGR.getValue('search_fields').split(',') : [];
            var arrayUtil = new ArrayUtil();

            if (arrayUtil.diff(existingFields, newFields).length &gt; 0) {
                codeSearchGR.setValue('search_fields', newFields.join(','));
                codeSearchGR.update();
            }
        } else {
            //Create new record
            codeSearchGR.setValue('table', i);
            codeSearchGR.setValue('search_group', config.searchGroup);
            codeSearchGR.setValue('search_fields', newFields.join(','));
            codeSearchGR.insert();

        }
    }

    function buildQueryPart(configProperty, text, separator) {
        return config[configProperty] ? config[configProperty].map(item =&gt; text + item).join(separator) + separator : '';
    }
})();]]&gt;&lt;/script&gt;&lt;sys_class_name&gt;sysauto_script&lt;/sys_class_name&gt;&lt;sys_created_by&gt;rubenferrero&lt;/sys_created_by&gt;&lt;sys_created_on&gt;2025-10-22 10:43:18&lt;/sys_created_on&gt;&lt;sys_id&gt;35b72cbc833c7210e88411b6feaad378&lt;/sys_id&gt;&lt;sys_mod_count&gt;8&lt;/sys_mod_count&gt;&lt;sys_name&gt;Automate code search configuration&lt;/sys_name&gt;&lt;sys_package display_value="Global" source="global"&gt;global&lt;/sys_package&gt;&lt;sys_policy/&gt;&lt;sys_scope display_value="Global"&gt;global&lt;/sys_scope&gt;&lt;sys_update_name&gt;sysauto_script_35b72cbc833c7210e88411b6feaad378&lt;/sys_update_name&gt;&lt;sys_updated_by&gt;rubenferrero&lt;/sys_updated_by&gt;&lt;sys_updated_on&gt;2025-11-01 14:46:15&lt;/sys_updated_on&gt;&lt;time_zone&gt;floating&lt;/time_zone&gt;&lt;upgrade_safe&gt;false&lt;/upgrade_safe&gt;&lt;/sysauto_script&gt;&lt;sys_es_latest_script action="INSERT_OR_UPDATE"&gt;&lt;id&gt;35b72cbc833c7210e88411b6feaad378&lt;/id&gt;&lt;sys_created_by&gt;rubenferrero&lt;/sys_created_by&gt;&lt;sys_created_on&gt;2025-10-22 10:43:18&lt;/sys_created_on&gt;&lt;sys_id&gt;13192cbc833c7210e88411b6feaad390&lt;/sys_id&gt;&lt;sys_mod_count&gt;0&lt;/sys_mod_count&gt;&lt;sys_updated_by&gt;rubenferrero&lt;/sys_updated_by&gt;&lt;sys_updated_on&gt;2025-10-22 10:43:18&lt;/sys_updated_on&gt;&lt;table&gt;sysauto_script&lt;/table&gt;&lt;use_es_latest&gt;true&lt;/use_es_latest&gt;&lt;/sys_es_latest_script&gt;&lt;/record_update&gt;</payload>
<payload_hash>-1075105445</payload_hash>
<remote_update_set display_value="Automate code search configuration">fbd08d4c53013210e32738f0a0490e18</remote_update_set>
<replace_on_upgrade>false</replace_on_upgrade>
<sys_created_by>rubenferrero</sys_created_by>
<sys_created_on>2025-11-01 14:47:21</sys_created_on>
<sys_id>73d08d4c53013210e32738f0a0490e1a</sys_id>
<sys_mod_count>0</sys_mod_count>
<sys_recorded_at>19a3fe230960000001</sys_recorded_at>
<sys_updated_by>rubenferrero</sys_updated_by>
<sys_updated_on>2025-11-01 14:47:21</sys_updated_on>
<table/>
<target_name>Automate code search configuration</target_name>
<type>Scheduled Script Execution</type>
<update_domain>global</update_domain>
<update_guid>24a005006f4132102e92b0b145feb766</update_guid>
<update_guid_history>24a005006f4132102e92b0b145feb766:-1075105445,107f744cf501321071ad0321fa51b7d4:-619916872,1ddbe0b45e7c7210dbca141120358825:251290109</update_guid_history>
<update_set display_value=""/>
<view/>
</sys_update_xml>
<sys_update_xml action="INSERT_OR_UPDATE">
<action>INSERT_OR_UPDATE</action>
<application display_value="Global">global</application>
<category>customer</category>
<comments/>
<name>sys_properties_c660377b53fc7210e32738f0a0490e05</name>
<payload><![CDATA[<?xml version="1.0" encoding="UTF-8"?><record_update table="sys_properties"><sys_properties action="INSERT_OR_UPDATE"><choices/><description/><ignore_cache>true</ignore_cache><is_private>false</is_private><name>sn_codesearch.custom.autopopulate.config</name><read_roles/><suffix/><sys_class_name>sys_properties</sys_class_name><sys_created_by>rubenferrero</sys_created_by><sys_created_on>2025-11-01 08:58:05</sys_created_on><sys_id>c660377b53fc7210e32738f0a0490e05</sys_id><sys_mod_count>12</sys_mod_count><sys_name>sn_codesearch.custom.autopopulate.config</sys_name><sys_package display_value="Global" source="global">global</sys_package><sys_policy/><sys_scope display_value="Global">global</sys_scope><sys_update_name>sys_properties_c660377b53fc7210e32738f0a0490e05</sys_update_name><sys_updated_by>rubenferrero</sys_updated_by><sys_updated_on>2025-11-01 10:37:50</sys_updated_on><type>string</type><value>{&#13;
  "searchGroup": "c2f8a6a2d7120200b6bddb0c825203cd",&#13;
  "fieldTypes": [&#13;
    "xml",&#13;
    "condition_string",&#13;
    "condition",&#13;
    "html_template",&#13;
    "css"&#13;
  ],&#13;
  "fieldTypeLabels": [&#13;
    "script"&#13;
  ],&#13;
  "excludeScopes": [],&#13;
  "excludeTables": [&#13;
    "sn_templated_snip_note_template",&#13;
    "sys_declarative_action_assignment",&#13;
    "sys_ux_sitemap_definition"&#13;
  ],&#13;
  "searchNames": true&#13;
}</value><write_roles/></sys_properties><sys_translated_text action="delete_multiple" query="documentkey=c660377b53fc7210e32738f0a0490e05"/></record_update>]]></payload>
<payload_hash>992523867</payload_hash>
<remote_update_set display_value="Automate code search configuration">fbd08d4c53013210e32738f0a0490e18</remote_update_set>
<replace_on_upgrade>false</replace_on_upgrade>
<sys_created_by>rubenferrero</sys_created_by>
<sys_created_on>2025-11-01 14:47:21</sys_created_on>
<sys_id>73d08d4c53013210e32738f0a0490e1b</sys_id>
<sys_mod_count>0</sys_mod_count>
<sys_recorded_at>19a3fdffd0d0000001</sys_recorded_at>
<sys_updated_by>rubenferrero</sys_updated_by>
<sys_updated_on>2025-11-01 14:47:21</sys_updated_on>
<table/>
<target_name>sn_codesearch.custom.autopopulate.config</target_name>
<type>System Property</type>
<update_domain>global</update_domain>
<update_guid>ed10c1ccbb0132105783f270e23db058</update_guid>
<update_guid_history>ed10c1ccbb0132105783f270e23db058:992523867,3cc70008f481b210ed19cbb06ba805db:992523867,af568804ec81b210d93d33289f21ca26:-763531404,3bd4c080a181b21071a9d41eebc6b6db:1348461673,98d44080b281b2105c331e643ce45232:-1543427490,95548c00df81b210572e8fdb66eb5db9:1348461673,24448c00df81b2109b6ae752a591e798:-1608422796,8e9388cc4441b21031be4e4f3cf61827:992523867,af83c4cccc41b2104cc1f544d128855c:324642288,f083c4cc1d41b21084e0c29ec7abe748:-69607018,747344cc7c41b210cc3d26c8044c8559:-636003298,0e6380ccd441b210303d211045f76327:992523867,a15300cc6941b210f23b10869de26ba7:365400008,a8438c8cc541b210e1b33b8dd9fec514:280357992,bb03488cf341b2106b0b6083d826073e:353957131,9403c48c5741b210784ea90aa25f400d:-2129301293,78c2cc4ceb41b210673b9430f3a91295:1876051776,a452004c8c41b2102687fed311caacb4:1601472231,2f84b7b3b830b210908f1b2dafbe0b90:365400008,e3e0fbbb48fc7210a49bf8b89d089250:-1056225468</update_guid_history>
<update_set display_value=""/>
<view/>
</sys_update_xml>
</unload>
