Linked availability reports

Availability report is one of the easiest reports to create links to. The report is based on the monitor state changes. There are not that many parameters to control besides list of monitoring objects, monitor states considered to be downtime and essentially the monitor.

One important thing to understand in linked report authoring is that objects should never be used as a hard-coded parameters to your reports. Monitoring objects are specific to a particular SCOM management group installation and could not be known at the time the management pack is created.

Monitor and downtime states on the other hand are things that are well known at the authoring time. Hard-coding them could be quite useful in cases where you either want to look at the particular monitor or when your organization has some specific rules around downtime definition.

Let's say we like to create an availability report based on ping status assuming that device is not available when the monitor is in down or warning states. Here is a definition of such report:

<LinkedReport ID="Demo.ComputerPingHealth"

    Accessibility="Public" Visible="true" Base="Reporting! Microsoft.SystemCenter.DataWarehouse.Report.Availability">

  <Parameters>

    <Parameter Name="MonitorName">

      <Value>Microsoft.SystemCenter.Ping</Value>

    </Parameter>

    <Parameter Name="DownTime">

      <Value>2</Value>

    </Parameter>

  </Parameters>

</LinkedReport>

Notice that we put only value 2 for DownTime parameter even though I said we will consider both monitor down (red) and warning (yellow) states as downtime. This is because "monitor down" state is always considered as downtime regardless of what we specified it in the DownTime parameter.

Here is the list of  all possible values for the DownTime parameter:

Warning 2
Planned Maintenance 6
Unplanned Maintenance 5
Monitor disabled 4
Unmonitored 3

The last thing to do is to create parameter definition for the new report. To simplify the process just copy context of the Microsoft.SystemCenter.DataWarehouse.Report.Availability.rpdl there. Here is the result:

<LinkedReport ID="Demo.ComputerPingHealth"

        Accessibility="Public" Visible="true" Base="Reporting!Microsoft.SystemCenter.DataWarehouse.Report.Availability">

   <ParameterBlock columns="4" xmlns="https://schemas.microsoft.com/mom/reporting/2007/ReportParameterSettings">
<Controls>
<Control type="Microsoft.SystemCenter.DataWarehouse.Report.ParameterControl.ComboBox">
<ReportParameters>
<ReportParameter name="DataAggregation">
<Prompt>
Microsoft.SystemCenter.DataWarehouse.Report.Library!Microsoft.SystemCenter.DataWarehouse.Report.ParameterPrompt.DataAggregation
</Prompt>
</ReportParameter>
</ReportParameters>
</Control>
<Control type="Microsoft.SystemCenter.DataWarehouse.Report.ParameterControl.MonitoringObjectXmlPicker" columnSpan="2" rowSpan="2">
<ReportParameters>
<ReportParameter name="ObjectList">
<Prompt>
Microsoft.SystemCenter.DataWarehouse.Report.Library!Microsoft.SystemCenter.DataWarehouse.Report.ParameterPrompt.ObjectList
</Prompt>
</ReportParameter>
<ReportParameter name="ManagementGroupId" binding="GroupList"/>
</ReportParameters>
</Control>
<Control type="Microsoft.SystemCenter.DataWarehouse.Report.ParameterControl.CheckedListBox" rowSpan="2">
<ReportParameters>
<ReportParameter name="DownTime">
       <Prompt>
Microsoft.SystemCenter.DataWarehouse.Report.Library!Microsoft.SystemCenter.DataWarehouse.Report.ParameterPrompt.AvailabilityDownTime
</Prompt>
</ReportParameter>
</ReportParameters>
</Control>
<Control type="Microsoft.SystemCenter.DataWarehouse.Report.ParameterControl.BusinessRelativeDateTimePicker">
<ReportParameters>
<ReportParameter name="TimeZone" binding="TimeZone">
<Prompt>
Microsoft.SystemCenter.DataWarehouse.Report.Library!Microsoft.SystemCenter.DataWarehouse.Report.ParameterPrompt.TimeZone
</Prompt>
</ReportParameter>
<ReportParameter name="TimeZoneName" binding="TimeZoneName" />
<ReportParameter name="StartDate_BaseType"
binding="StartDate_BaseType" />
<ReportParameter name="StartDate_BaseValue"
binding="StartDate_BaseValue">
<Prompt>
Microsoft.SystemCenter.DataWarehouse.Report.Library!Microsoft.SystemCenter.DataWarehouse.Report.ParameterPrompt.StartDateTime
</Prompt>
</ReportParameter>
<ReportParameter name="StartDate_OffsetType"
binding="StartDate_OffsetType" />
<ReportParameter name="StartDate_OffsetValue"
binding="StartDate_OffsetValue" />
<ReportParameter name="EndDate_BaseType"
binding="EndDate_BaseType" />
<ReportParameter name="EndDate_BaseValue"
binding="EndDate_BaseValue">
<Prompt>
Microsoft.SystemCenter.DataWarehouse.Report.Library!Microsoft.SystemCenter.DataWarehouse.Report.ParameterPrompt.EndDateTime
</Prompt>
</ReportParameter>
<ReportParameter name="EndDate_OffsetType"
binding="EndDate_OffsetType" />
<ReportParameter name="EndDate_OffsetValue"
binding="EndDate_OffsetValue" />
<ReportParameter name="TimeType" binding="TimeType" />
<ReportParameter name="TimeWeekMap"
binding="TimeWeekMap" />
</ReportParameters>
</Control>
</Controls>
</ParameterBlock>

  <Parameters>

    <Parameter Name="MonitorName">

      <Value>Microsoft.SystemCenter.Ping</Value>

    </Parameter>

    <Parameter Name="DownTime">

      <Value>2</Value>

    </Parameter>

  </Parameters>

</LinkedReport>