Автоматизация задач отключения сотрудников после последнего рабочего дня с помощью API рабочих процессов жизненного цикла

В этом руководстве содержатся пошаговые инструкции по настройке задач отключения для сотрудников после последнего рабочего дня с помощью API рабочих процессов жизненного цикла. В этом сценарии увольнение сотрудника планируется, возможно, включая период уведомления. См. раздел Завершение задач по отключению сотрудников в режиме реального времени в последний рабочий день с помощью API рабочих процессов жизненного цикла для незапланированного сценария завершения в режиме реального времени.

В этом руководстве рассказывается, как:

  • Настройте рабочий процесс жизненного цикла, чтобы проверка для сотрудников в определенном отделе в течение нескольких дней после последнего рабочего дня.
  • Настройте задачу для последовательного выполнения следующих задач:
    • Удаление всех лицензий для пользователя
    • Удаление пользователя из всех Teams
    • Удаление учетной записи пользователя
  • Отслеживайте состояние рабочего процесса и связанных с ним задач.

Предварительные требования

Для работы с этим руководством вам потребуются следующие ресурсы и привилегии:

  • Для этой функции требуются Управление Microsoft Entra ID лицензии. Чтобы найти подходящую лицензию для ваших требований, см. Управление Microsoft Entra ID основы лицензирования.
  • Войдите в клиент API, например Graph Обозреватель, чтобы вызвать Microsoft Graph с учетной записью, которая имеет по крайней мере роль администратора жизненного цикла Microsoft Entra.
  • Предоставьте себе делегированное разрешение LifecycleWorkflows.ReadWrite.All Microsoft Graph.
  • Создайте тестовую учетную запись пользователя, которая будет использоваться для представления сотрудника, покидающего организацию. Эта тестовая учетная запись пользователя удаляется при запуске рабочего процесса. Назначьте лицензии и членство в Teams учетной записи тестового пользователя.

Создание рабочего процесса leaver

Запрос

Следующий запрос создает рабочий процесс отключения со следующими параметрами:

  • Его можно запустить по запросу, но не по расписанию. Этот шаг позволяет проверить рабочий процесс с помощью учетной записи тестового пользователя. Рабочий процесс будет обновлен для запуска по расписанию позже в этом руководстве.
  • Рабочий процесс выполняется через семь дней после сотрудникаLeaveDateTime и, если он находится в отделе маркетинга.
  • Три задачи рабочего процесса могут выполняться последовательно: пользователь не назначит все лицензии, затем удаляется из всех команд, а затем удаляется его учетная запись пользователя.
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": []
        }
    ]
}

Отклик

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

Запуск рабочего процесса

Так как рабочий процесс не запланирован для выполнения, его необходимо запускать вручную по запросу. В следующем запросе пользователь, который является целевым объектом рабочего процесса, определяется по идентификатору df744d9e-2148-4922-88a8-633896c1e929.

При запуске рабочего процесса по запросу задачи выполняются независимо от того, соответствует ли состояние пользователя условиям выполнения область и триггера. Таким образом, даже если пользователь не находится в отделе "Маркетинг" или для его сотрудникаLeaveDateTime задано значение null, эта команда по-прежнему выполняет задачи, определенные в рабочем процессе, для пользователя.

Запрос возвращает код отклика 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"
        }
    ]
}

Проверка состояния задач и рабочего процесса

В любое время можно отслеживать состояние рабочих процессов и задач на трех уровнях.

  • Мониторинг задач на уровне пользователя.
  • Отслеживайте агрегированную сводку результатов на уровне пользователя для рабочего процесса в течение указанного периода.
  • Получите подробный журнал всех задач, которые были выполнены для конкретного пользователя в рабочем процессе.

Вариант 1. Мониторинг задач рабочего процесса на уровне пользователя

Запрос

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

Отклик

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

Вариант 2. Получение сводной сводки результатов на уровне пользователя для рабочего процесса в течение указанного периода

Запрос

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)

Отклик

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
}

Вариант 3. Получение подробного журнала всех задач, выполненных для конкретного пользователя в рабочем процессе

Запрос

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

Отклик

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

[Необязательно] Планирование автоматического запуска рабочего процесса

После запуска рабочего процесса по запросу и проверки того, что все работает нормально, может потребоваться включить рабочий процесс, чтобы он мог выполняться автоматически по расписанию, определенному клиентом. Выполните следующий запрос.

Запрос возвращает код отклика 204 No Content. Если рабочий процесс запланирован, подсистема рабочих процессов жизненного цикла каждые три часа проверяет пользователей в соответствующем условии выполнения и выполняет настроенные задачи для этих пользователей. Это повторение можно настроить от одного часа до 24 часов.

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

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