The CreatorCon Call for Content is officially open! Get started here.

Inserting records in cmdb_rel_ci table

Divya95
Tera Contributor

Hi All ,

I have a customer table with 3 fields ,Customer Id , Producer Id,Department ID

I need to write  a business rule as when values are provided in Producer Id or Department Id or both of them , they should create relationship with Customer Id (Child)

In the below query , if only department id changes , its not inserting the record .But it inserts if producer id is changed or both of them .

I have tried for below ,

(function executeRule(current, previous /*null when async*/)
{
var rel = new GlideRecord ('cmdb_rel_ci');

if (current.u_producer_id != null)
{
rel.initialize();
rel.child = current.sys_id;
rel.parent=current.u_producer_id;
rel.type = "9d7bae1edb1213001d49d360cf96198d"; //sys_id of the Parent::Child record on the cmdb_rel_type table';
}
if (current.u_department_id != null)
{
rel.initialize();
rel.child = current.sys_id;
rel.parent=current.u_department_id;
rel.type = "9d7bae1edb1213001d49d360cf96198d";
}
rel.insert();

})(current, previous);

1 ACCEPTED SOLUTION

if you put both conditions in OR statement then it should have to work.

Lets try with below code. Remove all the conditions from "when to run" tab, keep after insert and update only.

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

var rel = new GlideRecord ('cmdb_rel_ci');

if (current.u_producer_id.changes() && current.u_producer_id != "")
{
rel.initialize();
rel.child = current.sys_id;
rel.parent=current.u_producer_id;
rel.type = "9d7bae1edb1213001d49d360cf96198d"; 
rel.insert();
}

if (current.u_department_id.changes() && current.u_department_id != "")
{
rel.initialize();
rel.child = current.sys_id;
rel.parent=current.u_department_id;
rel.type = "9d7bae1edb1213001d49d360cf96198d";
rel.insert();
}
	


})(current, previous);

Hit Helpful or Correct on the impact of response.

Regards,
Tushar
www.DxSherpa.com

View solution in original post

13 REPLIES 13

Can you show me the conditions?

Bhagya Lakshmi
Mega Guru

Hi,

You will apply conditions like this.

Producer id changes or department id changes

Yes i have tried that .But if only department id changes ,by script is not executed .Since as per my code it first checks for producer id .If there is no change in producer id ,it comes out of the loop without checking for department id.

So how do i tell my code to check for department id loop as well

 

Did you check with log statements? You will put log statements inside both if conditions.

if you put both conditions in OR statement then it should have to work.

Lets try with below code. Remove all the conditions from "when to run" tab, keep after insert and update only.

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

var rel = new GlideRecord ('cmdb_rel_ci');

if (current.u_producer_id.changes() && current.u_producer_id != "")
{
rel.initialize();
rel.child = current.sys_id;
rel.parent=current.u_producer_id;
rel.type = "9d7bae1edb1213001d49d360cf96198d"; 
rel.insert();
}

if (current.u_department_id.changes() && current.u_department_id != "")
{
rel.initialize();
rel.child = current.sys_id;
rel.parent=current.u_department_id;
rel.type = "9d7bae1edb1213001d49d360cf96198d";
rel.insert();
}
	


})(current, previous);

Hit Helpful or Correct on the impact of response.

Regards,
Tushar
www.DxSherpa.com