Access variables of record producer from Business Rule

abirakundu23
Mega Sage

Hi All/ @Ankur Bawiskar ,

We are trying to access record producer varibles value using Business Rule. But we are not able to get the values.

Please guide me. Async/Update BR. We submit the Record Producer after that record is creted respective table. We wrote BR of that table.

(function executeRule(current, previous /*null when async*/) {
    
gs.info('ITP HR service ' + current.hr_service);
    
    var transfer_person = current.variables.employee_name;
    gs.log("Abira transfer for " +transfer_person);
    var position = current.variables.new_position;
    gs.log("Abira Position " +position);
    
    var effecdate = current.variables.effective_date;
    gs.log("Abira date " +effecdate);
    var country = current.variables.transfered_position_country;
    gs.log("Abira country " +country);
    var loc = current.variables.transfered_position_location;
    gs.log("Abira location " +loc);

})(current, previous);

1 ACCEPTED SOLUTION

So the BR would run when the record is updated and the HR Service is Matching your service

1) in your BR you cannot use producer object; you need to use current

2) gs.log() won't work in scoped application and your script will break so use gs.info()

(function executeRule(current, previous /*null when async*/) {
    
gs.info('ITP HR service ' + current.hr_service);
    
    var transfer_person = current.variables.employee_name;
    gs.info("Abira transfer for " +transfer_person);
    var position = current.variables.new_position;
    gs.info("Abira Position " +position);
    
    var effecdate = current.variables.effective_date;
    gs.info("Abira date " +effecdate);
    var country = current.variables.transfered_position_country;
    gs.info("Abira country " +country);
    var loc = current.variables.transfered_position_location;
    gs.info("Abira location " +loc);
    
        var req_body='{'+
        '"effectivedate":"'+effecdate+'",'+
        '"trapercountry":"'+country+'",'+
        '"location":"'+loc+'",'+
        '"Position":"'+position+'",'+
        '}';
gs.info('ITP payload details'+req_body);

})(current, previous);

Regards
Ankur

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

View solution in original post

18 REPLIES 18

Hi Ankur,

Please find.

So the BR would run when the record is updated and the HR Service is Matching your service

1) in your BR you cannot use producer object; you need to use current

2) gs.log() won't work in scoped application and your script will break so use gs.info()

(function executeRule(current, previous /*null when async*/) {
    
gs.info('ITP HR service ' + current.hr_service);
    
    var transfer_person = current.variables.employee_name;
    gs.info("Abira transfer for " +transfer_person);
    var position = current.variables.new_position;
    gs.info("Abira Position " +position);
    
    var effecdate = current.variables.effective_date;
    gs.info("Abira date " +effecdate);
    var country = current.variables.transfered_position_country;
    gs.info("Abira country " +country);
    var loc = current.variables.transfered_position_location;
    gs.info("Abira location " +loc);
    
        var req_body='{'+
        '"effectivedate":"'+effecdate+'",'+
        '"trapercountry":"'+country+'",'+
        '"location":"'+loc+'",'+
        '"Position":"'+position+'",'+
        '}';
gs.info('ITP payload details'+req_body);

})(current, previous);

Regards
Ankur

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

Hi Ankur,

Any help requires apart from this, i will catch up.

Hi Ankur,

Can we send payload without using 3rd party endpoint ? Please clarify me. I am new in integration so need some guide.