Skip to content

Commit 0806d3a

Browse files
committed
offboarding, schedule immutable id
add restoring user for immutable id clear
1 parent e5767b8 commit 0806d3a

File tree

2 files changed

+51
-5
lines changed

2 files changed

+51
-5
lines changed

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/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
}

0 commit comments

Comments
 (0)