Flow Service APIを使用してMicrosoft DynamicsをExperience Platformに接続します

このガイドでは、Flow Service APIを使用してMicrosoft Dynamics ソースをAdobe Experience Platformに接続する方法について説明します。

基本を学ぶ

このガイドは、Adobe Experience Platform の次のコンポーネントを実際に利用および理解しているユーザーを対象としています。

  • ​ ソース ​: Experience Platformを使用すると、様々なソースからデータを取り込むことができますが、Experience Platform サービスを使用して着信データを構造化、ラベル付け、強化することができます。
  • ​ サンドボックス ​: Experience Platformは、1つのExperience Platform インスタンスを個別のバーチャル環境に分割して、デジタルエクスペリエンスアプリケーションの開発と進化に役立つバーチャルサンドボックスを提供します。

Experience Platform APIの使用

Experience Platform APIの呼び出しを正常に行う方法について詳しくは、Experience Platform APIの概要に関するガイドを参照してください。

以下の節では、Flow Service APIを使用してExperience PlatformをDynamics アカウントに正常に接続するために必要な追加情報を示します。

必要な資格情報の収集

Flow Service を Dynamics に接続するには、次の接続プロパティの値を指定する必要があります。

基本認証
table 0-row-2 1-row-2 2-row-2 3-row-2
資格情報 説明
serviceUri Dynamics インスタンスのサービス URL。
username Dynamics ユーザーアカウントのユーザー名。
password Dynamics アカウントのパスワード。
サービス プリンシパルとキー認証
table 0-row-2 1-row-2 2-row-2
資格情報 説明
servicePrincipalId Dynamics アカウントのクライアント ID。 このIDは、サービスプリンシパルとキーベースの認証を使用する場合に必要です。
servicePrincipalKey サービス プリンシパル秘密鍵。 この資格情報は、サービスプリンシパルとキーベースの認証を使用する場合に必要です。

開始の詳細については、this Dynamics documentを参照してください。

ベース接続の作成

TIP
作成したら、Dynamics ベース接続の認証タイプを変更することはできません。 認証タイプを変更するには、新しいベース接続を作成する必要があります。

ベース接続は、ソースの認証情報、接続の現在の状態、一意のベース接続IDなど、ソースとExperience Platform間の情報を保持します。 ベース接続 ID により、ソース内からファイルを参照および移動し、データタイプやフォーマットに関する情報を含む、取り込みたい特定の項目を識別することができます。

ベース接続 ID を作成するには、/connections エンドポイントに POST リクエストを実行し、Dynamics 認証資格情報をリクエストパラメーターの一部として使用します。

API 形式

POST /connections
基本認証

基本認証を使用してDynamics ベース接続を作成するには、接続のserviceUriusernamepasswordの値を指定しながら、Flow Service APIにPOST リクエストを行います。

リクエスト

次のリクエストは、基本認証を使用してDynamics ソースのベース接続を作成します。

accordion
選択してリクエストの例を表示
code language-shell
curl -X POST \
  'https://platform.adobe.io/data/foundation/flowservice/connections' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -H 'Content-Type: application/json' \
  -d '{
      "name": "Dynamics connection",
      "description": "Dynamics connection using basic auth",
      "auth": {
          "specName": "Basic Authentication for Dynamics-Online",
          "params": {
              "serviceUri": "{SERVICE_URI}",
              "username": "{USERNAME}",
              "password": "{PASSWORD}"
          }
      },
      "connectionSpec": {
          "id": "38ad80fe-8b06-4938-94f4-d4ee80266b07",
          "version": "1.0"
      }
  }'
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2
プロパティ 説明
auth.params.serviceUri Dynamics インスタンスに関連付けられているサービス URI。
auth.params.username Dynamics アカウントに関連付けられているユーザー名。
auth.params.password Dynamics アカウントに関連付けられているパスワード。
connectionSpec.id Dynamics 接続仕様 ID:38ad80fe-8b06-4938-94f4-d4ee80266b07

応答

応答が成功すると、新しく作成されたベース接続(一意の識別子(id)を含む)が返されます。

accordion
選択して応答の例を表示
code language-json
{
    "id": "4cb0c374-d3bb-4557-b139-5712880adc55",
    "etag": "\"9e0052a2-0000-0200-0000-5e35tb330000\""
}
サービス プリンシパル キーベース認証

サービスプリンシパルキーベース認証を使用してDynamics ベース接続を作成するには、接続のserviceUriservicePrincipalId、およびservicePrincipalKeyの値を指定しながら、Flow Service APIにPOST リクエストを行います。

リクエスト

