4 Using Default Templates

This chapter provides details on the default ticket templates shipped along with the ServiceNow Connector. The ticket templates specify the mappings between an Enterprise Manager incident and underlying event attributes and ServiceNow ticket attributes.

Template Process

All out-of-box templates cause the following actions to occur when a you create a ticket for an incident:

  • Write incident information to Description (ServiceNow ticket description).

  • Set the ServiceNow ticket short description based on the incident message.

The out-of-box templates are as follows:

  • serviceNowIncidentCreateAndUpdate.xsl

  • serviceNowIncidentCreateUpdateAndClose.xsl

  • serviceNowIncidentCreateUpdateAndResolve.xsl

serviceNowIncidentCreateAndUpdate.xsl

This template will create Oracle Enterprise Incidents as tickets in ServiceNow. If the severity is clear in Oracle Enterprise Manager, it will update the ServiceNow ticket notes, but not the status.

serviceNowIncidentCreateUpdateAndClose.xsl

This template will create Oracle Enterprise Incidents as tickets in ServiceNow. If the severity is clear in Oracle Enterprise Manager, it will update the ServiceNow ticket notes and set the status to closed.

serviceNowIncidentCreateUpdateAndResolve.xsl

This template will create Oracle Enterprise Incidents as tickets in ServiceNow. If the severity is clear in Oracle Enterprise Manager, it will update the ServiceNow ticket notes and set the status to resolved.

Reading Ticket Templates

The following table illustrates the creation of a ticket using serviceNowCreateUpdateAndClose.xsl. This illustration will help you to read a ticket template. In the tables, * denotes a literal string and ** indicates if the attribute applies. Additionally, the table also shows ServiceNow ticket attributes and corresponding Enterprise Manager incident values for ticket creation mappings.

Ticket creation mappings are the same for serviceNowCreateAndUpdate.xsl andserviceNowCreateUpdateAndResolve.xsl

Note:

ServiceNow Ticket Attributes for which no values are needed are not mentioned in the table.

ServiceNow Ticket Attributes Enterprise Manager incident Attributes Value
Impact $severity This is the measure of the business critical of the affected service. This maps directly to the severity of the Oracle Enterprise Manager incident.
urgency $priority This is the extent to which the resolution of the incident can bear delay. This maps directly to the priority of the Oracle Enterprise Manager incident.
short_description Summary Summary – The details about the incident that has fired
description

Summary

Severity Code

Priority

Notification Rule Name

Notification Rule Owner

Target Type

Target Name

Obj Owner

Target Properties

Last Updated Date

Incident URL

Summary – The details about the incident that has fired

Severity Code – The severity of the incident in Oracle Enterprise Manager

Priority – The priority of the incident in Oracle Enterprise Manager

Notification Rule Name – Name of the rule that created the ticket (Auto ticketing only)

Notification Rule Owner – Name of the user that owns the rule that created the ticket (Auto ticketing only)

Target Type – The type of target that the incident fired on

Target Name – The name of the target that the incident fired on

Obj Owner – Name of the user that owns the object the incident is fired on

Target Properties – Additional names and values about the incident. Includes things like host, version, OS and platform

Last Updated Date – Date the incident was created in Oracle Enterprise Manager

Incident URL – A URL link that directs the user to the Oracle Enterprise Manager Incident

