Service Level Objective Detail Report

Microsoft.SystemCenter.DataWarehouse.Report.ServiceLevelObjectiveDetail (Report)

Element properties:

AccessibilityPublic
VisibleFalse

Report Localization:

R.AggregationLabelData Aggregation
R.AggregationValue_0Hourly
R.AggregationValue_1Daily
R.BusinessTimeFormat{2} from {0} to {1}
R.StartEndTimeFormatFrom {0} to {1}
R.DescriptionThis report shows all instances of a configured service level objectives(SLO) and whether each instance met their respective goal
R.DescriptionTitleDescription
R.GeneratedTimeLabelReport Time
R.PageFormatPage {0} of {1}
R.SloFormatLine2{0}
R.SloLabelService Level Objective
R.StartEndTimeLabelReport Duration
R.TimeZoneFormatAll dates and times are shown in {0}
R.TitleService Level Objective Detail

Source Code:

<Report ID="Microsoft.SystemCenter.DataWarehouse.Report.ServiceLevelObjectiveDetail" Accessibility="Public" Visible="false">
<Dependencies>
<DataWarehouseScript>Microsoft.SystemCenter.DataWarehouse.ServiceLevel.Report.Script</DataWarehouseScript>
</Dependencies>
<ParameterBlock xmlns="http://schemas.microsoft.com/mom/reporting/2007/ReportParameterSettings" columns="1">
<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.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>
<Definition>
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
<DataSources>
<DataSource Name="DataWarehouseMain">
<rd:DataSourceID>e4235c51-407f-4065-8519-a1e57374bc45</rd:DataSourceID>
<DataSourceReference>Data Warehouse Main</DataSourceReference>
</DataSource>
</DataSources>
<InteractiveHeight>11in</InteractiveHeight>
<ReportParameters>
<ReportParameter Name="StateDataSetType">
<DataType>String</DataType>
<DefaultValue>
<DataSetReference>
<DataSetName>StateDataSetType</DataSetName>
<ValueField>DatasetTypeId</ValueField>
</DataSetReference>
</DefaultValue>
<ValidValues>
<DataSetReference>
<DataSetName>StateDataSetType</DataSetName>
<ValueField>DatasetTypeId</ValueField>
<LabelField>DatasetTypeId</LabelField>
</DataSetReference>
</ValidValues>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="StateConnectionString">
<DataType>String</DataType>
<DefaultValue>
<DataSetReference>
<DataSetName>StateDateSetConnection</DataSetName>
<ValueField>ConnectionString</ValueField>
</DataSetReference>
</DefaultValue>
<ValidValues>
<DataSetReference>
<DataSetName>StateDateSetConnection</DataSetName>
<ValueField>ConnectionString</ValueField>
<LabelField>DatasetId</LabelField>
</DataSetReference>
</ValidValues>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="LT_Report">
<DataType>String</DataType>
<DefaultValue>
<DataSetReference>
<DataSetName>LT_Report_Query</DataSetName>
<ValueField>ValueXml</ValueField>
</DataSetReference>
</DefaultValue>
<ValidValues>
<DataSetReference>
<DataSetName>LT_Report_Query</DataSetName>
<ValueField>ValueXml</ValueField>
<LabelField>ValueName</LabelField>
</DataSetReference>
</ValidValues>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="ManagementGroupId">
<DataType>String</DataType>
<DefaultValue>
<DataSetReference>
<DataSetName>NeighborManagementGroups</DataSetName>
<ValueField>ManagementGroupGuid</ValueField>
</DataSetReference>
</DefaultValue>
<Prompt>[Management Group]</Prompt>
<ValidValues>
<DataSetReference>
<DataSetName>NeighborManagementGroups</DataSetName>
<ValueField>ManagementGroupGuid</ValueField>
<LabelField>ManagementGroupName</LabelField>
</DataSetReference>
</ValidValues>
<MultiValue>true</MultiValue>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="DataAggregation">
<DataType>Integer</DataType>
<DefaultValue>
<Values>
<Value>0</Value>
</Values>
</DefaultValue>
<Prompt>[Aggregation]</Prompt>
<ValidValues>
<ParameterValues>
<ParameterValue>
<Value>0</Value>
<Label>=Code.GetLocTable("LT_Report").GetString("R.AggregationValue_0", "[Hourly]")</Label>
</ParameterValue>
<ParameterValue>
<Value>1</Value>
<Label>=Code.GetLocTable("LT_Report").GetString("R.AggregationValue_1", "[Daily]")</Label>
</ParameterValue>
</ParameterValues>
</ValidValues>
</ReportParameter>
<ReportParameter Name="StartDate_BaseType">
<DataType>String</DataType>
<AllowBlank>true</AllowBlank>
<Prompt>[Start Date Base]</Prompt>
</ReportParameter>
<ReportParameter Name="StartDate_BaseValue">
<DataType>DateTime</DataType>
<AllowBlank>true</AllowBlank>
<Prompt>[From]</Prompt>
</ReportParameter>
<ReportParameter Name="StartDate_OffsetType">
<DataType>String</DataType>
<AllowBlank>true</AllowBlank>
<Prompt>[Start Date Offset Type]</Prompt>
</ReportParameter>
<ReportParameter Name="StartDate_OffsetValue">
<DataType>Integer</DataType>
<AllowBlank>true</AllowBlank>
<Prompt>[Start Date Offset]</Prompt>
</ReportParameter>
<ReportParameter Name="EndDate_BaseType">
<DataType>String</DataType>
<AllowBlank>true</AllowBlank>
<Prompt>[End Date Base]</Prompt>
</ReportParameter>
<ReportParameter Name="EndDate_BaseValue">
<DataType>DateTime</DataType>
<AllowBlank>true</AllowBlank>
<Prompt>[To]</Prompt>
</ReportParameter>
<ReportParameter Name="EndDate_OffsetType">
<DataType>String</DataType>
<AllowBlank>true</AllowBlank>
<Prompt>[End Date Offset Type]</Prompt>
</ReportParameter>
<ReportParameter Name="EndDate_OffsetValue">
<DataType>Integer</DataType>
<AllowBlank>true</AllowBlank>
<Prompt>[End Date Offset]</Prompt>
</ReportParameter>
<ReportParameter Name="TimeType">
<DataType>String</DataType>
<AllowBlank>true</AllowBlank>
<Prompt>[Time Type]</Prompt>
</ReportParameter>
<ReportParameter Name="TimeWeekMap">
<DataType>String</DataType>
<Prompt>[Week Days]</Prompt>
<MultiValue>true</MultiValue>
</ReportParameter>
<ReportParameter Name="TimeZone">
<DataType>String</DataType>
<Prompt>[Time Zone]</Prompt>
</ReportParameter>
<ReportParameter Name="TimeZoneName">
<DataType>String</DataType>
<Nullable>true</Nullable>
<AllowBlank>true</AllowBlank>
<Prompt>[Time Zone Name]</Prompt>
</ReportParameter>
<ReportParameter Name="Interactive">
<DataType>Boolean</DataType>
<Nullable>true</Nullable>
<DefaultValue>
<Values>
<Value>=False</Value>
</Values>
</DefaultValue>
<Prompt>Interactive</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="DisplaySLO">
<DataType>String</DataType>
<AllowBlank>true</AllowBlank>
<Prompt>[SLO]</Prompt>
</ReportParameter>
<ReportParameter Name="SLAManagedEntityRowId">
<DataType>String</DataType>
<AllowBlank>true</AllowBlank>
<Prompt>[SLAManagedEntityRowId]</Prompt>
</ReportParameter>
</ReportParameters>
<rd:DrawGrid>true</rd:DrawGrid>
<InteractiveWidth>8.5in</InteractiveWidth>
<rd:GridSpacing>0.05in</rd:GridSpacing>
<rd:SnapToGrid>true</rd:SnapToGrid>
<rd:ReportID>ab518a51-343d-46c4-b1f8-4ec65faafd95</rd:ReportID>
<CodeModules>
<CodeModule>Microsoft.EnterpriseManagement.Reporting.Code, Version=6.0.0.0, Culture=neutral</CodeModule>
</CodeModules>
<DataSets>
<DataSet Name="StateDateSetConnection">
<Fields>
<Field Name="DatasetId">
<DataField>DatasetId</DataField>
</Field>
<Field Name="ServerName">
<DataField>ServerName</DataField>
</Field>
<Field Name="DatabaseName">
<DataField>DatabaseName</DataField>
</Field>
<Field Name="ConnectionString">
<Value>="Data Source=" + Fields!ServerName.Value + ";Initial Catalog=" + Fields!DatabaseName.Value + ";Integrated Security=SSPI"</Value>
</Field>
</Fields>
<Query>
<DataSourceName>DataWarehouseMain</DataSourceName>
<CommandType>StoredProcedure</CommandType>
<CommandText>DataRouteGet</CommandText>
<QueryParameters>
<QueryParameter Name="@ManagementGroupGuid">
<Value>=Code.GetCallingManagementGroupId()</Value>
</QueryParameter>
<QueryParameter Name="@DatasetTypeId">
<Value>=Parameters!StateDataSetType.Value</Value>
</QueryParameter>
</QueryParameters>
</Query>
</DataSet>
<DataSet Name="LT_Report_Query">
<Fields>
<Field Name="ValueXml">
<DataField>XML_F52E2B61-18A1-11d1-B105-00805F49916B</DataField>
</Field>
<Field Name="ValueName">
<Value>="LT"</Value>
</Field>
</Fields>
<Query>
<DataSourceName>DataWarehouseMain</DataSourceName>
<CommandType>StoredProcedure</CommandType>
<CommandText>ReportDisplayStringGet</CommandText>
<QueryParameters>
<QueryParameter Name="@ManagementGroupGuid">
<Value>=Code.GetCallingManagementGroupId()</Value>
</QueryParameter>
<QueryParameter Name="@ManagementPackSystemName">
<Value>Microsoft.SystemCenter.DataWarehouse.ServiceLevel.Report.Library</Value>
</QueryParameter>
<QueryParameter Name="@ReportSystemName">
<Value>Microsoft.SystemCenter.DataWarehouse.Report.ServiceLevelObjectiveDetail</Value>
</QueryParameter>
<QueryParameter Name="@LanguageCode">
<Value>=Code.GetReportLocLanguageCode()</Value>
</QueryParameter>
<QueryParameter Name="@Scope">
<Value>R.%</Value>
</QueryParameter>
</QueryParameters>
</Query>
</DataSet>
<DataSet Name="NeighborManagementGroups">
<Fields>
<Field Name="ManagementGroupGuid">
<DataField>ManagementGroupGuid</DataField>
<rd:TypeName>System.Guid</rd:TypeName>
</Field>
<Field Name="ManagementGroupName">
<DataField>ManagementGroupName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>DataWarehouseMain</DataSourceName>
<CommandType>StoredProcedure</CommandType>
<CommandText>DataRouteGetNeighbors</CommandText>
<QueryParameters>
<QueryParameter Name="@ManagementGroupGuid">
<Value>=Code.GetCallingManagementGroupId()</Value>
</QueryParameter>
<QueryParameter Name="@DatasetTypeId">
<Value>=Parameters!StateDataSetType.Value</Value>
</QueryParameter>
</QueryParameters>
</Query>
</DataSet>
<DataSet Name="StateDataSetType">
<Fields>
<Field Name="DatasetTypeId">
<DataField>DatasetTypeId</DataField>
<rd:TypeName>System.Guid</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>DataWarehouseMain</DataSourceName>
<CommandType>StoredProcedure</CommandType>
<CommandText>DatasetTypeIdGet</CommandText>
<QueryParameters>
<QueryParameter Name="@ManagementPackSystemName">
<Value>Microsoft.SystemCenter.DataWarehouse.Library</Value>
</QueryParameter>
<QueryParameter Name="@DatasetTypeSystemName">
<Value>Microsoft.SystemCenter.DataWarehouse.Dataset.State</Value>
</QueryParameter>
</QueryParameters>
</Query>
</DataSet>
<DataSet Name="SLOMonitorData">
<Fields>
<Field Name="TargetManagedEntityTypeDisplayName">
<DataField>TargetManagedEntityTypeDisplayName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="MonitorServiceLevelObjectiveInd">
<DataField>MonitorServiceLevelObjectiveInd</DataField>
<rd:TypeName>System.Boolean</rd:TypeName>
</Field>
<Field Name="ServiceLevelAgreementDisplayName">
<DataField>ServiceLevelAgreementDisplayName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="PerformanceServiceLevelObjectiveInd">
<DataField>PerformanceServiceLevelObjectiveInd</DataField>
<rd:TypeName>System.Boolean</rd:TypeName>
</Field>
<Field Name="MonitorGuid">
<DataField>MonitorGuid</DataField>
<rd:TypeName>System.Guid</rd:TypeName>
</Field>
<Field Name="MonitorSystemName">
<DataField>MonitorSystemName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="MonitorDisplayName">
<DataField>MonitorDisplayName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ServiceLevelObjectiveDisplayName">
<DataField>ServiceLevelObjectiveDisplayName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="RuleGuid">
<DataField>RuleGuid</DataField>
<rd:TypeName>System.Guid</rd:TypeName>
</Field>
<Field Name="RuleSystemName">
<DataField>RuleSystemName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="RuleDisplayName">
<DataField>RuleDisplayName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="Goal">
<DataField>Goal</DataField>
<rd:TypeName>System.Double</rd:TypeName>
</Field>
<Field Name="DesiredObjective">
<DataField>DesiredObjective</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="AggregationMethod">
<DataField>AggregationMethod</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ServiceLevelObjectiveRowId">
<DataField>ServiceLevelObjectiveRowId</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>DataWarehouseMain</DataSourceName>
<CommandText>SELECT ISNULL(met_ds.Name, met.ManagedEntityTypeDefaultName) AS TargetManagedEntityTypeDisplayName, slompv.MonitorServiceLevelObjectiveInd,
ISNULL(sla_ds.Name, sla.ServiceLevelAgreementDefaultName) AS ServiceLevelAgreementDisplayName, slompv.PerformanceServiceLevelObjectiveInd,
m.MonitorGuid, m.MonitorSystemName, ISNULL(m_ds.Name, m.MonitorDefaultName) AS MonitorDisplayName, ISNULL(slo_ds.Name,
slo.ServiceLevelObjectiveDefaultName) AS ServiceLevelObjectiveDisplayName, r.RuleGuid, r.RuleSystemName, ISNULL(r_ds.Name, r.RuleDefaultName)
AS RuleDisplayName,
CASE WHEN slompv.MonitorServiceLevelObjectiveInd = 1 THEN mslompv.Goal WHEN slompv.PerformanceServiceLevelObjectiveInd = 1 THEN pslompv.Threshold
END AS Goal,
CASE WHEN slompv.MonitorServiceLevelObjectiveInd = 1 THEN 'over' WHEN slompv.PerformanceServiceLevelObjectiveInd = 1 THEN pslompv.DesiredObjective
END AS DesiredObjective,
CASE WHEN slompv.MonitorServiceLevelObjectiveInd = 1 THEN 'avg' WHEN slompv.PerformanceServiceLevelObjectiveInd = 1 THEN pslompv.AggregationMethod
END AS AggregationMethod, slo.ServiceLevelObjectiveRowId
FROM vServiceLevelObjective AS slo INNER JOIN
vServiceLevelObjectiveManagementPackVersion AS slompv ON slompv.ServiceLevelObjectiveRowId = slo.ServiceLevelObjectiveRowId INNER JOIN
vManagedEntityType AS met ON slompv.TargetManagedEntityTypeRowId = met.ManagedEntityTypeRowId INNER JOIN
vServiceLevelAgreement AS sla ON sla.ServiceLevelAgreementRowId = slompv.ServiceLevelAgreementRowId LEFT OUTER JOIN
vMonitorServiceLevelObjectiveManagementPackVersion AS mslompv ON
mslompv.ServiceLevelObjectiveManagementPackVersionRowId = slompv.ServiceLevelObjectiveManagementPackVersionRowId LEFT OUTER JOIN
vPerformanceServiceLevelObjectiveManagementPackVersion AS pslompv ON
pslompv.ServiceLevelObjectiveManagementPackVersionRowId = slompv.ServiceLevelObjectiveManagementPackVersionRowId LEFT OUTER JOIN
vMonitor AS m ON mslompv.MonitorRowId = m.MonitorRowId LEFT OUTER JOIN
vRule AS r ON pslompv.RuleRowId = r.RuleRowId LEFT OUTER JOIN
vDisplayString AS m_ds ON m.MonitorGuid = m_ds.ElementGuid AND m_ds.LanguageCode = @LanguageCode LEFT OUTER JOIN
vDisplayString AS r_ds ON r.RuleGuid = r_ds.ElementGuid AND r_ds.LanguageCode = @LanguageCode LEFT OUTER JOIN
vDisplayString AS sla_ds ON sla.ServiceLevelAgreementGuid = sla_ds.ElementGuid AND sla_ds.LanguageCode = @LanguageCode LEFT OUTER JOIN
vDisplayString AS met_ds ON met.ManagedEntityTypeGuid = met_ds.ElementGuid AND met_ds.LanguageCode = @LanguageCode LEFT OUTER JOIN
vDisplayString AS slo_ds ON slo.ServiceLevelObjectiveGuid = slo_ds.ElementGuid AND slo_ds.LanguageCode = @LanguageCode
WHERE (slo.ServiceLevelObjectiveGuid = @ServiceLevelObjectiveGuid) AND (NOT EXISTS
(SELECT slompv_newer.ServiceLevelObjectiveManagementPackVersionRowId, slompv_newer.ServiceLevelObjectiveRowId,
slompv_newer.ManagementPackVersionRowId, slompv_newer.ServiceLevelAgreementRowId, slompv_newer.TargetManagedEntityTypeRowId,
slompv_newer.MonitorServiceLevelObjectiveInd, slompv_newer.PerformanceServiceLevelObjectiveInd,
mgmpv.ManagementGroupManagementPackVersionRowId, mgmpv.ManagementGroupRowId,
mgmpv.ManagementPackVersionRowId AS Expr1, mgmpv.InstalledDateTime, mgmpv.DeletedDateTime, mgmpv.UpgradedInd,
mgmpv.LatestVersionInd, mgmpv.DWCreatedDateTime, mgmpv.DWLastModifiedDateTime
FROM vServiceLevelObjectiveManagementPackVersion AS slompv_newer INNER JOIN
vManagementGroupManagementPackVersion AS mgmpv ON
slompv_newer.ManagementPackVersionRowId = mgmpv.ManagementPackVersionRowId
WHERE (slompv_newer.ServiceLevelObjectiveRowId = slo.ServiceLevelObjectiveRowId) AND (mgmpv.ManagementGroupRowId =
(SELECT ManagementGroupRowId
FROM vManagedEntity
WHERE (ManagedEntityRowId = @ServiceLevelAgreementManagedEntityRowId))) AND
(slompv_newer.ServiceLevelObjectiveManagementPackVersionRowId &gt; slompv.ServiceLevelObjectiveManagementPackVersionRowId)))
</CommandText>
<QueryParameters>
<QueryParameter Name="@LanguageCode">
<Value>=Code.GetReportLocLanguageCode()</Value>
</QueryParameter>
<QueryParameter Name="@ServiceLevelObjectiveGuid">
<Value>=Parameters!DisplaySLO.Value</Value>
</QueryParameter>
<QueryParameter Name="@ServiceLevelAgreementManagedEntityRowId">
<Value>=Parameters!SLAManagedEntityRowId.Value</Value>
</QueryParameter>
</QueryParameters>
</Query>
</DataSet>
</DataSets>
<Code><Script>
Const LocTableStringQuery As String = "R/S[@N='{0}']/text()"

Const TimeZoneParameterName As String = "TimeZone"
Const SD_BaseTypeParameterName As String = "StartDate_BaseType"
Const SD_BaseValueParameterName As String = "StartDate_BaseValue"
Const SD_OffsetTypeParameterName As String = "StartDate_OffsetType"
Const SD_OffsetValueParameterName As String = "StartDate_OffsetValue"
Const ED_BaseTypeParameterName As String = "EndDate_BaseType"
Const ED_BaseValueParameterName As String = "EndDate_BaseValue"
Const ED_OffsetTypeParameterName As String = "EndDate_OffsetType"
Const ED_OffsetValueParameterName As String = "EndDate_OffsetValue"
Const IsRelativeTimeSupported As Boolean = True
Const TimeTypeParameterName As String = "TimeType"
Const TimeWeekMapParameterName As String = "TimeWeekMap"
Const DataAggregationParameterName As String = "DataAggregation"

Dim LocTables As System.Collections.Generic.Dictionary(Of String, Microsoft.EnterpriseManagement.Reporting.XmlStringTable)
Dim ReportTimeZone As Microsoft.EnterpriseManagement.Reporting.TimeZoneCoreInformation
Dim ReportStartDate As DateTime
Dim ReportEndDate As DateTime
Dim ReportTime As Microsoft.EnterpriseManagement.Reporting.ParameterProcessor.RelativeTime
Dim ReportCulture As System.Globalization.CultureInfo
Dim ParameterProcessor As Microsoft.EnterpriseManagement.Reporting.ParameterProcessor
Dim InitLock As New Object

