カスタム ターゲット属性との同期を構成する

名前空間: microsoft.graph

同期スキーマをカスタマイズして、ターゲット ディレクトリで定義されているカスタム属性を含めることができます。 この記事では、 という officeCode新しいフィールドを追加して Salesforce サブスクリプションをカスタマイズする方法について説明します。 Microsoft Entra IDから Salesforce への同期を設定し、各ユーザーに対して、Salesforce のフィールドに Microsoft Entra ID のフィールドの値をextensionAttribute10設定officeCodeします。

この記事では、Microsoft Entra 管理センターを介したテナントへの同期をサポートするアプリケーションが既に追加されていること、アプリケーションの表示名がわかっていること、および Microsoft Graph の承認トークンがあることを前提としています。 承認トークンを取得する方法については、「 アクセス トークンを取得して Microsoft Graph を呼び出す」を参照してください。

表示名でサービス プリンシパル オブジェクトを検索する

次の例では、Salesforce という表示名のサービス プリンシパル オブジェクトを検索する方法を示します。

要求

GET https://graph.microsoft.com/v1.0/servicePrincipals?$select=id,appId,displayName&$filter=startswith(displayName, 'salesforce')
Authorization: Bearer {Token}

応答

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

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#servicePrincipals(id,appId,displayName)",
    "value": [
    {
        "id": "167e33e9-f80e-490e-b4d8-698d4a80fb3e",
        "appId": "cd3ed3de-93ee-400b-8b19-b61ef44a0f29",
        "displayName": "Salesforce"
    },
    {
        "id": "8cbbb70b-7290-42da-83ee-89fa3517a977",
        "appId": "b0f2e3b1-fe31-4658-b216-44dcaeabb63a",
        "displayName": "salesforce 1"
    },
    {
        "id": "60443998-8cf7-4e61-b05c-a53b658cb5e1",
        "appId": "79079396-c301-405d-900f-e2e0c2439a90",
        "displayName": "Salesforce Sandbox"
    }
    ]
}

{servicePrincipalId} です 167e33e9-f80e-490e-b4d8-698d4a80fb3e

サービス プリンシパルのコンテキストで同期ジョブを一覧表示する

次の例では、操作する必要がある を jobId 取得する方法を示します。 一般に、応答は 1 つのジョブのみを返します。

要求

GET https://graph.microsoft.com/v1.0/servicePrincipals/60443998-8cf7-4e61-b05c-a53b658cb5e1/synchronization/jobs
Authorization: Bearer {Token}

応答

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

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#servicePrincipals('60443998-8cf7-4e61-b05c-a53b658cb5e1')/synchronization/jobs",
    "value": [
        {
            "id": "SfSandboxOutDelta.e4bbf44533ea4eabb17027f3a92e92aa",
            "templateId": "SfSandboxOutDelta",
            "schedule": {},
            "status": {}
    }
    ]
}

{jobId} です SfSandboxOutDelta.e4bbf44533ea4eabb17027f3a92e92aa

同期スキーマを取得する

次の例は、同期スキーマを取得する方法を示しています。

GET https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipalId}/synchronization/jobs/{jobId}/schema
Authorization: Bearer {Token}

注: ここに示す応答オブジェクトは、読みやすさのために短縮されている場合があります。 すべてのプロパティは、実際の呼び出しで返されます。

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

