Requirements
- many-to-one assignment (one assignment group can have many email addresses)
- should not have to edit code to add/update/delete queue mail aliases
- should ignore Cc: address list
Proposal
- create a related table under Assignment Groups for Mail Aliases
- modify the Create Incident inbound action script to use the new table to match To: address to Assignment Group
Steps
- create/populate table 'u_group_mail_aliases':
- u_email (string)
- u_group (reference to sys_user_group)
- update the Create Incident inbound action with something like this:
// bw -- expose headers and text in description (just for PoC) // current.description = email.headers + email.body_text; // bw -- find assigment group by doing a lookup in u_group_mail_aliases // loop through email.direct var addresses = email.direct.split(","); for (var i=0; i < addresses.length; i++) { var alias = new GlideRecord('u_group_mail_aliases'); alias.addQuery('u_email', '=', addresses[i]); alias.query(); if (alias.getRowCount() > 0) { break; } } // if there was an alias match, use it to assign group if (alias.getRowCount() > 0) { // first match wins! alias.next(); current.assignment_group = alias.u_group; }
...the table can be permissioned as appropriate (probably fine to restrict it to admin). Might be nice to restrict the u_email field to be unique, but that's just icing since it's enforceable manually by any reasonable admin.