Protected Overrides Sub OnInit()
LocTables = new System.Collections.Generic.Dictionary(Of String, Microsoft.EnterpriseManagement.Reporting.XmlStringTable)()
ReportTimeZone = Nothing
ReportStartDate = DateTime.MinValue
ReportEndDate = DateTime.MinValue
ReportTime = Nothing
ReportCulture = System.Globalization.CultureInfo.GetCultureInfo(Report.User("Language"))
ParameterProcessor = New Microsoft.EnterpriseManagement.Reporting.ParameterProcessor(ReportCulture)
End Sub

Public Function GetCallingManagementGroupId() As String
Return Microsoft.EnterpriseManagement.Reporting.ReportingConfiguration.ManagementGroupId
End Function

Public Function GetReportLocLanguageCode() As String
Return ReportCulture.ThreeLetterWindowsLanguageName
End Function

Public Function GetLocTable(Name As String) As Microsoft.EnterpriseManagement.Reporting.XmlStringTable
Dim LocTable As Microsoft.EnterpriseManagement.Reporting.XmlStringTable

If Not LocTables.TryGetValue(Name, LocTable) Then
LocTable = New Microsoft.EnterpriseManagement.Reporting.XmlStringTable(LocTableStringQuery, Report.Parameters(Name).Value)
LocTables.Add(Name, LocTable)
End If

