Skip to content

Commit 6c40e9b

Browse files
fix(conditional): handle long CA exclusion names
Normalize vacation exclusion group naming to avoid Graph lookup/create issues when policy display names are long: cap at 120 chars, append an 8-char policy ID suffix when truncated, and reuse that computed name consistently for filtering and CA exclusion updates. Also update the wizard info text to document the new truncation-and-suffix behavior. Synced from CyberDrain/CIPP@7a37d19
1 parent a0b4405 commit 6c40e9b

1 file changed

Lines changed: 12 additions & 6 deletions

File tree

Modules/CIPPHTTP/Public/Entrypoints/HTTP Functions/Tenant/Conditional/Invoke-ExecCAExclusion.ps1

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,17 @@ function Invoke-ExecCAExclusion {
3535
throw "Policy with ID $PolicyId not found in tenant $TenantFilter."
3636
}
3737

38-
$VacationGroupName = "Vacation Exclusion - $($Policy.displayName)"
39-
$escapedGroupName = $VacationGroupName -replace "'", "''"
40-
$groupFilter = "displayName eq '$escapedGroupName' and mailEnabled eq false and securityEnabled eq true"
41-
$encodedGroupFilter = [System.Uri]::EscapeDataString($groupFilter)
42-
$VacationGroups = @(New-GraphGetRequest -uri "https://graph.microsoft.com/beta/groups?`$select=id,displayName&`$filter=$encodedGroupFilter" -tenantid $TenantFilter)
38+
$GroupNamePrefix = 'Vacation Exclusion - '
39+
$VacationGroupName = "$GroupNamePrefix$($Policy.displayName)"
40+
if ($VacationGroupName.Length -gt 120) {
41+
$PolicyIdSuffix = " [$($Policy.id.Substring(0, 8))]"
42+
$MaxNameLength = 120 - $GroupNamePrefix.Length - $PolicyIdSuffix.Length
43+
$VacationGroupName = '{0}{1}{2}' -f $GroupNamePrefix, $Policy.displayName.Substring(0, $MaxNameLength).TrimEnd(), $PolicyIdSuffix
44+
}
45+
46+
$EscapedGroupName = $VacationGroupName -replace "'", "''"
47+
$GroupFilter = [System.Uri]::EscapeDataString("displayName eq '$EscapedGroupName' and mailEnabled eq false and securityEnabled eq true")
48+
$VacationGroups = @(New-GraphGetRequest -uri "https://graph.microsoft.com/beta/groups?`$select=id,displayName&`$count=true&`$filter=$GroupFilter" -tenantid $TenantFilter -ComplexFilter)
4349

4450
$DuplicateGroupWarning = $null
4551
if ($VacationGroups.Count -eq 0) {
@@ -64,7 +70,7 @@ function Invoke-ExecCAExclusion {
6470
}
6571

6672
if ($Policy.conditions.users.excludeGroups -notcontains $GroupId) {
67-
Set-CIPPCAExclusion -TenantFilter $TenantFilter -ExclusionType 'Add' -PolicyId $PolicyId -Groups @{ value = @($GroupId); addedFields = @{ displayName = @("Vacation Exclusion - $($Policy.displayName)") } } -Headers $Headers
73+
Set-CIPPCAExclusion -TenantFilter $TenantFilter -ExclusionType 'Add' -PolicyId $PolicyId -Groups @{ value = @($GroupId); addedFields = @{ displayName = @($VacationGroupName) } } -Headers $Headers
6874
}
6975

7076
$PolicyName = $Policy.displayName

0 commit comments

Comments
 (0)