Automatiser les tâches de désintégrage des employés après leur dernier jour de travail à l’aide des API de workflows de cycle de vie

Ce tutoriel fournit des instructions pas à pas pour configurer des tâches de désintéglage pour les employés après leur dernier jour de travail à l’aide des API de flux de vie dans Microsoft Graph.

Ce scénario post-dés-intégration exécutera un workflow planifié et accomplira les tâches suivantes :

  1. Supprimer toutes les licences pour l’utilisateur
  2. Supprimer un utilisateur de toutes les équipes
  3. Supprimer le compte d’utilisateur

Prerequisites

Pour suivre ce didacticiel, vous avez besoin des ressources et privilèges suivants :

  • Le locataire que vous souhaitez utiliser pour afficher un aperçu de la fonctionnalité Workflows de cycle de vie avec une licence Azure AD Premium P2 activée.
  • Connectez-vous à un client API tel que Graph Explorer, Postman ou créez votre propre application cliente pour appeler Microsoft Graph. Pour appeler les API Microsoft Graph dans ce tutoriel, vous devez utiliser un compte avec le rôle Administrateur de cycle de vie ou Administrateur général Azure AD.
  • Accordez-vous l’autorisation déléguée LifecycleWorkflows.ReadWrite.All suivante.
  • Créez un compte d’utilisateur de test que vous utiliserez pour représenter un employé quittant votre organization. Ce compte d’utilisateur de test est supprimé lors de l’exécution du workflow. Attribuez des licences et des appartenances Teams au compte d’utilisateur de test.

Créer un workflow « leaver »

Demande

La requête suivante crée un workflow de désintégrage avec les paramètres suivants :

  • Il peut actuellement être exécuté à la demande, mais pas selon la planification. Cette étape nous permet de valider le workflow à l’aide du compte de l’utilisateur de test. Le flux de travail sera mis à jour pour s’exécuter selon la planification plus loin dans ce tutoriel.
  • Le flux de travail s’exécute sept jours après le employeeLeaveDateTime de l’employé, et s’il se trouve dans le service « Marketing ».
  • Trois tâches de flux de travail sont activées pour s’exécuter dans l’ordre : l’utilisateur est désattribué toutes les licences, puis supprimé de toutes les équipes, puis son compte d’utilisateur est supprimé.
POST https://graph.microsoft.com/beta/identityGovernance/LifecycleWorkflows/workflows
Content-type: application/json

{
    "category": "leaver",
    "displayName": "Post-Offboarding of an employee",
    "description": "Configure offboarding tasks for employees after their last day of work",
    "isEnabled": true,
    "isSchedulingEnabled": false,
    "executionConditions": {
        "@odata.type": "#microsoft.graph.identityGovernance.triggerAndScopeBasedConditions",
        "scope": {
            "@odata.type": "#microsoft.graph.identityGovernance.ruleBasedSubjectSet",
            "rule": "department eq 'Marketing'"
        },
        "trigger": {
            "@odata.type": "#microsoft.graph.identityGovernance.timeBasedAttributeTrigger",
            "timeBasedAttribute": "employeeLeaveDateTime",
            "offsetInDays": 7
        }
    },
    "tasks": [
        {
            "category": "leaver",
            "continueOnError": false,
            "description": "Remove all licenses assigned to the user",
            "displayName": "Remove all licenses for user",
            "executionSequence": 1,
            "isEnabled": true,
            "taskDefinitionId": "8fa97d28-3e52-4985-b3a9-a1126f9b8b4e",
            "arguments": []
        },
        {
            "category": "leaver",
            "continueOnError": false,
            "description": "Remove user from all Teams memberships",
            "displayName": "Remove user from all Teams",
            "executionSequence": 2,
            "isEnabled": true,
            "taskDefinitionId": "81f7b200-2816-4b3b-8c5d-dc556f07b024",
            "arguments": []
        },
        {
            "category": "leaver",
            "continueOnError": false,
            "description": "Delete user account in Azure AD",
            "displayName": "Delete User Account",
            "executionSequence": 3,
            "isEnabled": true,
            "taskDefinitionId": "8d18588d-9ad3-4c0f-99d0-ec215f0e3dff",
            "arguments": []
        }
    ]
}

Réponse

