Pradyumna Das
Tera Expert

Problem Statement: If any user download any data from the list view of any table it was very tough to track them. 

Scope: Global Application 

Risk: We have to edit OOB Export UI context Menu so during upgradation it may impact.

Solution Step:

1- Create once client callable script Include with  below function-

Name: nercCatalogUtils

Client callable: True

 

var nercCatalogUtils = Class.create();
nercCatalogUtils.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {

addToLog: function() {
/*

@param1:Export Type -(eg- JSON,PDF,XlX,XLXS,XML)
@param2:Export From -(Always Pass "List View")
@param3: EncodedQuery -(encoded query used by user)
@param3: Table Name
@return: Void

*/
var exportType = this.getParameter('sysparm_exportType');
var exportFrom = this.getParameter('sysparm_exportFrom');
var exportQuery = this.getParameter('sysparm_exportQuery');
var tableName = this.getParameter('sysparm_tableName');
var message = 'Record has been Exported\nExported From TableName: ' + tableName + '\nExported Type: ' + exportType + '\nExported From(view): ' + exportFrom + '\nExported record Query: ' + exportQuery;
var log = new GlideRecord('syslog');
log.initialize();
log.message = message;
log.level = 0;
log.insert();
},
type: 'nercCatalogUtils'
});

 

2- Search for UI Context Menu in the filter navigator and open the list view -

find_real_file.png

 

3-  Search for export and open the record OR click the below url to open the record with your domain name;

https://{DOMAIN NAME}.service-now.com/nav_to.do?uri=%2Fsys_ui_context_menu.do%3Fsys_id%3Dd1ad2f010a0a0b3e005c8b7fbd7c4e28%26sysparm_record_target%3Dsys_ui_context_menu%26sysparm_record_row%3D2%26sysparm_record_rows%3D2%26sysparm_record_list%3DnameSTARTSWITHexport%255EORDERBYorder

 

4- From the related list context menu click on XML and open the record.

5- In the Action script just add below script. Don't remove the existing code just add these lines below the exiting code.

var addLog = new GlideAjax('nercCatalogUtils');
addLog.addParam('sysparm_name', 'addToLog');
addLog.addParam('sysparm_tableName', g_list.tableName);
addLog.addParam('sysparm_exportQuery', g_list.getQuery());
addLog.addParam('sysparm_exportType', 'XML');
addLog.addParam('sysparm_exportFrom', 'List View');
addLog.getXML(addTheLog);

function addTheLog(response) {
    var answer = response.responseXML.documentElement.getAttribute("answer");
    //alert('Log has been added');
}

 

6- You can call the script include from PDF,JSON etc and just hard code  the exportType value with the respective button Name.

7- Save it. and export one record. and open the Log table to see the result.

Output:

find_real_file.png

Please mark it helpful if really helps you.

Version history
Last update:
‎11-18-2021 03:20 AM
Updated by: