<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://myitforum.com/cs2/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>SCOMNIVORE at myITforum.com</title><link>http://myitforum.com/cs2/blogs/vdipippo/default.aspx</link><description>Feasting on a daily diet of System Center!</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 SP2 (Build: 31113.47)</generator><item><title>Workflow Cook-Down in Operations Manager 2007</title><link>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/04/20/workflow-cook-down-in-operations-manager-2007.aspx</link><pubDate>Mon, 20 Apr 2009 13:00:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:133368</guid><dc:creator>vdipippo</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/vdipippo/rsscomments.aspx?PostID=133368</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/04/20/workflow-cook-down-in-operations-manager-2007.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;&lt;u&gt;Abstract&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I was recently working with &lt;a href="http://blogs.msdn.com/vladj/default.aspx"&gt;Vlad Joanovic&lt;/a&gt;, the Microsoft Program Manager for MP development on a new MP that has the potential of having a single health service acting as proxy for thousands of devices.&amp;nbsp; The subject of workflow cook-down became a high priority, for obvious reasons.&amp;nbsp; The potential of having at least one workflow (and possibly tens) run for each device was certainly something that needed to be avoided.&amp;nbsp; After implementing a series of &lt;font color="#800000"&gt;DataSourceModuleTypes&lt;/font&gt;, &lt;font color="#800000"&gt;UnitMonitorTypes&lt;/font&gt;, &lt;font color="#800000"&gt;Rules&lt;/font&gt;, and so forth that effectively fulfilled this requirement, we reflected for a moment on how there isn&amp;#39;t really an end-to-end treatment of this subject out there at the moment.&amp;nbsp; This is my attempt at rectifying that.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Background&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;At the heart of almost all OpsMgr&amp;#39;s activities are workflows.&amp;nbsp; Workflows are collections of modules that run in succession, passing &lt;font color="#800000"&gt;DataItems&lt;/font&gt; between them.&amp;nbsp; I have a series of blog posts related to a workflow tracer module I wrote that contain a detailed discussion on workflows.&amp;nbsp; For more information before continuing on this topic, please &lt;a href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-1-of-4-workflow-primer.aspx"&gt;refer to those posts&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Given that these workflows are central to OpsMgr and that modules are central to constructing workflows, two design goals of OpsMgr are readily apparent, even from the outside looking in:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Each module should be as efficient as possible.&amp;nbsp; While you can script anything, where possible, you should use the built-in modules for anything you can.&amp;nbsp; This includes registry readers, WMI readers, etc.&amp;nbsp; If need be, you can create your own &lt;font color="#800000"&gt;Composite&lt;/font&gt; module and be as creative as you like; however, you should opt to use the various built-in module types whenever possible. &lt;/li&gt;
&lt;li&gt;Wherever possible, each module should be run as infrequently as possible.&amp;nbsp; This is effectively known as cook down.&amp;nbsp; OpsMgr has the basic intelligence necessary to minimize the executions of modules: whenever the effective configuration section of a given module is identical across multiple workflows, that module will only be run once.&amp;nbsp; Its output will be used as input to the next module in line for any workflow in which the cooked down module is referenced.&amp;nbsp; The is especially true for &lt;font color="#800000"&gt;DataSource&lt;/font&gt; modules, as they have no input.&amp;nbsp; Since they are at the beginning of the chain, they are prime candidates for cook down.&amp;nbsp; I cannot speak directly for &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; or &lt;font color="#800000"&gt;WriteAction&lt;/font&gt; modules as they have an input &lt;font color="#800000"&gt;DataItem&lt;/font&gt; that would seem to nullify the ability to cook them down.&amp;nbsp; I am similarly unsure of the exact behavior of &lt;font color="#800000"&gt;ProbeAction&lt;/font&gt; modules with respect to cook down.&amp;nbsp; They have a &lt;font color="#ff0000"&gt;TriggerOnly&lt;/font&gt; attribute that, when &lt;font color="#0000ff"&gt;true&lt;/font&gt;, obviates the need for an input &lt;font color="#800000"&gt;DataItem&lt;/font&gt;, so I would suspect that they are candidates, but I have tested only &lt;font color="#800000"&gt;DataSource&lt;/font&gt; modules.&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;In this post, I will develop an MP that uses a scripted &lt;font color="#800000"&gt;DataSourceModuleType&lt;/font&gt; that cooks down to one call, but services many workflow instances (monitors).&amp;nbsp; The example I will develop in this MP is a printer monitoring MP.&amp;nbsp; We will endeavor to have a &lt;font color="#800000"&gt;DataSource&lt;/font&gt; module that runs once, returns the status of all printers, and is then used in the individual unit monitor workflows for all states of all monitors of all printers.&amp;nbsp; That is useful in and of itself, but the design pattern is absolutely critical, especially where the &lt;font color="#800000"&gt;DataSource&lt;/font&gt; module performs operations that are far more expensive than obtaining printer status.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Deviating from the Defaults&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;#39;s examine a script-based monitor created with the UI.&amp;nbsp; There are several standard features of interest that limit the extent to which you can build monitors that cook down through the UI.&amp;nbsp; While you can create a monitor that cooks down to a higher level of abstraction, you cannot have a single script be utilized in more than one monitor.&amp;nbsp; For example, using the UI, you can construct a &lt;font color="#800000"&gt;UnitMonitor&lt;/font&gt; that runs once per server and returns the status for all printers, but you will still need multiple executions for multiple monitors.&amp;nbsp; In some cases, this still might be a waste of resources.&amp;nbsp; By authoring the MP directly, we will be able to build our own &lt;font color="#800000"&gt;DataSourceModuleType&lt;/font&gt; that will run once per server &lt;em&gt;and&lt;/em&gt; service multiple monitors.&amp;nbsp; This is the best design and also allows a single data source to drive monitors and performance collection rules, for example.&amp;nbsp; After we build our own, I will return to the UI-generated monitor and discuss how to build a monitor that cooks down at least partially.&lt;/p&gt;
&lt;p&gt;First, here are the screen shots of a simple &lt;font color="#800000"&gt;UnitMonitor&lt;/font&gt; created with the UI.&amp;nbsp; This monitor is not functional.&amp;nbsp; I have intentionally left the script body alone and specified deliberate values for the various parts of the monitor.&amp;nbsp; This will help us see where these values appear in the resultant XML in the management pack.&lt;/p&gt;
&lt;p&gt;Figure 1: The script template.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/UIMonitor1.png"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="434" alt="UIMonitor1" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/UIMonitor1_thumb.png" width="742" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Figure 2: The script parameters.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/UIMonitor2.png"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="254" alt="UIMonitor2" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/UIMonitor2_thumb.png" width="504" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Figure 3: The unhealthy expression.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/UIMonitor3.png"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="337" alt="UIMonitor3" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/UIMonitor3_thumb.png" width="743" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Figure 4: The healthy expression.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/UIMonitor4.png"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="336" alt="UIMonitor4" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/UIMonitor4_thumb.png" width="743" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Here is the &lt;font color="#800000"&gt;UnitMonitor&lt;/font&gt; that this generates, with some key highlights:&lt;/p&gt;
&lt;p&gt;(Figure 5: The UI-generated &lt;font color="#800000"&gt;UnitMonitor&lt;/font&gt;)&lt;/p&gt;&lt;pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;p&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;UnitMonitor&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;UIGeneratedMonitor...&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Accessibility&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Public&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Enabled&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;&lt;span style="COLOR:#0000ff;"&gt;&lt;/span&gt;&lt;span style="COLOR:#ff0000;"&gt;Target&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;com.focus24.PrinterMonitoring.WindowsPrinter&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ParentMonitorID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Health!System.Health.AvailabilityState&amp;quot;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="COLOR:#0000ff;"&gt;&lt;/span&gt;&lt;span style="COLOR:#ff0000;"&gt;Remotable&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Priority&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Normal&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;TypeID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;BACKGROUND-COLOR:#ffff00;"&gt;&amp;quot;Windows!Microsoft.Windows.TimedScript.TwoStateMonitorType&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ConfirmDelivery&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/p&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Category&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Custom&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Category&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OperationalStates&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OperationalState&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;UIGeneratedOpStateId1...&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;MonitorTypeStateID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Error&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;HealthState&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Warning&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OperationalState&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;UIGeneratedOpStateId2...&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;MonitorTypeStateID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Success&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;HealthState&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Success&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OperationalStates&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Configuration&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;IntervalSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;900&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;IntervalSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SyncTime&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ScriptName&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="BACKGROUND-COLOR:#ffff00;"&gt;UIGeneratedMonitor.vbs&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ScriptName&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Arguments&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="BACKGROUND-COLOR:#ffff00;"&gt;UIGeneratedMonitor Parameters Are Inserted Here&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Arguments&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ScriptBody&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="BACKGROUND-COLOR:#ffff00;"&gt;...omitted; it&amp;#39;s the simple template...&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ScriptBody&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TimeoutSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;60&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TimeoutSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ErrorExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;String&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="BACKGROUND-COLOR:#ffff00;"&gt;UnhealthyParameterName&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Equal&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;String&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="BACKGROUND-COLOR:#ffff00;"&gt;UnhealthyParameterValue&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ErrorExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SuccessExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;String&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="BACKGROUND-COLOR:#ffff00;"&gt;HealthyParameterName&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Equal&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;String&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="BACKGROUND-COLOR:#ffff00;"&gt;HealthyParameterValue&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SuccessExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Configuration&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;UnitMonitor&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;The highlights show where the values specified using the UI appear in the MP.&amp;nbsp; I also highlighted the &lt;font color="#800000"&gt;UnitMonitorType&lt;/font&gt; that this utilizes.&amp;nbsp; That particular &lt;font color="#800000"&gt;UnitMonitorType&lt;/font&gt; is almost entirely a pass-through for the &lt;font color="#800000"&gt;UnitMonitor&lt;/font&gt; itself.&amp;nbsp; It defines two &lt;font color="#800000"&gt;MonitorTypeState&lt;/font&gt; elements, utilizes a &lt;font color="#800000"&gt;DataSource&lt;/font&gt; and two &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; modules, and utilizes those modules in the &lt;font color="#800000"&gt;RegularDetection&lt;/font&gt; elements for each state.&amp;nbsp; The reason I have dubbed it &amp;quot;almost entirely a pass-through&amp;quot; is that the &lt;font color="#800000"&gt;Configuration&lt;/font&gt; for the &lt;font color="#800000"&gt;DataSource&lt;/font&gt; and two &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; modules are simply the &lt;font color="#0000ff"&gt;$Config/...$&lt;/font&gt; expressions for each element.&amp;nbsp; Ergo, everything required by the &lt;font color="#800000"&gt;UnitMonitorType&lt;/font&gt; must be specified in the &lt;font color="#800000"&gt;UnitMonitor&lt;/font&gt;.&amp;nbsp; As you will see, this is not the most conducive arrangement for cook down.&lt;/p&gt;
&lt;p&gt;For the &lt;font color="#800000"&gt;UnitMonitor&lt;/font&gt; itself, note the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For the any &lt;font color="#800000"&gt;Configuration&lt;/font&gt; element, you have all of the usual replacement expressions available to you: &lt;font color="#0000ff"&gt;$MPElement$&lt;/font&gt;, &lt;font color="#0000ff"&gt;$Target$&lt;/font&gt;, etc.&amp;nbsp; Following the normal pattern, you will need to pass something specifically identifiable about the &lt;font color="#0000ff"&gt;$Target$&lt;/font&gt; to the script, such that it can test the appropriate target.&amp;nbsp; For instance, for a logical disk monitor, you need to pass the computer name and logical disk name in order to return something meaningful from a script that is used in a monitor that targets a logical disk. &lt;/li&gt;
&lt;li&gt;The script template that is inserted creates a property bag, shows examples of how to set properties in the property bag, and then returns the property bag to OpsMgr.&amp;nbsp; This is also in line with the normal pattern of one invocation returning a property bag for one target. &lt;/li&gt;
&lt;li&gt;The underlying &lt;font color="#800000"&gt;UnitMonitorType&lt;/font&gt; is built with &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; modules that uses an &lt;font color="#800000"&gt;XPathQuery&lt;/font&gt; to test the value of a particular property (like @Name=&amp;quot;State&amp;quot;), setting the monitor state according to the expressions you provide (2 for a two-state monitor, 3 for a three-state monitor).&amp;nbsp; This, at least, always cooks down: the &lt;font color="#800000"&gt;DataSource&lt;/font&gt; module is run once and its output is sent to both &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; modules.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;If we are to create a script that can be cooked down, we will have to deviate from this in several key ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The effective &lt;font color="#800000"&gt;Configuration&lt;/font&gt; of the underlying &lt;font color="#800000"&gt;DataSource&lt;/font&gt; module must have some level of abstraction.&amp;nbsp; By definition, if we&amp;#39;re hoping to cook a script down to 1 run for X targets, you cannot have the script rely on information specific to each target.&amp;nbsp; Therefore, in our example, we will likely only want the script know the computer name. &lt;/li&gt;
&lt;li&gt;We will want to have several &lt;font color="#800000"&gt;Configuration&lt;/font&gt; elements related to the scripted &lt;font color="#800000"&gt;DataSource&lt;/font&gt; be removed from the individual workflow &lt;font color="#800000"&gt;Configuration&lt;/font&gt; entirely.&amp;nbsp; This is especially true for the script name and body.&amp;nbsp; While I believe it would be possible for OpsMgr to cook down two completely different workflows based on whether their script name and body matched exactly, this would be an incredible waste of space in the management pack, especially if the script is long and complicated.&amp;nbsp; You probably would have a hard time keeping it identical as well, especially if you base a large number of workflows on a single script.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Therefore, we will opt to author a single &lt;font color="#800000"&gt;DataSourceModuleType&lt;/font&gt; that is used by several &lt;font color="#800000"&gt;UnitMonitorTypes&lt;/font&gt; that are used by even more &lt;font color="#800000"&gt;UnitMonitors&lt;/font&gt;.&amp;nbsp; We could also use the &lt;font color="#800000"&gt;DataSourceModuleType&lt;/font&gt; in &lt;font color="#800000"&gt;Rules&lt;/font&gt;, etc., but we will keep this example to just &lt;font color="#800000"&gt;UnitMonitors&lt;/font&gt;.&amp;nbsp; Remember: the goal is to have the &lt;font color="#800000"&gt;DataSource&lt;/font&gt; module run once and service every other workflow.&amp;nbsp; Let&amp;#39;s move on to building the MP.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Building the MP Shell&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We will need several sections of our MP to be built before we can even consider a single monitor.&amp;nbsp; I will not discuss these at length, but feel free to comment with any questions or observations.&amp;nbsp; I will brain dump these for your reference when you review the MP:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The manifest and references define the MP and set up its references and aliases. &lt;/li&gt;
&lt;li&gt;The class definitions declare a printer class that derives from &lt;font color="#0000ff"&gt;Microsoft.Windows.LogicalDevice&lt;/font&gt;.&amp;nbsp; Since this class is appropriate and already hosted, I thought it was the best candidate.&amp;nbsp; The printers hosted by a server are not necessarily connected directly to the server or even in the same building, but this is still a good choice.&amp;nbsp; I have selected some interesting properties to capture about the printer, but I&amp;#39;ll rely on &lt;font color="#0000ff"&gt;Microsoft.Windows.LogicalDevice&lt;/font&gt; and its hosts &lt;font color="#0000ff"&gt;Microsoft.Windows.Computer&lt;/font&gt; to carry the declarative burden of key fields. &lt;/li&gt;
&lt;li&gt;No additional relationships are needed and the dependency monitor for the Windows Server model will already roll up our status accordingly. &lt;/li&gt;
&lt;li&gt;I have declared a &lt;font color="#800000"&gt;DataSourceModuleType&lt;/font&gt; (.vbs) to discover the printers.&amp;nbsp; You&amp;#39;ll note that each discovery class instance includes key properties for the host.&amp;nbsp; This is required by OpsMgr, but allows it to generate the hosting relationships for you. &lt;/li&gt;
&lt;li&gt;The &lt;font color="#800000"&gt;DataSourceModuleType&lt;/font&gt; exposes its interval, timeout, and sync time as &lt;font color="#800000"&gt;OverrideableParameters&lt;/font&gt;. &lt;/li&gt;
&lt;li&gt;That &lt;font color="#800000"&gt;DataSourceModuleType&lt;/font&gt; is used in the &lt;font color="#800000"&gt;Discovery&lt;/font&gt;.&amp;nbsp; The &lt;font color="#800000"&gt;Discovery&lt;/font&gt; targets &lt;font color="#0000ff"&gt;Microsoft.Windows.Server.2003&lt;/font&gt; computers.&amp;nbsp; I was selective in choosing 2003 because it exposes improved WMI classes for printers than do the previous versions.&amp;nbsp; The &lt;font color="#800000"&gt;Discovery&lt;/font&gt; is also disabled by default.&amp;nbsp; A group should be created for 2003 servers that are &amp;quot;interesting&amp;quot; print servers and an override targeted to that group should be created to enable the &lt;font color="#800000"&gt;Discovery&lt;/font&gt;.&amp;nbsp; This is what I feel is proper form for any management pack.&amp;nbsp; For testing purposes in a lab, you could just enable this rule. &lt;/li&gt;
&lt;li&gt;In this case, you&amp;#39;ll have to put the new group and overrides in this MP since it will not be sealed.&amp;nbsp; For a sealed MP, the group and override would need to be in some separate unsealed MP.&amp;nbsp; This is one of the main reasons to seal an MP, even if the signing and security aspects are not required: it allows updates to the core MP without affecting operational changes, such as overrides, groups, and group membership. &lt;/li&gt;
&lt;li&gt;In &lt;font color="#800000"&gt;PresentationTypes&lt;/font&gt; I declare an &lt;font color="#800000"&gt;Image&lt;/font&gt; resource for the class I expose.&amp;nbsp; This is an 80x80 diagram PNG image.&amp;nbsp; I like the impact of having custom images for the diagram view and distributed applications. &lt;/li&gt;
&lt;li&gt;In &lt;font color="#800000"&gt;Presentation&lt;/font&gt;, I declare several &lt;font color="#800000"&gt;Views&lt;/font&gt;: a state view, a diagram view, and a folder to put them in. &lt;/li&gt;
&lt;li&gt;There are also, of course, &lt;font color="#800000"&gt;DisplayStrings&lt;/font&gt; for everything.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Building the Unified Data Source&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The unified data source will be a rather simple script, ironically.&amp;nbsp; If we remember that the goal of this design pattern is to have the script do expensive work once, you will find that they will commonly be simple.&amp;nbsp; This will be true if the expense is in &lt;em&gt;retrieving&lt;/em&gt; the data from the source (e.g. from a very slow or expensive system or via a very slow or expensive connection).&amp;nbsp; The complexity of the script will increase substantially if the cost is in calculating the data from the source.&amp;nbsp; This would be true if the data were raw and needed to be processed or transformed (e.g. statistical calculations, hashes, cryptographic requirements, etc.)&amp;nbsp; Here, then, is the declaration of &lt;font color="#800000"&gt;DataSourceModuleType&lt;/font&gt; for our example printer monitoring MP:&lt;/p&gt;
&lt;p&gt;(Figure 6: The cook-down friendly &lt;font color="#800000"&gt;DataSourceModuleType&lt;/font&gt;)&lt;/p&gt;&lt;pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;DataSourceModuleType&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;com.focus24.PrinterMonitoring.WindowsPrinter.MonitorDSM&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Accessibility&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Public&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Configuration&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#c71585;"&gt;xsd&lt;/span&gt;:&lt;span style="COLOR:#800000;"&gt;element&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;xmlns&lt;/span&gt;:&lt;span style="COLOR:#ff0000;"&gt;xsd&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;IntervalSeconds&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;xsd:int&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#c71585;"&gt;xsd&lt;/span&gt;:&lt;span style="COLOR:#800000;"&gt;element&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;xmlns&lt;/span&gt;:&lt;span style="COLOR:#ff0000;"&gt;xsd&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;SyncTime&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;xsd:string&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#c71585;"&gt;xsd&lt;/span&gt;:&lt;span style="COLOR:#800000;"&gt;element&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;xmlns&lt;/span&gt;:&lt;span style="COLOR:#ff0000;"&gt;xsd&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;TimeoutSeconds&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;xsd:integer&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#c71585;"&gt;xsd&lt;/span&gt;:&lt;span style="COLOR:#800000;"&gt;element&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;xmlns&lt;/span&gt;:&lt;span style="COLOR:#ff0000;"&gt;xsd&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;PrincipalName&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;xsd:string&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Configuration&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OverrideableParameters&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OverrideableParameter&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;IntervalSeconds&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Selector&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;$Config/IntervalSeconds$&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ParameterType&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;int&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OverrideableParameter&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;SyncTime&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Selector&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;$Config/SyncTime$&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ParameterType&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OverrideableParameter&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;TimeoutSeconds&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Selector&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;$Config/TimeoutSeconds$&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ParameterType&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;int&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OverrideableParameters&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ModuleImplementation&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Composite&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MemberModules&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;DataSource&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;DS1&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;TypeID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Windows!Microsoft.Windows.TimedScript.PropertyBagProvider&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;IntervalSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/IntervalSeconds$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;IntervalSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SyncTime&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/SyncTime$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SyncTime&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ScriptName&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;com.focus24.PrinterMonitoring.WindowsPrinter.MonitorDSM.vbs&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ScriptName&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Arguments&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/PrincipalName$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Arguments&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ScriptBody&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;Option&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;Explicit&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;Dim&lt;/span&gt; oWbemServices, oPrinter
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;Dim&lt;/span&gt; oAPI, oBag
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;Set&lt;/span&gt; oAPI = WScript.&lt;span style="COLOR:#0000ff;"&gt;CreateObject&lt;/span&gt;(&amp;quot;&lt;span style="COLOR:#8b0000;"&gt;MOM.ScriptAPI&lt;/span&gt;&amp;quot;)
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;oAPI.LogScriptEvent &amp;quot;&lt;span style="COLOR:#8b0000;"&gt;com.focus24.PrinterMonitoring.WindowsPrinter.MonitorDSM.vbs&lt;/span&gt;&amp;quot;, 1002, 0, &amp;quot;&lt;span style="COLOR:#8b0000;"&gt;Printer Monitor Starting&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;Set&lt;/span&gt; oWbemServices = &lt;span style="COLOR:#0000ff;"&gt;GetObject&lt;/span&gt;(&amp;quot;&lt;span style="COLOR:#8b0000;"&gt;winmgmts:{impersonationLevel=impersonate}!\\&lt;/span&gt;&amp;quot; &amp;amp;amp; WScript.Arguments(0) &amp;amp;amp; &amp;quot;&lt;span style="COLOR:#8b0000;"&gt;\root\cimv2&lt;/span&gt;&amp;quot;)
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;For&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;Each&lt;/span&gt; oPrinter &lt;span style="COLOR:#0000ff;"&gt;in&lt;/span&gt; oWbemServices.ExecQuery(&amp;quot;&lt;span style="COLOR:#8b0000;"&gt;SELECT Name,DetectedErrorState,PrinterStatus,Workoffline FROM Win32_Printer WHERE Network=false&lt;/span&gt;&amp;quot;)
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;Set&lt;/span&gt; oBag = oAPI.CreatePropertyBag()
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	oBag.AddValue &amp;quot;&lt;span style="COLOR:#8b0000;"&gt;DeviceID&lt;/span&gt;&amp;quot;, &amp;quot;&lt;span style="COLOR:#8b0000;"&gt;Printer:&lt;/span&gt;&amp;quot; &amp;amp;amp; oPrinter.Name &amp;amp;amp; &amp;quot;&lt;span style="COLOR:#8b0000;"&gt;&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	oBag.AddValue &amp;quot;&lt;span style="COLOR:#8b0000;"&gt;DetectedErrorState&lt;/span&gt;&amp;quot;, oPrinter.DetectedErrorState &amp;amp;amp; &amp;quot;&lt;span style="COLOR:#8b0000;"&gt;&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	oBag.AddValue &amp;quot;&lt;span style="COLOR:#8b0000;"&gt;PrinterStatus&lt;/span&gt;&amp;quot;, oPrinter.PrinterStatus &amp;amp;amp; &amp;quot;&lt;span style="COLOR:#8b0000;"&gt;&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	oBag.AddValue &amp;quot;&lt;span style="COLOR:#8b0000;"&gt;Workoffline&lt;/span&gt;&amp;quot;, oPrinter.Workoffline &amp;amp;amp; &amp;quot;&lt;span style="COLOR:#8b0000;"&gt;&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;	oAPI.AddItem oBag
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;Next&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;oAPI.LogScriptEvent &amp;quot;&lt;span style="COLOR:#8b0000;"&gt;com.focus24.PrinterMonitoring.WindowsPrinter.MonitorDSM.vbs&lt;/span&gt;&amp;quot;, 1003, 0, &amp;quot;&lt;span style="COLOR:#8b0000;"&gt;Printer Monitor Ending&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;oAPI.ReturnItems()
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ScriptBody&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SecureInput&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TimeoutSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/TimeoutSeconds$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TimeoutSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;EventPolicy&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;DataSource&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MemberModules&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Composition&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;DS1&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Composition&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Composite&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ModuleImplementation&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OutputType&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;System!System.PropertyBagData&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OutputType&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;DataSourceModuleType&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;Highlighted in this declaration are the following characteristics of this &lt;font color="#800000"&gt;DataSourceModuleType&lt;/font&gt; that make it ready for cook down:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Of the possible &lt;font color="#800000"&gt;Configuration&lt;/font&gt; elements of the underlying &lt;font color="#0000ff"&gt;Microsoft.Windows.TimedScript.PropertyBagProvider&lt;/font&gt;, the only ones that are exposed and subject to change are &lt;font color="#800000"&gt;IntervalSeconds&lt;/font&gt;, &lt;font color="#800000"&gt;SyncTime&lt;/font&gt;, and &lt;font color="#800000"&gt;TimeoutSeconds&lt;/font&gt;.&amp;nbsp; As we will see, these can still cause issues because they can be overridden; however, this is a risk that must be endured since a module that cannot be configured through overrides is bound to be problematic in any environment. &lt;/li&gt;
&lt;li&gt;We have added another &lt;font color="#800000"&gt;Configuration&lt;/font&gt; element, &lt;font color="#800000"&gt;PrincipalName&lt;/font&gt;.&amp;nbsp; This is passed as the sole item in the &lt;font color="#800000"&gt;Arguments&lt;/font&gt; element.&amp;nbsp; Having this be a blatantly named &lt;font color="#800000"&gt;Configuration&lt;/font&gt; element should ensure that the script is implemented as we require it to be to take advantage of the cook down we&amp;#39;re designing into it. &lt;/li&gt;
&lt;li&gt;For the script itself, note that we are iterating through all printers and using the &lt;font color="#0000ff"&gt;CreatePropertyBag&lt;/font&gt; method of the scripting API &lt;em&gt;for each instance&lt;/em&gt;. &lt;/li&gt;
&lt;li&gt;Note that each property bag itself contains values that you can already predict will be useful to multiple &lt;font color="#800000"&gt;Monitors&lt;/font&gt;, &lt;font color="#800000"&gt;Rules&lt;/font&gt;, etc.&amp;nbsp; Again, we are continuing to build on the concept that while we are accessing the source, we should gather as much information as we can to minimize the expense. &lt;/li&gt;
&lt;li&gt;The per-instance property bag is added to the output using the scripting API&amp;#39;s &lt;font color="#0000ff"&gt;AddItem&lt;/font&gt; method, which is not a well-known method, since it does not appear in the simple template the UI provides. &lt;/li&gt;
&lt;li&gt;Since there have been multiple property bag items added to the output, the script ends with a call to the &lt;font color="#0000ff"&gt;ReturnItems&lt;/font&gt; method, which takes no parameters, rather than the usual &lt;font color="#0000ff"&gt;Return&lt;/font&gt; with the property bag as the parameter. &lt;/li&gt;
&lt;li&gt;Finally, note the &lt;font color="#0000ff"&gt;LogScriptEvent&lt;/font&gt; method calls, which log events 1002 and 1003.&amp;nbsp; These will be important when we confirm the number of invocations of our script. &lt;/li&gt;
&lt;li&gt;These three characteristics of our script deviate from the UI-provided template and form the basis for a unified &lt;font color="#800000"&gt;DataSourceModuleType&lt;/font&gt;.&amp;nbsp; The point here is that the &lt;font color="#800000"&gt;DataSource&lt;/font&gt; runs once and returns enough information to satisfy multiple workflows for multiple targets.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The XML representation of this script&amp;#39;s output also deviates from the traditional &lt;font color="#800000"&gt;DataItem&lt;/font&gt; by wrapping multiple &lt;font color="#800000"&gt;DataItems&lt;/font&gt; in a &lt;font color="#800000"&gt;Collection&lt;/font&gt; element.&amp;nbsp; For example:&lt;/p&gt;
&lt;p&gt;(Figure 7: An example &lt;font color="#800000"&gt;Collection&lt;/font&gt; &lt;font color="#800000"&gt;DataItem&lt;/font&gt;)&lt;/p&gt;&lt;pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Collection&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;DataItem&lt;/span&gt; ...&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;        &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Property&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;DeviceID&amp;quot;&lt;/span&gt; ...&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Printer:NameOfPrinter1&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Property&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;        &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Property&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;DetectedErrorState&amp;quot;&lt;/span&gt; ...&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;...&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Property&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;DataItem&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;DataItem&lt;/span&gt; ...&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;        &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Property&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;DeviceID&amp;quot;&lt;/span&gt; ...&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Printer:NameOfPrinter2&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Property&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;        &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Property&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;DetectedErrorState&amp;quot;&lt;/span&gt; ...&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;...&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Property&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;DataItem&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Collection&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;The behavior that makes this useful is that OpsMgr will now send each &lt;font color="#800000"&gt;DataItem&lt;/font&gt; in the &lt;font color="#800000"&gt;Collection&lt;/font&gt; to the next module in any workflow that utilizes this &lt;font color="#800000"&gt;DataSource&lt;/font&gt; for any target, as long as the effective &lt;font color="#800000"&gt;Configuration&lt;/font&gt; is the same.&amp;nbsp; For us, this means that subsequent modules for every workflow for every target on a single machine will be serviced by a single run of this &lt;font color="#800000"&gt;DataSource&lt;/font&gt;.&lt;/p&gt;
&lt;p&gt;Our next order of business will be to utilize this module in some &lt;font color="#800000"&gt;UnitMonitorTypes&lt;/font&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Building the Unit Monitor Types&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The design pattern for every workflow that will use our &lt;font color="#800000"&gt;DataSourceModuleType&lt;/font&gt; is essentially the same: specify our module as the start and then have its output fed to &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; modules that will filter down the output to just what we need for the particular workflow and target.&amp;nbsp; We will see concrete examples of &lt;font color="#800000"&gt;UnitMonitorTypes&lt;/font&gt;, but this pattern applies to any type of workflow that can consume the output.&amp;nbsp; We&amp;#39;ll talk through a few of these other examples after we complete the sample MP.&amp;nbsp; These examples are long, based on the verbosity of the &lt;font color="#800000"&gt;UnitMonitorType&lt;/font&gt; schema, but worth including in their entirety.&amp;nbsp; Here, then, are two &lt;font color="#800000"&gt;UnitMonitorTypes&lt;/font&gt; that utilize the unified &lt;font color="#800000"&gt;DataSourceModuleType&lt;/font&gt;, with some highlights we will discuss below:&lt;/p&gt;
&lt;p&gt;(Figure 8: Two &lt;font color="#800000"&gt;UnitMonitorTypes&lt;/font&gt; based on our &lt;font color="#800000"&gt;DataSourceModuleType&lt;/font&gt;)&lt;/p&gt;&lt;pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;UnitMonitorType&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;com.focus24.PrinterMonitoring.WindowsPrinter.ErrorStateUMT&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Accessibility&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Internal&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MonitorTypeStates&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MonitorTypeState&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;StateIsHealthy&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;NoDetection&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MonitorTypeState&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;StateIsWarning&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;NoDetection&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MonitorTypeState&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;StateIsCritical&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;NoDetection&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MonitorTypeStates&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Configuration&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#c71585;"&gt;xsd&lt;/span&gt;:&lt;span style="COLOR:#800000;"&gt;element&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;xmlns&lt;/span&gt;:&lt;span style="COLOR:#ff0000;"&gt;xsd&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;IntervalSeconds&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;xsd:int&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#c71585;"&gt;xsd&lt;/span&gt;:&lt;span style="COLOR:#800000;"&gt;element&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;xmlns&lt;/span&gt;:&lt;span style="COLOR:#ff0000;"&gt;xsd&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;SyncTime&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;xsd:string&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#c71585;"&gt;xsd&lt;/span&gt;:&lt;span style="COLOR:#800000;"&gt;element&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;xmlns&lt;/span&gt;:&lt;span style="COLOR:#ff0000;"&gt;xsd&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;TimeoutSeconds&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;xsd:integer&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#c71585;"&gt;xsd&lt;/span&gt;:&lt;span style="COLOR:#800000;"&gt;element&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;xmlns&lt;/span&gt;:&lt;span style="COLOR:#ff0000;"&gt;xsd&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;PrincipalName&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;xsd:string&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#c71585;"&gt;xsd&lt;/span&gt;:&lt;span style="COLOR:#800000;"&gt;element&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;xmlns&lt;/span&gt;:&lt;span style="COLOR:#ff0000;"&gt;xsd&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;DeviceID&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;xsd:string&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#c71585;"&gt;xsd&lt;/span&gt;:&lt;span style="COLOR:#800000;"&gt;element&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;xmlns&lt;/span&gt;:&lt;span style="COLOR:#ff0000;"&gt;xsd&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;SpecificState&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;xsd:string&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#c71585;"&gt;xsd&lt;/span&gt;:&lt;span style="COLOR:#800000;"&gt;element&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;xmlns&lt;/span&gt;:&lt;span style="COLOR:#ff0000;"&gt;xsd&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Warning0Critical1&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;xsd:string&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Configuration&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OverrideableParameters&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OverrideableParameter&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;IntervalSeconds&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Selector&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;$Config/IntervalSeconds$&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ParameterType&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;int&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OverrideableParameter&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;SyncTime&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Selector&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;$Config/SyncTime$&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ParameterType&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OverrideableParameter&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;TimeoutSeconds&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Selector&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;$Config/TimeoutSeconds$&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ParameterType&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;int&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OverrideableParameter&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Warning0Critical1&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Selector&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;$Config/Warning0Critical1$&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ParameterType&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OverrideableParameters&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MonitorImplementation&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MemberModules&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;DataSource&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;DS1&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;TypeID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;com.focus24.PrinterMonitoring.WindowsPrinter.MonitorDSM&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;IntervalSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/IntervalSeconds$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;IntervalSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SyncTime&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/SyncTime$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SyncTime&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TimeoutSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/TimeoutSeconds$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TimeoutSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;PrincipalName&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/PrincipalName$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;PrincipalName&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;DataSource&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;FilterForStateIsHealthy&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;TypeID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;System!System.ExpressionFilter&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;And&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Property[@Name=&amp;#39;DeviceID&amp;#39;]&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Equal&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/DeviceID$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Property[@Name=&amp;#39;DetectedErrorState&amp;#39;]&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;NotEqual&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/SpecificState$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;And&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;FilterForStateIsWarning&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;TypeID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;System!System.ExpressionFilter&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;And&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Property[@Name=&amp;#39;DeviceID&amp;#39;]&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Equal&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/DeviceID$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Property[@Name=&amp;#39;DetectedErrorState&amp;#39;]&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Equal&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/SpecificState$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/Warning0Critical1$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Equal&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;And&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;FilterForStateIsCritical&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;TypeID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;System!System.ExpressionFilter&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;And&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Property[@Name=&amp;#39;DeviceID&amp;#39;]&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Equal&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/DeviceID$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Property[@Name=&amp;#39;DetectedErrorState&amp;#39;]&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Equal&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/SpecificState$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/Warning0Critical1$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Equal&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;1&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;And&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MemberModules&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RegularDetections&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RegularDetection&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;MonitorTypeStateID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;StateIsHealthy&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;FilterForStateIsHealthy&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;DS1&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RegularDetection&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RegularDetection&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;MonitorTypeStateID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;StateIsWarning&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;FilterForStateIsWarning&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;DS1&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RegularDetection&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RegularDetection&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;MonitorTypeStateID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;StateIsCritical&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;FilterForStateIsCritical&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;DS1&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RegularDetection&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RegularDetections&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MonitorImplementation&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;UnitMonitorType&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;UnitMonitorType&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;com.focus24.PrinterMonitoring.WindowsPrinter.WorkingOfflineUMT&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Accessibility&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Internal&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MonitorTypeStates&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MonitorTypeState&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;StateIsHealthy&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;NoDetection&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MonitorTypeState&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;StateIsWarning&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;NoDetection&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MonitorTypeState&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;StateIsCritical&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;NoDetection&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MonitorTypeStates&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Configuration&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#c71585;"&gt;xsd&lt;/span&gt;:&lt;span style="COLOR:#800000;"&gt;element&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;xmlns&lt;/span&gt;:&lt;span style="COLOR:#ff0000;"&gt;xsd&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;IntervalSeconds&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;xsd:int&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#c71585;"&gt;xsd&lt;/span&gt;:&lt;span style="COLOR:#800000;"&gt;element&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;xmlns&lt;/span&gt;:&lt;span style="COLOR:#ff0000;"&gt;xsd&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;SyncTime&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;xsd:string&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#c71585;"&gt;xsd&lt;/span&gt;:&lt;span style="COLOR:#800000;"&gt;element&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;xmlns&lt;/span&gt;:&lt;span style="COLOR:#ff0000;"&gt;xsd&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;TimeoutSeconds&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;xsd:integer&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#c71585;"&gt;xsd&lt;/span&gt;:&lt;span style="COLOR:#800000;"&gt;element&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;xmlns&lt;/span&gt;:&lt;span style="COLOR:#ff0000;"&gt;xsd&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;PrincipalName&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;xsd:string&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#c71585;"&gt;xsd&lt;/span&gt;:&lt;span style="COLOR:#800000;"&gt;element&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;xmlns&lt;/span&gt;:&lt;span style="COLOR:#ff0000;"&gt;xsd&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;DeviceID&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;xsd:string&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#c71585;"&gt;xsd&lt;/span&gt;:&lt;span style="COLOR:#800000;"&gt;element&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;xmlns&lt;/span&gt;:&lt;span style="COLOR:#ff0000;"&gt;xsd&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Warning0Critical1&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;xsd:string&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Configuration&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OverrideableParameters&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OverrideableParameter&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;IntervalSeconds&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Selector&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;$Config/IntervalSeconds$&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ParameterType&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;int&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OverrideableParameter&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;SyncTime&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Selector&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;$Config/SyncTime$&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ParameterType&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OverrideableParameter&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;TimeoutSeconds&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Selector&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;$Config/TimeoutSeconds$&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ParameterType&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;int&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OverrideableParameter&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Warning0Critical1&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Selector&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;$Config/Warning0Critical1$&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ParameterType&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OverrideableParameters&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MonitorImplementation&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MemberModules&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;DataSource&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;DS1&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;TypeID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;com.focus24.PrinterMonitoring.WindowsPrinter.MonitorDSM&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;IntervalSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/IntervalSeconds$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;IntervalSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SyncTime&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/SyncTime$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SyncTime&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TimeoutSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/TimeoutSeconds$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TimeoutSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;PrincipalName&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/PrincipalName$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;PrincipalName&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;DataSource&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;FilterForStateIsHealthy&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;TypeID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;System!System.ExpressionFilter&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;And&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Property[@Name=&amp;#39;DeviceID&amp;#39;]&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Equal&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/DeviceID$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Property[@Name=&amp;#39;Workoffline&amp;#39;]&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Equal&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;False&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;And&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;FilterForStateIsWarning&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;TypeID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;System!System.ExpressionFilter&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;And&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Property[@Name=&amp;#39;DeviceID&amp;#39;]&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Equal&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/DeviceID$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Property[@Name=&amp;#39;Workoffline&amp;#39;]&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Equal&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;True&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/Warning0Critical1$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Equal&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;And&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;FilterForStateIsCritical&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;TypeID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;System!System.ExpressionFilter&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;And&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Property[@Name=&amp;#39;DeviceID&amp;#39;]&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Equal&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/DeviceID$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Property[@Name=&amp;#39;Workoffline&amp;#39;]&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;XPathQuery&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Equal&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;True&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/Warning0Critical1$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Equal&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Operator&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;									&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;1&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Value&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;								&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ValueExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;							&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SimpleExpression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;						&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;And&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Expression&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MemberModules&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RegularDetections&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RegularDetection&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;MonitorTypeStateID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;StateIsHealthy&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;FilterForStateIsHealthy&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;DS1&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RegularDetection&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RegularDetection&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;MonitorTypeStateID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;StateIsWarning&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;FilterForStateIsWarning&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;DS1&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RegularDetection&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RegularDetection&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;MonitorTypeStateID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;StateIsCritical&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;FilterForStateIsCritical&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;					&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;DS1&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;				&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RegularDetection&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RegularDetections&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MonitorImplementation&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;UnitMonitorType&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;Here are the highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First, I&amp;#39;ve added three more specific elements to the &lt;font color="#800000"&gt;Configuration&lt;/font&gt; element: &lt;font color="#800000"&gt;DeviceID&lt;/font&gt;, &lt;font color="#800000"&gt;SpecificState&lt;/font&gt;, and &lt;font color="#800000"&gt;Warning0Critical1&lt;/font&gt;.&amp;nbsp; These will be used to identify the target, the specific state to be detected, and the criticality of the condition, respectively.&amp;nbsp; Note that none of these are passed to the &lt;font color="#800000"&gt;DataSource&lt;/font&gt;, so it is insulated from any variations related to the target or the particular monitor.&amp;nbsp; Again, this points to OpsMgr&amp;#39;s ability to use a single run of the &lt;font color="#800000"&gt;DataSource&lt;/font&gt; module for multiple targets and workflows. &lt;/li&gt;
&lt;li&gt;I&amp;#39;ve also made &lt;font color="#800000"&gt;Warning0Critical1&lt;/font&gt; an &lt;font color="#800000"&gt;OverrideableParameter&lt;/font&gt;.&amp;nbsp; Using a three state monitor with this parameter gives us the ability to control the criticality of the actual monitor, not just the alert.&amp;nbsp; The monitor&amp;#39;s criticality is usually fixed. &lt;/li&gt;
&lt;li&gt;The &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; modules for the different states are much more complicated than before.&amp;nbsp; Now, we have two or three expressions that must be &lt;font color="#800000"&gt;And&amp;#39;&lt;/font&gt;ed together. 
&lt;ul&gt;
&lt;li&gt;The first expression matches only &lt;font color="#800000"&gt;DataItems&lt;/font&gt; related to this &lt;font color="#800000"&gt;DeviceID&lt;/font&gt; (&lt;font color="#800000"&gt;Target&lt;/font&gt;). &lt;/li&gt;
&lt;li&gt;The second expression matches whether or not we are in the &lt;font color="#800000"&gt;SpecificState&lt;/font&gt; (which is designed here as Unhealthy).&amp;nbsp; Note the difference between the Healthy &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; module and the Warning/Critical &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; modules. &lt;/li&gt;
&lt;li&gt;The third expression (only on the Warning and Critical &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; modules) matches our &lt;font color="#800000"&gt;Warning0Critical1&lt;/font&gt; parameter and matches only for the appropriate criticality.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;These design patterns follow for the second &lt;font color="#800000"&gt;UnitMonitorType&lt;/font&gt;, though there is no need for a &lt;font color="#800000"&gt;SpecificState&lt;/font&gt; &lt;font color="#800000"&gt;Configuration&lt;/font&gt; element because it is testing a boolean condition. &lt;/li&gt;
&lt;li&gt;Note that we should not use &lt;font color="#0000ff"&gt;$Target$&lt;/font&gt; references here.&amp;nbsp; Although they seem like they would fit, they in fact do not and their behavior is indeterminate, based on my observations.&amp;nbsp; We will use &lt;font color="#0000ff"&gt;$Config$&lt;/font&gt; references here and fill them with &lt;font color="#0000ff"&gt;$Target$&lt;/font&gt; references when we utilize the &lt;font color="#800000"&gt;UnitMonitorType&lt;/font&gt; in a &lt;font color="#800000"&gt;UnitMonitor&lt;/font&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The full picture of how this design pattern comes together should be starting to form at this point.&amp;nbsp; The only step left is to craft a few &lt;font color="#800000"&gt;UnitMonitors&lt;/font&gt; that are based on these &lt;font color="#800000"&gt;UnitMonitorType&lt;/font&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Building the Unit Monitors&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I can keep these examples simple.&amp;nbsp; Since there are a dozen or so error states for a printer, we could create that many &lt;font color="#800000"&gt;UnitMonitors&lt;/font&gt;.&amp;nbsp; We could also re-visit our &lt;font color="#800000"&gt;DataSource&lt;/font&gt; script and normalize the values somewhat (i.e. return a few discrete values for which we want monitors and return anything else as a single value we could roll into an &amp;quot;Other Problem&amp;quot; &lt;font color="#800000"&gt;UnitMonitor&lt;/font&gt;).&amp;nbsp; For our purposes, I will create three: two based on the first &lt;font color="#800000"&gt;UnitMonitorType&lt;/font&gt; and one based on the second.&amp;nbsp; This will be another large section of management pack XML, but well worth the review.&lt;/p&gt;
&lt;p&gt;(Figure 9: Three &lt;font color="#800000"&gt;UnitMonitors&lt;/font&gt; based on our two &lt;font color="#800000"&gt;UnitMonitorTypes&lt;/font&gt;)&lt;/p&gt;&lt;pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;UnitMonitor&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;com.focus24.PrinterMonitoring.WindowsPrinter.Error.Monitor&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#ff0000;"&gt;Accessibility&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Public&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Enabled&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#ff0000;"&gt;Target&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;com.focus24.PrinterMonitoring.WindowsPrinter&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#ff0000;"&gt;ParentMonitorID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Health!System.Health.AvailabilityState&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#ff0000;"&gt;Remotable&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Priority&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Normal&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#ff0000;"&gt;TypeID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;com.focus24.PrinterMonitoring.WindowsPrinter.ErrorStateUMT&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#ff0000;"&gt;ConfirmDelivery&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Category&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;AvailabilityHealth&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Category&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertSettings&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;AlertMessage&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;com.focus24.PrinterMonitoring.WindowsPrinter.Error.Alert&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertOnState&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Warning&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertOnState&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AutoResolve&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AutoResolve&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertPriority&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Normal&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertPriority&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertSeverity&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Warning&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertSeverity&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertParameters&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertParameter1&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Target/Host/Property[Type=&amp;quot;Windows!Microsoft.Windows.Computer&amp;quot;]/PrincipalName$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertParameter1&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertParameter2&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Target/Property[Type=&amp;quot;Windows!Microsoft.Windows.LogicalDevice&amp;quot;]/DeviceID$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertParameter2&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertParameters&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertSettings&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OperationalStates&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OperationalState&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;ErrorCritical&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;MonitorTypeStateID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;StateIsCritical&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;HealthState&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Error&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OperationalState&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;ErrorWarning&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;MonitorTypeStateID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;StateIsWarning&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;HealthState&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Warning&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OperationalState&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;ErrorHealthy&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;MonitorTypeStateID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;StateIsHealthy&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;HealthState&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Success&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OperationalStates&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Configuration&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;IntervalSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;300&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;IntervalSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SyncTime&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TimeoutSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;150&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TimeoutSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;PrincipalName&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Target/Host/Property[Type=&amp;quot;Windows!Microsoft.Windows.Computer&amp;quot;]/PrincipalName$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;PrincipalName&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;DeviceID&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Target/Property[Type=&amp;quot;Windows!Microsoft.Windows.LogicalDevice&amp;quot;]/DeviceID$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;DeviceID&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SpecificState&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;1&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SpecificState&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Warning0Critical1&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;0&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Warning0Critical1&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Configuration&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;UnitMonitor&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;UnitMonitor&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;com.focus24.PrinterMonitoring.WindowsPrinter.Offline.Monitor&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#ff0000;"&gt;Accessibility&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Public&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Enabled&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#ff0000;"&gt;Target&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;com.focus24.PrinterMonitoring.WindowsPrinter&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#ff0000;"&gt;ParentMonitorID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Health!System.Health.AvailabilityState&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#ff0000;"&gt;Remotable&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Priority&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Normal&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#ff0000;"&gt;TypeID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;com.focus24.PrinterMonitoring.WindowsPrinter.ErrorStateUMT&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#ff0000;"&gt;ConfirmDelivery&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Category&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;AvailabilityHealth&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Category&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertSettings&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;AlertMessage&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;com.focus24.PrinterMonitoring.WindowsPrinter.Offline.Alert&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertOnState&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Error&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertOnState&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AutoResolve&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AutoResolve&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertPriority&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Normal&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertPriority&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertSeverity&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Error&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertSeverity&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertParameters&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertParameter1&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Target/Host/Property[Type=&amp;quot;Windows!Microsoft.Windows.Computer&amp;quot;]/PrincipalName$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertParameter1&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertParameter2&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Target/Property[Type=&amp;quot;Windows!Microsoft.Windows.LogicalDevice&amp;quot;]/DeviceID$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertParameter2&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertParameters&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertSettings&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OperationalStates&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OperationalState&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;OfflineCritical&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;MonitorTypeStateID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;StateIsCritical&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;HealthState&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Error&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OperationalState&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;OfflineWarning&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;MonitorTypeStateID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;StateIsWarning&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;HealthState&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Warning&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OperationalState&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;OfflineHealthy&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;MonitorTypeStateID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;StateIsHealthy&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;HealthState&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Success&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OperationalStates&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Configuration&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;IntervalSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;300&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;IntervalSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SyncTime&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TimeoutSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;150&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TimeoutSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;PrincipalName&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Target/Host/Property[Type=&amp;quot;Windows!Microsoft.Windows.Computer&amp;quot;]/PrincipalName$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;PrincipalName&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;DeviceID&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Target/Property[Type=&amp;quot;Windows!Microsoft.Windows.LogicalDevice&amp;quot;]/DeviceID$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;DeviceID&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SpecificState&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;9&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SpecificState&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffff00;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Warning0Critical1&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;1&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Warning0Critical1&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Configuration&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;UnitMonitor&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;UnitMonitor&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;com.focus24.PrinterMonitoring.WindowsPrinter.WorkingOffline.Monitor&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#ff0000;"&gt;Accessibility&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Public&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Enabled&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#ff0000;"&gt;Target&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;com.focus24.PrinterMonitoring.WindowsPrinter&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#ff0000;"&gt;ParentMonitorID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Health!System.Health.AvailabilityState&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#ff0000;"&gt;Remotable&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Priority&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Normal&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#ff0000;"&gt;TypeID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;com.focus24.PrinterMonitoring.WindowsPrinter.WorkingOfflineUMT&amp;quot;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#ff0000;"&gt;ConfirmDelivery&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Category&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;AvailabilityHealth&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Category&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertSettings&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;AlertMessage&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;com.focus24.PrinterMonitoring.WindowsPrinter.WorkingOffline.Alert&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertOnState&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Error&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertOnState&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AutoResolve&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AutoResolve&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertPriority&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Normal&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertPriority&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertSeverity&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Error&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertSeverity&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertParameters&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertParameter1&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Target/Host/Property[Type=&amp;quot;Windows!Microsoft.Windows.Computer&amp;quot;]/PrincipalName$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertParameter1&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;			&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertParameter2&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Target/Property[Type=&amp;quot;Windows!Microsoft.Windows.LogicalDevice&amp;quot;]/DeviceID$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertParameter2&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertParameters&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;AlertSettings&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OperationalStates&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OperationalState&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;WorkingOfflineCritical&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;MonitorTypeStateID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;StateIsCritical&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;HealthState&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Error&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OperationalState&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;WorkingOfflineWarning&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;MonitorTypeStateID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;StateIsWarning&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;HealthState&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Warning&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OperationalState&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;WorkingOfflineHealthy&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;MonitorTypeStateID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;StateIsHealthy&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;HealthState&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Success&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;OperationalStates&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Configuration&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;IntervalSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;300&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;IntervalSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;SyncTime&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TimeoutSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;150&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TimeoutSeconds&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;PrincipalName&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Target/Host/Property[Type=&amp;quot;Windows!Microsoft.Windows.Computer&amp;quot;]/PrincipalName$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;PrincipalName&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;DeviceID&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Target/Property[Type=&amp;quot;Windows!Microsoft.Windows.LogicalDevice&amp;quot;]/DeviceID$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;DeviceID&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;		&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Warning0Critical1&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;1&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Warning0Critical1&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;	&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Configuration&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;UnitMonitor&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;Here, the highlights are just to call your attention to how the &lt;font color="#800000"&gt;UnitMonitorType&lt;/font&gt; is utilized by two different &lt;font color="#800000"&gt;UnitMonitors&lt;/font&gt;.&amp;nbsp; They also differ in their use of the &lt;font color="#800000"&gt;Warning0Critical1&lt;/font&gt; element, which is also reflected in the default &lt;font color="#800000"&gt;AlertOnState&lt;/font&gt; and &lt;font color="#800000"&gt;AlertSeverity&lt;/font&gt; elements.&amp;nbsp; If you follow the values specified here back through the &lt;font color="#800000"&gt;UnitMonitorType&lt;/font&gt; and then back to the &lt;font color="#800000"&gt;DataSourceModuleType&lt;/font&gt;, you will see where the &lt;font color="#0000ff"&gt;$Target/Host/.../PrincipalName$&lt;/font&gt; propagates back to the &lt;font color="#800000"&gt;DataSourceModuleType&lt;/font&gt; while the &lt;font color="#0000ff"&gt;$Target/.../DeviceID$&lt;/font&gt; only propagates as far back as the &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; modules in the &lt;font color="#800000"&gt;UnitMonitorType&lt;/font&gt;.&amp;nbsp; The same is true for the &lt;font color="#800000"&gt;Warning0Critical1&lt;/font&gt; &lt;font color="#800000"&gt;Configuration&lt;/font&gt; element and, for the first two, the &lt;font color="#800000"&gt;SpecificState&lt;/font&gt; element.&amp;nbsp; Hence, the DataSourceModuleType will cook down to one run for all targets of all three monitors.&lt;/p&gt;
&lt;p&gt;This essentially completes our management pack.&amp;nbsp; Now, let&amp;#39;s see what activity this generates in a test environment.&amp;nbsp; The test environment represented here consists of two machines SCOM-WIN2K3, an agent-managed machine with three printers installed, and SCOM-SERVER, the RMS, also with three printers installed.&amp;nbsp; For demonstration purposes, I&amp;#39;ve set one printer on each machine to Work Offline.&amp;nbsp; I&amp;#39;ve also set one printer on each machine to use a network port at 127.0.0.1, and then generated a test page, which put the printer into an error status.&amp;nbsp; Let&amp;#39;s see that configuration first:&lt;/p&gt;
&lt;p&gt;(Figures 10 and 11: The Printer Configuration from Each Test Server)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/Printers1.png"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="111" alt="Printers1" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/Printers1_thumb.png" width="339" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/Printers2.png"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="103" alt="Printers2" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/Printers2_thumb.png" width="265" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Next, let&amp;#39;s see what our &lt;font color="#0000ff"&gt;LogScriptEvent&lt;/font&gt; method call recorded on both machines (events 1002 and 1003):&lt;/p&gt;
&lt;p&gt;(Figures 12 and 13: Event Log Excerpts from Each Test Server)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/Log1.png"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="177" alt="Log1" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/Log1_thumb.png" width="508" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/Log2.png"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="126" alt="Log2" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/Log2_thumb.png" width="516" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;So far, so good.&amp;nbsp; Both show the new configuration becoming active and then one and only one invocation of our &lt;font color="#800000"&gt;DataSource&lt;/font&gt; module.&amp;nbsp; Let&amp;#39;s see what the state view says:&lt;/p&gt;
&lt;p&gt;(Figure 14: The State View from OpsMgr)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/State.png"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="264" alt="State" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/State_thumb.png" width="340" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Also good.&amp;nbsp; Two printers (targets) from two different servers are showing two different severities.&amp;nbsp; We can confirm that this one invocation of our script has fed multiple workflows by reviewing the alerts generated:&lt;/p&gt;
&lt;p&gt;(Figure 15: The Alerts View from OpsMgr)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/Alerts.png"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="229" alt="Alerts" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/Alerts_thumb.png" width="302" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;This is exactly what we expected to see, which confirms the behavior we designed for.&amp;nbsp; Finally, just because we bothered to include a diagram icon for this class:&lt;/p&gt;
&lt;p&gt;(Figure 16: The Diagram View from OpsMgr)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/Diagram.png"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="214" alt="Diagram" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowCookDowninOperationsManager2007_829C/Diagram_thumb.png" width="518" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Other Workflow Types&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As promised, we can easily talk through how this would be implemented for different types of workflows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For a performance collection &lt;font color="#800000"&gt;Rule&lt;/font&gt;: 
&lt;ul&gt;
&lt;li&gt;The unified &lt;font color="#800000"&gt;DataSource&lt;/font&gt; module (or another similarly designed) produces a &lt;font color="#800000"&gt;Collection&lt;/font&gt;. &lt;/li&gt;
&lt;li&gt;The &lt;font color="#800000"&gt;Collection&lt;/font&gt; is consumed by a &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; module to select only the &lt;font color="#800000"&gt;DataItems&lt;/font&gt; related to performance metrics for a specific target. &lt;/li&gt;
&lt;li&gt;Another &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; module receives that particular &lt;font color="#800000"&gt;DataItem&lt;/font&gt; and maps it to a &lt;font color="#0000ff"&gt;System.Performance.Data&lt;/font&gt; &lt;font color="#800000"&gt;DataItem&lt;/font&gt;. &lt;/li&gt;
&lt;li&gt;One or more &lt;font color="#800000"&gt;WriteActions&lt;/font&gt; store the &lt;font color="#800000"&gt;DataItem&lt;/font&gt; in the DB/DW. &lt;/li&gt;
&lt;li&gt;Essentially, this is a re-implementation of the built-in scripted performance composite module that ships with OpsMgr, utilizing a unified &lt;font color="#800000"&gt;DataSource&lt;/font&gt; module and an additional &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; module for filtering just before the &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; module that does the mapping.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;For an event collection &lt;font color="#800000"&gt;Rule&lt;/font&gt;: 
&lt;ul&gt;
&lt;li&gt;The unified &lt;font color="#800000"&gt;DataSource&lt;/font&gt; module (or another similarly designed) produces a &lt;font color="#800000"&gt;Collection&lt;/font&gt;. &lt;/li&gt;
&lt;li&gt;The &lt;font color="#800000"&gt;Collection&lt;/font&gt; is consumed by a &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; module to select only the &lt;font color="#800000"&gt;DataItems&lt;/font&gt; related to performance metrics for a specific target. &lt;/li&gt;
&lt;li&gt;Another &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; module receives that particular &lt;font color="#800000"&gt;DataItem&lt;/font&gt; and maps it to a &lt;font color="#0000ff"&gt;System.Event.Data&lt;/font&gt; &lt;font color="#800000"&gt;DataItem&lt;/font&gt;. &lt;/li&gt;
&lt;li&gt;The &lt;font color="#800000"&gt;DataItem&lt;/font&gt; is consumed by OpsMgr. &lt;/li&gt;
&lt;li&gt;This can similarly be thought of as a re-implementation of the built-in scripted event provider, with similar changes as noted for the performance example above.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Revisiting the UI-Generated Monitor&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Also, as promised, let&amp;#39;s try to apply what we&amp;#39;ve seen here to the UI-generated monitor and discuss how cook down might be implemented at least for individual workflows and possibly for multiple workflows.&amp;nbsp; To realize the same type of cook down in a UI-generated script:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Only specify the highest level of abstraction in the arguments.&amp;nbsp; Do not include arguments based on the &lt;font color="#0000ff"&gt;$Target$&lt;/font&gt;.&amp;nbsp; Only use arguments as granular as &lt;font color="#0000ff"&gt;$Target/Host$&lt;/font&gt;, for example. &lt;/li&gt;
&lt;li&gt;Do not use the pattern given by the example script (i.e. one property bag returned with the &lt;font color="#0000ff"&gt;Return&lt;/font&gt; method).&amp;nbsp; Instead, access the source and return multiple property bags using multiple &lt;font color="#0000ff"&gt;CreatePropertyBag&lt;/font&gt;, the &lt;font color="#0000ff"&gt;IncludeItem&lt;/font&gt;, and the &lt;font color="#0000ff"&gt;ReturnItems&lt;/font&gt; methods, respectively. &lt;/li&gt;
&lt;li&gt;In each property bag, instead of including just a property for the state of a single target, you must include properties to identify the target (such as the &lt;font color="#0000ff"&gt;DeviceID&lt;/font&gt; in our example).&amp;nbsp; This is required since you will be returning multiple property bags.&amp;nbsp; They are not very valuable if they cannot be differentiated! &lt;/li&gt;
&lt;li&gt;For the healthy, warning, and/or critical expressions, use an &lt;font color="#800000"&gt;And&lt;/font&gt; that filters based on the &lt;font color="#0000ff"&gt;$Target$&lt;/font&gt; &lt;em&gt;and&lt;/em&gt; the state of that target. &lt;/li&gt;
&lt;li&gt;That should make the underlying &lt;font color="#800000"&gt;DataSource&lt;/font&gt; eligible for cook down.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;You can even create multiple monitors that will all cook down to a single run using the UI, but this, as I mentioned earlier, is quite a hack:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Follow all of the guidelines above. &lt;/li&gt;
&lt;li&gt;In your script, include in the property bag multiple states or measurements for each target, identifying them by property name.&amp;nbsp; Alternatively, you could include multiple property bags per target, but at least one property would need to identify the state or measurement to which each property bag applies. &lt;/li&gt;
&lt;li&gt;Add another expression under the &lt;font color="#800000"&gt;And&lt;/font&gt; expression to further filter the collection of property bags to just the particular state or measurement each particular monitor or rule needs. &lt;/li&gt;
&lt;li&gt;Duplicate the arguments, timeout, interval, and script body &lt;em&gt;exactly&lt;/em&gt; in each monitor or rule you create.&amp;nbsp; This is perhaps the single biggest reason I feel that this method is a complete hack. &lt;/li&gt;
&lt;li&gt;In theory, this will allow OpsMgr to cook down all of the UI-created workflows together.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Limitations&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The one caveat with the unified model is that you must be very careful when dealing with state that represents a &amp;quot;present/missing&amp;quot; situation.&amp;nbsp; If the presence of something generates an unhealthy condition, that is easy enough to include in the &lt;font color="#800000"&gt;Collection&lt;/font&gt;.&amp;nbsp; The issue is that if, on the next run, that presence is now missing, you must be able to include an appropriate &lt;font color="#800000"&gt;DataItem&lt;/font&gt; in the &lt;font color="#800000"&gt;Collection&lt;/font&gt;.&amp;nbsp; In some cases, this might be difficult, especially since the unified &lt;font color="#800000"&gt;DataSource&lt;/font&gt; does not have access to the inventory of targets or their current state.&lt;/p&gt;
&lt;p&gt;For a more concrete example, consider the fictitious example of a &lt;font color="#800000"&gt;DataSource&lt;/font&gt; that examines the conditions of long-running jobs.&amp;nbsp; There would need to be a &lt;font color="#800000"&gt;Discovery&lt;/font&gt; that creates the instances of the jobs.&amp;nbsp; Then, any job that was flagged by the &lt;font color="#800000"&gt;DataSource&lt;/font&gt; module would have a corresponding &lt;font color="#800000"&gt;DataItem&lt;/font&gt; in the &lt;font color="#800000"&gt;Collection&lt;/font&gt;, which would be examined by the appropriate &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; modules in the &lt;font color="#800000"&gt;UnitMonitorType&lt;/font&gt; and would generate the appropriate state change.&amp;nbsp; If, on a subsequent run, the job no longer existed, the monitor would never change back to Healthy.&amp;nbsp; This is because we&amp;#39;re assuming that the &lt;font color="#800000"&gt;DataSource&lt;/font&gt; would have trouble reporting the status of a job that no longer exists.&amp;nbsp; This will cause the issue to linger in OpsMgr, especially if the &lt;font color="#800000"&gt;Discovery&lt;/font&gt; run interval is much greater than the monitor (as is usually the case).&lt;/p&gt;
&lt;p&gt;Another example that would not be fixed even by the next &lt;font color="#800000"&gt;Discovery&lt;/font&gt; run would be if a &lt;font color="#800000"&gt;DataSource&lt;/font&gt; module examined the state of hundreds of persistent connections to a service.&amp;nbsp; Using another table of open transactions, the &lt;font color="#800000"&gt;DataSource&lt;/font&gt; flagged any transaction that was older than a particular number of minutes.&amp;nbsp; The &lt;font color="#800000"&gt;DataSource&lt;/font&gt; would ostensibly return a &lt;font color="#800000"&gt;Collection&lt;/font&gt; of all connections that have at least one old transaction.&amp;nbsp; This would similarly be processed and set the state accordingly.&amp;nbsp; On subsequent runs, the &lt;font color="#800000"&gt;DataSource&lt;/font&gt; would not have the context of what it had set as unhealthy before.&amp;nbsp; In this case, to compensate, you would probably want to ensure that every connection was represented in the &lt;font color="#800000"&gt;Collection&lt;/font&gt; returned, defaulting all to healthy unless otherwise determined to be unhealthy.&amp;nbsp; Depending on the exact incarnation of this issue, that may or may not be a reasonable thing to do.&amp;nbsp; If it is not, you would likely need to have your &lt;font color="#800000"&gt;DataSource&lt;/font&gt; be stateful somehow, by means external to OpsMgr, such that it can return to healthy anything it had previously set to unhealthy.&lt;/p&gt;
&lt;p&gt;This is a general limitation of the design pattern represented here, but should be easily identifiable.&amp;nbsp; Such cases will require additional work to balance the need for granular invocations with the efficiencies of cook down.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;DataItem Overload&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Another side-effect of using a cooked down design model that should be considered is the limitations imposed by the dropping algorithm of OpsMgr.&amp;nbsp; When there is too much data outstanding in a rule, OpsMgr will drop &lt;font color="#804000"&gt;DataItems&lt;/font&gt; until the rule is no longer overloaded.&amp;nbsp; The maximum number of &lt;font color="#804000"&gt;DataItems&lt;/font&gt; that may be outstanding in a rule is 128.&amp;nbsp; The overall number of outstanding &lt;font color="#804000"&gt;DataItems&lt;/font&gt; for all rules active on a HealthService is 5,120.&amp;nbsp; These values are not configurable.&amp;nbsp; This behavior is by design, because most often, the presence of that many outstanding &lt;font color="#804000"&gt;DataItems&lt;/font&gt; indicates a problem with the MonitoringHost.exe.&amp;nbsp; In the case of cooked down designs, this can present a problem.&amp;nbsp; Returning to our example, consider an environment that has a large number of printers installed.&amp;nbsp; By large, I mean a number much greater than 128.&amp;nbsp; When the cooked down script returns its &lt;font color="#804000"&gt;Collection&lt;/font&gt;, there will be one &lt;font color="#804000"&gt;DataItem&lt;/font&gt; per printer contained in it.&amp;nbsp; Those &lt;font color="#804000"&gt;DataItems&lt;/font&gt; will fan out to the various receiving modules in the workflow.&amp;nbsp; Depending on the processing speed of the system on which the workflows are running, it is quite possible to exceed the 128 limit and even the 5,120 limit (depending on how many distinct iterations of this design pattern are present).&amp;nbsp; There is currently no work-around for this, except to watch for these issues (Event ID 4506 in the Operations Manager log) and further balance the design between fewer distinct invocations (producing larger Collections) and smaller Collections (produced by more distinct invocations).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;The Issues with Overrides&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A very simple reality can have very drastic consequences when we consider designing an MP according to this pattern.&amp;nbsp; Overrides, by definition, change the effective configuration of a workflow and can be targeted very granularly.&amp;nbsp; This can cause the unified (and expensive and monolithic) script to be invoked multiple times.&amp;nbsp; Some of those invocations could assemble the entire &lt;font color="#800000"&gt;Collection&lt;/font&gt; only to be consumed by a single target.&amp;nbsp; This is most definitely a balancing act.&amp;nbsp; Be aware of the ramifications of overrides.&amp;nbsp; Document them clearly in your MP Guide.&amp;nbsp; Where possible, try to compensate with good design.&lt;/p&gt;
&lt;p&gt;Another issue related to overrides that arises with cook down is the granularity with which you can disable the actions a workflow is taking.&amp;nbsp; If there are individual workflows for each and every instance of the target, you can prevent a specific workflow from running &lt;em&gt;at all&lt;/em&gt; for a particular target by disabling it.&amp;nbsp; This includes the &lt;font color="#800000"&gt;DataSource&lt;/font&gt; invocation against that particular target.&amp;nbsp; When you implement a cooked down version of the workflow, you can disable the specific workflow that &lt;em&gt;evaluates&lt;/em&gt; the results of the &lt;font color="#800000"&gt;DataSource&lt;/font&gt;, but the &lt;font color="#800000"&gt;DataSource&lt;/font&gt; will retrieve the source data from that target regardless.&amp;nbsp; This is because by definition, the &lt;font color="#800000"&gt;DataSource&lt;/font&gt; is no longer target-specific, but rather assembles the data for all targets within a particular (larger) scope.&amp;nbsp; The only scenario where this could be a problem is where the actual collection of some data point from a target is undesirable in some cases.&amp;nbsp; For example, if you had a printer whose driver caused a significant delay and system load whenever it was interrogated by WMI, you might wish to override the workflow against that particular printer.&amp;nbsp; Although you can override the workflow that evaluates the data returned from the &lt;font color="#800000"&gt;DataSource&lt;/font&gt; for that particular target, the data point will still be retrieved.&amp;nbsp; As you can probably imagine, the design pattern that allows for cook down &lt;em&gt;and&lt;/em&gt; for granular exclusion could become quite complex. This is another trade-off, so be aware of the ramifications of this in your design.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Conclusion&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Designing quality management packs is a fairly broad mix of requirements.&amp;nbsp; Modeling your class hierarchy to represent what you need to manage and still fit into the OpsMgr paradigm is the first step.&amp;nbsp; Planning to utilize everything OpsMgr has to offer is another important step (e.g. Distributed Applications, Reports, etc.).&amp;nbsp; Intelligently instrumenting whatever it is you are managing such that OpsMgr reports relevant, timely, and &amp;quot;right-sized&amp;quot; amounts of information is usually the step on which we concentrate the most.&amp;nbsp; Perhaps the most important step, though, is to design your MP to live harmoniously alongside other MPs in environments where the scope of what your MP monitors may be a small part of the larger environment.&amp;nbsp; To that end, I offer this treatment of cook down for the general good.&lt;/p&gt;
&lt;p&gt;Comments, as always are welcomed and appreciated.&lt;/p&gt;
&lt;p&gt;&lt;a href="mailto:v0802@focus24.com"&gt;VJD&lt;/a&gt;/&amp;lt;&amp;gt;&amp;lt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/com.focus24.PrinterMonitoring.xml"&gt;You can download the whole MP here.&lt;/a&gt;&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=133368" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/OpsMgr/default.aspx">OpsMgr</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/DeepDive/default.aspx">DeepDive</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/CustomMPs/default.aspx">CustomMPs</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/Scripting/default.aspx">Scripting</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/MP+Authoring/default.aspx">MP Authoring</category></item><item><title>Relationships in OpsMgr 2007, Part 1</title><link>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/14/relationships-in-opsmgr-2007-part-1.aspx</link><pubDate>Sat, 14 Mar 2009 17:00:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:133009</guid><dc:creator>vdipippo</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/vdipippo/rsscomments.aspx?PostID=133009</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/14/relationships-in-opsmgr-2007-part-1.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;&lt;u&gt;Abstract&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Of the two &lt;font color="#800000"&gt;EntityTypes&lt;/font&gt; in the OpsMgr 2007 schema, &lt;font color="#800000"&gt;ClassTypes&lt;/font&gt; and &lt;font color="#800000"&gt;RelationshipTypes&lt;/font&gt;, the latter seems to be a straight-forward concept, but can have interesting ramifications in its application.&amp;nbsp; Because of this, I decided to investigate them more fully, which is the subject of this series.&amp;nbsp; In this first part, I will discuss the declaration of relationship types in a management pack and investigate some of the ramifications and restrictions related to the various base classes.&amp;nbsp; In subsequent parts, I will investigate how relationships are involved in OpsMgr&amp;#39;s facilities and some nuances that can help explain some of OpsMgr&amp;#39;s less obvious behavior.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Background&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Relationships are at the foundation of many OpsMgr facilities:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hosting 
&lt;li&gt;Groups 
&lt;li&gt;Distributed Applications 
&lt;li&gt;Reporting 
&lt;li&gt;Alerting 
&lt;li&gt;Dependency Monitors&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;As you can see, a majority of the key facilities in OpsMgr rely on relationships.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Declaration&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;First, let&amp;#39;s discuss the declarative side of a relationship.&amp;nbsp; More accurately, relationship &lt;em&gt;types&lt;/em&gt; are declared; &lt;em&gt;instances&lt;/em&gt; of that relationship type are discovered.&amp;nbsp; The declaration of a &lt;font color="#800000"&gt;RelationshipType&lt;/font&gt; is very simple, as shown in the MP snippets below:&lt;/p&gt;
&lt;blockquote&gt;&lt;/blockquote&gt;&lt;pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RelationshipType&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;System.Reference&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Accessibility&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Public&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Abstract&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Source&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;System.Entity&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Source&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Target&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;System.Entity&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Target&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RelationshipType&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RelationshipType&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;System.Containment&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Accessibility&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Public&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Abstract&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Base&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;System.Reference&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Source&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;System.Entity&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Source&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Target&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;System.Entity&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Target&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RelationshipType&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;You may or may not recognize these two from the &lt;font color="#0000ff"&gt;System.Library&lt;/font&gt; management pack.&amp;nbsp; The &lt;font color="#0000ff"&gt;System.Reference&lt;/font&gt; relationship type is the base of all relationship types, which explains why it has no &lt;font color="#ff0000"&gt;Base&lt;/font&gt; attribute.&amp;nbsp; &lt;font color="#0000ff"&gt;System.Containment&lt;/font&gt; is another base relationship type, but derives from &lt;font color="#0000ff"&gt;System.Reference&lt;/font&gt;.&amp;nbsp; It is interesting to note that all relationship types must derive from an abstract relationship type, and abstract relationship types can only be declared in &lt;font color="#0000ff"&gt;System.Library&lt;/font&gt;.&amp;nbsp; That essentially limits the lineage of a relationship type to two, three, or four generations through one of three possible parents, respectively:&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:#0000ff;"&gt;System.Reference&lt;/span&gt; to &lt;span style="COLOR:#0000ff;"&gt;Your.Derived.Type&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:#0000ff;"&gt;System.Reference&lt;/span&gt; to &lt;span style="COLOR:#0000ff;"&gt;System.Containment&lt;/span&gt; to &lt;span style="COLOR:#0000ff;"&gt;Your.Derived.Type&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="COLOR:#0000ff;"&gt;System.Reference&lt;/span&gt; to &lt;span style="COLOR:#0000ff;"&gt;System.Containment&lt;/span&gt; to &lt;span style="COLOR:#0000ff;"&gt;System.Hosting&lt;/span&gt; to &lt;span style="COLOR:#0000ff;"&gt;Your.Derived.Type&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;There is a fourth &lt;font color="#800000"&gt;RelationshipType&lt;/font&gt; declared in &lt;font color="#0000ff"&gt;System.Library&lt;/font&gt;: &lt;span style="COLOR:#0000ff;"&gt;System.WatchedBy&lt;/span&gt; (a.k.a. Perspective).&amp;nbsp; This is not an abstract type and therefore is not available for derivation.&lt;/p&gt;
&lt;p&gt;Examining the definitions, we can see that &lt;font color="#800000"&gt;RelationshipType&lt;/font&gt; elements follow the schema for declaring an &amp;quot;accessible&amp;quot; MP Element and add two attributes specific to themselves.&amp;nbsp; The standard attributes are &lt;font color="#ff0000"&gt;ID&lt;/font&gt;, &lt;font color="#ff0000"&gt;Comment&lt;/font&gt; (which is not often used), and &lt;font color="#ff0000"&gt;Accessibility&lt;/font&gt;.&amp;nbsp; The two additional attributes for &lt;font color="#800000"&gt;RelationshipType&lt;/font&gt; elements are &lt;font color="#ff0000"&gt;Abstract&lt;/font&gt; and &lt;font color="#ff0000"&gt;Base&lt;/font&gt;.&amp;nbsp; I mentioned that &lt;font color="#ff0000"&gt;Comment&lt;/font&gt; is rare.&amp;nbsp; One regular use of this attribute, albeit a bit off topic, is in &lt;font color="#800000"&gt;Rules&lt;/font&gt;.&amp;nbsp; Many &lt;font color="#800000"&gt;Rule&lt;/font&gt; elements have the GUIDs for the MOM 2005 objects from which they came recorded in the &lt;font color="#ff0000"&gt;Comment&lt;/font&gt; attribute.&amp;nbsp; There are a few other examples, but this attribute is probably one of the least used, from my observations.&lt;/p&gt;
&lt;p&gt;For child elements of the &lt;font color="#800000"&gt;RelationshipType&lt;/font&gt; element, there are three flavors: &lt;font color="#800000"&gt;Source&lt;/font&gt;, &lt;font color="#800000"&gt;Target&lt;/font&gt;, and &lt;font color="#800000"&gt;Property&lt;/font&gt;.&amp;nbsp; You will find the great majority of relationship types are declared with just &lt;font color="#800000"&gt;Source&lt;/font&gt; and &lt;font color="#800000"&gt;Target&lt;/font&gt;, which can appear only once.&amp;nbsp; These are at the heart of what a relationship is, exactly.&lt;/p&gt;
&lt;p&gt;Both &lt;font color="#800000"&gt;Source&lt;/font&gt; and &lt;font color="#800000"&gt;Target&lt;/font&gt; specify the &lt;font color="#800000"&gt;ClassTypes&lt;/font&gt; that make up the two ends of the &lt;font color="#800000"&gt;RelationshipType&lt;/font&gt;.&amp;nbsp; These follow the standard notation of &lt;font color="#0000ff"&gt;[Alias!]ID&lt;/font&gt;, such as &lt;font color="#0000ff"&gt;System!System.Entity&lt;/font&gt; (if we were in another management pack, where we&amp;#39;re assuming that the &lt;font color="#0000ff"&gt;System.Library&lt;/font&gt; has been aliased as &lt;font color="#0000ff"&gt;System&lt;/font&gt;) or, in this case, just &lt;font color="#0000ff"&gt;System.Entity&lt;/font&gt; (because this element, the &lt;font color="#800000"&gt;RelationshipType&lt;/font&gt;, and that element, the &lt;font color="#800000"&gt;ClassType&lt;/font&gt;, are declared in the same management pack).&amp;nbsp; Whatever the relationship represents, it represents it between an object of class &lt;font color="#800000"&gt;Source&lt;/font&gt; and an object of class &lt;font color="#800000"&gt;Target&lt;/font&gt;.&amp;nbsp; This is fairly straight-forward, but we can talk through a few examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For the &lt;font color="#0000ff"&gt;System.Containment&lt;/font&gt; relationship type, it declares that some &lt;font color="#0000ff"&gt;System.Entity&lt;/font&gt; (&lt;font color="#800000"&gt;Source&lt;/font&gt;) can contain some other &lt;font color="#0000ff"&gt;System.Entity&lt;/font&gt; (&lt;font color="#800000"&gt;Target&lt;/font&gt;). 
&lt;li&gt;For the &lt;font color="#0000ff"&gt;System.Hosting&lt;/font&gt; relationship type, it declares that some &lt;font color="#0000ff"&gt;System.Entity&lt;/font&gt; (&lt;font color="#800000"&gt;Source&lt;/font&gt;) hosts some other &lt;font color="#0000ff"&gt;System.Entity&lt;/font&gt; (&lt;font color="#800000"&gt;Target&lt;/font&gt;). 
&lt;li&gt;Taking another example from the AD management pack:&lt;/li&gt;&lt;/ul&gt;
&lt;blockquote&gt;&lt;pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RelationshipType&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Microsoft.Windows.Server.2003.AD.DomainControllerRoleHostsNtFrs&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Accessibility&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Public&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Abstract&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Base&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;System!System.Hosting&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;  &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Source&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Microsoft.Windows.Server.2003.AD.DomainControllerRole&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Source&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;  &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Target&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Microsoft.Windows.Server.2003.AD.DC.NtFrs&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Target&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RelationshipType&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;This &lt;font color="#800000"&gt;RelationshipType&lt;/font&gt; declares that an &lt;font color="#0000ff"&gt;AD.DomainControllerRole&lt;/font&gt; hosts &lt;font color="#0000ff"&gt;AD.DC.NtFrs&lt;/font&gt;.&amp;nbsp; The &lt;font color="#ff0000"&gt;ID&lt;/font&gt; (and &lt;font color="#800000"&gt;DisplayString&lt;/font&gt;), &lt;font color="#800000"&gt;Source&lt;/font&gt;, and &lt;font color="#800000"&gt;Target&lt;/font&gt; of this relationship are all well-chosen and describe the relationship between the types very well.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Before we leave the discussion about the declaration of a &lt;font color="#800000"&gt;RelationshipType&lt;/font&gt;, it is worth noting that, while rare, some very good examples of &lt;font color="#800000"&gt;RelationshipTypes&lt;/font&gt; with &lt;font color="#800000"&gt;Property&lt;/font&gt; declarations exist in common MPs.&amp;nbsp; For example, the AD management pack declares this relationship:&lt;/p&gt;&lt;pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RelationshipType&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Microsoft.Windows.Server.AD.Site.contains.Microsoft.Windows.Server.DC.Computer&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Accessibility&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Public&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Abstract&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Base&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;System!System.Containment&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;  &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Source&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Microsoft.Windows.Server.AD.Site&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Source&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;  &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Target&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Windows!Microsoft.Windows.Server.DC.Computer&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Target&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;  &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Property&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;IsBridgeheadIP&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;CaseSensitive&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Length&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;255&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;  &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Property&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;IsBridgeheadSMTP&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;CaseSensitive&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Length&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;255&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RelationshipType&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;I think this is an excellent example (which also doesn&amp;#39;t use the &lt;font color="#ff0000"&gt;Comment&lt;/font&gt; attribute, if you&amp;#39;ll notice).&amp;nbsp; In this case, the properties of whether a particular DC is the IP or SMTP replication bridgehead for a particular site is stored in the relationship between the site and its DCs.&amp;nbsp; I think that the tendency would be make these properties of the DC.Computer class itself.&amp;nbsp; While you might be able to pull this off in this example, any many-to-many relationships would need to store relevant properties in the relationship, where they belong.&amp;nbsp; Consider this adapted example:&lt;/p&gt;&lt;pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RelationshipType&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;Example.WebServer.Hosts.WebSite&amp;quot;&lt;/span&gt; ... &lt;span style="COLOR:#ff0000;"&gt;Base&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;System!System.Hosting&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;  &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Source&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Example.WebServer&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Source&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;  &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Target&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Example.WebSite&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Target&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;  &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Property&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;IsPreferredServer&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;string&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;CaseSensitive&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;false&amp;quot;&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Length&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;&amp;quot;1&amp;quot;&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;RelationshipType&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;Clearly, in this case, you cannot mark the web server as being a preferred server, since it could host multiple web sites, for some of which it may not be the preferred server.&amp;nbsp; I would also not be very elegant to have some comma-delimited property of the web site that listed all preferred servers.&amp;nbsp; This is an example of where a &lt;font color="#800000"&gt;RelationshipType&lt;/font&gt; declared with &lt;font color="#800000"&gt;Property&lt;/font&gt; elements answers some important service modeling needs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Restrictions and Ramifications&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In spite of being relatively straight-forward to declare, relationship types have some interesting restrictions on and ramifications of their definitions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For relationships that derive from &lt;font color="#0000ff"&gt;System.Reference&lt;/font&gt;: 
&lt;ul&gt;
&lt;li&gt;References are generic and can form relationships between just about any combination of classes.&amp;nbsp; Children can reference parents, parents can reference children, they can be reciprocal (class A references class B while class B also references class A), reflexive (class A can reference class A), and many-to-many.&amp;nbsp; In terms of relationship types that cause OpsMgr to perform in some manner, there are far more that derive from &lt;font color="#0000ff"&gt;System.Containment&lt;/font&gt; and &lt;font color="#0000ff"&gt;System.Hosting&lt;/font&gt; than from &lt;font color="#0000ff"&gt;System.Reference&lt;/font&gt;.&amp;nbsp; Many reference relationships are meaningful only in the context of the management pack in which they are declared.&amp;nbsp; That notwithstanding, there are some very important uses of &lt;font color="#0000ff"&gt;System.Reference&lt;/font&gt; relationships intrinsic to OpsMgr.&amp;nbsp; One absolutely ubiquitous example is the &lt;font color="#0000ff"&gt;Microsoft.SystemCenter.HealthServiceShouldManageEntity&lt;/font&gt; relationship.&amp;nbsp; Another genre is the series of relationships formed when using the Distributed Application designer to connect component groups together.&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;For relationships that derive from &lt;font color="#0000ff"&gt;System.Containment&lt;/font&gt;: 
&lt;ul&gt;
&lt;li&gt;Containment relationships are just as freely declared as reference relationships, but some incarnations can have adverse effects on OpsMgr.&amp;nbsp; I have found that certain &lt;font color="#800000"&gt;ViewTypes&lt;/font&gt;, especially state and diagram, tend to become very unpredictable if relationships form loops, etc.&amp;nbsp; In short, it has been my experience that containment relationships should be declared to represent as clean a containment model as possible.&amp;nbsp; In other words, it should be a rarity that class A contains class B while class B also contains class A, etc.&amp;nbsp; Although there are not as many restrictions on containment relationships (versus hosting), care should still be taken to model these succinctly.&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;For relationships that derive from &lt;font color="#0000ff"&gt;System.Hosting&lt;/font&gt;: 
&lt;ul&gt;
&lt;li&gt;There are many restrictions on hosting relationships.&amp;nbsp; This is because many things come into play when two classes are related by hosting.&amp;nbsp; First, if the host is deleted, the hosted classes are also deleted, so you have a referential integrity issue.&amp;nbsp; Also, the health service that runs workflows related to the host will also run workflows related to the hosted classes.&amp;nbsp; Finally, and perhaps most importantly, a hosting relationship is baked right into the schema of a class.&amp;nbsp; Hosting relationships are discovered automatically and you cannot even discover an instance of a hosted class without also discovering for that instance the key properties of its host and all of the hosts up the chain.&amp;nbsp; In the database, the underlying database objects for a class will contain the key fields of its hosts.&amp;nbsp; With these types of behind-the-scenes activities, it is clear to see why there are so many restrictions on the declaration of hosting relationships. 
&lt;li&gt;Restrictions on the source &lt;font color="#800000"&gt;ClassType&lt;/font&gt; 
&lt;ul&gt;
&lt;li&gt;The source does not need to be hosted itself, but it can be. 
&lt;li&gt;The source must be non-abstract. 
&lt;li&gt;The source cannot be the same as the target. 
&lt;li&gt;The source can be from any management pack.&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;Restrictions on the target &lt;font color="#800000"&gt;ClassType&lt;/font&gt; 
&lt;ul&gt;
&lt;li&gt;The target &lt;font color="#800000"&gt;ClassType&lt;/font&gt; definition must be in the same management pack as the &lt;font color="#800000"&gt;RelationshipType&lt;/font&gt; definition. 
&lt;li&gt;The target must be a hosted class type or derive from a class type that is hosted. 
&lt;li&gt;The target must not be the target of any other hosting relationship. 
&lt;li&gt;The target can be abstract or non-abstract.&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;Restrictions on using the &lt;font color="#ff0000"&gt;Hosted&lt;/font&gt; attribute of a &lt;font color="#800000"&gt;ClassType&lt;/font&gt; 
&lt;ul&gt;
&lt;li&gt;If a class is hosted, it must have a hosting relationship defined for it or derive from a hosted class (which would need its own relationship type) 
&lt;li&gt;Once a &lt;font color="#800000"&gt;ClassType&lt;/font&gt; is declared with the &lt;font color="#ff0000"&gt;Hosted&lt;/font&gt; attribute set to &lt;font color="#0000ff"&gt;true&lt;/font&gt;, it must remain consistent on all classes derived from that class.&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;Other restrictions: 
&lt;ul&gt;
&lt;li&gt;A class can be the target of one and only one hosting relationship.&amp;nbsp; This follows the class through its descendants (i.e. a derived class cannot be the target of a hosting relationship different from that of one of its base classes). 
&lt;li&gt;The source and target cannot derive from some common class if that class has any key properties defined.&amp;nbsp; This is slightly different from the previous restrictions in that it is still not allowed even if the common ancestor is not hosted.&amp;nbsp; That is, it is acceptable to have Class B hosting Class C, and have them both derive from Class A if the relationship does not violate any of the aforementioned restrictions; however, if Class A contains key fields, the MP will fail on import.&amp;nbsp; Oddly enough, it passes MPVerify, but when it is imported, the system will try to create Class C with two sets of identical key properties (i.e. columns): its own set of key properties inherited from Class A and the set of key properties from its host, Class B, which are also inherited from Class A.&amp;nbsp; OpsMgr apparently uses a hash to create a &amp;quot;decorated&amp;quot; column name for properties of a given class that is calculated from the class and property names.&amp;nbsp; Since the contributing class name (Class A) and the properties (the keys on Class A) are identical, the MP fails to import, throwing a SQL error related to the attempt to create a table or view with duplicate column names.&amp;nbsp; I&amp;#39;ve actually run into this problem in a real example, so I hope that this is something that is addressed in a future release; however, this restriction is currently required. 
&lt;li&gt;There can be no circular hosting references, where A hosts B, B hosts C, and then C hosts A.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;As you can see, the discussion of what can and cannot be done with hosting relationships is deceptively complex.&amp;nbsp; That&amp;#39;s due in part to the fact that there is but a shade of meaning between containment and hosting in the purest sense of the words, but due to what they effect in OpsMgr, there is a great deal more to consider with hosting relationships.&lt;/p&gt;
&lt;p&gt;For the most part, if the relationships are kept relatively simple, you will not run into these restrictions.&amp;nbsp; The most common situation that brings you into contact with them is when you are attempting to integrate some existing, robust object model into the OpsMgr model.&amp;nbsp; If you are simply extending the existing concepts around which OpsMgr has already been built (servers, applications, services, etc.), you should have a much easier time than this discussion may lead you to believe.&amp;nbsp; None-the-less, it is interesting to test the limits of what OpsMgr will allow and perhaps even more interesting to see what OpsMgr will allow that perhaps it should not!&lt;/p&gt;
&lt;p&gt;In the next post, we will begin to see how the different types of relationships effect OpsMgr behavior.&lt;/p&gt;
&lt;p&gt;&lt;a href="mailto:v0802@focus24.com"&gt;VJD&lt;/a&gt;/&amp;lt;&amp;gt;&amp;lt;&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=133009" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/OpsMgr/default.aspx">OpsMgr</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/DeepDive/default.aspx">DeepDive</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/MP+Authoring/default.aspx">MP Authoring</category></item><item><title>Workflow Tracer 1 of 4: Workflow Primer</title><link>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-1-of-4-workflow-primer.aspx</link><pubDate>Fri, 13 Mar 2009 14:15:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:132834</guid><dc:creator>vdipippo</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/vdipippo/rsscomments.aspx?PostID=132834</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-1-of-4-workflow-primer.aspx#comments</comments><description>&lt;p&gt;(Links to parts: &lt;strike&gt;Part 1&lt;/strike&gt;, &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-2-of-4-module-primer.aspx"&gt;Part 2&lt;/a&gt;, &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-3-of-4-data-item-primer.aspx"&gt;Part 3&lt;/a&gt;, &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-4-of-4-the-tracer-module.aspx"&gt;Part 4&lt;/a&gt;)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I have written a managed code module for tracing the data items moving through a workflow.&amp;nbsp; This is a four-part article that presents the module in the fourth part.&amp;nbsp; If you are familiar with workflows, modules, and data items (the first three posts, respectively), you can go straight to the fourth article.&amp;nbsp; If not, please read on…&amp;nbsp; Even if you are familiar with these topics, you may enjoy this presentation of them and I would certainly welcome and appreciate any feedback.&lt;/p&gt;
&lt;p&gt;The heart and soul of OpsMgr 2007 is undoubtedly the workflow engine.&amp;nbsp; This is one of the most basic functions of the Health Service: to implement the policy received from the management group by running the workflows described therein.&amp;nbsp; Discoveries, rules, and monitors are all workflows.&amp;nbsp; They are also therefore each comprised of modules that are run in a particular order to achieve the desired result.&amp;nbsp; Consider an example of each: &lt;/p&gt;
&lt;ul&gt;
&lt;ul&gt;&lt;/ul&gt;
&lt;li&gt;
&lt;p&gt;A discovery might be comprised of a timer module that executes a script at some interval.&amp;nbsp; The script, in turn, pulls some WMI data (for example).&amp;nbsp; That “data item” may then be passed to a condition detection module that evaluates it against some condition (e.g. that the WMI data contains certain properties).&amp;nbsp; Provided those conditions are met, the data item may then be passed to another condition detection module that maps the WMI data item to another data item in the specific OpsMgr discovery data format for a particular class (e.g. Windows.Computer).&amp;nbsp; This is essentially the output of the sequence.&amp;nbsp; This sequence effectively results in an instance of some class being created or updated.&amp;nbsp; That’s a workflow. &lt;/p&gt;
&lt;li&gt;
&lt;p&gt;Another example would be a monitor.&amp;nbsp; A monitor might consist of timer module that runs a script on a schedule.&amp;nbsp; The script in this case, in turn, pulls some instrumentation data from some interesting data source (e.g. the management software that interfaces with the building environmental monitor system).&amp;nbsp; That data item is then passed to any number of different sequences of modules.&amp;nbsp; This is very well defined: one sequence for each possible state of the object (health, warning, critical, etc.).&amp;nbsp; It is assumed that only one of these sequences will pass all of the conditions and generate output data at any given moment.&amp;nbsp; The sequence that generates output data tells OpsMgr to which state the targeted object should transition (if it is in some other state).&amp;nbsp; This is another workflow. &lt;/p&gt;
&lt;li&gt;
&lt;p&gt;The final example is a rule.&amp;nbsp; A rule will usually start in a similar way to the other two examples: some trigger or timer starts a sequence of modules in motion.&amp;nbsp; At some point, some data source or probe will produce some data item.&amp;nbsp; Any number of condition detection modules may manipulate the data item, transform it, or suppress it.&amp;nbsp; In the case of a rule, any number of “write action” modules will then accept the data item and do something with it.&amp;nbsp; For example, just about every rule includes one of the following four write actions: generate alert, set some monitor’s state, write to the operational DB, or write to the data warehouse.&amp;nbsp; Rules are not required to use these nor is that by any means an exhaustive list.&amp;nbsp; This is just meant to give you an idea of how a rule is a collection of modules.&amp;nbsp; And it’s also a workflow. &lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;&lt;/ul&gt;
&lt;p&gt;In fact, every major monitoring- and operations-related activity of the Heatlh Service is a workflow.&amp;nbsp; These include all discoveries, monitors, diagnostics, recoveries, rules, and agent tasks. &lt;/p&gt;
&lt;p&gt;Understanding workflows is key to understanding OpsMgr 2007.&amp;nbsp; You should understand what they are, that most major functions of OpsMgr are workflows, and that a workflow is essentially a pipeline of modules. &lt;/p&gt;
&lt;p&gt;In the part 2 of this series, I will discuss those modules in more detail. &lt;/p&gt;
&lt;p&gt;&lt;a class="" href="mailto:v0802@focus24.com"&gt;VJD&lt;/a&gt;/&amp;lt;&amp;gt;&amp;lt;&lt;/p&gt;
&lt;p&gt;(Links to parts: &lt;strike&gt;Part 1&lt;/strike&gt;, &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-2-of-4-module-primer.aspx"&gt;Part 2&lt;/a&gt;, &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-3-of-4-data-item-primer.aspx"&gt;Part 3&lt;/a&gt;, &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-4-of-4-the-tracer-module.aspx"&gt;Part 4&lt;/a&gt;)&amp;nbsp;&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=132834" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/OpsMgr/default.aspx">OpsMgr</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/DeepDive/default.aspx">DeepDive</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/Modules/default.aspx">Modules</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/CustomMPs/default.aspx">CustomMPs</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/MP+Authoring/default.aspx">MP Authoring</category></item><item><title>Workflow Tracer 2 of 4: Module Primer</title><link>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-2-of-4-module-primer.aspx</link><pubDate>Fri, 13 Mar 2009 14:10:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:132836</guid><dc:creator>vdipippo</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/vdipippo/rsscomments.aspx?PostID=132836</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-2-of-4-module-primer.aspx#comments</comments><description>&lt;p&gt;(Links to parts: &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-1-of-4-workflow-primer.aspx"&gt;Part 1&lt;/a&gt;, &lt;strike&gt;Part 2&lt;/strike&gt;, &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-3-of-4-data-item-primer.aspx"&gt;Part 3&lt;/a&gt;, &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-4-of-4-the-tracer-module.aspx"&gt;Part 4&lt;/a&gt;) &lt;/p&gt; &lt;p&gt;Now that I’ve given a primer on workflows, it is important to discuss modules a bit.&amp;nbsp; The following discussion is generalized.&amp;nbsp; Modules are nothing if not powerful, flexible, and completely open-ended.&amp;nbsp; Therefore, while I am confident that this discussion will be conceptually helpful, understand that there can be deviations from these generalizations.&lt;/p&gt; &lt;p&gt;First, it’s worth noting that there are four basic module types: &lt;font color="#800000"&gt;DataSource&lt;/font&gt;, &lt;font color="#800000"&gt;ProbeAction&lt;/font&gt;, &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt;, and &lt;font color="#800000"&gt;WriteAction&lt;/font&gt;.&amp;nbsp; This is also the order in which they appear, both as children of the &lt;font color="#800000"&gt;ModuleTypes&lt;/font&gt; element in the management pack and as children of the &lt;font color="#800000"&gt;MemberModules&lt;/font&gt; element of a &lt;font color="#800000"&gt;Composite&lt;/font&gt; module.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;font color="#800000"&gt;DataSource&lt;/font&gt; and &lt;font color="#800000"&gt;ProbeAction&lt;/font&gt; modules essentially do some work to collect some attributes of some entity and produce a &lt;font color="#800000"&gt;DataItem&lt;/font&gt;.&amp;nbsp; These modules can be thought of as operating on entities extenal to OpsMgr itself in a manner that does not change them (i.e. read only) for the expressed purpose of brining the “facts” about their current state of configuration or operation into OpsMgr’s universe.&amp;nbsp; A &lt;font color="#800000"&gt;DataItem&lt;/font&gt; produced by a &lt;font color="#800000"&gt;DataSource&lt;/font&gt; or &lt;font color="#800000"&gt;ProbeAction&lt;/font&gt; is the unit of information that starts that process.&lt;/li&gt;&lt;/ul&gt; &lt;ul&gt; &lt;li&gt;&lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; modules are essentially filters that consume a &lt;font color="#800000"&gt;DataItem&lt;/font&gt; as input and either manipulate it or check it against some conditions.&amp;nbsp; &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; modules are always defined with an &lt;font color="#800000"&gt;OutputType&lt;/font&gt;, but depending on their purpose and the contents of the input, they may or may not output a &lt;font color="#800000"&gt;DataItem&lt;/font&gt; on any given occasion.&amp;nbsp; When a &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; module produces a &lt;font color="#800000"&gt;DataItem&lt;/font&gt;, it will be passed on to the next module in the workflow, either unchanged (e.g. as is the case with the expression filters) or transformed (e.g. as is the case with the discovery mappers).&amp;nbsp; When a &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; module does not produce a &lt;font color="#800000"&gt;DataItem&lt;/font&gt;, the workflow ends (e.g. as is the case when a test condition is not met).&amp;nbsp; These modules can be thought of as operating on the &lt;font color="#800000"&gt;DataItem&lt;/font&gt; produced by the &lt;font color="#800000"&gt;DataSource&lt;/font&gt; or &lt;font color="#800000"&gt;ProbeAction&lt;/font&gt; module.&amp;nbsp; They are usually internal to the workflow, meaning that they only consider the input and their purpose and configuration.&amp;nbsp; They do not usually use data external to the data flowing through the workflow.&amp;nbsp; I reiterate, though, that they do not strictly need to be simple filters that can only see the &lt;font color="#800000"&gt;DataItem&lt;/font&gt; passed in or only affect the &lt;font color="#800000"&gt;DataItem&lt;/font&gt; passed out.&amp;nbsp; Some do quite a bit more than that.&amp;nbsp; Good examples of this are the &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; modules involved in calculating delta values and baselines.&amp;nbsp; They do operate on incoming &lt;font color="#800000"&gt;DataItems&lt;/font&gt; and produce outgoing &lt;font color="#800000"&gt;DataItems&lt;/font&gt;, but they also hold state themselves. &lt;/li&gt;&lt;/ul&gt; &lt;ul&gt; &lt;li&gt;&lt;font color="#800000"&gt;WriteAction&lt;/font&gt; modules receive a &lt;font color="#800000"&gt;DataItem&lt;/font&gt; and do something active with it, like write it to the database, generate an alert, or otherwise use its contents to affect some other entity.&amp;nbsp; These are formally defined as the only modules that will change something external to OpsMgr.&amp;nbsp; This is one reason why you don’t normally see a &lt;font color="#800000"&gt;WriteAction&lt;/font&gt; module in a discovery or monitor.&amp;nbsp; &lt;font color="#800000"&gt;WriteAction&lt;/font&gt; modules optionally can produce output. &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;See the following diagram for a visual treatment of the four module types.  &lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowTracer2of4ModulePrimer_29F2/Slide1.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="484" alt="Slide1" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowTracer2of4ModulePrimer_29F2/Slide1_thumb.png" width="644" border="0" /&gt;&lt;/a&gt;  &lt;p&gt;This, therefore, gives a lifecycle of a workflow: from the creation of a &lt;font color="#800000"&gt;DataItem&lt;/font&gt;, through manipulations, to the final action a &lt;font color="#800000"&gt;DataItem&lt;/font&gt; causes.&amp;nbsp;&amp;nbsp; Of course, to continue painting a picture of how these modules are used, I would also note that discoveries and monitors do not usually contain write actions.&amp;nbsp; The nature of a discovery or monitor infers that their end state will be internal to OpsMgr: a new or updated instance or a change in state, respectively.&amp;nbsp; In those cases, then, it is OpsMgr itself that consumes the final output of the workflow. &lt;/p&gt; &lt;p&gt;The next two paragraphs contain very rich information.&amp;nbsp; Based on feedback, I have added a few diagrams to help understand these concepts.&amp;nbsp; I suggest an initial read of these two paragraphs, followed by a review of the diagrams, and then a quick re-read. &lt;/p&gt; &lt;p&gt;To make matters even more interesting, the definition/implementation of any given module can be one of three forms: native code (implemented as a COM .DLL), managed code (implemented as a .NET assembly .DLL), or a &lt;font color="#800000"&gt;Composite&lt;/font&gt; module.&amp;nbsp; A &lt;font color="#800000"&gt;Composite&lt;/font&gt; module is itself a pre-defined sequence of other modules.&amp;nbsp; &lt;font color="#800000"&gt;Composite&lt;/font&gt; modules are the most interesting to research, since a &lt;font color="#800000"&gt;Composite&lt;/font&gt; can be defined as the sequence of several modules, each of which may be a &lt;font color="#800000"&gt;Composite&lt;/font&gt; itself, each of which yet again may be a &lt;font color="#800000"&gt;Composite&lt;/font&gt;, etc.&amp;nbsp; Eventually, all module implementations will end at native or managed code, but it can be quite a ride getting there.&amp;nbsp; Since any given module will be of one of four module types implemented in one of three possible ways, how truly open-ended a module’s functionality can be should be self-evident.&amp;nbsp; I have written a tool for examining such lineages in OpsMgr, &lt;a href="http://myitforum.com/cs2/blogs/vdipippo/archive/2008/06/20/opsmgr_2D00_lineage_2D00_explorer.aspx"&gt;which you can read about here&lt;/a&gt;.&amp;nbsp; It actually started out as a tool that would only explore the lineage of modules, but I later expanded it to include class types, relationship types, and data types.&lt;/p&gt; &lt;p&gt;This also skews the clean definitions and characterizations of the four module types I discussed above.&amp;nbsp; Consider this: a &lt;font color="#800000"&gt;DataSourceModuleType&lt;/font&gt; may be defined as a &lt;font color="#800000"&gt;Composite&lt;/font&gt; of a &lt;font color="#800000"&gt;DataSource&lt;/font&gt;, a &lt;font color="#800000"&gt;ProbeAction&lt;/font&gt;, and a &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; module.&amp;nbsp; Another &lt;font color="#800000"&gt;DataSourceModuleType&lt;/font&gt; may use that &lt;font color="#800000"&gt;DataSource&lt;/font&gt; module in its own definition of a &lt;font color="#800000"&gt;Composite&lt;/font&gt; that includes another &lt;font color="#800000"&gt;ProbeAction&lt;/font&gt; and another &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; module.&amp;nbsp; That would make the final &lt;font color="#800000"&gt;DataSourceModuleType&lt;/font&gt; a &lt;font color="#800000"&gt;DataSource&lt;/font&gt;, &lt;font color="#800000"&gt;ProbeAction&lt;/font&gt;, &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt;, &lt;font color="#800000"&gt;ProbeAction&lt;/font&gt;, and finally &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; sequence.&amp;nbsp; That final &lt;font color="#800000"&gt;DataSourceModuleType&lt;/font&gt; might then be used in a workflow for a &lt;font color="#800000"&gt;Discovery&lt;/font&gt; rule.&amp;nbsp; Although only certain combinations are allowed for each composite type (i.e. a &lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; module may not come between a &lt;font color="#800000"&gt;DataSource&lt;/font&gt; and &lt;font color="#800000"&gt;ProbeAction&lt;/font&gt; in a &lt;font color="#800000"&gt;Composite&lt;/font&gt;&amp;nbsp;&lt;font color="#800000"&gt;DataSourceModuleType&lt;/font&gt;), it’s otherwise completely flexible. &lt;/p&gt; &lt;p&gt;The following diagrams help to present this material more visually. &lt;/p&gt; &lt;p&gt;&lt;a href="http://scomnivore.files.wordpress.com/2008/06/modulesamples1.gif"&gt;&lt;/a&gt;The first diagram presents some basic modules that will be used in the examples that follow:&lt;/p&gt; &lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowTracer2of4ModulePrimer_29F2/Slide2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="484" alt="Slide2" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowTracer2of4ModulePrimer_29F2/Slide2_thumb.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://scomnivore.files.wordpress.com/2008/06/modulesamples2.gif"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://scomnivore.files.wordpress.com/2008/06/rulesample.gif"&gt;&lt;/a&gt;The next diagram depicts how &lt;font color="#800000"&gt;Composite&lt;/font&gt; modules are created and eventually used in a workflow:&lt;/p&gt; &lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowTracer2of4ModulePrimer_29F2/Slide3.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="484" alt="Slide3" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowTracer2of4ModulePrimer_29F2/Slide3_thumb.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;a href="http://scomnivore.files.wordpress.com/2008/06/monitorsample2state.gif"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://scomnivore.files.wordpress.com/2008/06/monitorsample3state.gif"&gt;&lt;/a&gt;The next diagram shows a more detailed view of the workflow presented above (the &lt;font color="#800000"&gt;Rule&lt;/font&gt;):&lt;/p&gt; &lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowTracer2of4ModulePrimer_29F2/Slide4.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="484" alt="Slide4" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowTracer2of4ModulePrimer_29F2/Slide4_thumb.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;This next diagram shows how the &lt;font color="#800000"&gt;Composite&lt;/font&gt; modules may also be used with other modules to form a &lt;font color="#800000"&gt;UnitMonitorType&lt;/font&gt;.&amp;nbsp; This next diagram is an example of a two-state monitor (Healthy/Warning or Healthy/Critical):&lt;/p&gt; &lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowTracer2of4ModulePrimer_29F2/Slide5.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="484" alt="Slide5" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowTracer2of4ModulePrimer_29F2/Slide5_thumb.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;This final example extends the previous example to be a three-state monitor (Healthy/Warning/Critical):&lt;/p&gt; &lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowTracer2of4ModulePrimer_29F2/Slide6.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="484" alt="Slide6" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/WorkflowTracer2of4ModulePrimer_29F2/Slide6_thumb.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Obviously, it can get fairly complicated.&amp;nbsp; On the other hand, it is very conducive to good design habits: making small, focused bits of functionality that are then re-used where they are needed.  &lt;p&gt;Next in part 3, we will examine these &lt;font color="#800000"&gt;DataItems&lt;/font&gt; a bit more closely.  &lt;p&gt;&lt;a href="mailto:vdipippo@focus24.com"&gt;VJD&lt;/a&gt;/&amp;lt;&amp;gt;&amp;lt; &lt;/p&gt; &lt;p&gt;(Links to parts: &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-1-of-4-workflow-primer.aspx"&gt;Part 1&lt;/a&gt;, &lt;strike&gt;Part 2&lt;/strike&gt;, &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-3-of-4-data-item-primer.aspx"&gt;Part 3&lt;/a&gt;, &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-4-of-4-the-tracer-module.aspx"&gt;Part 4&lt;/a&gt;) &lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=132836" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/OpsMgr/default.aspx">OpsMgr</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/DeepDive/default.aspx">DeepDive</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/Modules/default.aspx">Modules</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/CustomMPs/default.aspx">CustomMPs</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/MP+Authoring/default.aspx">MP Authoring</category></item><item><title>Workflow Tracer 3 of 4: Data Item Primer</title><link>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-3-of-4-data-item-primer.aspx</link><pubDate>Fri, 13 Mar 2009 14:05:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:132839</guid><dc:creator>vdipippo</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/vdipippo/rsscomments.aspx?PostID=132839</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-3-of-4-data-item-primer.aspx#comments</comments><description>&lt;p&gt;(Links to parts: &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-1-of-4-workflow-primer.aspx"&gt;Part 1&lt;/a&gt;, &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-2-of-4-module-primer.aspx"&gt;Part 2&lt;/a&gt;, &lt;strike&gt;Part 3&lt;/strike&gt;, &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-4-of-4-the-tracer-module.aspx"&gt;Part 4&lt;/a&gt;) &lt;/p&gt; &lt;p&gt;Now that we have discussed how workflows are the heart and soul of OpsMgr and modules are the building blocks of workflows, let’s discuss what runs through all of this plumbing: Data Items.&lt;/p&gt; &lt;p&gt;A data item is defined in a management pack via a &lt;font color="#800000"&gt;DataType&lt;/font&gt; definition in the &lt;font color="#800000"&gt;TypeDefinitions&lt;/font&gt; section. These &lt;font color="#800000"&gt;DataTypes&lt;/font&gt; follow an inheritance model such that all data items eventually derive from &lt;font color="#0000ff"&gt;System.BaseData&lt;/font&gt;. Data types are a little tricky to investigate, as their definition and XML format is tucked away in their implementation, which is always in native or managed code. Outside of that code, however, they are represented as XML document fragments. An example would be:&lt;pre&gt;&lt;pre style="font-size:12px;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:#ffffff;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;DataItem&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;time&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;”…”&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;sourceHealthServiceId&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;”…”&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;”System.BaseData”&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;In fact, this is all that’s needed for the basic Data Item. It is a single node with three required attributes: the time it was created, the source health service id, and the type of data item it is. The remainder of the schema is defined by the specific DataType and is buried inside the native or managed code that defines it. For instance, if we were so inclined, we could create a DataType called “My.Data.Item”. It could possibly look something like this: &lt;pre&gt;&lt;pre style="font-size:12px;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:#ffffff;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;DataItem&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;time&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;”…”&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;sourceHealthServiceId&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;”…”&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;”My.Data.Item”&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="font-size:12px;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:#ffffff;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;MyProps&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="font-size:12px;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:#ffffff;"&gt;        &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;MyProp1&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Value1&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;MyProp1&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="font-size:12px;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:#ffffff;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;MyProps&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="font-size:12px;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:#ffffff;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;DataItem&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;As you can probably guess, all children of the &lt;font color="#800000"&gt;DataItem&lt;/font&gt; element are subject to the specific requirements of the &lt;font color="#800000"&gt;DataType&lt;/font&gt; set forth in the .DLL that implements the data type. You can see, then, how a data source or probe starts a workflow off: it retrieves some data externally and wraps it in some type of data item. A property bag is a common one for script monitors. A discovery data item is common for discoveries, naturally. A performance data item is common for scripted performance collectors. The list goes on. 
&lt;p&gt;Incidentally, you can probably now see where the XPath expressions come from that we use in monitors, etc.: &lt;font color="#0000ff"&gt;DataItem/Property[@Name=&amp;quot;Status&amp;quot;]&lt;/font&gt; would correspond to something like this:&lt;pre&gt;&lt;pre style="font-size:12px;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:#ffffff;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;DataItem&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;time&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;”…”&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;sourceHealthServiceId&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;”…”&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;”System.PropertyBagData”&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="font-size:12px;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:#ffffff;"&gt;    &lt;span style="color:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#800000;"&gt;Property&lt;/span&gt; &lt;span style="color:#ff0000;"&gt;Name&lt;/span&gt;=&lt;span style="color:#0000ff;"&gt;”Status”&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;SomeStatus&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;Property&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="font-size:12px;margin:0em;width:100%;font-family:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;background-color:#ffffff;"&gt;&lt;span style="color:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#800000;"&gt;DataItem&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;…and would resolve to “SomeStatus.” Since these XPath expressions are used so often in monitoring, alerting, scripting, and just about everywhere else, knowledge of the XML representation of a &lt;font color="#800000"&gt;DataItem&lt;/font&gt; of any given &lt;font color="#800000"&gt;DataType&lt;/font&gt; is extremely helpful. 
&lt;p&gt;At this point, we can also return to our discussion of module types and give another clue as to the differentiation between them: 
&lt;ul&gt;
&lt;li&gt;&lt;font color="#800000"&gt;DataSource&lt;/font&gt; modules have only an output type. They do not have an input. 
&lt;li&gt;&lt;font color="#800000"&gt;ProbeAction&lt;/font&gt; modules have a single input and a single output. They could just simply be written to manipulate the input to produce the output, but they were intended to access an external resource, based on the input, that will lead to what becomes the output. There are also special types of &lt;font color="#800000"&gt;ProbeAction&lt;/font&gt; modules that have their &lt;font color="#ff0000"&gt;TriggerOnly&lt;/font&gt; attribute set to &lt;font color="#0000ff"&gt;true&lt;/font&gt;.&amp;nbsp; They do not have an input &lt;font color="#800000"&gt;DataItem&lt;/font&gt;. 
&lt;li&gt;&lt;font color="#800000"&gt;ConditionDetection&lt;/font&gt; modules have multiple inputs and a single output. The inputs are specified as a sequence of &lt;font color="#800000"&gt;InputTypes&lt;/font&gt;, but often there is only one in the sequence. 
&lt;li&gt;&lt;font color="#800000"&gt;WriteAction&lt;/font&gt; modules always have an input but only optionally have an output. The output is usually the result of the write action, not a continuation of the workflow. &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;In summary: 
&lt;ul&gt;
&lt;li&gt;&lt;font color="#800000"&gt;DataItems&lt;/font&gt; are the units of work that are processed by modules as part of a workflow. 
&lt;li&gt;They are defined as &lt;font color="#800000"&gt;DataType&lt;/font&gt; elements under the &lt;font color="#800000"&gt;TypeDefinitions&lt;/font&gt; element of a management pack. 
&lt;li&gt;They follow an inheritance model, deriving eventually from &lt;font color="#0000ff"&gt;System.BaseData&lt;/font&gt;. 
&lt;li&gt;They are implemented in &lt;strong&gt;native&lt;/strong&gt; or &lt;strong&gt;managed&lt;/strong&gt; code, where their format and XML representation are defined. &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Understanding the different types of data items involved in a workflow and their respective XML representation is the definitive prerequisite to understanding how to piece modules together to construct workflows for your own management pack. 
&lt;p&gt;This essentially brings us to the central point of this series: the Workflow Tracer module that I will present in the last post in this series part 4. 
&lt;p&gt;&lt;a class="" href="mailto:v0802@focus24.com"&gt;VJD&lt;/a&gt;/&amp;lt;&amp;gt;&amp;lt; &lt;/p&gt;
&lt;p&gt;(Links to parts: &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-1-of-4-workflow-primer.aspx"&gt;Part 1&lt;/a&gt;, &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-2-of-4-module-primer.aspx"&gt;Part 2&lt;/a&gt;, &lt;strike&gt;Part 3&lt;/strike&gt;, &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-4-of-4-the-tracer-module.aspx"&gt;Part 4&lt;/a&gt;) &lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=132839" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/OpsMgr/default.aspx">OpsMgr</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/DeepDive/default.aspx">DeepDive</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/Modules/default.aspx">Modules</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/CustomMPs/default.aspx">CustomMPs</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/MP+Authoring/default.aspx">MP Authoring</category></item><item><title>Workflow Tracer 4 of 4: The Tracer Module</title><link>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-4-of-4-the-tracer-module.aspx</link><pubDate>Fri, 13 Mar 2009 14:00:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:132840</guid><dc:creator>vdipippo</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/vdipippo/rsscomments.aspx?PostID=132840</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-4-of-4-the-tracer-module.aspx#comments</comments><description>&lt;p&gt;(Links to parts: &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-1-of-4-workflow-primer.aspx"&gt;Part 1&lt;/a&gt;, &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-2-of-4-module-primer.aspx"&gt;Part 2&lt;/a&gt;, &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-3-of-4-data-item-primer.aspx"&gt;Part 3&lt;/a&gt;, &lt;strike&gt;Part 4&lt;/strike&gt;) &lt;/p&gt;
&lt;p&gt;In the previous three posts, I discussed workflows, modules, and data items. I also stated that understanding the data items involved in various module interactions and their respective XML representations is sorely needed. You can accomplish this by digging though the system MPs and then through the disassembly of managed code, but that’s not a recommended course of action or a reasonable requirement. Also, beyond the general structure of the various types of data items, it is also important to see the actual contents on occasion. If you have a workflow that never produces output even though it appears as if the conditions, etc. in the workflow should result in something, a window into the values that are being processed by a particular module at a particular time would also be very helpful. This is standard fare for a solid debugging process supported by the platform’s tools. OpsMgr, unfortunately, does not yet have a good MP/workflow debugging facility.&lt;/p&gt;
&lt;p&gt;I have written a managed code module and an associated management pack that helps with this issue. The theory of operation of the module is simple enough: it is a condition detection module that receives a data item and then passes it on to the next module in the workflow unchanged. The only action it takes is to log the data item passed to it to the Application Event Log. 
&lt;p&gt;Using this module is simple. 
&lt;p&gt;It must first be installed. First, copy the .dll to the OpsMgr installation directory on the computer(s) on which you intend to run the trace. This will likely be C:\Program Files\System Center Operations Manager 2007\. Then, import the sealed MP downloadable below. Also, I’m assuming this will be done in a test lab. That’s my recommendation, anyway… 
&lt;p&gt;Second, it must be incorporated into the management pack in which the module you are tracing lives. It must be inserted into the module sequence of the composite module you are attempting to trace. 
&lt;p&gt;First, add a reference to it in your management pack: &lt;pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Reference&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;Alias&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”f24″&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ID&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;com.focus24.Scom.Modules&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ID&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Version&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;24.1.0.230&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Version&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;PublicKeyToken&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;5be9fb627d5adfbf&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;PublicKeyToken&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Reference&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;Next, add its required elements to your composite module’s &lt;font color="#800000"&gt;Configuration&lt;/font&gt; element: &lt;pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Configuration&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    …(your other stuff)…
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#c71585;"&gt;xsd&lt;/span&gt;:&lt;span style="COLOR:#800000;"&gt;element&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;xmlns&lt;/span&gt;:&lt;span style="COLOR:#ff0000;"&gt;xsd&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”http:&lt;/span&gt;//&lt;span style="COLOR:#ff0000;"&gt;www&lt;/span&gt;.&lt;span style="COLOR:#ff0000;"&gt;w3&lt;/span&gt;.&lt;span style="COLOR:#ff0000;"&gt;org&lt;/span&gt;/&lt;span style="COLOR:#ff0000;"&gt;2001&lt;/span&gt;/&lt;span style="COLOR:#ff0000;"&gt;XMLSchema&lt;/span&gt;” &lt;span style="COLOR:#ff0000;"&gt;name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”TraceElement”&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”xsd:string”&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#c71585;"&gt;xsd&lt;/span&gt;:&lt;span style="COLOR:#800000;"&gt;element&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;xmlns&lt;/span&gt;:&lt;span style="COLOR:#ff0000;"&gt;xsd&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”http:&lt;/span&gt;//&lt;span style="COLOR:#ff0000;"&gt;www&lt;/span&gt;.&lt;span style="COLOR:#ff0000;"&gt;w3&lt;/span&gt;.&lt;span style="COLOR:#ff0000;"&gt;org&lt;/span&gt;/&lt;span style="COLOR:#ff0000;"&gt;2001&lt;/span&gt;/&lt;span style="COLOR:#ff0000;"&gt;XMLSchema&lt;/span&gt;” &lt;span style="COLOR:#ff0000;"&gt;name&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”TraceTarget”&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;type&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”xsd:string”&lt;/span&gt; &lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Configuration&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;There is one more element that we need to specify for the tracer module, but it will not be under the &lt;font color="#800000"&gt;Configuration&lt;/font&gt; element of your module. Instead, this will be specified directly when we add it to the &lt;font color="#800000"&gt;MemberModules&lt;/font&gt; element. This is because you may want to insert the module into the workflow multiple times, to trace a &lt;font color="#800000"&gt;DataItem&lt;/font&gt; through different stages of the workflow. 
&lt;p&gt;Therefore, next, add it any number of times under the &lt;font color="#800000"&gt;MemberModules&lt;/font&gt; element, with the corresponding ordering under the &lt;font color="#800000"&gt;Composition&lt;/font&gt; element: &lt;pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MemberModules&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;DataSource&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”DS1″&lt;/span&gt; …&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;        …your data source…
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;DataSource&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”Trace1″&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;TypeID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”f24!com.focus24.Scom.Modules.WorkflowTracer”&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;        &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TraceElement&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/TraceElement$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TraceElement&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;        &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TraceTarget&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/TraceTarget$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TraceTarget&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;        &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TraceStage&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Text to Identify Stage, like “Data Source to Exp Filter”&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TraceStage&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”Filter1″&lt;/span&gt; …&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;        …your expression filter…
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”Trace2″&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;TypeID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”f24!com.focus24.Scom.Modules.WorkflowTracer”&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;        &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TraceElement&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/TraceElement$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TraceElement&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;        &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TraceTarget&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/TraceTarget$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TraceTarget&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;        &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TraceStage&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Exp Filter to Discovery Mapper&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TraceStage&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”Mapper1″&lt;/span&gt; …&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;        …your discovery mapper…
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”Trace3″&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;TypeID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”f24!com.focus24.Scom.Modules.WorkflowTracer”&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;        &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TraceElement&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/TraceElement$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TraceElement&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;        &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TraceTarget&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;$Config/TraceTarget$&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TraceTarget&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;        &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TraceStage&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;Discovery Mapper to Final Output&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;TraceStage&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;ConditionDetection&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;MemberModules&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Composition&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”Trace3″&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;        &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”Mapper1″&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;            &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”Trace2″&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;                &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”Filter1″&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;                    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”Trace1″&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;                        &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt; &lt;span style="COLOR:#ff0000;"&gt;ID&lt;/span&gt;=&lt;span style="COLOR:#0000ff;"&gt;”DS1″&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;/&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;                    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;                &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;            &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;        &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;    &lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Node&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="FONT-SIZE:12px;MARGIN:0em;WIDTH:100%;FONT-FAMILY:consolas,&amp;#39;Courier New&amp;#39;,courier,monospace;BACKGROUND-COLOR:#ffffff;"&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#800000;"&gt;Composition&lt;/span&gt;&lt;span style="COLOR:#0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;…and that’s about it. When the management pack is next imported, the new workflow will begin running. Check the Operations Manager log for any module errors first. Then, check the Application log for the workflow trace events. Here is a sample: 
&lt;p&gt;&lt;a href="http://scomnivore.files.wordpress.com/2008/06/sampleappevent.gif"&gt;&lt;img height="448" alt="" src="http://scomnivore.files.wordpress.com/2008/06/sampleappevent.gif?w=404&amp;amp;h=448" width="404" /&gt;&lt;/a&gt; 
&lt;p&gt;I sincerely hope you find this module useful. Please let me know if you encounter any issues or have any other feedback on this module or this series. 
&lt;p&gt;&lt;a class="" href="mailto:v0802@focus24.com"&gt;VJD&lt;/a&gt;/&amp;lt;&amp;gt;&amp;lt; 
&lt;p&gt;Download: 
&lt;p&gt;USE THIS IN A TEST ENVIRONMENT ONLY. 
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/com.focus24.Scom.Modules_build231.zip"&gt;com.focus24.Scom.Modules_build231.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(Links to parts: &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-1-of-4-workflow-primer.aspx"&gt;Part 1&lt;/a&gt;, &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-2-of-4-module-primer.aspx"&gt;Part 2&lt;/a&gt;, &lt;a class="" href="http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/13/workflow-tracer-3-of-4-data-item-primer.aspx"&gt;Part 3&lt;/a&gt;, &lt;strike&gt;Part 4&lt;/strike&gt;) &lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=132840" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/OpsMgr/default.aspx">OpsMgr</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/DeepDive/default.aspx">DeepDive</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/Modules/default.aspx">Modules</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/CustomMPs/default.aspx">CustomMPs</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/MP+Authoring/default.aspx">MP Authoring</category></item><item><title>ConfigMgr MP Policy Checker</title><link>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/03/configmgr-mp-policy-checker.aspx</link><pubDate>Wed, 04 Mar 2009 02:04:30 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:132017</guid><dc:creator>vdipippo</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/vdipippo/rsscomments.aspx?PostID=132017</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/03/03/configmgr-mp-policy-checker.aspx#comments</comments><description>&lt;p&gt;When client policy is created in ConfigMgr, it is distributed to clients via Management Points.&amp;nbsp; Client policy can be anything from client agent settings, site-wide settings that affect client activity (such as communication ports), and, most commonly, advertisements.&amp;nbsp; The mechanics that happen behind-the-scenes to get the policy to the client is, generally, as follows:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;The policy is created at the server, either by an SDK/Scripting application or the console.&lt;/li&gt; &lt;li&gt;The policy in the database is compared against the site assignments, collection assignments, etc., to create effective policy assignments (i.e. which policy is applicable to which clients).&lt;/li&gt; &lt;li&gt;The policy and assignments are replicated down to all child sites and MPs.&lt;/li&gt; &lt;li&gt;When clients check for new or updated policy, they receive it in the form of an HTTP data pull from the MP.&lt;/li&gt; &lt;li&gt;The HTTP payload is an XML document that wraps MOF data.&lt;/li&gt; &lt;li&gt;The MOF information is unwrapped and becomes new or updated instances of ConfigMgr WMI classes.&lt;/li&gt; &lt;li&gt;The ConfigMgr client&amp;#39;s activities are essentially driven by instances of those WMI classes.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;In a large environment, especially one with rate-limited addresses between sites, the part that can be problematic to research is the replication piece.&amp;nbsp; The replication of policy can back up behind other jobs.&amp;nbsp; Also, network issues can cause some policy instructions to be discarded.&amp;nbsp; This can cause a situation where the policy looks fine at the console but is not being picked up by clients.&amp;nbsp; The solution to this type of problem is usually fairly simple: a quick change to the policy will cause it to replicate again.&amp;nbsp; There&amp;#39;s usually some change that doesn&amp;#39;t fundamentally change the policy that can be made.&amp;nbsp; Besides, it can be changed back after the problem has corrected itself.&lt;/p&gt; &lt;p&gt;There is a tool in the old SMS Toolkit 2 that allows you to connect to an MP to pull policy, but it is a manual process and is very daunting to use when trying to ascertain the extent of an issue or the readiness of policy in a large environment.&amp;nbsp; The latter is an important sanity check that I have always found useful before a large deployment, etc.&lt;/p&gt; &lt;p&gt;To facilitate this testing, I have written a tool that will allow you to select a policy and then check that policy via HTTP pulls to all of the MPs.&amp;nbsp; The tool is multi-threaded for performance and works well in large environment.&amp;nbsp; The use of this tool should be fairly straight-forward.&amp;nbsp; Here are the screen shots (with certain identifying parts blacked out):&lt;/p&gt; &lt;p&gt;First, enter the central primary server&amp;#39;s FQDN and database name, and then click &amp;quot;Load Policies.&amp;quot;&lt;/p&gt; &lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/ConfigMgrMPPolicyChecker_12014/image1.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="399" alt="image1" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/ConfigMgrMPPolicyChecker_12014/image1_thumb.jpg" width="613" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The policies will be listed in alphabetical order by policy ID.&lt;/p&gt; &lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/ConfigMgrMPPolicyChecker_12014/image2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="399" alt="image2" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/ConfigMgrMPPolicyChecker_12014/image2_thumb.jpg" width="613" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Next, select a policy by clicking on it in the grid.&amp;nbsp; This puts the Policy ID in the Pattern field and changes the button to &amp;quot;Check This Policy.&amp;quot;&lt;/p&gt; &lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/ConfigMgrMPPolicyChecker_12014/image3.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="399" alt="image3" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/ConfigMgrMPPolicyChecker_12014/image3_thumb.jpg" width="613" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Clicking on &amp;quot;Check This Policy&amp;quot; starts the HTTP checks against every MP.&amp;nbsp; The checks happen through 5 independent threads, which is a number that is hard-coded into the tool.&amp;nbsp; This seems to be a good balance of concurrence and performance.&amp;nbsp; Each Status cell will be a yellow Req(thread#), a red Failed, or a green Passed.&amp;nbsp; Details for failed requests will be shown in the last column (not shown here, but in the grid to the right).&amp;nbsp; One more status is a yellow Aborted, which will show if you stop the checks with active threads.&amp;nbsp; When all of the checks are done, you must click Stop Checks to reset the tool.&lt;/p&gt; &lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/ConfigMgrMPPolicyChecker_12014/image4.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="549" alt="image4" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/ConfigMgrMPPolicyChecker_12014/image4_thumb.jpg" width="711" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;As always, there are caveats and unfinished business with the tool:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;The tool connects to SQL with Integrated Security.&amp;nbsp; It does remember the last FQDN and database name you&amp;#39;ve used, but no SQL authentication is possible at this point.&lt;/li&gt; &lt;li&gt;The HTTP checks do not use an FQDN.&amp;nbsp; They use the NetBIOS server names from the SQL database.&amp;nbsp; This should not be a problem if the tool is run on a system with the necessary DNS suffix settings.&lt;/li&gt; &lt;li&gt;The initial policies that you will see are all GUIDs.&amp;nbsp; While some of these will be present on every MP, many are specific to a particular primary site, secondary site, etc.&amp;nbsp; Though they appear in the database, they will fail to verify on &lt;em&gt;all&lt;/em&gt; MPs.&amp;nbsp; This is normal and depends on the policy the GUID represents.&amp;nbsp; The screen shot above shows advertisement policies (ADVERT-PACKAGE-PROGRAM).&amp;nbsp; These are the ones that are most useful to check.&lt;/li&gt; &lt;li&gt;There are some cases where older policies have version mismatches on some MPs that will cause them to fail the check, but are not problems.&amp;nbsp; This is most often because a policy existed on the system before a new site was added.&amp;nbsp; The new site&amp;#39;s version numbers may not match the older sites&amp;#39; version numbers.&amp;nbsp; The tool does not handle this yet, but for most infrastructures, this isn&amp;#39;t a common occurrence.&lt;/li&gt; &lt;li&gt;You always have to click Stop Checks to restart the test.&amp;nbsp; The functionality missing is another thread that frees the UI but keeps watch over the other threads and resets the UI when they end.&amp;nbsp; It seems like a bunch of work to avoid a single click, even though it&amp;#39;s a definite piece of unfinished business.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Please let me know your experience with this tool.&amp;nbsp; I find it extremely useful for testing whether advertisement policy is out to all MPs, especially.&amp;nbsp; This is another tool that we have used extensively with all of our ConfigMgr customers.&amp;nbsp; I am eager to see how it fairs &amp;quot;in the wild.&amp;quot;&lt;/p&gt; &lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/utilities/CheckMP_build1073.zip"&gt;You can download build 1073 here.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Enjoy!&lt;/p&gt; &lt;p&gt;&lt;a href="mailto:v0802@focus24.com"&gt;Vin/&amp;lt;&amp;gt;&amp;lt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=132017" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/ConfigMgr/default.aspx">ConfigMgr</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/Utilities/default.aspx">Utilities</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/Troubleshooting/default.aspx">Troubleshooting</category></item><item><title>ConfigMgr Collection Query Rule Embedded Reference Checker</title><link>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/02/16/configmgr-collection-query-rule-embedded-reference-checker.aspx</link><pubDate>Tue, 17 Feb 2009 00:40:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:130550</guid><dc:creator>vdipippo</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/vdipippo/rsscomments.aspx?PostID=130550</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/02/16/configmgr-collection-query-rule-embedded-reference-checker.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;&lt;u&gt;Abstract&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I have written a tool to check the embedded references in ConfigMgr query-based collection rules.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;Background&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A very common practice in designing query rules for ConfigMgr collections is to use the SMS_FullCollectionMembership WMI class to effect the inclusion or exclusion of members of other collections into the collection for which the query rule is being written.&amp;nbsp; There are numerous examples and discussions about this practice on other blogs, but briefly, here&amp;#39;s an involved scenario with the example query that meets the need:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You have some generic collections: 
&lt;ul&gt;
&lt;li&gt;You have a collection that you design that uses the software inventory to include all systems on which .NET Framework 2.0 is installed.&amp;nbsp; Let&amp;#39;s say this is collection ID LAB00001. 
&lt;li&gt;You have another collection that does something similar for MSXML 2.0, collection ID LAB00002. 
&lt;li&gt;You have a collection that contains any system with less than 1G of memory installed, collection ID LAB00003. 
&lt;li&gt;You have a collection that contains any system that is under the control of the EMEA desktop group, collection ID LAB00004.&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;You need to create a collection for a software roll-out that the EMEA desktop group can manage, but that will not allow them to advertise to anyone that does not meet the requirements.&amp;nbsp; You might have guessed it: .NET 2.0, MSXML 2.0, at least 1G of memory, and within their locus of control. 
&lt;li&gt;Instead of duplicating the effort in each collection, you want to re-use the existing collections. 
&lt;li&gt;This also is a best practice because if you decide to refine the queries that drive the membership of any of those collections, you would only need to update it in one place. 
&lt;li&gt;You consider using the &amp;quot;Limit Collection Membership&amp;quot; feature, but realize that (a) this can only link the new collections&amp;#39; membership to 1 other collection where here we need 4, and (b) you cannot use this to effect one of the requirements: &lt;em&gt;excluding&lt;/em&gt; the membership of another collection. 
&lt;li&gt;To solve this issue, you create two collections.&amp;nbsp; To one collection (e.g. LAB00005) you grant the EMEA team rights.&amp;nbsp; To the other collection, you advertise the software and use the following query rule that uses the SMS_FullCollectionMembership WMI class:&lt;/li&gt;&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;SELECT * FROM SMS_R_System&lt;/p&gt;
&lt;p&gt;WHERE&lt;/p&gt;
&lt;p&gt;AND ResourceID IN (SELECT ResourceID FROM SMS_FullCollectionMembership WHERE CollectionID=&amp;quot;LAB00001&amp;quot;)&lt;/p&gt;
&lt;p&gt;AND ResourceID IN (SELECT ResourceID FROM SMS_FullCollectionMembership WHERE CollectionID=&amp;quot;LAB00002&amp;quot;)&lt;/p&gt;
&lt;p&gt;AND ResourceID NOT IN (SELECT ResourceID FROM SMS_FullCollectionMembership WHERE CollectionID=&amp;quot;LAB00003&amp;quot;)&lt;/p&gt;
&lt;p&gt;AND ResourceID IN (SELECT ResourceID FROM SMS_FullCollectionMembership WHERE CollectionID=&amp;quot;LAB00004&amp;quot;)&lt;/p&gt;
&lt;p&gt;AND ResourceID IN (SELECT ResourceID FROM SMS_FullCollectionMembership WHERE CollectionID=&amp;quot;LAB00005&amp;quot;)&lt;/p&gt;&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;This produces a collection whose members have .NET 2.0, MSXML 2.0, are not in the &amp;lt;1G memory collection, are in the collection of systems under EMEA control, and are in the collection EMEA has been provided to control the distribution of this software release. 
&lt;li&gt;Note in all of these cases, you could have used the WMI class that is created specifically for each collection.&amp;nbsp; I don&amp;#39;t think this is the common practice, but it achieves the same result.&amp;nbsp; This is important to point out, as the point comes up later in this post. 
&lt;ul&gt;
&lt;li&gt;(i.e. the first sub-select could have been SELECT ResourceID FROM SMS_CM_RES_COLL_LAB00001).&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;The Problem&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;While this is a powerful technique and essentially something you can&amp;#39;t do without in any active ConfigMgr environment, it is difficult to manage.&amp;nbsp; With a large number of collections that utilize this and the certain change in what is required for the types of collections I mentioned above as &amp;quot;generic,&amp;quot; keeping track of these references can be difficult.&amp;nbsp; The purpose of a collection may change (e.g. .NET 2.0 becomes .NET 2.0 &lt;em&gt;or higher&lt;/em&gt;, where something that required the collection when it was only .NET 2.0 is not compatible with &amp;gt;2.0)&amp;nbsp; The name may change with it.&amp;nbsp; A collection may be deleted and re-created for any number of reasons, which will not cause any alarm as embedded references are not tracked by the ConfigMgr Admin UI.&lt;/p&gt;
&lt;p&gt;In spite of these issues, there is no facility for obtaining an overview of query rules with these references or, even more pressing, to decode the references to check that they still point to an existing, appropriate collection.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;The Tool&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I have written a tool that provides for both of these requirements: an overview and a reference checker.&amp;nbsp; The tool uses integrated SQL security to access the database views directly.&amp;nbsp; It is a console application that is invoked with two command line parameters: the server name and the SMS_??? database name.&lt;/p&gt;
&lt;p&gt;The tool enumerates all existing site codes, collections, and query rules on that server.&amp;nbsp; It then uses regular expressions to detect probable collection references (i.e. any site code followed by 5 hex digits).&amp;nbsp; There is also a special case for the built-in collections, which do not correspond to a site code (starting instead with SMS) and do not conform to the strict standard for user-created collections (e.g. SMSDM001, SMS000GS, etc.)&amp;nbsp; Finally, it cross-references those collection IDs to the actual list of collections and includes them by ID and name for review.&amp;nbsp; Any collection ID that is found in a rule but not in the collections enumerated from the server is reported as &amp;quot;**** Unknown ****&amp;quot;.&amp;nbsp; You can search the output for this to identify bad references.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s an example run:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/ConfigMgrCollectionQueryRuleEmbeddedRefe_14FF5/CheckCollRef1.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="101" alt="CheckCollRef1" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/ConfigMgrCollectionQueryRuleEmbeddedRefe_14FF5/CheckCollRef1_thumb.jpg" width="673" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;...and the output file...&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/ConfigMgrCollectionQueryRuleEmbeddedRefe_14FF5/CheckCollRef2.jpg"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="298" alt="CheckCollRef2" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/ConfigMgrCollectionQueryRuleEmbeddedRefe_14FF5/CheckCollRef2_thumb.jpg" width="627" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I think the tool and the output should be fairly self-explanatory from there.&lt;/p&gt;
&lt;p&gt;Notes on the limitations of this tool:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;We have a fairly large number of collections that utilize references at many client sites.&amp;nbsp; I&amp;#39;ve used this tool against all of them with no problems.&amp;nbsp; That having been said, there is still a possibility that some of you may have rules that fool the regular expressions I am using.&amp;nbsp; That highlights the limitation of pattern matching versus parsing, only the former of which this tool does.&amp;nbsp; I would be interested to see any instances of this, so please let me know.&amp;nbsp; The most likely candidate would be if your system or user naming convention is close (or identical) to the collection ID patterns in ConfigMgr.&amp;nbsp; If that were the case, collection query rules that reference such names could be mistaken for collection references. 
&lt;li&gt;This will not catch more generic references, like WHERE CollectionID LIKE &amp;quot;LAB0001%&amp;quot;.&amp;nbsp; I&amp;#39;m guessing that if anyone is using these, it is a rare case. 
&lt;li&gt;It also will not catch references that are intrinsically broken, like an invalid Collection ID (e.g. LAB000X0 or LAB00000121). 
&lt;li&gt;It will not catch references to any Collection ID that does not correspond to any known site code.&amp;nbsp; Besides obvious typos, I can envision a valid scenario where this would be needed, but it would be very rare: 
&lt;ul&gt;
&lt;li&gt;You have a child primary site 999. 
&lt;li&gt;You create a collection at that site (999?????). 
&lt;li&gt;You use that collection ID in a reference in a query rule of a collection built at a parent site.&amp;nbsp; This reference would return no ResourceIDs except when run on that particular child primary and any of its children.&amp;nbsp; This is where I say it&amp;#39;s probably a very, very rare case. 
&lt;li&gt;You then delete site 999. 
&lt;li&gt;Any references to 999 collections are now broken, but since there&amp;#39;s no longer a reference to site 999 in the database, the tool will not catch these.&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;It will not catch references to collections that are specified using the SMS_CM_RES_COLL_&amp;lt;CollectionID&amp;gt; classes.&amp;nbsp; I actually had this in the tool, but the underlying query that ConfigMgr generates uses these classes to effect the &amp;quot;Limit Collection Membership To&amp;quot; functionality.&amp;nbsp; This would have meant that the tool would not only identify query rules that had embedded references but also query rules for collections with the &amp;quot;Limit To&amp;quot; collection ID specified.&amp;nbsp; Since the latter is much more common and also double-checked by the Admin UI, I left their detection out of the tool.&amp;nbsp; As I mentioned above, I believe the most common practice is to use the SMS_FullCollectionMembership class, so this shouldn&amp;#39;t pose much of an issue. 
&lt;li&gt;It will not catch references to other named objects such as packages, advertisements, etc.&amp;nbsp; While technically possible to use these in a WQL query, I&amp;#39;m guessing these, too, are rare.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;All of these are probably rare.&amp;nbsp; If you have an appreciable number of instances of any of these exceptions, please let me know.&amp;nbsp; I&amp;#39;d be interested in working to evolve the tool to handle them accordingly.&amp;nbsp; Overall, though, I think you will find this to be a very useful tool.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/utilities/CheckCollRef_build15.zip"&gt;You can download build 15 of CheckCollRef here.&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="mailto:vdipippo@focus24.com"&gt;VJD&lt;/a&gt;/&amp;lt;&amp;gt;&amp;lt;&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=130550" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/ConfigMgr/default.aspx">ConfigMgr</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/Utilities/default.aspx">Utilities</category></item><item><title>ConfigMgr Package Distribution Health Browser</title><link>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/02/14/configmgr-package-distribution-health-browser.aspx</link><pubDate>Sat, 14 Feb 2009 15:00:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:130300</guid><dc:creator>vdipippo</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/vdipippo/rsscomments.aspx?PostID=130300</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/02/14/configmgr-package-distribution-health-browser.aspx#comments</comments><description>&lt;p&gt;Anyone that manages a ConfigMgr environment with any depth to its hierarchy usually spends a fair amount of time waiting for minijobs to replicate changes down the hierarchy.&amp;nbsp; Though not immediate, policy such as site control changes, advertisements, client agent configuration (inventory, discovery, etc.), and so forth do not usually keep you waiting too long to verify the success or failure of the replication down to the bottom of the tree.&amp;nbsp; One notable exception to this is package replication.&amp;nbsp; Especially for large packages, it is not uncommon for replication to take several hours, particularly if senders are configured with rate limits.&amp;nbsp; In an environment with a large number of packages and/or packages that update frequently, it can be quite an organizational challenge to find, check, and remedy replication issues on a regular basis.&amp;nbsp; This is even more true if you manage the ConfigMgr infrastructure but others create and maintain packages.&amp;nbsp; While the console is quite functional in checking the distribution status of packages in general, I wrote a tool that helps administrators zero in on package replication issues much more quickly.&amp;nbsp; First, it accesses the associated views in the database directly, which makes it much faster to get at this information than the console, which is a front-end to the ConfigMgr WMI provider.&amp;nbsp; Second, it offers some sorting and filtering options that highlight the replication issues much more efficiently than reviewing the total status for every package individually.&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s the initial screen:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/ConfigMgrPackageDistributionHealthBrowse_1337B/pdhb1_4.jpg"&gt;&lt;img style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height="555" alt="pdhb1" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/ConfigMgrPackageDistributionHealthBrowse_1337B/pdhb1_thumb_1.jpg" width="575" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;The File menu is simple enough.&amp;nbsp; It contains Connect and Exit.&amp;nbsp; If you click the Load button without using File | Connect, it also shows you the connect parameters (shown below).&amp;nbsp; The interface is also simple enough:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The left-hand pane (1) shows what you are investigating, controlled by the radio buttons (3).&amp;nbsp; If you investigate by Package (the default), it will show you packages on the left.&amp;nbsp; If you investigate by DP, it will show DPs on the left.&lt;/li&gt;
&lt;li&gt;Clicking on anything in the left-hand pane shows the assignments that are in any of the selected assignment statuses in the right-hand pane (2), which are controlled by the three checkboxes on the right (5).&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;The default is to show only abnormal assignments.&lt;/li&gt;
&lt;li&gt;If you are investigating by Package, clicking on a Package on the left shows all DPs that are in the selected statuses on the right.&lt;/li&gt;
&lt;li&gt;If you are investigating by DP, clicking on a DP on the left shows any packages on that DP that are in the selected statuses on the right.&lt;/li&gt;
&lt;li&gt;Normal and Abnormal are fairly self-explanatory, but &amp;quot;Missing&amp;quot; assignments may not be.&amp;nbsp; It is a quick way to see where packages are &lt;em&gt;not&lt;/em&gt; assigned.&amp;nbsp; This is helpful for confirming whether the desired packages are on any new DPs.&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;The checkboxes on the left (4) determine the order of the list boxes.&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;The sort order applies notwithstanding the side on which the particular item is located.&lt;/li&gt;
&lt;li&gt;Sorting DPs by Site Code is the default.&amp;nbsp; If this is un-checked, the DPs are sorted by server name.&lt;/li&gt;
&lt;li&gt;Sorting Packages by Name is not the default.&amp;nbsp; The default is to sort packages by Package ID.&lt;/li&gt;&lt;/ul&gt;
&lt;li&gt;The final check box determines whether the tool pre-filters the left-hand list.&amp;nbsp; This is one of the central characteristics of this tool.&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;This is checked by default.&lt;/li&gt;
&lt;li&gt;With this checked, only items in the left-hand list that have at least one assignment that would show in the right-hand list will be shown.&lt;/li&gt;
&lt;li&gt;With this un-checked, all items in the left-hand list are shown.&amp;nbsp; Here, it is likely that you will click on something in the left-hand list and see nothing in the right-hand list.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;
&lt;p&gt;So, to wrap-up, let me give you a couple of scenarios for the behavior of this tool:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;With the defaults, loading from a DB will show packages in the left-hand list, sorted by Package ID, that have at least one DP that has an abnormal status.&amp;nbsp; Clicking on a Package ID would show all DPs to which that package is assigned with that abnormal status, sorted by Site Code.&lt;/li&gt;
&lt;li&gt;If you change to Investigate by DP, it will show DPs in the left-hand list, sorted by Site Code, that have at least one package that has an abnormal status.&amp;nbsp; Clicking on a DP would show all Packages assigned to that DP with that abnormal status, sorted by Package ID.&lt;/li&gt;
&lt;li&gt;If you switch back to Investigate by Package, un-check Show Abnormal... and check Show Missing..., you will see a list of packages that are &lt;em&gt;not&lt;/em&gt; assigned to at least one DP.&amp;nbsp; This is usually normal, but with some packages you know need to be global, you can quickly see the issue and to which DP they need to be assigned.&lt;/li&gt;
&lt;li&gt;With any of these, if you un-check Pre-Filter..., you will see &lt;em&gt;all&lt;/em&gt; packages or &lt;em&gt;all&lt;/em&gt; DPs in the left-hand list.&lt;/li&gt;
&lt;li&gt;Etcetera, etcetera, etcetera!&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Here&amp;#39;s a snapshot of the tool in action at one of our customers.&amp;nbsp; I&amp;#39;ve blacked out the identifying information.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/ConfigMgrPackageDistributionHealthBrowse_1337B/pdhb3_2.jpg"&gt;&lt;img style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height="554" alt="pdhb3" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/ConfigMgrPackageDistributionHealthBrowse_1337B/pdhb3_thumb.jpg" width="574" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;As promised, here is the connect box, which should be self-explanatory:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/ConfigMgrPackageDistributionHealthBrowse_1337B/pdhb2_2.jpg"&gt;&lt;img style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height="243" alt="pdhb2" src="http://myitforum.com/cs2/blogs/vdipippo/WindowsLiveWriter/ConfigMgrPackageDistributionHealthBrowse_1337B/pdhb2_thumb.jpg" width="344" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Please let me know what you think, if you encounter any issues with this tool, or have any suggestions.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/utilities/ConfigMgrPDHB_build16.zip"&gt;You can download build 16 here.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;Vin/&amp;lt;&amp;gt;&amp;lt;&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=130300" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/ConfigMgr/default.aspx">ConfigMgr</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/Utilities/default.aspx">Utilities</category></item><item><title>OpsMgr DW Timeouts and TableCount Utility</title><link>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/02/13/opsmgr-dw-timeouts-and-tablecount-utility.aspx</link><pubDate>Fri, 13 Feb 2009 20:40:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:130403</guid><dc:creator>vdipippo</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/vdipippo/rsscomments.aspx?PostID=130403</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/02/13/opsmgr-dw-timeouts-and-tablecount-utility.aspx#comments</comments><description>&lt;p&gt;I recently fixed a problem at one of our clients that had a persistent problem with the DW write actions timing out.&amp;nbsp; After running the profiler and examining the underlying SQL, I found a few tables that were taking an inordinate amount of time to do simple operations.&amp;nbsp; This seemed to be a clear case of a fragmentation problem.&amp;nbsp; The biggest issue was that tables like ManagementPackVersion with 200 rows were taking over 3 minutes just to do a SELECT COUNT(*).&amp;nbsp; The remedy for these tables was to rebuild the indices using ALTER INDEX ALL ON &amp;lt;tableName&amp;gt; REBUILD.&amp;nbsp; Please check out the options and caveats regarding that command in the SQL documentation.&lt;/p&gt;
&lt;p&gt;After fixing the tables that were causing the immediate issues, I wrote a small utility (TableCount.exe) that does a table count on all the tables in a database and reports the number of milliseconds that the operation takes on each.&amp;nbsp; This identified a few other tables that needed to have their indices rebuilt as well.&amp;nbsp; The utility takes two parameters: the server name and the database name.&amp;nbsp; It assumes integrated security at this point.&amp;nbsp; Here&amp;#39;s some sample output (note the named instance of SQL):&lt;/p&gt;
&lt;p&gt;C:\&amp;gt;TableCount OM07DB\TESTDWDB OperationsManagerDW&lt;/p&gt;
&lt;p&gt;[Alert].[AlertResolutionState_135D9B096BF24191AD5E04D6C100DA4F]: 88738 row(s) retrieved in 15 ms&lt;br /&gt;[dbo].[ManagementPackVersion]: 208 row(s) retrieved in 0 ms&lt;br /&gt;[dbo].[StandardDatasetAggregationHistory]: 1589 row(s) retrieved in 0 ms&lt;br /&gt;[Event].[Event_0A191F9853CD4927B76640AB8A8157F0]: 1801878 row(s) retrieved in 62 ms 
&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;C:\&amp;gt;TableCount OM07DB\TESTOPDB OperationsManager&lt;/p&gt;
&lt;p&gt;[dbo].[DomainTableStatisticsUpdateHistory]: 1245 row(s) retrieved in 0 ms&lt;br /&gt;[dbo].[MT_Computer]: 286 row(s) retrieved in 0 ms&lt;br /&gt;[dbo].[MT_NetworkAdapter_0]: 929 row(s) retrieved in 0 ms&lt;br /&gt;[dbo].[PerformanceData_27]: 1672410 row(s) retrieved in 312 ms&lt;br /&gt;[dbo].[PerformanceData_28]: 1662302 row(s) retrieved in 218 ms&lt;br /&gt;[dbo].[PerformanceData_29]: 1755413 row(s) retrieved in 594 ms&lt;br /&gt;[dbo].[PerformanceData_30]: 1786974 row(s) retrieved in 359 ms&lt;br /&gt;[dbo].[PerformanceSignatureData]: 193512 row(s) retrieved in 31 ms&lt;br /&gt;[dbo].[PublisherMessages]: 1251885 row(s) retrieved in 156 ms&lt;br /&gt;[dbo].[StateChangeEvent]: 338924 row(s) retrieved in 31 ms&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;There are other forensic techniques that you will find useful in this situation, especially related to querying the DMVs in SQL to see the actual issues, but those are well-documented elsewhere.&amp;nbsp; Also, the SELECT COUNT(*) operation is not sufficient for detecting every form of this issue.&amp;nbsp; None-the-less, this utility is pretty handy to get the counts and the count times in a single, quick snapshot.&amp;nbsp; It certainly found the problems in this customer&amp;#39;s database, plus one other so far...&lt;/p&gt;
&lt;p&gt;Feedback, as always, is most welcomed.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/utilities/TableCounts_build2.zip"&gt;You can download build 2 of TableCount here.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;VJD/&amp;lt;&amp;gt;&amp;lt;&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=130403" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/OpsMgr/default.aspx">OpsMgr</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/Utilities/default.aspx">Utilities</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/Troubleshooting/default.aspx">Troubleshooting</category></item><item><title>Returning to the Blog!</title><link>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/02/12/returning-to-the-blog.aspx</link><pubDate>Fri, 13 Feb 2009 03:12:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:130301</guid><dc:creator>vdipippo</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/vdipippo/rsscomments.aspx?PostID=130301</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/vdipippo/archive/2009/02/12/returning-to-the-blog.aspx#comments</comments><description>&lt;p&gt;In looking back at my blog, I can&amp;#39;t believe it has been since July of 2008 that I have had a post.&amp;nbsp; I assure you that this is against my earnest desire to do so.&amp;nbsp; As with anything, I don&amp;#39;t think I&amp;#39;ve successfully integrated blogging into my routine.&amp;nbsp; I suppose at 6 months that is an understatement!&lt;/p&gt;
&lt;p&gt;That&amp;#39;s about all I have to add to this particular post!&amp;nbsp; I will instead endeavor to post content from the work we do in System Center more frequently.&lt;/p&gt;
&lt;p&gt;Thanks to all for the positive feedback we continue to get on the Lineage Explorer and the Workflow Primer module.&lt;/p&gt;
&lt;p&gt;I hope to hear from you all again soon...&lt;/p&gt;
&lt;p&gt;Vin/&amp;lt;&amp;gt;&amp;lt;&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=130301" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/General/default.aspx">General</category></item><item><title>Build 316 of Lineage Explorer</title><link>http://myitforum.com/cs2/blogs/vdipippo/archive/2008/07/05/build-316-of-lineage-explorer.aspx</link><pubDate>Sat, 05 Jul 2008 21:27:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:119436</guid><dc:creator>vdipippo</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/vdipippo/rsscomments.aspx?PostID=119436</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/vdipippo/archive/2008/07/05/build-316-of-lineage-explorer.aspx#comments</comments><description>&lt;p&gt;I&amp;#39;ve had some time to get a new build of the Lineage Explorer out.&amp;nbsp; Build 316 is the latest.&lt;/p&gt;
&lt;p&gt;If you aren&amp;#39;t already familiar with this tool, check out the original post: &lt;a href="http://myitforum.com/cs2/blogs/vdipippo/archive/2008/06/20/opsmgr_2D00_lineage_2D00_explorer.aspx"&gt;OpsMgr Lineage Explorer&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Build 316 adds the following functionality:&lt;/p&gt;
&lt;p&gt;1.&amp;nbsp; There&amp;#39;s a new status bar that will show the load progress for the OpsMgr environment.&amp;nbsp; This is useful for environments with a large number of management packs.&amp;nbsp; This also doubles as an indication of which MP element type is currently populating the tree view.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://myitforum.com/cs2/blogs/vdipippo/img/LineageExplorer316/lexp316-1.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;2. Data Types are now processed, so you can explore their lineage as well.&amp;nbsp; Also, Class Types are selected for display first.&amp;nbsp; Build 227 selected Module Types by default.&amp;nbsp; Finally, there&amp;#39;s a Filter by Example feature, though you can only turn it off using the View menu.&amp;nbsp; More on that later.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://myitforum.com/cs2/blogs/vdipippo/img/LineageExplorer316/lexp316-2.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;3. I&amp;#39;ve added a property grid for all MP element types, and gone a little further into which properties are included.&amp;nbsp; Build 227 only showed a few properties of module types only.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://myitforum.com/cs2/blogs/vdipippo/img/LineageExplorer316/lexp316-3.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;4. There is a Filter by Example feature that allows you to right-click on any node in the tree view and select it to be the filter (by example).&amp;nbsp; The two options are Any and Direct.&amp;nbsp; &amp;quot;Any&amp;quot; will filter the tree view, including only those MP Elements that have the element you selected anywhere in their lineage.&amp;nbsp; &amp;quot;Direct&amp;quot; includes only those MP Elements that are direct descendants of the element you select.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://myitforum.com/cs2/blogs/vdipippo/img/LineageExplorer316/lexp316-4.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s another screen shot of what the tree view looks like after selecting &amp;quot;Filter by Example (Any)&amp;quot; on System.CommandExecuter.&amp;nbsp; Note that the View menu now shows the Filter by Example with a check mark.&amp;nbsp; This is to allow you to turn it off.&amp;nbsp; Also note that if I had selected &amp;quot;Filter by Example (Direct),&amp;quot; all of the elements in this screens shot would not have been visible because they are descendants of descendants of System.CommandExecuter, not direct descendants of System.CommandExecuter.&amp;nbsp; If this screen shot included Microsoft.Windows.ScriptWriteAction, you would have seen that it would have been included.&amp;nbsp; It would also be included if &amp;quot;Filter by Example (Direct)&amp;quot; had been selected, because it is a direct descendant of System.CommandExecuter.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://myitforum.com/cs2/blogs/vdipippo/img/LineageExplorer316/lexp316-5.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;There are more improvements in the works.&amp;nbsp; Most notable is the ability to view the lineage of monitor types.&amp;nbsp; This one is a little trickier, because each of the regular detections has its own lineage.&amp;nbsp; That makes it a single MP Element type with multiple lineages.&lt;/p&gt;
&lt;p&gt;After that, it will have complete coverage of the &amp;lt;TypeDefinitions&amp;gt; section.&amp;nbsp; Then, it&amp;#39;s on to the &amp;lt;Monitoring&amp;gt; section to allow the lineage of the components of monitoring MP Elements to be displayed.&amp;nbsp; This functionality will be similar to the monitor type handling: an MP Element with multiple lineages.&lt;/p&gt;
&lt;p&gt;The other to-dos from the &lt;a href="http://myitforum.com/cs2/blogs/vdipippo/archive/2008/06/20/opsmgr_2D00_lineage_2D00_explorer.aspx"&gt;original post&lt;/a&gt; are still on the list.&lt;/p&gt;
&lt;p&gt;Version 316 can be downloaded here: &lt;a href="http://myitforum.com/cs2/blogs/vdipippo/utilities/LineageExplorer316.zip"&gt;LineageExplorer316.zip&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks for the feedback thus far.&amp;nbsp; Keep it coming!&lt;/p&gt;
&lt;p&gt;VJD/&amp;lt;&amp;gt;&amp;lt;&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=119436" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/OpsMgr/default.aspx">OpsMgr</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/Utilities/default.aspx">Utilities</category></item><item><title>OpsMgr Scripting: WYWINNWYG</title><link>http://myitforum.com/cs2/blogs/vdipippo/archive/2008/07/05/opsmgr-scripting-wywinnwyg.aspx</link><pubDate>Sat, 05 Jul 2008 06:14:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:119407</guid><dc:creator>vdipippo</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/vdipippo/rsscomments.aspx?PostID=119407</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/vdipippo/archive/2008/07/05/opsmgr-scripting-wywinnwyg.aspx#comments</comments><description>&lt;p&gt;&lt;font size="4"&gt;&lt;u&gt;&amp;quot;What You Write Is Not Necessarily What You Get&amp;quot;&lt;/u&gt; &lt;/font&gt;
&lt;p&gt;&lt;u&gt;&lt;font size="3"&gt;Abstract&lt;/font&gt;&lt;/u&gt; 
&lt;p&gt;OpsMgr 2007 has a fairly substantial library of discovery module types and monitor types that ship with it.&amp;nbsp; Even with that library, it seems that the single most important extensibility point in OpsMgr today is the ability to use custom scripts to perform discovery and monitoring tasks.&amp;nbsp; As I&amp;#39;ve developed scripts for OpsMgr, I have learned a great deal about how OpsMgr processes scripts.&amp;nbsp; This article describes some important concepts regarding how scripts are processed by OpsMgr. 
&lt;p&gt;&lt;u&gt;&lt;font size="3"&gt;Besides the Execution Environment...&lt;/font&gt;&lt;/u&gt; 
&lt;p&gt;There is an important distinction between the execution environment of a script and the production of the script itself. 
&lt;p&gt;The execution environment is fairly straight-forward: VBScript or JScript that runs through the script processor.&amp;nbsp; In fact, if you trace back the various script modules, you will find that they all derive from a handful of native modules, all of which essentially execute cscript.exe.&amp;nbsp; All of the capabilities of that scripting engine and the facilities it can access are at your disposal (ADSI, WMI, ADO, the remainder of what&amp;#39;s in COM, etc.)&amp;nbsp; We also use a COM object in our OpsMgr scripts that is on every system that has the OpsMgr Agent installed, namely &amp;quot;MOM.ScriptAPI&amp;quot;.&amp;nbsp; This essentially provides functionality to generate well-formed XML DataItems with the appropriate format, attributes, etc.&amp;nbsp; We&amp;#39;ll see that later.&amp;nbsp; While that&amp;#39;s a simplification of what &amp;quot;MOM.ScriptAPI&amp;quot; does, the point is that it is not part of some custom script execution environment that runs in-process with OpsMgr.&amp;nbsp; It is just another COM object that the usual cscript.exe environment instantiates at our request. 
&lt;p&gt;The production of the script is quite a bit more interesting, so I&amp;#39;ll spend the majority of this article addressing it. 
&lt;p&gt;&lt;u&gt;&lt;font size="3"&gt;Sample 1: Expansion of Embedded Selectors&lt;/font&gt;&lt;/u&gt; 
&lt;p&gt;First, let&amp;#39;s define a simple script, which we&amp;#39;ll put inside a two-state script unit monitor.&amp;nbsp; This script targets Microsoft.Windows.NTService.&amp;nbsp; I&amp;#39;ve also created two service classes from the MP templates in OpsMgr, one for Browser and one for SNMP.&amp;nbsp; This virtually guarantees that OpsMgr will discover at least one on any given system.&amp;nbsp; My test system has both. 
&lt;p&gt;&lt;strong&gt;Figure 1&lt;/strong&gt;: The script itself.&amp;nbsp; (FYI - The $...$ selector that is not entirely in view is &amp;quot;$Target/Host/Property[Type=&amp;quot;System!System.Entity&amp;quot;]/DisplayName$&amp;quot;) 
&lt;p&gt;&lt;img src="http://myitforum.com/cs2/blogs/vdipippo/img/scriptparams/scriptparams-1.png" alt="" /&gt; 
&lt;p&gt;&lt;strong&gt;Figures 2a and 2b&lt;/strong&gt;: The unhealthy and health expressions.&amp;nbsp; These are somewhat unrelated to the topic of this article, but I thought I&amp;#39;d add this for general purposes.&amp;nbsp; It is useful to see this and to note that any time you see wizard pages that resemble these, you are using the UI to express the configuration of the System.ExpressionFilter condition detection module.&amp;nbsp; In this case, I&amp;#39;ve defined a monitor that always returns healthy, regardless of what the script does.&amp;nbsp; You can experiment with this further, but keep in mind that you can specify just about anything for either side of each expression (i.e. row on the wizard page), including the entire gamut of $...$ selectors.&amp;nbsp; ...end aside... 
&lt;p&gt;&lt;img src="http://myitforum.com/cs2/blogs/vdipippo/img/scriptparams/scriptparams-2a.png" alt="" /&gt; 
&lt;p&gt;&lt;img src="http://myitforum.com/cs2/blogs/vdipippo/img/scriptparams/scriptparams-2b.png" alt="" /&gt; 
&lt;p&gt;Returning to the main topic, anyone that is a script developer has a particular paradigm in mind.&amp;nbsp; The script is written and runs as written.&amp;nbsp; If you&amp;#39;ve ever seen constructions that use the $...$ selectors inline (e.g. SomeVar = &amp;quot;$MPElement...$&amp;quot;), you might have assumed that there was something special about the script execution environment that somehow resolves those.&amp;nbsp; The reality is that those resolutions are done before the script is ever executed.&amp;nbsp; Therefore, we have a very tricky paradigm on our hands: the execution environment is completely standard, but the script body itself is &amp;quot;refined&amp;quot; by OpsMgr before it is embodied in an actual file and run. 
&lt;p&gt;Let&amp;#39;s investigate this.&amp;nbsp; Our example script does nothing of interest except return a static property bag.&amp;nbsp; That will be somewhat useful later, but for now, the really interesting part is not what the script does, but what the script becomes. 
&lt;p&gt;To find the actual file that is eventually run, we need to get to the Health Service State directory and find our script.&amp;nbsp; We will actually find two versions of the script, because it is generated once for each target against which the script will run (in this case, Browser and SNMP). 
&lt;p&gt;&lt;strong&gt;Figure 3a&lt;/strong&gt;: Finding the script location. 
&lt;p&gt;&lt;img src="http://myitforum.com/cs2/blogs/vdipippo/img/scriptparams/scriptparams-3a.png" alt="" /&gt; 
&lt;p&gt;&lt;strong&gt;Figure 3b&lt;/strong&gt;: What&amp;#39;s finally in the first instance. 
&lt;p&gt;&lt;img src="http://myitforum.com/cs2/blogs/vdipippo/img/scriptparams/scriptparams-3b.png" alt="" /&gt; 
&lt;p&gt;&lt;strong&gt;Figure 3c&lt;/strong&gt;: What&amp;#39;s finally in the second instance. 
&lt;p&gt;&lt;img src="http://myitforum.com/cs2/blogs/vdipippo/img/scriptparams/scriptparams-3c.png" alt="" /&gt; 
&lt;p&gt;As you can see from the figures, everything that relates to the execution context of the script is not present in the execution environment per se, but baked into the script itself as it is readied to run.&amp;nbsp; This includes information about the target, the MPElement on whose behalf the script is being invoked, any MPElement we may need (which I grant you is usually only required for discovery scripts), and information about the target&amp;#39;s host (which is also information from the $Target...$ selector family). 
&lt;p&gt;It is useful to understand this mechanism for two reasons:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You do not need to put everything into the arguments of the script that may seem necessary.&amp;nbsp; The script will be customized per target.&amp;nbsp; This opens up a wide array of information that can be used in the script without worrying about the command line formatting. 
&lt;li&gt;It is contrary to our normal thought process for scripting.&amp;nbsp; Understanding it provides a better picture of how your script will be invoked and it also reveals how these OpsMgr-specialty-laden scripts can be debugged. &lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;In a practice, I always include a comment line at the beginning of my scripts that includes the first four items in our sample script: the basic identification of the Target and MPElement.&amp;nbsp; I find that to be extremely useful in tracking down script errors. 
&lt;p&gt;&lt;u&gt;&lt;font size="3"&gt;Sample 2: More Embedded Selectors: From &amp;lt;Configuration&amp;gt;, Including Overrides&lt;/font&gt;&lt;/u&gt; 
&lt;p&gt;Continuing our example, let&amp;#39;s set some overrides that will make the two instances unique with respect to their configuration as well as their target. 
&lt;p&gt;&lt;strong&gt;Figure 4a&lt;/strong&gt;: Overrides targeted to the specific service object Browser (on the test system). 
&lt;p&gt;&lt;img src="http://myitforum.com/cs2/blogs/vdipippo/img/scriptparams/scriptparams-4a.png" alt="" /&gt; 
&lt;p&gt;&lt;strong&gt;Figure 4b&lt;/strong&gt;: Overrides targeted to the specific service object SNMP (on the test system). 
&lt;p&gt;&lt;img src="http://myitforum.com/cs2/blogs/vdipippo/img/scriptparams/scriptparams-4b.png" alt="" /&gt; 
&lt;p&gt;I also did two other things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I added a few additional lines to the script &lt;pre&gt;&amp;#39; Some Config Values
&amp;#39;   Arguments: $Config/Arguments$
&amp;#39;   Interval Seconds: $Config/IntervalSeconds$
&amp;#39; A service-specific property:
&amp;#39;   $Target/Property[Type=&amp;quot;MicrosoftSystemCenterNTServiceLibrary!Microsoft.SystemCenter.NTService&amp;quot;]/ServiceProcessName$&lt;/pre&gt;
&lt;li&gt;I created another monitor that is almost identical to the first one.&amp;nbsp; The script itself is actually identical, but this second monitor defines the script in a UnitMonitorType and uses that custom UnitMonitorType in the UnitMonitor.&amp;nbsp; By default, script monitors created by the UI use a built-in UnitMonitorType, which means that the script body itself is defined in the UnitMonitor.&amp;nbsp; There is a subtle difference that we will discuss shortly.&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;Once the new configuration becomes active, we follow the same pattern to find our scripts and see what&amp;#39;s in them. 
&lt;p&gt;&lt;strong&gt;Figure 5a&lt;/strong&gt;: Finding the script location.&amp;nbsp; There will be four now: the original and the UnitMonitorType variant (UMT) for both instances. 
&lt;p&gt;&lt;img src="http://myitforum.com/cs2/blogs/vdipippo/img/scriptparams/scriptparams-5a.png" alt="" /&gt; 
&lt;p&gt;&lt;strong&gt;Figure 5b and 5c&lt;/strong&gt;: The contents of the two updated but UI-defined scripts. 
&lt;p&gt;&lt;img src="http://myitforum.com/cs2/blogs/vdipippo/img/scriptparams/scriptparams-5b.png" alt="" /&gt; 
&lt;p&gt;&lt;img src="http://myitforum.com/cs2/blogs/vdipippo/img/scriptparams/scriptparams-5c.png" alt="" /&gt; 
&lt;p&gt;Note that the additional property of the target came through fine, but the $Config$ selectors were unchanged.&amp;nbsp; This means that using a UI-defined script, the $Config$ selectors are not expanded.&amp;nbsp; This applies to both the &amp;quot;natural&amp;quot; configuration items and any overrides. 
&lt;p&gt;What&amp;#39;s going on here?&amp;nbsp; Let&amp;#39;s check out UMT version. 
&lt;p&gt;&lt;strong&gt;Figure 5d and 5e&lt;/strong&gt;: The contents of the two updated, UMT-defined scripts. 
&lt;p&gt;&lt;img src="http://myitforum.com/cs2/blogs/vdipippo/img/scriptparams/scriptparams-5d.png" alt="" /&gt; 
&lt;p&gt;&lt;img src="http://myitforum.com/cs2/blogs/vdipippo/img/scriptparams/scriptparams-5e.png" alt="" /&gt; 
&lt;p&gt;Now, that&amp;#39;s what we&amp;#39;re looking for.&amp;nbsp; I must admit that while I have a reasonable explanation for this, I cannot give you a definitive answer.&amp;nbsp; I&amp;#39;ll leave that for a developer that knows the exact inner workings of OpsMgr, but it appears that the $Config$ selectors are only expanded when module and monitor types are assembled for use in a workflow.&amp;nbsp; Think of it this way: when something defined in the &amp;lt;TypeDefinitions&amp;gt; section of an MP is assembled to be used in the &amp;lt;Monitoring&amp;gt; section of an MP, $Config$ selectors are expanded.&amp;nbsp; The UI-defined monitor defines the script body in the &amp;lt;Monitoring&amp;gt; section.&amp;nbsp; It uses a built-in module that itself defines the script body as whatever is in the &amp;lt;Configuration&amp;gt; of the actual monitor $MPElement$, which is defined in the &amp;lt;Monitoring&amp;gt; section.&amp;nbsp; Therefore, our UI-defined script body is never really subjected to assembly in that way.&amp;nbsp; The UMT version, with the script defined in the UMT (under &amp;lt;TypeDefinitions&amp;gt;) is assembled for use in the corresponding monitor, so we see the expansion for it.&amp;nbsp; Both are then assembled for use against the various targets that exist, which is why everything else expands in either case. 
&lt;p&gt;&lt;u&gt;&lt;font size="3"&gt;Important Notes About Expansion&lt;/font&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;There are a few additional important notes on this expansion business:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You must use a script argument for anything that changes between invocations of the script.&amp;nbsp; The script is created only when a new configuration becomes active.&amp;nbsp; That only happens when management packs change.&amp;nbsp; There&amp;#39;s a myriad of things that cause a configuration change, such as group membership rules, new monitors, new subscriptions, overrides, etc., but there are an equally large number of changes to the environment that do not cause a configuration change.&amp;nbsp; Some of these include group membership updates that are the result of a dynamic rule, target property changes that are the result of discovery runs, etc.&amp;nbsp; Suffice it to say that a script can run a multitude of times under the same configuration.&amp;nbsp; This is particularly important for:&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;$Data$ selectors.&amp;nbsp; There&amp;#39;s no way to expand a $Data$ selector when the script instance is created.&amp;nbsp; These are pulled from the contents of the &amp;lt;DataItem&amp;gt; that is passed into the module executing the script and are therefore only available as script arguments.&amp;nbsp; If you&amp;#39;ve never seen these, they&amp;#39;re pretty useful.&amp;nbsp; For any timed script,&amp;nbsp; my favorite is $Data/@time$.&amp;nbsp; You can pass that as an argument to have the trigger time of the monitor at your disposal, in the appropriate OpsMgr &amp;lt;DataItem&amp;gt; attribute format.&lt;/li&gt;
&lt;li&gt;$Target$ selectors.&amp;nbsp; We saw that these work wonderfully as embedded selectors, but you must be careful with them.&amp;nbsp; They are expanded when the script is created, which is when a new configuration becomes active.&amp;nbsp; Some $Target$ properties might change between the time the script is created from the then-active configuration and something happens that causes a new configuration to become active (and hence the script to be re-created).&amp;nbsp; If there&amp;#39;s a $Target$ property that can afford to be a little stale, you can embed it.&amp;nbsp; If not, pass it as an argument.&lt;/li&gt;
&lt;li&gt;$MPElement$ selectors are all tied to the configuration, so they&amp;#39;re safe.&amp;nbsp; When they change, the configuration is changing, so the script will be re-created anyway.&lt;/li&gt;&lt;/ol&gt;
&lt;li&gt;I have encountered some quirks, so don&amp;#39;t think you&amp;#39;re losing your mind if you see strange things in your script.&amp;nbsp; I suspect that some combinations of selectors embedded in scripts are not expanded properly, but I have been thus far unable to reliably reproduce the problem.&amp;nbsp; It definitely happens, so be on the lookout.&lt;/li&gt;
&lt;li&gt;The MP alias used in the selectors must be appropriate to the MP in which the monitor is being created.&amp;nbsp; If you are creating an MP yourself, that&amp;#39;s easy to keep straight.&amp;nbsp; If not, you may not be able to predict the alias.&amp;nbsp; System.Library, for instance, is sometimes referenced as System! and sometimes as SystemLibrary&amp;lt;Version&amp;gt;!, where &amp;lt;Version&amp;gt; is whatever version of that MP was installed when the reference was made.&amp;nbsp; An easy way to determine this is to add something as an argument using the UI.&amp;nbsp; It will use the correct alias, and you can just copy it from there. &lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;u&gt;&lt;font size="3"&gt;Debugging the Expanded Script&lt;/font&gt;&lt;/u&gt; 
&lt;p&gt;The final item that is relevant is how this can help debugging.&amp;nbsp; This goes back to the execution environment discussion I started with.&amp;nbsp; When the MOM.ScriptAPI COM object is used to submit property bags, performance data, discovery data, etc., it does so using STDOUT.&amp;nbsp; That&amp;#39;s it.&amp;nbsp; Therefore, running your script from the location in which it was created (under Health Service State) works just fine.&amp;nbsp; It just prints the XML representation of the data item that would be picked up by OpsMgr if the script had been run inside its workflow. 
&lt;p&gt;&lt;strong&gt;Figure 6&lt;/strong&gt;: A property bag output to STDOUT after an interactive run of the script. 
&lt;p&gt;&lt;img src="http://myitforum.com/cs2/blogs/vdipippo/img/scriptparams/scriptparams-6.png" alt="" /&gt; 
&lt;p&gt;&lt;u&gt;&lt;font size="3"&gt;Conclusion&lt;/font&gt;&lt;/u&gt; 
&lt;p&gt;I hope you find this information useful.&amp;nbsp; I believe it is very helpful to understand the machinations that a script undergoes well before it even hits its execution environment.&amp;nbsp; It&amp;#39;s also useful to have so many more data from the context of the OpsMgr configuration, target, etc. available to use.&amp;nbsp; It makes scripting that much more robust, which is a major component of OpsMgr&amp;#39;s appeal. &lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=119407" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/OpsMgr/default.aspx">OpsMgr</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/DeepDive/default.aspx">DeepDive</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/Scripting/default.aspx">Scripting</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/MP+Authoring/default.aspx">MP Authoring</category></item><item><title>Distributed Applications Custom MP</title><link>http://myitforum.com/cs2/blogs/vdipippo/archive/2008/06/20/distributed_2D00_applications_2D00_custom_2D00_mp.aspx</link><pubDate>Fri, 20 Jun 2008 04:52:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:118734</guid><dc:creator>vdipippo</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/vdipippo/rsscomments.aspx?PostID=118734</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/vdipippo/archive/2008/06/20/distributed_2D00_applications_2D00_custom_2D00_mp.aspx#comments</comments><description>&lt;p&gt;If you have begun to work with distributed applications, you have begun to work with one of the most impressive areas of Operations Manager. This is the facility that allows you to truly take the health model approach to the next level. Essentially, it is a graphical tool that allows you to model your infrastructure along service boundaries, as opposed to the physical boundaries to which we have always been accustomed.&lt;/p&gt;
&lt;p&gt;Behind the scenes, Operations Manager creates many entities in the management pack to which you save your distributed application. These are classes, instances of those classes, relationships, monitors, etc.&lt;/p&gt;
&lt;p&gt;I plan to blog about several facets of understanding and implementing distributed applications in the future, but one foundational element is an MP I have written that includes a new distributed application template that I think you will find useful.&lt;/p&gt;
&lt;p&gt;It is a completely blank distributed application that will appear in the Template list when you create a new distributed application. It is very similar to the &amp;quot;Blank (Advanced)&amp;quot; template that ships with OpsMgr, but it is truly blank. It will appear as &amp;quot;Empty Distributed Application&amp;quot; in the template list.&lt;/p&gt;
&lt;p&gt;There are two differences between my &amp;quot;Empty Distributed Application&amp;quot; template and the &amp;quot;Blank (Advanced)&amp;quot; template that ships with OpsMgr:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The &amp;quot;Blank (Advanced)&amp;quot; template includes a dependency monitor named &amp;quot;Blank Distributed Application Health Roll-up&amp;quot;. This is a curious monitor for three reasons: 
&lt;ol&gt;
&lt;li&gt;It is a dependency monitor whose parent is Entity Health -&amp;gt; Availability but it makes a dependency link to the Entity Health aggregate monitor for everything in the DA. That&amp;#39;s somewhat redundant.&amp;nbsp; Actually, I think it would be best described as &amp;quot;recursively redundant,&amp;quot; since that gives you Entity Health -&amp;gt; Availability -&amp;gt; (this monitor) -&amp;gt; Entity Health -&amp;gt; Availability -&amp;gt; ... 
&lt;li&gt;The logical function of this monitor is already performed by the &amp;quot;All Contained Objects&amp;quot; dependency monitor already under Availability (hence the redundant part of my comment). 
&lt;li&gt;This monitor is disabled.&lt;/li&gt;&lt;/ol&gt;
&lt;li&gt;Along these same lines, my template adds a dependency monitor named &amp;quot;All Contained Objects&amp;quot; under Configuration, Performance, and Security, to match the one that is under Availability by default. These are enabled by default but can be easily overridden if desired. You may want certain DAs created from this template to be availability-only, etc., but I think the presence of the monitors will help.&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;The current version of the sealed MP is 24.1.1.1010.&amp;nbsp; The MP is available for download here:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/com.focus24.Distributed.Applications1010.zip"&gt;com.focus24.Distributed.Applications1010.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;VJD/&amp;lt;&amp;gt;&amp;lt;&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=118734" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/OpsMgr/default.aspx">OpsMgr</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/CustomMPs/default.aspx">CustomMPs</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/DistrApps/default.aspx">DistrApps</category></item><item><title>OpsMgr Lineage Explorer</title><link>http://myitforum.com/cs2/blogs/vdipippo/archive/2008/06/20/opsmgr_2D00_lineage_2D00_explorer.aspx</link><pubDate>Fri, 20 Jun 2008 04:48:00 GMT</pubDate><guid isPermaLink="false">8e8f7986-475c-475d-bdc9-a1b3a63b955b:118733</guid><dc:creator>vdipippo</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://myitforum.com/cs2/blogs/vdipippo/rsscomments.aspx?PostID=118733</wfw:commentRss><comments>http://myitforum.com/cs2/blogs/vdipippo/archive/2008/06/20/opsmgr_2D00_lineage_2D00_explorer.aspx#comments</comments><description>&lt;p&gt;&lt;strong&gt;&lt;span style="TEXT-DECORATION:underline;"&gt;Summary&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;As I&amp;#39;ve been researching management pack elements over the course of the past 18 months, one task that I find myself doing over and over again is researching the lineage of management pack elements.&amp;nbsp; With the inheritance and composite module features of the OpsMgr design, this can take you down quite a road.&amp;nbsp; I have long wanted to write a tool that makes this easier.&amp;nbsp; This is it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="TEXT-DECORATION:underline;"&gt;What This Tool Does&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;This tool allows you to explore the lineage of OpsMgr MP elements.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="TEXT-DECORATION:underline;"&gt;Why This Tool Is Useful&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;OpsMgr is very object-oriented in its design.&amp;nbsp; As such, it includes inheritance for class types and relationship types.&amp;nbsp; Also, the workflow engine in OpsMgr is the driving force behind all discoveries, monitors, and rules.&amp;nbsp; All discoveries, monitors, and rules are based on modules that perform various functions.&amp;nbsp; All module types derive, eventually, from either managed code or native code.&amp;nbsp; One major difficulty in researching a new management pack you&amp;#39;ve loaded (or from which you intend to learn) is that module types can also be &amp;quot;composite&amp;quot; modules, which contain any number of other modules that are linked together to form a new module type.&amp;nbsp; Often, you will find a discovery that uses a data source module that is a composite of three or four modules.&amp;nbsp; Those three or four modules can themselves be composites of several modules.&amp;nbsp; Some management packs have modules that must be un-wrapped to four or five levels before you really understand the base modules that make up the actual work the workflow is doing.&lt;/p&gt;
&lt;p&gt;This tool loads your OpsMgr environment from the database and then allows you to inspect the class types, relationship types, and module types installed.&amp;nbsp; It allows you to expand them to see their lineage (either their parentage for class types and relationship types or in the case of module types, their composition tree down to the underlying native or managed modules).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="TEXT-DECORATION:underline;"&gt;Future Directions&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;I am currently working to extend this viewer to include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MonitorType Lineage 
&lt;li&gt;Discovery DataSource Lineage 
&lt;li&gt;Discovery Target Lineage (useful for disabling the &amp;quot;root&amp;quot; discoveries for a management pack) 
&lt;li&gt;Rule Lineage &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;I also plan to add more features around presenting the data:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;DisplayStrings.&amp;nbsp; Everything is an ID right now, which is the most important item for using what you see in your own MP. 
&lt;li&gt;A view into the &amp;lt;Configuration/&amp;gt; block for modules.&amp;nbsp; This is easy to do at face value, but to make it intelligent, the schema really needs to be parsed so one can easily see how a composite module is using a member module.&amp;nbsp; This would also involve expanding the SchemaTypes involved.&amp;nbsp; Many times, this is a simple $Config$ reference, which just passes the problem up the chain; however, the implementation of many modules do not require the configuration of certain member modules to be specified.&amp;nbsp; Instead, they configure the member module directly.&amp;nbsp; This is often the case with the Expression Filter.&amp;nbsp; The bottom line is that a view into the &amp;lt;Configuration/&amp;gt; block will be introduced shortly, but it may or may not be introduced with some intelligence around parsing the schema.&amp;nbsp; At some point, however, that would be the desired end state for this part of the tool. 
&lt;li&gt;I have a function that I have not completely implemented that will allow a module to be right-clicked and selected as the filter for the entire display.&amp;nbsp; This would be very useful, for example, in determining which modules eventually use a script, publish performance data, or generate alerts.&amp;nbsp; Most management packs are intuitive, but I&amp;#39;ve seen a few write actions in rules that bury the GenerateAlert module a few levels deep, which makes it difficult to flag them as alert-generating. 
&lt;li&gt;Exception handling will improve as I get feedback and break the tool more myself.&amp;nbsp; I&amp;#39;m following the basic premise that I recently discussed with a friend and peer developer: I&amp;#39;m not catching exceptions unless I plan to do something useful with them.&amp;nbsp; This is a fairly innocuous tool at the moment, so I&amp;#39;m assuming that you&amp;#39;d like to see the stack trace as much as I do.&amp;nbsp; I&amp;#39;ll spare everyone from the Spartan &amp;quot;Could not connect to database.&amp;quot; message box for the time being. &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="TEXT-DECORATION:underline;"&gt;Getting the Tool&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;The current build (227) is available for download here:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://myitforum.com/cs2/blogs/vdipippo/LineageExplorer227.zip"&gt;LineageExplorer227.zip&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;VJD/&amp;lt;&amp;gt;&amp;lt;&lt;/p&gt;&lt;img src="http://myitforum.com/cs2/aggbug.aspx?PostID=118733" width="1" height="1"&gt;</description><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/OpsMgr/default.aspx">OpsMgr</category><category domain="http://myitforum.com/cs2/blogs/vdipippo/archive/tags/Utilities/default.aspx">Utilities</category></item></channel></rss>