次のリクエストは、基本サービスプリンシパルキーベース認証を使用して、Dynamics ソースのベース接続を作成します。

accordion
選択してリクエストの例を表示
code language-shell
curl -X POST \
  'https://platform.adobe.io/data/foundation/flowservice/connections' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -H 'Content-Type: application/json' \
  -d '{
      "name": "Dynamics connection",
      "description": "Dynamics connection using key-based authentication",
      "auth": {
          "specName": "Service Principal Key Based Authentication",
          "params": {
              "serviceUri": "{SERVICE_URI}",
              "servicePrincipalId": "{SERVICE_PRINCIPAL_ID}",
              "servicePrincipalKey": "{SERVICE_PRINCIPAL_KEY}"
          }
      },
      "connectionSpec": {
          "id": "38ad80fe-8b06-4938-94f4-d4ee80266b07",
          "version": "1.0"
      }
  }'
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2
プロパティ 説明
auth.params.serviceUri Dynamics インスタンスに関連付けられているサービス URI。
auth.params.servicePrincipalId Dynamics アカウントのクライアント ID。 このIDは、サービスプリンシパルとキーベースの認証を使用する場合に必要です。
auth.params.servicePrincipalKey サービス プリンシパル秘密鍵。 この資格情報は、サービスプリンシパルとキーベースの認証を使用する場合に必要です。
connectionSpec.id Dynamics 接続仕様 ID:38ad80fe-8b06-4938-94f4-d4ee80266b07

応答

リクエストが成功した場合は、一意の ID(id)を含む、新しく作成された接続が応答として返されます。

accordion
選択して応答の例を表示
code language-json
{
    "id": "4cb0c374-d3bb-4557-b139-5712880adc55",
    "etag": "\"9e0052a2-0000-0200-0000-5e35tb330000\""
}

データテーブルの探索

Dynamics データテーブルを検索するには、/connections/{BASE_CONNECTION_ID}/explore エンドポイントにGET リクエストを行い、クエリパラメーターの一部としてベース接続IDを指定します。

API 形式

GET /connections/{BASE_CONNECTION_ID}/explore?objectType=root
クエリパラメーター
説明
{BASE_CONNECTION_ID}
ベース接続のID。 このIDを使用して、ソースの内容と構造を調べます。

リクエスト

次のリクエストは、ベース接続ID dd668808-25da-493f-8782-f3433b976d1eを持つDynamics ソースの使用可能なテーブルとビューのリストを取得します。

選択してリクエストの例を表示
code language-shell
curl -X GET \
  'https://platform.adobe.io/data/foundation/flowservice/connections/dd668808-25da-493f-8782-f3433b976d1e/explore?objectType=root' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -H 'Content-Type: application/json' \

応答

応答が成功すると、ルートレベルでDynamics テーブルとビューディレクトリが返されます。

選択して応答の例を表示
code language-json
[
    {
        "type": "table",
        "name": "systemuserlicenses",
        "path": "systemuserlicenses",
        "canPreview": true,
        "canFetchSchema": true
    },
    {
        "type": "table",
        "name": "Process Dependency",
        "path": "workflowdependency",
        "canPreview": true,
        "canFetchSchema": true
    },
    {
        "type": "view",
        "name": "accountView1",
        "path": "accountView1",
        "canPreview": true,
        "canFetchSchema": true
    },
    {
        "type": "view",
        "name": "Inactive_ACC_custom",
        "path": "Inactive_ACC_custom",
        "canPreview": true,
        "canFetchSchema": true
    }
]

プライマリキーを使用したデータ探索の最適化

NOTE
最適化にプライマリキーアプローチを使用する場合にのみ、ルックアップ以外の属性を使用できます。

クエリ パラメーターの一部としてprimaryKeyを指定することで、探索クエリを最適化できます。 primaryKeyをクエリパラメーターとして含める場合は、Dynamics テーブルのプライマリキーを指定する必要があります。

API 形式

GET /connections/{BASE_CONNECTION_ID}/explore?preview=true&object={OBJECT}&objectType={OBJECT_TYPE}&previewCount=10&primaryKey={PRIMARY_KEY}
クエリパラメーター
説明
{BASE_CONNECTION_ID}
ベース接続のID。 このIDを使用して、ソースの内容と構造を調べます。
preview
データプレビューを有効にするブール値。
{OBJECT}
探索するDynamics オブジェクト。
{OBJECT_TYPE}
オブジェクトのタイプ。
previewCount
返されるプレビューを一定数のレコードのみに制限する制限。
{PRIMARY_KEY}
プレビュー用に取得するテーブルのプライマリキー。

