/build/static/layout/Breadcrumb_cap_w.png

Looking for a custom ticket rule to set the owner to the person/changer of a ticket when they try to change the owner to an account that is restricted.

When a ticket analyst tries to change the owner or CC analyst of a ticket to an account that is restricted (e.g. company_admin), I want KACE to set the owner to the person attempting to make the change on ticket save.  Any help is appreciated.

Here's what I have so far but it's not reverting the owner to the changer.  It does set the owner to "unassigned' however:

#Collect information from the ticket:

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)

  Inner Join HD_TICKET_CHANGE On HD_TICKET.ID = HD_TICKET_CHANGE.HD_TICKET_ID

  Inner Join USER On HD_TICKET.OWNER_ID = USER.ID

  Inner Join USER USER1 On HD_TICKET_CHANGE.USER_ID = USER1.ID

  Inner Join USER USER2 On HD_TICKET.SUBMITTER_ID = USER2.ID

                        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 ((  ( exists  (select 1 from USER where HD_TICKET.OWNER_ID = USER.ID and USER.FULL_NAME = 'company_admin')) ) and HD_TICKET.HD_QUEUE_ID = 2 )


#Change ticket owner to changer user id:

UPDATE HD_TICKET

  Inner Join HD_TICKET_CHANGE On HD_TICKET.ID = HD_TICKET_CHANGE.HD_TICKET_ID

  Inner Join USER On HD_TICKET.OWNER_ID = USER.ID

  Inner Join USER USER1 On HD_TICKET_CHANGE.USER_ID = USER1.ID

  Inner Join USER USER2 On HD_TICKET.SUBMITTER_ID = USER2.ID

SET OWNER_ID = USER2.FULL_NAME

WHERE (HD_TICKET.ID in (<TICKET_IDS>))


0 Comments   [ + ] Show comments

Answers (2)

Answer Summary:
Posted by: KevinG 4 months ago
Red Belt
1

In the SQL Update, you will want to change this SET statement.

FROM

SET OWNER_ID = USER2.FULL_NAME

TO

SET OWNER_ID = USER2.ID


ID is a integer, FULL_NAME is a varchar


I have not tested your SQL query or update, so there maybe other issues too.


Comments:
  • Thanks KevinG. I thought I had replied above, but didn't. I came to the same realization today about the FULL_NAME vs ID. Making the change solved my issue. - jarrett 4 months ago
  • Glad to hear that your issue is resolved. :-) - KevinG 4 months ago
Posted by: Hobbsy 4 months ago
Red Belt
0

User the Ticket Change table to drive the rule rather than the HD Ticket table, you can then search for specific text that indicates the assignment and you will also get the ID of the tech making the change so you can set it as the owner


Comments:
  • I appreciate the reply Hobbsy. It looks like I just needed to change this line:

    SET OWNER_ID = USER2.FULL_NAME
    #TO#
    SET OWNER_ID = USER1.ID

    The FULL_NAME is not recognized as an ID number and could not convert to the user who made the change. I had to match the ID.

    Again, thanks for the help. - jarrett 4 months ago
 
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