logo

NJP

Copy Table Structure and Related fields/scripts to Update Set

Import · Jul 17, 2018 · article

Hi,

I have seen multiple requests for copying table structure from one instance to another instance and sometimes save it to update set as if it is one time you can even export and import the record. So i came up with a fix script that can copy the table and its related structure to your current update set. Ensure the update set you want to store all the records is the current update set. Also ensure the fix script that you are going to create is Unloadable - Checked.

Create a fix script and make it unloadable true and copy the code below and run the script. I have covered the following relations and scenarios and if you feel something else can be added to this script feel free to comment below and i will update it.

1. Table2. Dictionary3. Documentation4. Client Script5. Business Rules6. UI policy7. Data policy8. Style9. ACL10. Choice list11. Relation12. UI action13. Workflow14. Section, Form and Elements

15. Modules

copyTableStructureToUpdateSet('incident'); // replace incident with the table name you want to export
function copyTableStructureToUpdateSet(tableName) {
var um = new GlideUpdateManager2();
// um.saveRecord(current);
// Copy table
var tableGR = new GlideRecord("sys_db_object");
if(tableGR.get("name", tableName)) {

um.saveRecord(tableGR);

// Copy dictionary
var dictGR = new GlideRecord("sys_dictionary");
dictGR.addQuery("name", tableName);
dictGR.query();
while(dictGR.next()) {
um.saveRecord(dictGR);
}


// Copy documentation
var docGR = new GlideRecord("sys_documentation");
docGR.addQuery("name", tableName);
docGR.query();
while(docGR.next()) {
um.saveRecord(docGR);
}

// Choice
var choiceGR = new GlideRecord("sys_choice");
choiceGR.addQuery("name", tableName);
choiceGR.query();
while(choiceGR.next()) {
um.saveRecord(choiceGR);
}

// Client Script
var clientGR = new GlideRecord("sys_script_client");
clientGR.addQuery("table", tableName);
clientGR.query();
while(clientGR.next()) {
um.saveRecord(clientGR);
}


// UI policy

var policyGR = new GlideRecord("sys_ui_policy");
policyGR.addQuery("table", tableName);
policyGR.query();
while(policyGR.next()) {
um.saveRecord(policyGR);
}

// Business Rule
var busGR = new GlideRecord("sys_script");
busGR.addQuery("collection", tableName);
busGR.query();
while(busGR.next()) {
um.saveRecord(busGR);
}


// ACL script

var aclGR = new GlideRecord("sys_security_acl");
aclGR.addQuery("type", "record");
aclGR.addEncodedQuery("name=" + tableName + "^ORnameSTARTSWITH" + tableName + ".");
aclGR.query();
while(aclGR.next()) {
um.saveRecord(aclGR);
}

// Relation
var relGR = new GlideRecord("sys_relationship");
relGR.addQuery("basic_apply_to", tableName);
relGR.query();
while(relGR.next()) {
um.saveRecord(relGR);
}

// UI actions 
var actionGR = new GlideRecord("sys_ui_action");
actionGR.addQuery("table", tableName);
actionGR.query();
while(actionGR.next()) {
um.saveRecord(actionGR);
}

// Style
var styleGR = new GlideRecord("sys_ui_style");
styleGR.addQuery("name", tableName);
styleGR.query();
while(styleGR.next()) {
um.saveRecord(styleGR);
}
// Data policy
var dpGR = new GlideRecord("sys_data_policy2");
dpGR.addQuery("model_table", tableName);
dpGR.query();
while(dpGR.next()) {
um.saveRecord(dpGR);
}
// Workflow
var wfGR = new GlideRecord("wf_workflow_version");
wfGR.addQuery("table", tableName);
wfGR.addQuery("published", true);
wfGR.query();
while(wfGR.next()) {
um.saveRecord(wfGR);
}
// Section

var uiSecGR = new GlideRecord("sys_ui_section");
uiSecGR.addQuery("name", tableName);
uiSecGR.query();
while(uiSecGR.next()) {
um.saveRecord(uiSecGR);
}

// Form Section

var uiFormSecGR = new GlideRecord("sys_ui_form_section");
uiFormSecGR.addEncodedQuery("sys_ui_form.name=" + tableName);
uiFormSecGR.query();
while(uiFormSecGR.next()) {
um.saveRecord(uiFormSecGR);
}

// Section elem

var uiSecElemGR = new GlideRecord("sys_ui_element");
uiSecElemGR.addEncodedQuery("sys_ui_section.sys_name=" + tableName);
uiSecElemGR.query();
while(uiSecElemGR.next()) {
um.saveRecord(uiSecElemGR);
}


// Module

var moduleGR = new GlideRecord("sys_app_module");
moduleGR.addQuery("name", tableName);
moduleGR.query();
while(moduleGR.next()) {
um.saveRecord(moduleGR);
}
}

}

Labels:

image

View original source

https://www.servicenow.com/community/developer-articles/copy-table-structure-and-related-fields-scripts-to-update-set/ta-p/2329833