リクエスト

選択してリクエストの例を表示
code language-shell
curl -X GET \
  'https://platform-stage.adobe.io/data/foundation/flowservice/connections/dd668808-25da-493f-8782-f3433b976d1e/explore?preview=true&object=lead&objectType=table&previewCount=10&primaryKey=leadid' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -H 'Content-Type: application/json' \

テーブルの構造を調べる

特定のテーブルの構造を調べるには、/connections/{BASE_CONNECTION_ID}/exploreにGET リクエストを行い、特定のテーブルへのパスをクエリパラメーターとして指定します。

API 形式

GET /connections/{BASE_CONNECTION_ID}/explore?object={TABLE_PATH}&objectType=table
クエリパラメーター
説明
{BASE_CONNECTION_ID}
ベース接続のID。 このIDを使用して、ソースの内容と構造を調べます。
{TABLE_PATH}
探索する特定のテーブルへのパス。

リクエスト

次のリクエストは、パス workflowdependencyを持つDynamics テーブルの構造と内容を取得します。

選択してリクエストの例を表示
code language-shell
curl -X GET \
  'https://platform.adobe.io/data/foundation/flowservice/connections/dd668808-25da-493f-8782-f3433b976d1e/explore?object=workflowdependency&objectType=table' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -H 'Content-Type: application/json' \

応答

応答が成功すると、パス workflowdependencyの内容が返されます。

選択して応答の例を表示
code language-json
{
    "format": "flat",
    "schema": {
        "columns": [
            {
                "name": "first_name",
                "type": "string",
                "meta": {
                    "originalType": "String"
                }
            },
            {
                "name": "last_name",
                "type": "string",
                "meta": {
                    "originalType": "String"
                }
            },
            {
                "name": "email",
                "type": "string",
                "meta": {
                    "originalType": "String"
                }
            }
        ]
    }
}

ビューの構造を調べる

Dynamicsのビューでは、表示する列、各列の幅、レコードのリストが並べ替えられる既定のシステム、リストに表示されるレコードを制限するために適用される既定のフィルターを参照します。

ビューの構造を調べるには、/connections/{BASE_CONNECTION_ID}/exploreにGET リクエストを行い、クエリパラメーターにビューパスを指定します。 さらに、objectTypeviewとして指定する必要があります。

API 形式

GET /connections/{BASE_CONNECTION_ID}/explore?object={VIEW_PATH}&objectType=view
クエリパラメーター
説明
{BASE_CONNECTION_ID}
ベース接続のID。 このIDを使用して、ソースの内容と構造を調べます。
{VIEW_PATH}
検査するビューへのパス。

リクエスト

次のリクエストはaccountView1を取得します。

選択してリクエストの例を表示
code language-shell
curl -X GET \
  'https://platform.adobe.io/data/foundation/flowservice/connections/dd668808-25da-493f-8782-f3433b976d1e/explore?object=accountView1&objectType=view' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -H 'Content-Type: application/json' \

応答

応答が成功すると、accountView1の構造が返されます。

選択して応答の例を表示
code language-json
{
    "format": "flat",
    "schema": {
        "columns": [
            {
                "name": "name",
                "type": "string",
                "meta": {
                    "originalType": "string"
                },
                "xdm": {
                    "type": "string"
                }
            },
            {
                "name": "fetchxml",
                "type": "string",
                "meta": {
                    "originalType": "string"
                },
                "xdm": {
                    "type": "string"
                }
            },
            {
                "name": "querytype",
                "type": "integer",
                "meta": {
                    "originalType": "int"
                },
                "xdm": {
                    "type": "integer",
                    "minimum": -2147483648,
                    "maximum": 2147483647
                }
            },
            {
                "name": "userqueryid",
                "type": "string",
                "meta": {
                    "originalType": "guid"
                },
                "xdm": {
                    "type": "string"
                }
            }
        ]
    }
}

エンティティ タイプ ビューのプレビュー

ビューの内容をプレビューするには、/connections/{BASE_CONNECTION_ID}/exploreにGET リクエストを行い、クエリ パラメーターにビューパスとpreview=trueを含めます。

API 形式

GET /connections/{BASE_CONNECTION_ID}/explore?object={VIEW_PATH}&preview=true&objectType=view
クエリパラメーター
説明
{BASE_CONNECTION_ID}
ベース接続のID。 このIDを使用して、ソースの内容と構造を調べます。
{VIEW_PATH}
検査するビューへのパス。

リクエスト

次のリクエストは、accountView1の内容をプレビューします。

