Show error message when adding duplicate CI using add button in affected CI
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-13-2025 07:44 AM
Hello All,
Affected CI related list in the Outage table. When user adding CI which is already part of any outage of that change request number. I want to display a message to stating "This CI is already added in another outage. Please remove the duplication".
I have updated the script include which is using the Add button but its not displaying in the form. This scripting is working and I am getting the logs.
Please suggest on this
On click on button ADD button list getting refreshing so how we can add a message
addSelected: function() {
gs.info("Check Duplicate ::inside this function");
var id = this.getParameter("sysparm_id");
var addToTable = this.getParameter("sysparm_add_to_table");
var listTableName = this.getParameter("sysparm_tableName");
var selCIsList = this.getParameter("sysparm_selCIs");
var selCIs = selCIsList.split(",");
var outageGr = new GlideRecordSecure(this.OUTAGE_TABLE);
outageGr.get(id);
var changeNumber = outageGr.getValue("task_number"); // Assuming "change_request" is the field with the change number.
gs.info("Check Duplicate ::changeNumber" + changeNumber);
for (var i = 0; i < selCIs.length; i++) {
if (selCIs[i]) {
// Check if the CI is already associated with another Outage with the same change number
var existingCI = new GlideRecordSecure(addToTable);
existingCI.addQuery("JOINcmdb_ci_outage.sys_id=cmdb_outage_ci_mtom.outage");
existingCI.addQuery("ci_item", selCIs[i]);
existingCI.query();
var isDuplicate = false;
// Loop through existing CI associations to check for same change number
while (existingCI.next()) {
var relatedOutageGr = new GlideRecordSecure(this.OUTAGE_TABLE);
relatedOutageGr.get(existingCI.outage);
if (relatedOutageGr.getValue("task_number") === changeNumber) {
isDuplicate = true;
break;
}
}
if (isDuplicate) {
gs.info("Check Duplicate ::This is a duplicate CI for the same change number");
gs.addInfoMessage("This is a duplicate CI for the same change number.");
}
// If not a duplicate, associate the CI to the outage
var affectedCI = new GlideRecordSecure(addToTable);
affectedCI.initialize();
affectedCI.outage = id;
affectedCI.ci_item = selCIs[i];
affectedCI.insert();
}
}
return gs.getMessage("Added selected configuration items successfully to the outage.");
function openCmdbCIList(){
var gajax = new GlideAjax("AssociateCIToOutage");
gajax.addParam("sysparm_name","getURL");
gajax.addParam("sysparm_id", g_form.getUniqueValue());
gajax.addParam("sysparm_add_to", "cmdb_outage_ci_mtom");
gajax.getXMLAnswer(openList);
}
function openList(url){
var cmdbciModal = new GlideModal('outage_add_affected_cis');
cmdbciModal.setTitle(getMessage("Add Affected CIs"));
cmdbciModal.setWidth(1200);
cmdbciModal.setAutoFullHeight(true);
cmdbciModal.on('beforeclose', function(){
refreshAffectedCIs();
});
ScriptLoader.getScripts('/scripts/incident/glide_modal_accessibility.js', function() {
cmdbciModal.template = glideModalTemplate;
cmdbciModal.renderIframe(url, function(event) {
glideModalKeyDownHandler(event, cmdbciModal.getID());
});
});
var link = document.createElement('link');
link.rel = 'stylesheet';
link.href = 'styles/incident_glide_modal.css';
document.head.appendChild(link);
}
function refreshAffectedCIs() {
var listId = g_form.getTableName() + ".cmdb_outage_ci_mtom.outage";
var list = typeof GlideList2 !== "undefined" ? GlideList2.getByName(listId) : null;
if (list == null)
list = typeof GlideList !== "undefined" ? GlideList.get(listId) : null;
if (list != null)
list.refresh();
}
function resizeIframe(){
var x = g_glideBoxes.cm_add_affected_cis;
x.autoDimension();
x.autoPosition();
x._createIframeShim();
}
0 REPLIES 0