Pulling data from archived tables
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
an hour ago
I am building a catalog item that will allow a user to select an archived CI from an archive table to have it restored.
ar_cmdb_ci_aix_server |
ar_cmdb_ci_cassandra_instance |
ar_cmdb_ci_db_db2_instance |
ar_cmdb_ci_db_mssql_instance |
ar_cmdb_ci_db_ora_instance |
ar_cmdb_ci_db_postgresql_instance |
ar_cmdb_ci_display_hardware |
ar_cmdb_ci_esx_server |
ar_cmdb_ci_handheld_computing |
ar_cmdb_ci_ibm_frame |
ar_cmdb_ci_ip_camera |
ar_cmdb_ci_ip_firewall |
ar_cmdb_ci_ip_router |
ar_cmdb_ci_ip_switch |
ar_cmdb_ci_lb_netscaler |
ar_cmdb_ci_linux_server |
ar_cmdb_ci_mfp_printer |
ar_cmdb_ci_net_app_server |
ar_cmdb_ci_pc_hardware |
ar_cmdb_ci_personal_printer |
ar_cmdb_ci_printer |
ar_cmdb_ci_server |
ar_cmdb_ci_wap_network |
ar_cmdb_ci_win_server |
ar_u_cmdb_ci_atm |
ar_u_cmdb_ci_instant_issue_printer |
ar_u_cmdb_ci_secure_usb |
ar_u_cmdb_ci_tcr |
The goal is to have a catalog variable called archived_ci load all the ci’s from the above tables.
I did a script include that has all the tables in it.
var ArchivedCIs = Class.create();
ArchivedCIs.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getArchivedCIs: function() {
var tables = [
'ar_cmdb_ci_aix_server',
'ar_cmdb_ci_cassandra_instance',
'ar_cmdb_ci_db_db2_instance',
'ar_cmdb_ci_db_mssql_instance',
'ar_cmdb_ci_db_ora_instance',
'ar_cmdb_ci_db_postgresql_instance',
'ar_cmdb_ci_display_hardware',
'ar_cmdb_ci_esx_server',
'ar_cmdb_ci_handheld_computing',
'ar_cmdb_ci_ibm_frame',
'ar_cmdb_ci_ip_camera',
'ar_cmdb_ci_ip_firewall',
'ar_cmdb_ci_ip_router',
'ar_cmdb_ci_ip_switch',
'ar_cmdb_ci_lb_netscaler',
'ar_cmdb_ci_linux_server',
'ar_cmdb_ci_mfp_printer',
'ar_cmdb_ci_net_app_server',
'ar_cmdb_ci_pc_hardware',
'ar_cmdb_ci_personal_printer',
'ar_cmdb_ci_printer',
'ar_cmdb_ci_server',
'ar_cmdb_ci_wap_network',
'ar_cmdb_ci_win_server',
'ar_u_cmdb_ci_atm',
'ar_u_cmdb_ci_instant_issue_printer',
'ar_u_cmdb_ci_secure_usb',
'ar_u_cmdb_ci_tcr'
];
var result = [];
for (var i = 0; i < tables.length; i++) {
var gr = new GlideRecordSecure(tables[i]); // ✅ Secure for cross-scope
gr.addQuery('install_status', '7'); // Retired
gr.query();
var count = 0;
while (gr.next()) {
result.push({ label: gr.getDisplayValue(), value: gr.sys_id.toString() });
count++;
}
// ✅ Debug log for each table
gs.info('ArchivedCIs Debug: Table ' + tables[i] + ' returned ' + count + ' records.');
}
// Sort alphabetically
result.sort(function(a, b) { return a.label.localeCompare(b.label); });
return JSON.stringify(result);
},
type: 'ArchivedCIs'
});
Then on the catalog item I have a onload client script
function onLoad() {
var ga = new GlideAjax('ArchivedCIs');
ga.addParam('sysparm_name', 'getArchivedCIs');
ga.getXMLAnswer(function(response) {
console.log('Raw response from Script Include:', response);
try {
var choices = JSON.parse(response);
console.log('Parsed choices:', choices);
if (!choices.length) {
console.warn('No archived CIs returned. Check Script Include or data.');
}
choices.forEach(function(choice) {
g_form.addOption('archived_ci', choice.value, choice.label);
});
} catch (e) {
console.error('Error parsing archived CI list:', e);
}
});
}
According to my logs all those tables are showing zero ci’s.
Is there a better approach to this
Thank you
