A recovery is attached to a monitor and can execute when the monitor changes to a specific health state. Alternatively a recovery can wait for a diagnostic to run before executing.
A recovery can be set to run on-demand (initiated by the user) or automatically. Recovery output is sent to the database and can be viewed in the Operations Console using the health explorer.
A recovery normally changes system state. If it does not change system state you should use a diagnostic instead. The recovery must use a write action. Optionally a condition detection module is allowed in the workflow and this executes before the write action.
The attributes on a recovery are:
|
Name
|
Type
|
Use
|
Description
|
|
ID
|
ManagementPack
UniqueIdentifier
|
Required
|
The identity of the element. This must be unique within all elements of the management pack.
|
|
Comment
|
ManagementPackString
|
Optional
|
Use for author comments.
|
|
Enabled
|
ManagementPack
MonitoringLevel
|
Required
|
Defines if the rule is enabled by default. Set to true or false. Other values allowed are OnEssentials, OnStandard, OnAdvanced. These will only be enabled in conjunction with category overrides. If it is not defined it defaults to true.
|
|
Target
|
ManagementPack
IdentifierReference
|
Required
|
The target class. This must be the same type the monitor is targeted at or it could be the management server or root management server type if you want it to run as a server side response.
|
|
Monitor
|
ManagementPack
IdentifierReference
|
Required
|
The monitor that this reovery will run for. This must be a valid monitor ID in the same MP or a public monitor in a referenced MP.
|
|
ResetMonitor
|
xsi:boolean
|
Required
|
Defines whether to reset the monitor when the recovery executes. Set to true or false. Note that the monitor must have on demand detection workflows defined or a no detection state. Otherwise reset will do nothing.
|
|
ExecuteOnState
|
HealthState
|
Optional
|
The health state that the recovery should execute for. This should be a non healthy state i.e. Error or Warning. If set ExecuteOnDiagnostic cannot be set
|
|
ExecuteOn
Diagnostic
|
ManagementPack
IdentifierReference
|
Optional
|
The diagnostic that this recovery will execute for. The recovery will only execute after the diagnostic has provided a data item. If set ExecuteOnState cannot be set
|
|
Remoteable
|
xsi:boolean
|
Optional
|
Defines whether this workflow will run for agentless monitoring. If it is not specified it is assumed to be true.
|
|
Timeout
|
xsi:int
|
Optional
|
The time in seconds that the recovery can run. The recovery will be terminated if it exceeds this limit.
|
A recovery either executes for a monitor state change directly or after a diagnostic has run. The ExecuteOnDiagnostic and ExecuteOnState attributes are therefore mutually exclusive.
Note that enabled set to true on a recovery means that it will run automatically when the monitor changes state. When it is set to false it must be initiated by the Ops Mgr user.
Category
The category of a recovery must be one of the standard category strings. However for a recovery it is recommended that you use the same category as the monitor that it runs for. This will normally be one of the following:
-
AvailabilityHealth
-
PerformanceHealth
-
ConfiguraitonHealth
-
SecurityHealth
The category field is not really used for anything in Operations Manager 2007. Category overrides can take advantage of this field but this concept is not exposed in the Ops Mgr UI.
Condition Detection
The condition detection module is optional. This would normally be a filter module to filter based on the data item that caused the state change of the monitor or the output of a diagnostic. If this filters out the data, the write action will not execute. You should note that even if the write action does not execute, the recovery will be reported as having successfully executed by the health service.
The attributes on the condition detection module are:
|
Name
|
Type
|
Use
|
Description
|
|
ID
|
ManagementPackLocal
IdentifierReference
|
Required
|
The identity of the sub-element. This must be unique within the containing element i.e. the recovery.
|
|
Comment
|
ManagementPackString
|
Optional
|
Use for author comments.
|
|
RunAs
|
ManagementPack
IdentifierReference
|
Optional
|
References a secure reference. You should use this attribute only if you want to associate this module with a Run As profile.
|
|
TypeID
|
ManagementPack
IdentifierReference
|
Optional
|
The ID of the condition detection module type that is to be used.
|
The condition detection module must contain the necessary configuration for the module type. This configuration will be validated during MP Verify:

Illustration from Altova XML Spy
Write Action
The write action element is required in the recovery. This element references a pre-defined write action module type.
The attributes on a write action are:
|
Name
|
Type
|
Use
|
Description
|
|
ID
|
ManagementPackLocal
IdentifierReference
|
Required
|
The identity of the sub-element. This must be unique within the containing element i.e. the recovery.
|
|
Comment
|
ManagementPackString
|
Optional
|
Use for author comments.
|
|
RunAs
|
ManagementPack
IdentifierReference
|
Optional
|
References a secure reference. You should use this attribute only if you want to associate this module with a Run As profile.
|
|
TypeID
|
ManagementPack
IdentifierReference
|
Optional
|
The ID of the write action module type that is to be used.
|
|
Target
|
ManagementPack
IdentifierReference
|
Optional
|
You can optional specify a different class to run the write action against. The main options for this are:
Microsoft.SystemCenter.ManagementServer
Microsoft.SystemCenter.RootManagementServer
This will have the effect of running a server side response.
|
The write action module must contain the necessary configuration for the module type. This configuration will be validated during MP Verify:

Illustration from Altova XML Spy