En este pequeño artículo vamos a ver como crear un Management Pack (MP) para añadir grupos de soporte que se utilizarán para resolver incidencias de Microsoft System Center Service Manager. (Probado para las versiones 2010 y 2012). 


Para comenzar deberemos crear un archivo con extensión .xml. 

Podemos usar muchas herramientas como por ejemplo GVIM o un simple Notepad. 

El XML tendrá una estructura mínima como la que se muestra a continuación:

<Datos del ManagementPack a XML>

<Manifest>

<Identity>

<ID> NOMBRE DEL MP</ID>

<Version>Numero de Version</Version>

</Identity>

<Name> Nombre del Management Pack</Name>

            <References>

<Reference Alias="System.WorkItem.Incident.Library">

<ID>System.WorkItem.Incident.Library</ID>

<Version>7.0.5244.0</Version>

<PublicKeyToken>tokenpublico</PublicKeyToken>

</Reference>

</Manifest>

<TypeDefinitions>

<EntityTypes>

<EnumerationTypes>

<EnumerationValue ID="nombreobjeto.Enum" Accessibility="Public" Parent="System.WorkItem.Incident.Library!IncidentResolutionCategoryEnum" Ordinal="0" />

</EnumerationTypes>

</EntityTypes>

</TypeDefinitions>

<LanguagePacks>

<LanguagePack ID="ENU" IsDefault="true">

<DisplayStrings>

<DisplayString ElementID="nombreobjeto.Enum">

<Name>Nombre a mostrar para el objeto</Name>

</DisplayString>

</DisplayString>

</LanguagePacks>

</ManagementPack>


Vamos a mirar alguna de estas etiquetas y su contenido.

Comenzamos por el número de versión. El número de versión parte del “1.0.0.0” y se incrementa de la manera que se crea conveniente, en mi caso sigo la nomenclatura lógica de comenzar por “1.0.0.0”, pasar a “1.0.0.1” e ir subiendo y en función del tamaño de la modificación subo uno u otro. Por ejemplo, para crear una modificación en la que se añade una nueva empresa solo incrementaré el último dígito “1.0.0.1” pero en caso de incluir varias modificaciones, o subdivisiones modificaré “1.0.1.0”, solo las modificaciones muy grandes merecen un cambio en el último nivel “1.1.0.0”.

Las etiquetas <ID> NOMBRE DEL MP</ID> y <Name> Nombre del Management Pack</Name> incluyen el nombre del Management Pack y en principio ambos pueden contener el mismo nombre aunque es el segundo, el “Name” el que muestra el nombre que se verá en la consola. Lo mejor es usar nombes identificativos.

La etiqueta “<EnumerationValue ID="nombreobjeto.Enum" Accessibility="Public" Parent="System.WorkItem.Incident.Library!IncidentResolutionCategoryEnum" Ordinal="0" />” incluirá un único elemento pero se podrán añadir tantos encadenados como se deseen. Solo se deberán seguir tres reglas básicas:

  • El EnumerationValue ID debe ser una cadena única como por ejemplo "nombreobjeto.Enum" o "soportered.Enum" en la que no se contendrán espacios.
  • Se deberá proporconar siempre un nivel superior al que se hará referencia con la cadena “Parent” y que por ejemplo, en el caso de los incidentes se tendrá el siguiente esquema: "System.WorkItem.Incident.Library!IncidentResolutionCategoryEnum".
  • Siempre que se añada un nuevo elemento deberá tener un ordinal superior al anerior. Por ejemplo: Ordinal="0" irá seguido de Ordinal="1".

Las últimas etiquetas de interés son las que hacen visible al elemento de cara al usuario: Estas son las “<DisplayStrings>” y estarán compuestas de las secciones “DisplayString ElementID” y “Name”. Estas tienen dos funciones diferentes:

  • El DisplayString ElementID hace referencia al “EnumerationValue ID” de la sección anterior y se usa para vincular el elemento con su forma visible. Por ejemplo:  "DepartamentoSistemas.Enum">
  • El “Name” que es la cadena de texto que se debe mostrar como nombre del elemento. Por ejemplo: “Departamento de Sistemas”.

Con esto ya tenemos una idea básica de como crear este MP y vamos a ver como quedaría un MP para dos elementos.

A continuación vamos a ver un ejemplo en el que se añaden dos grupos de soporte a los existentes en SCSM:

<ManagementPack ContentReadable="true" SchemaVersion="2.0" OriginalSchemaVersion="1.1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<Manifest>

<Identity>

<ID> SoporteExternoRedesVoz </ID>

<Version>1.0.0.0</Version>

</Identity>

<Name>Soporte Externo Redes y Voz</Name>

            <References>

<Reference Alias="System.WorkItem.Incident.Library">

<ID>System.WorkItem.Incident.Library</ID>

<Version>7.0.5244.0</Version>

<PublicKeyToken>tokenpublico</PublicKeyToken>

</Reference>

</Manifest>

<TypeDefinitions>

<EntityTypes>

<EnumerationTypes>

<EnumerationValue ID="TecnicoTelefonia.Enum" Accessibility="Public" Parent="System.WorkItem.Incident.Library!IncidentResolutionCategoryEnum" Ordinal="0" />

</EnumerationTypes>

<EnumerationTypes>

<EnumerationValue ID="TecnicoRedes.Enum" Accessibility="Public" Parent="System.WorkItem.Incident.Library!IncidentResolutionCategoryEnum" Ordinal="1" />

</EnumerationTypes>

</EntityTypes>

</TypeDefinitions>

<LanguagePacks>

<LanguagePack ID="ENU" IsDefault="true">

<DisplayStrings>

<DisplayString ElementID="TecnicoTelefonia.Enum">

<Name>Tecnico de Telefonia</Name>

</DisplayString>

<DisplayStrings>

<DisplayString ElementID="TecnicoRedes.Enum">

<Name>Tecnico de Redes</Name>

</DisplayString>

</DisplayString>

</LanguagePacks>

</ManagementPack> 

Hay que tener un tema muy claro y es que si utilizamos dos veces un mismo número de versión machacará lo anterior y podemos encontrarnos con casos en los que dupliquemos datos.