SCSM

SCSM Authoring – Erweiterung der Klasse „Incident“ mit einer kundenspezifischen Property

SCSM Authoring – Erweiterung der Klasse „Incident“ mit einer kundenspezifischen Property

Bei der Implementierung ITIL-konformer Prozesse bei kleineren und mittleren Unternehmen spielen sowohl die Komplexität der ITIL-Prozesse, als auch die Grösse des IT-Betriebs eine substanzielle Rolle. Die Unterstützungsbreite und die im Tool enthaltene „Best Practices“, die Anpassungsmöglichkeit, die Bedienungsfreundlichkeit, die nahtlose Integration mit anderen systemtechnischen Komponenten und der Betriebsaufwand sind einige der wichtigsten Kriterien für die Wahl des System Center 2012 R2 Service Managers. Doch, wie „einfach“ ist es, die individuellen Anforderungen des Kunden zu erfüllen?

Auf dieses Thema wollen wir in diesem Blogpost im Detail eingehen und mit einem „Use Case“ anschaulich zeigen wie man das Service Manager Datenmodell und konkret die Klasse „Incident“ mit einer neuen kundenspezifischen Property erweitert. Ziel der Datenmodellerweiterung war in dem konkreten Fall den Endbenutzern die Möglichkeit zu geben beim Eröffnen eines Incidents über das Service Manager Self-Service Portal (SSP) die Inventarnummer des betroffenen Geräts (PC, Laptop, Drucker, etc.) einzugeben. Diese Nummer sollte auch zu einem späteren Zeitpunkt für Reportingzwecke zur Verfügung stehen.

Alle Erweiterungen und Anpassungen des Service Manager-Klassenmodells, Formulare und sogar Workflows werden mit Hilfe von dem Authoring Tool für System Center 2012 Service Manager gemacht.

Da dieser Artikel eine detaillierte Anleitung darstellen sollte, fangen wir mit der Installation des Tools an:

 

Installation des Service Manager Authoring Tools

Bevor man mit der Installation des Tools startet, muss man sicherstellen, dass das System auf dem das Tool installiert wird, die nachfolgenden Anforderungen erfüllt:

Anforderungen für das Authoring Tool
https://technet.microsoft.com/de-de/library/hh519788.aspx

Wie aus dem Artikel ersichtlich wird, kann das Tool nicht nur auf einem Serverbetriebssystem, sondern auch auf einem Client (Windows Vista, Windows 7, etc.) installiert werden. Es spielt auch keine Rolle, ob das ein Service Manager Management Server oder ein Data Warehouse Management Server ist.

Den Downloadlink für das Tool findet man hier:

System Center 2012 R2 Service Manager Authoring Tool
https://www.microsoft.com/en-us/download/details.aspx?id=40896

Nachdem man das Tool in einen beliebigen Ordner extrahiert hat und das Setup gestartet hat, kontrolliert der Installationsassistent, ob alle Voraussetzungen erfüllt sind.

Wie aus dem o.g Artikel zu sehen ist, braucht man auch Microsoft .NET Framework 3.5. Man kann es entweder direkt von Microsoft herunterladen, mit PowerShell installieren (Install-WindowsFeature –name NET-Framework-Core –source F:\sources\sxs, wobei hier F:\ das gemountete Installationsmedium ist) oder die Installation direkt vom Ordner „Prerequisites“ des Authoring Tools (z.B. C:\SC2012 R2 SCSM AUTHORING TOOL\Prerequisites) starten.

Eine weitere Besonderheit existiert in Bezug auf die weitere Voraussetzung – Microsoft Visual Studio Shell 2008 Check:

Prereq

Wenn man nach dem Download und der nachfolgenden Installation der Datei „vs_AppEnvRedist“ versucht mit dem Setup des Tools weiterzumachen, merkt man, dass dies nicht möglich ist. Der Microsoft Visual Studio Shell 2008 Check meldet weiterhin, dass die Microsoft Visual Studio Shell 2008 nicht installiert sei, obwohl man beim Setup auf eine erfolgreiche Installation aufmerksam gemacht wird:

Capture6

