run a business rule on a particular catalog item(service portal)

ArcRaj
Giga Contributor

HI TEAM,

 

when to run-BEFORE

table-sys_attachment

I WANT THE BELOW BUSINESS TO RULE ON PARTICULAR CATALOG ITEM

/////Business rule///when 2 files are attached with same file name then there will be alert in below BR

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

var gr = new GlideRecord("sys_attachment");
gr.addQuery('table_sys_id', current.table_sys_id);
gr.addQuery('table_name', current.table_name);
gr.addQuery('file_name', current.file_name);
gr.addQuery('content_type', current.content_type);
gr.addQuery('size_bytes', current.size_bytes);
gr.query();
if (gr.next()) {
{
current.setAbortAction(true);
gs.addInfoMessage("File already exist");

}}


})(current, previous);

1 ACCEPTED SOLUTION

you can not , business rule runs on table and catalog form is not a table 

View solution in original post

13 REPLIES 13

Harsh Vardhan
Giga Patron

business rule does not execute on catalog item 

Helo harshvardan,

Do you mean we cant run a business rule on particular catalog item or on all the catalog items.

you can not , business rule runs on table and catalog form is not a table 

Ashok Katam
Mega Guru

Hi Archie,

You have to wrap your code with in a condition. you can find pseudo code here, please be careful of performance impacts.

 

if(current.table_name == 'sc_req_item'){
   var gr = new GlideRecord('sc_req_item');
   gr.addQuery('sys_id',current.table_sys_id);
   gr.query();
   if(gr.next()){
      if(gr.cat_item == 'sys_id of your catalog item'){
       // your code goes here
      
       }
   }

}

 

Please mark helpful or correct if you feel the answer is helpful or correct

 

Thanks

Ashok