Q1.ある精密機器メーカーでは、Dataverse環境を用いて、部署としてモデル化された WH1 と WH2 という 2 つの倉庫の部品在庫を管理しています。
2 つの倉庫のデータは、在庫数量が更新された部品ごとに個別に処理されます。
この会社はプロセスを自動化し、倉庫へ届いた注文をもとに在庫の更新をプッシュしたいと考えています。
Dataverse に対して Power Automate フローを用いて自動化を構築する必要があります。
また、管理作業を最小限に抑えながらこの目標を達成しなければなりません。
どのフローを推奨しますか?
解答を見る
Power Automate の Dataverse トリガーには、スコープやフィルターといった詳細オプションを設定できます。
スコープを指定すると、特定のユーザーや部署が所有するレコードのみをトリガー対象にできます。
したがってスコープを部署に設定すれば、フィルターを併用しなくても要件を満たせるため、E が正解です。
A も実装自体は可能ですが、フィルタリングの設定が加わる分、管理作業を最小限に抑えるという要件に合致しないため不正解です。
PowerAutomate : 「行が追加、変更、または削除された場合」トリガー
Q2.必須フィールドのデータ型を選択する必要があります。
どのデータ型を使用すべきでしょうか?
回答するには、回答領域で適切なオプションを選択してください。
※正解はそれぞれ1ポイントです
解答を見る
「区分」はとり得る値があらかじめ定まっているため、選択リストが最適です。
「終了日」は日付を扱う項目なので、日付のみが適しています。
「トーナメントオーナー」は、オーナーを別テーブルとして用意し、その参照を持たせるのが適切なため、検索が最適です。
Q3.モデル駆動型アプリに、次の JavaScript コードが実装されています。
このコードは、Account テーブルの電話 (telephone1) 列の OnChange イベントにひも付けられています。
var telephone = formContext.getAttribute("telephone1").getValue();

if (!telephone) {
return;
}
var contact = formContext.getAttribute("primarycontactid").getValue();
var data = { "telephone1": telephone };
Xrm.WebApi.updateRecord("contact", contact[0].id, data).then(
function () {
Xrm.Navigation.openAlertDialog("Updated");
},
function () {
var errorOptions = { "message": "Not Updated" };
Xrm.Navigation.openAlertDialog(errorOptions);
}
);
var telephone = formContext.getAttribute("telephone1").getValue();

