Posts Tagged ‘Console’

So recently, I had a customer ask me for the following as their previous incident management system had this functionality.

The customer wanted to be able to send an “Update Email” to a 3rd party from the SCSM Console with automatically placing the reference number into said email. They needed the functionality of sending to any email address. This was a requirement for the type of business they are in.

Please remember that I am by no means a developer. I was thinking of using System Centre Orchestrator, however for this simple requirement, I thought that it might be overkill. I am sure that in time, as the requirements grows and/or changes, System Centre Orchestrator will become a better fit. For this solution, I turned to my friend, PowerShell

I simply wanted to provide a clean interface for the customer to use. I follow a strict rule of KISS (Keep It Straight and Simple). With the PowerShell script, I provide two input fields.

  1. Email address of user for update to go to
  2. Update to be sent to customer.

The screenshot of what the window looks like

All of this was built in PowerShell with some from Sapien PrimalForms Community Edition to assist with the GUI part. The GUI is fully functional and tested. “Send Update” is responsible for sending the update to the specified person and the “Cancel” simply closes the form nicely and allows you to continue as normal.

PowerShell Code Below (SendEmail – Technet Gallery Download)


#region Script Settings
#<ScriptSettings xmlns="http://tempuri.org/ScriptSettings.xsd">
#  <ScriptPackager>
#    <process>powershell.exe</process>
#    <arguments />
#    <extractdir>%TEMP%</extractdir>
#    <files />
#    <usedefaulticon>true</usedefaulticon>
#    <showinsystray>false</showinsystray>
#    <altcreds>false</altcreds>
#    <efs>true</efs>
#    <ntfs>true</ntfs>
#    <local>false</local>
#    <abortonfail>true</abortonfail>
#    <product />
#    <version>1.0.0.1</version>
#    <versionstring />
#    <comments />
#    <company />
#    <includeinterpreter>false</includeinterpreter>
#    <forcecomregistration>false</forcecomregistration>
#    <consolemode>false</consolemode>
#    <EnableChangelog>false</EnableChangelog>
#    <AutoBackup>false</AutoBackup>
#    <snapinforce>false</snapinforce>
#    <snapinshowprogress>false</snapinshowprogress>
#    <snapinautoadd>2</snapinautoadd>
#    <snapinpermanentpath />
#    <cpumode>1</cpumode>
#    <hidepsconsole>false</hidepsconsole>
#  </ScriptPackager>
#</ScriptSettings>
#endregion

 param($ID)
Import-Module 'C:\Program Files\Common Files\SMLets\SMLets.psd1' -Force

 #Generated Form Function
