|
| 1 | +--- |
| 2 | +title: Enable accidental deletions prevention in Application Provisioning in Azure Active Directory |
| 3 | +description: Enable accidental deletions prevention in Application Provisioning in Azure Active Directory. |
| 4 | +services: active-directory |
| 5 | +author: kenwith |
| 6 | +manager: mtillman |
| 7 | +ms.service: active-directory |
| 8 | +ms.subservice: app-provisioning |
| 9 | +ms.topic: how-to |
| 10 | +ms.workload: identity |
| 11 | +ms.date: 09/27/2021 |
| 12 | +ms.author: kenwith |
| 13 | +ms.reviewer: arvinh |
| 14 | +--- |
| 15 | + |
| 16 | +# Enable accidental deletions prevention in the Azure AD provisioning service (Preview) |
| 17 | + |
| 18 | +The Azure AD provisioning service includes a feature to help avoid accidental deletions. This feature ensures that users are not disabled or deleted in an application unexpectedly. |
| 19 | + |
| 20 | +The feature lets you specify a deletion threshold, above which an admin |
| 21 | +needs to explicitly choose to allow the deletions to be processed. |
| 22 | + |
| 23 | +> [!NOTE] |
| 24 | +> Accidental deletions are not supported for our Workday / SuccessFactors integrations. It is also not supported for changes in scoping (e.g. changing a scoping filter or changing from "sync all users and groups" to "sync assigned users and groups". Until the accidental deletions prevention feature is fully released, you will need to access the Azure portal using this URL: https://portal.azure.com/?Microsoft_AAD_IAM_userProvisioningDeleteThreshold=true |
| 25 | +
|
| 26 | + |
| 27 | +## Configure accidental deletion prevention |
| 28 | +To enable accidental deletion prevention: |
| 29 | +1. In the Azure portal, select **Azure Active Directory**. |
| 30 | +2. Select **Enterprise applications** and then select your app. |
| 31 | +3. Select **Provisioning** and then on the provisioning page select **Edit provisioning**. |
| 32 | +4. Under **Settings**, select the **Prevent accidental deletions** checkbox and specify a deletion |
| 33 | +threshold. Also, be sure the notification email address is completed. If the deletion threshold his met and email will be sent. |
| 34 | +5. Select **Save**, to save the changes. |
| 35 | + |
| 36 | +When the deletion threshold is met, the job will go into quarantine and a notification email will be sent. The quarantined job can then be allowed or rejected. To learn more about quarantine behavior, see [Application provisioning in quarantine status](application-provisioning-quarantine-status.md). |
| 37 | + |
| 38 | +## Known limitations |
| 39 | +There are two key limitations to be aware of and are actively working to address: |
| 40 | +- HR-driven provisioning from Workday and SuccessFactors do not support the accidental deletions feature. |
| 41 | +- Changes to your provisioning configuration (e.g. changing scoping) is not supported by the accidental deletions feature. |
| 42 | + |
| 43 | +## Recovering from an accidental deletion |
| 44 | +If you encounter an accidental deletion you will see it on the provisioning status page. It will say **Provisioning has been quarantined. See quarantine details for more information.**. |
| 45 | + |
| 46 | +You can click either **Allow deletes** or **View provisioning logs**. |
| 47 | + |
| 48 | +### Allowing deletions |
| 49 | + |
| 50 | +The **Allow deletes** action will delete the objects that triggered the accidental delete threshold. Use the following procedure to accept the deletes. |
| 51 | + |
| 52 | +1. Select **Allow deletes**. |
| 53 | +2. Click **Yes** on the confirmation to allow the deletions. |
| 54 | +3. You will see confirmation that the deletions were accepted and the status will return to healthy with the next cycle. |
| 55 | + |
| 56 | +### Rejecting deletions |
| 57 | + |
| 58 | +If you do not want to allow the deletions, you need to do the following: |
| 59 | +- Investigate the source of the deletions. You can use the provisioning logs for details. |
| 60 | +- Prevent the deletion by assigning the user / group to the app again, restoring the user / group, or updating your provisioning configuration. |
| 61 | +- Once you've made the necessary changes to prevent the user / group from being deleted, restart provisioning. Please do not restart provisioning until you've made the necessary changes to prevent the users / groups from being deleted. |
| 62 | + |
| 63 | + |
| 64 | +### Test deletion prevention |
| 65 | +You can test the feature by triggering disable / deletion events by setting the threshold to a low number, for example 3, and then changing scoping filters, un-assigning users, and deleting users from the directory (see common scenarios in next section). |
| 66 | + |
| 67 | +Let the provisioning job run (20 – 40 mins) and navigate back to the provisioning page. You will see the provisioning job in quarantine and can choose to allow the deletions or review the provisioning logs to understand why the deletions occurred. |
| 68 | + |
| 69 | +## Common de-provisioning scenarios to test |
| 70 | +- Delete a user / put them into the recycle bin. |
| 71 | +- Block sign in for a user. |
| 72 | +- Unassign a user or group from the application. |
| 73 | +- Remove a user from a group that’s providing them access to the app. |
| 74 | + |
| 75 | +To learn more about de-provisioning scenarios, see [How Application Provisioning Works](how-provisioning-works.md#de-provisioning). |
| 76 | + |
| 77 | +## Frequently Asked Questions |
| 78 | + |
| 79 | +### What scenarios count toward the deletion threshold? |
| 80 | +When a user is set to be removed from the target application, it will be counted against the |
| 81 | +deletion threshold. Scenarios that could lead to a user being removed from the target |
| 82 | +application could include: unassigning the user from the application, changing the sync scope |
| 83 | +from “sync all” to “sync assigned” to soft / hard deleting a user in the directory. Groups |
| 84 | +evaluated for deletion count towards the deletion threshold. In addition to deletions, the same functionality also works for disables. |
| 85 | + |
| 86 | +### What is the interval that the deletion threshold is evaluated on? |
| 87 | +It is evaluated each cycle. If the number of deletions does not exceed the threshold during a |
| 88 | +single cycle, the “circuit breaker” won’t be triggered. If multiple cycles are needed to reach a |
| 89 | +steady state, the deletion threshold will be evaluated per cycle. |
| 90 | + |
| 91 | +### How are these deletion events logged? |
| 92 | +You can find users that should be disabled / deleted but haven’t due to the deletion threshold. |
| 93 | +Navigation to **Provisioning logs** and then filter **Action** with *StagedAction* or *StagedDelete*. |
| 94 | + |
| 95 | + |
| 96 | +## Next steps |
| 97 | + |
| 98 | +- [How application provisioning works](how-provisioning-works.md) |
| 99 | +- [Plan an application provisioning deployment](plan-auto-user-provisioning.md) |
0 commit comments