長いタイトルでとてもニッチな内容ですが、以下のようなエラーがPowerAppsにDynamics 365 Finance and Operations(D365FO)のData Entity追加時に出たことはないでしょうか?
データ ソースの追加で問題が発生しました。もう一度やり直してください。
主キー列 ’ItemNumber’ は、読み取り専用で省略可能、または書き込み可能で必須である必要があります。
あまりにニッチ過ぎて、何を言っているかも伝わらないかもしてないのでスクリーンショット撮って見ました。
目次
どんな事象か?
D365FOのインスタンスにあらかじめPowerAppsで接続しておき、データソースにD365FOの標準Data Entity “WarehousesOnHand”を選択して接続しようとしてみます。
しかし、何やらエラーが起きてしまい、データソースに追加することができません。そのエラーメッセージは以下です。
私はこれのことを言っています!!
‘IsPublic = Yes’ のData Entityなんだけども、なぜかPowerAppsからは呼び出すことができない。ちなみにODataのWeb-API経由での呼び出しではちゃんと返ってくる。そんな事象を言っています。マニアックですね…
私としてはOn-Hand InventoryのEntityでしかこの類のエラーは確認したことはありませんが、他にもあるかもしれません(教えていただけると有りたいです)。
今回の事象は、主キーとなっている ‘ItemNumber’ フィールドのプロパティが原因でエラーですよと言う意味だと書いてあります。
今回は、こういったケースの対処案を考えてみようと思います。
対処案
以下のような案が考えられるかと思います(他にもあると思いますのでアドバイスいただけるとありがたいです。)。
- 直接、プロパティを変更
→ Overlayering NGで却下 - ItemNumberのEDTをExtensionしてプロパティを変更
→ このPowerApps連携以外でもEDTを使っているケースが有り影響しちゃいそうでNG - このPowerAppsからの呼び出しのときだけItemNumberのプロパティ値を変更するMethodを追加
→ たぶんいける。OK(でもPowerAppsのときだけ、をどう処理するか?はよく分からない。案4との組み合わせなら行けそう。) - Data EntityをコピーしてItemNumberのプロパティを変更
→ 簡単。OK - マイクロソフトにエスカレして修正してもらう。
→もちろんアクションするけどね。お任せっきりでもどうかと。
5もやりつつ並行して我々側での対処を進めるとすると、3か4なら行けると思います。
今回、簡単で運用もし易い4のやり方を紹介します。
Data Entityの開発による迂回策
繰り返しになりますが、紹介するのは4番目の案です。
4. Data EntityをコピーしてItemNumberのプロパティを変更
Remote DesktopでD365FOの開発環境に入り、Data Entityのコピーを行っていきます。
今回は新しいmodelで始めることとします。Modelの作成手順は以下に代表的な例を上げていますのでご不明な方はご参考になさってください。
Application ExplorerからコピーしたいData Entityの名前でFilterしてProjectへDuplicateします。
この操作で簡単にData Entityをコピーして作成することができます。Duplicate直後の状態はEntity名の終わりにCopyと付いているので、必要があれば変えて差し支えありません。
Entityをダブルクリック/Open designerにて編集画面を開き、Fieldsに在る ‘ItemNumber’ のプロパティを以下のように変更します。
SecurityのPrivilegeをこのData Entity用に追加し、SolutionのBuild&DBシンクロを行い、環境に開発したData Entityを追加します。
環境に開発を適用後、LCSからIISをRestartします。
ちゃんと登録できるようになっています
PowerAppsに戻ってデータソースを検索するとちゃんと発見できます。
実際に追加できるようになっています。
さいごに
On Hand Inventoryの在庫情報を使ったPowerAppsのアプリケーション作成は別の機会に紹介いたします。今回はこのFixだけで。
最後までご覧頂きありがとうございました。