aarburg, 23.10.2013
DESCRIPTION
Aarburg, 23.10.2013. Service Now Emails. Why to work on emails. Why to work on emails. User View Emails are quick and easy to use Emails are a known medium ( people rely and trust on mails ) IT Support view - PowerPoint PPT PresentationTRANSCRIPT
Aarburg, 23.10.2013
SERVICE NOW EMAILS
© Franke, www.franke.com2
WHY TO WORK ON EMAILS
© Franke, www.franke.com3
Why to work on emails
- User View - Emails are quick and easy to use- Emails are a known medium (people rely and trust on mails)
- IT Support view- Fast way to get necessary information (user know how to use it)- Mails are sent directly to users- Asynchronous communication possible
=> Work on inbound and outbound
© Franke, www.franke.com4
INBOUND MAIL CONCEPT
© Franke, www.franke.com5
Inbound Mail concept
- 3 stages system to receive and integrate inbound mails
1. Alias based inbound mail action based on address2. Body parsing action based on key:value pairs3. Default support group based on sender
- Catchall rule for tickets without support groups
- Goal is to assign all inbound mails to the right support group
© Franke, www.franke.com6
Alias Based Inbound Action
- Bases on email address aliases- concepted for systems, creating emails which are supposed
to create tickets- for systems, where the mailbody was not available for
changes (UPS etc.)- Uses the Business Services naming convention
© Franke, www.franke.com7
Alias Based Inbound Action
- Concept uses the basic naming convention- Utilizes the Business Service name- Gives a fix impact- Gives a fix urgency- Basic business rule in the system for assignment based on
service name- Example services:
• CIS-SC-029 CIS Service Desk Service
- Example addresses:
© Franke, www.franke.com8
Body Parsing Inbound Action
- Utilizes key:value pairs- Scripted in the inbound action- Concepted for systems, mailing to ServiceNow
if ((email.body.ci != undefined) && (email.body.u_service_name == undefined) && (email.body.u_business_service == undefined)) { var ci = new GlideRecord('cmdb_ci'); ci.addQuery('name', email.body.ci); ci.query();
// if a CI is defined if (ci.next()) { current.cmdb_ci = ci.sys_id; // if there is no service name already if (ci.u_business_service != undefined) { // ASP: Changed from u_service_name to u_business_service current.u_business_service = ci.u_business_service; // ASP: changed u_service_name to u_business_service } }
© Franke, www.franke.com9
Default support group
- Applies Tickets, which are not assigned- Caller identification- .walk for site of the caller
- _<site>-H-Support as default support group
© Franke, www.franke.com10
OUTBOUND MAIL CONCEPT
© Franke, www.franke.com11
Notification strategy
How many notifications?- Different intents when it comes to notifications- To many notifications vs. Not enough information- Tool capabilities vs. Pure mail interface work
- Notifications for single persons- Notifications for groups
Content- Enough information depending on purpose
© Franke, www.franke.com12
Group notifications
- Request for configurable notification for tickets, coming to “My Groups Work”
- «Watchlist» type field has been created to have specific people added to a group notification
- Simple business rule to trigger notification event on ticket assignment
© Franke, www.franke.com13
HTML Mails
Why?- ServiceNow Mails are text based and not pretty- Do not provide structured information on the first sight- Get deleted in most cases
- Goal: - Provide additional value- Enhance usability and look of all notifications
© Franke, www.franke.com14
How to make HTML notifications
- HTML code can be put directly into the mail body
- All HTML codes recognised- Simple HTML mails are no problem
© Franke, www.franke.com15
Challenges with HTML mails
- <div>-tags are put into the mail body by ServiceNow
- <div>-tags may distort complex structures and designs- The only solution: do not use line breaks
© Franke, www.franke.com16
Challenges with HTML mails
- Complex and long code in one line
- Multiline fields contain line breaks<mail_script>cleanDescription(); function cleanDescription() {
var sid = current.sys_id;var record = new GlideRecord('change_request');record.addQuery('sys_id','=',sid);record.query();while(record.next()) { var description = record.description.getDisplayValue(); description = description.replace(/\r\n/gi,'<br />'); template.print(description); } }</mail_script>
© Franke, www.franke.com17
HTML Emails
© Franke, www.franke.com18
Questions