次の方法で共有


ライフサイクル ワークフロー API を使用して、仕事の最終日の後に従業員のオフボード タスクを自動化する

このチュートリアルでは、ライフサイクル ワークフロー API を使用して、仕事の最終日後に従業員のオフボード タスクを構成するためのステップ バイ ステップ ガイダンスを提供します。 このシナリオでは、通知期間を含め、従業員の終了がスケジュールされます。 スケジュールされていないリアルタイムの終了シナリオについては、「 ライフサイクル ワークフロー API を使用して、仕事の最終日に従業員のオフボード タスク をリアルタイムで完了する」を参照してください。

このチュートリアルでは、以下を実行する方法について説明します。

  • 特定の部署の従業員にチェックするライフサイクル ワークフローを、最後の作業日から数日後に構成します。
  • 次のタスクを順番に実行するようにタスクを構成します。
    • ユーザーのすべてのライセンスを削除する
    • すべての Teams からユーザーを削除する
    • ユーザー アカウントを削除する
  • ワークフローとその関連するタスクの状態を監視します。

前提条件

このチュートリアルを完了するには、次のリソースと特権が必要です。

  • この機能には、Microsoft Entra IDガバナンス ライセンスが必要です。 要件に適したライセンスについては、「ガバナンス ライセンスの基礎Microsoft Entra ID」を参照してください。
  • Graph エクスプローラー などの API クライアントにサインインし、少なくともライフサイクル管理者Microsoft Entraロールを持つアカウントで Microsoft Graph を呼び出します。
  • LifecycleWorkflows.ReadWrite.All Microsoft Graph 委任アクセス許可を自分に付与します。
  • organizationを離れる従業員を表すために使用するテスト ユーザー アカウントを作成します。 このテスト ユーザー アカウントは、ワークフローの実行時に削除されます。 テスト ユーザー アカウントにライセンスと Teams メンバーシップを割り当てます。

"leaver" ワークフローを作成する

要求

次の要求は、次の設定でオフボード ワークフローを作成します。

  • オンデマンドで実行できますが、スケジュールに従って実行することはできません。 この手順では、テスト ユーザーのアカウントを使用してワークフローを検証できます。 ワークフローは、このチュートリアルの後半でスケジュールに従って実行されるように更新されます。
  • ワークフローは、従業員の employeeLeaveDateTime の 7 日後に実行され、"マーケティング" 部門に属している場合は実行されます。
  • 3 つのワークフロー タスクを順番に実行できます。ユーザーはすべてのライセンスを割り当て解除された後、すべてのチームから削除された後、ユーザー アカウントが削除されます。
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
        }
    }
}

ワークフローを実行する

ワークフローは実行するようにスケジュールされていないため、手動でオンデマンドで実行する必要があります。 次の要求では、ワークフローのターゲットであるユーザーは ID df744d9e-2148-4922-88a8-633896c1e929で識別されます。

ワークフローをオンデマンドで実行すると、ユーザーの状態がスコープとトリガーの実行条件と一致するかどうかに関係なく、タスクが実行されます。 したがって、ユーザーが "Marketing" 部門にいない場合、または employeeLeaveDateTime が に設定されている場合でも、このコマンドはユーザーに対して 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"
        }
    ]
}

タスクとワークフローの状態を確認する

ワークフローの状態とタスクは、いつでも 3 つのレベルで監視できます。

  • ユーザー レベルでタスクを監視します。
  • 指定した期間内に、ワークフローのユーザー レベルの結果の集計概要を監視します。
  • ワークフロー内の特定のユーザーに対して実行されたすべてのタスクの詳細ログを取得します。

オプション 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 応答コードを返します。 ワークフローがスケジュールされると、ライフサイクル ワークフロー エンジンは、関連付けられた実行条件のユーザーを 3 時間ごとにチェックし、それらのユーザーに対して構成されたタスクを実行します。 この繰り返しは、1 時間から 24 時間の間でカスタマイズできます。

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

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