Copy Table Structure and Related fields/scripts to Update Set
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:
https://www.servicenow.com/community/developer-articles/copy-table-structure-and-related-fields-scripts-to-update-set/ta-p/2329833
