Dataverse for Teamsで開発を行っていた時のお話です。
開発環境 ⇒ 検証環境に上げるときには発生しなかったエラーが、 検証環境 ⇒ 本番環境に上げるときにだけ発生したのでその対応の過程を記していきます!
筆者プロフィール
社会人3年目。大体休日は森や山の中で過ごしています。
将来は自分の庭園や牧場を持ち、朝日とともに起き夜は星を眺め眠り、時々世界中を冒険しながらスローライフを送ることが目標です🐄
概要
ちょっと前のお話になります。
Dataverse for Teams 検証環境からエクスポートしたソリューションを本番環境へインポートした際、以下の依存関係エラーが発生してしまいました。
ただでさえDataverse for Teamsはあまり触ることないのに難しいことを言わないで欲しいわねっ!と思いながらエラー内容を見ていきます
The following solution cannot be imported.
Some dependencies are missing.
msdyn_SourceContorolIntegration
sourcecontroloperationstatus
systemuser_sourcecontroloperationstatus_StartedBy
startedby
ふーん、なるほどわからねえ
for Teams系、ソリューションインポート時には絶対「インポートに失敗しました」って赤い帯出しておきながら成功してるツンデレインポートなのに本当に失敗しているなんてひどいよ....(美少女ボイス)
※ちなみにエクスポートも失敗するのにダウンロードされます。毎回「お、正しく失敗したしエクスポートできてんね~~」ってなるのが淑女の嗜みです。
調査したこと
1,ソリューション内コンポーネントの確認
以下を個別に切り分けてインポートを実施します。
-
キャンバスアプリ
-
Power Automate フロー
-
Dataverse テーブル
結果としていずれの場合も同一エラーが発生しました。
2,依存関係の確認
ソリューションの依存関係を確認したところ、
msdyn_SourceContorolIntegration
への依存が表示されました。
ただし、
sourcecontroloperationstatus
をソリューション内から検索しても実コンポーネントは存在しませんでした。
また、依存関係の表示からは参照元コンポーネントを特定できませんでした。
3,ソリューションファイル解析
エクスポートしたソリューションZipを展開し、solution.xmlを確認したところ、以下の不要な依存関係が多数存在していました。
sourcecontroloperationstatus
msdyn_SourceContorolIntegration
SourceControl
検証段階でいなかった君たちは一体
対応内容
ここでは実際にエラー解消させた手順を見ていきます。
手順
-
ソリューションZIPをバックアップ
-
ZIPを展開する
-
solution.xml をテキストエディタで開く
-
以下キーワードを検索
sourcecontroloperationstatus
msdyn_SourceContorolIntegration
SourceControl
-
不要な依存関係情報を削除。(
<MissingDependency>に囲まれている中身全て削除) -
ソリューションを再度ZIP化
-
インポートを再実施
原因?
Dataverse for Teamsからエクスポートしたソリューションに
msdyn_SourceContorolIntegration
に関連する不要な依存関係情報が残存していました。
実際のアプリ・フロー・テーブルから参照されているわけではなく、ソリューション定義上のメタデータとして残っていたことが原因と考えられます。
今後の運用
閲覧者様の環境で再現するかはわかりませんが、残存していた場合は私のようなインポート依存関係エラーが発生してしまうので不要な依存関係をxmlファイルの中身を手作業でほじくって該当箇所を消す必要がありますね。
ソリューション移行時に同様のエラーが発生した場合は、
-
依存関係画面で参照元を確認
-
コンポーネント単位で切り分け
-
solution.xml内の不要な依存関係を確認
の順番で調査を実施することで原因を突き止めます。
特に、以下の文字列が存在する場合は注意します。
msdyn_SourceContorolIntegration
sourcecontroloperationstatus
SourceControl
これらが実利用していないにも関わらず存在する場合、不要な依存関係情報が残存している可能性が高いです。