Reputation: 38407
Removing an AppRole from an Application’s manifest produces a 400 Bad Request with the error
Property value cannot be deleted unless it is disabled first.
When I set the isEnabled property to false and then hit save, I get a successful saven with a 200 OK looking at the browsers developer tools:
After reloading the Edit manifest screen the isEnabled
property is still true
and if you look at the PUT response in the browsers developer tools, it's coming back as true
there too.
How can I remove an appRole without having to delete and recreate the entire application?
I've raised the following bug.
Upvotes: 15
Views: 12796
Reputation: 1
Navigate to your Application
Go to App Roles
Click on the app role display name
Untick the checkbox to disable the Role
Go back to the manifest and make changes to the appRoles
section as you need
Save and it should be updated
Upvotes: 0
Reputation: 1051
You cannot delete the assigned roles which are enabled, you first have to set the flag isEnable to false and save the manifest for the roles which you want to delete like this -->"isEnabled": false
in the manifest and now try to delete the whole appRoles part.
This is a two-step process but works.
Upvotes: 0
Reputation: 2041
I have had the same error message Property value cannot be deleted unless it is disabled first.
because I have created the scope on one page page and tried to add it manually in the Manifest on another web page. Little I knew the manifest was updated automatically and I just needed to reload it.
Upvotes: 0
Reputation: 101
To Delete the Application Role:
isEnabled
to false.Upvotes: 10
Reputation: 11347
This bug is fixed now. All you have to do is set isEnabled
to false and save. Then you can delete the role and save again. A Work-around is not necessary.
Upvotes: 21
Reputation: 14326
Until this gets fixed, there two options to work around this issue:
Using Azure AD PowerShell, you can disable and then remove the app role. Here's a sample script that would achieve this:
$appId = "83d7d56d-6e64-4791-b8e8-9a8da8dd957e"
$appRoleValue = "app-role-value" # i.e. the scope
Connect-AzureAD
# Disable the AppRole
$app = Get-AzureADApplication -Filter "appId eq '$appId'"
($app.AppRoles | Where-Object { $_.Value -eq $appRoleValue }).IsEnabled = $false
Set-AzureADApplication -ObjectId $app.ObjectId -AppRoles $app.AppRoles
# Remove the AppRole
$toRemove = $app.AppRoles | Where-Object { $_.Value -eq $appRoleValue }
$app.AppRoles.Remove($toRemove) | Out-Null
Set-AzureADApplication -ObjectId $app.ObjectId -AppRoles $app.AppRoles
An alternative option is to user the Azure AD Graph Explorer and issue two PATCH
requests on the Application object. The first PATCH
request should set the app role's isEnabled
attribute to false
. The second PATCH
request can then remove the app role (i.e. include all existing app roles except the disabled one).
Upvotes: 3
Reputation: 27528
It seems a bug in new portal . The save operation doesn't save isEnabled
to false on server side . Any feedback , you could post to here .
Currently , you could use Azure AD classic portal to modify the app roles in manifest(download the manifest and then upload manifest that changed) . Delete app roles in classic portal works fine in my environment . Please let me know if it helps.
Upvotes: 3