Monitor for TFS Event 4009 - Back Checksum Exception

TeamFoundationServer2010.MonitorTFSEvent4009 (UnitMonitor)

Monitor to detect event 4009 - Back Checksum Exception

Knowledge Base article:

Summary

TFS Event 4009 occurred. Raised by the servicing service when an added servicing resource’s hash doesn’t match the provided hash value.

Resolutions

Check for any installation or upgrade errors for more details.

Element properties:

TargetTeamFoundationServer2010.TFS2010AppComponentBase
Parent MonitorSystem.Health.AvailabilityState
CategorySecurityHealth
EnabledTrue
Alert GenerateFalse
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.SingleEventLogTimer2StateMonitorType
RemotableTrue
AccessibilityPublic
RunAsDefault

Source Code:

<UnitMonitor ID="TeamFoundationServer2010.MonitorTFSEvent4009" Accessibility="Public" Enabled="true" Target="TeamFoundationServer2010.TFS2010AppComponentBase" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Windows!Microsoft.Windows.SingleEventLogTimer2StateMonitorType" ConfirmDelivery="true">
<Category>SecurityHealth</Category>
<OperationalStates>
<OperationalState ID="EventRaised" MonitorTypeStateID="EventRaised" HealthState="Warning"/>
<OperationalState ID="TimerEventRaised" MonitorTypeStateID="TimerEventRaised" HealthState="Success"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">4009</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">TFS Services</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</Expression>
<TimerWaitInSeconds>600</TimerWaitInSeconds>
</Configuration>
</UnitMonitor>