SCSM Email Integration Part 3.2.2 – Runbook Design – SMMail_ProcTriggers – Rev2

Navigation:

Introduction

Alright, our current goal is to modify the runbook originally created in this step:

Currently, the runbook routes one type of trigger email: initial work item email notifications. We need it to also route trigger emails for ‘new comment email notifications’.

Branches

In the previous post, we outlined the following branches for the runbook:

  • Main
    • Branch 1 – Initial Emails
      • Branch 1.1 – Incidents
      • Branch 1.2 – Service Requests
    • Branch 2 – Comment Updates
      • Branch 2.1 – Incidents
      • Branch 2.2 – Service Requests

The post outlined the Main branch, and Branch 1. We will now focus on Branch 2.

Activities

Branch 2 – Comment Updates

  1. Smart Link From: Main Branch Include: Subject from Check Inbox Starts With SCSM_Trigger_CommentUpdate
  2. (New Com) Sanitize subject Type: Data Manipulation -> Replace Text Input String: Subject from ‘Check Inbox’ Pattern: ” (double-quote character) Replacement Text: (blank)

Branch 2.1 – Comment Updates – Incidents

  1. Link From: ‘(New Com) Sanitize subject’
  2. (New Com) (IR) Get ID from Email Subject Type: Data Manipulation -> Match Pattern Input String: Output String from ‘(New Com) Sanitize subject’. Pattern: IR[0-9]+
  3. Smart Link From: ‘(New Com) (IR) Get ID from Email Subject’ Include: Matches Found from ‘(New Com) (IR) Get ID from Email Subject’ is greater than 0.
  4. (New Com) (IR) Invoke Runbook to Send Email Type: Runbook Control -> Invoke Runbook Invoke By Path: True Wait for Completion: True Parameter 1 Name: WorkItemID Parameter 1 Value: Match String from ‘(New Com) (IR) Get ID from Email Subject’.
  5. (New WI) (IR) Move to Processing Complete Type: Exchange User -> Move or Copy Item Configuration: helpdesk connector ID: ID from ‘Check Inbox’ Destination Folder: processing-complete

Branch 2.2 – Comment Updates – Service Request

Identical to Branch 2.1, but replace (IR) with (SR). Once this is done, we’re ready to create a runbook that actually generates and sends emails.

SCSM Email Integration Part 3.2.1 – New Comments – Scorch Configuration

Navigation:

Introduction

Alright, now we’re ready for more scorch action.

Overview:

  1. SCSM Sends a trigger email on every new comment.
  2. Scorch receives the email.
  3. Runbooks get triggered that process and send the email.

Runbook Relationships and Data Flow:

  • ‘Process Email – General Routing’
    • ‘Process Email – SCSM Trigger Emails’
      • SCSM Trigger – Send WI Comment Email’

We actually don’t need to modify the root runbook, but we need to extend ‘Process Email – SCSM Trigger Emails’ and create the final runbook named SCSM Trigger – Send WI Comment Email’.

The details for these changes will be done in separate posts.

SCSM Email Integration Part 3.1.1 – New Comments – SCSM Configuration

Navigation:

Introduction

Alright, by now users are getting emailed when new work items or service requests are made. But what if an analyst adds a comment to the ticket? We can send out a message for this too.

This post will cover configuration of the SCSM server towards this goal.

Full Overview:

  1. SCSM
    1. Configure SCSM Notification Template
    2. Configure SCSM Notification Subscription
  2. Scorch
    1. Configure Runbook: Email Processing – General Routing
    2. Configure Runbook: Email Processing – SCSM Trigger Emails
    3. Create Runbook: Email Processing – SCSM Trigger – Send WI Comment Email

Details:

Step 1: Configure SCSM Notification Template

  1. Open SCSM Console -> Administration -> Notifications -> Templates
  2. Choose ‘Create E-Mail Template’
  3. On the ‘Create E-Mail Template’ -> General screen, enter a name such as ‘Trouble Ticket Analyst Comment End-User Notification Template’.
  4. Still on the ‘General’ screen, for the ‘Targeted Class’ section, choose ‘Trouble Ticket Analyst Comments’. If you don’t see this class on the ‘select a class’ screen, make sure that the drop-down box on the ‘select a class’ screen is set to ‘all basic classes’.
  5. Still on the ‘General’ screen, choose the management pack created in a previous post.
  6. Click ‘Next’ to proceed to the ‘Template Design’ screen.
  7. On the ‘Template Design’ screen, enter the following text for ‘Message Subject’:
    SCSM_Trigger_CommentUpdate on $Context/Path[Relationship='WorkItem2!System.WorkItem.TroubleTicketHasAnalystComment' SeedRole='Target' TypeConstraint='WorkItem2!System.WorkItem']/Property[Type='WorkItem2!System.WorkItem']/Id$$Context/Path[Relationship='WorkItem2!System.WorkItemHasCommentLog' SeedRole='Target' TypeConstraint='WorkItem2!System.WorkItem']/Property[Type='WorkItem2!System.WorkItem']/Id$
  8. Still on the ‘Template Design’ screen, enter the following text for ‘Message Body’.
    $Context/Property[Type='CustomSystem_SupportingItem_Library!System.Information']/Id$
  9. Still on the ‘Template Design’ screen, ensure that the checkbox for ‘Send as HTML’ is unchecked (left clear). We want to send as plain-text.

Step 2 – Configure SCSM Notification Subscription

  1. Open SCSM Console -> Administration -> Notifications -> Subscriptions
  2. Choose ‘Create Subscription’.
  3. On the ‘Create E-Mail Subscription’ -> General Screen, enter a name such as ‘Notify on Non-Private Work Item Comments’.
  4. Still on the ‘General’ screen, near ‘When to Notify’, select ‘When an object of the selected class is created’.
  5. Still on the ‘General’ screen, near ‘Targeted Class’, select ‘Trouble Ticket Analyst Comments’.
  6. Still on the ‘General’ screen, near ‘Management Pack’, select the management pack created in a previous post.
  7. Click ‘Next’ to proceed to the ‘Additional Criteria’ screen.
  8. On the ‘Additional Criteria’ screen, check the checkbox next to ‘Is private’ and click ‘Add’.
  9. Still on the ‘Additional Criteria’ screen, under ‘criteria’, form the following directive then click ‘Next’:
    [Trouble Ticket Analyst Commands] Is private Equals False
  10. On the ‘Template’ screen, select the template created in the previous section and click ‘Next’.
  11. On the ‘Recipient’ screen, select the helpdesk account and click ‘Next’.
  12. Finish the wizard with no other customizations.

Congrats! You should now receive trigger emails at the helpdesk account for new non-private comments on Incidents and Service Requests.

SCSM Email Integration Part 2.2.4 – Runbook Design – SMMail_Send-InitialWiEmail

Navigation:

Introduction

This is a continuation of the SCSM Email Integration series.

Our goal for this post is to create a runbook which does the following:

  1. Takes in a single parameter – “Work Item ID”. This will look something like ‘IR123’ or ‘SR123’.
  2. Generates an email message according to a template.
  3. Sends out the email message.

Runbook Name: SMMail_Send-InitialWiEmail

