The CreatorCon Call for Content is officially open! Get started here.

Help replacing GlideAggragate to Flow Designer

AnaBeatrizA
Tera Guru

Hi guys,

Can someone please help me transform this GlideAggregate code to use with as Flow desginer flow?

var pendingRes = new GlideAggregate('sn_plng_att_core_resource_assignment');
pendingRes.addQuery('resource_status', 'pending');
pendingRes.addQuery('group_resource.manager', '!=', '');
pendingRes.groupBy('group_resource.manager');
pendingRes.addAggregate('COUNT');
pendingRes.query();
while (pendingRes.next()) {

var msg = pendingRes.getValue('group_resource.manager.name') + " has " + pendingRes.getAggregate('COUNT') + " pending approvals.";
gs.info(msg);
}


Thanks!

4 REPLIES 4

Martin Friedel
Mega Sage

Hello, 

 

for using GlideAggregate in Flow Designer you should create custom flow action.

Check this video created by Robert Fedoruk: Build a custom Flow Action to do Aggregation in ServiceNow Flow Designer 

 

Official ServiceNow documentation: Building actions 

 

If my answer helped you, please mark it as correct and helpful, thank you 👍
Martin

maheshkhatal
Mega Sage
Mega Sage

@AnaBeatrizA This is how I would construct it:

Flow Structure in Flow Designer:

  1. Trigger: Manual or Scheduled Trigger(Provide table name)
  2. Lookup Records: Fetch pending resource assignments and all other conditions
  3. Script Action: Count occurrences per manager(Little bit coding part is required) Configure input/output steps
  4. Loop: Iterate over the dictionary and generate messages
  5. Log Message / Notification: Send alerts to managers (if required)

Mark my response as helpful if it resolves your doubt.

 

Thank you,

Mahesh.

sunil maddheshi
Tera Guru

@AnaBeatrizA 

I think you can write script action:

(function execute(inputs, outputs) {

    var pendingRes = new GlideAggregate('sn_plng_att_core_resource_assignment');
    pendingRes.addQuery('resource_status', 'pending');
    pendingRes.addQuery('group_resource.manager', '!=', '');
    pendingRes.groupBy('group_resource.manager');
    pendingRes.addAggregate('COUNT');
    pendingRes.query();

    var messages = [];

    while (pendingRes.next()) {
        var managerName = pendingRes.getValue('group_resource.manager.name');
        var count = pendingRes.getAggregate('COUNT');
        var msg = managerName + " has " + count + " pending approvals.";
        messages.push(msg);
    }

    outputs.result = messages.join("\n"); // Pass results to Flow Designer
})(inputs, outputs);

Please mark correct/helpful if this helps you 

Thank you Sunil, that was really helpful but I need to send it individually. For each manager. The result you're showing has only one message. How could I separate like: send a email to manager x that has 12 pending approvals, send another email to manager y that has 16 pending approvals?