Machine Translations

ServiceDesk 7 provides a much broader and more powerful ITIL compliant service desk than anything Symantec/Altiris has provided before. It would almost be worth writing a whole article on the virtues of ServiceDesk (SD) alone however we will concentrate on the interaction between ServiceDesk and the Symantec Management Platform (SMP, aka Notification Server 7).

There are already pre built interactions between ServiceDesk (SD) and SMP namely:

SD reads, in real time, data from the CMDB which is the same CMDB as the SMP reads/writes to (and all subsequent solutions)

You can view incidents relating to assets (also referred to as CIs = configuration items) in the CMDB from the SMP

You can run reports showing incidents and assets relationships

Development is continuously developing tighter interaction/integration between SD and SMP. Remember that SD is built entirely on Workflow Solution which is not built on the SMP.

SD provides a rich layer of web services allowing greater flexibility but more importantly allowing greater interoperability between SD and other systems. One item in particular which would be extremely valuable is to be able to create incidents from the SMP, specifically creating incidents based on events that occur within SMP. Some examples might be:

Monitor Solution detects a problem and creates an incident

A report is run and based on the results you want to open an incident

Based on success/failure of a job you want to create an incident

Licensing for a solution in SMP (or for software that you have contract information for) will expire and you want an incident created

In the future you will have this capability out of the box, but for now you will need to rely on the web services that are exposed. We will cover 2 methods of creating incidents:

Creating a Decision only workflow that creates an incident that also references an asset

IncidentManagement Web Service

If you open IIS manager on your ServiceDesk server and browse to Web Sites > Default Web Site > SD.IncidentManagement you will find an IncidentManagement.asmx entry on the right hand side. Right click and select browse. You will now find several methods that are available to you namely:

CheckAutoStart

CheckTimeoutsAndEscalations

CreateIncidentAdvanced

CreateIncidentAdvancedAndReturnPID

CreateIncidentFromID

CreateIncidentFromIDAndReturnPID

CreateIncidentSimple

CreateIncidentSimpleAndReturnPID

GetCurrentWorkflowTaskIDs

GetCurrentWorkflowTasks

SubmitIncident

SubmitIncidentAndReturnPID

TrackStatus

get_Global_ReportProcessID

set_Global_ReportProcessID

The one we are interested in our example is CreateIncidentSimple. If you click on the hyperlink you will get the following:

You can manually try this web service out by entering in the proper fields.

Here is how we can invoke this web service from SMP:

Open the SMP console (aka Altiris console)

Go to Manage->Jobs and Tasks

Right click on a desired folder and select New->Task

Select the "Call Web Service on Server'

Provide an appropriate name such as "Create Incident - web service"

Enter the following for the URL: http://{your SD server name}/SD.IncidentManagement/IncidentManagement.asmx?WSDL

Click Load

Under the Method Name choose "CreateIncidentSimple"

You will now see the 4 input variables that we have seen before when manually accessing the web service

It is up to you at this point what you would like to fill in for the input fields. You can provide static values that will always be used, or you can place variables which will be filled dynamically when the task is run. In my example I used a combination of both as per the screen shot below

Notice that I have placed the following value for Incident Name: Monitor Solution - %!MONITOR_POLICY_NAME!%. I will be using this task for actions within Monitor Solution and so the %!MONITOR_POLICY_NAME!% is one of many variables that are accessible to the task when it is invoked when a monitor alert is raised. You can create any variable you wish by prefixing the variable name with %! and appending !%.

Fill in your desired variables

Test the task by running a schedule of "now" and you will notice that it prompts you for the variables you created

And you're done. At this point you can use this task anywhere within the SMP. You can use it in conjunction with an Automation Rule, or specific solutions such as Monitor Solution. I will create another article on how to use this task within Monitor Solution.

Create incidents with referencing an asset

Now let's move on to a more advanced method of creating incidents from the SMP. This involves creating a "Decision only" workflow. It is assumed that you have some knowledge of workflow. If not, a good reference is www.workflowswat.com. The goal of this workflow is to not only create an incident but also reference an asset from the SMP CMDB. I will outline the steps below but I have also included my project in the article for your reference:

Open Workflow designer

Click new

Select decision only and fill in an appropriate name for your project

You should have the follow show up as a result

We now need to import the proper libraries. Click "Import" and then go to the Custom Library tab and select the following

SD.Components.dll

SD.data.dll

SD.DataTypesCore.dll

Click "Add" then "Ok"

Click "Ok" on the next screen that comes up

Next click at the top node on the tree on the left hand side (the name of your project)

Click "Edit" next to the "Service ID"

Prefix the Service ID with one of the following words:

INCIDENT

PROBLEM

CHANGE

RELEASE

KB SERVICEDESK

SDREQUEST

The reason for this is that you will not be able to use any of the ServiceDesk components otherwise. This has to do with licensing.

*Optional - click on the Publishing tab and enter in your desired Service Name and Method Name. In my case I left it as is.

Next click on the Global Data tab and enter in the appropriate NotificationServer value.

Next click on the Application Properties tab and check "Use Application Properties" and "ServiceDeskSettings" row

Click on the "Input Data" node on the tree on the left hand side of the screen. I used the following input variables:

The most essential input variable is the AssetGUID. We will use this to find the asset by its GUID and then reference the asset when we create the incident. I included more input variables so that we have the option of passing in more information on how you want to create the incident. For my example I included contact email, priority, urgency, etc. You can add as many as you would like and I will describe further down below how to use the input variables when creating the incident.

*Optional - Finally click on the "Output Data" node on the tree on the left hand side and enter in the following as in the screen shot:

We will use this to return the new incident ID.

For the rest of the steps it would be easier (and shorter for me) if you opened my CreateIncidentWithAssetReference.package file and either used my project as is or copy and paste the components I used. The project should look like the following:

Here are a couple of pointers for the components I used:

I left the component name in the description so you can see which components I used

Some of the logic may seem counter intuitive due to the fact that the "Create Incident" and "SubmitIncidentComponent" components require attributes with particular data types

If you look inside the CreateIncident (click the ellipse next to value) you will see all the variables that can be filled in ahead of time. I used this list (with the required fields to create an incident in mind) to populate my input variables to the project

I use the "Copy Data Element to New Location" component to copy over each input variable to the appropriate Incident variable attribute. The Incident variable is the result of the "Create Incident" component.

If you do have an output variable don't forget to double click the end component and map the NewIncidentProcessID to the output variable.

Finally, publish the workflow. I published mine to my ServiceDesk server. This will be published as a web service and can be accessed externally.

Now, to use our new web service in SMP we will follow the exact same steps as we went through earlier in this article. Here is the screen shot of my web service task that I created:

Hi, I'm Trying to use the CreateIncidentAdvanced Web Service, but I'm Getting to many errors when trying to save the task. Do you know what are the required fields in this web service, and their format?