Here is an overview of the data-flow for our runbook:

  1. Initialize Data
  2. Get the Work Item
  3. Get the Work Item’s Affected User’s Email Address
  4. Generate a subject line.
  5. Generate an email message
  6. Send the email
  7. Return the result

This runbook will require two branches: one branch for service requests, and a second branch for incidents.

Branch Layout:

  • Main
    • Branch 1 – Incidents
    • Branch 2 – Service Requests

Global Variables Required:

  1. SCSM Scripts Account Username
    1. Username of AD account which can run SCSM SMLets on your SCSM server. It should have local admin rights on the SCSM server.
  2. SCSM Scripts Account Password
    1. Password to the account username given in the global variable ‘SCSM Scripts Account Username’.
    2. Make sure to check the ‘Encrypted Variable’ checkbox.
  3. SCSM Email Notification BCC Addresses
    1. semi-colon delimited list of email address to bcc all messages to.

Activities:

Main:

  1. Initialize Data
    Type: Initialize Data
    Parameter 1: workitemID (as string)

Branch 1 – Incidents

  1. Smart-Link from Initialize Data
    Include: workitemID from Initialize Data starts with IR
  2. Get IR
    Type: SC 2012 Service Manager -> Get Object
    Class: Incident
    Filter: ID equals workitemID from Initialize Data
  3. (IR) Get WorkItem Affected User Email
    Type: System -> Run .Net Script
    Language: PowerShell
    Script Body: <See Section ‘Scripts: (IR) Get WorkItem Affected User Email’ below>
    Returned Data Parameter 1 Name: affectedUserEmailAddr
    Returned Data Parameter 1 Variable: retval
    Looping: Enabled
    Delay Between Attempts: 10
    Exit: affectedUserEmailAddr does not match pattern ^$ or number of attempts is greater than 6.
  4. (IR) Generate Email Subject Line
    Type: System -> Run .Net Script
    Script Language: Powershell
    Script Body: $subject = “IT Support [” + “{ID from Get IR}” + “]: ” + “{Title from Get IR}”
    Returned Data Parameter 1 Name: subject
    Returned Data Parameter 1 Variable: subject
  5. (IR) Generate Email Message
    Type: System -> Run .Net Script
    Script Language: PowerShell
    Script Body:  <See Section ‘Scripts: (IR) Generate Email Message’ below>
    Returned Data Parameter 1 Name: htmlEmailBody
    Returned Data Parameter 1 Variable: retval
  6. Name: (IR) Create and Send E-Mail
    Type: Exchange User -> Create and Send E-Mail
    Configuration: helpdesk connector
    To: affectedUserEmailAddr from (IR) Get WorkItem Affected User Email
    Subject: subject from (IR) Generate Email Subject Line
    Body: htmlBody from (IR) Generate Email Message
    Body Type: HTML
    BCC: {SCSM Email Notification BCC Addresses}
  7. Return Data
    Type: Runbook Control -> Return Data
    Parameter 1 Name: result
    Parameter 1 Value: Activity Result from (IR) Create and Send E-Mail

I typically add another branch from ‘(IR) Create and Send E-Mail’ like this:

  1. Smart-Link from (IR) Create and Send E-Mail
    Include: (IR) Create and Send E-Mail returns Warning,Failed
  2. (IR) Send Failure Notice to Admins
    Type: Exchange User -> Create and Send E-Mail
    To: {SCSM Email Notification BCC Addresses}
    Subject: [SCORCH Email Failure] for Work Item {ID from Get IR}
    Body: The following message failed to send with error {Error Summary Text from  (IR) Create and Send E-Mail}.

Branch 2 – Service Requests

Identical to the IR branch, except with IR replaced by SR.

Scripts:

(IR) Get WorkItem Affected User Email

$ErrorActionPreference = &amp;amp;amp;quot;Stop&amp;amp;amp;quot;
try
{
    $username = &amp;amp;amp;quot;SCSM Scripts Account Username&amp;amp;amp;quot;
    $password = &amp;amp;amp;quot;SCSM Scripts Account Password&amp;amp;amp;quot;
    $scObjGuid = &amp;amp;amp;quot;scObjGuid from Get IR&amp;amp;amp;quot;
    $scObjType = &amp;amp;amp;quot;incident&amp;amp;amp;quot;
    $targetServer = &amp;amp;amp;quot;your target server&amp;amp;amp;quot;
    $securePassword = $password | ConvertTo-SecureString -AsPlainText -Force
    $creds = New-Object System.Management.Automation.PSCredential -ArgumentList $username,$securePassword
    $retval = Invoke-Command -Credential $creds -ComputerName $targetServer  -ScriptBlock { 
        $scObjGuid = $args[0]
        $scObjType = $args[1]
        &amp;amp;amp;amp; C:\Scripts\Get-ScsmWiAffectedUserEmailAddr.ps1 &amp;amp;amp;quot;$scObjGuid&amp;amp;amp;quot; &amp;amp;amp;quot;$scObjType&amp;amp;amp;quot;
    } -ArgumentList $scObjGuid, $scObjType
}
Catch
{
    Throw $_.Exception
}

Get-ScsmWiAffectedUserEmailAddr.ps1

Import-Module SMLets
$scObjGuid = $args[0]
$scObjType = $args[1]

Switch($scObjType) {
	&amp;amp;amp;quot;incident&amp;amp;amp;quot; {
		$wiClassName = &amp;amp;amp;quot;System.WorkItem.Incident$&amp;amp;amp;quot;
		$relationshipClassName = &amp;amp;amp;quot;System.WorkItemAffectedUser$&amp;amp;amp;quot;
	}
	&amp;amp;amp;quot;service request&amp;amp;amp;quot; {
		$wiClassName = &amp;amp;amp;quot;System.WorkItem.ServiceRequest$&amp;amp;amp;quot;
		$relationshipClassName = &amp;amp;amp;quot;System.WorkItemAffectedUser$&amp;amp;amp;quot;
	}
}

If($wiClassName -ne $null) {
	$wiClass = Get-SCSMClass $wiClassName
	$relationshipClass = Get-SCSMRelationshipClass $relationshipClassName
}

If($wiClass -ne $null -and $relationshipClassName -ne $null) {
	$wiFilter = &amp;amp;amp;quot;Id -eq '&amp;amp;amp;quot; + $scObjGuid + &amp;amp;amp;quot;'&amp;amp;amp;quot;
	$scObj = Get-SCSMObject -Class $wiClass -filter $wiFilter
	If ($scObj -ne $null) {
		$affectedUser = Get-SCSMRelatedObject -SMObject $scObj -Relationship $relationshipClass
	}
}

$emailAddr = &amp;amp;amp;quot;&amp;amp;amp;quot;
#ref: http://blogs.litware.se/?p=796
If($affectedUser -ne $null) {
	$userGUID = $affectedUser.Get_ID()
	$userPref = Get-SCSMRelationshipClass &amp;amp;amp;quot;System.UserHasPreference$&amp;amp;amp;quot;
	$endPoint = Get-SCSMRelatedObject -SMObject $affectedUser -Relationship $userPref|?{$_.DisplayName -like &amp;amp;amp;quot;*SMTP&amp;amp;amp;quot;}
	$readEmailaddr = $endPoint.TargetAddress
	If($readEmailaddr.length -ge 0) {
		$emailAddr = $readEmailAddr
	}
	Else {}
}

