Completar tareas de retirada de empleados en tiempo real en 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 completar una terminación de empleados en tiempo real con flujos de trabajo de ciclo de vida mediante Microsoft Graph.

Este escenario posterior a la retirada ejecutará un flujo de trabajo a petición y realizará las siguientes tareas:

  1. Eliminación de todas las licencias para el usuario
  2. Eliminación del usuario de todos los equipos
  3. Eliminar cuenta de usuario

Requisitos previos

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

  • Inquilino que desea usar para obtener una vista previa de la característica Flujos de trabajo de ciclo de vida con una licencia de Azure AD Premium P2 habilitada.
  • Inicie sesión en un cliente de API como Graph Explorer, Postman o cree su propia aplicación cliente para llamar a Microsoft Graph. Para llamar a las API de Microsoft Graph en este tutorial, debe usar una cuenta con el rol Administrador del ciclo de vida o Administrador global de Azure AD.
  • Concédete el siguiente permiso delegado LifecycleWorkflows.ReadWrite.All .
  • Cree una cuenta de usuario de prueba que usará para representar a un empleado que abandona la organización. Esta cuenta de usuario de prueba se eliminará cuando se ejecute 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.
  • El flujo de trabajo no incluye condiciones de ejecución. Las condiciones de ejecución, incluso cuando se definen, se omiten para los flujos de trabajo que se ejecutan a petición.
  • Se habilitan tres tareas de flujo de trabajo para ejecutarse en secuencia: el usuario se quita de todos los grupos, después se quita de todos los equipos y, a continuación, se elimina su cuenta de usuario.
POST https://graph.microsoft.com/beta/identityGovernance/LifecycleWorkflows/workflows
Content-type: application/json

{
    "category": "Leaver",
    "displayName": "Real-time employee termination",
    "description": "Execute real-time termination tasks for employees on their last day of work",
    "isEnabled": true,
    "isSchedulingEnabled": false,
    "executionConditions":{
        "@odata.type":"#microsoft.graph.identityGovernance.onDemandExecutionOnly"
    },
    "tasks": [
        {
            "continueOnError": false,
            "description": "Remove user from all Azure AD groups memberships",
            "displayName": "Remove user from all groups",
            "executionSequence": 1,
            "isEnabled": true,
            "taskDefinitionId": "b3a31406-2a15-4c9a-b25b-a658fa5f07fc",
            "arguments": []
        },
        {
            "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": []
        },
        {
            "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/beta/$metadata#identityGovernance/lifecycleWorkflows/workflows/$entity",
    "category": "leaver",
    "description": "Execute real-time termination tasks for employees on their last day of work",
    "displayName": "Real-time employee termination",
    "lastModifiedDateTime": "2022-10-04T08:33:01.0619748Z",
    "createdDateTime": "2022-10-04T08:33:01.0619653Z",
    "deletedDateTime": null,
    "id": "368dfba3-2303-4e02-b258-87d742187e1b",
    "isEnabled": true,
    "isSchedulingEnabled": false,
    "nextScheduleRunDateTime": null,
    "version": 1,
    "executionConditions": {
        "@odata.type": "#microsoft.graph.identityGovernance.onDemandExecutionOnly"
    }
}

Ejecución del flujo de trabajo

Solicitud

En la solicitud siguiente, el usuario para el que se ejecutará el flujo de trabajo se identifica mediante el identificador 8930f0c7-cdd7-4885-9260-3b4a8111de5c.

POST https://graph.microsoft.com/beta/identityGovernance/LifecycleWorkflows/workflows/368dfba3-2303-4e02-b258-87d742187e1b/activate

{
    "subjects": [
        {
            "id": "8930f0c7-cdd7-4885-9260-3b4a8111de5c"
        }
    ]
}

Respuesta

HTTP/1.1 204 No Content

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.

Solicitud

La siguiente solicitud recupera el resumen de las tareas que se ejecutan en el nivel de usuario.

GET https://graph.microsoft.com/beta/identityGovernance/LifecycleWorkflows/workflows/368dfba3-2303-4e02-b258-87d742187e1b/userProcessingResults

Respuesta

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

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#identityGovernance/lifecycleWorkflows/workflows('368dfba3-2303-4e02-b258-87d742187e1b')/userProcessingResults",
    "value": [
        {
            "id": "bc5b9d36-55fb-4036-8551-582668a6b78e",
            "completedDateTime": "2022-10-04T08:37:47.3197648Z",
            "failedTasksCount": 0,
            "processingStatus": "completed",
            "scheduledDateTime": "2022-10-04T08:37:28.3040665Z",
            "startedDateTime": "2022-10-04T08:37:32.1018797Z",
            "totalTasksCount": 3,
            "totalUnprocessedTasksCount": 0,
            "workflowExecutionType": "onDemand",
            "workflowVersion": 1,
            "subject": {
                "id": "8930f0c7-cdd7-4885-9260-3b4a8111de5c"
            }
        }
    ]
}

Solicitud

Puede solicitar el resumen agregado de alto nivel de los resultados de nivel de usuario para un flujo de trabajo, dentro de un período especificado.

GET https://graph.microsoft.com/beta/identityGovernance/LifecycleWorkflows/workflows/368dfba3-2303-4e02-b258-87d742187e1b/userProcessingResults/summary(startDateTime=2022-10-01T00:00:00Z,endDateTime=2022-10-30T00:00:00Z)

Respuesta

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
}

