DHCP Security Report

Microsoft.Windows.DHCPServer.Library.SecurityEvents.Report (Report)

Element properties:

AccessibilityPublic
VisibleTrue

Source Code:

<Report ID="Microsoft.Windows.DHCPServer.Library.SecurityEvents.Report" Accessibility="Public" Target="Microsoft.Windows.DHCPServer.Library.Server" Visible="true">
<Dependencies>
<ReportParameterControl>ReportLibrary!Microsoft.SystemCenter.DataWarehouse.Report.ParameterControl.TextBox</ReportParameterControl>
<ReportParameterControl>ReportLibrary!Microsoft.SystemCenter.DataWarehouse.Report.ParameterControl.RelativeDateTimePicker</ReportParameterControl>
</Dependencies>
<ParameterBlock xmlns="http://schemas.microsoft.com/mom/reporting/2007/ReportParameterSettings" columns="4">
<Controls>
<Control rowSpan="3" columnSpan="2" type="Microsoft.SystemCenter.DataWarehouse.Report.ParameterControl.RelativeDateTimePicker">
<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"/>
</ReportParameters>
</Control>
<Control rowSpan="1" columnSpan="2" type="Microsoft.SystemCenter.DataWarehouse.Report.ParameterControl.ComboBox">
<ReportParameters>
<ReportParameter name="FilterOption">
<Prompt>Filter Option</Prompt>
</ReportParameter>
</ReportParameters>
</Control>
<Control rowSpan="1" columnSpan="2" type="Microsoft.SystemCenter.DataWarehouse.Report.ParameterControl.ComboBox">
<ReportParameters>
<ReportParameter name="MonitorId">
<Prompt>Monitor</Prompt>
</ReportParameter>
<ReportParameter name="WorkFlowCategorySystemName" binding="WorkFlowCategorySystemName"/>
</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="WorkFlowCategorySystemName">
<DataType>String</DataType>
<DefaultValue>
<Values>
<Value>="StateCollection"</Value>
</Values>
</DefaultValue>
<Prompt>WorkFlowCategorySystemName</Prompt>
<Hidden>true</Hidden>
</ReportParameter>
<ReportParameter Name="FilterOption">
<DataType>Integer</DataType>
<DefaultValue>
<Values>
<Value>=0</Value>
</Values>
</DefaultValue>
<Prompt>Filter Option</Prompt>
<ValidValues>
<ParameterValues>
<ParameterValue>
<Value>0</Value>
<Label>All</Label>
</ParameterValue>
<ParameterValue>
<Value>1</Value>
<Label>Only DHCP 2003</Label>
</ParameterValue>
<ParameterValue>
<Value>2</Value>
<Label>Only DHCP 2008</Label>
</ParameterValue>
</ParameterValues>
</ValidValues>
</ReportParameter>
<ReportParameter Name="MonitorId">
<DataType>Integer</DataType>
<DefaultValue>
<DataSetReference>
<DataSetName>MonitorList</DataSetName>
<ValueField>MonitorID</ValueField>
</DataSetReference>
</DefaultValue>
<Prompt>Monitor</Prompt>
<ValidValues>
<DataSetReference>
<DataSetName>MonitorList</DataSetName>
<ValueField>MonitorID</ValueField>
<LabelField>MonitorName</LabelField>
</DataSetReference>
</ValidValues>
</ReportParameter>
<ReportParameter Name="StartDate_BaseType">
<DataType>String</DataType>
<Prompt>[Start Date Base]</Prompt>
</ReportParameter>
<ReportParameter Name="StartDate_BaseValue">
<DataType>DateTime</DataType>
<Prompt>[From]</Prompt>
</ReportParameter>
<ReportParameter Name="StartDate_OffsetType">
<DataType>String</DataType>
<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>
<Prompt>[End Date Base]</Prompt>
</ReportParameter>
<ReportParameter Name="EndDate_BaseValue">
<DataType>DateTime</DataType>
<Prompt>[To]</Prompt>
</ReportParameter>
<ReportParameter Name="EndDate_OffsetType">
<DataType>String</DataType>
<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="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>
</ReportParameters>
<rd:DrawGrid>true</rd:DrawGrid>
<InteractiveWidth>8.5in</InteractiveWidth>
<rd:SnapToGrid>true</rd:SnapToGrid>
<RightMargin>1in</RightMargin>
<LeftMargin>1in</LeftMargin>
<BottomMargin>1in</BottomMargin>
<rd:ReportID>6a46ddce-3ee9-4e45-85aa-83fd3f6ac6fa</rd:ReportID>
<DataSets>
<DataSet Name="MonitorList">
<Fields>
<Field Name="MonitorID">
<DataField>MonitorID</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="MonitorName">
<DataField>MonitorName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="MonitorDescription">
<DataField>MonitorDescription</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>DataWarehouseMain</DataSourceName>
<CommandText>
Select '0' As MonitorID,
'All' As MonitorName,
'All' As MonitorDescription
Union
Select distinct MBM.MonitorRowId As MonitorId,
Ds.Name + ' ' + Men.DisplayName As MonitorName,
IsNull(DS.Description,' ') As MonitorDescription
From vMonitorManagementPackVersion MBM (NoLock)
Inner Join
(
Select Mt.MonitorRowId,
Mt.MonitorGuid
From vMonitor Mt (NoLock)
Where Mt.ManagementPackRowId in
(
Select Mn.ManagementPackRowId
From vManagementPack Mn (NoLock)
Where Mn.ManagementPackSystemName = 'Microsoft.Windows.DHCPServer.Library'
)
) As MnDt
On MBM.MonitorRowId = MnDt.MonitorRowId
Inner Join vManagedEntity Men (NoLock)
On Men.ManagedEntityTypeRowId = MBM.TargetManagedEntityTypeRowId
Inner Join vManagedEntityMonitor MMN (NoLock)
On MMN.ManagedEntityRowId = Men.ManagedEntityRowId
And MMN.MonitorRowId = MnDt.MonitorRowId
Inner Join vDisplayString Ds (NoLock)
On Ds.ElementGUID = MnDt.MonitorGUID
Where MBM.WorkflowCategoryRowId in
(
Select WorkflowCategoryRowId
From vWorkflowCategory
Where WorkflowCategorySystemName = @WorkFlowCategorySystemName
)
And MBM.ParentMonitorRowId in
(
Select Mt.MonitorRowId
From vMonitor Mt (NoLock)
Where Mt.MonitorSystemName = 'System.Health.SecurityState'
)
And Men.ManagedEntityRowId in
(
select ME.ManagedEntityRowId
from vManagedEntityType MT (NoLock)
Inner Join vManagedEntity ME (NoLock)
On ME.ManagedEntityTypeRowId = MT.ManagedEntityTypeRowId
Where
(
( @FilterOption = 0 And MT.ManagedEntityTypeSystemName = 'Microsoft.Windows.DHCPServer.Library.IPv4Runtime') Or
( @FilterOption = 1 And MT.ManagedEntityTypeSystemName = 'Microsoft.Windows.DHCPServer.Library.IPv4Runtime' And ME.TopLevelHostManagedEntityRowId in
(
Select ME.TopLevelHostManagedEntityRowId
From vManagedEntityType MT (NoLock)
Inner Join vManagedEntity ME (NoLock)
On ME.ManagedEntityTypeRowId = MT.ManagedEntityTypeRowId
Where MT.ManagedEntityTypeSystemName = 'Microsoft.Windows.DHCPServer.Library.Server'
And ME.ManagedEntityRowId In
(
Select Rel.TargetManagedEntityRowId as ManagedEntityRowId
From vRelationship Rel (NoLock)
Where Rel.RelationshipTypeRowId in
(
Select RelationshipTypeRowId
From vRelationshipType
where RelationshipTypeSystemName = 'Microsoft.Windows.DHCPServer.2003.Contains.ServersContainsServer'
)
)
)
) Or
( @FilterOption = 2 And MT.ManagedEntityTypeSystemName = 'Microsoft.Windows.DHCPServer.Library.IPv4Runtime' And ME.TopLevelHostManagedEntityRowId in
(
Select ME.TopLevelHostManagedEntityRowId
From vManagedEntityType MT (NoLock)
Inner Join vManagedEntity ME (NoLock)
On ME.ManagedEntityTypeRowId = MT.ManagedEntityTypeRowId
Where MT.ManagedEntityTypeSystemName = 'Microsoft.Windows.DHCPServer.Library.Server'
And ME.ManagedEntityRowId In
(
Select Rel.TargetManagedEntityRowId as ManagedEntityRowId
From vRelationship Rel (NoLock)
Where Rel.RelationshipTypeRowId in
(
Select RelationshipTypeRowId
From vRelationshipType
where RelationshipTypeSystemName = 'Microsoft.Windows.DHCPServer.2008.Contains.ServersContainsServer'
)
)
)
)
)
)
</CommandText>
<QueryParameters>
<QueryParameter Name="@WorkFlowCategorySystemName">
<Value>=Parameters!WorkFlowCategorySystemName.Value</Value>
</QueryParameter>
<QueryParameter Name="@FilterOption">
<Value>=Parameters!FilterOption.Value</Value>
</QueryParameter>
</QueryParameters>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>
</DataSet>
<DataSet Name="MonitorEvents">
<Fields>
<Field Name="MonitorEventDateTime">
<DataField>MonitorEventDateTime</DataField>
<rd:TypeName>System.DateTime</rd:TypeName>
</Field>
<Field Name="MonitorId">
<DataField>MonitorId</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="MonitorName">
<DataField>MonitorName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="MonitorDescription">
<DataField>MonitorDescription</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="ManagedEntityId">
<DataField>ManagedEntityId</DataField>
<rd:TypeName>System.Int32</rd:TypeName>
</Field>
<Field Name="ManagedEntityName">
<DataField>ManagedEntityName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="OldStateId">
<DataField>OldStateId</DataField>
<rd:TypeName>System.Byte</rd:TypeName>
</Field>
<Field Name="OldStateName">
<DataField>OldStateName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="NewStateId">
<DataField>NewStateId</DataField>
<rd:TypeName>System.Byte</rd:TypeName>
</Field>
<Field Name="NewStateName">
<DataField>NewStateName</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>DataWarehouseMain</DataSourceName>
<CommandText>
Select distinct StMt.DateTime As MonitorEventDateTime,
MtAc.MonitorRowId As MonitorId,
Ds.Name As MonitorName,
IsNull(DS.Description,' ') As MonitorDescription,
MtAc.ManagedEntityRowId As ManagedEntityId,
MtAc.DisplayName As ManagedEntityName,
MtAc.TargetManagedEntityTypeRowId As ManagedEntityTypeRowId,
StMt.OldHealthState As OldStateId,
OST.HealthStateDefaultName As OldStateName,
StMt.NewHealthState As NewStateId,
NST.HealthStateDefaultName As NewStateName
From State.vStateRaw StMt (NoLock)
Inner Join
(
Select MMN.ManagedEntityMonitorRowId,
Men.ManagedEntityRowId,
Men.DisplayName,
MBM.TargetManagedEntityTypeRowId,
MBM.MonitorRowId,
MnDt.MonitorGUID as ElementGUID
From vMonitorManagementPackVersion MBM (NoLock)
Inner Join
(
Select Mt.MonitorRowId,
Mt.MonitorGuid
From vMonitor Mt (NoLock)
Where Mt.ManagementPackRowId in
(
Select Mn.ManagementPackRowId
From vManagementPack Mn (NoLock)
Where Mn.ManagementPackSystemName = 'Microsoft.Windows.DHCPServer.Library'
)
) As MnDt
On MBM.MonitorRowId = MnDt.MonitorRowId
Inner Join vManagedEntity Men (NoLock)
On Men.ManagedEntityTypeRowId = MBM.TargetManagedEntityTypeRowId
Inner Join vManagedEntityMonitor MMN (NoLock)
On MMN.ManagedEntityRowId = Men.ManagedEntityRowId
And MMN.MonitorRowId = MnDt.MonitorRowId
Where MBM.WorkflowCategoryRowId in
(
Select WorkflowCategoryRowId
From vWorkflowCategory
Where WorkflowCategorySystemName = @WorkFlowCategorySystemName
)
And MBM.ParentMonitorRowId in
(
Select Mt.MonitorRowId
From vMonitor Mt (NoLock)
Where Mt.MonitorSystemName = 'System.Health.SecurityState'
)
) As MtAc
On StMt.ManagedEntityMonitorRowId = MtAc.ManagedEntityMonitorRowId
Inner Join vDisplayString Ds (NoLock)
On Ds.ElementGUID = MtAc.ElementGUID
Inner Join vHealthState OST (NoLock)
On OST.HealthStateRowId = StMt.OldHealthState
Inner Join vHealthState NST (NoLock)
On NST.HealthStateRowId = StMt.NewHealthState
Where StMt.DateTime Between @InitialDateTime And @FinalDateTime
And
(
(@MonitorId &lt;&gt; 0 And MtAc.MonitorRowId = @MonitorId ) Or
(@MonitorId = 0 )
)

