Name

global.UpdateSetExport

Description

Script to Process Update set and Batch Update Sets Exports for import into another instance

Script

var UpdateSetExport = Class.create();
UpdateSetExport.prototype = {
  initialize: function() {
  },
  
  // This is being called by the cloning workflow in DataCenter (onlyIncludeCompletedChildren=false) so that they can preserve non-completed update sets before cloning
  onlyIncludeCompletedChildren: true,
  
  exportUpdateSet: function(current, baseUpdateSetId, parentId) {
  	var retrievedUpdateSet = new GlideRecord('sys_remote_update_set');
  	retrievedUpdateSet.initialize();

  	retrievedUpdateSet.description = current.description;
  	retrievedUpdateSet.name = current.name;
  	retrievedUpdateSet.release_date = current.release_date;
  	retrievedUpdateSet.remote_sys_id = current.sys_id;
  	retrievedUpdateSet.application = current.application;
  	retrievedUpdateSet.remote_base_update_set = baseUpdateSetId;
  	retrievedUpdateSet.parent = parentId; 

  	var scopeGr = new GlideRecord('sys_scope');
  	scopeGr.get(current.application);
  	if (scopeGr.isValid()) {
  		retrievedUpdateSet.application_name = scopeGr.name;
  		retrievedUpdateSet.application_scope = scopeGr.scope;
  		retrievedUpdateSet.application_version = scopeGr.version;
  	} 

  	if (current.parent.nil())
  		retrievedUpdateSet.state = "loaded";
  	else
  		retrievedUpdateSet.state = "in_hierarchy";

  	retrievedUpdateSet.setWorkflow(false);
  	var retrievedUpdateSetSysId = retrievedUpdateSet.insert();

  	var update = new GlideRecord('sys_update_xml');
  	update.addQuery('update_set', current.sys_id);
  	update.query();

  	while(update.next()) {
  	   update.remote_update_set = retrievedUpdateSet.sys_id;
  	   update.update_set = '';
  	   update.insert();
  	}
  	
  	return retrievedUpdateSetSysId;
  },
  
  exportHierarchy: function(current) {
  	var baseUpdateSetId = this.exportUpdateSet(current, "", "");
  	//Set the batch base value since its unavailable on insert
  	var baseUpdateSet = new GlideRecord("sys_remote_update_set");
  	baseUpdateSet.get(baseUpdateSetId);
  	baseUpdateSet.remote_base_update_set= baseUpdateSetId;
  	baseUpdateSet.setWorkflow(false);
  	baseUpdateSet.update();
  	
  	this._processChildren(baseUpdateSetId, current.sys_id, baseUpdateSetId);
  	
  	return baseUpdateSetId;
  },
  
  _processChildren: function(baseUpdateSetId, parentId, remoteParentId) {
  	var updateSet = new GlideRecord('sys_update_set');
  	updateSet.addQuery("parent", parentId);
  	if(this.onlyIncludeCompletedChildren == true)
  		updateSet.addQuery("state", "complete");
  	updateSet.query();
  	while(updateSet.next()) {
  		var remoteId = this.exportUpdateSet(updateSet, baseUpdateSetId, remoteParentId);
  		this._processChildren(baseUpdateSetId, updateSet.sys_id, remoteId);
  	}
  },
  
  type: 'UpdateSetExport'
};

Sys ID

cb7c449347231200c17e19fbac9a713a

Offical Documentation

Official Docs: