…thoughts on ServiceNow and digital transformation

Post

ServiceNow Script for Producing a CSV of Application Files with Priority and Customized Flags



	var result = '';
	result += 'SysId,Update Name,Class,Out of Box File,Priority System File,Customized,Updates,Created By,Created On,Updated By,Updated On\n';
	var metaGR = new GlideRecord('sys_metadata');
	metaGR.addEncodedQuery('sys_scopeSTARTSWITHhuman^sys_class_name!=sys_restricted_caller_access^ORsys_class_name=NULL^sys_class_name!=sys_metadata_delete^ORsys_class_name=NULL');

	metaGR.query();
	while(metaGR.next()){

		var sysId = metaGR.getUniqueValue();
		var displayName = metaGR.sys_update_name.getDisplayValue();
		var className = metaGR.sys_class_name.getDisplayValue();
		var createdBy = metaGR.sys_created_by.getDisplayValue();
		var updatedBy = metaGR.sys_updated_by.getDisplayValue();
		var createdOn = metaGR.sys_created_on.getDisplayValue();
		var updatedOn = metaGR.sys_updated_on.getDisplayValue();

		var systemFile =  getVolatility(metaGR.sys_update_name.getDisplayValue()) ? 1 : 0;
		var oobFile = (['admin','system','guest'].indexOf(createdBy) > -1) || (createdBy.indexOf('@@')) || (createdBy.indexOf('@snc')) > -1 ? 1 : 0; //not 100% accurate but gives an idea
		var updates = metaGR.sys_mod_count.getDisplayValue();
		var application = metaGR.sys_scope.getDisplayValue();
		var customized = (SncAppFiles.hasCustomerUpdate(metaGR) && oobFile == 1) ? 1 : 0; //SncAppFiles gives a lot of false postives
		
	

		var row = [sysId,displayName,className,oobFile,systemFile,customized,updates,createdBy,createdOn,updatedBy,updatedOn]
		result += row.join(',');
		result += '\n';

		
	}

	//retrieves the priority from the sys_metadata_volatility table
	function getVolatility(updateName){
		var volGR = new GlideRecord('sys_metadata_volatility');
		volGR.addQuery('sys_update_name',updateName);
		volGR.setLimit(1);
		volGR.query();
		if(volGR.next()){
			return volGR.volatility_level.getDisplayValue();
		}
		else {
			return '';
		}
	}

//write the results to a knowledge article
var attachment = new GlideSysAttachment();
var rec = new GlideRecord('kb_knowledge');
rec.get('ad5cefe687466a90f7efc8460cbb3529');
var fileName = 'applicationfiles.csv';
var contentType = 'text/plain';
var content = result;
var agr = attachment.write(rec, fileName, contentType, content);