- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-08-2023 06:31 PM
I have a requirement to copy tags from an INC to an INC Task. I'm able to get that part working. What I can't seem to get working is when I delete a tag from the INC, have it delete from the INC Task also. Here's the current working code, I've messed around with more code to test the deletion part but can't get it to work.
(function executeRule(current, previous /*null when async*/) {
var grINCTask = new GlideRecord('incident_task');
grINCTask.addQuery('incident',current.table_key);
grINCTask.query();
while(grINCTask.next()){
var grLabelINCTask = new GlideRecord('label_entry');
grLabelINCTask.initialize();
grLabelINCTask.table_key = grINCTask.sys_id;
grLabelINCTask.table = grINCTask.sys_class.name;
grLabelINCTask.label = current.label;
grLabelINCTask.read = current.read;
grLabelINCTask.title = grINCTask.sys_class.name + "-" + grINCTask.number;
grLabelINCTask.insert();
}
})(current, previous);
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-09-2023 05:08 AM
Hi Russell,
Run this Business Rule on the label_entry table after Insert and Delete, and it will work like a dream.
(function executeRule(current, previous /*null when async*/) {
var operation = current.operation();
var grINCTask = new GlideRecord('incident_task');
grINCTask.addQuery('incident',current.table_key);
grINCTask.query();
while(grINCTask.next()){
var grLabelINCTask = new GlideRecord('label_entry');
if (operation == 'insert') {
grLabelINCTask.initialize();
grLabelINCTask.table_key = grINCTask.sys_id;
grLabelINCTask.table = grINCTask.sys_class.name;
grLabelINCTask.label = current.label;
grLabelINCTask.read = current.read;
grLabelINCTask.title = grINCTask.sys_class.name + "-" + grINCTask.number;
grLabelINCTask.insert();
}
if (operation == 'delete') {
grLabelINCTask.addQuery('table_key', grINCTask.sys_id);
grLabelINCTask.addQuery('label', current.label);
grLabelINCTask.query();
if (grLabelINCTask.next()) {
grLabelINCTask.deleteRecord();
}
}
}
})(current, previous);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-09-2023 04:05 AM
You could just update the record, though that'd be a lil messy.
deleting the tag on the inc.
var del = new GlideRecord('label_entry');
del.addQuery('table','incident');
del.addQuery('table_key', <var or dotwalk containing incident sys_id>);
del.deleteMultiple();
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-09-2023 05:08 AM
Hi Russell,
Run this Business Rule on the label_entry table after Insert and Delete, and it will work like a dream.
(function executeRule(current, previous /*null when async*/) {
var operation = current.operation();
var grINCTask = new GlideRecord('incident_task');
grINCTask.addQuery('incident',current.table_key);
grINCTask.query();
while(grINCTask.next()){
var grLabelINCTask = new GlideRecord('label_entry');
if (operation == 'insert') {
grLabelINCTask.initialize();
grLabelINCTask.table_key = grINCTask.sys_id;
grLabelINCTask.table = grINCTask.sys_class.name;
grLabelINCTask.label = current.label;
grLabelINCTask.read = current.read;
grLabelINCTask.title = grINCTask.sys_class.name + "-" + grINCTask.number;
grLabelINCTask.insert();
}
if (operation == 'delete') {
grLabelINCTask.addQuery('table_key', grINCTask.sys_id);
grLabelINCTask.addQuery('label', current.label);
grLabelINCTask.query();
if (grLabelINCTask.next()) {
grLabelINCTask.deleteRecord();
}
}
}
})(current, previous);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-09-2023 11:27 AM
This works great! Thank you. It also works from a list view. Bonus.
I do have a follow up. The requirement is asking that as well as Tags being populated from the Parent to the Child (Incident to Incident Task), can we also populate from Child to Parent (Incident Task to Incident).
Is that even possible?
I appreciate your time!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-09-2023 12:55 PM
Child's play.
(function executeRule(current, previous /*null when async*/) {
var operation = current.operation();
var grINCTask = new GlideRecord('incident_task');
grINCTask.addQuery('incident',current.table_key);
grINCTask.query();
while(grINCTask.next()){
var grLabelINCTask = new GlideRecord('label_entry');
if (operation == 'insert') {
grLabelINCTask.initialize();
grLabelINCTask.table_key = grINCTask.sys_id;
grLabelINCTask.table = grINCTask.sys_class.name;
grLabelINCTask.label = current.label;
grLabelINCTask.read = current.read;
grLabelINCTask.title = grINCTask.sys_class.name + "-" + grINCTask.number;
grLabelINCTask.insert();
}
if (operation == 'delete') {
grLabelINCTask.addQuery('table_key', grINCTask.sys_id);
grLabelINCTask.addQuery('label', current.label);
grLabelINCTask.query();
if (grLabelINCTask.next()) {
grLabelINCTask.deleteRecord();
}
}
}
var grINCTask2 = new GlideRecord('incident_task');
grINCTask2.addQuery('sys_id',current.table_key);
grINCTask2.query();
if (grINCTask2.next()){
var grLabelINCTask2 = new GlideRecord('label_entry');
if (operation == 'insert') {
grLabelINCTask2.initialize();
grLabelINCTask2.table_key = grINCTask2.incident;
grLabelINCTask2.table = 'incident';
grLabelINCTask2.label = current.label;
grLabelINCTask2.read = current.read;
grLabelINCTask2.title = 'incident-' + grINCTask2.incident.number;
grLabelINCTask2.insert();
}
if (operation == 'delete') {
grLabelINCTask2.addQuery('table_key', grINCTask2.incident);
grLabelINCTask2.addQuery('label', current.label);
grLabelINCTask2.query();
if (grLabelINCTask2.next()) {
grLabelINCTask2.deleteRecord();
}
}
}
})(current, previous);