How do I create a ticket rule that makes it so that a copy of the email that a ticket creator receives is sent to another email address?
Answers (4)
Sorry for the delay.. Not sure what you mean by "If I could capture the process that occurs after a new ticket is created," but if you mean on every update after it is created you could do it a few ways.. one with a description of the ticket modify verbiage or like below which is what I use if a ticket has aged to send an email. You could just do a if greater than 10 seconds after created do it (on every save). Get rid of the other stuff in my where statement as well of course. You probably have solved this by now but thought Id contribute to the cause.
FYI- in my case I run this every 15 minutes to text message the team when a critical ticket comes in and no one has taken ownership so we dont blow up our SLA.
select
distinct HD_TICKET.ID,
,HD_TICKET.ID as ticket_id
,concat("TICK:", if(length(HD_TICKET.ID) < 4, lpad(HD_TICKET.ID, 4, 0), HD_TICKET.ID)) as ticket_number
,HD_TICKET.TITLE as ticket_title
,HD_TICKET.SUMMARY as ticket_summary
,HD_TICKET.CREATED as ticket_created
,CAT.NAME as ticket_category
,ifnull(SUBMITTER.FULL_NAME, "Unassigned") as ticket_submitter_name
,ifnull(SUBMITTER.EMAIL, "Unassigned") as ticket_submitter_email
,ifnull(OWNER.FULL_NAME, "Unassigned") as ticket_owner_name
,ifnull(OWNER.EMAIL, "Unassigned") as ticket_owner_email
,S.NAME as ticket_status
,P.NAME as ticket_priority
,I.NAME as ticket_impact
from
HD_TICKET
join HD_CATEGORY CAT on HD_TICKET.HD_CATEGORY_ID = CAT.ID
join HD_STATUS S on HD_TICKET.HD_STATUS_ID = S.ID
join HD_PRIORITY P on HD_TICKET.HD_PRIORITY_ID = P.ID
join HD_IMPACT I on HD_TICKET.HD_IMPACT_ID = I.ID
join HD_QUEUE On HD_QUEUE.ID = HD_TICKET.HD_QUEUE_ID
left join USER SUBMITTER on HD_TICKET.SUBMITTER_ID = SUBMITTER.ID
left join USER OWNER on HD_TICKET.OWNER_ID = OWNER.ID
,(select S.`VALUE` ticket_label from SETTINGS S where S.`NAME` = "HD_TICKET_LABEL") settings
where
/* SET CORRECT QUEUE ID(S) HERE! */ HD_TICKET.HD_QUEUE_ID in (1)
and P.NAME = 'Critical'
and HD_TICKET.OWNER_ID = '0'
and HD_TICKET.CREATED < SUBDATE(NOW(), INTERVAL 15 MINUTE)
and HD_TICKET.CREATED > SUBDATE(NOW(), INTERVAL 20 MINUTE)
group by
HD_TICKET.ID
For me anyway, Id need to know more detail to answer. Taking your question quite literally, once could easily add a user to the CC of every ticket. If this is the case, Im currently blocking all CCs with this rule. All you would need to do is change null to the email address (or perhaps username, not sure).
Much more in this script than is needed. I lazily did a report and stole the sql that was created. But everything in bold would likely need to change.
select HD_TICKET.*,
HD_STATUS.NAME AS STATUS_NAME,
HD_STATUS.ORDINAL as STATUS_ORDINAL,
HD_IMPACT.ORDINAL as IMPACT_ORDINAL,
HD_CATEGORY.ORDINAL as CATEGORY_ORDINAL,
HD_PRIORITY.ORDINAL as PRIORITY_NUMBER,
STATE,
if(M1.ID is null, 'z', concat('a', M1.NAME)) as sort_MACHINE_NAME,
if((datediff(DUE_DATE, now()) = 0), 2, if((datediff(DUE_DATE, now())<0), 1, 3)) as SORT_OVERDUE_STATUS,
if(unix_timestamp(TIME_OPENED) > 0, TIME_OPENED, 1<<62) as SORT_TIME_OPENED,
if(unix_timestamp(TIME_STALLED) > 0, TIME_STALLED, 1<<62) as SORT_TIME_STALLED,
if(unix_timestamp(TIME_CLOSED) > 0, TIME_CLOSED, 1<<62) as SORT_TIME_CLOSED,
if(unix_timestamp(ESCALATED) > 0, ESCALATED, 1<<62) as SORT_ESCALATED,
if(unix_timestamp(HD_TICKET.CREATED) > 0, HD_TICKET.CREATED, 1<<62) as SORT_TIME_CREATED,
if(unix_timestamp(HD_TICKET.MODIFIED) > 0, HD_TICKET.MODIFIED, 1<<62) as SORT_MODIFIED,
if(unix_timestamp(HD_TICKET.DUE_DATE) > 0, HD_TICKET.DUE_DATE, 1<<62) as SORT_DUE_DATE,
case upper(STATE)
when 'CLOSED' then unix_timestamp(HD_TICKET.TIME_CLOSED) - unix_timestamp(HD_TICKET.TIME_OPENED)
when 'OPENED' then unix_timestamp() - unix_timestamp(HD_TICKET.TIME_OPENED)
else unix_timestamp() - unix_timestamp(HD_TICKET.CREATED) end as AGE,
if ((LENGTH(U1.FULL_NAME) = 0), U1.USER_NAME, U1.FULL_NAME) as OWNER_NAME,
U1.FULL_NAME as OWNER_FULLNAME,
U1.EMAIL as OWNER_EMAIL,
if (U1.ID is null, 'z', concat('a', if ((LENGTH(U1.FULL_NAME) = 0), U1.USER_NAME, U1.FULL_NAME))) as SORT_OWNER_NAME,
if ((LENGTH(U2.FULL_NAME) = 0), U2.USER_NAME, U2.FULL_NAME) as SUBMITTER_NAME,
U2.FULL_NAME as SUBMITTER_FULLNAME,
U2.EMAIL as SUBMITTER_EMAIL,
if (U2.ID is null, 'z', concat('a', if ((LENGTH(U2.FULL_NAME) = 0), U2.USER_NAME, U2.FULL_NAME))) as SORT_SUBMITTER_NAME,
if (U3.ID is null, 'z', concat('a', if ((LENGTH(U3.FULL_NAME) = 0), U3.USER_NAME, U3.FULL_NAME))) as SORT_APPROVER_NAME,
if(APPROVAL='rejected', 'Rejected', if(APPROVAL='info', 'More Info Needed', if(APPROVAL='approved', 'Approved', if(HD_TICKET.APPROVER_ID>0, 'Pending', '')))) as APPROVAL_STATUS,
Q.NAME as QUEUE_NAME
from (HD_TICKET, HD_PRIORITY, HD_STATUS, HD_IMPACT, HD_CATEGORY)
LEFT JOIN USER U1 on U1.ID = HD_TICKET.OWNER_ID
LEFT JOIN USER U2 on U2.ID = HD_TICKET.SUBMITTER_ID
LEFT JOIN USER U3 on U3.ID = HD_TICKET.APPROVER_ID
LEFT JOIN HD_QUEUE Q on Q.ID = HD_TICKET.HD_QUEUE_ID
LEFT JOIN MACHINE M1 on M1.ID = HD_TICKET.MACHINE_ID
where HD_PRIORITY.ID = HD_PRIORITY_ID
and HD_STATUS.ID = HD_STATUS_ID
and HD_IMPACT.ID = HD_IMPACT_ID
and HD_CATEGORY.ID = HD_CATEGORY_ID
and (( HD_TICKET.CC_LIST is not null) and HD_TICKET.HD_QUEUE_ID = 1 )
UPDATE
update HD_TICKET
set HD_TICKET.CC_LIST = HD_TICKET.CC_LIST is null
where
(HD_TICKET.ID in (<TICKET_IDS>))
EDIT: Bold didnt work.. nice. Both Null's and also the queue # would need to change above. I run this on every save to clear out the CC value because we havent quite figured out how to avoid multiple new tickets and so on.
barchetta,
Thank you for your response. "Taking your question quite literally, once could easily add a user to the CC of every ticket." You're correct, that's exactly what I want to do. Every time a new ticket is created, a specific email address gets an email copy of what the creator of the ticket gets for an email. I'm replacing our current ticket system and the process that I've described is how the tech. team is made aware that a new ticket has been created and by whom.
I like your idea about capturing what KACE is doing and then modifying it for a certain purpose. If I could capture the process that occurs after a new ticket is created, I suspect that it could be used for a custom ticket rule, where the email address of the tech. team is used instead of the ticket creators. The trouble is, I'm not sure how to do this.
Thank you,
Scott