HTTP/1.1 201 Created
Content-Type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#identityGovernance/lifecycleWorkflows/workflows/$entity",
    "category": "leaver",
    "description": "Configure offboarding tasks for employees after their last day of work",
    "displayName": "Post-Offboarding of an employee",
    "lastModifiedDateTime": "2022-10-03T18:29:10.8412536Z",
    "createdDateTime": "2022-10-03T18:29:10.8412352Z",
    "deletedDateTime": null,
    "id": "15239232-66ed-445b-8292-2f5bbb2eb833",
    "isEnabled": true,
    "isSchedulingEnabled": false,
    "nextScheduleRunDateTime": null,
    "version": 1,
    "executionConditions": {
        "@odata.type": "#microsoft.graph.identityGovernance.triggerAndScopeBasedConditions",
        "scope": {
            "@odata.type": "#microsoft.graph.identityGovernance.ruleBasedSubjectSet",
            "rule": "department eq 'Marketing'"
        },
        "trigger": {
            "@odata.type": "#microsoft.graph.identityGovernance.timeBasedAttributeTrigger",
            "timeBasedAttribute": "employeeLeaveDateTime",
            "offsetInDays": 7
        }
    }
}

Exécuter le flux de travail

Demande

Étant donné que l’exécution du workflow n’a pas été planifiée, il doit être exécuté manuellement, à la demande. Dans la requête suivante, l’utilisateur pour lequel le workflow s’exécutera est identifié par l’ID df744d9e-2148-4922-88a8-633896c1e929.

Lorsque vous avez configuré des conditions d’exécution pour le flux de travail, cette demande d’exécution du workflow à la demande ignore les conditions d’exécution. Par exemple, si l’utilisateur identifié par l’ID df744d9e-2148-4922-88a8-633896c1e929 ne se trouve pas dans le service « Marketing » ou si son employeeLeaveDateTime est défini sur null, cette commande exécute toujours les tâches qui ont été définies dans le flux de travail, pour l’utilisateur.

POST https://graph.microsoft.com/beta/identityGovernance/LifecycleWorkflows/workflows/15239232-66ed-445b-8292-2f5bbb2eb833/activate

{
    "subjects": [
        {
            "id": "df744d9e-2148-4922-88a8-633896c1e929"
        }
    ]
}

Réponse

HTTP/1.1 204 No Content

Vérifier les tâches et les status de flux de travail

À tout moment, vous pouvez surveiller la status des workflows et des tâches à trois niveaux.

Demande

La requête suivante récupère le résumé des tâches exécutées au niveau de l’utilisateur.

GET https://graph.microsoft.com/beta/identityGovernance/LifecycleWorkflows/workflows/15239232-66ed-445b-8292-2f5bbb2eb833/userProcessingResults

Réponse

HTTP/1.1 200 OK
Content-Type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#identityGovernance/lifecycleWorkflows/workflows('15239232-66ed-445b-8292-2f5bbb2eb833')/userProcessingResults",
    "value": [
        {
            "id": "40efc576-840f-47d0-ab95-5abca800f8a2",
            "completedDateTime": "2022-10-03T18:31:00.3581066Z",
            "failedTasksCount": 0,
            "processingStatus": "completed",
            "scheduledDateTime": "2022-10-03T18:30:43.154495Z",
            "startedDateTime": "2022-10-03T18:30:46.9357178Z",
            "totalTasksCount": 3,
            "totalUnprocessedTasksCount": 0,
            "workflowExecutionType": "onDemand",
            "workflowVersion": 1,
            "subject": {
                "id": "df744d9e-2148-4922-88a8-633896c1e929"
            }
        }
    ]
}

Demande

Vous pouvez demander le résumé global des résultats de niveau utilisateur pour un workflow, dans une période spécifiée.

GET https://graph.microsoft.com/beta/identityGovernance/LifecycleWorkflows/workflows/15239232-66ed-445b-8292-2f5bbb2eb833/userProcessingResults/summary(startDateTime=2022-10-01T00:00:00Z,endDateTime=2022-10-30T00:00:00Z)

Réponse

HTTP/1.1 200 OK
Content-Type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#microsoft.graph.identityGovernance.userSummary",
    "failedTasks": 0,
    "failedUsers": 0,
    "successfulUsers": 1,
    "totalTasks": 3,
    "totalUsers": 1
}

Demande

Vous pouvez également récupérer le journal détaillé de toutes les tâches exécutées pour un utilisateur spécifique dans le workflow.

