Copy REQ Variables to SC_TASK Description

Adam H1
Tera Expert

I am new to scripting, but I just completed the Scripting in ServiceNow Fundamentals class and I am trying to put some of what I learned to work.  It's not coming easy to me, yet. 

 'description_of_request' is part of a variable set on some of our catalog items.  When a request is submitted we want the 'description_of_request' written to 'description' and 'short_description' fields on the RITM and the SCTASK.  I wrote the following script in a business rule that  works as intended for RITM.  However, I cannot figure out how to modify this script to do the same for the SCTASK.  How would you modify this script to also set the 'description' and 'short_description' fields on the SCTASK = description_of_request?

 

find_real_file.png

(function executeRule(current, previous /*null when async*/ ) {
    //Query sc_req_item and match on current.request
    //Update short_description and description of req_item with description_of_request from variable set

    var grRITM = new GlideRecord('sc_req_item');

    grRITM.addQuery('request', current.request);

    grRITM.query();

    while (grRITM.next()) {

        current.short_description = grRITM.variables.description_of_request;
        current.description = grRITM.variables.description_of_request;
		
        grRITM.update();
    }


})(current, previous);

 

1 ACCEPTED SOLUTION

Sure, I have tried your requirement in my PDI and have got that working now.

Please find the steps below:

1) Create a Before Insert and Update Business Rule on Requested Item table and use the script below:

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

	// Add your code here
	current.short_description = current.variables.Variable Name; // Replace "Variable Name" with your variable name
	current.description = current.variables.Variable Name; // Replace "Variable Name" with your variable name

})(current, previous);

find_real_file.png

find_real_file.png

Now create another Before Insert and Update Business Rule on Catalog Task table and use the script below:

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

	// Add your code here
	current.short_description = current.request_item.short_description;
	current.description = current.request_item.description;

})(current, previous);

find_real_file.png

This works for me in my PDI. Let me know if still you are facing an issue.

Hope this helps. Please mark the answer as correct/helpful based on impact.

Regards,
Shloke

Hope this helps. Please mark the answer as correct/helpful based on impact.

Regards,
Shloke

View solution in original post

24 REPLIES 24

Mark Roethof
Tera Patron
Tera Patron

Hi there,

You are mentioning this concerns some of your catalog items. The Business Rule now runs on all sc_req_items generated. Consider if this is correct. I would think not.

If it is just some, you could just update the sc_task generated, in your Workflow or your Flow. Have you considered this?

Anyway, looking at your scripting, multiple parts a bit odd. The Business Rule runs on your current sc_req_item. Why then perform a GlideRecord query on the same sc_req_item (this is unnecessary).

You are also updating the sc_req_item, why? Nothing changes to the sc_req_item? It's about updating the sc_task right? You are setting current.etc, and because it's a before business rule, these are also updated. Though only for the record this Business Rule runs on: the sc_req_item. So if you also want the sc_task to be updated, perform a GlideRecord query for the sc_task.

If my answer helped you in any way, please then mark it as helpful.

Kind regards,
Mark
2020, 2021 ServiceNow Community MVP
2020, 2021 ServiceNow Developer MVP

---

LinkedIn
Community article, blog, video list

 

Kind regards,

 

Mark Roethof

Independent ServiceNow Consultant

10x ServiceNow MVP

---

 

~444 Articles, Blogs, Videos, Podcasts, Share projects - Experiences from the field

LinkedIn

Hi Mark,

Obviously, I have a lot to learn.  Since I am struggling with the script for this, would you suggest I try Flow instead?

 

Thanks,

Adam

Ankur Bawiskar
Tera Patron
Tera Patron

Hi,

I consider you must be having workflow attached to your catalog item

So use the workflow run script instead of BR for this

current.short_description = current.variables.description_of_request;

current.description = current.variables.description_of_request;

When you create catalog task using Catalog Task Activity; you can use Advanced script and set the description and short_description like this

task.short_description = current.variables.description_of_request;

task.description = current.variables.description_of_request;

Regards
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

@Adam H 

Since you want the RITM short_description and description to be set once Request is submitted; you can use workflow run script as I mentioned.

You need not use business rule for that

Regards
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader