Framework/Framework.ps1

Set-StrictMode -Version Latest 

# Code to load Newtonsoft dlls
try
{
    Get-AzureRmContext | Out-Null
}
catch
{ }

#Constants
. $PSScriptRoot\Helpers\Constants.ps1 


#Models
. $PSScriptRoot\Models\Enums.ps1
. $PSScriptRoot\Models\AzSdkGenericEvent.ps1
. $PSScriptRoot\Abstracts\EventBase.ps1 

. $PSScriptRoot\Helpers\Helpers.ps1

#Helpers (independent of models)
. $PSScriptRoot\Helpers\ConfigurationHelper.ps1 

. $PSScriptRoot\Models\AzSdkConfig.ps1
. $PSScriptRoot\Models\AzSdkEvent.ps1
. $PSScriptRoot\Models\AzSdkSettings.ps1

. $PSScriptRoot\Models\SVT\SVTConfig.ps1 
. $PSScriptRoot\Models\SVT\SVTEvent.ps1
. $PSScriptRoot\Models\SVT\SVTResource.ps1
. $PSScriptRoot\Models\SVT\PSCloudService.ps1

. $PSScriptRoot\Models\SubscriptionCore\AzureSecurityCenter.ps1
. $PSScriptRoot\Models\SubscriptionCore\ManagementCertificate.ps1
. $PSScriptRoot\Models\SubscriptionSecurity\SubscriptionRBAC.ps1
. $PSScriptRoot\Models\ContinuousCompliance\AutomationAccount.ps1

. $PSScriptRoot\Models\ControlState.ps1

#Helpers
. $PSScriptRoot\Helpers\Helpers.ps1
. $PSScriptRoot\Helpers\WebRequestHelper.ps1
. $PSScriptRoot\Helpers\ActiveDirectoryHelper.ps1
. $PSScriptRoot\Helpers\RoleAssignmentHelper.ps1 
. $PSScriptRoot\Helpers\SecurityCenterHelper.ps1 
. $PSScriptRoot\Helpers\SVTMapping.ps1
. $PSScriptRoot\Helpers\IdentityHelpers.ps1

#Managers
. $PSScriptRoot\Managers\ConfigurationManager.ps1 
. $PSScriptRoot\Managers\ControlStateManager.ps1 

#Abstracts
. $PSScriptRoot\Abstracts\AzSdkRoot.ps1 
. $PSScriptRoot\Abstracts\SVTBase.ps1 
. $PSScriptRoot\Abstracts\ListenerBase.ps1 
. $PSScriptRoot\Abstracts\FileOutputBase.ps1 

#Listeners
. $PSScriptRoot\Listeners\UserReports\WriteFolderPath.ps1 
(Get-ChildItem -Path "$PSScriptRoot\Listeners\UserReports" -Recurse -File -Include "*.ps1" -Exclude "WriteFolderPath.ps1") | 
    ForEach-Object {
    . $_.FullName
}


. $PSScriptRoot\Listeners\Telemetry\Telemetry.ps1
. $PSScriptRoot\Listeners\Telemetry\ControlTelemetryHelper.ps1
. $PSScriptRoot\Listeners\Telemetry\UsageTelemetryHelper.ps1
. $PSScriptRoot\Listeners\Telemetry\ControlTelemetry.ps1 
. $PSScriptRoot\Listeners\Telemetry\UsageTelemetry.ps1

. $PSScriptRoot\Listeners\OMS\OMSOutput.ps1 
. $PSScriptRoot\Listeners\ListenerHelper.ps1

#Remaining Abstracts
. $PSScriptRoot\Abstracts\CommandBase.ps1 
. $PSScriptRoot\Abstracts\SVTCommandBase.ps1 

#Core

. $PSScriptRoot\Core\SVT\SVTIaasBase.ps1
(Get-ChildItem -Path "$PSScriptRoot\Core\SVT\Services\" -Recurse -File) | 
    ForEach-Object {
    . $_.FullName
}
(Get-ChildItem -Path "$PSScriptRoot\Core\SubscriptionSecurity\" -Recurse -File) | 
    ForEach-Object {
    . $_.FullName
}

. $PSScriptRoot\Core\AzureMonitoring\OMSMonitoring.ps1
. $PSScriptRoot\Core\SVT\SubscriptionCore\SubscriptionCore.ps1
. $PSScriptRoot\Core\SVT\SVTResourceResolver.ps1
. $PSScriptRoot\Core\SVT\ServicesSecurityStatus.ps1
. $PSScriptRoot\Core\SVT\SubscriptionSecurityStatus.ps1
. $PSScriptRoot\Core\SVT\SVTStatusReport.ps1
. $PSScriptRoot\Core\ContinuousCompliance\CCAutomation.ps1