Use the mapping table above as a reference to read the following XSLT file.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:emcf="http://xmlns.oracle.com/sysman/connector" version="1.0">
  <xsl:template match="emcf:EMIncident">
    <!-- Please remember to backup all files before editing -->
    <!--
        This area is where variables are set to be used in the rest of the template.
        By default, there are three variables set:
          * Action: Used to figure out if the connector is 'creating' or 'updating' or 'closing' the ServiceNow Ticket.
          * Severity: Used to set the Impact of the ServiceNow ticket.
          * Priority: Used to set the Urgency of the ServiceNow ticket.

          If you want to add or change variables, do so below.
       -->
    <xsl:variable name="action">
      <xsl:choose>
        <xsl:when test="normalize-space(emcf:TicketID) = ''">CREATE</xsl:when>
        <xsl:when test="(emcf:SystemAttributes/emcf:SeverityCode = 'CLEAR')">CLOSE</xsl:when>
        <xsl:otherwise>UPDATE</xsl:otherwise>
      </xsl:choose>
    </xsl:variable>
    <xsl:variable name="severity">
      <xsl:choose>
        <xsl:when test="emcf:SystemAttributes/emcf:SeverityCode = 'FATAL'">1</xsl:when>
        <xsl:when test="emcf:SystemAttributes/emcf:SeverityCode = 'CRITICAL'">1</xsl:when>
        <xsl:when test="emcf:SystemAttributes/emcf:SeverityCode = 'WARNING'">2</xsl:when>
        <xsl:when test="emcf:SystemAttributes/emcf:SeverityCode = 'ADVISORY'">2</xsl:when>
        <xsl:otherwise>3</xsl:otherwise>
      </xsl:choose>
    </xsl:variable>
    <xsl:variable name="priority">
      <xsl:choose>
        <xsl:when test="emcf:SystemAttributes/emcf:Priority = 'Urgent'">1</xsl:when>
        <xsl:when test="emcf:SystemAttributes/emcf:Priority = 'Very High'">2</xsl:when>
        <xsl:when test="emcf:SystemAttributes/emcf:Priority = 'High'">2</xsl:when>
        <xsl:when test="emcf:SystemAttributes/emcf:Priority = 'Medium'">3</xsl:when>
        <xsl:when test="emcf:SystemAttributes/emcf:Priority = 'Low'">3</xsl:when>
        <xsl:otherwise>3</xsl:otherwise>
      </xsl:choose>
    </xsl:variable>
    <Message>
      <!--
          The following areas (Method, Variables, and Headers) should not be edited.
          They are used to make communication work between Oracle Enterprise Manager and ServiceNow.
        -->
      <Method>
        <xsl:choose>
          <xsl:when test="$action = 'CREATE'">POST</xsl:when>
          <xsl:when test="$action = 'UPDATE'">PUT</xsl:when>
          <xsl:when test="$action = 'CLOSE'">PUT</xsl:when>
          <xsl:otherwise>ERROR</xsl:otherwise>
        </xsl:choose>
      </Method>
      <Variables>
        <Variable>
          <Name>TKT_KEY</Name>
          <Value>
            <xsl:value-of select="translate(substring-after(substring-before(emcf:TicketID, ')'), '(' ) ,'ABCDEF','abcdef')" />
          </Value>
        </Variable>
      </Variables>
      <Headers></Headers>
      <!--
        The body is used to send data to ServiceNow. By default, the connector sends data either 'On Create', 'On Update', or 'On Close'.

        Fields that are sent when the ticket is created are found under the following header: <xsl:if test="$action = 'CREATE'">
        Fields that are sent when the ticket is updated are found under the following header: <xsl:if test="$action = 'UPDATE'">
        Fields that are sent when the ticket is closed are found under the following header: <xsl:if test="$action = 'CLOSE'">

        There are a number of fields that are sent by default, but there are also a number of fields that are not.
        These fields require manual configuration and are commented out below.
        To enable these fields, fill in the data required, and remove the comment brackets.

        Example:
        If you wanted to add a "Caller" of "John Smith" who has an ID of "john.smith" you would uncomment that line and replace "CALLER-ID" with "john.smith".
        The new line would look like this:
          <string name="caller_id">john.smith</string>
        -->
      <Body>
        <object>
          <xsl:if test="$action = 'CREATE'">
            <!--
              Priority in ServiceNow is calculated based on impact and urgency (the following two fields).
              This is how they are mapped:
                Impact 1 (High) & Urgency 1 (High) = Priority 1 (Critical)
                Impact 1 (High) & Urgency 2 (Medium) = Priority 2 (High)
                Impact 1 (High) & Urgency 3 (Low) = Priority 3 (Moderate)
                Impact 2 (Medium) & Urgency 1 (High) = Priority 2 (High)
                Impact 2 (Medium) & Urgency 2 (Medium) = Priority 3 (Moderate)
                Impact 2 (Medium) & Urgency 3 (Low) = Priority 4 (Low)
                Impact 3 (Low) & Urgency 1 (High) = Priority 3 (Moderate)
                Impact 3 (Low) & Urgency 2 (Medium) = Priority 4 (Low)
                Impact 3 (Low) & Urgency 3 (Low) = Priority 5 (Planning)

              The default mappings of "impact" are based on the severity of the Oracle Enterprise Manager incident. They are set in the severity variable above.
              The default mappings of "urgency" are based on the priority of the Oracle Enterprise Manager incident. They are set in the priority variable above.
            -->
            <!-- This is the measure of the business criticality of the affected service. This maps directly to the "severity" of the Oracle Enterprise Manager incident. -->
            <string name="impact">
              <xsl:value-of select="$severity" />
            </string>
            <!-- This is the extent to which resolution of the incident can bear delay. This maps directly to the "priority" of the Oracle Enterprise Manager incident. -->
            <string name="urgency">
              <xsl:value-of select="$priority" />
            </string>
            <!-- This is a brief description of the incident in Oracle Enterprise Manager. -->
            <string name="short_description">
              <xsl:value-of select="emcf:SystemAttributes/emcf:Summary" />
            </string>
            <!-- This is a detailed description of the incident in Oracle Enterprise Manager. -->
            <string name="description">Incident created in Oracle Enterprise Manager: <xsl:value-of select="emcf:SystemAttributes/emcf:Summary" />