function GenerateForm {
########################################################################
# Code Generated By: SAPIEN Technologies PrimalForms (Community Edition) v1.0.10.0
# Generated On: 2013-11-14 09:08 AM
# Generated By: Fletcher
########################################################################

 #region Import the Assemblies
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
#endregion

 #region Generated Form Objects
$SendUpdateForm = New-Object System.Windows.Forms.Form
$CancelButton = New-Object System.Windows.Forms.Button
$SendUpdateButton = New-Object System.Windows.Forms.Button
$UpdateTextBox = New-Object System.Windows.Forms.TextBox
$UpdateLabel = New-Object System.Windows.Forms.Label
$EmailToTextBox = New-Object System.Windows.Forms.TextBox
$EMailToLabel = New-Object System.Windows.Forms.Label
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState
#endregion Generated Form Objects

 #----------------------------------------------
#Generated Event Script Blocks
#----------------------------------------------
#Provide Custom Code for events specified in PrimalForms.
$SendUpdateButton_OnClick=
{
        Write-Host "Send Update"
        $to = $EmailToTextBox.Text
        Write-Host $to
        $from = "Servicedesk@bui.co.za"
        $emailbody = $UpdateTextBox.Text
$subject = @"
Update [ID]
"@
$body = @"
$emailbody
"@
        #$subject = "Update [ID]"
        #Write-Host $subject
        #Write-Host $body
        $smtpserver = "buiexc20.bui.co.za"
        #[string]$body = $UpdateTextBox.Text
        #$testcommand = "Send-MailMessage -To $to -From $from -Subject $messagencontent -Body '$body' -SmtpServer $smtpserver"
        Send-MailMessage -To $to -From $from -Subject $subject -Body $body -SmtpServer $smtpserver
        #Write-Host $testcommand
        $SendUpdateForm.Close()

 }

 $CancelButton_OnClick=
{
#TODO: Place custom script here
$SendUpdateForm.Close()
}

 $OnLoadForm_StateCorrection=
{#Correct the initial state of the form to prevent the .Net maximized form issue
    $SendUpdateForm.WindowState = $InitialFormWindowState
}

 #----------------------------------------------
#region Generated Form Code
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 323
$System_Drawing_Size.Width = 409
$SendUpdateForm.ClientSize = $System_Drawing_Size
$SendUpdateForm.DataBindings.DefaultDataSourceUpdateMode = 0
$SendUpdateForm.Name = "SendUpdateForm"
$SendUpdateForm.Text = "Send Update"

 
 $CancelButton.DataBindings.DefaultDataSourceUpdateMode = 0

 $System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 182
$System_Drawing_Point.Y = 264
$CancelButton.Location = $System_Drawing_Point
$CancelButton.Name = "CancelButton"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 23
$System_Drawing_Size.Width = 124
$CancelButton.Size = $System_Drawing_Size
$CancelButton.TabIndex = 5
$CancelButton.Text = "Cancel"
$CancelButton.UseVisualStyleBackColor = $True
$CancelButton.add_Click($CancelButton_OnClick)

 $SendUpdateForm.Controls.Add($CancelButton)

 
 $SendUpdateButton.DataBindings.DefaultDataSourceUpdateMode = 0

 $System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 35
$System_Drawing_Point.Y = 264
$SendUpdateButton.Location = $System_Drawing_Point
$SendUpdateButton.Name = "SendUpdateButton"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 23
$System_Drawing_Size.Width = 116
$SendUpdateButton.Size = $System_Drawing_Size
$SendUpdateButton.TabIndex = 4
$SendUpdateButton.Text = "Send Update"
$SendUpdateButton.UseVisualStyleBackColor = $True
$SendUpdateButton.add_Click($SendUpdateButton_OnClick)

 $SendUpdateForm.Controls.Add($SendUpdateButton)

 $UpdateTextBox.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 35
$System_Drawing_Point.Y = 135
$UpdateTextBox.Location = $System_Drawing_Point
$UpdateTextBox.Multiline = $True
$UpdateTextBox.Name = "UpdateTextBox"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 103
$System_Drawing_Size.Width = 290
$UpdateTextBox.Size = $System_Drawing_Size
$UpdateTextBox.TabIndex = 3

 $SendUpdateForm.Controls.Add($UpdateTextBox)

 $UpdateLabel.DataBindings.DefaultDataSourceUpdateMode = 0

 $System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 35
$System_Drawing_Point.Y = 110
$UpdateLabel.Location = $System_Drawing_Point
$UpdateLabel.Name = "UpdateLabel"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 22
$System_Drawing_Size.Width = 359
$UpdateLabel.Size = $System_Drawing_Size
$UpdateLabel.TabIndex = 2
$UpdateLabel.Text = "Please enter the information to be sent to intended recipient:"

 $SendUpdateForm.Controls.Add($UpdateLabel)

 $EmailToTextBox.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 35
$System_Drawing_Point.Y = 54
$EmailToTextBox.Location = $System_Drawing_Point
$EmailToTextBox.Name = "EmailToTextBox"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 20
$System_Drawing_Size.Width = 290
$EmailToTextBox.Size = $System_Drawing_Size
$EmailToTextBox.TabIndex = 1

 $SendUpdateForm.Controls.Add($EmailToTextBox)

 $EMailToLabel.DataBindings.DefaultDataSourceUpdateMode = 0

$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 35
$System_Drawing_Point.Y = 27
$EMailToLabel.Location = $System_Drawing_Point
$EMailToLabel.Name = "EMailToLabel"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 24
$System_Drawing_Size.Width = 439
$EMailToLabel.Size = $System_Drawing_Size
$EMailToLabel.TabIndex = 0
$EMailToLabel.Text = "Please enter the email address of the intended recipient:"

 $SendUpdateForm.Controls.Add($EMailToLabel)

 #endregion Generated Form Code

 #Save the initial state of the form
$InitialFormWindowState = $SendUpdateForm.WindowState
#Init the OnLoad event to correct the initial state of the form
$SendUpdateForm.add_Load($OnLoadForm_StateCorrection)
#Show the Form
$SendUpdateForm.ShowDialog()| Out-Null

 } #End Function

 #Call the Function
GenerateForm

[/code]

Ok, so that is the PowerShell side done. Now, it is time to create the console task. This is a fairly straight forward exercise. There are only a few tips I would like to share. I used a shared folder for the scripts and then mapped the console task to the shared folder. Netivia Consulting has a great idea as well, I will be changing to PowerShell Remoting soon, great idea!!!!!

I have configured the PowerShell script to use a parameter, the ID of the Work Item, this is very easy to configure and ensure that the parameter is passed on. See below.

You will see that I used the “Log in action log when this task is run”. That is where the Write-host in the PowerShell script becomes handy, the write-host lines are added to the Action Log.