Return LocTable
End Function

Public Function GetReportTimeZone() As Microsoft.EnterpriseManagement.Reporting.TimeZoneCoreInformation
SyncLock InitLock
If IsNothing(ReportTimeZone) Then ReportTimeZone = Microsoft.EnterpriseManagement.Reporting.TimeZoneCoreInformation.FromValueString(Report.Parameters(TimeZoneParameterName).Value)
Return ReportTimeZone
End SyncLock
End Function

Public Function ToDbDate(ByVal DateValue As DateTime) As DateTime
return GetReportTimeZone.ToUniversalTime(DateValue)
End Function

Public Function ToReportDate(ByVal DateValue As DateTime) As DateTime
return GetReportTimeZone.ToLocalTime(DateValue)
End Function

Public Function GetReportStartDate() As DateTime
SyncLock InitLock
If (ReportStartDate = DateTime.MinValue) Then
If (IsRelativeTimeSupported) Then
ReportStartDate = ParameterProcessor.GetDateTime(ToReportDate(DateTime.UtcNow), Report.Parameters(SD_BaseTypeParameterName).Value, Report.Parameters(SD_BaseValueParameterName).Value, Report.Parameters(SD_OffsetTypeParameterName).Value, Report.Parameters(SD_OffsetValueParameterName).Value, Report.Parameters(TimeTypeParameterName).Value)
Else
ReportStartDate = ParameterProcessor.GetDateTime(ToReportDate(DateTime.UtcNow), Report.Parameters(SD_BaseTypeParameterName).Value, Report.Parameters(SD_BaseValueParameterName).Value, Report.Parameters(SD_OffsetTypeParameterName).Value, Report.Parameters(SD_OffsetValueParameterName).Value)
End if

If (CInt(Report.Parameters(DataAggregationParameterName).Value) &gt; 0) Then
ReportStartDate = ReportStartDate.Date
End If
End If
return ReportStartDate
End SyncLock
End Function

Public Function GetReportEndDate() As DateTime
SyncLock InitLock
If (ReportEndDate = DateTime.MinValue) Then
If (IsRelativeTimeSupported) Then
ReportEndDate = ParameterProcessor.GetDateTime(ToReportDate(DateTime.UtcNow), Report.Parameters(ED_BaseTypeParameterName).Value, Report.Parameters(ED_BaseValueParameterName).Value, Report.Parameters(ED_OffsetTypeParameterName).Value, Report.Parameters(ED_OffsetValueParameterName).Value, Report.Parameters(TimeTypeParameterName).Value)
If IsBusinessHours(GetReportTimeFilter()) Then ReportEndDate = ReportCulture.Calendar.AddDays(ReportEndDate, 1)
Else
ReportEndDate = ParameterProcessor.GetDateTime(ToReportDate(DateTime.UtcNow), Report.Parameters(ED_BaseTypeParameterName).Value, Report.Parameters(ED_BaseValueParameterName).Value, Report.Parameters(ED_OffsetTypeParameterName).Value, Report.Parameters(ED_OffsetValueParameterName).Value)
End if