Original Severity: <xsl:value-of select="emcf:SystemAttributes/emcf:SeverityCode" />
Original Priority: <xsl:value-of select="emcf:SystemAttributes/emcf:Priority" />
<xsl:choose>
  <xsl:when test="normalize-space(emcf:NotificationRuleName) != ''">
Incident trigged by the following rule: <xsl:value-of select="emcf:NotificationRuleName" />
  </xsl:when>
</xsl:choose>
<xsl:choose>
  <xsl:when test="normalize-space(emcf:NotificationRuleOwner) != ''">
Rule is owned by: <xsl:value-of select="emcf:NotificationRuleOwner" />
  </xsl:when>
</xsl:choose>

Target Type: <xsl:value-of select="emcf:SystemAttributes/emcf:SourceInfo/emcf:TargetInfo/emcf:TargetType" />
Target Name: <xsl:value-of select="emcf:SystemAttributes/emcf:SourceInfo/emcf:TargetInfo/emcf:TargetName" />
Original Owner: <xsl:value-of select="emcf:SystemAttributes/emcf:SourceInfo/emcf:SourceObjInfo/emcf:ObjOwner" />

Additional Properties: <xsl:for-each select="emcf:SystemAttributes/emcf:SourceInfo/emcf:TargetInfo/emcf:TargetProperty">
  * <xsl:value-of select="./emcf:Name" />: <xsl:value-of select="./emcf:Value" />
</xsl:for-each>

