Skip to content

Commit d30f45a

Browse files
authored
Implement auto-tagging for VTB cards based on states
This script automatically tags VTB cards based on their record states, including priority, blocked status, QA stages, and deployment readiness. It retrieves SysIDs from system properties and updates label entries accordingly.
1 parent 04642b0 commit d30f45a

File tree

1 file changed

+110
-0
lines changed
  • Server-Side Components/Business Rules/Auto Tag VTB Card Based on Record States

1 file changed

+110
-0
lines changed
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
(function executeRule(current, previous /*null when async*/) {
2+
3+
// Retrieve the SysIDs from system properties - holding in system properties to overcome not hardcoding the SysID
4+
var highPriorityLabelSysId = gs.getProperty('label.high_priority');
5+
var blockedLabelSysId = gs.getProperty('label.blocked');
6+
var readyForQALabelSysId = gs.getProperty('label.ready_for_qa');
7+
var qaCompletedLabelSysId = gs.getProperty('label.qa_completed');
8+
var readyForDeploymentLabelSysId = gs.getProperty('label.ready_for_deployment');
9+
10+
// Query the 'vtb_card' table for related task records
11+
var gr = new GlideRecord('vtb_card');
12+
gr.addQuery('task', current.sys_id);
13+
gr.query();
14+
15+
// Loop through all matching vtb_card records
16+
while (gr.next()) {
17+
18+
// Handle High Priority label
19+
var highPriorityTag = new GlideRecord('label_entry');
20+
highPriorityTag.addQuery('table', 'vtb_card');
21+
highPriorityTag.addQuery('table_key', gr.sys_id);
22+
highPriorityTag.addQuery('label', highPriorityLabelSysId);
23+
highPriorityTag.query();
24+
if (current.priority == 1 && !highPriorityTag.next()) { // Add label if not already present
25+
highPriorityTag = new GlideRecord('label_entry');
26+
highPriorityTag.label = highPriorityLabelSysId; // High Priority Label SysID
27+
highPriorityTag.table = 'vtb_card';
28+
highPriorityTag.read = 'yes';
29+
highPriorityTag.title = "High Priority Tag for " + gr.task.number;
30+
highPriorityTag.table_key = gr.sys_id;
31+
highPriorityTag.insert();
32+
} else if (current.priority != 1 && highPriorityTag.next()) { // Remove label if priority is not high
33+
highPriorityTag.deleteRecord();
34+
}
35+
36+
// Handle Blocked label
37+
var blockedTag = new GlideRecord('label_entry');
38+
blockedTag.addQuery('table', 'vtb_card');
39+
blockedTag.addQuery('table_key', gr.sys_id);
40+
blockedTag.addQuery('label', blockedLabelSysId);
41+
blockedTag.query();
42+
if (current.blocked == true && !blockedTag.next()) { // Add label if not already present
43+
blockedTag = new GlideRecord('label_entry');
44+
blockedTag.label = blockedLabelSysId; // Blocked Label SysID
45+
blockedTag.table = 'vtb_card';
46+
blockedTag.read = 'yes';
47+
blockedTag.title = "Blocked Tag for " + gr.task.number;
48+
blockedTag.table_key = gr.sys_id;
49+
blockedTag.insert();
50+
} else if (current.blocked == false && blockedTag.next()) { // Remove label if blocked is false
51+
blockedTag.deleteRecord();
52+
}
53+
54+
// Handle Ready for QA label
55+
var readyForQATag = new GlideRecord('label_entry');
56+
readyForQATag.addQuery('table', 'vtb_card');
57+
readyForQATag.addQuery('table_key', gr.sys_id);
58+
readyForQATag.addQuery('label', readyForQALabelSysId);
59+
readyForQATag.query();
60+
if (current.u_implementation_stage == 'QA Required' && !readyForQATag.next()) { // Add label if not already present
61+
readyForQATag = new GlideRecord('label_entry');
62+
readyForQATag.label = readyForQALabelSysId; // Ready for QA Label SysID
63+
readyForQATag.table = 'vtb_card';
64+
readyForQATag.read = 'yes';
65+
readyForQATag.title = "Ready for QA Tag for " + gr.task.number;
66+
readyForQATag.table_key = gr.sys_id;
67+
readyForQATag.insert();
68+
} else if (current.u_implementation_stage != 'QA Required' && readyForQATag.next()) { // Remove label if stage is no longer QA Required
69+
readyForQATag.deleteRecord();
70+
}
71+
72+
// Handle QA Completed label
73+
var qaCompletedTag = new GlideRecord('label_entry');
74+
qaCompletedTag.addQuery('table', 'vtb_card');
75+
qaCompletedTag.addQuery('table_key', gr.sys_id);
76+
qaCompletedTag.addQuery('label', qaCompletedLabelSysId);
77+
qaCompletedTag.query();
78+
if (current.u_implementation_stage == 'QA Completed' && !qaCompletedTag.next()) { // Add label if not already present
79+
qaCompletedTag = new GlideRecord('label_entry');
80+
qaCompletedTag.label = qaCompletedLabelSysId; // QA Completed Label SysID
81+
qaCompletedTag.table = 'vtb_card';
82+
qaCompletedTag.read = 'yes';
83+
qaCompletedTag.title = "QA Completed Tag for " + gr.task.number;
84+
qaCompletedTag.table_key = gr.sys_id;
85+
qaCompletedTag.insert();
86+
} else if (current.u_implementation_stage != 'QA Completed' && qaCompletedTag.next()) { // Remove label if stage is no longer QA Completed
87+
qaCompletedTag.deleteRecord();
88+
}
89+
90+
// Handle Ready for Deployment label
91+
var readyForDeploymentTag = new GlideRecord('label_entry');
92+
readyForDeploymentTag.addQuery('table', 'vtb_card');
93+
readyForDeploymentTag.addQuery('table_key', gr.sys_id);
94+
readyForDeploymentTag.addQuery('label', readyForDeploymentLabelSysId);
95+
readyForDeploymentTag.query();
96+
if (current.u_implementation_stage == 'Ready for Deployment' && !readyForDeploymentTag.next()) { // Add label if not already present
97+
readyForDeploymentTag = new GlideRecord('label_entry');
98+
readyForDeploymentTag.label = readyForDeploymentLabelSysId; // Ready for Deployment Label SysID
99+
readyForDeploymentTag.table = 'vtb_card';
100+
readyForDeploymentTag.read = 'yes';
101+
readyForDeploymentTag.title = "Ready for Deployment Tag for " + gr.task.number;
102+
readyForDeploymentTag.table_key = gr.sys_id;
103+
readyForDeploymentTag.insert();
104+
} else if (current.u_implementation_stage != 'Ready for Deployment' && readyForDeploymentTag.next()) { // Remove label if stage is no longer Ready for Deployment
105+
readyForDeploymentTag.deleteRecord();
106+
}
107+
108+
}
109+
110+
})(current, previous);

0 commit comments

Comments
 (0)