The required SCOM hotfixes for Exchange MP are not installed.

ExchangeRequiredHotfixesNotInstalled (UnitMonitor)

Element properties:

TargetMicrosoft.SystemCenter.HealthService
Parent MonitorSystem.Health.AvailabilityState
CategoryCustom
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.TimedScript.TwoStateMonitorType
RemotableTrue
AccessibilityPublic
Alert Message
Critical Operations Manager hotfixes are not installed.
Critical hotfixes required for reliable operation of the Exchange Server 2010 and other management packs are not installed on this server. Please see the appropriate KB article for more information, and to download the required hotfix.
For Operations Manager 2007 SP1, install KB 971541 (http://go.microsoft.com/fwlink/?LinkID=167911)
For Operations Manager 2007 R2, install KB 974144 (http://go.microsoft.com/fwlink/?LinkID=167912)
RunAsDefault

Source Code:

<UnitMonitor ID="ExchangeRequiredHotfixesNotInstalled" Accessibility="Public" Enabled="true" Target="SC!Microsoft.SystemCenter.HealthService" ParentMonitorID="SystemHealth!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Windows!Microsoft.Windows.TimedScript.TwoStateMonitorType" ConfirmDelivery="false">
<Category>Custom</Category>
<AlertSettings AlertMessage="ExchangeRequiredHotfixesNotInstalled.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
</AlertSettings>
<OperationalStates>
<OperationalState ID="OperationalGoodState" MonitorTypeStateID="Success" HealthState="Success"/>
<OperationalState ID="OperationalProblemState" MonitorTypeStateID="Error" HealthState="Error"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>86400</IntervalSeconds>
<SyncTime/>
<ScriptName>HotFixValidation.vbs</ScriptName>
<Arguments/>
<ScriptBody><Script>


'====================================================================================================================
'This file checks if the required SCOM hotfixes for Exchange MP are installed on the RMS Server and the Agents.
'====================================================================================================================

Dim filesys, OpsMgrVersion, OpsMgrInstallDirectory, ScomHotFixStatus
Dim strHealthServiceDll, strDataAccessDll,healthServiceVersion, dataAccessVersion, hotfixVersion
Dim objMOMAPI, objBag, WshShell

'Set the desired hotfix version
Const SP1FileVersion = "6.0.6278.100"
Const R2FileVersion = "6.1.7221.2"
ScomHotFixStatus = "GOOD"

'=================
'Declare Constants
'=================
'OpsMgr Event-related Constants
Const EVENT_TYPE_ERROR = 1
Const EVENT_TYPE_WARNING = 2
Const EVENT_TYPE_INFORMATION = 4

'=================================
'Instantiate OpsMgr Scripting Runtime
'=================================
Set objMOMAPI = CreateObject("MOM.ScriptAPI")
Set objBag = objMOMAPI.CreateTypedPropertyBag(0)


Set filesys = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
OpsMgrVersion = WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Microsoft Operations Manager\3.0\Setup\CurrentVersion")
OpsMgrInstallDirectory = WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Microsoft Operations Manager\3.0\Setup\InstallDirectory")

strHealthServiceDll = OpsMgrInstallDirectory &amp; "\HealthService.dll"
strDataAccessDll = OpsMgrInstallDirectory &amp; "\Microsoft.EnterpriseManagement.DataWarehouse.DataAccess.dll"

If fileSys.FileExists(strHealthServiceDll) Then
healthServiceVersion = filesys.GetFileVersion(strHealthServiceDll)
Else
healthServiceVersion = -1
End If

If fileSys.FileExists(strDataAccessDll) Then
dataAccessVersion = filesys.GetFileVersion(strDataAccessDll)
Else
dataAccessVersion = -1
End If

'SP1 version of SCOM starts with 6.0 and R2 starts with 6.1
If (Left(OpsMgrVersion,3) = "6.0") Then
hotfixVersion = SP1FileVersion
kbLink = "http://go.microsoft.com/fwlink/?LinkID=167911"
ElseIf (Left(OpsMgrVersion,3) = "6.1") Then
hotfixVersion = R2FileVersion
kbLink = "http://go.microsoft.com/fwlink/?LinkID=167912"
End If

'If versioncompare function returns 2, the hotfix version is higher than the installed version
If healthServiceVersion &lt;&gt; "-1" Then
If 2 = VersionCompare(healthServiceVersion,hotfixVersion) Then
ScomHotFixStatus = "BAD"
End If
End If
if dataAccessVersion &lt;&gt; "-1" Then
If 2 = VersionCompare(dataAccessVersion,hotfixVersion) Then
ScomHotFixStatus = "BAD"
End If
End If
Call objBag.AddValue("State",ScomHotFixStatus)
Call objBag.AddValue("KB Link",kbLink)
Call objMOMAPI.Return(objBag)
wscript.quit()


'Version Compare Function
' This function returns 0 if the versions are the same,
' 1 if version1 is greater and
' 2 if version2 is greater.
Function VersionCompare(Version1, Version2)
Dim v1Count, v2Count, v1Element, v2Element
Dim v1Elements, v2Elements, smallerCount

VersionCompare = 0

v1Elements = Split(Version1, ".")
v2Elements = Split(Version2, ".")

' Determine number of version parts.
v1Count = UBound(v1Elements)
v2Count = UBound(v2Elements)

' Find which string has the fewest parts.
If (v2Count &lt; v1Count) Then
smallerCount = v2Count
Else
smallerCount = v1Count
End If

'Compare individual values of the version
For count = 0 To smallerCount
v1Element = CInt(v1Elements(count))
v2Element = CInt(v2Elements(count))
If v1Element &gt; v2Element Then
VersionCompare = 1
Exit Function
ElseIf v1Element &lt; v2Element Then
VersionCompare = 2
Exit Function
End If
Next

'Versions are same.
if(v1Count = v2Count) Then
Exit Function
Elseif (v1Count &gt; v2Count) Then
For count = v2Count To v1Count
If CInt(v1Elements(count)) &gt; 0 Then
VersionCompare = 1
Exit Function
End If
Next
Elseif (v2Count &gt; v1Count) Then
For count = v1Count To v2Count
If CInt(v2Elements(count)) &gt; 0 Then
VersionCompare = 2
Exit Function
End If
Next
End If
End Function

</Script></ScriptBody>
<TimeoutSeconds>60</TimeoutSeconds>
<ErrorExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='State']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">BAD</Value>
</ValueExpression>
</SimpleExpression>
</ErrorExpression>
<SuccessExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='State']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">GOOD</Value>
</ValueExpression>
</SimpleExpression>
</SuccessExpression>
</Configuration>
</UnitMonitor>