Dataverseで複数のデータ操作を行う際、処理の一貫性を保証するトランザクション機能は、堅牢なシステムを構築する上で不可欠です。Power AutomateによるDataverseのトランザクションは「変更セット要求(Perform a changeset request)」によってこの強力な機能を簡単に利用できますが、特定の条件下で「フロー実行は失敗と返されるにもかかわらず、データ自体は正しく更新されている」という、一見すると不可解なエラーに直面しました。
Power Platformも学べる!オンライン学習ならUdemy
Udemy(ユーデミー)は、仕事に役立つスキルから趣味のトピックまで、「学びたい」が見つかるオンライン学習プラットフォームです。Power Apps や Power Automate をはじめとする Power Platform 関連講座も充実しており、業務効率化スキルをしっかり学べます。
今すぐUdemy講座をチェックするはじめに:Dataverseのトランザクション機能の重要性
複数のデータ操作を一つの単位として処理するトランザクションは、データ整合性を担保する上で極めて重要な機能です。Power Automateでは、「変更セット要求(Perform a changeset request)」を利用することで、このトランザクションを実現できます。例えば、「商品マスタの在庫を減らし、売上履歴を追加する」といった一連の処理をグループ化し、いずれかの処理が失敗した場合には全ての処理をロールバック(処理前の状態に戻す)することが可能です。

Power Automateを基本操作から学びたい方は、別途関連サイトや書籍を参考にしていただくことをおすすめします。
現象:フローは失敗するがデータは正常に登録される
先日、あるフローで不可解な現象に直面しました。以下のような処理を行うフローです。

- Power Appsから売上履歴テーブルに追加する商品IDと販売数を受け取る
- 商品マスタから在庫数を取得
- 在庫数と販売数をチェック
- 在庫がある場合、「変更セット要求」内で以下の処理を実行
- 売上履歴に行を追加
- 商品マスタの行を更新 (在庫数の更新)
このフローを実行すると、Power Automateの実行履歴上では「フローの実行に失敗しました。」というエラーが表示されます。

しかし、Dataverseのテーブルを確認すると、「売上履歴」と「商品マスタ」のデータは、どちらも意図した通りに正しく追加・更新されていました。エラーが発生しているにもかかわらず、処理自体は成功しているように見えるこの状況は、開発者を大いに悩ませます。エラーの原因が分からなければ、このフローを本番環境で安心して運用することはできません。
原因の究明:問題は「アクション名」にあった
詳細な切り分けを行った結果、この問題の原因は「変更セット要求」内に配置したDataverseアクションのアクション名が日本語(マルチバイト文字)であることに起因すると特定できました。
具体的には、今回の場合「売上履歴に行を追加」および「商品マスタの行を更新」という日本語のアクション名が、内部的なAPIリクエストの処理において予期せぬエラーを引き起こし、Power Automateの実行エンジンに「失敗」として報告されていたものと推測されます。
一方で、Dataverse側へのデータ操作リクエスト自体は正しく処理されていたため、結果としてデータは正常に登録されるという、一見矛盾した状況が発生していました。
解決策:アクション名を英語(半角英数)に変更する
この問題の解決策は非常にシンプルです。
「チェンジセットの実行」スコープ内にある、Dataverseのデータ操作アクション(「行を追加する」「行を更新する」など)の名称を、すべて英語(半角英数字)に変更します。
変更前:
- 売上履歴に行を追加
- 商品マスタの行を更新
変更後:
- Add_Sales_Record
- Update_Product_Master
アクション名の変更は、各アクションの右上にある「…」メニューから「名前の変更」を選択することで簡単に行えます。
この変更を加えたフローを実行したところ、フローはエラーなく正常に完了し、もちろんデータも正しく登録・更新されることを確認できました。

まとめと考察
今回の事象は、Power Automateのローカライズ(日本語対応)が進む中で見落とされがちな、しかし重要な教訓を示しています。
一般的に、Power Automateのアクション名には日本語を使用でき、多くの場合で問題は発生しません。しかし、「変更セット要求」のように、内部で複数の処理を束ねて一つのリクエストとして送信するような特殊な処理においては、アクション名にマルチバイト文字が含まれていると、今回のような意図しない挙動を引き起こす可能性があるようです。
同様の問題は、ループ処理(Apply to each)など、他のスコープやアクションでも潜在的に発生する可能性があります。
安定したフローを構築するためのベストプラクティスとして、特にDataverseの「変更セット要求」内で利用するアクションや、その他複雑な処理を行うアクションについては、その名称を英語(半角英数字)で命名することが無難です。
この情報が、同様の問題に直面している開発者の方々の一助となれば幸いです。