Applies To: System Center 2012 - Operations Manager, System Center 2012 R2 Operations Manager, System Center 2012 SP1 - Operations Manager

The System.LogicalSet.ExpressionFilter condition detection module type is a filtering module that takes a set of data of any input data type and outputs the same data type. There are no changes to the data item flowing through a module of this type. The module either allows the data item through or stops the data item based on the expression specified as configuration.


This module is used to evaluate a set of data items with a single condition detection module. Condition Detection modules usually run for each data item output from the data source module. The System.LogicalSet.ExpressionFilter evaluates the data as a set, and can be configured to pass or block the workflow depending on whether some all, some, or none of the instances match the criteria.

Type Definition

<ConditionDetectionModuleType ID="System.LogicalSet.ExpressionFilter" Accessibility="Public" Batching="true" Stateful="false" PassThrough="true">
    <xsd:element name="Expression" type="ExpressionType" xmlns:xsd="" />
    <xsd:element name="EmptySet" type="EmptySetValueType" xmlns:xsd="" />
    <xsd:element name="SetEvaluation" type="SetEvaluationValueType" xmlns:xsd="" />
    <OverrideableParameter ID="EmptySet" Selector="$Config/EmptySet$" ParameterType="string" />
    <OverrideableParameter ID="SetEvaluation" Selector="$Config/SetEvaluation$" ParameterType="string" />
  <ModuleImplementation Isolation="Any">


The System.LogicalSet.ExpressionFilter module supports the following configuration parameters.

Parameter Type Description



Required parameter. Defines an expression that evaluates to true or false for each of the incoming data items.



Determines what the module should do with sets that contain no data. Only two values are possible: Passthrough, which passes the set on to the next module in the workflow, and Block, which stops processing of the workflow.



Specifies how to evaluate the data set against the condition. Only two values are possible: All, which passes the condition detection only if all items in the data set meet the criteria, or Any, which passes each of those data items that meet the criteria.


The System.LogicalSet.ExpressionFilter module is a native module.

Module Type Usage


Passes or halts a workflow based on the value of a specified expression.

External Module References



The following XML defines a simple threshold style monitor type that determines if a performance counter with multiple instances is below the configured threshold. The AboveThresholdDetection condition detection module checks to see if all passed in data items are above the threshold; when this is true, the state of the monitor will be set to AboveThreshold. The BelowThresholdDetection condition detection module checks to see if any of the passed in data items are below the threshold, and if this is true the state of the monitor will be set to BelowThreshold. Note that these two conditions are mutually exclusive.

<UnitMonitorType ID="CustomSimpleThreshold.ErrorOnAnyBelowThreshold" Accessibility="Public">
    <MonitorTypeState ID="AboveThreshold" NoDetection="false" />
    <MonitorTypeState ID="BelowThreshold" NoDetection="false" />
    <xsd:element minOccurs="1" name="ComputerName" type="xsd:string" />
    <xsd:element minOccurs="1" name="CounterName" type="xsd:string" />
    <xsd:element minOccurs="1" name="ObjectName" type="xsd:string" />
    <xsd:element minOccurs="1" name="InstanceName" type="xsd:string" />
    <xsd:element minOccurs="1" name="AllInstances" type="xsd:boolean" />
    <xsd:element minOccurs="1" name="Frequency" type="xsd:unsignedInt" />
    <xsd:element minOccurs="1" name="Threshold" type="xsd:double" />
    <OverrideableParameter ID="Frequency" Selector="$Config/Frequency$" ParameterType="int" />
    <OverrideableParameter ID="Threshold" Selector="$Config/Threshold$" ParameterType="double" />
      <DataSource ID="DS_PerfData" TypeID="Performance!System.Performance.DataProvider">
      <ConditionDetection ID="AboveThresholdDetection" TypeID="System!System.LogicalSet.ExpressionFilter">
              <XPathQuery Type="Double">Value</XPathQuery>
              <Value Type="Double">$Config/Threshold$</Value>
      <ConditionDetection ID="BelowThresholdDetection" TypeID="System!System.LogicalSet.ExpressionFilter">
              <XPathQuery Type="Double">Value</XPathQuery>
              <Value Type="Double">$Config/Threshold$</Value>
      <RegularDetection MonitorTypeStateID="BelowThreshold">
        <Node ID="BelowThresholdDetection">
          <Node ID="DS_PerfData" />
      <RegularDetection MonitorTypeStateID="AboveThreshold">
        <Node ID="AboveThresholdDetection">
          <Node ID="DS_PerfData" />



Module Type


Input Type


Output Type