How to get name from change request

Community Alums
Not applicable

Hi all,

 

We are trying to get the template name which is used to create change request using the field std_change_producer_version(proposal) it is a reference filed in the change form that is a  reference field if open that record there will one template) std_change_producer which store the template name which is used in change record we are trying to fetch by dot walking like this ( current.std_change_producer_version.std_change_producer)  but it is not working can anyone help us how to fetch the standard template name business rule using the field proposal. 

 

var name = GlideTemplate.get(current.std_change_producer_version.std_change_producer);
    var template_name = name.getDisplayName();
   gs.log("Template lode using" +template name);
        gs.log("template change type 1" + type_of_change);

        if (type_of_change == 'standard') {
            gs.log("template change type 2" +name);
            var standard_template = new GlideRecord('std_change_template');
          standard_template.addQuery('name' , template_name);
            standard_template.query();

}

 

Anyone please

1 ACCEPTED SOLUTION

Here is the updated BR with a method getValueForKey(key). 

(function executeRule(current, previous /*null when async*/ ) {

    // Add your code here
    var templateObjectArray = [];
    var producer_version = new GlideRecord('std_change_producer_version');
    if (producer_version.get(current.std_change_producer_version)) {
        var template = new GlideRecord('std_change_record_producer');
        if (template.get('sys_id', producer_version.std_change_producer)) {
            gs.addInfoMessage('Template name ' + template.name);

            var glideTemplate = new GlideRecord('std_change_template');
            if (glideTemplate.get('name', template.getValue('name'))) {
                var templateArray = glideTemplate.getValue('template').split('^');
                for (var i = 0; i < templateArray.length; i++) {
                    var tempObject = {};
                    tempObject[templateArray[i].split('=')[0]] = templateArray[i].split('=')[1];
                    templateObjectArray.push(tempObject);
                }
                //gs.addInfoMessage(JSON.stringify(templateObjectArray));

            }
        }

        //Following code shows how you should extract template fields
        // for (var key = 0; key < templateObjectArray.length; key++) {
        //     gs.addInfoMessage('Field is <b>' + Object.keys(templateObjectArray[key])[0] + '</b> Value is <b>' + templateObjectArray[key][Object.keys(templateObjectArray[key])[0]]+'</b>');
        // }

		//Use the function here
		gs.addInfoMessage('Field is <b>' + 'short_description' + '</b> Value is <b>' +getValueForKey('short_description') +'</b>');

    }

//Function to get value for a specific key
    function getValueForKey(key){
		var valueForKey = '';
		for(var k=0;k<templateObjectArray.length;k++){
			var tempField = templateObjectArray[k];
			if(Object.keys(tempField).indexOf(key)>-1){
				valueForKey=tempField[key];
				break;
			}
		}

		return valueForKey;
	}
})(current, previous);

 

In function getValueForKey(key) here key is the name of template field whose value you would like to extract 

 

For e.g. 

		gs.addInfoMessage('Field is <b>' + 'short_description' + '</b> Value is <b>' +getValueForKey('short_description') +'</b>');

Here I am fetching the value of template field short_description by calling the method 

getValueForKey('short_description')
 
Please mark my replies as correct answers and mark them helpful if they manage to solve your problem.

 

View solution in original post

5 REPLIES 5

Sandeep Rajput
Tera Patron
Tera Patron

Use the following code in the before business rule on change_request table to get the template name.

(function executeRule(current, previous /*null when async*/ ) {

    // Add your code here
    var producer_version = new GlideRecord('std_change_producer_version');
    if (producer_version.get(current.std_change_producer_version)) {		
        var template = new GlideRecord('std_change_record_producer');
        if (template.get('sys_id', producer_version.std_change_producer)) {
            gs.addInfoMessage('Template name ' + template.name);
        }
    }

})(current, previous);

Community Alums
Not applicable

Hi,

 

Thanks for the reply the given code is working i need one more thing after retrieving the template name i need retrieve the template from std_change_template table and i need to get value of that template how we can achieve this

Here is the updated business script. 

(function executeRule(current, previous /*null when async*/ ) {

    // Add your code here
    var templateObjectArray = [];
    var producer_version = new GlideRecord('std_change_producer_version');
    if (producer_version.get(current.std_change_producer_version)) {
        var template = new GlideRecord('std_change_record_producer');
        if (template.get('sys_id', producer_version.std_change_producer)) {
            gs.addInfoMessage('Template name ' + template.name);

            var glideTemplate = new GlideRecord('std_change_template');
            if (glideTemplate.get('name', template.getValue('name'))) {
                var templateArray = glideTemplate.getValue('template').split('^');
                for (var i = 0; i < templateArray.length; i++) {
                    var tempObject = {};
                    tempObject[templateArray[i].split('=')[0]] = templateArray[i].split('=')[1];
                    templateObjectArray.push(tempObject);
                }
                //gs.addInfoMessage(JSON.stringify(templateObjectArray));

            }
        }

        //Following code shows how you should extract template fields
        for (var key = 0; key < templateObjectArray.length; key++) {
            gs.addInfoMessage('Field is <b>' + Object.keys(templateObjectArray[key])[0] + '</b> Value is <b>' + templateObjectArray[key][Object.keys(templateObjectArray[key])[0]]+'</b>');
        }

    }

})(current, previous);

 

Community Alums
Not applicable

Hi @Sandeep Rajput ,

 

how to retrieve value for specific key for example if key is 'environment'.  we need to fetch the value of that key 

Thanks