if (!telephone) {
return;
}
var contact = formContext.getAttribute("primarycontactid").getValue();
var data = { "telephone1": telephone };
Xrm.WebApi.updateRecord("contact", contact[0].id, data).then(
function () {
Xrm.Navigation.openAlertDialog("Updated");
},
function () {
var errorOptions = { "message": "Not Updated" };
Xrm.Navigation.openAlertDialog(errorOptions);
}
);次の各記述について、内容が正しい場合は[はい]を、そうでない場合は[いいえ]を選択してください。
※正解はそれぞれ1ポイントです
| 問題文 | はい | いいえ | |
|---|---|---|---|
| コードが実行され、プライマリコンタクト (primarycontactid) 列に値が設定されている場合、コンタクトレコードの電話 (telephone1) 列がアカウントに合わせて更新される | |||
| コードが実行され、プライマリコンタクト (primarycontactid) 列に値が設定されていない場合、「Not Updated」というエラーメッセージが表示される | |||
| 電話 (telephone1) の値が削除されると、コードが実行され、コンタクトレコードの電話 (telephone1) 列が null に更新される |
解答を見る
1 問目:primarycontactid と telephone1 の双方に値がそろっていないと、contact レコードの telephone1 列は更新されませんので「はい」が正解です。
2 問目:primarycontactid が null の場合、contact[0].id を参照する行でエラーが発生し、成否のコールバックに到達しませんので「いいえ」が正解です。
3 問目:電話番号が削除されると、冒頭の if 文で即 return となり updateRecord が呼ばれないため「いいえ」が正解です。
Q4.ある企業が、Dataverse を基盤に新しいシステムを構築しています。
企業の要件を満たす機能を選択する必要があります。
どのオプションを使うべきでしょうか?
回答するには、適切なオプションを正しい要件へドラッグします。
各オプションは 1 回、複数回、またはまったく使用しなくてもかまいません。
※正解はそれぞれ1ポイントです
選択肢を要件のドロップ欄へドラッグ、またはタップして配置。配置済みの欄をクリックで戻せます(同じ選択肢は複数回使用可)。
一対多のリレーションシップ
多対多のリレーションシップ
自己参照リレーションシップ
解答を見る
テーブルが階層型の自己参照リレーションシップを持つ構成であれば、その階層を利用してモデル駆動型アプリで階層のビジュアル化を設定できるため、1 問目は「自己参照リレーションシップ」が正解です。
あるテーブルのレコードが他テーブルの 1 レコードだけを参照する関係は 1 対多にあたるため、2 問目は「一対多のリレーションシップ」です。
任意のレコード同士が相互に参照できる関係は多対多となるため、3 問目は「多対多のリレーションシップ」が正解です。
モデル駆動型アプリによる階層型データのビジュアル化
テーブル リレーションシップ
Q5.あるアパレルショップは、Power Apps アプリを利用して顧客とやり取りしており、顧客データは Microsoft Dataverse に保存されています。
この店舗は顧客に割引を提供し、カテゴリ内のすべての顧客にグループ割引を割り当てます。
該当するグループ割引は、顧客固有の割引に加算されます。
割引情報は、団体割引 (store_groupdiscount)、個人割引 (store_personaldiscount)、合計割引 (store_totaldiscount) の各列に保存されます。
注文の合計割引が 30% を超える場合、注文が履行・配送される前に、マネージャーが注文を承認する必要があります。
承認が必要になったときにマネージャーへ通知するフローを作成する必要があります。
フローのトリガーはどのように設定すべきでしょうか?
回答するには、回答領域で適切なオプションを選択してください。
※正解はそれぞれ1ポイントです
| 割引情報 | 列 |
|---|---|
| 団体割引 | store_gruodiscount |
| 個人割引 | store_personaldiscount |
| 合計割引 | store_totaldiscount |
解答を見る
トリガーのフィルタリング属性に合計割引の列 (store_totaldiscount) を指定すると、その列が更新されたときだけフローを起動できます。
さらにトリガー条件で合計値が 30% を超えるかを判定しますが、トリガー元のレコード値はtriggerOutputs から取得するのが正しい構文です。
そのため、フィルタリング属性は store_totaldiscount、トリガー条件は triggerOutputs を用いた式が正解です。
フィルター条件
Q6.Dataverse とモデル駆動型アプリがあり、そのモデル駆動型アプリは外部システムと連携しています。
モデル駆動型アプリでレコードが作成されるたびに、ビジネスロジックを実行する計画です。
ただし、そのビジネスロジックの実行が、モデル駆動型アプリの利用者に悪影響を与えてはなりません。
このビジネスロジックを実装する必要があります。
何を使用すべきでしょうか?
解答を見る
非同期処理であれば、ユーザーは画面上で処理の完了を待つ必要がなくなるため、利用者への悪影響を避けられます。
したがって PostOperation ステージに登録した非同期プラグインが適切で、C が正解です。
PreOperation・PostOperation はプラグインの実行タイミング(レコード保存の前か後か)を表し、ほかに PreValidation というタイミングも存在します。
同期処理はユーザーを待たせるため、要件に合いません。
イベント実行パイプライン
Q7.ある大学が Dataverse を導入しました。
いくつかの部門は、商談レコードを使って自部門のプロジェクトへの資金提供を入札します。
各部門の商談は他部門からは参照できません。
ただし、2 つの部門が協力して同じ商談に取り組む必要が生じる場合があります。
ビジネス要件を満たすようにセキュリティを構成する必要があります。
次の各記述について、内容が正しい場合は[はい]を、そうでない場合は[いいえ]を選択してください。
※正解はそれぞれ1ポイントです
| 問題文 | はい | いいえ | |
|---|---|---|---|
| ある部門のメンバーが取り組んでいる個別の商談を、2 番目の部門のメンバー全員に共有し、それらのメンバーに適切な権限を付与する | |||
| 商談に組織レベルでアクセスできるセキュリティロールを作成し、そのロールをアクセスが必要な 2 つの部門のすべてのメンバーに付与する | |||
| ポジション階層セキュリティを使用し、2 つの部門をポジションとして定義する |
解答を見る
要件は「基本的に部門間で非公開だが、2 部門が協力するときだけ同じ商談を共有できる」ことです。
そのため、既定は非公開のまま、必要なときにレコード共有で例外的にアクセスを許可するのが正しいシナリオで、1 問目は「はい」です。
組織レベルのアクセス権を全員へ付与すると他部門にも常に見えてしまい要件に反するため、2 問目は「いいえ」です。
ポジション階層は上下関係に基づく共有であり本要件には合わないため、3 問目も「いいえ」です。
Q8.ある企業には Dataverse 環境があります。
同社は、さまざまな利用者向けにモデル駆動型アプリを作成し、ユーザーがプロジェクトを管理・監視できるようにしています。
財務チームのユーザーから、現在のアプリには必要なエンティティがすべて含まれておらず、既存のプロジェクトフォームにコスト情報が欠落しているとの報告がありました。
コスト情報は財務チームのユーザーだけに表示される必要があります。
財務チームのユーザー用のセキュリティロールは作成済みです。
財務チームのユーザー向けに新しいアプリを作成する必要があります。
どの 4 つのアクションを、どの順序で実行すべきでしょうか?
回答するには、アクションの一覧から適切なものを回答領域へ移動し、正しい順序で並べます。
左の「選択肢」から必要な数を右の「回答エリア」へドラッグ(またはタップ)。回答エリア内でドラッグして順序を入れ替えられます。
- プロジェクトのメインフォームを編集する。名前を付けて保存を選択して新しい財務フォームを作成し、欠落しているコスト列を追加し、財務に関連しない列を削除する。
- Power Apps で財務アプリを共有し、財務セキュリティロールを選択する。
- 新しいモデル駆動型アプリを作成する。プロジェクトテーブルを追加し、財務セキュリティロールを選択する。
- 新しいモデル駆動型アプリを作成する。プロジェクトテーブルを追加し、財務フォームを選択する。
- セキュリティロールを有効にし、財務フォームで財務セキュリティロールを選択する。
- My Apps ページから財務アプリを選択し、財務セキュリティロールを使うようにアプリを構成する。
- ここへドラッグ
解答を見る
まずコスト列を含む財務フォームを作成し、次にそのフォームに財務セキュリティロールを割り当てて表示を制限します。
続いて新しいモデル駆動型アプリを作成し、作成した財務フォームをそのアプリに追加します。
最後に Power Apps で財務アプリを財務セキュリティロールに共有することで、財務チームのユーザーだけがコスト情報を閲覧できる要件を満たせます。
Q9.Web API を作成しています。
この API は次のアクションを実行できる必要があります。
・Microsoft Dataverse テーブルに行を作成する
・既存の行の列を更新する
どの HTTP メソッドを使用すべきでしょうか?
回答するには、適切な HTTP メソッドを正しい要件へドラッグします。
各 HTTP メソッドは 1 回、複数回、またはまったく使用しなくてもかまいません。
※正解はそれぞれ1ポイントです
選択肢を要件のドロップ欄へドラッグ、またはタップして配置。配置済みの欄をクリックで戻せます(同じ選択肢は複数回使用可)。
POST
PATCH
ACCEPT
解答を見る
Dataverse Web API では、行の新規作成に POST、既存行の更新に PATCHを使用します。
そのため、行を作成する要件には POST、既存行の列を更新する要件には PATCH が対応します。
GET は取得用、ACCEPT は HTTP メソッドではなくヘッダーであり、いずれもこの用途には使用しません。
Web API を使用してテーブル行を作成する
Web API を使用したテーブル行の更新と削除
Q10.Power Platform ソリューションのパッケージを作成しています。
パッケージにはカスタムコードとサンプルデータが含まれます。
パッケージには、インストールに必要なすべてのファイルを含める必要があります。
この目的に合わせてパッケージを構成する必要があります。
どの設定を使用すべきでしょうか?
回答するには、回答領域で適切なオプションを選択してください。
解答を見る
ルートフォルダーにあるPackageTemplate.cs(または PackageImportExtension.cs)を編集することで、パッケージにカスタムコードを組み込めます。
一方、ImportConfig.xml には、インポートするソリューションとデータに関する情報を記述します。
そのため、カスタムコードは PackageTemplate.cs、サンプルデータは ImportConfig.xml を編集するのが正解です。
カスタム コードを追加する
ImportConfig リファレンス
