Certification Signed-Off After Due Date

You have to search at the certification level, because that includes both the due date and sign-off date

Here’s an example of how you would do that using the PowerShell SDK

Import-Module PSSailpoint

$reportOutput = @()
$campaignfilter = "name sw `"2024`""

$campaigns = Invoke-Paginate  -Function "Get-ActiveCampaigns" -InitialOffset 0 -Limit 10000 -Increment 250 -Parameters @{"Filter" = $campaignfilter}
foreach ($campaign in $campaigns) {
    $certs = Invoke-Paginate  -Function "Get-IdentityCertifications" -InitialOffset 0 -Limit 10000 -Increment 250 -Parameters @{"Filters"  ="campaign.id eq `"$($campaign.id)`""}
    foreach ($cert in $certs) {
        if($cert.due -le $cert.signed){
            $reportObject = [PSCustomObject]@{
                CampaignName = $campaign.name
                ReviewerName = $cert.reviewer.name
                DecisionsTotal = $cert.decisionsTotal
                DecisionsMade = $cert.decisionsMade
                DueDate = $cert.due
                SignedOff = $cert.signed
            }
            $reportOutput += $reportObject
        }
        
    }
}
$reportOutput | Sort-Object CampaignName,ReviewerName

Here’s an example output

Alternatively, if you just want the campaign, it’s basically the same script

Import-Module PSSailpoint

$reportOutput = @()
$campaignfilter = ""

$campaigns = Invoke-Paginate  -Function "Get-ActiveCampaigns" -InitialOffset 0 -Limit 10000 -Increment 250 -Parameters @{"Filter" = $campaignfilter}
foreach ($campaign in $campaigns) {
    $certs = Invoke-Paginate  -Function "Get-IdentityCertifications" -InitialOffset 0 -Limit 10000 -Increment 250 -Parameters @{"Filters"  ="campaign.id eq `"$($campaign.id)`""}
    foreach ($cert in $certs) {
        if($cert.due -le $cert.signed){
            $reportObject = [PSCustomObject]@{
                CampaignName = $campaign.name
            }
            $reportOutput += $reportObject
        }
        
    }
}
$reportOutput | Select-Object CampaignName -Unique| Sort-Object CampaignName

That output looks like this

3 Likes