Kace Ticket Rule - email queue owners on ticket transferred to queue
As the title says, and it still blows my mind this isnt implemented under the queue email settings, how do I setup a ticket rule to email group owners when a ticket is transferred to a queue?
Answers (2)
Maybe the challenge you are having is down to the incorrect, from KACE’s perspective, use a queue? So if you are setting up your Servicedesk with queues for each support area, then that may be why you are having the issue? That would also explain why there is not “out of the box” functionality to show when a ticket is assigned to a “queue”.
So the only way to achieve this would be to setup a rule based on the ticket change table, identify the text that appears in this table when a ticket is moved to the queue, then create rule to email the techs when that text appears.
Top Answer
You would need to create a new ticket rule for each of the queues. I'd recommend running this rule near the top of your list (lower Order).
This would be input into your Select Statement:
SELECT
-- ticket fields
HD_TICKET.ID, -- $id
HD_TICKET.ID AS TICKNUM, -- $ticknum
HD_TICKET.TITLE, -- $title
DATE_FORMAT(HD_TICKET.CREATED,'%b %d %Y %I:%i:%s %p') AS CREATED, -- $created
DATE_FORMAT(HD_TICKET.MODIFIED,'%b %d %Y %I:%i:%s %p') AS MODIFIED, -- $modified
-- change fields
C.COMMENT, -- $comment
C.DESCRIPTION, -- $description
GROUP_CONCAT(CONCAT('----- Change by ', UPDATER.EMAIL,' at ',H.TIMESTAMP,' -----\n',
H.DESCRIPTION,'\n',H.COMMENT,'\n\nPlease see your ticket at http://kbox/userui/ticket.php?ID=',H.HD_TICKET_ID,'\n')
ORDER BY H.ID DESC SEPARATOR '\n') HISTORY, -- $history
-- about the updater
UPDATER.USER_NAME AS UPDATER_UNAME, -- $updater_uname
UPDATER.FULL_NAME AS UPDATER_FNAME, -- $updater_fname
UPDATER.EMAIL AS UPDATER_EMAIL, -- $updater_email
IF(UPDATER.FULL_NAME='',UPDATER.USER_NAME,UPDATER.FULL_NAME) AS UPDATER_CONDITIONAL, -- $updater_conditional
-- about the owner
OWNER.USER_NAME AS OWNER_UNAME, -- $owner_uname
OWNER.FULL_NAME AS OWNER_FNAME, -- $owner_fname
OWNER.EMAIL AS OWNER_EMAIL, -- $owner_email
IFNULL(OWNER.USER_NAME,'Unassigned') OWNER_USER, -- $owner_user
-- about the submitter
SUBMITTER.USER_NAME AS SUBMITTER_UNAME, -- $submitter_uname
SUBMITTER.FULL_NAME AS SUBMITTER_FNAME, -- $submitter_fname
SUBMITTER.EMAIL AS SUBMITTER_EMAIL, -- $submitter_email
-- about priority
P.NAME AS PRIORITY, -- $priority
-- about status
S.NAME AS STATUS, -- $status
-- about impact
I.NAME AS IMPACT, -- $impact
-- about category
CAT.NAME AS CATEGORY, -- $category
-- other fields
-- name of the queue
HD_QUEUE.NAME AS QUEUENAME, -- $queuename
-- -- example of static distribution list
OLIST.EMAIL AS NEWTICKETEMAIL -- $newticketemail
FROM HD_TICKET
/* latest change ***/ JOIN HD_TICKET_CHANGE C ON C.HD_TICKET_ID = HD_TICKET.ID
AND C.ID=<change_id>
/* complete history*/ JOIN HD_TICKET_CHANGE H ON H.HD_TICKET_ID = HD_TICKET.ID
/* priority ********/ JOIN HD_PRIORITY P ON P.ID=HD_PRIORITY_ID
/* status **********/ JOIN HD_STATUS S ON S.ID=HD_STATUS_ID
/* impact-severity */ JOIN HD_IMPACT I ON I.ID=HD_IMPACT_ID
/* category ********/ JOIN HD_CATEGORY CAT ON CAT.ID=HD_CATEGORY_ID
/* owner ***********/ LEFT JOIN USER OWNER ON OWNER.ID = HD_TICKET.OWNER_ID
/* submitter *******/ LEFT JOIN USER SUBMITTER ON SUBMITTER.ID = HD_TICKET.SUBMITTER_ID
/* updater *********/ LEFT JOIN USER UPDATER ON UPDATER.ID = C.USER_ID
/* group email */
JOIN HD_QUEUE_OWNER_LABEL_JT ON HD_TICKET.HD_QUEUE_ID = HD_QUEUE_OWNER_LABEL_JT.HD_QUEUE_ID
JOIN USER_LABEL_JT ON HD_QUEUE_OWNER_LABEL_JT.LABEL_ID = USER_LABEL_JT.LABEL_ID
JOIN USER OLIST ON USER_LABEL_JT.USER_ID = OLIST.ID
/* queue */
JOIN HD_QUEUE ON HD_TICKET.HD_QUEUE_ID = HD_QUEUE.ID
WHERE
C.DESCRIPTION LIKE '%Changed ticket Queue from%'
/* this is necessary when using group by functions */
GROUP BY OLIST.EMAIL
HAVING 1=1
Then you would need to check to "Email each recipient in query results" with whatever you'd like the subject to be (e.g.: [TICK:$ticknum][TRANSFER] $title) and with Column containing email addresses to be: NEWTICKETEMAIL.
A ticket submitted by $submitter_fname has been transferred to the [InsertYourQueueName] ticket queue.
Please review it online at:
https://kace.my.tld/adminui/ticket.php?ID=$ticknum
The ticket details are:
Title: $title
Ticket: $ticknum
Client: $submitter_fname ($submitter_email)
Category: $category
Priority: $priority
Status: $status
Severity: $impact
Created: $created
Modified: $modified
Frequency would need to be "on Ticket Save." Of course, also make sure you enable it. :)
I personally also have a status of "Ticket Created" then a status of "New" once it has been processed by the ticket rules. This is the UPDATE SQL query I use, but you probably won't need it:
update HD_TICKET, HD_STATUS as T5, HD_PRIORITY as P
set HD_TICKET.HD_STATUS_ID = T5.ID,
HD_TICKET.TIME_OPENED = IF(T5.STATE = 'opened', NOW(), HD_TICKET.TIME_OPENED),
HD_TICKET.TIME_CLOSED = IF(T5.STATE = 'closed', NOW(), HD_TICKET.TIME_CLOSED),
HD_TICKET.TIME_STALLED = IF(T5.STATE = 'stalled', NOW(), HD_TICKET.TIME_STALLED),
HD_TICKET.DUE_DATE = DATE_ADD(NOW(), INTERVAL P.RESOLUTION_DUE_DATE_MINUTES MINUTE),
HD_TICKET.SATISFACTION_RATING = IF(T5.STATE = 'closed', NULL, HD_TICKET.SATISFACTION_RATING),
HD_TICKET.SATISFACTION_COMMENT = IF(T5.STATE = 'closed', NULL, HD_TICKET.SATISFACTION_COMMENT)
where T5.NAME = 'New' and
HD_TICKET.HD_QUEUE_ID = T5.HD_QUEUE_ID and
HD_TICKET.HD_QUEUE_ID = P.HD_QUEUE_ID and
(HD_TICKET.ID in (<TICKET_IDS>))
Hope this helps!