{
  "directories": [
    {
      "id": "66e4a8cc-1b7b-435e-95f8-f06cea133828",
      "name": "Azure Active Directory",
      "objects": [
        {
          "attributes": [
            {
              "anchor": true,
              "caseExact": false,
              "defaultValue": null,
              "metadata": [],
              "multivalued": false,
              "mutability": "ReadWrite",
              "name": "objectId",
              "required": false,
              "referencedObjects": [],
              "type": "String"
            },
            {
              "anchor": false,
              "caseExact": false,
              "defaultValue": null,
              "metadata": [],
              "multivalued": false,
              "mutability": "ReadWrite",
              "name": "streetAddress",
              "required": false,
              "referencedObjects": [],
              "type": "String"
            }
          ],
          "name": "User"
        }
      ]
    },
    {
      "id": "8ffa6169-f354-4751-9b77-9c00765be92d",
      "name": "salesforce.com",
      "objects": []
    }
  ],
  "synchronizationRules": [
    {
      "editable": true,
      "id": "4c5ecfa1-a072-4460-b1c3-4adde3479854",
      "name": "USER_OUTBOUND_USER",
      "objectMappings": [
        {
          "attributeMappings": [
            {
              "defaultValue": "True",
              "exportMissingReferences": false,
              "flowBehavior": "FlowWhenChanged",
              "flowType": "Always",
              "matchingPriority": 0,
              "source": {
                "expression": "Not([IsSoftDeleted])",
                "name": "Not",
                "parameters": [
                  {
                    "key": "source",
                    "value": {
                      "expression": "[IsSoftDeleted]",
                      "name": "IsSoftDeleted",
                      "parameters": [],
                      "type": "Attribute"
                    }
                  }
                ],
                "type": "Function"
              },
              "targetAttributeName": "IsActive"
            }
          ],
          "enabled": true,
          "flowTypes": "Add, Update, Delete",
          "name": "Synchronize Azure Active Directory Users to salesforce.com",
          "scope": null,
          "sourceObjectName": "User",
          "targetObjectName": "User"
        }
      ]
    }
  ]
}

officeCode 属性の定義と属性間のマッピングを追加する

任意のプレーン テキスト エディター (Notepad++JSON エディター Online など) を使用して、次の手順を実行します。

  1. 属性の 属性定義officeCode 追加します。

    • [ディレクトリ] で、salesforce.com という名前のディレクトリを見つけ、オブジェクトの配列で User という名前のディレクトリを見つけます。
    • 次の例に示すように、名前と型を指定して、新しい属性をリストに追加します。
  2. と の間officeCode属性マッピングを追加しますextensionAttribute10

    • [synchronizationRules] で、Microsoft Entra IDをソース ディレクトリとして指定し、ターゲット ディレクトリ () として Salesforce.com する規則を見つけます"sourceDirectoryName": "Azure Active Directory", "targetDirectoryName": "salesforce.com"
    • ルールの objectMappings で、ユーザー間のマッピング ("sourceObjectName": "User", "targetObjectName": "User") を見つけます。
    • objectMapping の attributeMappings 配列に、次の例に示すように新しいエントリを追加します。
{  
    "directories": [
    {
        "id": "8ffa6169-f354-4751-9b77-9c00765be92d",
            "name": "salesforce.com",
            "objects": [
            {
                "attributes": [
                        {
                            "name": "officeCode",
                            "type": "String"
                        }
                ],
                "name":"User"
            }]
    }
    ],
    "synchronizationRules": [
        {
        "editable": true,
        "id": "4c5ecfa1-a072-4460-b1c3-4adde3479854",
        "name": "USER_OUTBOUND_USER",
        "objectMappings": [
            {
            "attributeMappings": [
                {
                    "source": {
                            "name": "extensionAttribute10",
                            "type": "Attribute"
                        },
                    "targetAttributeName": "officeCode"
                }
            ],
            "name": "Synchronize Azure Active Directory Users to salesforce.com",
            "scope": null,
            "sourceObjectName": "User",
            "targetObjectName": "User"
            }
        ],
    "priority": 1,
        "sourceDirectoryName": "Azure Active Directory",
        "targetDirectoryName": "salesforce.com"
    }
    ]
}

変更した同期スキーマを保存する

更新された同期スキーマを保存するときは、変更されていない部分も含めて、スキーマ全体が含まれていることを確認します。 この要求により、既存のスキーマが指定したスキーマに置き換えられます。

PUT https://graph.microsoft.com/v1.0/servicePrincipals/{servicePrincipalId}/synchronization/jobs/{jobId}/schema
Authorization: Bearer {Token}

{
    "directories": [..],
    "synchronizationRules": [..]
}

スキーマが正常に保存された場合、要求は応答コードを 204 No Content 返します。 同期ジョブの次のイテレーションでは、Microsoft Entra ID内のすべてのアカウントの再処理が開始され、新しいマッピングがプロビジョニングされたすべてのアカウントに適用されます。