I have created a new HR queue with many custom user fields.  I have a custom ticket rule to email someone when a new ticket is created.  These customer user fields are just showing up at the user ID from the database instead of the user full name.  I am very new to SQL and do not know how to script it to make the custom user fields show up as the users full name that is selected when opening the ticket.  Below is my custom ticket rule.

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://k1000/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

      HD_TICKET.CUSTOM_FIELD_VALUE0 AS TIME_ZONE, -- $time_zone

      HD_TICKET.CUSTOM_FIELD_VALUE1 AS COMPANY, -- $company

      HD_TICKET.CUSTOM_FIELD_VALUE3 AS MOBILE, -- $mobile

      HD_TICKET.CUSTOM_FIELD_VALUE4 AS EMPLOYEE, -- $employee

      HD_TICKET.CUSTOM_FIELD_VALUE5 AS MANAGER, -- $manager

      HD_TICKET.CUSTOM_FIELD_VALUE6 AS H_DRIVE, -- $H_Drive

      HD_TICKET.CUSTOM_FIELD_VALUE7 AS EMAIL_END, -- $email_end

      HD_TICKET.CUSTOM_FIELD_VALUE8 AS ERP, -- $erp

      HD_TICKET.CUSTOM_FIELD_VALUE9 AS COMPANY9, -- $company9

      HD_TICKET.CUSTOM_FIELD_VALUE10 AS TERM_DATE, -- $term_date

      HD_TICKET.CUSTOM_FIELD_VALUE11 AS FORWARD_EMAIL, -- $forward_email

      HD_TICKET.CUSTOM_FIELD_VALUE12 AS COMPANY12, -- $company12

      HD_TICKET.CUSTOM_FIELD_VALUE13 AS COMPANY13, -- $company13

      HD_TICKET.CUSTOM_FIELD_VALUE14 AS COMPANY14, -- $company14

      -- -- example of static distribution list

      'rtotero@handyharman.com' 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_USER_NAME

    WHERE

     C.DESCRIPTION LIKE 'TICKET CREATED%'

      /* this is necessary when using group by functions */

    GROUP BY HD_TICKET.ID

    HAVING 1=1


------------------
Email each recipient in query results 
Subject:
Column containing email addresses:




$submitter_fname has submitted an Employee Termination Request.

Title: $title
Employee Name: $employee
Company: $company
Term Date: $term_date, $time_zone
Forward Email to: $forward_email
H: Drive Access to: $H_Drive
Mobile Device?: $mobile
ERP Removal: $erp

Ticket: $ticknum

For complete details, see: 
http://k1000/adminui/ticket?ID=$ticknum

Comments: 
$comment
--------------
Answer Summary:
Cancel
0 Comments   [ + ] Show Comments

Comments

Please log in to comment

Answer Chosen by the Author

0
It looks like employee is being stored in HD_TICKET.CUSTOM_FIELD_VALUE4, so you need to create a join to the USER table based on that. In your statement look for the other lines that join to the USER table:
/* owner ***********/ LEFT JOIN USER OWNER ON OWNER.ID = HD_TICKET.OWNER_ID
/* submitter *******/ LEFT JOIN USER SUBMITTER ON SUBMITTER.ID = HD_TICKET.SUBMITTER_ID

Add a line for the employee:
LEFT JOIN USER EMPLOYEE ON EMPLOYEE.ID =  HD_TICKET.CUSTOM_FIELD_VALUE4

Now, instead of this select line:
HD_TICKET.CUSTOM_FIELD_VALUE4 AS EMPLOYEE, -- $employee

You can select fields from the user table like this:
EMPLOYEE.FULL_NAME as EMPLOYEE_FNAME --$employee_fname
EMPLOYEE.EMAIL AS EMPLOYEE_EMAIL -- $employee_email

Answered 12/24/2015 by: chucksteel
Red Belt

  • Thank you so much for your help. This worked perfectly!
Please log in to comment

Answers

Answer this question or Comment on this question for clarity
Admin Script Editor
Admin Script Editor is an integrated scripting environment available free here at ITNinja

Share