Man muss zu dem Ordner navigieren (In meinem Fall C:\VS 2008 Shell Redist\Isolated Mode) und dann die Datei „vs_shell_isolated.enu“ anklicken und den Assistenten (Microsoft Visual Studio 2008 Shell SP1 software update) folgen. Erst nachdem dieser erfolgreich die notwendigen Komponenten installiert hat, kann man mit dem Authoring Tool weitermachen.

 

Erweiterung der Klasse „Incident“

Bevor man die bestehende Klasse „Incident“ mit einer neuen Property erweitert, muss man sich über die Auswirkungen im Service Manager informieren, da die Erweiterung alle bestehenden und natürlich alle neuen Incidents betrifft. In unserem Fall würde das dazu führen, dass alle Incidents mit der Property „Inventory Number“ versehen werden. Wenn man nachher auch die Incident-Form erweitert, wird das Feld „Inventarnummer“ in allen Incidents in der Konsole zu sehen sein.

Die Alternative geht über die Erstellung einer neuen Klasse, die die Eigenschaften und Beziehungen von einer vorhandenen Basisklasse (in dem Fall „Incident“) erbt. Mehr Informationen dazu findet man hier:

Erstellen einer Klasse mit Vererbung im Authoring Tool
https://technet.microsoft.com/de-de/library/hh495486

Das Allererste, egal welchen Weg man nimmt (eine bestehende Klasse erweitert oder eine neuen Klasse erstellen), ist die Erstellung eines eigenen Management Packs, in dem alle Anpassungen gespeichert werden und den man nachher auf dem Management Server importiert. Dies kann man entweder über das Menü „File -> New“ machen, oder über die Startseite, indem man auf „Create New Management Pack“ klickt:

CreateMP

In unserem Fall speichern wir alle spezifische Anpassungen in dem MP mit dem Namen „CustomIncidentMP“. Aus der Abbildung sind auch die weiteren Eigenschaften dieses MPs ersichtlich (Key Token ist „NULL“, Pfad, ob der MP versiegelt ist; Version usw.).

Als nächstes muss man die Klasse auswählen, die wir erweitern werden. Zu dem Zweck muss man in dem „Class Browser“ (unten rechts auf der o.g. Abbildung) das Drop-Down Menü auswählen, die „Incident Management Library“ auswählen und danach die „View“ (rechte Maustaste auf „Incident“) auswählen. Danach erscheint die Klasse links in dem Management Pack Explorer und wir können mit den Anpassungen starten:

authTool1

Aus dem Screenshot wird auch ersichtlich wie man die Klasse erweitert, indem man die Option „Extend class“ auswählt und die Anpassungen in dem neu erstellten MP speichert:

CustomMP

Danach erscheint die Erweiterung „POHN Incident Customization“ links in dem Management Pack Explorer und man kann einen entsprechenden Namen sowie eine Beschreibung eingeben. Anschliessend kann man mit der Erstellung der neuen Property (Option „Create Property“) weitermachen. Bei Bedarf kann man auch Beziehungen (z.B Affected User, Assigned to User, usw.) mit der Option „Create Relationship“ erstellen.

CreateProperty

Nachdem die neue Property erstellt wurde, kann man Sie beliebig konfigurieren. Man kann den Datentyp (String, Integer, Decimal, Double, Date Time, GUID oder Bool) konfigurieren, Beschreibung vergeben, Standardwert festlegen und noch viele andere Eigenschaften anpassen (Maximum Length, Maximum Value, Minimum Length, Minimum Value, Case Sensitive, etc.). Da in unserem Fall die Inventarnummer auch Buchstaben beinhalten kann, wählen wir „String“ als Datentyp aus:

PropertyDetails

Somit haben wir die Klasse „Incident“ mit der Property „Inventar_Nummer“ erweitert.

 

Erweiterung der Incident-Form für die Klasse „Incident“

Nachdem die Klasse „Incident“ selbst erweitert wurde, ist die Form dran – man muss die neue Property in der Form unterbringen. Dies ist mit dem „Form Browser“ (unten rechts) möglich, nachdem man nach System.WorkItem.Incident.ConsoleForm sucht und die „View“ (rechte Maustaste auf „System.WorkItem.Incident.ConsoleForm“) selektiert. Danach erscheint die Klasse links in dem Management Pack Explorer wie aus dem Screenshot zu sehen ist. Mit einem Mausklick auf „Customize“ startet man die Formanpassungen (System.WorkItem.Incident.ConsoleForm (Customized) erscheint in dem Management Pack Explorer -> CustomIncidentMP -> Forms):

