DFS-N: Folder Removal

Microsoft.Windows.FileServer.DFSN.6.2.RootTarget.RemoveLinkFailed (UnitMonitor)

This object monitors the removal of DFS folders (links).

Knowledge Base article:

Summary

This rule monitors the removal of DFS folders (links) by looking for the presence of DfsSvc event 14540, and generates an Error alert if the folder removal failed.

Causes

This can occur if DFS Namespaces fails to delete the overwritten folder when a program or script uses the NetDFSMove function with the DFS_MOVE_FLAG_REPLACE_IF_EXISTS flag to move or rename a folder and overwrite any existing folders with the same name.

Resolutions

To resolve this issue, manually delete the DFS folder using the DFS Management snap-in or the Dfsutil link remove command. Manually reset the health state of this monitor after resolving the problem.

Note: To manage a namespace, you must be a member of the Local Administrators group on each namespace server hosting the namespace or have been delegated permissions.

Additional

Element properties:

TargetMicrosoft.Windows.FileServer.DFSN.6.2.RootTarget
Parent MonitorSystem.Health.AvailabilityState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityError
Alert PriorityHigh
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.SingleEventLogManualReset2StateMonitorType
RemotableTrue
AccessibilityPublic
Alert Message
DFS Namespace link remove operation failed
{0}
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.FileServer.DFSN.6.2.RootTarget.RemoveLinkFailed" Accessibility="Public" Enabled="true" Target="Microsoft.Windows.FileServer.DFSN.6.2.RootTarget" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Windows!Microsoft.Windows.SingleEventLogManualReset2StateMonitorType" ConfirmDelivery="true">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.Windows.FileServer.DFSN.6.2.RootTarget.RemoveLinkFailed_AlertMessageResourceID">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>High</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/EventDescription$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="EventRaised" MonitorTypeStateID="EventRaised" HealthState="Error"/>
<OperationalState ID="ManualResetEventRaised" MonitorTypeStateID="ManualResetEventRaised" HealthState="Success"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>System</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">14540</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>ContainsSubstring</Operator>
<Pattern>DfsSvc</Pattern>
</RegExExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Params/Param[1]</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/Property[Type="DFSNLib!Microsoft.Windows.FileServer.DFSN.RootTarget"]/RootName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<Or>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">LoggingComputer</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetbiosComputerName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">LoggingComputer</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</Or>
</Expression>
</And>
</Expression>
</Configuration>
</UnitMonitor>