Name
global.InstallBaseMigrationUtilsSNC
Description
Utility script to perform migration tasks for existing records on install base related tables
Script
var InstallBaseMigrationUtilsSNC = Class.create();
InstallBaseMigrationUtilsSNC.prototype = {
initialize: function() {},
/*
Consider the cases where only one install base is associated through affected install base table and update the case with the install base
*/
populateInstallBaseOnCases: function() {
this._populateSingleIBAssociatedCases();
this._populateMultipleIBAssociatedCases();
},
_populateSingleIBAssociatedCases: function() {
var affectedIBGr = new GlideAggregate(global.CSMBaseConstants.AFFECTED_INSTALL_BASE_TABLE);
affectedIBGr.addNotNullQuery("csm_case");
affectedIBGr.addNotNullQuery("install_base_item");
affectedIBGr.addNullQuery("csm_case.install_base");
affectedIBGr.addQuery("csm_case.active", "true");
affectedIBGr.addHaving("COUNT", "csm_case", "=", "1");
affectedIBGr.groupBy("csm_case");
affectedIBGr.query();
var affectedCasesList = [];
while (affectedIBGr.next()) {
affectedCasesList.push(affectedIBGr.getValue("csm_case"));
}
if (affectedCasesList.length <= 0)
return;
var caseGr = new GlideRecord(global.CSMBaseConstants.CASE_TABLE);
caseGr.addNullQuery('install_base');
caseGr.addQuery('sys_id', 'IN', affectedCasesList.join(','));
caseGr.setWorkflow(false);
caseGr.query();
while (caseGr.next()) {
var ibSysId = this._getAffectedIB(caseGr.getUniqueValue());
if (ibSysId) {
caseGr.setValue("install_base", ibSysId);
caseGr.setWorkflow(false);
caseGr.update();
}
}
},
_getAffectedIB: function(caseSysId) {
var affectedIB = new GlideRecord(global.CSMBaseConstants.AFFECTED_INSTALL_BASE_TABLE);
affectedIB.addQuery('csm_case', caseSysId);
affectedIB.query();
if (affectedIB.next() && affectedIB.getRowCount() == 1)
return affectedIB.getValue('install_base_item');
return '';
},
_populateMultipleIBAssociatedCases: function() {
},
type: 'InstallBaseMigrationUtilsSNC'
};
Sys ID
f534445648b92110f87771b3a8f0b7a5