Best practice to copy Catalog Item Owner to Requested Item (RITM) for approvals in FLow Designer

barbaratosetto
Tera Contributor

Hi everyone,

I’d like to validate an approach I used to handle approvals and dynamic assignments for a Catalog Item in the Service Portal.

Scenario:

  • I have a Catalog Item with an specific Owner (not me, but one of to-be approvers of the RITM).

  • When an end user submits a request, the Requested Item (RITM) needs to be approved first by the Requested For’s Manager, and then by the Catalog Item Owner.

  • Later, a fulfillment task will be created if both approvals are granted.

In Flow Designer, I could not directly pull the Owner field from the Catalog Item (sc_cat_item) because only variables and current RITM fields are available.

Solution I implemented:
I created a custom field in the RITM (u_catalog_item_owner, Reference → sys_user).
I created a Business Rule (Before Insert) to copy the sc_cat_item.owner to this new RITM field as soon as the RITM is created.
In my Flow, I use this new field as the Approver and (optionally) for an Assignment Rule.

Screenshots attached for clarity:

  • Custom Dictionary Entry for the field

  • Business Rule config and script

  • Example of populated RITM

Question:
Does anyone know a more efficient or recommended way to achieve this same goal?
Is there a simpler best practice to reference the Catalog Item Owner directly in Flow Designer without adding a custom field?
Or would you suggest using a Script Action, Script Include, or Flow Action instead?

Appreciate any suggestions!

 

barbaratosetto_0-1750340758058.png

 

barbaratosetto_1-1750342387074.png

 

Business Rule Script:

(function executeRule(current, previous) {

  var catItem = new GlideRecord('sc_cat_item');
  if (catItem.get(current.cat_item)) {
    gs.info('BR Debug: Found Catalog Item: ' + catItem.getDisplayValue('name'));
    gs.info('BR Debug: Owner sys_id: ' + catItem.owner);

    current.u_catalog_item_owner = catItem.owner;

    gs.info('BR Debug: Set u_catalog_item_owner = ' + current.u_catalog_item_owner);
  } else {
    gs.info('BR Debug: Catalog Item NOT found for cat_item: ' + current.cat_item);
  }

})(current, previous);
 
barbaratosetto_2-1750342477658.png

 

 

barbaratosetto_3-1750342562254.pngbarbaratosetto_4-1750342593212.png

 

 

2 ACCEPTED SOLUTIONS

J Siva
Tera Sage

Hi @barbaratosetto 

You can directly get the item owner by dot walking as below.

Screenshot_20250619-195835~2.png

Regards,

Siva

View solution in original post

Ankur Bawiskar
Tera Patron
Tera Patron

@barbaratosetto 

you can try to use Decision table for this and store the owners there.

Then pass input to Decision table and take the output and then use that in "Ask for Approval"

Use decision tables 

If my response helped please mark it correct and close the thread so that it benefits future readers.

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

View solution in original post

5 REPLIES 5

J Siva
Tera Sage

Hi @barbaratosetto 

You can directly get the item owner by dot walking as below.

Screenshot_20250619-195835~2.png

Regards,

Siva

It worked! thank you!

@barbaratosetto Glad it helped.

Ankur Bawiskar
Tera Patron
Tera Patron

@barbaratosetto 

you can try to use Decision table for this and store the owners there.

Then pass input to Decision table and take the output and then use that in "Ask for Approval"

Use decision tables 

If my response helped please mark it correct and close the thread so that it benefits future readers.

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