Best Practice: Linked reports should contain filters

 

What does this best practice check for?

One of the features added in Operations Manager R2 is the ability to add filters to linked reports so that they run against a specific type of element. This feature is one that is exposed to customers using R2, but if an MP with report filters is run against SP1, there is no impact – the MP still runs, and the filter just does not show up. As a best practice, all linked reports in MPs should contain filters.

Why is it important to follow this best practice? What is the impact of not following this best practice?

Typically, when a linked report is run, the end-user must specify what object they want to run the report against. The problem is that the options they are given to choose from include all objects in their management group. The report will only generate against certain ones, and it is up to the end-user to choose the correct ones to get the report they need. By using filters, this guess work is removed, and the end-user can only see a filtered set of objects against which the report will run. This greatly improves the customer experience of using linked reports.

How do I fix this in my MP?

Using Operations Console (Operations Manager 2007 R2) and XML:

1.        Build your report as intended in the Operations Console. Be sure to filter the report by type.

2.        Save the report that you have just created to the management pack that it is intended for. Note: this management pack must be imported into the console.

3.        Export the management pack in order to make the necessary changes.

4.        Open the management packXML in your favorite XML editor. Delete all parameters that you do not want to be hardcoded.

5.        Now to add the type filter:

< LinkedReports >

     < LinkedReport ID = " UICustomReport2e7615d44f9e4b0db1d71a2ce77be902" Accessibility =" Internal" Base =" SystemCenter1!Microsoft.SystemCenter.DataWarehouse.Report.Availability" Visible =" true" >

             < ParameterBlock columns = " 4" xmlns =" http://schemas.microsoft.com/mom/reporting/2007/ReportParameterSettings" >

                   < Controls xmlns = " http://schemas.microsoft.com/mom/reporting/2007/ReportParameterSettings" >

                         < 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 >

                                < Properties >

                                      < Property name = " TypeFilter" >

                                            < Value > Microsoft.SystemCenter.ManagementServerComputersGroup </ Value >

                                      </ Property >

                                </ Properties >

                         </ 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 > System.Health.PerformanceState </ Value >

         </ Parameter >

           </ Parameters >

     </ LinkedReport >