$emailAddr

(IR) Generate Email Message

$ErrorActionPreference = &amp;amp;amp;quot;Stop&amp;amp;amp;quot;
try
{
    $username = &amp;amp;amp;quot;SCSM Scripts Account Username&amp;amp;amp;quot;
    $password = &amp;amp;amp;quot;SCSM Scripts Account Password&amp;amp;amp;quot;
    $scObjGuid = &amp;amp;amp;quot;scObjGuid from Get IR&amp;amp;amp;quot;
    $scObjType = &amp;amp;amp;quot;incident&amp;amp;amp;quot;
    $targetServer = &amp;amp;amp;quot;your target server&amp;amp;amp;quot;
    $securePassword = $password | ConvertTo-SecureString -AsPlainText -Force
    $creds = New-Object System.Management.Automation.PSCredential -ArgumentList $username,$securePassword
    $retval = Invoke-Command -Credential $creds -ComputerName $targetServer -ScriptBlock { 
        $scObjGuid = $args[0]
        $scObjType = $args[1]
        &amp;amp;amp;amp; C:\Scripts\generate-NewWorkItemNotification.ps1 &amp;amp;amp;quot;$scObjGuid&amp;amp;amp;quot; &amp;amp;amp;quot;$scObjType&amp;amp;amp;quot;
    } -ArgumentList $scObjGuid, $scObjType
}
Catch
{
    Throw $_.Exception
}

generate-NewWorkItemNotification.ps1

Note, you will need to heavily modify this script to suit your needs, and to strip out my information. I’ll have a templated version up as soon as I can, but am providing this in the meantime.

Here is what the final output looks like. I created the template in MS Word, then saved it as HTML, changed the formatting, and inserted it into the PowerShell script below. I got the idea for the template from another blog post which I cannot find. I try to always credit folks, so if you notice something familiar please let me know. Cross-linking and credit benefits everyone!

2.2.4-2

$scObjGuid = $args[0]
$scObjType = $args[1]
$emailBodyText = &amp;amp;amp;quot;&amp;amp;amp;quot;

Import-Module SMLets

#get the classes all lined up
Switch($scObjType) {
	&amp;amp;amp;quot;incident&amp;amp;amp;quot; {
		$wiClassName = &amp;amp;amp;quot;System.WorkItem.Incident$&amp;amp;amp;quot;
		$commentRelationshipClass = &amp;amp;amp;quot;System.WorkItem.TroubleTicketHasAnalystComment$&amp;amp;amp;quot;
		$queueProperty = &amp;amp;amp;quot;Impact&amp;amp;amp;quot;
	}
	&amp;amp;amp;quot;service request&amp;amp;amp;quot; {
		$wiClassName = &amp;amp;amp;quot;System.WorkItem.ServiceRequest$&amp;amp;amp;quot;
		$commentRelationshipClass = &amp;amp;amp;quot;System.WorkItemHasCommentLog$&amp;amp;amp;quot;
		$queueProperty = &amp;amp;amp;quot;Priority&amp;amp;amp;quot;
	}
}

#get the scsm work item (wi) object
If($wiClassName -ne $null) {
	$wiClass = Get-SCSMClass $wiClassName
	$wiFilter = &amp;amp;amp;quot;ID -eq '&amp;amp;amp;quot; + $scObjGuid + &amp;amp;amp;quot;'&amp;amp;amp;quot;
	$scObj = Get-SCSMObject -Class $wiClass -Filter $wiFilter
}