GET https://graph.microsoft.com/beta/identityGovernance/LifecycleWorkflows/workflows/15239232-66ed-445b-8292-2f5bbb2eb833/userProcessingResults/40efc576-840f-47d0-ab95-5abca800f8a2/taskProcessingResults

Réponse

HTTP/1.1 200 OK
Content-Type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#identityGovernance/lifecycleWorkflows/workflows('15239232-66ed-445b-8292-2f5bbb2eb833')/userProcessingResults('40efc576-840f-47d0-ab95-5abca800f8a2')/taskProcessingResults",
    "value": [
        {
            "completedDateTime": "2022-10-03T18:30:50.483365Z",
            "createdDateTime": "2022-10-03T18:30:47.6125438Z",
            "id": "78650318-7238-4e7e-852f-2c36cbeff340",
            "processingStatus": "completed",
            "startedDateTime": "2022-10-03T18:30:50.0549446Z",
            "failureReason": null,
            "subject": {
                "id": "df744d9e-2148-4922-88a8-633896c1e929"
            },
            "task": {
                "category": "leaver",
                "continueOnError": false,
                "description": "Remove all licenses assigned to the user",
                "displayName": "Remove all licenses for user",
                "executionSequence": 1,
                "id": "f71246b2-269c-4ba6-ab8e-afc1a05114cb",
                "isEnabled": true,
                "taskDefinitionId": "8fa97d28-3e52-4985-b3a9-a1126f9b8b4e",
                "arguments": []
            }
        },
        {
            "completedDateTime": "2022-10-03T18:30:57.6034021Z",
            "createdDateTime": "2022-10-03T18:30:47.8824313Z",
            "id": "3d2e459d-5614-42e4-952b-0e917b5f6646",
            "processingStatus": "completed",
            "startedDateTime": "2022-10-03T18:30:53.6770279Z",
            "failureReason": null,
            "subject": {
                "id": "df744d9e-2148-4922-88a8-633896c1e929"
            },
            "task": {
                "category": "leaver",
                "continueOnError": false,
                "description": "Remove user from all Teams memberships",
                "displayName": "Remove user from all Teams",
                "executionSequence": 2,
                "id": "ed545f03-e8d8-45fb-9cbd-15c937f2a866",
                "isEnabled": true,
                "taskDefinitionId": "81f7b200-2816-4b3b-8c5d-dc556f07b024",
                "arguments": []
            }
        },
        {
            "completedDateTime": "2022-10-03T18:31:00.0894515Z",
            "createdDateTime": "2022-10-03T18:30:48.0004721Z",
            "id": "03359fa6-c63c-4573-92c2-4c9518ca98aa",
            "processingStatus": "completed",
            "startedDateTime": "2022-10-03T18:30:59.6195169Z",
            "failureReason": null,
            "subject": {
                "id": "df744d9e-2148-4922-88a8-633896c1e929"
            },
            "task": {
                "category": "leaver",
                "continueOnError": false,
                "description": "Delete user account in Azure AD",
                "displayName": "Delete User Account",
                "executionSequence": 3,
                "id": "b4cefaa0-6ceb-461d-bbf5-ec69246463fd",
                "isEnabled": true,
                "taskDefinitionId": "8d18588d-9ad3-4c0f-99d0-ec215f0e3dff",
                "arguments": []
            }
        }
    ]
}

[Facultatif] Planifier l’exécution automatique du workflow

Après avoir exécuté votre workflow à la demande et vérifié que tout fonctionne correctement, vous pouvez activer le flux de travail afin qu’il puisse s’exécuter automatiquement selon une planification définie par le locataire. Pour activer la planification du workflow, vous pouvez exécuter la requête suivante.

PATCH https://graph.microsoft.com/beta/identityGovernance/lifecycleWorkflows/workflows/15239232-66ed-445b-8292-2f5bbb2eb833
Content-type: application/json

{
    "isEnabled": true,
    "isSchedulingEnabled": true
}

Lorsqu’un flux de travail est planifié, les workflows de cycle de vie case activée toutes les trois heures pour les utilisateurs dans la condition d’exécution associée et exécutent les tâches configurées pour ces utilisateurs. Vous pouvez personnaliser cette périodicité d’une heure à 24 heures.

Réponse

HTTP/1.1 204 No Content

Voir aussi