If (CInt(Report.Parameters(DataAggregationParameterName).Value) &gt; 0) Then
ReportEndDate = ReportEndDate.Date
End If
End If
return ReportEndDate
End SyncLock
End Function

Public Function GetReportTimeFilter() As Microsoft.EnterpriseManagement.Reporting.ParameterProcessor.RelativeTime
SyncLock InitLock
If IsNothing(ReportTime) Then
If (CInt(Report.Parameters(DataAggregationParameterName).Value) = 0)
ReportTime = New Microsoft.EnterpriseManagement.Reporting.ParameterProcessor.RelativeTime(Report.Parameters(TimeTypeParameterName).Value, Report.Parameters(SD_BaseValueParameterName).Value, Report.Parameters(ED_BaseValueParameterName).Value, CStr(Join(Report.Parameters(TimeWeekMapParameterName).Value, ",")))
Else
ReportTime = New Microsoft.EnterpriseManagement.Reporting.ParameterProcessor.RelativeTime(Microsoft.EnterpriseManagement.Reporting.ParameterProcessor.RelativeTimeType.Regular, Report.Parameters(SD_BaseValueParameterName).Value, Report.Parameters(ED_BaseValueParameterName).Value, CStr(Join(Report.Parameters(TimeWeekMapParameterName).Value, ",")))
End if
End If
return ReportTime
End SyncLock
End Function

Public Function IsBusinessHours(Value As Microsoft.EnterpriseManagement.Reporting.ParameterProcessor.RelativeTime) As Boolean
return (Not IsNothing(Value)) And (Value.TimeType = Microsoft.EnterpriseManagement.Reporting.ParameterProcessor.RelativeTimeType.Business)
End Function

Public Function FormatDateTime(Format As String, Value As DateTime) As String
return Value.ToString(Format, ReportCulture)
End Function

Public Function FormatNumber(Format As String, Value As Decimal) As String
return Value.ToString(Format, ReportCulture)
End Function

Public Function FormatString(Format As String, ParamArray Values() as Object) As String
return String.Format(ReportCulture, Format, Values)
End Function

Public Function NullFormatString(Format As String, Value as String) As String
return IIF(String.IsNullOrEmpty(Value), String.Empty, String.Format(ReportCulture, Format, Value))
End Function

Public Function FormatBusinessHours(Format As String, Value As Microsoft.EnterpriseManagement.Reporting.ParameterProcessor.RelativeTime) As String
Dim result As String

If IsBusinessHours(Value) Then

Dim firstDay As DayOfWeek
Dim days As System.Collections.Generic.List(Of String)

firstDay = ReportCulture.DateTimeFormat.FirstDayOfWeek
days = new System.Collections.Generic.List(Of String)()

For loopDay As DayOfWeek = DayOfWeek.Sunday To DayOfWeek.Saturday
Dim day As DayOfWeek
day = CType((CInt(loopDay) + CInt(firstDay)) Mod 7, DayOfWeek)

If value.WeekMap.Contains(day) Then days.Add(ReportCulture.DateTimeFormat.GetAbbreviatedDayName(day))
Next loopDay

result = FormatString(Format, DateTime.Today.Add(Value.StartTime).ToString(ReportCulture.DateTimeFormat.ShortTimePattern), DateTime.Today.Add(Value.EndTime).ToString(ReportCulture.DateTimeFormat.ShortTimePattern), String.Join(",", days.ToArray()))

Else
result = String.Empty
End if

return result
End Function

REM ---------------------------------

Public Enum DataAggregationType
Hourly = 0
Daily = 1
End Enum

REM ---------------------------------

Const DownTimeParameterName As String = "DownTime"
Dim DownTimeTable As System.Collections.Generic.List(Of Integer)

Public Enum StateIntervalType
Red = 0
Green = 1
Yellow = 2
White = 3
Gray = 4
Black = 5
Blue = 6
ServiceGray = 7
End Enum

Public Function IsDownTime(time As StateIntervalType)
Select Case time
Case StateIntervalType.Red
Return True

Case StateIntervalType.Green
Return False

Case Else
If IsNothing(DownTimeTable) Then
DownTimeTable = New System.Collections.Generic.List(Of Integer)()
Dim val As String
For Each val in Report.Parameters(DownTimeParameterName).Value
DownTimeTable.Add(CInt(val))
Next
End If

Return DownTimeTable.Contains(CInt(time))
End Select
End Function


REM ---------------------------------

Public Function FormatTimeInterval(ByVal TimeInSeconds As Integer) As String
Dim Hours, Minutes, Seconds As Integer

Hours = Math.Floor(TimeInSeconds / 3600)
Minutes = Math.Floor((TimeInSeconds Mod 3600) / 60)
Seconds = TimeInSeconds Mod 60

Return FormatString("{0}:{1}:{2}", Hours.ToString(), Minutes.ToString("00"), Seconds.ToString("00"))
End Function

REM ---------------------------------

Public Enum AggregationType
Hourly = 0
Daily = 1
Monthly = 2
End Enum

Public Function GetAggregationType(ByVal StartDate As DateTime, ByVal EndDate As DateTime) As AggregationType
Dim Result As AggregationType
Dim TimeDiff As TimeSpan

TimeDiff = EndDate - StartDate