Please feel free to use and modify to meet your needs.

(E-Mail me)

Follow me.

Facebook (Personal)

Twitter (Personal & System Centre)

Twitter (System Centre Focused)

Advertisements

So, Cireson has been hard at work to fill a few gaps present within the Service Manager space. Cireson has created an application called My Active Work Items to bring all information assigned to your user token in one place. For Service Manager 2010, you could create the Work Items assigned to Me view. This was a good start for SCSM 2010 and this continues to work with SCSM 2012. However, with SCSM 2012, there are a few shortcomings of this view. The Work Items assigned to Me, it only shows some very limited information and this view cannot be edited.

image

Please make no error, this view is helpful and can provide the required information. It is still context driven on the right hand pane.

But now, enter My Active Work Items. Below is a screenshot to give you an idea of how it looks. I will then look at individual aspects.

image

If you have multiple work items of the Same type, For example, Incidents, they will be grouped together. In the Screenshot below, I have created 2 incidents to demonstrate this.

image

the pane below the “My Active Work Items” provides all information needed about the highlighted work item at a glance.

SNAGHTML46c3381

All the other features associated to the Highlighted work item are available as a right click context item. I will show a few examples below.

Incident

SNAGHTML4742dcd

Review Activity

SNAGHTML47bf7d2

Problem

SNAGHTML48cb49c

Change Request

SNAGHTML4a035f5

Also note the “My Active Work Items” context menu which allows easy to the creation of any type of Work Item.

image

The installation and configuration of My Active Work Items is very simple and quick. The installation instructions provided are clear and concise and the settings, found under Administration –> Settings can be easily tweaked and changed to suit your needs.

If you have looked at my previous Cireson Group Assign post, you will see that the AD Groups leveraged within that Service Manager application can be leveraged again.

SNAGHTML4b3dd06

All in all, Cireson have a great application with My Active Work Items and I would highly recommend it for any Service Manager 2012 installation. It also work with Service Manager 2012 Service Pack 1.

(E-Mail me)

image_thumb_thumb_thumb_thumb_thumb

Follow me.

facebook-small322252222 Facebook (Personal)

twitter-small322252222Twitter (Personal & System Center)

scsmlogo25232 Twitter (System Center Focused)

MCC11_Logo_Horizontal_2-color_thumb_

I have always heard complaints from some of the analysts in my company about having to install the Service Manager Console on their machines and then complaining about having to learn a new application.

So, I went searching around and found a great application called Cireson SCSM Web Console, this allows analysts to update Incidents via a newly designed web portal for Analysts. Since the console is designed in HTML5, the web console is browser agnostic. This face also helps some companies to adopt this as it allows analysts to use all types of devices to update incidents.

The guide provided to install the application is Comprehensive and easy to follow. Just make sure you do all the steps. I have added some screenshots of errors I got along the way, trying to “jump the gun” and see the new Web Console in action.

“Issues and Errors” I ran into, all of which are easily fixed.

Server error in ‘/’ Application

image

This error is pretty much self-explanatory, I tried to open the console before the Cireson Management Pack had been imported. A simple fix, import the Management Pack.

image

Again, this looks intimidating. This is very easy to fix if you look at error. When you are going through the installation guide, it is very easy to miss a step. Like this, when configuring the web.config file with Active Directory Connector information, it is very easy to find the space for the DN Name of your domain. When the above happens, it is simple a case of not adding the full DN for a DOMAIN CONTROLLER.

But now, onto the console in action. Just one side note, for now the Cireson SCSM Web Console handles only incidents, I have heard that plans are in progress for the Cireson SCSM Web Console to be extended to include Service Requests and potentially Problems, WOW!!!!!!

The Cireson SCSM Web Console is really easy to navigate and very easy to understand, anything you can do in the actual console, you can do on the Cireson SCSM Web Console. So, if you make the Cireson SCSM Web Console publically available, your Analysts can update from anywhere with any device as the Web Console is NOT dependent on Microsoft Silverlight.

As you can see below, the Web Console is very nicely put together and gives you all the information you need at a quick glance.

image

You can click an incident to open it and you will be presented with some detailed information regarding the incident as can be seen below. You can also “Edit Incident” from the Web Console to update it.

image

From the top Level Tabs, you can see you access all the information you could regarding Incidents

image

Below are screenshots of each “Section” from the Top Level Menu”

Incidents can also be LOGGED from the Web Console, displaying all information from your SCSM Implementation

image

The “My Team’s Incidents” leverages the groups and information provided during the installation of the Web Console and provides a consolidated view of the Incidents assigned to the “Support Group” to which the currently logged on user is a member and this works very nicely with Cireson SCSM Group Assign

image

The “All My Incidents” View provide a view of all incidents assigned to the currently “logged on” user.