This incident was created at: <xsl:value-of select="emcf:SystemAttributes/emcf:LastUpdatedDate" />
To manage the incident in Oracle Enterprise Manager, navigate to the following URL: <xsl:value-of select="emcf:SystemAttributes/emcf:IncidentURL" /></string>
            <!-- Uncomment category below if you have created a custom category for EM Incidents in ServiceNow.  Change the text "EM Incident" to the name of your custom category if you have created your own.  To create a category in ServiceNow, create a new incident or click on an existing incident. Right click the label "Category" (not the drop-down box), then select "Configure Choices."  Enter the name of the new category, then click "Add." -->
            <!--
              <string name="category">EM Incident</string>
            -->
            <!-- This is the person who reported or is affected by the incident. To lookup a user ID enter ServiceNow, go to System Security > Users and select the user you want. Copy the "User ID" field and replace "CALLER-ID" below. -->
            <!--
              <string name="caller_id">CALLER-ID</string>
            -->
            <!-- This is the subcategory the incident will be filed under. Ensure the subcategory is a valid subcategory of "category" listed above. Replace "SUBCATEGORY-NAME" with the name of the subcategory. -->
            <!--
              <string name="subcategory">SUBCATEGORY-NAME</string>
            -->
            <!-- This is the service affected by the incident. Replace "SERVICE-NAME" with the name of the service. -->
            <!--
              <string name="business_service">SERVICE-NAME</string>
            -->
            <!-- This is the item or service affected by the incident. In ServiceNow this is labeled as "Configuration Item". Replace "CONFIGURATION-ITEM-NAME" with the name of the configuration item. -->
            <!--
              <string name="cmdb_ci">CONFIGURATION-ITEM-NAME</string>
            -->
            <!-- This describes how the incident was reported. Replace "CONTACT-TYPE" with the type of contact used. -->
            <!--
              <string name="contact_type">CONTACT-TYPE</string>
            -->
            <!-- This is the group that the incident is assigned to. Replace "ASSIGNMENT-GROUP-NAME" with the name of the assignment group. -->
            <!--
              <string name="assignment_group">ASSIGNMENT-GROUP-NAME</string>
            -->
            <!-- This is the user the incident is assigned to. To lookup a user ID enter ServiceNow, go to System Security > Users and select the user you want. Copy the "User ID" field and replace "CALLER-ID" below. -->
            <!--
              <string name="assigned_to">USER-ID</string>
            -->
            <!-- This is the ID of the parent incident (if one exists). Parent incidents can be used to collect incidents for the same root issue. Replace "PARENT-ISSUE-ID" with the ID of the parent incident. -->
            <!--
              <string name="parent_incident">PARENT-ISSUE-ID</string>
            -->
            <!-- This is the ID of the related problem (if one exists). A problem is a cause of more than one incident. Replace "PROBLEM-ID" with the ID of the related problem. -->
            <!--
              <string name="problem_id">PROBLEM-ID</string>
            -->
            <!-- This is the ID of the related change request (if one exists). Replace "CHANGE-REQUEST-ID" with the ID of the related change request. -->
            <!--
              <string name="rfc">CHANGE-REQUEST-ID</string>
            -->
            <!-- This is the ID of the change request that caused the incident (if one exists). Replace "CHANGE-REQUEST-ID" with the ID of the related change request that caused the incident. -->
            <!--
              <string name="caused_by">CHANGE-REQUEST-ID</string>
            -->
            <!-- If set to true, this field will automatically create a draft of a knowledge article when the incident is closed. Uncomment to enable. -->
            <!--
              <string name="knowledge">true</string>
            -->
            <!-- This is where the caller or service is located. Replace "LOCATION" with the string related with the location of the incident. -->
            <!--
              <string name="location">LOCATION</string>
            -->
          </xsl:if>
          <xsl:if test="$action = 'UPDATE'">
            <!--
              Priority in ServiceNow is calculated based on impact and urgency (the following two fields).
              This is how they are mapped:
                Impact 1 (High) & Urgency 1 (High) = Priority 1 (Critical)
                Impact 1 (High) & Urgency 2 (Medium) = Priority 2 (High)
                Impact 1 (High) & Urgency 3 (Low) = Priority 3 (Moderate)
                Impact 2 (Medium) & Urgency 1 (High) = Priority 2 (High)
                Impact 2 (Medium) & Urgency 2 (Medium) = Priority 3 (Moderate)
                Impact 2 (Medium) & Urgency 3 (Low) = Priority 4 (Low)
                Impact 3 (Low) & Urgency 1 (High) = Priority 3 (Moderate)
                Impact 3 (Low) & Urgency 2 (Medium) = Priority 4 (Low)
                Impact 3 (Low) & Urgency 3 (Low) = Priority 5 (Planning)

              The default mappings of "impact" are based on the severity of the Oracle Enterprise Manager incident. They are set in the severity variable above.
              The default mappings of "urgency" are based on the priority of the Oracle Enterprise Manager incident. They are set in the priority variable above.
            -->
            <!-- This is the measure of the business criticality of the affected service. This maps directly to the "severity" of the Oracle Enterprise Manager incident. -->
            <string name="impact">
              <xsl:value-of select="$severity" />
            </string>
            <!-- This is the extent to which resolution of the incident can bear delay. This maps directly to the "priority" of the Oracle Enterprise Manager incident. -->
            <string name="urgency">
              <xsl:value-of select="$priority" />
            </string>
            <!-- <string name="work_notes">This leaves a note on the ticket to give more details of work done.</string> -->
            <string name="work_notes">The incident was updated in Oracle Enterprise Manager.
<xsl:value-of select="emcf:SystemAttributes/emcf:Summary" />