If (TimeDiff.TotalDays &gt; 32) Then
Result = AggregationType.Monthly
ElseIf (TimeDiff.TotalDays &gt; 1) Then
Result = AggregationType.Daily
Else
If (CInt(Report.Parameters(DataAggregationParameterName).Value) = 0) Then
Result = AggregationType.Hourly
Else
Result = AggregationType.Daily
End If
End If
Return Result
End Function
</Script></Code>
<Width>8.45in</Width>
<Body><Script>
<ReportItems>
<CustomReportItem Name="ForceYukonEngine">
<Type>ForceYukonEngine</Type>
<Top>0 mm</Top>
<Left>0 mm</Left>
<Height>0.01 mm</Height>
<Width>0.01 mm</Width>
<Visibility>
<Hidden>true</Hidden>
</Visibility>
<CustomData>
<DataSetName>SLOMonitorData</DataSetName>
<DataColumnGroupings>
<DataGroupings>
<DataGrouping>
<Static>true</Static>
</DataGrouping>
</DataGroupings>
</DataColumnGroupings>
<DataRowGroupings>
<DataGroupings>
<DataGrouping>
<Static>true</Static>
</DataGrouping>
</DataGroupings>
</DataRowGroupings>
<DataRows>
<DataRow>
<DataCell>
<DataValue>
<Value>1</Value>
</DataValue>
</DataCell>
</DataRow>
</DataRows>
</CustomData>
</CustomReportItem>
<Subreport Name="ServiceLevelObjectiveDetailBody">
<Parameters>
<Parameter Name="DataAggregation">
<Value>=Parameters!DataAggregation.Value</Value>
</Parameter>
<Parameter Name="StartDate_BaseType">
<Value>=Parameters!StartDate_BaseType.Value</Value>
</Parameter>
<Parameter Name="StartDate_BaseValue">
<Value>=Parameters!StartDate_BaseValue.Value</Value>
</Parameter>
<Parameter Name="StartDate_OffsetType">
<Value>=Parameters!StartDate_OffsetType.Value</Value>
</Parameter>
<Parameter Name="StartDate_OffsetValue">
<Value>=Parameters!StartDate_OffsetValue.Value</Value>
</Parameter>
<Parameter Name="EndDate_BaseType">
<Value>=Parameters!EndDate_BaseType.Value</Value>
</Parameter>
<Parameter Name="EndDate_BaseValue">
<Value>=Parameters!EndDate_BaseValue.Value</Value>
</Parameter>
<Parameter Name="EndDate_OffsetType">
<Value>=Parameters!EndDate_OffsetType.Value</Value>
</Parameter>
<Parameter Name="EndDate_OffsetValue">
<Value>=Parameters!EndDate_OffsetValue.Value</Value>
</Parameter>
<Parameter Name="TimeType">
<Value>=Parameters!TimeType.Value</Value>
</Parameter>
<Parameter Name="TimeWeekMap">
<Value>=Parameters!TimeWeekMap.Value</Value>
</Parameter>
<Parameter Name="TimeZone">
<Value>=Parameters!TimeZone.Value</Value>
</Parameter>
<Parameter Name="TimeZoneName">
<Value>=Parameters!TimeZoneName.Value</Value>
</Parameter>
<Parameter Name="Interactive">
<Value>=Parameters!Interactive.Value</Value>
</Parameter>
<Parameter Name="DisplaySLO">
<Value>=Parameters!DisplaySLO.Value</Value>
</Parameter>
<Parameter Name="SLAManagedEntityRowId">
<Value>=Parameters!SLAManagedEntityRowId.Value</Value>
</Parameter>
</Parameters>
<Top>2.65in</Top>
<ReportName>Microsoft.SystemCenter.DataWarehouse.Report.ServiceLevelObjectiveDetail.Detail</ReportName>
<Width>8.05in</Width>
<ZIndex>5</ZIndex>
<Left>0.15in</Left>
<Height>1.125in</Height>
</Subreport>
<Rectangle Name="rectangle5">
<Left>0.15in</Left>
<ZIndex>4</ZIndex>
<Top>1.4in</Top>
<Width>8.05in</Width>
<Style></Style>
<BackgroundColor>Gainsboro</BackgroundColor>
<BorderColor>
<Default>DarkGray</Default>
</BorderColor>
<BorderStyle>
<Bottom>Solid</Bottom>
</BorderStyle>
</Style>
<Height>0.05in</Height>
</Rectangle>
<Rectangle Name="rectangle4">
<Left>0.15in</Left>
<ZIndex>3</ZIndex>
<ReportItems>
<Textbox Name="reportDescriptionTitle">
<DataElementOutput>NoOutput</DataElementOutput>
<Top>0.25in</Top>
<Width>8in</Width>
<Style></Style>
<Color>DimGray</Color>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<VerticalAlign>Middle</VerticalAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>1</ZIndex>
<CanGrow>true</CanGrow>
<Height>0.2in</Height>
<Value>=Code.GetLocTable("LT_Report").GetString("R.DescriptionTitle", "[Report Description Title]")</Value>
</Textbox>
<Textbox Name="reportTitle">
<DataElementOutput>Output</DataElementOutput>
<Width>7.8in</Width>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>11pt</FontSize>
<FontWeight>700</FontWeight>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<DataElementStyle>ElementNormal</DataElementStyle>
<CanGrow>true</CanGrow>
<Left>0.2in</Left>
<DataElementName>Title</DataElementName>
<Height>0.25in</Height>
<Value>=Code.GetLocTable("LT_Report").GetString("R.Title", "[Report Title]")</Value>
</Textbox>
</ReportItems>
<Top>0.7in</Top>
<Width>8.05in</Width>
<Style></Style>
<BackgroundColor>Gainsboro</BackgroundColor>
</Style>
<Height>0.5in</Height>
</Rectangle>
<Rectangle Name="rectangle3">
<Left>0.15in</Left>
<ZIndex>2</ZIndex>
<Visibility>
<Hidden>true</Hidden>
<ToggleItem>reportDescriptionTitle</ToggleItem>
</Visibility>
<ReportItems>
<Textbox Name="reportDescription">
<DataElementOutput>Output</DataElementOutput>
<Width>7.8in</Width>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<DataElementStyle>ElementNormal</DataElementStyle>
<CanGrow>true</CanGrow>
<Left>0.2in</Left>
<DataElementName>Description</DataElementName>
<Value>=Code.GetLocTable("LT_Report").GetString("R.Description", "[Report Description]")</Value>
</Textbox>
</ReportItems>
<Top>1.2in</Top>
<Width>8.05in</Width>
<Style></Style>
<BackgroundColor>Gainsboro</BackgroundColor>
</Style>
<Height>0.2in</Height>
</Rectangle>
<Rectangle Name="rectangle2">
<Left>0.15in</Left>
<ZIndex>1</ZIndex>
<ReportItems>
<List Name="list1">
<ZIndex>17</ZIndex>
<DataElementOutput>NoOutput</DataElementOutput>
<Left>1.97916in</Left>
<DataSetName>SLOMonitorData</DataSetName>
<ReportItems>
<Textbox Name="textbox3">
<rd:DefaultName>textbox3</rd:DefaultName>
<Style></Style>
<FontFamily>tahoma</FontFamily>
<FontSize>8pt</FontSize>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<CanGrow>true</CanGrow>
<Value>=Code.FormatString(Code.GetLocTable("LT_Report").GetString("R.SloFormatLine2", "{0}"), Fields!ServiceLevelObjectiveDisplayName.Value)</Value>
</Textbox>
</ReportItems>
<Top>0.85676in</Top>
<Width>6.05in</Width>
<Grouping Name="list1_Details_Group">
<GroupExpressions>
<GroupExpression>=Parameters!DisplaySLO.Value</GroupExpression>
</GroupExpressions>
</Grouping>
<Height>0.2in</Height>
</List>
<Textbox Name="textbox53">
<DataElementOutput>Output</DataElementOutput>
<CanShrink>true</CanShrink>
<Top>0.25in</Top>
<Width>6.05in</Width>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<DataElementStyle>ElementNormal</DataElementStyle>
<ZIndex>16</ZIndex>
<CanGrow>true</CanGrow>
<Left>1.97083in</Left>
<DataElementName>Aggregation</DataElementName>
<Height>0.2in</Height>
<Value>=Code.GetLocTable("LT_Report").GetString("R.AggregationValue_" + Parameters!DataAggregation.Value.ToString(), "[" + Parameters!DataAggregation.Value.ToString() + "]")</Value>
</Textbox>
<Textbox Name="textbox54">
<DataElementOutput>NoOutput</DataElementOutput>
<CanShrink>true</CanShrink>
<Top>0.25in</Top>
<Width>0.1in</Width>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>15</ZIndex>
<CanGrow>true</CanGrow>
<Left>1.87083in</Left>
<Height>0.2in</Height>
<Value>:</Value>
</Textbox>
<Textbox Name="textbox55">
<DataElementOutput>NoOutput</DataElementOutput>
<CanShrink>true</CanShrink>
<Top>0.25in</Top>
<Width>1.65in</Width>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>14</ZIndex>
<CanGrow>true</CanGrow>
<Left>0.22083in</Left>
<Height>0.2in</Height>
<Value>=Code.GetLocTable("LT_Report").GetString("R.AggregationLabel", "[Data Aggregation]")</Value>
</Textbox>
<Textbox Name="textbox20">
<DataElementOutput>Output</DataElementOutput>
<Visibility>
<Hidden>true</Hidden>
</Visibility>
<CanShrink>true</CanShrink>
<Top>0.45in</Top>
<Width>0.05in</Width>
<Style></Style>
<FontSize>8pt</FontSize>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<DataElementStyle>ElementNormal</DataElementStyle>
<ZIndex>13</ZIndex>
<CanGrow>true</CanGrow>
<Left>0.17083in</Left>
<DataElementName>BusinessHours</DataElementName>
<Height>0.2in</Height>
<Value>=Code.FormatBusinessHours("{2} {0}-{1}", Code.GetReportTimeFilter())</Value>
</Textbox>
<Textbox Name="textbox17">
<DataElementOutput>Output</DataElementOutput>
<Visibility>
<Hidden>true</Hidden>
</Visibility>
<CanShrink>true</CanShrink>
<Top>0.45in</Top>
<Width>0.05in</Width>
<Style></Style>
<FontSize>8pt</FontSize>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<DataElementStyle>ElementNormal</DataElementStyle>
<ZIndex>12</ZIndex>
<CanGrow>true</CanGrow>
<Left>0.12083in</Left>
<DataElementName>TimeZone</DataElementName>
<Height>0.2in</Height>
<Value>=Parameters!TimeZoneName.Value</Value>
</Textbox>
<Textbox Name="textbox9">
<DataElementOutput>Output</DataElementOutput>
<Visibility>
<Hidden>true</Hidden>
</Visibility>
<CanShrink>true</CanShrink>
<Top>0.45in</Top>
<Width>0.05in</Width>
<Style></Style>
<FontSize>8pt</FontSize>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<DataElementStyle>ElementNormal</DataElementStyle>
<ZIndex>11</ZIndex>
<CanGrow>true</CanGrow>
<Left>0.07083in</Left>
<DataElementName>EndDate</DataElementName>
<Height>0.2in</Height>
<Value>=Code.FormatDateTime("g", Code.GetReportEndDate())</Value>
</Textbox>
<Textbox Name="textbox27">
<DataElementOutput>NoOutput</DataElementOutput>
<Visibility>
<Hidden>=Not Code.IsBusinessHours(Code.GetReportTimeFilter())</Hidden>
</Visibility>
<CanShrink>true</CanShrink>
<Top>0.65in</Top>
<Width>6.05in</Width>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>10</ZIndex>
<CanGrow>true</CanGrow>
<Left>1.97083in</Left>
<Height>0.2in</Height>
<Value>=Code.FormatBusinessHours(Code.GetLocTable("LT_Report").GetString("R.BusinessTimeFormat", "{2} {0} - {1}"), Code.GetReportTimeFilter())</Value>
</Textbox>
<Image Name="parameterBottomImage">
<Sizing>AutoSize</Sizing>
<Top>1.10416in</Top>
<MIMEType/>
<Source>External</Source>
<Style/>
<ZIndex>9</ZIndex>
<Height>0.05in</Height>
<Value>../gradient_portrait.gif</Value>
</Image>
<Textbox Name="textbox11">
<DataElementOutput>NoOutput</DataElementOutput>
<CanShrink>true</CanShrink>
<Top>0.85in</Top>
<Width>0.08958in</Width>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>8</ZIndex>
<CanGrow>true</CanGrow>
<Left>1.87083in</Left>
<Height>0.2in</Height>
<Value>:</Value>
</Textbox>
<Textbox Name="objectsParameterTitle">
<DataElementOutput>NoOutput</DataElementOutput>
<CanShrink>true</CanShrink>
<Top>0.85in</Top>
<Width>1.64167in</Width>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>7</ZIndex>
<CanGrow>true</CanGrow>
<Left>0.21875in</Left>
<Height>0.2in</Height>
<Value>=Code.GetLocTable("LT_Report").GetString("R.SloLabel", "[Report Service Level Objective(s)]")</Value>
</Textbox>
<Textbox Name="ReportGeneratedTime">
<DataElementOutput>Output</DataElementOutput>
<CanShrink>true</CanShrink>
<Top>0.05in</Top>
<Width>6.05in</Width>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<DataElementStyle>ElementNormal</DataElementStyle>
<ZIndex>6</ZIndex>
<CanGrow>true</CanGrow>
<Left>1.97083in</Left>
<DataElementName>Created</DataElementName>
<Height>0.2in</Height>
<Value>=Code.FormatDateTime("g", Code.ToReportDate(DateTime.UtcNow))</Value>
</Textbox>
<Textbox Name="textbox7">
<DataElementOutput>NoOutput</DataElementOutput>
<CanShrink>true</CanShrink>
<Top>0.45in</Top>
<Width>0.08958in</Width>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>5</ZIndex>
<CanGrow>true</CanGrow>
<Left>1.87083in</Left>
<Height>0.2in</Height>
<Value>:</Value>
</Textbox>
<Textbox Name="textbox2">
<DataElementOutput>NoOutput</DataElementOutput>
<CanShrink>true</CanShrink>
<Top>0.05in</Top>
<Width>0.1in</Width>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>4</ZIndex>
<CanGrow>true</CanGrow>
<Left>1.87083in</Left>
<Height>0.2in</Height>
<Value>:</Value>
</Textbox>
<Textbox Name="textbox1">
<DataElementOutput>NoOutput</DataElementOutput>
<CanShrink>true</CanShrink>
<Top>0.05in</Top>
<Width>1.65in</Width>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>3</ZIndex>
<CanGrow>true</CanGrow>
<Left>0.22083in</Left>
<Height>0.2in</Height>
<Value>=Code.GetLocTable("LT_Report").GetString("R.GeneratedTimeLabel", "[Report Generated Time Label]")</Value>
</Textbox>
<Textbox Name="textbox28">
<DataElementOutput>NoOutput</DataElementOutput>
<CanShrink>true</CanShrink>
<Top>0.45in</Top>
<Width>6.05in</Width>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>2</ZIndex>
<CanGrow>true</CanGrow>
<Left>1.96041in</Left>
<Height>0.2in</Height>
<Value>=Code.FormatString(Code.GetLocTable("LT_Report").GetString("R.StartEndTimeFormat", "{0} - {1}"), Code.FormatDateTime(IIf(Code.IsBusinessHours(Code.GetReportTimeFilter()) Or (CInt(Parameters!DataAggregation.Value) &gt; 0), "d", "g"), Code.GetReportStartDate()), Code.FormatDateTime(IIf(Code.IsBusinessHours(Code.GetReportTimeFilter()) Or (CInt(Parameters!DataAggregation.Value) &gt; 0), "d", "g"), Code.GetReportEndDate()))</Value>
</Textbox>
<Textbox Name="textbox26">
<DataElementOutput>NoOutput</DataElementOutput>
<CanShrink>true</CanShrink>
<Top>0.45in</Top>
<Width>1.65in</Width>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>1</ZIndex>
<CanGrow>true</CanGrow>
<Left>0.22083in</Left>
<Height>0.2in</Height>
<Value>=Code.GetLocTable("LT_Report").GetString("R.StartEndTimeLabel", "[Report Start/End Time Label]")</Value>
</Textbox>
<Textbox Name="textbox4">
<rd:DefaultName>textbox4</rd:DefaultName>
<DataElementOutput>Output</DataElementOutput>
<Visibility>
<Hidden>true</Hidden>
</Visibility>
<CanShrink>true</CanShrink>
<Top>0.45in</Top>
<Width>0.05in</Width>
<Style></Style>
<FontSize>8pt</FontSize>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<DataElementStyle>ElementNormal</DataElementStyle>
<CanGrow>true</CanGrow>
<Left>0.02083in</Left>
<DataElementName>StartDate</DataElementName>
<Height>0.2in</Height>
<Value>=Code.FormatDateTime("g", Code.GetReportStartDate())</Value>
</Textbox>
</ReportItems>
<Top>1.45in</Top>
<Width>8.05in</Width>
<Height>1.17968in</Height>
</Rectangle>
<Image Name="banner_image">
<Sizing>AutoSize</Sizing>
<Top>0.1in</Top>
<Width>8.05in</Width>
<MIMEType/>
<Source>External</Source>
<Style/>
<Left>0.15in</Left>
<Height>0.6in</Height>
<Value>../banner_portrait.jpg</Value>
</Image>
</ReportItems>
<Height>3.85in</Height>
</Script></Body>
<Language>en-US</Language>
<PageFooter>
<PrintOnFirstPage>true</PrintOnFirstPage>
<ReportItems>
<Textbox Name="textbox8">
<Top>0.1in</Top>
<Width>1.7in</Width>
<Style></Style>
<Color>DimGray</Color>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<TextAlign>Right</TextAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>1</ZIndex>
<CanGrow>true</CanGrow>
<Left>6.49167in</Left>
<Height>0.1875in</Height>
<Value>=Code.FormatString(Code.GetLocTable("LT_Report").GetString("R.PageFormat", "{0}/{1}"), Globals!PageNumber, Globals!TotalPages)</Value>
</Textbox>
<Textbox Name="textbox37">
<Top>0.1in</Top>
<Width>6.25in</Width>
<Style></Style>
<Color>DimGray</Color>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<CanGrow>true</CanGrow>
<Left>0.15in</Left>
<Height>0.1875in</Height>
<Value>=Code.FormatString(Code.GetLocTable("LT_Report").GetString("R.TimeZoneFormat", "{0}"), Parameters!TimeZoneName.Value)</Value>
</Textbox>
</ReportItems>
<Height>0.35in</Height>
<PrintOnLastPage>true</PrintOnLastPage>
</PageFooter>
</Report>
</Definition>
<ReportStrings>
<ReportString ID="R.Title"/>
<ReportString ID="R.Description"/>
<ReportString ID="R.DescriptionTitle"/>
<ReportString ID="R.GeneratedTimeLabel"/>
<ReportString ID="R.TimeZoneFormat"/>
<ReportString ID="R.PageFormat"/>
<ReportString ID="R.SloLabel"/>
<ReportString ID="R.BusinessTimeFormat"/>
<ReportString ID="R.StartEndTimeFormat"/>
<ReportString ID="R.StartEndTimeLabel"/>
<ReportString ID="R.SloFormatLine2"/>
<ReportString ID="R.AggregationLabel"/>
<ReportString ID="R.AggregationValue_0"/>
<ReportString ID="R.AggregationValue_1"/>
</ReportStrings>
</Report>