選択してリクエストの例を表示
code language-shell
curl -X GET \
  'https://platform.adobe.io/data/foundation/flowservice/connections/dd668808-25da-493f-8782-f3433b976d1e/explore?object=accountView1&preview=true&objectType=view' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -H 'Content-Type: application/json' \

応答

応答が成功すると、accountView1の内容が返されます。

選択して応答の例を表示
code language-json
{
    "format": "flat",
    "schema": {
        "columns": [
            {
                "name": "emailaddress1",
                "type": "string",
                "meta": {
                    "originalType": "string"
                },
                "xdm": {
                    "type": "string"
                }
            },
            {
                "name": "contactid",
                "type": "string",
                "meta": {
                    "originalType": "guid"
                },
                "xdm": {
                    "type": "string"
                }
            },
            {
                "name": "fullname",
                "type": "string",
                "meta": {
                    "originalType": "string"
                },
                "xdm": {
                    "type": "string"
                }
            }
        ]
    },
    "data": [
        {
            "contactid": "396e19de-0852-ec11-8c62-00224808a1df",
            "fullname": "Tim Barr",
            "emailaddress1": "barrtim@googlemedia.com"
        }
    ]
}

インジェストビューへのソース接続の作成

ソース接続を作成してビューを取り込むには、/sourceConnections エンドポイントにPOST リクエストを行い、テーブル名を指定し、リクエスト本文にentityTypeviewとして指定します。

API 形式

POST /sourceConnections

リクエスト

次のリクエストは、Dynamics ソース接続を作成し、ビューを取り込みます。

選択してリクエストの例を表示
code language-shell
curl -X POST \
  'https://platform.adobe.io/data/foundation/flowservice/sourceConnections' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -H 'Content-Type: application/json' \
  -d '{
      "name": "Dynamics Source Connection",
      "description": "Dynamics Source Connection",
      "baseConnectionId": "dd668808-25da-493f-8782-f3433b976d1e",
      "data": {
          "format": "tabular",
          "schema": null,
          "properties": null
      },
      "params": {
          "tableName": "Contacts with name TIM",
          "entityType": "view"
      },
      "connectionSpec": {
          "id": "38ad80fe-8b06-4938-94f4-d4ee80266b07",
          "version": "1.0"
      }
  }'

応答

応答が成功すると、新しく生成されたソース接続IDとそれに対応するタグが返されます。

選択して応答の例を表示
code language-json
{
    "id": "e566bab3-1b58-428c-b751-86b8cc79a3b4",
    "etag": "\"82009592-0000-0200-0000-678121030000\""
}

プライマリキーを使用したデータフローの最適化

また、リクエスト本文パラメーターの一部としてプライマリキーを指定することで、Dynamics データフローを最適化することもできます。

API 形式

POST /sourceConnections

リクエスト

次のリクエストは、プライマリキーをcontactidとして指定する際にDynamics ソース接続を作成します。

選択してリクエストの例を表示
code language-shell
curl -X POST \
  'https://platform.adobe.io/data/foundation/flowservice/sourceConnections' \
  -H 'Authorization: Bearer {ACCESS_TOKEN}' \
  -H 'x-api-key: {API_KEY}' \
  -H 'x-gw-ims-org-id: {ORG_ID}' \
  -H 'x-sandbox-name: {SANDBOX_NAME}' \
  -H 'Content-Type: application/json' \
  -d '{
      "name": "Dynamics Source Connection",
      "description": "Dynamics Source Connection",
      "baseConnectionId": "dd668808-25da-493f-8782-f3433b976d1e",
      "data": {
          "format": "tabular"
      },
      "params": {
          "tableName": "contact",
          "primaryKey": "contactid"
      },
      "connectionSpec": {
          "id": "38ad80fe-8b06-4938-94f4-d4ee80266b07",
          "version": "1.0"
      }
  }'
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2
プロパティ 説明
baseConnectionId ベース接続のID。
data.format データの形式。
params.tableName Dynamicsのテーブルの名前。
params.primaryKey クエリを最適化するテーブルのプライマリキー。
connectionSpec.id Dynamics ソースに対応する接続仕様ID。

応答

応答が成功すると、新しく生成されたソース接続IDとそれに対応するタグが返されます。

選択して応答の例を表示
code language-json
{
    "id": "e566bab3-1b58-428c-b751-86b8cc79a3b4",
    "etag": "\"82009592-0000-0200-0000-678121030000\""
}

次の手順

このチュートリアルでは、Flow Service API を使用して Microsoft Dynamics ベース接続を作成しました。 このベース接続 ID は、次のチュートリアルで使用できます。

recommendation-more-help
experience-platform-help-sources