/build/static/layout/Breadcrumb_cap_w.png

SQL Rule to Email Owners on Ticket Transfer

Hi all,

I reached out to support about this, thinking that notifying queue owners on new tickets (regardless if opened by the portal or moved from another queue) would be a basic service desk setting.  Well, it's not, and it requires a custom rule.  I looked on here and tried to combine a few rules shared by members but I keep getting stuck.  Does anyone have a rule that would email Queue Owners on New tickets when they are moved from a different queue?  I appreciate the help.  Below is my SELECT for 'New' Status tickets.

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(HD_TICKET.APPROVAL='rejected', 'Rejected',
                            if(HD_TICKET.APPROVAL='info', 'More Info Needed',
                                if(HD_TICKET.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.OWNER_ID = '0') and HD_TICKET.HD_QUEUE_ID = 12 )

0 Comments   [ + ] Show comments

Answers (1)

Posted by: AmberSDNB 7 months ago
Second Degree Blue Belt
0

Old post so not sure if you ever figured this out. But you could do something like this... Add your email address where it says email to this line -  'EMAIL' AS NEWTICKET_EMAIL -- $newticket_email (example: 'bob@fakecompany.com' AS NEWTICKET_EMAIL -- $newticket_email)
Then select 'Email each recipient in query results' option and use NEWTICKET_EMAIL variable for the 'Column containing email addresses'.

This line will pull in new tickets and changes queues only. Adjust if needed - WHERE C.DESCRIPTION LIKE 'TICKET CREATED%' or C.DESCRIPTION LIKE 'Changed ticket Queue%'

SELECT      

    -- ticket fields

    HD_TICKET.ID, -- $id

    HD_TICKET.ID AS TICKNUM, -- $ticknum

    HD_TICKET.TITLE, -- $title


    -- change fields

    C.COMMENT, -- $comment

    C.DESCRIPTION, -- $description


    -- 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 status

    S.NAME AS STATUS,   -- $status


    -- about category

    CAT.NAME AS CATEGORY, -- $category


    -- other fields 

    'EMAIL' AS NEWTICKET_EMAIL -- $newticket_email


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

    /* category ********/ JOIN HD_CATEGORY CAT ON CAT.ID=HD_CATEGORY_ID

    /* status **********/ JOIN HD_STATUS S ON S.ID=HD_STATUS_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


WHERE C.DESCRIPTION LIKE 'TICKET CREATED%' or C.DESCRIPTION LIKE 'Changed ticket Queue%'

    GROUP BY HD_TICKET.ID

    HAVING 1=1

 
This website uses cookies. By continuing to use this site and/or clicking the "Accept" button you are providing consent Quest Software and its affiliates do NOT sell the Personal Data you provide to us either when you register on our websites or when you do business with us. For more information about our Privacy Policy and our data protection efforts, please visit GDPR-HQ