And MtAc.ManagedEntityRowId in
(
select ME.ManagedEntityRowId
from vManagedEntityType MT (NoLock)
Inner Join vManagedEntity ME (NoLock)
On ME.ManagedEntityTypeRowId = MT.ManagedEntityTypeRowId
Where
(
( @FilterOption = 0 And MT.ManagedEntityTypeSystemName = 'Microsoft.Windows.DHCPServer.Library.IPv4Runtime') Or
( @FilterOption = 1 And MT.ManagedEntityTypeSystemName = 'Microsoft.Windows.DHCPServer.Library.IPv4Runtime' And ME.TopLevelHostManagedEntityRowId in
(
Select ME.TopLevelHostManagedEntityRowId
From vManagedEntityType MT (NoLock)
Inner Join vManagedEntity ME (NoLock)
On ME.ManagedEntityTypeRowId = MT.ManagedEntityTypeRowId
Where MT.ManagedEntityTypeSystemName = 'Microsoft.Windows.DHCPServer.Library.Server'
And ME.ManagedEntityRowId In
(
Select Rel.TargetManagedEntityRowId as ManagedEntityRowId
From vRelationship Rel (NoLock)
Where Rel.RelationshipTypeRowId in
(
Select RelationshipTypeRowId
From vRelationshipType
where RelationshipTypeSystemName = 'Microsoft.Windows.DHCPServer.2003.Contains.ServersContainsServer'
)
)
)
) Or
( @FilterOption = 2 And MT.ManagedEntityTypeSystemName = 'Microsoft.Windows.DHCPServer.Library.IPv4Runtime' And ME.TopLevelHostManagedEntityRowId in
(
Select ME.TopLevelHostManagedEntityRowId
From vManagedEntityType MT (NoLock)
Inner Join vManagedEntity ME (NoLock)
On ME.ManagedEntityTypeRowId = MT.ManagedEntityTypeRowId
Where MT.ManagedEntityTypeSystemName = 'Microsoft.Windows.DHCPServer.Library.Server'
And ME.ManagedEntityRowId In
(
Select Rel.TargetManagedEntityRowId as ManagedEntityRowId
From vRelationship Rel (NoLock)
Where Rel.RelationshipTypeRowId in
(
Select RelationshipTypeRowId
From vRelationshipType
where RelationshipTypeSystemName = 'Microsoft.Windows.DHCPServer.2008.Contains.ServersContainsServer'
)
)
)
)
)
)
Order By StMt.DateTime Desc, MtAc.MonitorRowId
</CommandText>
<QueryParameters>
<QueryParameter Name="@WorkFlowCategorySystemName">
<Value>=Parameters!WorkFlowCategorySystemName.Value</Value>
</QueryParameter>
<QueryParameter Name="@MonitorId">
<Value>=Parameters!MonitorId.Value</Value>
</QueryParameter>
<QueryParameter Name="@InitialDateTime">
<Value>=Code.ToDbDate(Code.GetReportStartDate())</Value>
</QueryParameter>
<QueryParameter Name="@FinalDateTime">
<Value>=Code.ToDbDate(Code.GetReportEndDate())</Value>
</QueryParameter>
<QueryParameter Name="@FilterOption">
<Value>=Parameters!FilterOption.Value</Value>
</QueryParameter>
</QueryParameters>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>
</DataSet>
</DataSets>
<CodeModules>
<CodeModule>Microsoft.EnterpriseManagement.Reporting.Code, Version=6.0.0.0, Culture=neutral</CodeModule>
</CodeModules>
<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 = False
Const TimeTypeParameterName As String = "TimeType"
Const TimeWeekMapParameterName As String = "TimeWeekMap"

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

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
If IsNothing(ReportTimeZone) Then ReportTimeZone = Microsoft.EnterpriseManagement.Reporting.TimeZoneCoreInformation.FromValueString(Report.Parameters(TimeZoneParameterName).Value)
Return ReportTimeZone
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
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
End If
return ReportStartDate
End Function

