D365BCの品目マスタの在庫数量をPower Automate(Cloud Flow)で更新できることを説明します。前回は在庫数量を仮想テーブルのモデル駆動型アプリから更新しましたが、裏側で動いているのは同じAPIです(多分)。なので、同じように更新できてしまいます。
おさらいとして、Dataverseで利用可能なBC仮想テーブルの一覧からItem(品目)を確認するとAPI Routeが”v2.0″となっていることがわかります。これはあとで出てきますので頭の片隅に置いておいてください。

では、Power AutomateのCloud Flowを作ります。

インスタントクラウドフローを選択します。

名称を適当に決めて、ボタントリガー起動を選択します。

品目マスタを作成するフローを作るので、名称を入力させることにします。”+Add an input”を選択し、、

Textを選択します。

品目の名前を入れる設定にします。

続いて、BCのコネクタを選択します。2つ表示されますがOnPremiseではないほうを選びます。

Create record(v3)アクションを選択。

レコードを作成するにはまずはEnvironment名、Company名、APIカテゴリを選ぶ必要があります。APIカテゴリは”v2.0″を選択します。最初にDataverseで利用可能なBC仮想テーブルの一覧からItem(品目)を確認するとAPI Routeが”v2.0″と出てきましたが、Power AutomateではAPIカテゴリとしてv2.0が登場します。

続けてレコード作成対象のテーブルとして”Item”を選択します。

すると、Itemテーブルに対応した項目が下に展開されます。DisplayNameにボタントリガーで入力した”Item Name”をセットします。実業務で使うフローであれば、他の項目をいろいろと設定するべきところですが、今回は本筋と関係ないので割愛します。

保存してテストします。

Manualを選択し、Testボタンを押してテストを実行します。

名前を入力して”Run flow”をクリック。

フローが実行されました。成功です。

BCの品目マスタを見てみましょう。在庫数量0で品目が生成されました。成功です。

ここからが本題です。Power Automateに戻り、クラウドフローを修正します。ボタントリガーで初期在庫数量として”Initial Quantity”を入力させます。(数値タイプの入力項目)

Create Recordのアクションに続けて”Update record”アクションを追加します。

Environment Name、Company Name、API categoryを指定し、Table Nameには”Item”を指定します。Row idにはCreate Recordアクションの実行時に取得したidをセットします。

再度テストを実行します。

Item NameとInitial Quantityを入力して”Run flow”をクリック。

Cloud Flowが実行されました。成功です。

BCの品目マスタを確認します。品目が作成され、在庫数量がCloud Flow実行時に指定した10個になっています。成功です。品目No.をクリックしてカードを開きます。

カード画面で在庫数量(Quantity on Hand)の10をクリックします。

すると内訳が表示され、Positive Adjustmentの明細で在庫が10増やされたことが確認できます。Dataverseの仮想テーブルから在庫を増やした場合と同じです。

同じようにクラウドフローで仕入先を作成し、残高を更新しようとしてみました。すると仮想テーブルで残高更新しようとした時と同じように”Balance is read-only”のエラーが表示されました。

まとめると、Dataverseの仮想テーブルもPower Automateのコネクタも実態はAPIなので、APIの仕様制約を理解して使わないといけないということです。
Power AutomateのBCコネクタはWaveを経るごとに充実してきているのでいろいろと試してみると面白いです。ぜひ試してみてください。