Automatización de las tareas de retirada de empleados después de su último día de trabajo mediante las API de flujos de trabajo de ciclo de vida

En este tutorial se proporcionan instrucciones paso a paso para configurar tareas de eliminación para los empleados después de su último día de trabajo mediante las API de flujos de trabajo de ciclo de vida. En este escenario, la terminación del empleado está programada, posiblemente incluyendo un período de aviso. Consulte Complete employee offboarding tasks in real-time on their last day of work using Lifecycle Workflows API for an unscheduled, real-time termination scenario (Completar tareas de eliminación de empleados en tiempo real en su último día de trabajo mediante las API de flujos de trabajo de ciclo de vida ) para ver un escenario de terminación en tiempo real no programado.

En este tutorial, aprenderá a:

  • Configure un flujo de trabajo de ciclo de vida para comprobar si hay empleados en un departamento específico, días después de su último día de trabajo.
  • Configure una tarea para ejecutar las siguientes tareas en secuencia:
    • Eliminación de todas las licencias para el usuario
    • Eliminación del usuario de todos los equipos
    • Eliminar cuenta de usuario
  • Supervise el estado del flujo de trabajo y sus tareas asociadas.

Requisitos previos

Para completar este tutorial, necesita los siguientes recursos y privilegios:

  • Esta característica requiere licencias de Gobierno de Microsoft Entra ID. Para encontrar la licencia adecuada para sus requisitos, consulte Gobierno de Microsoft Entra ID aspectos básicos de las licencias.
  • Inicie sesión en un cliente de API, como Graph Explorer, para llamar a Microsoft Graph con una cuenta que tenga al menos el rol administrador del ciclo de vida Microsoft Entra.
  • Concédete el permiso delegado LifecycleWorkflows.ReadWrite.All de Microsoft Graph.
  • Cree una cuenta de usuario de prueba que use para representar a un empleado que abandona la organización. Esta cuenta de usuario de prueba se elimina cuando se ejecuta el flujo de trabajo. Asigne licencias y pertenencias a Teams a la cuenta de usuario de prueba.

Creación de un flujo de trabajo "leaver"

Solicitud

La siguiente solicitud crea un flujo de trabajo de retirada con la siguiente configuración:

  • Se puede ejecutar a petición, pero no según lo programado. Este paso nos permite validar el flujo de trabajo mediante la cuenta del usuario de prueba. El flujo de trabajo se actualiza para ejecutarse según la programación más adelante en este tutorial.
  • El flujo de trabajo se ejecuta siete días después del employeeLeaveDateTime del empleado y si se encuentra en el departamento de "Marketing".
  • Se habilitan tres tareas de flujo de trabajo para ejecutarse en secuencia: el usuario no tiene asignadas todas las licencias, después se quita de todos los equipos y, a continuación, se elimina su cuenta de usuario.
POST https://graph.microsoft.com/v1.0/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": []
        }
    ]
}

Respuesta

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

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$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": "2024-03-03T18:29:10.8412536Z",
    "createdDateTime": "2024-03-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
        }
    }
}

Ejecución del flujo de trabajo

Dado que el flujo de trabajo no está programado para ejecutarse, debe ejecutarse manualmente a petición. En la solicitud siguiente, el usuario que es el destino del flujo de trabajo se identifica mediante el identificador df744d9e-2148-4922-88a8-633896c1e929.

Cuando se ejecuta un flujo de trabajo a petición, las tareas se ejecutan independientemente de si el estado del usuario coincide con el ámbito y las condiciones de ejecución del desencadenador. Por lo tanto, incluso si el usuario no está en el departamento "Marketing" o su employeeLeaveDateTime está establecido nullen , este comando sigue ejecutando las tareas definidas en el flujo de trabajo para el usuario.

La solicitud devuelve un código de respuesta 204 No Content.

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

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

Comprobación de las tareas y el estado del flujo de trabajo

En cualquier momento, puede supervisar el estado de los flujos de trabajo y las tareas en tres niveles.

  • Supervisión de tareas en el nivel de usuario.
  • Supervise el resumen agregado de alto nivel de los resultados de nivel de usuario para un flujo de trabajo, dentro de un período especificado.
  • Recupere el registro detallado de todas las tareas que se ejecutaron para un usuario específico en el flujo de trabajo.

Opción 1: Supervisar las tareas de un flujo de trabajo en el nivel de usuario

Solicitud

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

Respuesta

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

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

Opción 2: Obtener el resumen agregado de alto nivel de los resultados de nivel de usuario para un flujo de trabajo, dentro de un período especificado

Solicitud

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

Respuesta

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

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

Opción 3: Recuperar el registro detallado de todas las tareas que se ejecutaron para un usuario específico en el flujo de trabajo

Solicitud

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

Respuesta

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

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#identityGovernance/lifecycleWorkflows/workflows('15239232-66ed-445b-8292-2f5bbb2eb833')/userProcessingResults('40efc576-840f-47d0-ab95-5abca800f8a2')/taskProcessingResults",
    "value": [
        {
            "completedDateTime": "2024-03-03T18:30:50.483365Z",
            "createdDateTime": "2024-03-03T18:30:47.6125438Z",
            "id": "78650318-7238-4e7e-852f-2c36cbeff340",
            "processingStatus": "completed",
            "startedDateTime": "2024-03-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": "2024-03-03T18:30:57.6034021Z",
            "createdDateTime": "2024-03-03T18:30:47.8824313Z",
            "id": "3d2e459d-5614-42e4-952b-0e917b5f6646",
            "processingStatus": "completed",
            "startedDateTime": "2024-03-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": "2024-03-03T18:31:00.0894515Z",
            "createdDateTime": "2024-03-03T18:30:48.0004721Z",
            "id": "03359fa6-c63c-4573-92c2-4c9518ca98aa",
            "processingStatus": "completed",
            "startedDateTime": "2024-03-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": []
            }
        }
    ]
}

[Opcional] Programar el flujo de trabajo para que se ejecute automáticamente

Después de ejecutar el flujo de trabajo a petición y comprobar que todo funciona bien, es posible que desee habilitar el flujo de trabajo para que se pueda ejecutar automáticamente según una programación definida por el inquilino. Ejecute la siguiente solicitud.

La solicitud devuelve un código de respuesta 204 No Content. Cuando se programa un flujo de trabajo, el motor de flujos de trabajo de ciclo de vida comprueba cada tres horas los usuarios en la condición de ejecución asociada y ejecuta las tareas configuradas para esos usuarios. Puede personalizar esta periodicidad entre una hora y 24 horas.

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

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