image

The “All Incidents” view provides an overview for all incidents within your Service Manager environment. By default, only active incidents are shown, you can select the checkbox to show resolved incidents.

image

The “Search Incidents” views allows you to search via a number of different fields, making it really easy to find any incidents you are looking for.

image

The “Configuration Items” view is the representation of the CI Items within the organization on the Web Console.

image

The Cireson SCSM Web Console is a great addition to your Service Manager environment. It allows incidents to be updated quickly and easily from any device. I would highly recommend it.

(E-Mail me)

image_thumb_thumb_thumb

Follow me.

facebook-small322252222 Facebook (Personal)

twitter-small322252222Twitter (Personal & System Center)

scsmlogo252 Twitter (System Center Focused)

MCC11_Logo_Horizontal_2-color_thumb_

So, we have started our migration from ConfigMgr 2007 R2 to SCCM 2012. We have installed the new site and now we have started building the required collections as we are using a mix of old collections from ConfigMgr 2007 ( a lot of the built-in collections that are present in ConfigMgr 2007 are NOT present in SCCM 2012. So of course, copy and paste of the Query language is quite useful and this is one of the first things I would do when you are in the process of a SCCM Migration.

Next up boundaries, at least the new version reads Active Directory and then creates the boundaries for you. We are creating custom Boundary groups so suit our needs as we have quite a mix of “FAST” and “SLOW” WAN links.

So far so good, starting to push out clients and get them reporting to the new site. This is going well and can be time-consuming. So, we decided to install the Reporting Point so we can get some decent reports from the system.

By now, it is late on Friday and I decide to push out the installation to a whole collection I have created and allow time over the weekend for the clients to install and report nicely back to SCCM.

So, naturally on Monday morning I want to open the console and see how my “Client Push” went and I was greeted with the following.

SnipImage 

Not exactly want you want to see. So after some more digging around I found this in the event log.

image

And what is really strange is that nothing had changed over the weekend and this is a brand new install and I was able to open the console on Friday afternoon to push out the clients. So, now for some troubleshooting, checked SPN’s with this article, Check!!! no changes and still I cannot connect to the main site.

So now time for some more digging. I now decided it was time to look at this from an SCCM Log point of view. For this, I opened SMSProv.log from the machine I was trying to connect to the console. More proof that something was wrong.

image

So, now I decided to employ a good friend called Uncle Google. Smile

I was able to find a fix here.

http://social.technet.microsoft.com/Forums/en-US/configmanagerdeployment/thread/8670176d-d780-49fc-9f2a-426ab903fe73/

It turns out to be an issue with the SQL 2008 R2 Native Client, after removing the SQL 2008 R2 Client and installing the SQL 2008 Client, no more problems. I think the delay with mine, it that the SQL instance only failed to the second node in our cluster over the weekend. So, when trying to create a new connection to the new node, the native client for SQL 2008 R2 started its havoc.

And it worked like a charm.

Hope this helps,

Follow me.

facebook-small322252222 twitter-small322252222

MCC11_Logo_Horizontal_2-color_thumb_

So, I have been running Service Manager for quite some time now. From SCSM 2010 to SCSM SP1 and most of the CU’s before I upgraded to SCSM 2012 Beta and RC and then to RTM (with the help of a Microsoft TAP Program). Service Manager is now quite entrenched in our business and has been running quite well for a very long time. However, a little while ago we began to experience performance issues with the Console and the logging of calls and the application of Workflows.

Time for some investigation.

There was a general slowdown with everything and business was not happy with this. So let the troubleshooting begin. Since there is a SQL back-end, I decided that this was a good place to start.

I was running a sp_who2 on my SQL server and I was seeing a lot of “blocking” happening. There will some “blocking” for a very short while, while the ServiceManager database is updated. However, I was seeing “blocking” SPID’s consuming processor time for several minutes and this is NOT normal at all.

As a result of this, my workflows were not kicking off properly and a few other issues including the slow pickup of e-mailed in incidents from SMTP “Drop Folder” and extremely slow response when assigning incidents to new people/tiers to name but a few. In general, Service Manager was SLOW!!!!

After much troubleshooting and some help from MS. It was determined to be a corrupt workflow, what had actually happened to me, is that my MP containing my Workflow was corrupted.

So, I stopped the “Health Service”, disabled all the workflows and slowly started re-enabling workflows and then starting the “Health Service” again and slowly started testing like that and I was able to determine that any workflow or template within a set MP was causing the SQL Blocking. As a result, I re-created the workflows and Templates from scratch and now I have no issues at all.

Slow and painful, but well worth it now.

Follow me.

facebook-small322252222 twitter-small322252222

MCC11_Logo_Horizontal_2-color_thumb_