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

Offical Documentation

Official Docs: