<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Kevin Holman's OpsMgr Blog : Notification</title><link>http://blogs.technet.com/kevinholman/archive/tags/Notification/default.aspx</link><description>Tags: Notification</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Alert Notification Subscription Variables, and linking that to the console, database, and SDK</title><link>http://blogs.technet.com/kevinholman/archive/2009/09/23/alert-notification-subscription-variables-and-linking-that-to-the-console-database-and-sdk.aspx</link><pubDate>Wed, 23 Sep 2009 20:54:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3282762</guid><dc:creator>kevinhol</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3282762.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3282762</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3282762</wfw:comment><description>&lt;P&gt;Attached you will find a spreadsheet, with all the possible alert notification subscription variables that I am aware of.&amp;nbsp; In this spreadsheet, I link these to the same values in the Alert table of the DB, the alert view of the DB, the Console alert view, the SDK (Get-Alert), and lastly the new R2 Connector Key pairs.&lt;/P&gt;
&lt;P&gt;My thought was to better understand each data property type of an alert, and what you can managed, from each area.&amp;nbsp; Hope this is beneficial.&lt;/P&gt;
&lt;P&gt;Most of these are listed at my other blog post on alert description and notification variables:&amp;nbsp; &lt;A title=http://blogs.technet.com/kevinholman/archive/2007/12/12/adding-custom-information-to-alert-descriptions-and-notifications.aspx href="http://blogs.technet.com/kevinholman/archive/2007/12/12/adding-custom-information-to-alert-descriptions-and-notifications.aspx" mce_href="http://blogs.technet.com/kevinholman/archive/2007/12/12/adding-custom-information-to-alert-descriptions-and-notifications.aspx"&gt;http://blogs.technet.com/kevinholman/archive/2007/12/12/adding-custom-information-to-alert-descriptions-and-notifications.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Here is a sample shot of the spreadsheet tool:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AlertNotificationSubscriptionVariablesan_B58A/image_2.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AlertNotificationSubscriptionVariablesan_B58A/image_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AlertNotificationSubscriptionVariablesan_B58A/image_thumb.png" width=1028 height=330 mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/AlertNotificationSubscriptionVariablesan_B58A/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;See attached:&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3282762" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/kevinholman/attachment/3282762.ashx" length="16102" type="application/octet-stream" /><category domain="http://blogs.technet.com/kevinholman/archive/tags/Notification/default.aspx">Notification</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/Authoring/default.aspx">Authoring</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/connectors/default.aspx">connectors</category></item><item><title>Creating custom dynamic computer groups based on registry keys on agents</title><link>http://blogs.technet.com/kevinholman/archive/2009/06/10/creating-custom-dynamic-computer-groups-based-on-registry-keys-on-agents.aspx</link><pubDate>Wed, 10 Jun 2009 07:09:48 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3252822</guid><dc:creator>kevinhol</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3252822.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3252822</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3252822</wfw:comment><description>&lt;p&gt;I have had a few requests now for this, so I thought I would take the time to write up the process.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_30.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_thumb_14.png" width="527" height="389" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Lets say I have three support levels of servers:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Level 1&lt;/strong&gt; – servers critical to business operations (ex: customer facing web applications, SQL back-ends)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Level&lt;/strong&gt; &lt;strong&gt;2&lt;/strong&gt; – important servers (ex: messaging, internal apps)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Level 3&lt;/strong&gt; – non-essential servers (ex: non-critical or highly redundant internal apps)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Lets say we want to create overrides for certain rules…&amp;#160; where we will page on anything in Level 1 group, email notify on Level 2 group, and simply alert for Level 3.&amp;#160; Possibly we want to create views, and only see alerts for Level 1 servers.&amp;#160; Perhaps we wish to scope users so they only see Level 1 and Level 2 servers in the console?&lt;/p&gt;  &lt;p&gt;Well – the first step is to place these servers into groups.&lt;/p&gt;  &lt;p&gt;Sure – we can do this manually, with explicit assignments to the group.&amp;#160; But that is resource intensive over time, and we might miss one down the road.&amp;#160; I’d prefer to dynamically create the groups of Windows Computers based on a name…. but this can be difficult sometimes – where we don't have a solid naming scheme, or other criteria to group by.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I will demonstrate another way to accomplish this… by coming up with a business process to use a registry key on your managed servers, and collect this registry attribute with SCOM.&amp;#160; Then – use this Registry attribute for dynamic group memberships.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Ultimately – there are three simple steps to this process:&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;1.&amp;#160; Create registry keys on agents.&lt;/p&gt;    &lt;p&gt;2.&amp;#160; Extended a class with an attribute, to discover the registry keys and values.&lt;/p&gt;    &lt;p&gt;3.&amp;#160; Create dynamic groups based on the attribute values from the registry.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;It is just that simple.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;To get started – lets talk about our custom registry key.&amp;#160; For this example, I am going to create a new Key at HKLM\Software\ and call it “CompanyName”&lt;/p&gt;  &lt;p&gt;Next – in that key – I will create a new DWORD Value, named “SupportLevel”&lt;/p&gt;  &lt;p&gt;Lastly – I will assign a numeric value to “SupportLevel” on each server, either 1, 2, or 3.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_thumb.png" width="599" height="408" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;In my environment…. my Hyper-V servers are critical.&amp;#160; They host all of my VM’s, including many business critical applications.&amp;#160; Therefore – they will get Level 1.&lt;/p&gt;  &lt;p&gt;My Exchange 2007 servers handle all my mail traffic and notifications, so I will set their registry value to Level 2.&lt;/p&gt;  &lt;p&gt;My Exchange 2003 servers have been retired – for MP testing only… so we will set those to Level 3.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Here is a table that shows what I am planning:&lt;/strong&gt;&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="199"&gt;&lt;strong&gt;ServerName&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="199"&gt;&lt;strong&gt;SupportLevel&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;VS1&lt;/td&gt;        &lt;td valign="top" width="199"&gt;1&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;VS2&lt;/td&gt;        &lt;td valign="top" width="199"&gt;1&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;VS3&lt;/td&gt;        &lt;td valign="top" width="199"&gt;1&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;EX1CLN1&lt;/td&gt;        &lt;td valign="top" width="199"&gt;2&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;EX1CLN2&lt;/td&gt;        &lt;td valign="top" width="199"&gt;2&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;EXCAS&lt;/td&gt;        &lt;td valign="top" width="199"&gt;2&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;EX2CLN1&lt;/td&gt;        &lt;td valign="top" width="199"&gt;3&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;EX2CLN2&lt;/td&gt;        &lt;td valign="top" width="199"&gt;3&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;OWA&lt;/td&gt;        &lt;td valign="top" width="199"&gt;3&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;So – I get all my registry values set on all computers.&amp;#160; This is a big job at first, but it is a one time deal, and you can even script it if you are handy.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Next… we need to discover these registry entries in SCOM, as attributes of a class.&amp;#160; Then were can use that attribute to group objects.&amp;#160; Since I want Windows Computer objects in my groups (Windows Computer is a good object for most overrides, scoping, notifications…etc..) we would like to have these attributes added to the Windows Computer class.&lt;/p&gt;  &lt;p&gt;However – there is a problem.&amp;#160; The Windows Computer object is in a sealed MP.&amp;#160; We cannot just add information to that class as we would like.&amp;#160; Therefore – OpsMgr allows us to “Extend” an existing class… and add our custom attributes to it.&amp;#160; This “Extended” class is basically a copy of the existing class… it will have all the built in attributes of Windows Computer, and will also have our custom attribute properties.&amp;#160; It’s is easier to see it than to talk about it.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;First – in the Ops console – authoring pane – go to Attributes.&amp;#160; Create a new attribute.&amp;#160; I am going to call this one “SupportLevel”&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_thumb_1.png" width="681" height="598" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Next – choose “Registry” for the discovery type.&lt;/p&gt;  &lt;p&gt;Next – We need to pick the Target class.&amp;#160; We want Windows Computer.&amp;#160; Note – this will create a new class, named “Windows Computer_Extended” by default.&amp;#160; We can use this name, or you can rename this whatever you want.&amp;#160; It is your class.&amp;#160; I will leave it at the default.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_thumb_2.png" width="679" height="311" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Most important!&lt;/strong&gt;&amp;#160; Management Pack location.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;This is CRITICAL&lt;/font&gt;&lt;/strong&gt;.&amp;#160; Spend some time making sure you are creating these attributes in the correct location.&amp;#160; If you leave this MP unsealed XML…. then any groups you create that use these attributes, will have to be placed in this same MP.&amp;#160; Then – if you use these groups for Overrides – those overrides will be force to go in this same MP.&amp;#160; There is a “cardinal rule” in SCOM… objects in one unsealed MP cannot reference another unsealed MP.&amp;#160; So – we cannot have a group in one unsealed MP, and then use that group for an override in another unsealed override MP.&amp;#160; &lt;/p&gt;  &lt;p&gt;So – we have two choices.&amp;#160; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;1.&amp;#160; Keep an unsealed MP… and live with the fact that attribute, group, and override will all have to be placed here.&amp;#160; &lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;2.&amp;#160; Create the attribute and the dynamic group in the MP, then seal it.&amp;#160; Then – you can use this group in ANY of your override MP’s… for Exchange, SQL, etc…&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I &lt;strong&gt;&lt;em&gt;strongly&lt;/em&gt;&lt;/strong&gt; recommend option #2 for this exercise… but you can make this decision for yourself.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_thumb_4.png" width="500" height="394" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Ok…. I will choose Option #2 (seal the MP), so I will create a new MP just for this extended class, and groups.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;On the next screen – we can put in our registry information:&lt;/p&gt;  &lt;p&gt;In this example – I am looking for a registry Value (1, 2, or 3), and my attribute type is “Int” for integer.&lt;/p&gt;  &lt;p&gt;For the frequency, set this to a reasonable frequency to discover you machines as they come on to you network.&amp;#160; Typically, once per day is sufficient (86400 seconds)&amp;#160; Remember – this will run against ALL your Windows Computers… so never set this more frequent than once per hour… that creates unnecessary overhead.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_thumb_5.png" width="682" height="598" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Ok – lets examine our work!&lt;/p&gt;  &lt;p&gt;Go to Monitoring, Discovered Inventory, and change target type to our new class “Windows Computer_Extended”&lt;/p&gt;  &lt;p&gt;If you do this quickly – you may find it is empty.&amp;#160; This is what is happening behind the scenes:&amp;#160; All Windows Computers are now downloading our newly created MP.&amp;#160; They are going to run the registry attribute discovery, and submit their discovery data to the management server.&amp;#160; The Management Server will insert this discovery data in the database.&amp;#160; Over time, you will start to see all your Windows Computers pop into this class membership.&amp;#160; You will notice a new attribute now, in addition to all the existing Windows Computer attributes.&amp;#160; This attribute is “SupportLevel” and will be 1, 2, 3, or empty… depending on what each agent find in the registry.&lt;/p&gt;  &lt;p&gt;Now – I set my registry discovery to once per day…. so I will need to wait 24 hours before I can expect all my healthy agents to show up in this list.&amp;#160; To speed things up – I am going to bounce the HealthService on these example agents.&amp;#160; (Agents run all discoveries when a HealthService restarts, and then on their frequency schedule)&lt;/p&gt;  &lt;p&gt;Here is an example a few minutes after bouncing the HealthService on some agents:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_thumb_6.png" width="655" height="300" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Next on the list – create the groups.&amp;#160; I will create these in the same MP that the attributes exist in.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I will call my first group “CompanyName – Support Level 1 Servers Group”.&amp;#160; I like to append the word “Group” to all groups I create as a best practice.&amp;#160; This helps us determine this group class is actually a group when we see it in the list of classes in the UI.&amp;#160; I sure wish all MP authors would take this to heart, since every group is actually a singleton class.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_16.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_thumb_7.png" width="733" height="630" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;On the dynamic members screen – I will fins my “Windows Computer_Extended” class – and click Add.&amp;#160; What we now see – is that we have a new attribute to use, “Support Level”&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_18.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_thumb_8.png" width="562" height="303" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I will set this group to “SupportLevel Equals 1” and click OK.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_20.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_thumb_9.png" width="560" height="216" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now – I can right-click my new group – and choose “View Group Members”&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_22.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_thumb_10.png" width="322" height="213" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_32.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_thumb_15.png" width="509" height="414" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Yee-haw!&amp;#160; It works!&amp;#160; Now – I simply repeat this above step – creating groups for SupportLevel 2, and 3.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_26.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_thumb_12.png" width="263" height="208" /&gt;&lt;/a&gt; &lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_28.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_thumb_13.png" width="268" height="211" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now – that is done.&amp;#160; This is the area, that I recommend we stop… take a breather…. then seal the MP.&amp;#160; If you seal the MP – we will be able to use the groups for overrides in any other override MP.&amp;#160; If you choose not to seal the MP now… any overrides you use the groups for – will be forced into this same MP.&amp;#160; Please keep that in mind.&lt;/p&gt;  &lt;p&gt;Since I am harping on sealing the MP…. I am going to do a quick example of just that.&amp;#160; Jonathan Almquist has an excellent tutorial on sealing MP’s &lt;a href="http://blogs.technet.com/jonathanalmquist/archive/2008/08/19/seal-a-management-pack.aspx"&gt;HERE&lt;/a&gt; and we will use his example.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;**Note – when running the sn.exe commands to create our key…. we only need to do this one… not every time we want to seal an MP.&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;***Critical note – you need to keep a backup of this key… because it will be required for making updates to this MP in the future, re-sealing, and keeping the ability to upgrade the existing MP in production.&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;So, I create the folders, create the key using sn.exe, copy over the referenced MP’s from the RMS,&amp;#160; and now I am ready to seal.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;MPSeal.exe c:\mpseal\input\CompanyName.SupportLevel.MP.xml /I &amp;quot;c:\mpseal\mp&amp;quot; /Keyfile &amp;quot;c:\mpseal\key\PairKey.snk&amp;quot; /Company &amp;quot;CompanyName&amp;quot; /Outdir &amp;quot;c:\mpseal\output&amp;quot;&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Works great.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_24.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatingcustomdynamiccomputergroupsbased_144ED/image_thumb_11.png" width="457" height="241" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now – I can &lt;strong&gt;&lt;em&gt;delete&lt;/em&gt;&lt;/strong&gt; my unsealed MP from the management group, and import my sealed MP.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Phew.&amp;#160; All the heavy lifting is done.&amp;#160; Now… I have my groups… I can start setting up overrides using these groups, or scoping notifications.&amp;#160; &lt;/p&gt;  &lt;p&gt;On my &lt;strong&gt;Support Level 1 group&lt;/strong&gt; – I will use this to set up my pager Notification subscriptions to only page based on specific classes, and this group.&lt;/p&gt;  &lt;p&gt;On my &lt;strong&gt;Support Level 2 group&lt;/strong&gt; – I will use this to override important alerts to High Priority… because I am using High Priority as a filter for email notifications, per my previous blog post here:&amp;#160; &lt;a title="http://blogs.technet.com/kevinholman/archive/2008/06/26/using-opsmgr-notifications-in-the-real-world-part-1.aspx" href="http://blogs.technet.com/kevinholman/archive/2008/06/26/using-opsmgr-notifications-in-the-real-world-part-1.aspx"&gt;http://blogs.technet.com/kevinholman/archive/2008/06/26/using-opsmgr-notifications-in-the-real-world-part-1.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;On my &lt;strong&gt;Support Level 3 group&lt;/strong&gt; – I will use this group for tweaking/disabling rules and monitors for the group… turning off discoveries so they don't discover lab servers, scoping views, etc.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Maybe in my next post…. I will build on this MP… and show a really simple way to add the Health Service Watcher objects to these dynamic groups… for each Windows Computer object that is in the group – so we can use these groups for Heartbeat failure notifications.&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3252822" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/management+pack/default.aspx">management pack</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/Notification/default.aspx">Notification</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/Authoring/default.aspx">Authoring</category></item><item><title>Creating granular alert notifications - rule by rule, monitor by monitor</title><link>http://blogs.technet.com/kevinholman/archive/2008/10/12/creating-granular-alert-notifications-rule-by-rule-monitor-by-monitor.aspx</link><pubDate>Sun, 12 Oct 2008 20:56:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3135708</guid><dc:creator>kevinhol</dc:creator><slash:comments>13</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3135708.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3135708</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3135708</wfw:comment><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h4&gt;Using OpsMgr Notifications in the real world - Part 2&lt;/h4&gt;  &lt;p&gt;This is a continuation of my advanced notifications posts.... from &lt;a title="http://blogs.technet.com/kevinholman/archive/2008/06/26/using-opsmgr-notifications-in-the-real-world-part-1.aspx" href="http://blogs.technet.com/kevinholman/archive/2008/06/26/using-opsmgr-notifications-in-the-real-world-part-1.aspx"&gt;http://blogs.technet.com/kevinholman/archive/2008/06/26/using-opsmgr-notifications-in-the-real-world-part-1.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;There are a couple resources on the web about how to do this from C# and Powershell.&amp;#160; The best sites I have seen are at:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/jakuboleksy/archive/2007/01/18/notification-subscriptions.aspx" href="http://blogs.msdn.com/jakuboleksy/archive/2007/01/18/notification-subscriptions.aspx" mce_href="http://blogs.msdn.com/jakuboleksy/archive/2007/01/18/notification-subscriptions.aspx"&gt;http://blogs.msdn.com/jakuboleksy/archive/2007/01/18/notification-subscriptions.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;and&lt;/p&gt;  &lt;p&gt;&lt;a title="http://code4ward.net/cs2/blogs/code4ward/archive/2007/09/19/set-notificationforalert.aspx" href="http://code4ward.net/cs2/blogs/code4ward/archive/2007/09/19/set-notificationforalert.aspx" mce_href="http://code4ward.net/cs2/blogs/code4ward/archive/2007/09/19/set-notificationforalert.aspx"&gt;http://code4ward.net/cs2/blogs/code4ward/archive/2007/09/19/set-notificationforalert.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;These examples are cool&lt;/strong&gt; - showing us we can create more granular criteria than the choices exposed in the UI.&lt;/p&gt;  &lt;p&gt;In the second link above - the basic Powershell script is posted.&amp;#160; However, many users have been looking for examples of how to add more specific and typical criteria.&amp;#160; The script above will notify on any change in resolution state.... so if you use multiple resolution states, it might send an email when the alert is created, then modified, then closed.&amp;#160; Many want a notification only when an alert comes in New.&lt;/p&gt;  &lt;p&gt;The posted script also shows the Last Modified time in the notification in GMT.... where as a UI generated subscription would show the alert time in the correct local time zone.&amp;#160; &lt;/p&gt;  &lt;p&gt;The post below will show some of the changes you can make here, and some example scripts.&lt;/p&gt;  &lt;p&gt;First things first.... let's talk about what happens when you create a normal subscription in the UI:&amp;#160; When you run the New Subscription wizard in the UI, you are selecting from what was determined to be the most typical choices for subscribing to alerts for a notification.&amp;#160; What this does, behind the scenes, is create some XML, and writes that information to the &amp;quot;Notifications Internal Library&amp;quot; management pack (Microsoft.SystemCenter.Notifications.Internal)&lt;/p&gt;  &lt;p&gt;The best thing you can do to understand what is happening - is to create a SINGLE subscription in the UI, and then export this management pack, and open it in Notepad.&amp;#160; What you will see - is that this MP holds all the configuration information for your SMTP server settings, default notification format, all the recipients and their information, product connector subscriptions, and the focus of this discussion: notification subscription details.&lt;/p&gt;  &lt;p&gt;Find your simple subscription that you created - and look at the options.&amp;#160; This will start with:&lt;/p&gt;  &lt;p&gt;&amp;lt;Monitoring&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Rules&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Rule ID=&amp;quot;Subscription(guid) plus other settings........&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Category&amp;gt;Notification&amp;lt;/Category&amp;gt;&lt;/p&gt;  &lt;p&gt;Look at all the default options.... this will help you understand the XML format and settings for notifications.&amp;#160; Probably the most important to understand is &amp;lt;Criteria&amp;gt;.&amp;#160; What you will see is all the criteria settings you just created, using the UI.&amp;#160; Unfortunately - the UI does not expose all the possible settings for criteria.... &lt;/p&gt;  &lt;p&gt;So - you may ask - what settings are available?&lt;/p&gt;  &lt;p&gt;Well - according to &lt;a href="http://blogs.msdn.com/jakuboleksy/archive/2007/01/18/notification-subscriptions.aspx" mce_href="http://blogs.msdn.com/jakuboleksy/archive/2007/01/18/notification-subscriptions.aspx"&gt;Jakub&lt;/a&gt;:&amp;#160; &amp;quot;In terms of which columns you can query for in the criteria, it is anything that is defined on the Alert table in the db.&amp;quot;&lt;/p&gt;  &lt;p&gt;Whoa!&amp;#160; That's a LOT more options.&amp;#160; The following columns exist in the alert table:&lt;/p&gt;  &lt;p&gt;AlertId&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;AlertName&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;AlertDescription&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;BaseManagedEntityId&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;ProblemId&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;IsMonitorAlert&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;RuleId&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;ResolutionState&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Priority&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Severity&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Category&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Owner&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;ResolvedBy&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;TimeRaised&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;TimeAdded&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;LastModified&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;LastModifiedBy&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;LastModifiedExceptRepeatCount&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;TimeResolved&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;TimeResolutionStateLastModified&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;TimeResolutionStateLastModifiedInDB&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;CustomField1&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;CustomField2&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;CustomField3&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;CustomField4&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;CustomField5&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;CustomField6&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;CustomField7&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;CustomField8&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;CustomField9&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;CustomField10&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;TicketId&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Context&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;RepeatCount&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;AlertStringId&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;AlertParams&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;SiteName&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;ConnectorId&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;LastModifiedByNonConnector&lt;/p&gt;  &lt;p&gt;So you can see - if you don't mind a little custom XML work.... you have a lot more choices when it comes to notifications.&amp;#160; We can use this to create subscriptions to specific named alerts, or only alerts with a specific custom field value, a specific repeat count threshold, or for a specific computer, or resolution state.&amp;#160; The possibilities get pretty good.&amp;#160; If only this was all exposed in the UI!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Understanding, that once custom modified in XML - you will not be able to ever modify the same (non-standard) subscription in the UI, or you will break your XML customizations.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Ok - beyond criteria - what else is interesting, you ask?&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;lt;PollingIntervalMinutes&amp;gt;&lt;/strong&gt;&amp;#160;&amp;#160; This defaults to 1 minute and should not be changed.&amp;#160; This is how often the subscription will poll the SDK to look for new alerts and see if they match any notification subscriptions.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;lt;TimeZone&amp;gt;&lt;/strong&gt;&amp;#160; Using the script as posted - it did not contain this tag.&amp;#160; Therefore all alerts come in as GMT.&amp;#160; Using this tag - you can set your specific time zone.&amp;#160; Central standard time looks like this:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&amp;lt;TimeZone&amp;gt;6801000000000000C4FFFFFF00000B0000000100020000000000000000000300000002000200000000000000|Central Standard Time&amp;lt;/TimeZone&amp;gt;&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If you want to know your timezone code - just create any subscription in the UI - look at the Notifications Internal Library MP, and pull it out of there for use in scripting.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;lt;IdleMinutes&amp;gt;&lt;/strong&gt;&amp;#160; This is the tag to use for Alert aging.&amp;#160; This is used to delay a notification from being sent for &amp;quot;x&amp;quot; minutes, as long as it has not been changed in that time and meets all other criteria.&amp;#160; This is used to keep notification noise down, if alerts are closed or acknoledged quickly, or to create &amp;quot;nag&amp;quot; notifications in additional subscription to &amp;quot;re-notify&amp;quot; after &amp;quot;x&amp;quot; amount of time has passed - and nobody acknowledged or closed the alert.&amp;#160; NOTE:&amp;#160; In order to use this tag - the class targeted MUST be set to &amp;quot;AlertNotChangedSubscriptionConfiguration&amp;quot;.... instead of the default which is &amp;quot;AlertChangedSubscriptionConfiguration&amp;quot;.&amp;#160; The BEST way to understand this - is to create TWO IDENTICAL subscriptions to alerts, but set one to have alert aging enabled, set the other to not have it enabled.&amp;#160; What you will see is that alert aging subscriptions have a XML tag like the following:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&amp;lt;AlertNotChangedSubscription Property=&amp;quot;Any&amp;quot;&amp;gt; &amp;lt;/AlertNotChangedSubscription&amp;gt;&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Where standard subscriptions that do &lt;strong&gt;&lt;em&gt;not&lt;/em&gt;&lt;/strong&gt; utilize alert aging will have the following:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&amp;lt;AlertChangedSubscription Property=&amp;quot;Any&amp;quot;&amp;gt; &amp;lt;/AlertChangedSubscription&amp;gt;&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Make sure you keep these clear.&amp;#160; More on using these in scripts later.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Ok - that covers the most notable XML items&lt;/strong&gt;.&amp;#160; I would say, it is probably easiest to just configure the XML directly when you want to use these advanced properties that are not exposed in the UI.&amp;#160; However, if you have the need/desire to create these types of subscriptions from script... we can do that, and let's see a couple examples.&lt;/p&gt;  &lt;p&gt;Using the Powershell code posted from &lt;a title="http://code4ward.net/cs2/blogs/code4ward/archive/2007/09/19/set-notificationforalert.aspx" href="http://code4ward.net/cs2/blogs/code4ward/archive/2007/09/19/set-notificationforalert.aspx" mce_href="http://code4ward.net/cs2/blogs/code4ward/archive/2007/09/19/set-notificationforalert.aspx"&gt;http://code4ward.net/cs2/blogs/code4ward/archive/2007/09/19/set-notificationforalert.aspx&lt;/a&gt; we want to make a couple changes right off the bat.&lt;/p&gt;  &lt;p&gt;First thing - is we wont use the ProblemID field as in that example.&amp;#160; This field of an alert is only consistent on Monitors.&amp;#160; However - for any alert generated by a Monitor - the SDK property of&amp;#160; ProblemID will be identical to MonitoringRuleID.&amp;#160; Therefore, we can always use MonitoringRuleID property which will be unique and consistent, for a given alert, whether it came from a rule or a monitor.&lt;/p&gt;  &lt;p&gt;To see these values - use get-alert in Powershell.&amp;#160; For a more specific command to see just these properties on new alerts:&amp;#160; get-alert | where {$_.ResolutionState -eq 0} | ft name,problemid,monitoringruleid.&lt;/p&gt;  &lt;p&gt;By the way - in the database, the SDK property &amp;quot;ProblemID&amp;quot; = the DB column &amp;quot;ProblemID&amp;quot;.&amp;#160; The SDK property &amp;quot;MonitoringRuleID&amp;quot; = the DB column &amp;quot;RuleID&amp;quot;.&lt;/p&gt;  &lt;p&gt;Ok - so we will make the changes to use MonitoringRuleID and RuleID for all alerts.&amp;#160; You can see the example in my attached script below... and there is an example posted at the link above.&lt;/p&gt;  &lt;p&gt;Next - we will add the timezone information.... this is done by adding a new line under &amp;quot;$config.PollingIntervalMinutes = 1&amp;quot;.&amp;#160; The new line should look like (without wrapping, and this example is for CST):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;$config.TimeZone = &amp;quot;6801000000000000C4FFFFFF00000B0000000100020000000000000000000300000002000200000000000000|Central Standard Time&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Lastly - we will modify the Alert Criteria with our custom subscription criteria.&amp;#160; What we want to do - is subscribe to any alert with a given &amp;quot;MonitoringRuleID&amp;quot; GUID, which using this script, will query that value from the common Alert Name we see in the console.&amp;#160; We can use any criteria here.&amp;#160; Things to keep in mind - the first &amp;lt;expression&amp;gt;&amp;lt;/expression&amp;gt; tags are not necessary, as they are understood.&amp;#160; Any other AND/OR groupings have to be done manually.&amp;#160; Here is the code from the sample script (&lt;strong&gt;this should always be one line in the script - I wrapped it here to make it readable&lt;/strong&gt;):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;$config.Criteria =      &lt;br /&gt;&amp;quot;&amp;lt;SimpleExpression&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;ValueExpression&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Property&amp;gt;RuleId&amp;lt;/Property&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;/ValueExpression&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Operator&amp;gt;Equal&amp;lt;/Operator&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;ValueExpression&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Value&amp;gt;$MonitoringRuleId&amp;lt;/Value&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160; &amp;lt;/ValueExpression&amp;gt;       &lt;br /&gt;&amp;lt;/SimpleExpression&amp;gt;&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;What the above will do - is to create a subscription that will match on the specific alert name given to the script, and then create a notification on ANY change to the alert.... such as when the alert is generated (New) AND when the alert is closed.&lt;/p&gt;  &lt;p&gt;Let's add some new criteria using an AND statement - which will ONLY subscribe to NEW alerts:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;$config.Criteria =      &lt;br /&gt;&amp;quot;&amp;lt;And&amp;gt;       &lt;br /&gt;&amp;#160; &amp;lt;Expression&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SimpleExpression&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ValueExpression&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Property&amp;gt;RuleId&amp;lt;/Property&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ValueExpression&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Operator&amp;gt;Equal&amp;lt;/Operator&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ValueExpression&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Value&amp;gt;$MonitoringRuleId&amp;lt;/Value&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ValueExpression&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/SimpleExpression&amp;gt;       &lt;br /&gt;&amp;#160; &amp;lt;/Expression&amp;gt;       &lt;br /&gt;&amp;#160; &amp;lt;Expression&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SimpleExpression&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ValueExpression&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Property&amp;gt;ResolutionState&amp;lt;/Property&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ValueExpression&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Operator&amp;gt;Equal&amp;lt;/Operator&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;ValueExpression&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Value&amp;gt;0&amp;lt;/Value&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/ValueExpression&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/SimpleExpression&amp;gt;       &lt;br /&gt;&amp;#160; &amp;lt;/Expression&amp;gt;       &lt;br /&gt;&amp;lt;/And&amp;gt;&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;That will work MUCH better.... if we only want to see a notification for new alerts.&amp;#160; Keep adding to the criteria sections to get the subscription to match exactly what you want.&lt;/p&gt;  &lt;p&gt;The only other things I changed in the script - was the echoed statement about what was shown to the user running the script:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;write-Host &amp;quot;Executing script to subscribe to specific alert by name...&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;And then I changed the formula for naming the subscription.&amp;#160; Since these CANNOT be modified in the UI without breaking them - I changed the default naming for these script generated subscriptions:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;$Subscription.DisplayName = &amp;quot;Script created - Do NOT MODIFY in UI - &amp;quot; + $NotificationRecipientName + &amp;quot; - &amp;quot; + $AlertName&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This creates subscriptions in the GUI that tip any admin's off - to leave them alone:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatinggranularalertnotificationsruleby_DF3C/image_2.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatinggranularalertnotificationsruleby_DF3C/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="197" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatinggranularalertnotificationsruleby_DF3C/image_thumb.png" width="935" border="0" mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/Creatinggranularalertnotificationsruleby_DF3C/image_thumb.png" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Lastly - if we want to use Alert aging in our script - we need to change a couple of items.&amp;#160; First - we need to add a new line for $config.IdleMinutes under the &amp;quot;$config.PollingIntervalMinutes = 1&amp;quot;.&amp;#160; Here is an example:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;$config.IdleMinutes = 60&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;That will add an hour delay - and only notify when the alert has been unchanged, and in the console for an hour.&amp;#160; In order to use alert aging delay - we must also change the &amp;quot;$config = New-Object&amp;quot; line from &amp;quot;AlertChangedSubscriptionConfiguration&amp;quot; to &amp;quot;AlertNotChangedSubscriptionConfiguration&amp;quot;.&amp;#160; Therefore - in order to use alert aging - you need a different script, than if you dont want alert aging.... and if you have different criteria - you will need a script for each scenario.&amp;#160; &lt;/p&gt;  &lt;p&gt;Below - I am attaching a zip file with a couple script examples.....&lt;/p&gt;  &lt;p&gt;One script to subscribe to NEW alerts without alert aging, and another with alert aging.&lt;/p&gt;  &lt;p&gt;Tips:&amp;#160; It is probably easier just to edit the Notification MP XML for your customizations.&amp;#160; Just remember - to ALWAYS back this file up.... and keep several copies, in case you ever modify the file in a way that is not supported.&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3135708" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/kevinholman/attachment/3135708.ashx" length="2844" type="application/x-zip-compressed" /><category domain="http://blogs.technet.com/kevinholman/archive/tags/Notification/default.aspx">Notification</category></item><item><title>Using OpsMgr Notifications in the real world - Part 1</title><link>http://blogs.technet.com/kevinholman/archive/2008/06/26/using-opsmgr-notifications-in-the-real-world-part-1.aspx</link><pubDate>Thu, 26 Jun 2008 22:29:33 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3078830</guid><dc:creator>kevinhol</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/3078830.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=3078830</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=3078830</wfw:comment><description>&lt;p&gt;&lt;strong&gt;Using notifications such as email, has proven to be somewhat difficult in OpsMgr&lt;/strong&gt;.&amp;#160; I get questions from each and every customer I work with on this topic.... as most people never get these to work as they want, or expect, without fully understanding the object oriented class model of OpsMgr and what that means to Notifications on alerts.&amp;#160; Even once this is understood, there are often challenges.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;First.... lets make sure we use the correct terms.&amp;#160; &lt;strong&gt;Alerts&lt;/strong&gt; are alerts.... a message that is sent to the OpsMgr database with details on something that happened.&amp;#160; A &lt;strong&gt;Notification&lt;/strong&gt; is simply a message in email, IM, SMS, etc... that is triggered by an alert.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Ok - now... on to actually using these things.&amp;#160; :-)&amp;#160; &lt;/p&gt;  &lt;p&gt;First off.... &lt;strong&gt;notifications&lt;/strong&gt; are configured via &lt;strong&gt;subscriptions&lt;/strong&gt;.&amp;#160; We can create a &lt;strong&gt;subscription&lt;/strong&gt; and get a notification for every single alert that gets generated.... or we can filter them for specific alerts based on specific criteria.&amp;#160; &lt;/p&gt;  &lt;p&gt;For instance... we can subscribe to &amp;quot;&lt;strong&gt;&lt;em&gt;all critical alerts&lt;/em&gt;&lt;/strong&gt;&amp;quot; by creating a subscription that includes all classes, all groups, and just looks at &amp;quot;&lt;strong&gt;Critical&lt;/strong&gt;&amp;quot; alert severity on the criteria selection.&lt;/p&gt;  &lt;p&gt;We can subscribe to &amp;quot;&lt;strong&gt;&lt;em&gt;all critical alerts coming from the exchange management pack&lt;/em&gt;&lt;/strong&gt;&amp;quot; by creating a subscription that includes ONLY Exchange classes, All groups, and just looks at &amp;quot;Critical&amp;quot; alert severity on the criteria selection.&lt;/p&gt;  &lt;p&gt;Further filters can be created... using groups.... such as &amp;quot;&lt;strong&gt;&lt;em&gt;all critical alerts from the exchange MP for servers in Texas&lt;/em&gt;&lt;/strong&gt;&amp;quot;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Sound good?&lt;/strong&gt;&amp;#160; At this point.... then - it is time to read my previous blog post on configuring notifications for specific groups and classes.&amp;#160; It will walk you through the steps to filter based on a group of servers, or filter based on specific alerts from MP's you are interested in... and some of the issues created when you do that.&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.technet.com/kevinholman/archive/2008/02/01/configuring-notifications-to-include-specific-alerts-from-specific-groups-and-classes.aspx" href="http://blogs.technet.com/kevinholman/archive/2008/02/01/configuring-notifications-to-include-specific-alerts-from-specific-groups-and-classes.aspx"&gt;http://blogs.technet.com/kevinholman/archive/2008/02/01/configuring-notifications-to-include-specific-alerts-from-specific-groups-and-classes.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Moving on.....&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Now - you have set up your notification subscriptions that you like:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;You have created groups&lt;/strong&gt; that contain the Windows Computer objects and Health Service Watcher objects for each region or team.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;You have created multiple subscriptions&lt;/strong&gt; based on specific management packs... by filtering the subscription based on class, and group.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;You have also specified specific criteria&lt;/strong&gt; for these subscriptions... like only getting critical alerts in email.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Everything seems to be going well.... when someone throws a big wrench in your plan.&amp;#160; You get major complaints with your system because:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Users are complaining that they are getting WAY too many emails.... because they are constantly getting flooded with noise from critical alerts.&lt;/strong&gt;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Even with all the work you did.... filtering by specific class, and specific groups... you still get a LOT of email notifications.&amp;#160; &lt;strong&gt;The FIRST focus should be on tuning the management packs and fixing problems.&lt;/strong&gt;&amp;#160; However, it is possible that some MP's are just noisy, or problematic, etc.&amp;#160; You can adjust some of the alert severity to Warning... for alerts you don't want notifications.... but ultimately... you are getting too much in email.&amp;#160; &lt;/p&gt;  &lt;p&gt;Possibly - you want alerts in the console... but only want VERY SPECIFIC notifications on the &amp;quot;most critical&amp;quot; items.&amp;#160;&amp;#160; Your users have decided to set up a rule in Outlook and send all these noisy critical notifications to a folder.... to keep them out of their Inbox.&amp;#160; &lt;strong&gt;This essentially makes sending these notifications useless.... because they will be ignored and annoy the end user&lt;/strong&gt;.&amp;#160; If we were sending them to a phone/pager... the phone/pager is constantly going off.&amp;#160;&amp;#160; What they REALLY want is a way to subscribe to only the alerts they deem REALLY critical.&amp;#160; This may be from 10 rules, or 300 rules.&lt;/p&gt;  &lt;p&gt;Using the GUI.... there is no easy way to do this.&amp;#160; We cannot subscribe to a single rule, or monitor, that creates an alert.&amp;#160; We can only subscribe to a CLASS... and therefore we will get email notifications for any critical alert that uses that class as a TARGET.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;So.... what we need to develop is a &lt;strong&gt;STRATEGY&lt;/strong&gt; for notifications... so we only get emails/pages on alerts that &lt;strong&gt;WE DEEM&lt;/strong&gt; to be &lt;strong&gt;&lt;em&gt;actionable&lt;/em&gt;&lt;/strong&gt;.&amp;#160; There are many ways to accomplish this... I will talk about a few that I have implemented with customers and seem to work pretty well.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;1.&amp;#160; Using Alert Priority as a notification filter strategy.&amp;#160; (this blog post)&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;2.&amp;#160; Using Powershell to create individual notification subscriptions for individual rules/monitors.&amp;#160; This is blogged here:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;a title="http://blogs.technet.com/kevinholman/archive/2008/10/12/creating-granular-alert-notifications-rule-by-rule-monitor-by-monitor.aspx" href="http://blogs.technet.com/kevinholman/archive/2008/10/12/creating-granular-alert-notifications-rule-by-rule-monitor-by-monitor.aspx"&gt;http://blogs.technet.com/kevinholman/archive/2008/10/12/creating-granular-alert-notifications-rule-by-rule-monitor-by-monitor.aspx&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;3.&amp;#160; Using the SDK and a product connector to modify alerts after they are generated, modifying some property on the alert such as Resolution State to a custom state, which we can then use as a criteria for a subscription.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;4.&amp;#160; Creating a custom class for a specific set of computers using the authoring console, and then subscribing only to that class.... therefore, we will only get alerts from rules/monitors that use that class as a target.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#0000ff"&gt;This is blogged here:&amp;#160; &lt;a title="http://technet.microsoft.com/en-us/magazine/cc983816.aspx" href="http://technet.microsoft.com/en-us/magazine/cc983816.aspx"&gt;http://technet.microsoft.com/en-us/magazine/cc983816.aspx&lt;/a&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Ok....&amp;#160; let's get started.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;#1.&amp;#160; Using Alert Priority as a notification filter strategy.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This is my most preferred method right now for most scenarios.&amp;#160; In MOM 2005... we had 7 alert severities to choose from.... &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrNotificationsintherealworldPa_CBC3/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="98" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrNotificationsintherealworldPa_CBC3/image_thumb.png" width="110" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This was great.... because we could make our notification criteria something like &amp;quot;Critical Error or higher&amp;quot; and then tune the alerts down or up.&amp;#160; &lt;/p&gt;  &lt;p&gt;Now, in OpsMgr - this won't work.... because with sealed MP's, and only three alert severities... it isn't as simple.&amp;#160; There are just too many alerts in our default MP's that are tagged as &lt;strong&gt;critical&lt;/strong&gt;... and perhaps we really don't want to bump them down to warning... we just want to pick which critical alerts to notify on.&amp;#160; &lt;strong&gt;&lt;font color="#ff0000"&gt;In comes &amp;quot;Priority&amp;quot;.&lt;/font&gt;&lt;/strong&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;There is a new attribute of an alert in SCOM, called &lt;strong&gt;Priority&lt;/strong&gt;.&amp;#160; High, Medium, or Low.&amp;#160; Essentially, when you think about this - we now have &lt;strong&gt;&lt;em&gt;9 possible states&lt;/em&gt;&lt;/strong&gt; for an alert &amp;quot;severity&amp;quot;:&amp;#160; Critical High, Critical Med, Critical Low, Warning High, Warning Med.... etc...etc...&lt;/p&gt;  &lt;p&gt;In almost all of the default management packs you download... the alert priority is set to medium.&amp;#160; We have also updated most of the MP's so that alert severity and priority are exposed as adjustable via override.&amp;#160; This way - we can create a new notification subscription, and ONLY select &amp;quot;Critical&amp;quot; severity, and &amp;quot;High&amp;quot; priority:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrNotificationsintherealworldPa_CBC3/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="687" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrNotificationsintherealworldPa_CBC3/image_thumb_1.png" width="733" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;What you will find.... is there you will get very few notifications by default with this criteria.&amp;#160; This is good!&amp;#160; The next step is to simply examine the rules and monitors that create alerts that you are interested in, and override those to change the alert priority to HIGH.&amp;#160; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Note - when creating this override - sometimes we show the word &amp;quot;High&amp;quot; and sometimes we show the numeric number which relates to &amp;quot;High&amp;quot;.&amp;#160; In the database, this is translated numerically, just like Alert Severity is.&amp;#160; See the table below to understand these:&lt;/p&gt;    &lt;table cellspacing="0" cellpadding="2" width="208" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="86"&gt;&lt;strong&gt;Severity:&lt;/strong&gt;&lt;/td&gt;          &lt;td valign="top" width="85"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="35"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="87"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="87"&gt;Critical&lt;/td&gt;          &lt;td valign="top" width="35"&gt;2&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="86"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="89"&gt;Warning&lt;/td&gt;          &lt;td valign="top" width="35"&gt;1&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="86"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="90"&gt;Information&lt;/td&gt;          &lt;td valign="top" width="35"&gt;0&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="87"&gt;&lt;strong&gt;Priority:&lt;/strong&gt;&lt;/td&gt;          &lt;td valign="top" width="90"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="35"&gt;&amp;#160;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="87"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="90"&gt;High&lt;/td&gt;          &lt;td valign="top" width="35"&gt;2&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="87"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="90"&gt;Medium&lt;/td&gt;          &lt;td valign="top" width="35"&gt;1&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="87"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="90"&gt;Low&lt;/td&gt;          &lt;td valign="top" width="35"&gt;0&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Here is an example - I am overriding my Exchange Services Monitor alert to High priority... so I will get email notifications for it based on my subscription above:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrNotificationsintherealworldPa_CBC3/image_6.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="602" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrNotificationsintherealworldPa_CBC3/image_thumb_2.png" width="602" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Here is an example, for an alert for very low disk space, from a rule, where we have to use the numeric:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrNotificationsintherealworldPa_CBC3/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="602" alt="image" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/UsingOpsMgrNotificationsintherealworldPa_CBC3/image_thumb_3.png" width="603" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;From that point forward, you will continue to get all the alerts in the console, but only email notifications on the alerts you want, which you set to have a &lt;strong&gt;HIGH&lt;/strong&gt; priority.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;So now we have a strategy!&lt;/strong&gt;&amp;#160; Now we can have alerts coming in the console as normal... and we will only get email notifications on specific alerts that we have deemed to be a high priority.&lt;/p&gt;  &lt;p&gt;You could use this same design for a product connector as well... to limit what is forwarded up the chain to Tivoli, OpenView, Remedy, etc.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;For part two.... see the following blog post on using powershell to subscribe to individual notifications:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Creating granular alert notifications - rule by rule, monitor by monitor" href="http://blogs.technet.com/kevinholman/archive/2008/10/12/creating-granular-alert-notifications-rule-by-rule-monitor-by-monitor.aspx"&gt;Creating granular alert notifications - rule by rule, monitor by monitor&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3078830" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/Notification/default.aspx">Notification</category></item><item><title>Creating a Group based on OU (Organizational Unit) in Active Directory</title><link>http://blogs.technet.com/kevinholman/archive/2008/02/05/creating-a-group-based-on-ou-organizational-unit-in-active-directory.aspx</link><pubDate>Tue, 05 Feb 2008 19:02:08 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2832210</guid><dc:creator>kevinhol</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/2832210.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=2832210</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=2832210</wfw:comment><description>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Here is a really cool feature of Opsmgr:&amp;#160; the ability to create groups easily based on any discovered attribute of an object.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;OU is something that is part of the Windows Computer object discovery.&amp;#160; If you examine a state view &amp;#8211; you will see in the details pane discovered information&amp;#8230; and OU is there.&amp;#160; Typically this means we can likely use that object (Windows Computer) and OU will be a discovered attribute of that.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/CreatingaGroupbasedonOUOrganizationalUni_8D17/clip_image002_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="597" alt="clip_image002" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/CreatingaGroupbasedonOUOrganizationalUni_8D17/clip_image002_thumb.jpg" width="794" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This also means is we personalize a Windows Computer based state view &amp;#8211; we can add OU:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/CreatingaGroupbasedonOUOrganizationalUni_8D17/clip_image002%5B5%5D.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="287" alt="clip_image002[5]" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/CreatingaGroupbasedonOUOrganizationalUni_8D17/clip_image002%5B5%5D_thumb.jpg" width="654" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;To use a grouping, create a group, add Windows Computer object, and then a rule based on OU:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/CreatingaGroupbasedonOUOrganizationalUni_8D17/clip_image004_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="622" alt="clip_image004" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/CreatingaGroupbasedonOUOrganizationalUni_8D17/clip_image004_thumb.jpg" width="730" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/CreatingaGroupbasedonOUOrganizationalUni_8D17/clip_image006_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="267" alt="clip_image006" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/CreatingaGroupbasedonOUOrganizationalUni_8D17/clip_image006_thumb.jpg" width="552" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;A right click &amp;#8211; view group members reveals:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/CreatingaGroupbasedonOUOrganizationalUni_8D17/clip_image008_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="406" alt="clip_image008" src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/CreatingaGroupbasedonOUOrganizationalUni_8D17/clip_image008_thumb.jpg" width="440" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2832210" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/Active+Directory+MP/default.aspx">Active Directory MP</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/management+pack/default.aspx">management pack</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/Notification/default.aspx">Notification</category></item><item><title>Configuring Notifications - to include specific alerts from specific groups and classes</title><link>http://blogs.technet.com/kevinholman/archive/2008/02/01/configuring-notifications-to-include-specific-alerts-from-specific-groups-and-classes.aspx</link><pubDate>Sat, 02 Feb 2008 02:29:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2811181</guid><dc:creator>kevinhol</dc:creator><slash:comments>10</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/2811181.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=2811181</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=2811181</wfw:comment><description>&lt;P&gt;So.... Say I am an Exchange Administrator in a global company.... in the good old USA.&lt;/P&gt;
&lt;P&gt;My company has recently implemented OpsMgr 2007 to monitor our Exchange servers.&amp;nbsp; I am going to configure my notification subscriptions so I can get an email anytime one of my Exchange servers has an issue.&lt;/P&gt;
&lt;P&gt;Try #1:&amp;nbsp; I start by creating a notification subscription, and I dont scope it by groups or classes (all groups, all classes).&amp;nbsp; I think this sounds fine.&amp;nbsp; However, instantly I find I am flooded with email notifications from every single alert coming into the console.&amp;nbsp; This is NOT good!&lt;/P&gt;
&lt;P&gt;Try #2:&amp;nbsp; Therefore – I decide I really need to see only Exchange alerts.&amp;nbsp; I scope the notification *&lt;B&gt;classes&lt;/B&gt;* down to just Exchange classes.&amp;nbsp; This will ensure I only receive notifications from Exchange target classes.&amp;nbsp; Good?&amp;nbsp; Nope....&amp;nbsp; I soon find that when an alert comes in from the base OS, or heartbeat, or hardware, we won’t get those.&amp;nbsp; We need to add those classes back.&amp;nbsp; If we add the heartbeat (Health Service Watcher) class – we will now get heartbeat failures for ALL machines… not just restricted to exchange servers.&amp;nbsp; No good.&lt;/P&gt;
&lt;P&gt;Try #3:&amp;nbsp; So – we need to scope the subscription using groups.&amp;nbsp; We create a group with all our Exchange Server Windows Computer objects in it.&amp;nbsp; We can manually add these in (Explicit) or we can use a dynamic rule based on criteria - I chose NetBIOS name, and used a naming standard of EX* (all my exchange servers start with "ex").&amp;nbsp; I used an "OR" statement since the wildcard is case sensitive.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/ConfiguringNotificationstoincludespecifi_F5E4/image_6.png" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/ConfiguringNotificationstoincludespecifi_F5E4/image_6.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=271 alt=image src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/ConfiguringNotificationstoincludespecifi_F5E4/image_thumb_2.png" width=564 border=0 mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/ConfiguringNotificationstoincludespecifi_F5E4/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Now I create a subscriptions - and scope it to this group - and choose ALL classes....&amp;nbsp; thinking that this way, we should get ALL notifications, including base OS, exchange, and heartbeat alerts… right?&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Nope.&amp;nbsp; Because of the object oriented monitoring model – we will only receive alerts from a rule/monitor with a target class that has a child relationship to the Windows Computer class.&amp;nbsp; This is the only class type in the group we created.&amp;nbsp; So – using the model in #3, we will get notifications from pretty much any class needed – except heartbeats.&amp;nbsp; These come from the Health Service Watcher class, and have no relation to the Windows Computer class.&lt;/P&gt;
&lt;P&gt;Try #4:&amp;nbsp; I am thinking, we must add the class type to our group – and any instances of that class we are interested in.&amp;nbsp; Since most object classes are a child of Windows Computer, there should not be many of these that we will have to do.&lt;/P&gt;
&lt;P&gt;In the group – add the Health Service Watcher display name instances, in the same way we add the Windows Computer NetBIOS names:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/ConfiguringNotificationstoincludespecifi_F5E4/clip_image002_2.jpg" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/ConfiguringNotificationstoincludespecifi_F5E4/clip_image002_2.jpg"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=698 alt=clip_image002 src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/ConfiguringNotificationstoincludespecifi_F5E4/clip_image002_thumb.jpg" width=682 border=0 mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/ConfiguringNotificationstoincludespecifi_F5E4/clip_image002_thumb.jpg"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;The AND/OR verbiage is misleading…. This was opened as a bug then closed – because it is “as designed”.&lt;/P&gt;
&lt;P&gt;Essentially – The or group at the top will include ANY of the following and groups below it…. BOTH the windows computer objects AND the Health Service Watcher objects are included:&amp;nbsp; (you can right click any group and choose to show members)&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;A href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/ConfiguringNotificationstoincludespecifi_F5E4/clip_image004_2.jpg" mce_href="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/ConfiguringNotificationstoincludespecifi_F5E4/clip_image004_2.jpg"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=527 alt=clip_image004 src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/ConfiguringNotificationstoincludespecifi_F5E4/clip_image004_thumb.jpg" width=734 border=0 mce_src="http://blogs.technet.com/blogfiles/kevinholman/WindowsLiveWriter/ConfiguringNotificationstoincludespecifi_F5E4/clip_image004_thumb.jpg"&gt;&lt;/A&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;I tested all kinds of Exchange alerts, and heartbeat failures – and this works.&amp;nbsp; It is possible there will be other alerts we wont get in this subscription.... IF the rule or monitor that created the alert was using a target class that was unique, and not a child of "Windows Computer"&lt;/P&gt;
&lt;P&gt;I don’t think this will be a huge hassle moving forward… because MOST alerting is done on a target which is a child of Windows computer.&amp;nbsp; If we find one that is not – we just need to go back and add that class’s instances to the groups we create for notifications.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Want alert by alert notifications?&lt;/STRONG&gt;&amp;nbsp; Where you can subscribe to a &lt;STRONG&gt;single&lt;/STRONG&gt; alert, rule by rule, monitor by monitor?&amp;nbsp; Check out:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://code4ward.net/cs2/blogs/code4ward/archive/2007/09/19/set-notificationforalert.aspx"&gt;http://code4ward.net/cs2/blogs/code4ward/archive/2007/09/19/set-notificationforalert.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2811181" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/Notification/default.aspx">Notification</category></item><item><title>Adding custom information to alert description (s) and notifications</title><link>http://blogs.technet.com/kevinholman/archive/2007/12/12/adding-custom-information-to-alert-descriptions-and-notifications.aspx</link><pubDate>Wed, 12 Dec 2007 19:35:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:2639476</guid><dc:creator>kevinhol</dc:creator><slash:comments>24</slash:comments><comments>http://blogs.technet.com/kevinholman/comments/2639476.aspx</comments><wfw:commentRss>http://blogs.technet.com/kevinholman/commentrss.aspx?PostID=2639476</wfw:commentRss><wfw:comment>http://blogs.technet.com/kevinholman/rsscomments.aspx?PostID=2639476</wfw:comment><description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;This is just a dump of some alert description variables I pulled from several other bloggers:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p mce_keep="true"&gt;   &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="3" face="Calibri"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;    &lt;p style="margin: 0in 0in 0pt" class="MsoNoSpacing"&gt;&lt;font size="4"&gt;&lt;strong&gt;Custom Properties for Alert Description and Notification:&lt;/strong&gt;&lt;/font&gt; &lt;/p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;Alert Description Variables:&lt;/font&gt;&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;For event Rules:&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;EventDisplayNumber (Event ID):&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/EventDisplayNumber$    &lt;br /&gt;EventDescription (Description):&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/EventDescription$     &lt;br /&gt;Publisher Name (Event Source):&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/PublisherName$    &lt;br /&gt;EventCategory:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/EventCategory$     &lt;br /&gt;LoggingComputer:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/LoggingComputer$    &lt;br /&gt;EventLevel:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/EventLevel$     &lt;br /&gt;Channel:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Channel$     &lt;br /&gt;UserName:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/UserName$    &lt;br /&gt;EventNumber:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/EventNumber$ &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;For event Monitors:&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;EventDisplayNumber (Event ID):&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/EventDisplayNumber$    &lt;br /&gt;EventDescription (Description):&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/EventDescription$     &lt;br /&gt;Publisher Name (Event Source):&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/PublisherName$    &lt;br /&gt;EventCategory:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/EventCategory$     &lt;br /&gt;LoggingComputer:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/LoggingComputer$    &lt;br /&gt;EventLevel:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/EventLevel$     &lt;br /&gt;Channel:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/Channel$     &lt;br /&gt;UserName:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/UserName$    &lt;br /&gt;EventNumber:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/EventNumber$ &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;For Repeating Event Monitors:&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;EventDisplayNumber (Event ID):&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/Context/DataItem/EventDisplayNumber$    &lt;br /&gt;EventDescription (Description):&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/Context/DataItem/EventDescription$     &lt;br /&gt;Publisher Name (Event Source):&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/Context/DataItem/PublisherName$    &lt;br /&gt;EventCategory:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/Context/DataItem/EventCategory$     &lt;br /&gt;LoggingComputer:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/Context/DataItem/LoggingComputer$    &lt;br /&gt;EventLevel:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/Context/DataItem/EventLevel$     &lt;br /&gt;Channel:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/Context/DataItem/Channel$     &lt;br /&gt;UserName:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/Context/DataItem/UserName$    &lt;br /&gt;EventNumber:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/Context/DataItem/EventNumber$ &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Performance Threshold Monitors:&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;Object (Perf Object Name):&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/ObjectName$    &lt;br /&gt;Counter (Perf Counter Name):&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/CounterName$     &lt;br /&gt;Instance (Perf Instance Name):&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/InstanceName$     &lt;br /&gt;Value (Perf Counter Value):&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/Value$ &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Service Monitors:&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;Service Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/Property[@Name='Name']$    &lt;br /&gt;Service Dependencies&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/Property[@Name='Dependencies']$     &lt;br /&gt;Service Binary Path&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/Property[@Name='BinaryPathName']$     &lt;br /&gt;Service Display Name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/Property[@Name='DisplayName']$     &lt;br /&gt;Service Description&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/Property[@Name='Description']$ &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Logfile Monitors:&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;Logfile Directory :&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/LogFileDirectory$    &lt;br /&gt;Logfile name:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/LogFileName$     &lt;br /&gt;String:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/Context/Params/Param[1]$ &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Logfile rules:&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;Logfile Directory:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/EventData/DataItem/LogFileDirectory$    &lt;br /&gt;Logfile name:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/EventData/DataItem/LogFileName$     &lt;br /&gt;String:&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; $Data/EventData/DataItem/Params/Param[1]$ &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Notifications:&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;$Data/Context/DataItem/AlertId$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; The AlertID GUID   &lt;br /&gt;$Data/Context/DataItem/AlertName$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; The Alert Name    &lt;br /&gt;$Data/Context/DataItem/Category$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; The Alert category    &lt;br /&gt;$Data/Context/DataItem/CreatedByMonitor$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; True/False    &lt;br /&gt;$Data/Context/DataItem/Custom1$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CustomField1    &lt;br /&gt;$Data/Context/DataItem/Custom2$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CustomField2    &lt;br /&gt;$Data/Context/DataItem/Custom3$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CustomField3    &lt;br /&gt;$Data/Context/DataItem/Custom4$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CustomField4    &lt;br /&gt;$Data/Context/DataItem/Custom5$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CustomField5    &lt;br /&gt;$Data/Context/DataItem/Custom6$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CustomField6    &lt;br /&gt;$Data/Context/DataItem/Custom7$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CustomField7    &lt;br /&gt;$Data/Context/DataItem/Custom8$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CustomField8    &lt;br /&gt;$Data/Context/DataItem/Custom9$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CustomField9    &lt;br /&gt;$Data/Context/DataItem/Custom10$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CustomField10    &lt;br /&gt;$Data/Context/DataItem/DataItemCreateTime$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; UTC Date/Time of Dataitem created    &lt;br /&gt;$Data/Context/DataItem/DataItemCreateTimeLocal$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LocalTime Date/Time of Dataitem created    &lt;br /&gt;$Data/Context/DataItem/LastModified$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; UTC Date/Time DataItem was modified    &lt;br /&gt;$Data/Context/DataItem/LastModifiedLocal$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Local Date/Time DataItem was modified    &lt;br /&gt;$Data/Context/DataItem/ManagedEntity$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ManagedEntity GUID    &lt;br /&gt;$Data/Context/DataItem/ManagedEntityDisplayName$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ManagedEntity Display name    &lt;br /&gt;$Data/Context/DataItem/ManagedEntityFullName$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ManagedEntity Full name    &lt;br /&gt;$Data/Context/DataItem/ManagedEntityPath$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Managed Entity Path    &lt;br /&gt;$Data/Context/DataItem/Priority$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; The Alert Priority Number (High=1,Medium=2,Low=3)    &lt;br /&gt;$Data/Context/DataItem/Owner$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; The Alert Owner    &lt;br /&gt;$Data/Context/DataItem/RepeatCount$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; The Alert Repeat Count    &lt;br /&gt;$Data/Context/DataItem/ResolutionState$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Resolution state ID (0=New, 255= Closed)    &lt;br /&gt;$Data/Context/DataItem/ResolutionStateLastModified$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; UTC Date/Time ResolutionState was last modified    &lt;br /&gt;$Data/Context/DataItem/ResolutionStateLastModifiedLocal$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Local Date/Time ResolutionState was last modified    &lt;br /&gt;$Data/Context/DataItem/ResolutionStateName$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; The Resolution State Name (New, Closed)    &lt;br /&gt;$Data/Context/DataItem/ResolvedBy$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Person resolving the alert    &lt;br /&gt;$Data/Context/DataItem/Severity$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; The Alert Severity ID     &lt;br /&gt;$Data/Context/DataItem/TicketId$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; The TicketID    &lt;br /&gt;$Data/Context/DataItem/TimeAdded$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; UTC Time Added    &lt;br /&gt;$Data/Context/DataItem/TimeAddedLocal$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Local Time Added    &lt;br /&gt;$Data/Context/DataItem/TimeRaised$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; UTC Time Raised    &lt;br /&gt;$Data/Context/DataItem/TimeRaisedLocal$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Local Time Raised    &lt;br /&gt;$Data/Context/DataItem/TimeResolved$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; UTC Date/Time the Alert was resolved    &lt;br /&gt;$Data/Context/DataItem/WorkflowId$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; The Workflow ID (GUID)    &lt;br /&gt;$Data/Recipients/To/Address/Address$&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; The name of the recipient &lt;/p&gt;  &lt;p&gt;The Web Console URL:   &lt;br /&gt;$Target/Property[Type=&amp;quot;Notification!Microsoft.SystemCenter.AlertNotificationSubscriptionServer&amp;quot;/WebConsoleUrl$ &lt;/p&gt;  &lt;p&gt;The principalname of the management server:   &lt;br /&gt;Target/Property[Type=&amp;quot;Notification!Microsoft.SystemCenter.AlertNotificationSubscriptionServer&amp;quot;/PrincipalName$ &lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=2639476" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/kevinholman/archive/tags/management+pack/default.aspx">management pack</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/Notification/default.aspx">Notification</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/Authoring/default.aspx">Authoring</category><category domain="http://blogs.technet.com/kevinholman/archive/tags/connectors/default.aspx">connectors</category></item></channel></rss>