Skip to content

Commit 5568a7b

Browse files
authored
Merge pull request #1684 from KelvinTegelaar/dev
Dev to hotfix
2 parents ab46161 + 813dc3d commit 5568a7b

File tree

5 files changed

+57
-10
lines changed

5 files changed

+57
-10
lines changed

Modules/CIPPCore/Public/Add-CIPPScheduledTask.ps1

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,8 @@ function Add-CIPPScheduledTask {
221221
$Parameters.'$select' = $task.Trigger.WatchedAttributes | ForEach-Object { $_.value ?? $_ } -join ','
222222
}
223223
if ($task.Trigger.ResourceFilter) {
224-
$Parameters.'$filter' = "id eq '" + $task.Trigger.ResourceFilter | ForEach-Object { $_.value ?? $_ } -join "' or id eq '"
224+
$ResourceFilterValues = $task.Trigger.ResourceFilter | ForEach-Object { $_.value ?? $_ }
225+
$Parameters.'$filter' = "id eq '" + ($ResourceFilterValues -join "' or id eq '") + "'"
225226
}
226227
$Resource = $task.Trigger.DeltaResource.value ?? $task.Trigger.DeltaResource
227228

Modules/CIPPCore/Public/Clear-CIPPImmutableId.ps1

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,17 @@ function Clear-CIPPImmutableId {
88
)
99

1010
try {
11+
try {
12+
$User = New-GraphGetRequest -uri "https://graph.microsoft.com/beta/users/$UserID" -tenantid $TenantFilter -ErrorAction SilentlyContinue
13+
} catch {
14+
$DeletedUser = New-GraphGetRequest -uri "https://graph.microsoft.com/beta/directory/deletedItems/$UserID" -tenantid $TenantFilter
15+
if ($DeletedUser.id) {
16+
# Restore deleted user object
17+
$null = New-GraphPostRequest -uri "https://graph.microsoft.com/beta/directory/deletedItems/$UserID/restore" -tenantid $TenantFilter -type POST
18+
Write-LogMessage -headers $Headers -API $APIName -message "Restored deleted user $UserID to clear immutable ID" -sev Info -tenant $TenantFilter
19+
}
20+
}
21+
1122
$Body = [pscustomobject]@{ onPremisesImmutableId = $null }
1223
$Body = ConvertTo-Json -InputObject $Body -Depth 5 -Compress
1324
$null = New-GraphPostRequest -uri "https://graph.microsoft.com/beta/users/$UserID" -tenantid $TenantFilter -type PATCH -body $Body

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/CIPP/Settings/Invoke-ExecTenantGroup.ps1

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ function Invoke-ExecTenantGroup {
3535
if ($groupDescription) {
3636
$GroupEntity.Description = $groupDescription
3737
}
38-
$GroupEntity.GroupType = $groupType
38+
$GroupEntity | Add-Member -NotePropertyName 'GroupType' -NotePropertyValue $groupType -Force
3939
if ($groupType -eq 'dynamic' -and $dynamicRules) {
40-
$GroupEntity.DynamicRules = "$($dynamicRules | ConvertTo-Json -depth 100 -Compress)"
40+
$GroupEntity.DynamicRules = "$($dynamicRules | ConvertTo-Json -Depth 100 -Compress)"
4141
$GroupEntity | Add-Member -NotePropertyName 'RuleLogic' -NotePropertyValue $ruleLogic -Force
4242
} else {
4343
$GroupEntity | Add-Member -NotePropertyName 'RuleLogic' -NotePropertyValue $null -Force
@@ -52,7 +52,7 @@ function Invoke-ExecTenantGroup {
5252
GroupType = $groupType
5353
}
5454
if ($groupType -eq 'dynamic' -and $dynamicRules) {
55-
$GroupEntity.DynamicRules = "$($dynamicRules | ConvertTo-Json -depth 100 -Compress)"
55+
$GroupEntity.DynamicRules = "$($dynamicRules | ConvertTo-Json -Depth 100 -Compress)"
5656
$GroupEntity.RuleLogic = $ruleLogic
5757
}
5858
Add-CIPPAzDataTableEntity @Table -Entity $GroupEntity -Force

Modules/CIPPCore/Public/Entrypoints/HTTP Functions/Identity/Administration/Users/Invoke-CIPPOffboardingJob.ps1

Lines changed: 40 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ function Invoke-CIPPOffboardingJob {
1111
if ($Options -is [string]) {
1212
$Options = $Options | ConvertFrom-Json
1313
}
14-
$User = New-GraphGetRequest -uri "https://graph.microsoft.com/beta/users/$($Username)?`$select=id,displayName" -tenantid $TenantFilter
14+
$User = New-GraphGetRequest -uri "https://graph.microsoft.com/beta/users/$($Username)?`$select=id,displayName,onPremisesSyncEnabled,onPremisesImmutableId" -tenantid $TenantFilter
1515
$UserID = $User.id
1616
$DisplayName = $User.displayName
1717
Write-Host "Running offboarding job for $Username with options: $($Options | ConvertTo-Json -Depth 10)"
@@ -182,10 +182,45 @@ function Invoke-CIPPOffboardingJob {
182182
}
183183
}
184184
{ $_.ClearImmutableId -eq $true } {
185-
try {
186-
Clear-CIPPImmutableID -UserID $userid -TenantFilter $TenantFilter -Headers $Headers -APIName $APIName
187-
} catch {
188-
$_.Exception.Message
185+
if ($User.onPremisesSyncEnabled -ne $true -and ![string]::IsNullOrEmpty($User.onPremisesImmutableId)) {
186+
Write-LogMessage -Message "User $Username has an ImmutableID set but is not synced from on-premises. Proceeding to clear the ImmutableID." -TenantFilter $TenantFilter -Severity 'Warning' -APIName $APIName -Headers $Headers
187+
try {
188+
Clear-CIPPImmutableID -UserID $userid -TenantFilter $TenantFilter -Headers $Headers -APIName $APIName
189+
} catch {
190+
$_.Exception.Message
191+
}
192+
} elseif ($User.onPremisesSyncEnabled -eq $true -and ![string]::IsNullOrEmpty($User.onPremisesImmutableId)) {
193+
Write-LogMessage -Message "User $Username is synced from on-premises. Scheduling an Immutable ID clear for when the user account has been soft deleted." -TenantFilter $TenantFilter -Severity 'Error' -APIName $APIName -Headers $Headers
194+
195+
$ScheduledTask = @{
196+
TenantFilter = $TenantFilter
197+
Name = "Clear Immutable ID: $Username"
198+
Command = @{
199+
value = 'Clear-CIPPImmutableID'
200+
}
201+
Parameters = [pscustomobject]@{
202+
userid = $userid
203+
APIName = $APIName
204+
Headers = $Headers
205+
}
206+
Trigger = @{
207+
Type = 'DeltaQuery'
208+
DeltaResource = 'users'
209+
ResourceFilter = @($UserID)
210+
EventType = 'deleted'
211+
UseConditions = $false
212+
ExecutePerResource = $true
213+
ExecutionMode = 'once'
214+
}
215+
ScheduledTime = [int64](([datetime]::UtcNow).AddMinutes(5) - (Get-Date '1/1/1970')).TotalSeconds
216+
Recurrence = '15m'
217+
PostExecution = @{
218+
Webhook = $false
219+
Email = $false
220+
PSA = $false
221+
}
222+
}
223+
Add-CIPPScheduledTask -Task $ScheduledTask -hidden $false
189224
}
190225
}
191226
}

version_latest.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
8.6.0
1+
8.6.1

0 commit comments

Comments
 (0)