Skip to content

Commit 3f207b3

Browse files
committed
use bulk requests endpoint
1 parent 6a9a786 commit 3f207b3

File tree

1 file changed

+27
-20
lines changed

1 file changed

+27
-20
lines changed

Modules/CIPPCore/Public/Remove-CIPPUserTeamsPhoneDIDs.ps1

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -39,37 +39,44 @@ function Remove-CIPPUserTeamsPhoneDIDs {
3939

4040
if (-not $UserDIDs -or $UserDIDs.Count -eq 0) {
4141
$Result = "No Teams Phone DIDs found assigned to user: '$Username' - '$UserID'"
42-
Write-LogMessage -headers $Headers -API $APIName -message $Result -Sev 'Info' -tenant $TenantFilter
4342
$Results.Add($Result)
4443
return $Results.ToArray()
4544
}
4645

47-
Write-LogMessage -headers $Headers -API $APIName -message "Found $($UserDIDs.Count) DIDs assigned to user: '$Username'" -Sev 'Info' -tenant $TenantFilter
48-
49-
# Process each DID assigned to the user
50-
foreach ($DID in $UserDIDs) {
51-
try {
52-
$PhoneNumber = $DID.telephoneNumber
53-
$NumberType = $DID.numberType
46+
# Prepare bulk requests for all DIDs
47+
$RemoveRequests = foreach ($DID in $UserDIDs) {
48+
@{
49+
id = $DID.telephoneNumber
50+
method = 'POST'
51+
url = "admin/teams/telephoneNumberManagement/numberAssignments/unassignNumber"
52+
body = @{
53+
telephoneNumber = $DID.telephoneNumber
54+
numberType = $DID.numberType
55+
}
56+
}
57+
}
5458

55-
# Prepare the request body for unassigning the number
56-
$RequestBody = @{
57-
telephoneNumber = $PhoneNumber
58-
numberType = $NumberType
59-
} | ConvertTo-Json -Depth 3
59+
# Execute bulk request
60+
$RemoveResults = New-GraphBulkRequest -tenantid $TenantFilter -requests @($RemoveRequests)
6061

61-
# Make the API call to unassign the number
62-
$null = New-GraphPostRequest -uri "https://graph.microsoft.com/beta/admin/teams/telephoneNumberManagement/numberAssignments/unassignNumber" -type POST -body $RequestBody -contentType 'application/json' -tenant $TenantFilter
62+
# Process results
63+
$RemoveResults | ForEach-Object {
64+
$PhoneNumber = $_.id
6365

66+
if ($_.status -eq 204) {
6467
$SuccessResult = "Successfully removed Teams Phone DID: '$PhoneNumber' from: '$Username' - '$UserID'"
6568
Write-LogMessage -headers $Headers -API $APIName -message $SuccessResult -Sev 'Info' -tenant $TenantFilter
6669
$Results.Add($SuccessResult)
6770
$SuccessCount++
68-
69-
} catch {
70-
$ErrorMessage = Get-CippException -Exception $_
71-
$ErrorResult = "Failed to remove Teams Phone DID: '$($DID.telephoneNumber)' from: '$Username' - '$UserID'. Error: $($ErrorMessage.NormalizedError)"
72-
Write-LogMessage -headers $Headers -API $APIName -message $ErrorResult -Sev 'Error' -tenant $TenantFilter -LogData $ErrorMessage
71+
} else {
72+
$ErrorMessage = if ($_.body.error.message) {
73+
$_.body.error.message
74+
} else {
75+
"HTTP Status: $($_.status)"
76+
}
77+
78+
$ErrorResult = "Failed to remove Teams Phone DID: '$PhoneNumber' from: '$Username' - '$UserID'. Error: $ErrorMessage"
79+
Write-LogMessage -headers $Headers -API $APIName -message $ErrorResult -Sev 'Error' -tenant $TenantFilter
7380
$Results.Add($ErrorResult)
7481
$ErrorCount++
7582
}

0 commit comments

Comments
 (0)