Built something you're proud of? Tell the story. A quick G2 review of App Engine or Build Agent helps other developers see what's possible on ServiceNow. Share your experience.

How to copy incident Affected user to Catlog item Requested for?

jugantanaya
Tera Contributor

Hi,

I need to Create a Request from an Incident by using context menu(UI Action), but when I select any catalog Item Requested for is not getting auto populated(same as incident Affected User). I have written one BR but it seems not working.

jugantanaya_1-1777021700356.png

 

 

jugantanaya_0-1777021646116.png

 

BR: Copy Affected User to Requested For

Table: sc_request

When: Before

              Insert

              Update

Condition: Parent is not Empty

Script:

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


// Check if RITM was created from an Incident
    if (current.parent && current.parent.sys_class_name == 'incident') {

        var inc = new GlideRecord('incident');
        if (inc.get(current.parent)) {

            // Copy Affected User to Requested for
            current.requested_for = inc.affected_user;

            // Optional: also copy to opened_for or variables if needed
            // current.opened_for = inc.affected_user;
            current.variables.affected_user = inc.affected_user;
        }
    }

})(current, previous);
 
Please help.
Thanks in advance.
 
Regards,
Juganta

 

 

 

2 REPLIES 2

Ankur Bawiskar
Tera Patron

@jugantanaya 

so what are your findings with the BR?

is the field name correct? affected_user

I couldn't see that as OOTB field

if it's custom field then it must be starting with u_

55.png

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

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

pr8172510
Giga Guru

Hi @jugantanaya,

1. Wrong table – You're using sc_request, but the "Requested for" field actually lives on the RITM (sc_req_item). The request header doesn't have that field.

2. Parent field is tricky – When you use the "Create Request" UI action, current.parent isn't always populated yet. So your condition might be failing right there.

3. Variables won't work here – current.variables doesn't work in a Business Rule on sc_request. That's just not how it's designed.

4. Field name check – As others mentioned, affected_user isn't an OOTB field on incident. If you created it custom, it should be u_affected_user.

 

Option 1: Fix it in the UI Action 

Instead of a Business Rule, just set the value when you create the cart:

var cart = new Cart();
var item = cart.addItem('your_catalog_item_sys_id');

// Grab the affected user from the incident
cart.setRequestedFor(current.u_affected_user || current.caller_id);

var rc = cart.placeOrder();
action.setRedirectURL(rc);

This works every time because you're setting it before the RITM is even created.


Option 2: Move your Business Rule to the right table

If you really want a Business Rule, put it on sc_req_item instead:

(function executeRule(current, previous) {

    if (current.request && current.request.parent) {

        var inc = new GlideRecord('incident');
        if (inc.get(current.request.parent)) {

            current.requested_for = inc.u_affected_user; // or inc.caller_id
        }
    }

})(current, previous);