Public Function GetReportEndDate() As DateTime
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
End If
return ReportEndDate
End Function

Public Function GetReportTimeFilter() As Microsoft.EnterpriseManagement.Reporting.ParameterProcessor.RelativeTime
If IsNothing(ReportTime) Then 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, ",")))
return ReportTime
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

Public Function BuildXmlValueList(ByVal ValueList() As Object) As String
Return Microsoft.EnterpriseManagement.Reporting.MultiValueParameter.ToXml("Data", "Value", ValueList)
End Function
</Script></Code>
<Width>8.25in</Width>
<Body><Script>
<ReportItems>
<Table Name="MonitorEventsTable">
<ZIndex>3</ZIndex>
<DetailDataElementOutput>NoOutput</DetailDataElementOutput>
<DataElementOutput>Output</DataElementOutput>
<DataSetName>MonitorEvents</DataSetName>
<Visibility>
<Hidden>true</Hidden>
<ToggleItem>SecurityEventSection</ToggleItem>
</Visibility>
<DetailDataElementName>SecurityEvents</DetailDataElementName>
<Top>1.625in</Top>
<Width>7.875in</Width>
<Details>
<TableRows>
<TableRow>
<TableCells>
<TableCell>
<ReportItems>
<Textbox Name="EventDateTime">
<Style></Style>
<TextAlign>Center</TextAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>4</ZIndex>
<CanGrow>true</CanGrow>
<Value>=Code.FormatDateTime("G",Code.ToReportDate(Fields!MonitorEventDateTime.Value))</Value>
</Textbox>
</ReportItems>
</TableCell>
<TableCell>
<ReportItems>
<Textbox Name="Monitor">
<Style></Style>
<TextAlign>Center</TextAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>3</ZIndex>
<CanGrow>true</CanGrow>
<Value>=Fields!MonitorName.Value</Value>
</Textbox>
</ReportItems>
</TableCell>
<TableCell>
<ReportItems>
<Textbox Name="TargetEntity">
<Style></Style>
<TextAlign>Center</TextAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>2</ZIndex>
<CanGrow>true</CanGrow>
<Value>=Fields!ManagedEntityName.Value</Value>
</Textbox>
</ReportItems>
</TableCell>
<TableCell>
<ReportItems>
<Textbox Name="OldStateName">
<Style></Style>
<TextAlign>Center</TextAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>1</ZIndex>
<CanGrow>true</CanGrow>
<Value>=Fields!OldStateName.Value</Value>
</Textbox>
</ReportItems>
</TableCell>
<TableCell>
<ReportItems>
<Textbox Name="NewStateName">
<Style></Style>
<TextAlign>Center</TextAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<CanGrow>true</CanGrow>
<Value>=Fields!NewStateName.Value</Value>
</Textbox>
</ReportItems>
</TableCell>
</TableCells>
<Height>0.25in</Height>
</TableRow>
</TableRows>
</Details>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
</Style>
<Header>
<TableRows>
<TableRow>
<TableCells>
<TableCell>
<ReportItems>
<Textbox Name="textbox42">
<DataElementOutput>NoOutput</DataElementOutput>
<Style></Style>
<Color>White</Color>
<BackgroundColor>Gray</BackgroundColor>
<BorderColor>
<Default>DimGray</Default>
</BorderColor>
<BorderStyle>
<Default>Solid</Default>
</BorderStyle>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<TextAlign>Center</TextAlign>
<VerticalAlign>Middle</VerticalAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>9</ZIndex>
<CanGrow>true</CanGrow>
<Value>Date Time</Value>
</Textbox>
</ReportItems>
</TableCell>
<TableCell>
<ReportItems>
<Textbox Name="textbox46">
<DataElementOutput>NoOutput</DataElementOutput>
<Style></Style>
<Color>White</Color>
<BackgroundColor>Gray</BackgroundColor>
<BorderColor>
<Default>DimGray</Default>
</BorderColor>
<BorderStyle>
<Default>Solid</Default>
</BorderStyle>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<TextAlign>Center</TextAlign>
<VerticalAlign>Middle</VerticalAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>8</ZIndex>
<CanGrow>true</CanGrow>
<Value>Monitor</Value>
</Textbox>
</ReportItems>
</TableCell>
<TableCell>
<ReportItems>
<Textbox Name="textbox1">
<rd:DefaultName>textbox1</rd:DefaultName>
<Style></Style>
<Color>White</Color>
<BackgroundColor>Gray</BackgroundColor>
<BorderColor>
<Default>DimGray</Default>
</BorderColor>
<BorderStyle>
<Default>Solid</Default>
</BorderStyle>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<TextAlign>Center</TextAlign>
<VerticalAlign>Middle</VerticalAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>7</ZIndex>
<CanGrow>true</CanGrow>
<Value>Target Entity</Value>
</Textbox>
</ReportItems>
</TableCell>
<TableCell>
<ReportItems>
<Textbox Name="textbox2">
<rd:DefaultName>textbox2</rd:DefaultName>
<Style></Style>
<Color>White</Color>
<BackgroundColor>Gray</BackgroundColor>
<BorderColor>
<Default>DimGray</Default>
</BorderColor>
<BorderStyle>
<Default>Solid</Default>
</BorderStyle>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<TextAlign>Center</TextAlign>
<VerticalAlign>Middle</VerticalAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>6</ZIndex>
<CanGrow>true</CanGrow>
<Value>Old State</Value>
</Textbox>
</ReportItems>
</TableCell>
<TableCell>
<ReportItems>
<Textbox Name="textbox3">
<rd:DefaultName>textbox3</rd:DefaultName>
<Style></Style>
<Color>White</Color>
<BackgroundColor>Gray</BackgroundColor>
<BorderColor>
<Default>DimGray</Default>
</BorderColor>
<BorderStyle>
<Default>Solid</Default>
</BorderStyle>
<FontFamily>Tahoma</FontFamily>
<FontSize>8pt</FontSize>
<TextAlign>Center</TextAlign>
<VerticalAlign>Middle</VerticalAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<ZIndex>5</ZIndex>
<CanGrow>true</CanGrow>
<Value>New State</Value>
</Textbox>
</ReportItems>
</TableCell>
</TableCells>
<Height>0.2in</Height>
</TableRow>
</TableRows>
<RepeatOnNewPage>true</RepeatOnNewPage>
</Header>
<TableColumns>
<TableColumn>
<Width>1.76273in</Width>
</TableColumn>
<TableColumn>
<Width>1.56246in</Width>
</TableColumn>
<TableColumn>
<Width>1.44227in</Width>
</TableColumn>
<TableColumn>
<Width>1.20189in</Width>
</TableColumn>
<TableColumn>
<Width>1.90565in</Width>
</TableColumn>
</TableColumns>
<DataElementName>SecurityEventsTable</DataElementName>
<Height>0.45in</Height>
<Left>0.125in</Left>
</Table>
<Textbox Name="SecurityEventSection">
<DataElementOutput>Output</DataElementOutput>
<Top>1.375in</Top>
<Width>7.875in</Width>
<Style></Style>
<BorderStyle>
<Default>Solid</Default>
<Left>Solid</Left>
<Right>Solid</Right>
<Top>Solid</Top>
<Bottom>Solid</Bottom>
</BorderStyle>
<FontFamily>Tahoma</FontFamily>
<FontSize>11pt</FontSize>
<FontWeight>700</FontWeight>
<TextAlign>Center</TextAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<DataElementStyle>ElementNormal</DataElementStyle>
<ZIndex>2</ZIndex>
<CanGrow>true</CanGrow>
<Left>0.125in</Left>
<DataElementName>Title</DataElementName>
<Height>0.25in</Height>
<Value>Security Events Details</Value>
</Textbox>
<Rectangle Name="rectangle4">
<Left>0.125in</Left>
<ZIndex>1</ZIndex>
<ReportItems>
<Textbox Name="reportTitle">
<DataElementOutput>Output</DataElementOutput>
<Top>0.125in</Top>
<Width>7.25in</Width>
<Style></Style>
<FontFamily>Tahoma</FontFamily>
<FontSize>11pt</FontSize>
<FontWeight>700</FontWeight>
<TextAlign>Center</TextAlign>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
<DataElementStyle>ElementNormal</DataElementStyle>
<CanGrow>true</CanGrow>
<Left>0.125in</Left>
<DataElementName>Title</DataElementName>
<Height>0.25in</Height>
<Value>Microsoft Windows Server DHCP - Security Events Report</Value>
</Textbox>
</ReportItems>
<Top>0.725in</Top>
<Width>7.875in</Width>
<Style></Style>
<BackgroundColor>Gainsboro</BackgroundColor>
</Style>
<Height>0.55in</Height>
</Rectangle>
<Image Name="banner_image">
<Sizing>AutoSize</Sizing>
<Top>0.125in</Top>
<Width>7.875in</Width>
<MIMEType/>
<Source>External</Source>
<Style/>
<Left>0.125in</Left>
<Height>0.53958in</Height>
<Value>../banner_portrait.jpg</Value>
</Image>
</ReportItems>
<Height>2.625in</Height>
</Script></Body>
<Language>en-US</Language>
<PageFooter>
<PrintOnFirstPage>true</PrintOnFirstPage>
<ReportItems>
<Textbox Name="textbox37">
<Top>0.125in</Top>
<Width>7.875in</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>
<CanGrow>true</CanGrow>
<Left>0.125in</Left>
<Height>0.1875in</Height>
<Value>=Globals!ExecutionTime</Value>
</Textbox>
</ReportItems>
<Height>0.375in</Height>
<PrintOnLastPage>true</PrintOnLastPage>
</PageFooter>
<TopMargin>1in</TopMargin>
</Report>
</Definition>
</Report>