Mark Manders
Tera Patron

You are triggering an event per asset, so that explains the amount of emails. 

var gr = new GlideRecord('alm_hardware');
gr.addEncodedQuery('managed_by.active=false^install_status=1');
gr.query();

var assetsByManager = {};

// Group assets by manager's sys_id
while (gr.next()) {
    var manager = gr.managed_by.manager;
    if (manager && manager.active) {
        var managerSysId = manager.sys_id;
        
        if (!assetsByManager[managerSysId]) {
            assetsByManager[managerSysId] = {
                managerName: manager.name,
                assets: []
            };
        }
        
        assetsByManager[managerSysId].assets.push(gr.display_name);
    }
}

// Trigger event for each manager with the list of assets
for (var managerSysId in assetsByManager) {
    var managerData = assetsByManager[managerSysId];
    var assetList = managerData.assets.join(', ');  // Concatenate assets into a single string
    
    var eventParms = assetList + ';' + managerData.managerName;
    gs.eventQueue('vgr_inactive_hardware_manager', null, eventParms, managerSysId);
}

Can you check if this code will have better results?


Please mark any helpful or correct solutions as such. That helps others find their solutions.
Mark