Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Support Setting Fields to null] Unable to set BusinessPhones or MobilePhone fields to $null #833

Open
haneef95 opened this issue Aug 31, 2021 · 17 comments

Comments

@haneef95
Copy link

haneef95 commented Aug 31, 2021

Hi,

When trying to set BusinessPhones or MobilePhone values to $null, like so:
Update-MgUser -UserId $MgUser.UserPrincipalName -MobilePhone $null -BusinessPhones $null

It throws an error:
Update-MgUser_UpdateExpanded: Invalid value specified for property 'mobilePhone' of resource 'User'.

I've fixed this for now by using an alternative command:
Invoke-GraphRequest -Method PATCH -Uri "https://graph.microsoft.com/v1.0/Users/$($MgUser.UserPrincipalName)" -Body '{"businessPhones": [],"mobilePhone": null}'

Hope this helps someone else in a similar need and more so, the Update-MgUser cmdlet is fixed.

Thanks,
AB#10944

@ghost ghost added the ToTriage label Aug 31, 2021
@ghost ghost added this to Issues to triage in Graph SDK - Triage Aug 31, 2021
@peombwa peombwa removed this from Issues to triage in Graph SDK - Triage Sep 2, 2021
@peombwa peombwa added this to To do in Graph SDK - Powershell via automation Sep 2, 2021
@peombwa peombwa self-assigned this Sep 2, 2021
@Machsol-Usman
Copy link

Please push this on top of requirement list, $null should be supported as we have in Set-MSOLUser. The workaround needs extra handling and additional calls.

It would be good if an ETA is shared.

@yllekz
Copy link

yllekz commented Jul 22, 2022

This needs to be updated/fixed such that the "OtherMails" attribute can also be set to null.

This module needs to be at parity with MSOnline before it is retired. Please expedite.

@tyteen4a03
Copy link

Any updates to this?

@rui0122
Copy link

rui0122 commented Oct 27, 2022

Invoke-GraphRequest fails on the latest module version 1.14.0. You can use Invoke-MgGraphRequest instead.

Invoke-MgGraphRequest -Method PATCH -Uri "https://graph.microsoft.com/v1.0/uers/ -Body "{ "mobilePhone": null }"

As multiple customers are facing this issue, please fix this asap.

@peombwa
Copy link
Member

peombwa commented Nov 2, 2022

@rui0122, the workaround works well for me in v1.14.0:
image

The issue is with the spelling of users in the -Uri.

@testtesttaro
Copy link

When will this issue be fixed?

@yllekz
Copy link

yllekz commented Feb 20, 2023

While this doesn't excuse the lack of progress on this, This is a decent workaround:

$mguser = get-mguser -userid "person@mydomain.com"
Invoke-GraphRequest -Method PATCH -Uri "https://graph.microsoft.com/v1.0/Users/$($MgUser.UserPrincipalName)" -Body '{"OtherMails": []}'

@testtesttaro
Copy link

@yllekz , Thanks for the workaround guide. However, this workaround requires an extra command to be executed.
It would be great if you could set $null in Update-MgUser like in the MSOL module without leaving this problem.

@yllekz
Copy link

yllekz commented Feb 21, 2023

It's only one command. The first line is just a variable assignment for convenience. You don't have to write it that way if you don't want to.

@peombwa
Copy link
Member

peombwa commented Feb 21, 2023

We currently do not support setting properties to null due to a design limitation with the code generator - Azure/autorest.powershell#961.

As a workaround, please use the Invoke-GraphRequest as suggested above.

@nathankascopgr
Copy link

Unfortunately Invoke-GraphRequest doesn't seem to work to null values either. It appears to be the same through Graph Explorer. Can someone help get this info to the Graph API team?

@peombwa
Copy link
Member

peombwa commented Feb 22, 2023

@nathankascopgr, please open a question at https://developer.microsoft.com/en-us/graph/support to get assistance from the API owner.

@DougChandler
Copy link

Seriously I am shocked that the APIs do not handle nulls, with this and the deleted items call failing to work at all, it calls into question the quality of this module. I wrote my own interface class a couple of year back because of the deleted items thing but this time I am attempting to use the new module, but come on guys, this is basic stuff. Now we have to have a special case for any null (and deleted items), how many more will I find?

@DougChandler
Copy link

This is my workaround, I have a hashtable of values to update... there might be a more efficient way of setting up the hashtables, I've not had time to look yet.

    $nullProperties = @{}
    $notNullProperties = @{}

    # Nulls require special processing, so need to split the values that are null and not null into a separate hashtables
    $properties.GetEnumerator() | foreach {
        if ([string]::IsNullOrEmpty($_.Value)) {
            $nullProperties.add($_.name, $_.value)
        } else {
            $notNullProperties.add($_.name, $_.value)
        }
    }
# (aadUser is a user object from Get-MgUser)
            # Not null properties
            if ($notNullProperties.count -gt 0) {
                if ((Update-MgUser -UserId $aaduser.Id -BodyParameter $notNullProperties -PassThru) -eq $false) {
                    throw "Update user failed"
                }
            }
            # Null properties
            if ($nullProperties.count -gt 0) {
                $response = Invoke-MgGraphRequest -Method PATCH -Uri "v1.0/Users/$($aaduser.id)" -Body $nullProperties -StatusCodeVariable ResponseStatusCode
                if ($responsestatuscode -ne 204) {
                    throw "Clearing user properties failed"
                }
            }

@peombwa peombwa removed their assignment Jun 19, 2023
@peombwa peombwa added this to the v3 milestone Jul 10, 2023
@ddyett ddyett changed the title Unable to set BusinessPhones or MobilePhone fields to $null [Support Setting Fields to null] Unable to set BusinessPhones or MobilePhone fields to $null Jul 19, 2023
@worldsdream
Copy link

We really need this!

@jpawlowski
Copy link

+1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests