Automatize as tarefas de desligamento de funcionários após o último dia de trabalho usando APIs de fluxos de trabalho do ciclo de vida

Este tutorial fornece orientação passo a passo para configurar tarefas de desligamento para funcionários após o último dia de trabalho usando APIs de fluxos de trabalho do ciclo de vida. Nesse cenário, a rescisão do funcionário é agendada, possivelmente incluindo um período de aviso prévio. Consulte Concluir tarefas de desligamento de funcionários em tempo real no último dia de trabalho usando APIs de fluxos de trabalho do ciclo de vida para um cenário de rescisão não agendada e em tempo real.

Neste tutorial, você aprende a:

  • Configure um fluxo de trabalho de ciclo de vida para marcar se há funcionários em um departamento específico, dias após o último dia de trabalho.
  • Configure uma tarefa para executar as seguintes tarefas em sequência:
    • Remover todas as licenças do usuário
    • Remover usuário de todas as equipes
    • Excluir conta de usuário
  • Monitore o status do fluxo de trabalho e suas tarefas associadas.

Pré-requisitos

Para concluir este tutorial, você precisa dos seguintes recursos e privilégios:

  • Esse recurso requer licenças de Governança do Microsoft Entra ID Governance. Para encontrar a licença certa para seus requisitos, consulte Conceitos básicos de licenciamento de Governança do Microsoft Entra ID Governance.
  • Entre em um cliente de API, como o Graph Explorer, para chamar o Microsoft Graph com uma conta que tenha, pelo menos, a função de Administrador do Ciclo de Vida do Microsoft Entra.
  • Conceda a si mesmo a permissão delegada LifecycleWorkflows.ReadWrite.All do Microsoft Graph.
  • Crie uma conta de usuário de teste para representar um funcionário que está saindo da sua organização. Essa conta de usuário de teste é excluída quando o fluxo de trabalho é executado. Atribua licenças e associações do Teams à conta de usuário de teste.

Criar um fluxo de trabalho de "saída"

Solicitação

A solicitação a seguir cria um fluxo de trabalho de desligamento com estas configurações:

  • Ele pode ser executado sob demanda, mas não dentro do cronograma. Esta etapa nos permite validar o fluxo de trabalho usando a conta do usuário de teste. O fluxo de trabalho será atualizado para ser executado dentro do cronograma posteriormente neste tutorial.
  • O fluxo de trabalho é executado sete dias após o employeeLeaveDateTime do funcionário se o funcionário estiver no departamento de "Marketing".
  • Três tarefas de fluxo de trabalho são executadas em sequência: o usuário tem todas as licenças canceladas, é removido de todas as equipes e, em seguida, sua conta de usuário é excluída.
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": []
        }
    ]
}

Resposta

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
        }
    }
}

Executar o fluxo de trabalho

Como o fluxo de trabalho não está agendado para ser executado, você deve executá-lo manualmente, sob demanda. Nessa solicitação, o usuário direcionado pelo fluxo de trabalho é identificado pela ID df744d9e-2148-4922-88a8-633896c1e929.

Quando você executa um fluxo de trabalho sob demanda, as tarefas são executadas independentemente de o estado do usuário corresponder ao escopo e às condições de execução do gatilho. Portanto, mesmo que o usuário não esteja no departamento de "Marketing" ou seu employeeLeaveDateTime esteja definido como null, esse comando ainda executa as tarefas definidas no fluxo de trabalho para o usuário.

A solicitação retorna o código de resposta 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"
        }
    ]
}

Verificar tarefas e status do fluxo de trabalho

Você pode monitorar o status dos fluxos de trabalho e tarefas em três níveis.

  • Monitorar tarefas no nível do usuário.
  • Monitore o resumo agregado de alto nível dos resultados no nível do usuário para um fluxo de trabalho dentro de um período especificado.
  • Recupere o log detalhado de todas as tarefas que foram executadas para um usuário específico no fluxo de trabalho.

Opção 1: Monitorar tarefas de um fluxo de trabalho no nível do usuário

Solicitação

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

Resposta

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"
            }
        }
    ]
}

Opção 2: obter o resumo agregado de alto nível dos resultados no nível do usuário para um fluxo de trabalho, dentro de um período especificado

Solicitação

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)

Resposta

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
}

Opção 3: recuperar o log detalhado de todas as tarefas que foram executadas para um usuário específico no fluxo de trabalho

Solicitação

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

Resposta

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] Agendar o fluxo de trabalho para execução automática

Depois de executar o fluxo de trabalho sob demanda e verificar se tudo funciona bem, talvez você queira habilitar o fluxo de trabalho para ser executado automaticamente em uma agenda definida pelo locatário. Execute esta solicitação.

A solicitação retorna o código de resposta 204 No Content. Quando um fluxo de trabalho é agendado, o mecanismo de Fluxos de Trabalho do Ciclo de Vida verifica a cada três horas os usuários na condição de execução associada e executa as tarefas configuradas para esses usuários. Você pode personalizar essa recorrência de uma hora para 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
}