#get the WI info and body text
If($scObj -ne $null) {	
	$commentRelationship = get-scsmrelationshipclass $commentRelationshipClass
	$commentObj = Get-SCSMRelatedObject -SMObject $scObj -Relationship $commentRelationship
	$commentStr = $commentObj.Comment
	$emailBodyText = $null
	If($commentStr -ne $null -and $commentStr -ne &amp;amp;amp;quot;&amp;amp;amp;quot;) {
		#sanitize a little
		While($commentStr -like &amp;amp;amp;quot;*&amp;amp;amp;gt;*&amp;amp;amp;quot;) {$commentStr = $commentStr.Replace(&amp;amp;amp;quot;&amp;amp;amp;gt;&amp;amp;amp;quot;,&amp;amp;amp;quot;&amp;amp;amp;quot;)}
		While($commentStr -like &amp;amp;amp;quot;*&amp;amp;amp;lt;*&amp;amp;amp;quot;) {$commentStr = $commentStr.Replace(&amp;amp;amp;quot;&amp;amp;amp;lt;&amp;amp;amp;quot;,&amp;amp;amp;quot;&amp;amp;amp;quot;)}
		While($commentStr -like &amp;amp;amp;quot;*&amp;amp;amp;quot;&amp;amp;amp;quot;*&amp;amp;amp;quot;) {$commentStr = $commentStr.Replace(&amp;amp;amp;quot;&amp;amp;amp;quot;&amp;amp;amp;quot;&amp;amp;amp;quot;,&amp;amp;amp;quot;&amp;amp;amp;quot;)}
		While($commentStr -like &amp;amp;amp;quot;*'*&amp;amp;amp;quot;) {$commentStr = $commentStr.Replace(&amp;amp;amp;quot;'&amp;amp;amp;quot;,&amp;amp;amp;quot;&amp;amp;amp;quot;)}
		$commentStr = $commentStr.Replace(&amp;amp;amp;quot;`n&amp;amp;amp;quot;,&amp;amp;amp;quot;&amp;amp;amp;lt;br&amp;amp;amp;gt;&amp;amp;amp;quot;)
		$emailBodyText = $commentStr
	}
	$wiTitle = $scObj.Title
	$wiUrgency = $scObj.Urgency.DisplayName
	$wiQueue = $scObj.$queueProperty.DisplayName
	$wiStatus = $scObj.Status.DisplayName
	$wiId = $scObj.ID
	$wiCreatedDate = $scObj.CreatedDate
	
	#$affectedUserClassName = &amp;amp;amp;quot;System.Domain.User$&amp;amp;amp;quot;
	#$affectedUserClassObj = Get-SCSMClass $affectedUserClassName
	$affectedUserRelationshipClassName = &amp;amp;amp;quot;System.WorkItemAffectedUser$&amp;amp;amp;quot;
	$affectedUserRelationshipClassObj = Get-SCSMRelationshipClass $affectedUserRelationshipClassName
	$affectedUserObj = Get-SCSMRelatedObject -SMObject $scObj -Relationship $affectedUserRelationshipClassObj
	If($affectedUserObj -ne $null) {
		$affectedUserDisplayName = $affectedUserObj.DisplayName
	}
	Else {
		$affectedUserDisplayName = &amp;amp;amp;quot;ESL Member&amp;amp;amp;quot;
	}
}

$htmlBody = &amp;amp;amp;quot;&amp;amp;amp;quot;
$htmlBody += &amp;amp;amp;quot;&amp;amp;amp;lt;html&amp;amp;amp;gt;

&amp;amp;amp;lt;head&amp;amp;amp;gt;
&amp;amp;amp;lt;meta http-equiv=Content-Type content=&amp;amp;amp;quot;&amp;amp;amp;quot;text/html; charset=windows-1252&amp;amp;amp;quot;&amp;amp;amp;quot;&amp;amp;amp;gt;
&amp;amp;amp;lt;meta name=Generator content=&amp;amp;amp;quot;&amp;amp;amp;quot;Microsoft Word 15 (filtered)&amp;amp;amp;quot;&amp;amp;amp;quot;&amp;amp;amp;gt;
&amp;amp;amp;lt;style&amp;amp;amp;gt;
&amp;amp;amp;lt;!--
 /* Font Definitions */
 @font-face
	{font-family:&amp;amp;amp;quot;&amp;amp;amp;quot;Cambria Math&amp;amp;amp;quot;&amp;amp;amp;quot;;
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin-top:0in;
	margin-right:0in;
	margin-bottom:8.0pt;
	margin-left:0in;
	line-height:105%;
	font-size:11.0pt;
	font-family:&amp;amp;amp;quot;&amp;amp;amp;quot;Calibri&amp;amp;amp;quot;&amp;amp;amp;quot;,sans-serif;}
a:link, span.MsoHyperlink
	{color:#0563C1;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{color:#954F72;
	text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
	{margin-top:0in;
	margin-right:0in;
	margin-bottom:8.0pt;
	margin-left:.5in;
	line-height:105%;
	font-size:11.0pt;
	font-family:&amp;amp;amp;quot;&amp;amp;amp;quot;Calibri&amp;amp;amp;quot;&amp;amp;amp;quot;,sans-serif;}
p.msolistparagraphcxspfirst, li.msolistparagraphcxspfirst, div.msolistparagraphcxspfirst
	{mso-style-name:msolistparagraphcxspfirst;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	line-height:105%;
	font-size:11.0pt;
	font-family:&amp;amp;amp;quot;&amp;amp;amp;quot;Calibri&amp;amp;amp;quot;&amp;amp;amp;quot;,sans-serif;}
p.msolistparagraphcxspmiddle, li.msolistparagraphcxspmiddle, div.msolistparagraphcxspmiddle
	{mso-style-name:msolistparagraphcxspmiddle;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:0in;
	margin-left:.5in;
	margin-bottom:.0001pt;
	line-height:105%;
	font-size:11.0pt;
	font-family:&amp;amp;amp;quot;&amp;amp;amp;quot;Calibri&amp;amp;amp;quot;&amp;amp;amp;quot;,sans-serif;}
p.msolistparagraphcxsplast, li.msolistparagraphcxsplast, div.msolistparagraphcxsplast
	{mso-style-name:msolistparagraphcxsplast;
	margin-top:0in;
	margin-right:0in;
	margin-bottom:8.0pt;
	margin-left:.5in;
	line-height:105%;
	font-size:11.0pt;
	font-family:&amp;amp;amp;quot;&amp;amp;amp;quot;Calibri&amp;amp;amp;quot;&amp;amp;amp;quot;,sans-serif;}
p.msochpdefault, li.msochpdefault, div.msochpdefault
	{mso-style-name:msochpdefault;
	margin-right:0in;
	margin-left:0in;
	font-size:12.0pt;
	font-family:&amp;amp;amp;quot;&amp;amp;amp;quot;Calibri&amp;amp;amp;quot;&amp;amp;amp;quot;,sans-serif;}
p.msopapdefault, li.msopapdefault, div.msopapdefault
	{mso-style-name:msopapdefault;
	margin-right:0in;
	margin-bottom:8.0pt;
	margin-left:0in;
	line-height:105%;
	font-size:12.0pt;
	font-family:&amp;amp;amp;quot;&amp;amp;amp;quot;Times New Roman&amp;amp;amp;quot;&amp;amp;amp;quot;,serif;}
span.apple-converted-space
	{mso-style-name:apple-converted-space;}
.MsoChpDefault
	{font-size:10.0pt;
	font-family:&amp;amp;amp;quot;&amp;amp;amp;quot;Calibri&amp;amp;amp;quot;&amp;amp;amp;quot;,sans-serif;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
--&amp;amp;amp;gt;
&amp;amp;amp;lt;/style&amp;amp;amp;gt;

&amp;amp;amp;lt;/head&amp;amp;amp;gt;

&amp;amp;amp;lt;body lang=EN-US link=&amp;amp;amp;quot;&amp;amp;amp;quot;#0563C1&amp;amp;amp;quot;&amp;amp;amp;quot; vlink=&amp;amp;amp;quot;&amp;amp;amp;quot;#954F72&amp;amp;amp;quot;&amp;amp;amp;quot;&amp;amp;amp;gt;

&amp;amp;amp;lt;div class=WordSection1&amp;amp;amp;gt;

&amp;amp;amp;lt;p class=MsoNormal&amp;amp;amp;gt;Dear &amp;amp;amp;quot;

$htmlBody += $affectedUserDisplayName
$htmlbody += &amp;amp;amp;quot;,&amp;amp;amp;lt;/p&amp;amp;amp;gt;

&amp;amp;amp;lt;p class=MsoNormal&amp;amp;amp;gt;The following ESL IT Support work item has been created for
you. Please feel free to reply to this message; it will be immediately
forwarded to the ESL IT support team.&amp;amp;amp;lt;/p&amp;amp;amp;gt;

&amp;amp;amp;lt;p class=MsoNormal&amp;amp;amp;gt;&amp;amp;amp;lt;b&amp;amp;amp;gt;Body Text Reads:&amp;amp;amp;lt;/b&amp;amp;amp;gt;&amp;amp;amp;lt;/p&amp;amp;amp;gt;

&amp;amp;amp;lt;table class=MsoTableGrid border=1 cellspacing=0 cellpadding=0
 style='border-collapse:collapse;border:none'&amp;amp;amp;gt;
 &amp;amp;amp;lt;tr&amp;amp;amp;gt;
  &amp;amp;amp;lt;td width=935 valign=top style='width:467.5pt;border:solid windowtext 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'&amp;amp;amp;gt;
  &amp;amp;amp;lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&amp;amp;amp;gt;&amp;amp;amp;lt;span style='color:#0070C0'&amp;amp;amp;gt;&amp;amp;amp;quot;

$htmlBody += $emailBodyText
$htmlBody += &amp;amp;amp;quot;&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;/p&amp;amp;amp;gt;
  &amp;amp;amp;lt;/td&amp;amp;amp;gt;
 &amp;amp;amp;lt;/tr&amp;amp;amp;gt;
&amp;amp;amp;lt;/table&amp;amp;amp;gt;

&amp;amp;amp;lt;p class=MsoNormal&amp;amp;amp;gt;&amp;amp;amp;amp;nbsp;&amp;amp;amp;lt;/p&amp;amp;amp;gt;

&amp;amp;amp;lt;p class=MsoNormal&amp;amp;amp;gt;Quick Notes:&amp;amp;amp;lt;/p&amp;amp;amp;gt;


&amp;amp;amp;lt;p class=MsoListParagraph style='margin-bottom:0in;margin-bottom:.0001pt;
text-indent:-.25in;line-height:106%'&amp;amp;amp;gt;&amp;amp;amp;lt;span style='font-family:Symbol'&amp;amp;amp;gt;·&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;span
style='font-size:7.0pt;line-height:106%;font-family:&amp;amp;amp;quot;&amp;amp;amp;quot;Times New Roman&amp;amp;amp;quot;&amp;amp;amp;quot;,serif'&amp;amp;amp;gt;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&amp;amp;amp;lt;/span&amp;amp;amp;gt;You can track the status of this work item at the &amp;amp;amp;lt;a
href=&amp;amp;amp;quot;&amp;amp;amp;quot;https://scsm-esl-wc1.osuesl.net/SMPortal/SitePages/My%20Requests.aspx&amp;amp;amp;quot;&amp;amp;amp;quot;&amp;amp;amp;gt;ESL
Service Manager Self-Service Web Portal&amp;amp;amp;lt;/a&amp;amp;amp;gt;. (Note: requires Internet Explorer and an ESL LAN or VPN connection).&amp;amp;amp;lt;/p&amp;amp;amp;gt;

&amp;amp;amp;lt;p class=MsoListParagraph style='margin-bottom:0in;margin-bottom:.0001pt;
text-indent:-.25in;line-height:106%'&amp;amp;amp;gt;&amp;amp;amp;lt;span style='font-family:Symbol'&amp;amp;amp;gt;·&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;span
style='font-size:7.0pt;line-height:106%;font-family:&amp;amp;amp;quot;&amp;amp;amp;quot;Times New Roman&amp;amp;amp;quot;&amp;amp;amp;quot;,serif'&amp;amp;amp;gt;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&amp;amp;amp;lt;/span&amp;amp;amp;gt;The full work list of the ESL IT Support Team is available on the &amp;amp;amp;lt;a
href=&amp;amp;amp;quot;&amp;amp;amp;quot;http://sharepoint.osuesl.net&amp;amp;amp;quot;&amp;amp;amp;quot;&amp;amp;amp;gt;ESL SharePoint Helpdesk Website&amp;amp;amp;lt;/a&amp;amp;amp;gt;. Choose 'IT Request Billboard' 
from the left navigation list. (Note: requires ESL LAN or VPN connection).&amp;amp;amp;lt;/p&amp;amp;amp;gt;

&amp;amp;amp;lt;p class=MsoListParagraph style='margin-bottom:0in;margin-bottom:.0001pt;
text-indent:-.25in;line-height:106%'&amp;amp;amp;gt;&amp;amp;amp;lt;span style='font-family:Symbol'&amp;amp;amp;gt;·&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;span
style='font-size:7.0pt;line-height:106%;font-family:&amp;amp;amp;quot;&amp;amp;amp;quot;Times New Roman&amp;amp;amp;quot;&amp;amp;amp;quot;,serif'&amp;amp;amp;gt;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;nbsp;
&amp;amp;amp;lt;/span&amp;amp;amp;gt;Make sure to place all new text for a reply at the top of the message
or it will not be read.&amp;amp;amp;lt;/p&amp;amp;amp;gt;

&amp;amp;amp;lt;p class=MsoNormal&amp;amp;amp;gt;&amp;amp;amp;amp;nbsp;&amp;amp;amp;lt;/p&amp;amp;amp;gt;

&amp;amp;amp;lt;p class=MsoNormal&amp;amp;amp;gt;More Information on the Work Item:&amp;amp;amp;lt;/p&amp;amp;amp;gt;

&amp;amp;amp;lt;table class=MsoTable15List1LightAccent1 border=0 cellspacing=0 cellpadding=0
 style='border-collapse:collapse'&amp;amp;amp;gt;
 &amp;amp;amp;lt;tr&amp;amp;amp;gt;
  &amp;amp;amp;lt;td width=189 valign=top style='width:94.25pt;border:none;border-bottom:solid #9CC2E5 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'&amp;amp;amp;gt;
  &amp;amp;amp;lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&amp;amp;amp;gt;&amp;amp;amp;lt;b&amp;amp;amp;gt;Title &amp;amp;amp;lt;/b&amp;amp;amp;gt;&amp;amp;amp;lt;/p&amp;amp;amp;gt;
  &amp;amp;amp;lt;/td&amp;amp;amp;gt;
  &amp;amp;amp;lt;td width=585 valign=top style='width:292.5pt;border:none;border-bottom:solid #9CC2E5 1.0pt;
  padding:0in 5.4pt 0in 5.4pt'&amp;amp;amp;gt;
  &amp;amp;amp;lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&amp;amp;amp;gt;&amp;amp;amp;lt;b&amp;amp;amp;gt;&amp;amp;amp;quot;
$htmlBody += $wiTitle
$htmlBody += &amp;amp;amp;quot;&amp;amp;amp;lt;/b&amp;amp;amp;gt;&amp;amp;amp;lt;/p&amp;amp;amp;gt;
  &amp;amp;amp;lt;/td&amp;amp;amp;gt;
 &amp;amp;amp;lt;/tr&amp;amp;amp;gt;
 &amp;amp;amp;lt;tr&amp;amp;amp;gt;
  &amp;amp;amp;lt;td width=189 valign=top style='width:94.25pt;background:#DEEAF6;padding:
  0in 5.4pt 0in 5.4pt'&amp;amp;amp;gt;
  &amp;amp;amp;lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&amp;amp;amp;gt;&amp;amp;amp;lt;b&amp;amp;amp;gt;ID&amp;amp;amp;lt;/b&amp;amp;amp;gt;&amp;amp;amp;lt;/p&amp;amp;amp;gt;
  &amp;amp;amp;lt;/td&amp;amp;amp;gt;
  &amp;amp;amp;lt;td width=585 valign=top style='width:292.5pt;background:#DEEAF6;padding:
  0in 5.4pt 0in 5.4pt'&amp;amp;amp;gt;
  &amp;amp;amp;lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&amp;amp;amp;gt;&amp;amp;amp;quot;
$htmlBody += $wiID
$htmlBody += &amp;amp;amp;quot;&amp;amp;amp;lt;/p&amp;amp;amp;gt;
  &amp;amp;amp;lt;/td&amp;amp;amp;gt;
 &amp;amp;amp;lt;/tr&amp;amp;amp;gt;
 &amp;amp;amp;lt;tr&amp;amp;amp;gt;
  &amp;amp;amp;lt;td width=189 valign=top style='width:94.25pt;padding:0in 5.4pt 0in 5.4pt'&amp;amp;amp;gt;
  &amp;amp;amp;lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&amp;amp;amp;gt;&amp;amp;amp;lt;b&amp;amp;amp;gt;Status&amp;amp;amp;lt;/b&amp;amp;amp;gt;&amp;amp;amp;lt;/p&amp;amp;amp;gt;
  &amp;amp;amp;lt;/td&amp;amp;amp;gt;
  &amp;amp;amp;lt;td width=585 valign=top style='width:292.5pt;padding:0in 5.4pt 0in 5.4pt'&amp;amp;amp;gt;
  &amp;amp;amp;lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&amp;amp;amp;gt;&amp;amp;amp;quot;
$htmlBody += $wiStatus
$htmlBody += &amp;amp;amp;quot;&amp;amp;amp;lt;/p&amp;amp;amp;gt;
  &amp;amp;amp;lt;/td&amp;amp;amp;gt;
 &amp;amp;amp;lt;/tr&amp;amp;amp;gt;
 &amp;amp;amp;lt;tr&amp;amp;amp;gt;
  &amp;amp;amp;lt;td width=189 valign=top style='width:94.25pt;background:#DEEAF6;padding:
  0in 5.4pt 0in 5.4pt'&amp;amp;amp;gt;
  &amp;amp;amp;lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&amp;amp;amp;gt;&amp;amp;amp;lt;b&amp;amp;amp;gt;Urgency&amp;amp;amp;lt;/b&amp;amp;amp;gt;&amp;amp;amp;lt;/p&amp;amp;amp;gt;
  &amp;amp;amp;lt;/td&amp;amp;amp;gt;
  &amp;amp;amp;lt;td width=585 valign=top style='width:292.5pt;background:#DEEAF6;padding:
  0in 5.4pt 0in 5.4pt'&amp;amp;amp;gt;
  &amp;amp;amp;lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&amp;amp;amp;gt;&amp;amp;amp;quot;
$htmlBody += $wiUrgency
$htmlBody += &amp;amp;amp;quot;&amp;amp;amp;lt;/p&amp;amp;amp;gt;
  &amp;amp;amp;lt;/td&amp;amp;amp;gt;
 &amp;amp;amp;lt;/tr&amp;amp;amp;gt;
 &amp;amp;amp;lt;tr&amp;amp;amp;gt;
  &amp;amp;amp;lt;td width=189 valign=top style='width:94.25pt;padding:0in 5.4pt 0in 5.4pt'&amp;amp;amp;gt;
  &amp;amp;amp;lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&amp;amp;amp;gt;&amp;amp;amp;lt;b&amp;amp;amp;gt;Created Date&amp;amp;amp;lt;/b&amp;amp;amp;gt;&amp;amp;amp;lt;/p&amp;amp;amp;gt;
  &amp;amp;amp;lt;/td&amp;amp;amp;gt;
  &amp;amp;amp;lt;td width=585 valign=top style='width:292.5pt;padding:0in 5.4pt 0in 5.4pt'&amp;amp;amp;gt;
  &amp;amp;amp;lt;p class=MsoNormal style='margin-bottom:0in;margin-bottom:.0001pt;line-height:
  normal'&amp;amp;amp;gt;&amp;amp;amp;quot;
$htmlBody += $wiCreatedDate
$htmlBody += &amp;amp;amp;quot;&amp;amp;amp;lt;/p&amp;amp;amp;gt;
  &amp;amp;amp;lt;/td&amp;amp;amp;gt;
 &amp;amp;amp;lt;/tr&amp;amp;amp;gt;
&amp;amp;amp;lt;/table&amp;amp;amp;gt;

&amp;amp;amp;lt;p class=MsoNormal&amp;amp;amp;gt;&amp;amp;amp;amp;nbsp;&amp;amp;amp;lt;/p&amp;amp;amp;gt;

&amp;amp;amp;lt;p class=MsoNormal&amp;amp;amp;gt;Thank you,&amp;amp;amp;lt;/p&amp;amp;amp;gt;

&amp;amp;amp;lt;p class=MsoNormal&amp;amp;amp;gt;&amp;amp;amp;lt;img border=0 width=336 height=67 id=&amp;amp;amp;quot;&amp;amp;amp;quot;Picture 1&amp;amp;amp;quot;&amp;amp;amp;quot;
src=&amp;amp;amp;quot;&amp;amp;amp;quot;http://osu.edu/assets/site/images/logos/osu-emailsig.png&amp;amp;amp;quot;&amp;amp;amp;quot;
alt=&amp;amp;amp;quot;&amp;amp;amp;quot;The Ohio State University&amp;amp;amp;quot;&amp;amp;amp;quot;&amp;amp;amp;gt;&amp;amp;amp;lt;span style='font-size:9.0pt;line-height:107%;
font-family:&amp;amp;amp;quot;&amp;amp;amp;quot;Arial&amp;amp;amp;quot;&amp;amp;amp;quot;,sans-serif;color:#333333'&amp;amp;amp;gt;&amp;amp;amp;lt;br&amp;amp;amp;gt;
&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;b&amp;amp;amp;gt;&amp;amp;amp;lt;span style='font-size:9.0pt;line-height:107%;font-family:&amp;amp;amp;quot;&amp;amp;amp;quot;Arial&amp;amp;amp;quot;&amp;amp;amp;quot;,sans-serif;
color:#BB0000;background:white'&amp;amp;amp;gt;&amp;amp;amp;lt;span style='-webkit-user-select: none;
orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;
word-spacing:0px'&amp;amp;amp;gt;John Puskar, MCP&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;/b&amp;amp;amp;gt;&amp;amp;amp;lt;span style='font-size:
9.0pt;line-height:107%;font-family:&amp;amp;amp;quot;&amp;amp;amp;quot;Arial&amp;amp;amp;quot;&amp;amp;amp;quot;,sans-serif;color:#333333'&amp;amp;amp;gt;&amp;amp;amp;lt;br
style='-webkit-user-select: none;orphans: auto;text-align:start;widows: auto;
-webkit-text-stroke-width: 0px;word-spacing:0px'&amp;amp;amp;gt;
&amp;amp;amp;lt;span style='background:white'&amp;amp;amp;gt;&amp;amp;amp;lt;span style='orphans: auto;text-align:start;
widows: auto;-webkit-text-stroke-width: 0px;float:none;word-spacing:0px'&amp;amp;amp;gt;Sr.
Systems Manager&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;br style='-webkit-user-select: none;orphans: auto;
text-align:start;widows: auto;-webkit-text-stroke-width: 0px;word-spacing:0px'&amp;amp;amp;gt;
&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;span style='font-size:9.0pt;line-height:107%;font-family:&amp;amp;amp;quot;&amp;amp;amp;quot;Arial&amp;amp;amp;quot;&amp;amp;amp;quot;,sans-serif;
color:#BB0000;background:white'&amp;amp;amp;gt;&amp;amp;amp;lt;span style='-webkit-user-select: none;
orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;
word-spacing:0px'&amp;amp;amp;gt;College of Engineering&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;span
class=apple-converted-space&amp;amp;amp;gt;&amp;amp;amp;lt;span style='font-size:9.0pt;line-height:107%;
font-family:&amp;amp;amp;quot;&amp;amp;amp;quot;Arial&amp;amp;amp;quot;&amp;amp;amp;quot;,sans-serif;color:#333333;background:white'&amp;amp;amp;gt;&amp;amp;amp;lt;span
style='orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;
float:none;word-spacing:0px'&amp;amp;amp;gt;&amp;amp;amp;amp;nbsp;&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;span style='font-size:9.0pt;
line-height:107%;font-family:&amp;amp;amp;quot;&amp;amp;amp;quot;Arial&amp;amp;amp;quot;&amp;amp;amp;quot;,sans-serif;color:#333333;background:white'&amp;amp;amp;gt;Electroscience
Lab&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;span style='font-size:9.0pt;line-height:107%;font-family:
&amp;amp;amp;quot;&amp;amp;amp;quot;Arial&amp;amp;amp;quot;&amp;amp;amp;quot;,sans-serif;color:#333333'&amp;amp;amp;gt;&amp;amp;amp;lt;br style='-webkit-user-select: none;
orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;
word-spacing:0px'&amp;amp;amp;gt;
&amp;amp;amp;lt;span style='background:white'&amp;amp;amp;gt;&amp;amp;amp;lt;span style='orphans: auto;text-align:start;
widows: auto;-webkit-text-stroke-width: 0px;float:none;word-spacing:0px'&amp;amp;amp;gt;Room
240, 1330 Kinnear Road, Columbus, OH 43212&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;br style='-webkit-user-select: none;
orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;
word-spacing:0px'&amp;amp;amp;gt;
&amp;amp;amp;lt;span style='background:white'&amp;amp;amp;gt;&amp;amp;amp;lt;span style='orphans: auto;text-align:start;
widows: auto;-webkit-text-stroke-width: 0px;float:none;word-spacing:0px'&amp;amp;amp;gt;614-292-5545
Office / 614-769-1231 Mobile&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;br style='-webkit-user-select: none;
orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;
word-spacing:0px'&amp;amp;amp;gt;
&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;a href=&amp;amp;amp;quot;&amp;amp;amp;quot;mailto:puskar.4nokspam@osu.edu&amp;amp;amp;quot;&amp;amp;amp;quot; style='-webkit-user-select: none;
orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;
word-spacing:0px'&amp;amp;amp;gt;&amp;amp;amp;lt;span style='font-size:9.0pt;line-height:107%;font-family:
&amp;amp;amp;quot;&amp;amp;amp;quot;Arial&amp;amp;amp;quot;&amp;amp;amp;quot;,sans-serif;background:white'&amp;amp;amp;gt;puskar.4nokspam@osu.edu&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;/a&amp;amp;amp;gt;&amp;amp;amp;lt;span
class=apple-converted-space&amp;amp;amp;gt;&amp;amp;amp;lt;span style='font-size:9.0pt;line-height:107%;
font-family:&amp;amp;amp;quot;&amp;amp;amp;quot;Arial&amp;amp;amp;quot;&amp;amp;amp;quot;,sans-serif;color:#333333;background:white'&amp;amp;amp;gt;&amp;amp;amp;lt;span
style='orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;
float:none;word-spacing:0px'&amp;amp;amp;gt;&amp;amp;amp;amp;nbsp;&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;a
href=&amp;amp;amp;quot;&amp;amp;amp;quot;http://electroscience.osu.edu/&amp;amp;amp;quot;&amp;amp;amp;quot; style='-webkit-user-select: none;
orphans: auto;text-align:start;widows: auto;-webkit-text-stroke-width: 0px;
word-spacing:0px'&amp;amp;amp;gt;&amp;amp;amp;lt;span style='font-size:9.0pt;line-height:107%;font-family:
&amp;amp;amp;quot;&amp;amp;amp;quot;Arial&amp;amp;amp;quot;&amp;amp;amp;quot;,sans-serif;background:white'&amp;amp;amp;gt;electroscience.osu.edu&amp;amp;amp;lt;/span&amp;amp;amp;gt;&amp;amp;amp;lt;/a&amp;amp;amp;gt;&amp;amp;amp;lt;/p&amp;amp;amp;gt;
&amp;amp;amp;lt;/div&amp;amp;amp;gt;

&amp;amp;amp;lt;/body&amp;amp;amp;gt;

&amp;amp;amp;lt;/html&amp;amp;amp;gt;&amp;amp;amp;quot;

$htmlBody

Here’s a screen shot of the final runbook:

2.2.4-1

The exported runbooks will be available upon completion of this series.

SCSM Email Integration Part 2.2.3 – Runbook Design – SMMail_ProcTriggers

Navigation:

Introduction

This is a continuation of the SCSM Email Integration series.

Our goal for this post is to create a runbook which does the following:

  1. Checks an email inbox.
  2. Routes trigger emails to an appropriate child runbook.

Runbook Name: SMMail_ProcTriggers

Here is an overview of the data-flow for our runbook:

  1. Get Items from Inbox
  2. Use smart links to filter email messages according to the subject line.
  3. Sanitize the subject line.
  4. Parse the Work Item ID from the subject line.
  5. Invoke a child runbook.
  6. Move the email object to a subfolder once processed.

This runbook will eventually have two main branches: one branch for work item initial email triggers, and a second branch for work item comment update triggers. For now, we’re working only on initial triggers.

Each main branch will have two sub-branches, one for Incidents and one for Service Requests.

Branch Layout:

  • Main
    • Branch 1 – Initial Emails
      • Branch 1.1 – Incidents
      • Branch 1.2 – Service Requests
    • Branch 2 – Comment Updates
      • Branch 2.1 – Incidents
      • Branch 2.2 – Service Requests

Note: we will be skipping branch 2 since it will be covered in a later post.

Activities

Here is how to define the activities. Assume a link is normal unless it is defined.

Main Branch:

  1. Initialize Data
    Type: Initialize Data
  2. Check Inbox
    Type: Exchange User Get Item
    Configuration: helpdesk mailbox

Branch 1 – Initial Emails

  1. Smart Link from Main Branch
    Include: Subject from Check Inbox Starts With SCSM_Trigger_InitialEmail
  2. Sanitize Subject
    Type: Data Manipulation Replace Text
    Input String: Subject from ‘Check Inbox’
    Pattern: ” (double-quote character)
    Replacement Text: (blank)

Branch 1.1 – Initial Emails – Incidents

  1. Link from ‘Sanitize subject’
  2. (New WI) (IR) Get ID from Email Subject
    Type: Data Manipulation Match Pattern
    Input String: Output String from ‘Sanitize subject’.
    Pattern: IR[0-9]+
  3. Smart Link from Data Manipulation Match Pattern
    Include: Matches Found from ‘(New WI) (IR) Get ID from Email Subject’ is greater than 0.
  4. (New WI) (IR) Invoke Runbook to Send Email
    Type: Invoke Runbook
    Invoke By Path: True
    Wait for Completion: True
    Parameter 1 Name: WorkItemID
    Parameter 1 Value: Match String from ‘(New WI) (IR) Get ID from Email Subject’.
  5. Smart Link from (New WI) (IR) Invoke Runbook to Send Email
    Include: Child Runbook Status equals success
  6. (New WI) (IR) Move to Processing Complete
    Type: Exchange User Move or Copy Item
    Configuration: helpdesk connector
    ID: ID from ‘Check Inbox’
    Destination Folder: processing-complete

Branch 1.2 – Initial Emails – Service Requests

  1. Link from ‘Sanitize subject’
  2. (New WI) (SR) Get ID from Email Subject
    Type: Data Manipulation Match Pattern
    Input String: Output String from ‘Sanitize subject’.
    Pattern: SR[0-9]+
  3. Smart Link from Data Manipulation Match Pattern
    Include: Matches Found from ‘(New WI) (SR) Get ID from Email Subject’ is greater than 0.
  4. (New WI) (SR) Invoke Runbook to Send Email
    Type: Invoke Runbook
    Invoke By Path: True
    Wait for Completion: True
    Parameter 1 Name: WorkItemID
    Parameter 1 Value: Match String from ‘(New WI) (SR) Get ID from Email Subject’.
  5. Smart Link from (New WI) (SR) Invoke Runbook to Send Email
    Include: Child Runbook Status equals success
  6. (New WI) (SR) Move to Processing Complete
    Type: Exchange User Move or Copy Item
    Configuration: helpdesk connector
    ID: ID from ‘Check Inbox’
    Destination Folder: processing-complete

Note that the Invoke-Runbook doesn’t yet have a target or any parameters. That’s because we haven’t created the child runbook yet.

Here’s a screen shot. Note that it includes branch 2.

2.2.3-1

The exported runbook will be available upon completion of the series.

SCSM Email Integration Part 2.2.2 – Runbook Design – “Process Email – General Routing”

Navigation:

Introduction

This is a continuation of a series of posts about SCSM Email Integration. In this post, we will assume that SCORCH is already configured per the previous post.

Our goal now is to create a runbook that:

  1. checks an email account for emails matching a specific template
  2. forwards trigger information to a child runbook

Runbook Name: Process Email – General Routing

Here is an overview of the data-flow for our runbook:

  1. Every Minute
  2. Check the Helpdesk Inbox
  3. If any messages’ subjects match a certain string, trigger a child runbook.

Here’s what the activities will look like:

  1. Monitor Date/Time set for ‘every minute’.
  2. Exchange User Get Item
    Name: Get Items from Inbox
    Configuration: helpdesk mailbox
    Search Folder: Inbox
    Search Subfolders: False
    Filters: Subject Starts With ‘SCSM_Trigger_InitialEmail’
    Run Behavior: Flatten
  3. Invoke-Runbook
    Invoke by Path: True

Note that the ‘invoke-runbook’ target runbook will be blank for now since we haven’t created the child runbook.

Here’s a screenshot:

2.2.2-1

The exported runbook will be available at the conclusion of the series.

SCSM Email Integration Part 2.2.1 – New Work Items – Scorch Configuration

Navigation:

Introduction

When we left off in Part 2.1, we had configured SCSM to send trigger emails to a helpdesk account when new Service Requests and Incidents’ are created. Now, we’ll configure SCORCH to receive these triggers, generate awesome emails, and send them out.

Note, this section will be broken into four blog posts:

  1. Part 2.2.1 – New Work Item – Scorch Configuration
  2. Part 2.2.2 – Runbook Design – ‘Process Email – General Routing’
  3. Part 2.2.3 – Runbook Design – ‘Process Email – SCSM Trigger Emails’
  4. Part 2.2.4 – Runbook Design – ‘Process Email – SCSM Trigger – Send Initial WI Email’

Here’s the design:

Orchestrator will:

  1. Check the helpdesk account for trigger emails.
  2. Process triggers.
  3. Generate email messages.
  4. Send email messages.

We will use three runbooks to accomplish this. This will allow us the necessary level of abstraction to accomplish other email integration goals outlined in future posts.

  1. The runbook ‘Process Email – General Routing’ will check for trigger emails. This runbook will also be used in future posts to route incoming comments.
  2. The runbook ‘Process Email – SCSM Trigger Emails’ will be triggered by the general routing runbook when a trigger email is found.
  3. the runbook ‘Process Email – SCSM Trigger – Send Intial WI Email’ will actually generate and send the email message.

In short, the data flow is:

  • ‘Process Email – General Routing’
    • ‘Process Email – SCSM Trigger Emails’
      • ‘Process Email – SCSM Trigger – Send Intial WI Email’

Here’s the step-by-step:

  1. Configure Scorch Integration Packs
    1. Data Manipulation IP
    2. Service Manager IP
    3. Exchange User IP
  2. Create the Runbooks
    1. Process Email – General Routing
    2. Process Email – SCSM Trigger Emails
    3. Process Email – SCSM Trigger – Send Intial WI Email

Step 1 – Configure Scorch Integration Packs

Overview:

  • Create AD Accounts.
  • Register and Deploy IP’s
  • Configure IP’s

Part A – Accounts

  1. Create an active directory account for scorch-scsm integration. I recommend a name such as ‘scorch-ipcon-scsm’.
  2. Give the AD account created in the previous step local admin rights on the scsm and scorch servers.

Part B – Register and Deploy IP’s

  1. Obtain the following Integration Packs
    1. SCO Data Manipulation IP
    2. System Center 2012 R2 – Orchestrator Component Add-ons and Extensions
  2. Extract the IP’s. I always extract build files to C:\Install_Files for easy reference and backups.
  3. Open System Center Orchestrator 2012 R2 Deployment Manager -> Integration Packs.
  4. Right-click the ‘Integration Packs’ node and choose ‘Register IP with the Orchestrator Management Server’
  5. Follow the wizard and register the following three integration packs:
    1. Orchestrator Integration Pack for Data Manipulation
    2. System Center Integration Pack for Exchange User
    3. System Center Integration Pack for System Center 2012 Service Manager
  6. Back in Deployment Manager -> Integration Packs, highlight the three new Integration Packs, then right-click and choose ‘Deploy IP to Runbook Server or Runbook Designer’.
  7. Follow the wizard. You want to deploy to the server running scorch, which is probably the same system from which you are already running Deployment Manager.
  8. Close Deployment Manager.

Part C – Configure IP’s

First we will configure the SCSM integration pack. Then, we will configure the Exchange integration pack. Note: we will need to configure two different exchange connectors. One for an exchange ‘connection’, and the other for the actual exchange mailbox.

  1. Open System Center 2012 R2 Orchestrator Runbook Designer.
  2. Choose ‘Options’ -> ‘SC2012 Service Manager’.
  3. On the ‘SC 2012 Service Manager’ -> ‘Connections’ screen click ‘Add’.
  4. On the ‘Connection’ screen enter a name for the connection such as ‘scsm’, and fill out the target SCSM server name (use the FQDN), username, password, and domain.
  5. Click ‘Test Connection’ to confirm, then click ‘OK’ then ‘Finish’.
  6. In Runbook Designer, click ‘Options’ -> ‘Exchange User’.
  7. On the ‘Exchange User’ -> ‘Prerequisite Configuration’ screen, click ‘Add’.
  8. On the ‘Add Configuration’ screen, enter a name such as ‘helpdesk connection’.
  9. Still on the ‘Add Configuration’ screen, choose ‘Exchange Configuration’ for the type.
  10. Still on the ‘Add Configuration’ screen, under ‘Properties’, fill out the following:
    Exchange Server Address: <your exchange server>
    Use Autodiscover: <depends, I chose ‘false’>
    User Name, Password, and Domain should be of the exchange account.
  11. Click ‘OK’ to save the ‘helpdesk connection’ exchange configuration.
  12. Back on the ‘Exchange User’ -> ‘Prerequisite Configuration’ screen, again click ‘Add’.
  13. On the ‘Add Configuration’ screen, enter a name such as ‘helpdesk mailbox’.
  14. Still on the ‘Add Configuration’ screen, choose ‘Exchange Configuration (Item Activity)’ for the type.
  15. Still on the ‘Add Configuration’ screen, under ‘Properties’, fill out the following:
    Exchange Server Address: <your exchange server>
    Use Autodiscover: <depends, I chose ‘false’>
    User Name, Password, and Domain should be of the exchange account.
    Item Type: E-Mail Message
  16. Click ‘OK’ to save the ‘helpdesk mailbox’ exchange configuration.

Step 2 – Create the Runbooks

This will be covered in subsequent blog posts as described at the top.