Solicitud

También puede recuperar el registro detallado de todas las tareas que se ejecutaron para un usuario específico en el flujo de trabajo.

GET https://graph.microsoft.com/beta/identityGovernance/LifecycleWorkflows/workflows/368dfba3-2303-4e02-b258-87d742187e1b/userProcessingResults/bc5b9d36-55fb-4036-8551-582668a6b78e/taskProcessingResults

Respuesta

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

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#identityGovernance/lifecycleWorkflows/workflows('368dfba3-2303-4e02-b258-87d742187e1b')/userProcessingResults('bc5b9d36-55fb-4036-8551-582668a6b78e')/taskProcessingResults",
    "value": [
        {
            "completedDateTime": "2022-10-04T08:37:37.1440809Z",
            "createdDateTime": "2022-10-04T08:37:32.6985496Z",
            "id": "0819ee66-f85c-49a2-bdbd-3bbdbb3c1797",
            "processingStatus": "completed",
            "startedDateTime": "2022-10-04T08:37:36.2260254Z",
            "failureReason": null,
            "subject": {
                "id": "8930f0c7-cdd7-4885-9260-3b4a8111de5c"
            },
            "task": {
                "category": "leaver",
                "continueOnError": false,
                "description": "Remove user from all Azure AD groups memberships",
                "displayName": "Remove user from all groups",
                "executionSequence": 1,
                "id": "ab400768-ff1e-4a2f-ac0e-bae5d8419613",
                "isEnabled": true,
                "taskDefinitionId": "b3a31406-2a15-4c9a-b25b-a658fa5f07fc",
                "arguments": []
            }
        },
        {
            "completedDateTime": "2022-10-04T08:37:42.8173083Z",
            "createdDateTime": "2022-10-04T08:37:32.76041Z",
            "id": "f1e16080-0117-41ba-9632-74eb60a4b005",
            "processingStatus": "completed",
            "startedDateTime": "2022-10-04T08:37:38.383087Z",
            "failureReason": null,
            "subject": {
                "id": "8930f0c7-cdd7-4885-9260-3b4a8111de5c"
            },
            "task": {
                "category": "leaver",
                "continueOnError": false,
                "description": "Remove user from all Teams memberships",
                "displayName": "Remove user from all Teams",
                "executionSequence": 2,
                "id": "b49e306a-17ad-4bed-89cb-f312b9d30eb3",
                "isEnabled": true,
                "taskDefinitionId": "81f7b200-2816-4b3b-8c5d-dc556f07b024",
                "arguments": []
            }
        },
        {
            "completedDateTime": "2022-10-04T08:37:46.8305324Z",
            "createdDateTime": "2022-10-04T08:37:33.0279549Z",
            "id": "21d40600-259a-4581-a011-0a56d2ee6e7a",
            "processingStatus": "completed",
            "startedDateTime": "2022-10-04T08:37:46.3131624Z",
            "failureReason": null,
            "subject": {
                "id": "8930f0c7-cdd7-4885-9260-3b4a8111de5c"
            },
            "task": {
                "category": "leaver",
                "continueOnError": false,
                "description": "Delete user account in Azure AD",
                "displayName": "Delete User Account",
                "executionSequence": 3,
                "id": "ce568616-5615-4783-a519-6bec9f13514e",
                "isEnabled": true,
                "taskDefinitionId": "8d18588d-9ad3-4c0f-99d0-ec215f0e3dff",
                "arguments": []
            }
        }
    ]
}

Pasos siguientes