Severity in Oracle Enterprise Manager is currently: <xsl:value-of select="emcf:SystemAttributes/emcf:SeverityCode" />. Impact is now <xsl:value-of select="$severity" />.
Priority in Oracle Enterprise Manager is currently: <xsl:value-of select="emcf:SystemAttributes/emcf:Priority" />. Urgency is now <xsl:value-of select="$priority" />.
Owner in Oracle Enterprise Manager is currently: <xsl:value-of select="emcf:SystemAttributes/emcf:SourceInfo/emcf:SourceObjInfo/emcf:ObjOwner" />

This incident was updated in Oracle Enterprise Manager at: <xsl:value-of select="emcf:SystemAttributes/emcf:LastUpdatedDate" /></string>
          </xsl:if>
          <xsl:if test="$action = 'CLOSE'">
            <!-- This is the state of the ticket. By default, this is "7" which is equivalent to closed. -->
            <number name="state">7</number>
            <!-- This is the code used to described why the ticket was resolved or closed. -->
            <string name="close_code">Closed/Resolved by Caller</string>
            <!-- This leaves a note on the ticket to give more details of why the ticket was resolved or closed. -->
            <string name="close_notes">Ticket has been closed by Oracle Enterprise Manager.</string>
            <!-- This leaves a note on the ticket to give more details of work done. -->
            <string name="work_notes">The incident was updated in Oracle Enterprise Manager.
<xsl:value-of select="emcf:SystemAttributes/emcf:Summary" />

Severity in Oracle Enterprise Manager is currently: <xsl:value-of select="emcf:SystemAttributes/emcf:SeverityCode" />
Priority in Oracle Enterprise Manager is currently: <xsl:value-of select="emcf:SystemAttributes/emcf:Priority" />
Owner in Oracle Enterprise Manager is currently: <xsl:value-of select="emcf:SystemAttributes/emcf:SourceInfo/emcf:SourceObjInfo/emcf:ObjOwner" />

This incident was updated in Oracle Enterprise Manager at: <xsl:value-of select="emcf:SystemAttributes/emcf:LastUpdatedDate" />
Ticket has been closed by Oracle Enterprise Manager.</string>
            <!-- This is the person who closed or resolved the ticket. To lookup a user ID enter ServiceNow, go to System Security > Users and select the user you want. Copy the "User ID" field and replace "USER-ID" below. -->
            <!--
              <string name="resolved_by">USER-ID</string>
            -->
          </xsl:if>
        </object>
      </Body>
    </Message>
  </xsl:template>
</xsl:stylesheet>

Customizing Ticket Templates

If the out-of-box ticket templates do not satisfy your requirements, you can modify them. To do this, Oracle recommends that you use one of the existing templates as the base template. Copy this ticket template to a new file, modify, and register the new ticket template.

You can edit a template directly on Enterprise Manager instead of using the EM CLI command. See Editing Templates and Restoring Templates for more information.

In most cases, when you modify the ticket template, you might only be changing the mappings. The following examples illustrate this concept:

Example 4-1 Create knowledge base article to closed ServiceNow ticket

ServiceNow allows you to create a knowledge base article once a ticket is closed. To enable this for all tickets created by Oracle Enterprise Manager, find the following code in the template and remove the comment brackets (<!-- and -->) and set the date:

<!--    
<string name="knowledge">true</string>
-->

Example 4-2 Change Warning tickets to be High Impact

ServiceNow calculates priority based off the values of impact (based on Oracle Enterprise Manager severity) and priority (based on Oracle Enterprise Manager urgency). In this example, we want to amplify the priority by saying a ‘Warning’ in Oracle Enterprise Manager is a ‘High’ impact in ServiceNow. By default, it is set to ‘Medium’.

To do that we need to find our variable for severity, which is located at the top of the template. Find the following code:

<xsl:variable name="severity">      
 <xsl:choose>       
  <xsl:when test="emcf:SystemAttributes/emcf:SeverityCode =  'FATAL'">1</xsl:when>        
  <xsl:when test="emcf:SystemAttributes/emcf:SeverityCode = 'CRITICAL'">1</xsl:when>        
  <xsl:when test="emcf:SystemAttributes/emcf:SeverityCode = 'WARNING'">2</xsl:when>        
  <xsl:when test="emcf:SystemAttributes/emcf:SeverityCode = 'ADVISORY'">2</xsl:when>       
  <xsl:otherwise>3</xsl:otherwise>      
 </xsl:choose>
</xsl:variable>