FormCustomization2

Nun muss man Platz für das neue Feld „Inventar Nummer“ schaffen. In unserem Fall werden wir das Feld „Classification“ kleiner machen und das neue Feld daneben stellen.

Ein Artikel von Cireson zeigt wie man genau die gewünschten Massen konfiguriert:

Adding a Field to the Right of an Existing Field – SCSM 2012 Authoring Tool
https://cireson.com/blog/adding-a-field-to-the-right-of-an-existing-field-scsm-2012-authoring-tool/

Da wir die Inventarnummer rechts von dem “Classification” Feld positionieren wollen, konzentrieren wir uns auf dem Absatz “To Add a Text Box to the Right of the [Classification] Field”.

Wir passen zuerst die Einstellungen für den Titel (Label) “Classification” an, indem wir das Element auswählen und unter Details die Werte bearbeiten:

ClassificationLabel

Anschliessend konfigurieren wir auch die Massen für das Feld (List Picker) „Classification“ selbst:

ClassificationListPicker

Nun haben wir genügend Platz zwischen „Classification“ und „Source“ für unser Feld.

Als nächstes muss man oben rechts in dem „Form Customization Toolbox“ das Label auswählen, es über den Titel und das Feld „Classification“ ziehen, bis diese in Blau markiert werden und danach es ablegen:

DragandDrop

So sieht das neue Label nach dem Ablegen aus (man braucht sich zu dem Zeitpunkt keine Sorgen, um die Position machen, da diese nach der Anpassung der Massen ändert):

DragandDrop2

Danach ziehen wir aus dem „Form Customization Toolbox“ die „Text Box“ und legen diese nach dem gleichen Verfahren ab (über den Titel, das Feld „Classification“ und das neue Label ziehen, bis diese Blau markiert werden):

DragandDrop3

So sieht es danach aus:

DragandDrop4

Nun können wir die Massen der beiden Elemente („Label“ und „Text Box“) anpassen. Auch hier ist zu empfehlen die Werte von Cireson zu nehmen, das diese für eine perfekte Anordnung der Felder und Titel sorgen. So bearbeiten wir die beiden Elemente:

  • Einstellungen für den Titel („Label“)

 Content: Inventory Number (Name des Felds)

LabelProp

  • Einstellungen für die “Text Box”

TextProp

Man muss auch noch unter “Text” den Inhalt (TextBox_1) löschen und danach die Verbindung zwischen dem Feld und der neuen Property erstellen, indem man das Parameter „Binding Path“ konfiguriert:

BindingPath

So sieht das Ergebnis nach dem Speichern aus:

ReadyFields

 

Management Pack versiegeln und importieren

Bevor man den MP versiegelt, muss man sicherstellen, dass die im MP gespeicherten Anpassungen im Service Manager tatsächlich korrekt erscheinen. Sobald der MP unversiegelt ist, kann man bei Bedarf noch Änderungen vornehmen.

Also man importiert den MP unversiegelt, stellt sicher, dass das Ergebnis zufriedenstellend ist, löscht den importierten unversiegelten MP, versiegelt den (im Authoring Tool, rechte Maustaste auf dem MP, „seal Management Pack“ auswählen) und importiert diesen anschliessend wieder auf dem Management Server.

Mehr Informationen zum Thema „Versigeln von Management Packs im SCSM“ findet man in den folgenden Microsoft Artikeln:

How to Seal a Service Manager Management Pack
https://technet.microsoft.com/en-us/library/hh495605.aspx?f=255&MSPPError=-2147217396

und

How to: Create a Public/Private Key Pair
https://msdn.microsoft.com/en-us/library/6f05ezxy(v=vs.110).aspx

Das Endergebnis ist eine an den Kundenanforderungen angepasste Incident-Form:

Incident

Was noch gemacht werden kann, so dass die Benutzer das Feld auf dem Self-Service Portal selbst ausfüllen können, sollte schon bekannt sein – Request Offering mit einer Incident-Vorlage und ein entsprechendes Service Offering.

Diese kurze Anleitung zeigt nicht nur das enorme Anpassungspotential vom Service Manager, sondern auch wie flexibel man mit dem SCSM Authoring Tool arbeiten kann.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.