DscResources/Exchange/Exchange.schema.psm1

# (2025-04-03 01:41:41) Generated using Microsoft365DSC v1.25.326.1
Configuration 'Exchange'
{
    param
    (
        [Parameter(Mandatory = $true)]
        [System.String]
        $ApplicationId,

        [Parameter(Mandatory = $true)]
        [System.String]
        $TenantId,

        [Parameter(Mandatory = $true)]
        [System.String]
        $CertificateThumbprint
    )

    Import-DscResource -ModuleName Microsoft365DSC

    foreach ($AcceptedDomain in $ConfigurationData.NonNodeData.Exchange.AcceptedDomain)
    {
        $resourceTitle = 'EXOAcceptedDomain-{0}' -f $AcceptedDomain.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $AcceptedDomain
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOAcceptedDomain' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($ActiveSyncDeviceAccessRule in $ConfigurationData.NonNodeData.Exchange.ActiveSyncDeviceAccessRule)
    {
        $resourceTitle = 'EXOActiveSyncDeviceAccessRule-{0}' -f $ActiveSyncDeviceAccessRule.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $ActiveSyncDeviceAccessRule
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOActiveSyncDeviceAccessRule' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($ActiveSyncMailboxPolicy in $ConfigurationData.NonNodeData.Exchange.ActiveSyncMailboxPolicy)
    {
        $resourceTitle = 'EXOActiveSyncMailboxPolicy-{0}' -f $ActiveSyncMailboxPolicy.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $ActiveSyncMailboxPolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOActiveSyncMailboxPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($AddressBookPolicy in $ConfigurationData.NonNodeData.Exchange.AddressBookPolicy)
    {
        $resourceTitle = 'EXOAddressBookPolicy-{0}' -f $AddressBookPolicy.Name
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $AddressBookPolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOAddressBookPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($AddressList in $ConfigurationData.NonNodeData.Exchange.AddressList)
    {
        $resourceTitle = 'EXOAddressList-{0}' -f $AddressList.Name
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $AddressList
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOAddressList' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($AntiPhishPolicy in $ConfigurationData.NonNodeData.Exchange.AntiPhishPolicy)
    {
        $resourceTitle = 'EXOAntiPhishPolicy-{0}' -f $AntiPhishPolicy.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $AntiPhishPolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOAntiPhishPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($AntiPhishRule in $ConfigurationData.NonNodeData.Exchange.AntiPhishRule)
    {
        $resourceTitle = 'EXOAntiPhishRule-{0}' -f $AntiPhishRule.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $AntiPhishRule
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOAntiPhishRule' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($ApplicationAccessPolicy in $ConfigurationData.NonNodeData.Exchange.ApplicationAccessPolicy)
    {
        $resourceTitle = 'EXOApplicationAccessPolicy-{0}' -f $ApplicationAccessPolicy.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $ApplicationAccessPolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOApplicationAccessPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    if ($ConfigurationData.NonNodeData.Exchange.ContainsKey('ArcConfig'))
    {
        $resourceTitle = 'ArcConfigDefaults'

        $parameters = $ConfigurationData.NonNodeData.Exchange.ArcConfig
        $parameters.IsSingleInstance = 'Yes'
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOArcConfig' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($ATPBuiltInProtectionRule in $ConfigurationData.NonNodeData.Exchange.ATPBuiltInProtectionRule)
    {
        $resourceTitle = 'EXOATPBuiltInProtectionRule-{0}' -f $ATPBuiltInProtectionRule.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $ATPBuiltInProtectionRule
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOATPBuiltInProtectionRule' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    if ($ConfigurationData.NonNodeData.Exchange.ContainsKey('AtpPolicyForO365'))
    {
        $resourceTitle = 'AtpPolicyForO365Defaults'

        $parameters = $ConfigurationData.NonNodeData.Exchange.AtpPolicyForO365
        $parameters.IsSingleInstance = 'Yes'
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOAtpPolicyForO365' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($AtpProtectionPolicyRule in $ConfigurationData.NonNodeData.Exchange.AtpProtectionPolicyRule)
    {
        $resourceTitle = 'EXOAtpProtectionPolicyRule-{0}' -f $AtpProtectionPolicyRule.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $AtpProtectionPolicyRule
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOAtpProtectionPolicyRule' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($AuthenticationPolicy in $ConfigurationData.NonNodeData.Exchange.AuthenticationPolicy)
    {
        $resourceTitle = 'EXOAuthenticationPolicy-{0}' -f $AuthenticationPolicy.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $AuthenticationPolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOAuthenticationPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($AuthenticationPolicyAssignment in $ConfigurationData.NonNodeData.Exchange.AuthenticationPolicyAssignment)
    {
        $resourceTitle = 'EXOAuthenticationPolicyAssignment-{0}' -f $AuthenticationPolicyAssignment.UserName
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $AuthenticationPolicyAssignment
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOAuthenticationPolicyAssignment' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($AvailabilityAddressSpace in $ConfigurationData.NonNodeData.Exchange.AvailabilityAddressSpace)
    {
        $resourceTitle = 'EXOAvailabilityAddressSpace-{0}' -f $AvailabilityAddressSpace.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $AvailabilityAddressSpace
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOAvailabilityAddressSpace' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($AvailabilityConfig in $ConfigurationData.NonNodeData.Exchange.AvailabilityConfig)
    {
        $resourceTitle = 'EXOAvailabilityConfig-{0}' -f $AvailabilityConfig.OrgWideAccount
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $AvailabilityConfig
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOAvailabilityConfig' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($CalendarProcessing in $ConfigurationData.NonNodeData.Exchange.CalendarProcessing)
    {
        $resourceTitle = 'EXOCalendarProcessing-{0}' -f $CalendarProcessing.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $CalendarProcessing
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOCalendarProcessing' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($CASMailboxPlan in $ConfigurationData.NonNodeData.Exchange.CASMailboxPlan)
    {
        $resourceTitle = 'EXOCASMailboxPlan-{0}' -f $CASMailboxPlan.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $CASMailboxPlan
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOCASMailboxPlan' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($CASMailboxSettings in $ConfigurationData.NonNodeData.Exchange.CASMailboxSettings)
    {
        $resourceTitle = 'EXOCASMailboxSettings-{0}' -f $CASMailboxSettings.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $CASMailboxSettings
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOCASMailboxSettings' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($ClientAccessRule in $ConfigurationData.NonNodeData.Exchange.ClientAccessRule)
    {
        $resourceTitle = 'EXOClientAccessRule-{0}' -f $ClientAccessRule.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $ClientAccessRule
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOClientAccessRule' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($DataAtRestEncryptionPolicy in $ConfigurationData.NonNodeData.Exchange.DataAtRestEncryptionPolicy)
    {
        $resourceTitle = 'EXODataAtRestEncryptionPolicy-{0}' -f $DataAtRestEncryptionPolicy.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $DataAtRestEncryptionPolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXODataAtRestEncryptionPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    if ($ConfigurationData.NonNodeData.Exchange.ContainsKey('DataAtRestEncryptionPolicyAssignment'))
    {
        $resourceTitle = 'DataAtRestEncryptionPolicyAssignmentDefaults'

        $parameters = $ConfigurationData.NonNodeData.Exchange.DataAtRestEncryptionPolicyAssignment
        $parameters.IsSingleInstance = 'Yes'
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXODataAtRestEncryptionPolicyAssignment' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($DataClassification in $ConfigurationData.NonNodeData.Exchange.DataClassification)
    {
        $resourceTitle = 'EXODataClassification-{0}' -f $DataClassification.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $DataClassification
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXODataClassification' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($DataEncryptionPolicy in $ConfigurationData.NonNodeData.Exchange.DataEncryptionPolicy)
    {
        $resourceTitle = 'EXODataEncryptionPolicy-{0}' -f $DataEncryptionPolicy.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $DataEncryptionPolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXODataEncryptionPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($DistributionGroup in $ConfigurationData.NonNodeData.Exchange.DistributionGroup)
    {
        $resourceTitle = 'EXODistributionGroup-{0}' -f $DistributionGroup.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $DistributionGroup
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXODistributionGroup' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($DkimSigningConfig in $ConfigurationData.NonNodeData.Exchange.DkimSigningConfig)
    {
        $resourceTitle = 'EXODkimSigningConfig-{0}' -f $DkimSigningConfig.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $DkimSigningConfig
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXODkimSigningConfig' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($DnssecForVerifiedDomain in $ConfigurationData.NonNodeData.Exchange.DnssecForVerifiedDomain)
    {
        $resourceTitle = 'EXODnssecForVerifiedDomain-{0}' -f $DnssecForVerifiedDomain.DomainName
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $DnssecForVerifiedDomain
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXODnssecForVerifiedDomain' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($EmailAddressPolicy in $ConfigurationData.NonNodeData.Exchange.EmailAddressPolicy)
    {
        $resourceTitle = 'EXOEmailAddressPolicy-{0}' -f $EmailAddressPolicy.Name
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $EmailAddressPolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOEmailAddressPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    if ($ConfigurationData.NonNodeData.Exchange.ContainsKey('EmailTenantSettings'))
    {
        $resourceTitle = 'EmailTenantSettingsDefaults'

        $parameters = $ConfigurationData.NonNodeData.Exchange.EmailTenantSettings
        $parameters.IsSingleInstance = 'Yes'
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOEmailTenantSettings' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($EOPProtectionPolicyRule in $ConfigurationData.NonNodeData.Exchange.EOPProtectionPolicyRule)
    {
        $resourceTitle = 'EXOEOPProtectionPolicyRule-{0}' -f $EOPProtectionPolicyRule.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $EOPProtectionPolicyRule
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOEOPProtectionPolicyRule' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($ExternalInOutlook in $ConfigurationData.NonNodeData.Exchange.ExternalInOutlook)
    {
        $resourceTitle = 'EXOExternalInOutlook-{0}' -f $ExternalInOutlook.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $ExternalInOutlook
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOExternalInOutlook' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($FocusedInbox in $ConfigurationData.NonNodeData.Exchange.FocusedInbox)
    {
        $resourceTitle = 'EXOFocusedInbox-{0}' -f $FocusedInbox.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $FocusedInbox
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOFocusedInbox' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($GlobalAddressList in $ConfigurationData.NonNodeData.Exchange.GlobalAddressList)
    {
        $resourceTitle = 'EXOGlobalAddressList-{0}' -f $GlobalAddressList.Name
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $GlobalAddressList
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOGlobalAddressList' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($GroupSettings in $ConfigurationData.NonNodeData.Exchange.GroupSettings)
    {
        $resourceTitle = 'EXOGroupSettings-{0}' -f $GroupSettings.DisplayName
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $GroupSettings
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOGroupSettings' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($HostedConnectionFilterPolicy in $ConfigurationData.NonNodeData.Exchange.HostedConnectionFilterPolicy)
    {
        $resourceTitle = 'EXOHostedConnectionFilterPolicy-{0}' -f $HostedConnectionFilterPolicy.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $HostedConnectionFilterPolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOHostedConnectionFilterPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($HostedContentFilterPolicy in $ConfigurationData.NonNodeData.Exchange.HostedContentFilterPolicy)
    {
        $resourceTitle = 'EXOHostedContentFilterPolicy-{0}' -f $HostedContentFilterPolicy.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $HostedContentFilterPolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOHostedContentFilterPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($HostedContentFilterRule in $ConfigurationData.NonNodeData.Exchange.HostedContentFilterRule)
    {
        $resourceTitle = 'EXOHostedContentFilterRule-{0}' -f $HostedContentFilterRule.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $HostedContentFilterRule
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOHostedContentFilterRule' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($HostedOutboundSpamFilterPolicy in $ConfigurationData.NonNodeData.Exchange.HostedOutboundSpamFilterPolicy)
    {
        $resourceTitle = 'EXOHostedOutboundSpamFilterPolicy-{0}' -f $HostedOutboundSpamFilterPolicy.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $HostedOutboundSpamFilterPolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOHostedOutboundSpamFilterPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($HostedOutboundSpamFilterRule in $ConfigurationData.NonNodeData.Exchange.HostedOutboundSpamFilterRule)
    {
        $resourceTitle = 'EXOHostedOutboundSpamFilterRule-{0}' -f $HostedOutboundSpamFilterRule.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $HostedOutboundSpamFilterRule
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOHostedOutboundSpamFilterRule' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($InboundConnector in $ConfigurationData.NonNodeData.Exchange.InboundConnector)
    {
        $resourceTitle = 'EXOInboundConnector-{0}' -f $InboundConnector.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $InboundConnector
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOInboundConnector' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($IntraOrganizationConnector in $ConfigurationData.NonNodeData.Exchange.IntraOrganizationConnector)
    {
        $resourceTitle = 'EXOIntraOrganizationConnector-{0}' -f $IntraOrganizationConnector.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $IntraOrganizationConnector
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOIntraOrganizationConnector' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    if ($ConfigurationData.NonNodeData.Exchange.ContainsKey('IRMConfiguration'))
    {
        $resourceTitle = 'IRMConfigurationDefaults'

        $parameters = $ConfigurationData.NonNodeData.Exchange.IRMConfiguration
        $parameters.IsSingleInstance = 'Yes'
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOIRMConfiguration' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($JournalRule in $ConfigurationData.NonNodeData.Exchange.JournalRule)
    {
        $resourceTitle = 'EXOJournalRule-{0}-{1}' -f $JournalRule.Name,$JournalRule.JournalEmailAddress
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $JournalRule
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOJournalRule' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($MailboxAuditBypassAssociation in $ConfigurationData.NonNodeData.Exchange.MailboxAuditBypassAssociation)
    {
        $resourceTitle = 'EXOMailboxAuditBypassAssociation-{0}' -f $MailboxAuditBypassAssociation.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $MailboxAuditBypassAssociation
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOMailboxAuditBypassAssociation' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($MailboxAutoReplyConfiguration in $ConfigurationData.NonNodeData.Exchange.MailboxAutoReplyConfiguration)
    {
        $resourceTitle = 'EXOMailboxAutoReplyConfiguration-{0}' -f $MailboxAutoReplyConfiguration.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $MailboxAutoReplyConfiguration
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOMailboxAutoReplyConfiguration' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($MailboxCalendarConfiguration in $ConfigurationData.NonNodeData.Exchange.MailboxCalendarConfiguration)
    {
        $resourceTitle = 'EXOMailboxCalendarConfiguration-{0}' -f $MailboxCalendarConfiguration.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $MailboxCalendarConfiguration
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOMailboxCalendarConfiguration' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($MailboxCalendarFolder in $ConfigurationData.NonNodeData.Exchange.MailboxCalendarFolder)
    {
        $resourceTitle = 'EXOMailboxCalendarFolder-{0}' -f $MailboxCalendarFolder.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $MailboxCalendarFolder
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOMailboxCalendarFolder' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($MailboxFolderPermission in $ConfigurationData.NonNodeData.Exchange.MailboxFolderPermission)
    {
        $resourceTitle = 'EXOMailboxFolderPermission-{0}' -f $MailboxFolderPermission.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $MailboxFolderPermission
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        if ($parameters.ContainsKey('UserPermissions'))
        {
            $parameters.UserPermissions = $parameters.UserPermissions | ForEach-Object {
                if ($_.ContainsKey('UniqueId'))
                {
                    $_.Remove('UniqueId')
                }

                (Get-DscSplattedResource -ResourceName 'MSFT_EXOMailboxFolderUserPermission' -Properties $_ -NoInvoke).Invoke($_)
            }
        }

        (Get-DscSplattedResource -ResourceName 'EXOMailboxFolderPermission' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($MailboxIRMAccess in $ConfigurationData.NonNodeData.Exchange.MailboxIRMAccess)
    {
        $resourceTitle = 'EXOMailboxIRMAccess-{0}-{1}' -f $MailboxIRMAccess.Identity,$MailboxIRMAccess.User
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $MailboxIRMAccess
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOMailboxIRMAccess' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($MailboxPermission in $ConfigurationData.NonNodeData.Exchange.MailboxPermission)
    {
        $resourceTitle = 'EXOMailboxPermission-{0}-{1}-{2}' -f $MailboxPermission.Identity,$MailboxPermission.User,$MailboxPermission.InheritanceType
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $MailboxPermission
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOMailboxPermission' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($MailboxPlan in $ConfigurationData.NonNodeData.Exchange.MailboxPlan)
    {
        $resourceTitle = 'EXOMailboxPlan-{0}' -f $MailboxPlan.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $MailboxPlan
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOMailboxPlan' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($MailboxSettings in $ConfigurationData.NonNodeData.Exchange.MailboxSettings)
    {
        $resourceTitle = 'EXOMailboxSettings-{0}' -f $MailboxSettings.DisplayName
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $MailboxSettings
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOMailboxSettings' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($MailContact in $ConfigurationData.NonNodeData.Exchange.MailContact)
    {
        $resourceTitle = 'EXOMailContact-{0}' -f $MailContact.Name
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $MailContact
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOMailContact' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    if ($ConfigurationData.NonNodeData.Exchange.ContainsKey('MailTips'))
    {
        $resourceTitle = 'MailTipsDefaults'

        $parameters = $ConfigurationData.NonNodeData.Exchange.MailTips
        $parameters.IsSingleInstance = 'Yes'
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOMailTips' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($MalwareFilterPolicy in $ConfigurationData.NonNodeData.Exchange.MalwareFilterPolicy)
    {
        $resourceTitle = 'EXOMalwareFilterPolicy-{0}' -f $MalwareFilterPolicy.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $MalwareFilterPolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOMalwareFilterPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($MalwareFilterRule in $ConfigurationData.NonNodeData.Exchange.MalwareFilterRule)
    {
        $resourceTitle = 'EXOMalwareFilterRule-{0}' -f $MalwareFilterRule.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $MalwareFilterRule
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOMalwareFilterRule' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($ManagementRole in $ConfigurationData.NonNodeData.Exchange.ManagementRole)
    {
        $resourceTitle = 'EXOManagementRole-{0}-{1}' -f $ManagementRole.Name,$ManagementRole.Parent
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $ManagementRole
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOManagementRole' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($ManagementRoleAssignment in $ConfigurationData.NonNodeData.Exchange.ManagementRoleAssignment)
    {
        $resourceTitle = 'EXOManagementRoleAssignment-{0}-{1}' -f $ManagementRoleAssignment.Name,$ManagementRoleAssignment.Role
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $ManagementRoleAssignment
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOManagementRoleAssignment' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($ManagementRoleEntry in $ConfigurationData.NonNodeData.Exchange.ManagementRoleEntry)
    {
        $resourceTitle = 'EXOManagementRoleEntry-{0}' -f $ManagementRoleEntry.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $ManagementRoleEntry
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOManagementRoleEntry' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($ManagementScope in $ConfigurationData.NonNodeData.Exchange.ManagementScope)
    {
        $resourceTitle = 'EXOManagementScope-{0}' -f $ManagementScope.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $ManagementScope
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOManagementScope' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($MessageClassification in $ConfigurationData.NonNodeData.Exchange.MessageClassification)
    {
        $resourceTitle = 'EXOMessageClassification-{0}' -f $MessageClassification.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $MessageClassification
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOMessageClassification' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($Migration in $ConfigurationData.NonNodeData.Exchange.Migration)
    {
        $resourceTitle = 'EXOMigration-{0}' -f $Migration.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $Migration
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOMigration' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($MigrationEndpoint in $ConfigurationData.NonNodeData.Exchange.MigrationEndpoint)
    {
        $resourceTitle = 'EXOMigrationEndpoint-{0}' -f $MigrationEndpoint.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $MigrationEndpoint
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOMigrationEndpoint' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($MobileDeviceMailboxPolicy in $ConfigurationData.NonNodeData.Exchange.MobileDeviceMailboxPolicy)
    {
        $resourceTitle = 'EXOMobileDeviceMailboxPolicy-{0}' -f $MobileDeviceMailboxPolicy.Name
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $MobileDeviceMailboxPolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOMobileDeviceMailboxPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($OfflineAddressBook in $ConfigurationData.NonNodeData.Exchange.OfflineAddressBook)
    {
        $resourceTitle = 'EXOOfflineAddressBook-{0}' -f $OfflineAddressBook.Name
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $OfflineAddressBook
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOOfflineAddressBook' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($OMEConfiguration in $ConfigurationData.NonNodeData.Exchange.OMEConfiguration)
    {
        $resourceTitle = 'EXOOMEConfiguration-{0}' -f $OMEConfiguration.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $OMEConfiguration
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOOMEConfiguration' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($OnPremisesOrganization in $ConfigurationData.NonNodeData.Exchange.OnPremisesOrganization)
    {
        $resourceTitle = 'EXOOnPremisesOrganization-{0}' -f $OnPremisesOrganization.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $OnPremisesOrganization
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOOnPremisesOrganization' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    if ($ConfigurationData.NonNodeData.Exchange.ContainsKey('OrganizationConfig'))
    {
        $resourceTitle = 'OrganizationConfigDefaults'

        $parameters = $ConfigurationData.NonNodeData.Exchange.OrganizationConfig
        $parameters.IsSingleInstance = 'Yes'
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOOrganizationConfig' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($OrganizationRelationship in $ConfigurationData.NonNodeData.Exchange.OrganizationRelationship)
    {
        $resourceTitle = 'EXOOrganizationRelationship-{0}' -f $OrganizationRelationship.Name
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $OrganizationRelationship
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOOrganizationRelationship' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($OutboundConnector in $ConfigurationData.NonNodeData.Exchange.OutboundConnector)
    {
        $resourceTitle = 'EXOOutboundConnector-{0}' -f $OutboundConnector.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $OutboundConnector
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOOutboundConnector' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($OwaMailboxPolicy in $ConfigurationData.NonNodeData.Exchange.OwaMailboxPolicy)
    {
        $resourceTitle = 'EXOOwaMailboxPolicy-{0}' -f $OwaMailboxPolicy.Name
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $OwaMailboxPolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOOwaMailboxPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($PartnerApplication in $ConfigurationData.NonNodeData.Exchange.PartnerApplication)
    {
        $resourceTitle = 'EXOPartnerApplication-{0}' -f $PartnerApplication.Name
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $PartnerApplication
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOPartnerApplication' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    if ($ConfigurationData.NonNodeData.Exchange.ContainsKey('PerimeterConfiguration'))
    {
        $resourceTitle = 'PerimeterConfigurationDefaults'

        $parameters = $ConfigurationData.NonNodeData.Exchange.PerimeterConfiguration
        $parameters.IsSingleInstance = 'Yes'
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOPerimeterConfiguration' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($PhishSimOverrideRule in $ConfigurationData.NonNodeData.Exchange.PhishSimOverrideRule)
    {
        $resourceTitle = 'EXOPhishSimOverrideRule-{0}' -f $PhishSimOverrideRule.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $PhishSimOverrideRule
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOPhishSimOverrideRule' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($Place in $ConfigurationData.NonNodeData.Exchange.Place)
    {
        $resourceTitle = 'EXOPlace-{0}' -f $Place.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $Place
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOPlace' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($PolicyTipConfig in $ConfigurationData.NonNodeData.Exchange.PolicyTipConfig)
    {
        $resourceTitle = 'EXOPolicyTipConfig-{0}' -f $PolicyTipConfig.Name
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $PolicyTipConfig
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOPolicyTipConfig' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($QuarantinePolicy in $ConfigurationData.NonNodeData.Exchange.QuarantinePolicy)
    {
        $resourceTitle = 'EXOQuarantinePolicy-{0}' -f $QuarantinePolicy.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $QuarantinePolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOQuarantinePolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($RecipientPermission in $ConfigurationData.NonNodeData.Exchange.RecipientPermission)
    {
        $resourceTitle = 'EXORecipientPermission-{0}-{1}' -f $RecipientPermission.Identity,$RecipientPermission.Trustee
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $RecipientPermission
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXORecipientPermission' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($RemoteDomain in $ConfigurationData.NonNodeData.Exchange.RemoteDomain)
    {
        $resourceTitle = 'EXORemoteDomain-{0}' -f $RemoteDomain.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $RemoteDomain
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXORemoteDomain' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    if ($ConfigurationData.NonNodeData.Exchange.ContainsKey('ReportSubmissionPolicy'))
    {
        $resourceTitle = 'ReportSubmissionPolicyDefaults'

        $parameters = $ConfigurationData.NonNodeData.Exchange.ReportSubmissionPolicy
        $parameters.IsSingleInstance = 'Yes'
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOReportSubmissionPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    if ($ConfigurationData.NonNodeData.Exchange.ContainsKey('ReportSubmissionRule'))
    {
        $resourceTitle = 'ReportSubmissionRuleDefaults'

        $parameters = $ConfigurationData.NonNodeData.Exchange.ReportSubmissionRule
        $parameters.IsSingleInstance = 'Yes'
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOReportSubmissionRule' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    if ($ConfigurationData.NonNodeData.Exchange.ContainsKey('ResourceConfiguration'))
    {
        $resourceTitle = 'ResourceConfigurationDefaults'

        $parameters = $ConfigurationData.NonNodeData.Exchange.ResourceConfiguration
        $parameters.IsSingleInstance = 'Yes'
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOResourceConfiguration' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($RetentionPolicy in $ConfigurationData.NonNodeData.Exchange.RetentionPolicy)
    {
        $resourceTitle = 'EXORetentionPolicy-{0}' -f $RetentionPolicy.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $RetentionPolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXORetentionPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($RetentionPolicyTag in $ConfigurationData.NonNodeData.Exchange.RetentionPolicyTag)
    {
        $resourceTitle = 'EXORetentionPolicyTag-{0}' -f $RetentionPolicyTag.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $RetentionPolicyTag
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXORetentionPolicyTag' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($RoleAssignmentPolicy in $ConfigurationData.NonNodeData.Exchange.RoleAssignmentPolicy)
    {
        $resourceTitle = 'EXORoleAssignmentPolicy-{0}' -f $RoleAssignmentPolicy.Name
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $RoleAssignmentPolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXORoleAssignmentPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($RoleGroup in $ConfigurationData.NonNodeData.Exchange.RoleGroup)
    {
        $resourceTitle = 'EXORoleGroup-{0}' -f $RoleGroup.Name
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $RoleGroup
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXORoleGroup' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($SafeAttachmentPolicy in $ConfigurationData.NonNodeData.Exchange.SafeAttachmentPolicy)
    {
        $resourceTitle = 'EXOSafeAttachmentPolicy-{0}' -f $SafeAttachmentPolicy.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $SafeAttachmentPolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOSafeAttachmentPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($SafeAttachmentRule in $ConfigurationData.NonNodeData.Exchange.SafeAttachmentRule)
    {
        $resourceTitle = 'EXOSafeAttachmentRule-{0}' -f $SafeAttachmentRule.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $SafeAttachmentRule
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOSafeAttachmentRule' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($SafeLinksPolicy in $ConfigurationData.NonNodeData.Exchange.SafeLinksPolicy)
    {
        $resourceTitle = 'EXOSafeLinksPolicy-{0}' -f $SafeLinksPolicy.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $SafeLinksPolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOSafeLinksPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($SafeLinksRule in $ConfigurationData.NonNodeData.Exchange.SafeLinksRule)
    {
        $resourceTitle = 'EXOSafeLinksRule-{0}' -f $SafeLinksRule.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $SafeLinksRule
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOSafeLinksRule' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($SecOpsOverrideRule in $ConfigurationData.NonNodeData.Exchange.SecOpsOverrideRule)
    {
        $resourceTitle = 'EXOSecOpsOverrideRule-{0}' -f $SecOpsOverrideRule.Identity
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $SecOpsOverrideRule
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOSecOpsOverrideRule' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($ServicePrincipal in $ConfigurationData.NonNodeData.Exchange.ServicePrincipal)
    {
        $resourceTitle = 'EXOServicePrincipal-{0}' -f $ServicePrincipal.AppName
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $ServicePrincipal
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOServicePrincipal' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($SharedMailbox in $ConfigurationData.NonNodeData.Exchange.SharedMailbox)
    {
        $resourceTitle = 'EXOSharedMailbox-{0}' -f $SharedMailbox.DisplayName
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $SharedMailbox
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOSharedMailbox' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($SharingPolicy in $ConfigurationData.NonNodeData.Exchange.SharingPolicy)
    {
        $resourceTitle = 'EXOSharingPolicy-{0}' -f $SharingPolicy.Name
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $SharingPolicy
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOSharingPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($SmtpDaneInbound in $ConfigurationData.NonNodeData.Exchange.SmtpDaneInbound)
    {
        $resourceTitle = 'EXOSmtpDaneInbound-{0}' -f $SmtpDaneInbound.DomainName
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $SmtpDaneInbound
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOSmtpDaneInbound' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($SweepRule in $ConfigurationData.NonNodeData.Exchange.SweepRule)
    {
        $resourceTitle = 'EXOSweepRule-{0}' -f $SweepRule.Name
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $SweepRule
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOSweepRule' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    if ($ConfigurationData.NonNodeData.Exchange.ContainsKey('TeamsProtectionPolicy'))
    {
        $resourceTitle = 'TeamsProtectionPolicyDefaults'

        $parameters = $ConfigurationData.NonNodeData.Exchange.TeamsProtectionPolicy
        $parameters.IsSingleInstance = 'Yes'
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOTeamsProtectionPolicy' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($TenantAllowBlockListItems in $ConfigurationData.NonNodeData.Exchange.TenantAllowBlockListItems)
    {
        $resourceTitle = 'EXOTenantAllowBlockListItems-{0}-{1}-{2}' -f $TenantAllowBlockListItems.Action,$TenantAllowBlockListItems.Value,$TenantAllowBlockListItems.ListType
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $TenantAllowBlockListItems
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOTenantAllowBlockListItems' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($TenantAllowBlockListSpoofItems in $ConfigurationData.NonNodeData.Exchange.TenantAllowBlockListSpoofItems)
    {
        $resourceTitle = 'EXOTenantAllowBlockListSpoofItems-{0}' -f $TenantAllowBlockListSpoofItems.SpoofedUser
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $TenantAllowBlockListSpoofItems
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOTenantAllowBlockListSpoofItems' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    if ($ConfigurationData.NonNodeData.Exchange.ContainsKey('TransportConfig'))
    {
        $resourceTitle = 'TransportConfigDefaults'

        $parameters = $ConfigurationData.NonNodeData.Exchange.TransportConfig
        $parameters.IsSingleInstance = 'Yes'
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOTransportConfig' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }

    foreach ($TransportRule in $ConfigurationData.NonNodeData.Exchange.TransportRule)
    {
        $resourceTitle = 'EXOTransportRule-{0}' -f $TransportRule.Name
        $resourceTitle = $resourceTitle -replace "@","_"

        $parameters = $TransportRule
        $parameters.ApplicationId = $ApplicationId
        $parameters.TenantId = $TenantId
        $parameters.CertificateThumbprint = $CertificateThumbprint

        if ($parameters.ContainsKey('UniqueId'))
        {
            $parameters.Remove('UniqueId')
        }

        (Get-DscSplattedResource -ResourceName 'EXOTransportRule' -ExecutionName $resourceTitle -Properties $parameters -NoInvoke).Invoke($parameters)
    }
}