Notice right now, a severity of warning is set to 2. That means that the impact is a medium in ServiceNow. If we want to raise that impact, we simply need to change that 2 to a 1. Now all warning tickets will have higher impact, affecting their priority in ServiceNow.

Defining New Templates

The out-of-box templates are based on the default forms. If the new ticket templates you define are based on these forms, Customizing Ticket Templates applies.

However, if you use a different form, you need to define a new ticket template.

Enterprise Manager Attributes

Table 4-1 provides the Enterprise Manager fields that you can map when using ServiceNow:

Table 4-1 Enterprise Manager Attributes

Data Fields Description

SystemAttributes/Owner

For auto-ticketing, this is the incident rule owner.

TicketID

Identifies the ticket associated with the current incident (available after ticket creation).

TargetType

Type of target that the incident is associated with, such as host.

TargetName

Name of the target that the incident is associated with. For example, Database1 or stadc40.example.com.

TargetProperties

TargetProperties store environmental or usage context information specific to the target. For example, for Host Target, the name /value pair of TargetProperties are:

  • Comment — Host running the management service and repository.

  • Contact — John Doe

  • Deployment Type — Production

  • Line of Business — Development

  • Location — Redwood Shores

These are out-of-box user-defined target properties. If additional target properties are added, they are displayed with ticket information.

SystemAttributes/Summary

Description of the incident. For example: CPU Utilization is 100%, crossed warning (80) or critical (95) threshold.

Priority

Priority of the incident from low to urgent

SystemAttributes/Severity

Severity of the incident: critical, warning, clear, or down.

CollectionTime

Timestamp of an incident occurrence.

SystemAttributes/IncidentURL

URL to the incident details page of the incident.

NotificationRuleName

Name of the incident rule that generated the notification during auto-ticketing.

TargetTimezone

Timezone of the target associated with the incident.

SystemAttributes/Acknowledge

A flag indicating whether or not the incident has been acknowledged.

SystemAttributes/AutoClose

A flag indicating if an incident is auto closed by the system, or it has to be manually closed by users.

SystemAttributes/Category

An optional list of categories of the incidents.

SystemAttributes/CreationDate

The time when the incident is created by associating event to incident.

SystemAttributes/Escalated

A flag indicating whether or not the incident has been escalated.

SystemAttributes/EscalationLevel

The hierarchical level of escalation that has been made to this incident.

SystemAttributes/IncidentID

The ID of an incident.

SystemAttributes/LastModifiedBy

User who last modified the incident.

SystemAttributes/LastUpdatedDate

The time when the incident is last updated.

SystemAttributes/Priority

The priority order in which the issue should be resolved.

SystemAttributes/ResolutionState

The attribute used to track where the incident is in terms of resolution.

SystemAttributes/SeverityCode

Internal Severity value of the current event.

SystemAttributes/TicketStatus

If an external ticket is associated with the incident, the status of the ticket as assigned at an external help desk system, and updated in EM.

SystemAttributes/UpdatedAttributes

Updated Attributes of an Incident.

Format for Creating Ticket Templates

To create ticket templates for custom ServiceNow forms, adhere to the following format:

Example 4-3 Template Format for Custom ServiceNow Forms

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:emcf="http://xmlns.oracle.com/sysman/connector" version="1.0">
  <xsl:template match="emcf:EMIncident">
* [Insert any variables needed here] 
  <Message>
      <Method>
        <xsl:choose>
          <xsl:when test="$action = 'CREATE'">POST</xsl:when>
          <xsl:when test="$action = 'UPDATE'">PUT</xsl:when>
          <xsl:when test="$action = 'CLOSE'">PUT</xsl:when>         
          <xsl:otherwise>ERROR</xsl:otherwise>
        </xsl:choose>
      </Method>
      <Variables>
        <Variable>         
          <Name>TKT_KEY</Name>
          <Value>
            <xsl:value-of select="translate(substring-after(substring-
before(emcf:TicketID, ')'), '(' ) ,'ABCDEF','abcdef')" />
          </Value>
        </Variable>
      </Variables>     
      <Headers></Headers>
      <Body>
* [Insert body changes (details you are sending to ServiceNow) here]      
      </Body>
  </Message>
 </xsl:template>
</xsl:stylesheet>