Private/Activation.ps1

function Test-midPointEffectiveStatus {
    # After enabling: warn when the user (or assignment) is still not effectively enabled,
    # e.g. because validTo is in the past. midPoint computes effectiveStatus during the change.
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)] [object] $Activation,
        [Parameter(Mandatory)] [string] $Label
    )

    $effective = Get-midPointProperty $Activation 'EffectiveStatus'
    if ($effective -and $effective -ne 'enabled') {
        $validity = Get-midPointProperty $Activation 'ValidityStatus'
        $detail = if ($validity) { " (validity: $validity, validFrom: $($Activation.ValidFrom), validTo: $($Activation.ValidTo))" } else { '' }
        Write-Warning "$Label is enabled, but its effective status is '$effective'$detail."
    }
}

function Get-midPointActivationParameter {
    # Copies the activation parameters a cmdlet was called with, for New-midPointActivationDelta.
    [CmdletBinding()]
    [OutputType([hashtable])]
    param([Parameter(Mandatory)] [System.Collections.IDictionary] $BoundParameters)

    $result = @{}
    foreach ($name in 'AdministrativeStatus', 'ValidFrom', 'ValidTo', 'ClearValidFrom', 'ClearValidTo') {
        if ($BoundParameters.Keys -contains $name) { $result[$name] = $BoundParameters[$name] }
    }
    $result
}