このチュートリアルは、Power Platform 管理者が、Power Platform API を利用してテナントがすでに権利を持っているアプリケーションをインストールできるようにすることを目的としています。 これらのアプリケーションは、環境>[環境名]>リソース>Dynamics 365 アプリ 配下の Power Platform 管理センターに表示されます。
このチュートリアルで学習する内容は次のとおりです。
- Power Platform API で認証する Power Automate または Logic Apps ワークフロー (Azure) を作成します。
- Get Environment Application Package API を呼び出して、特定の環境にインストールできるアプリケーションのリストを取得します
- Install Application Package API を使用してアプリケーションをインストールします
- Install Operation Get Application Package Install Status API の状態をポーリングします
- インストールが完了したらメールで通知する
このシナリオの例では、顧客は選択した特定の環境に Office グループをインストールしようとしています。
Power Platform API で認証できるツールを選択する
次の情報は、プログラムで Power Platform に接続する方法の詳細を示しています。 このチュートリアルには、Azure スペースで作業する管理者向けの共通クライアントとしての Azure Logic Apps の使用と、ネイティブ Power Platform CLI の例が含まれます。
ワークフローを作成し、変数を設定する
まず、このチュートリアルではLogic Appsワークフローを使用します。 Power Automate フローと、会社が自動化に使用することを好む他のオーケストレーション エンジンも受け入れられます。 データを取得するためのすべての呼び出しはRESTful APIを使用するため、RESTをサポートするツールはすべてこのチュートリアルで使用できます。
Azure ポータルにアクセスし、新しいロジック アプリを作成して、名前を付けます。
プロビジョニングが完了したら、デザイナーを使用してワークフローを編集し、選択したスケジュールで実行する繰り返しトリガーを設定します。
このチュートリアルの残りの部分では、後続の手順を完了するために 環境IDとアプリケーション名が必要です。
- 環境Id: パッケージをインストールする 環境 のID。 このIDは組織IDではありません。
- アプリケーション名: インストールしようとしているアプリケーションの名前。
次に、 Microsoft Entra 認証して、 Power Platform APIを呼び出すためのトークンを取得します。 Microsoft Entra のセットアップを完了していない場合は、「 認証」を参照してください。
このチュートリアルでは、パスワード付きのユーザー資格証明を使用してトークンを取得しています。
次に、Microsoft Entra 'Parse JSON' アクションでこの JSON スキーマを使用して、型指定されたオブジェクトへのトークン応答を解析します。
{
"properties": {
"access_token": {
"type": "string"
},
"expires_in": {
"type": "integer"
},
"ext_expires_in": {
"type": "integer"
},
"token_type": {
"type": "string"
}
},
"type": "object"
}
インストールする利用可能なパッケージを取得する
このセクションでは、特定の 環境 にインストールできるアプリケーションのリストを取得します。 必ず 環境 ID を利用できるようにして、この環境に Dataverse データベースを作成してください。
環境アプリケーション パッケージ エンドポイント
ここで、 Power Platform APIへの最初の呼び出しを行います。 Get Environment Application Package APIを使用して、指定した Dataverse 組織にインストールできる使用可能なすべてのパッケージを取得します。 使用している ID が、サービス プリンシパルでもユーザー名/パスワードでも、Dataverse と適切なセキュリティ ロールにアクセスできることを確認してください。
GET https://api.powerplatform.com/appmanagement/environments/{environmentId}/applicationPackages?api-version=2022-03-01-preview
次に、「JSONの解析」アクションでこのJSONスキーマを使用して、応答 を型付きオブジェクトに解析します。
{
"properties": {
"value": {
"items": {
"properties": {
"applicationDescription": {
"type": [
"string",
"null"
]
},
"applicationId": {
"type": [
"string",
"null"
]
},
"applicationName": {
"type": [
"string",
"null"
]
},
"applicationVisibility": {
"type": [
"string",
"null"
]
},
"catalogVisibility": {
"type": [
"string",
"null"
]
},
"crmMaxVersion": {},
"crmMinversion": {
"type": [
"string",
"null"
]
},
"customHandleUpgrade": {
"type": "boolean"
},
"endDateUtc": {
"type": [
"string",
"null"
]
},
"errorDetails": {},
"id": {
"type": [
"string",
"null"
]
},
"instancePackageId": {
"type": [
"string",
"null"
]
},
"learnMoreUrl": {
"type": [
"string",
"null"
]
},
"localizedDescription": {
"type": [
"string",
"null"
]
},
"localizedName": {
"type": [
"string",
"null"
]
},
"publisherId": {
"type": [
"string",
"null"
]
},
"publisherName": {
"type": [
"string",
"null"
]
},
"singlePageApplicationUrl": {},
"startDateUtc": {
"type": [
"string",
"null"
]
},
"state": {
"type": [
"string",
"null"
]
},
"supportedCountries": {
"items": {
"type": [
"string",
"null"
]
},
"type": "array"
},
"uniqueName": {
"type": [
"string",
"null"
]
},
"version": {
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"uniqueName",
"version",
"localizedDescription",
"localizedName",
"applicationId",
"applicationName",
"applicationDescription",
"singlePageApplicationUrl",
"publisherName",
"publisherId",
"learnMoreUrl",
"crmMinversion",
"crmMaxVersion",
"customHandleUpgrade",
"instancePackageId",
"state",
"catalogVisibility",
"applicationVisibility",
"errorDetails",
"startDateUtc",
"endDateUtc",
"supportedCountries"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
}
アプリケーションのインストール
前のステップのアプリケーションのいずれかを取得して、インストールできます。 "Office 365 グループ" アプリケーションをインストールするとします。 PackageUniqueName フィールドで値を選択します。この場合、次のステップで使用するのは Office365Groups です。
アプリケーションのインストール API
インストールを トリガー するために、 アプリケーションのインストールAPI エンドポイント を使用します。 この例では、uniqueName プロパティを Office365Groups に設定します。
POST https://api.powerplatform.com/appmanagement/environments/{environmentId}/applicationPackages/{uniqueName}/install?api-version=2022-03-01-preview
リクエスト本体には、以前の 手順 からのアプリケーション エントリが含まれます。
{
"id": "ce3bab3c-ada1-40cf-b84b-49b26603a281",
"uniqueName": "Office365Groups",
"version": "2.9.0.3",
"localizedDescription": "With Office 365 groups, you can collaborate with people across your company even if they aren’t Dynamics 365 users. Groups provide a single location to share conversations, meetings, documents, and more.",
"localizedName": "Office 365 Groups",
"applicationId": "2f17f077-4175-4d82-b82b-17cd8950b74f",
"applicationName": "Office365Groups",
"applicationDescription": "",
"singlePageApplicationUrl": "",
"publisherName": "Microsoft CRM Package",
"publisherId": "255953fd-9ab8-4146-bfa1-859aae326ae9",
"learnMoreUrl": "http://go.microsoft.com/fwlink/?LinkID=525719",
"crmMinversion": "8.0",
"crmMaxVersion": null,
"customHandleUpgrade": false,
"instancePackageId": null,
"state": "None",
"catalogVisibility": "None",
"applicationVisibility": "All",
"errorDetails": null,
"startDateUtc": "2016-01-01T00:00:00Z",
"endDateUtc": "2050-01-01T00:00:00Z",
"supportedCountries": [
"AE",
"AL",
"AM",
"AO",
"VN",
"ZA",
"ZW"
]
}
次のコードは 応答 の例です:
{
"id": "9a44d33b-6055-4c9b-aa4a-4c410a22e9ad",
"packageId": "ce3bab3c-ada1-40cf-b84b-49b26603a281",
"applicationId": "2f17f077-4175-4d82-b82b-17cd8950b74f",
"applicationName": "Office365Groups",
"applicationDescription": "",
"singlePageApplicationUrl": "",
"publisherName": "Microsoft CRM Package",
"publisherId": "255953fd-9ab8-4146-bfa1-859aae326ae9",
"packageUniqueName": "Office365Groups",
"packageVersion": "2.9.0.3",
"localizedDescription": "With Office 365 groups, you can collaborate with people across your company even if they aren’t Dynamics 365 users. Groups provide a single location to share conversations, meetings, documents, and more.",
"localizedName": "Office 365 Groups",
"learnMoreUrl": "http://go.microsoft.com/fwlink/?LinkID=525719",
"termsOfServiceBlobUris": [
"https://crmprodnam.blob.core.windows.net/preferredsolution/microsoft_tos_dbd53f75-b571-46ad-b9ce-21b5656b85dd_1?sv=2018-03-28&sr=c&sig=v5iBtDum0N6A0sqyyhIkPECibmpGOKGiSmmm3ALGIR0%3D&se=2022-03-23T19%3A35%3A59Z&sp=r"
],
"applicationVisibility": "All",
"lastOperation": {
"state": "InstallRequested",
"createdOn": "2022-03-22T19:35:59.7425066Z",
"modifiedOn": null,
"errorDetails": null,
"statusMessage": null,
"instancePackageId": "9a44d33b-6055-4c9b-aa4a-4c410a22e9ad",
"operationId": "4fde996a-bf68-413c-b2bf-33f21a7e9afb"
},
"customHandleUpgrade": false
}
次に、Parse JSONアクションを使用して、後続のステップのoperationIDを取得します。
操作の状態のポーリング
ここで、以前の 手順 のoperationIDを使用して定期的にポーリングすることで、アプリケーションのインストールの進行状況を監視します。
Until コントロールの使用
OperationIDをポーリングして Canceled、 Failed、 Succeeded などのターミナル ステータスの 応答 を評価することで、プロセスの完了を効果的に監視します。 これは、Untilコントロールを使用すると簡単に 完了 でき、この条件が満たされるまで継続的にループします。
インストールを監視するために、 アプリケーション インストール ステータス エンドポイント を使用します。 operationId プロパティに前のステップからの出力を設定してください。
GET https://api.powerplatform.com/appmanagement/environments/{environmentId}/operations/{operationId}?api-version=2022-03-01-preview
出力例を以下に示します。
{
"status": "NotStarted",
"createdDateTime": "2022-03-22T20:05:58.9414573Z",
"lastActionDateTime": null,
"error": null,
"statusMessage": null,
"operationId": "523b51a8-6af4-40cd-aa7d-86bddfa6697b"
}
ここから、状態を評価し、それがターミナル値のいずれかである場合は、ループを中断できます。
メールの送信
監視が終了したので、アクティビティの例として結果をメールで共有できます。