Copilot Studioで作成したエージェントをエクスポートしようとすると、現状の仕様ではそのエージェントがいる環境のソリューション一覧に飛ばされる。
Power Platformに慣れてるとソリューションでエクスポートしろってことだな、ってのはなんとなくわかるけど、Copilot StudioからPower Platformを触り始めた方から、移行方法がさっぱりわからないとの質問を頂いた。
ということで、この記事では、作成したエージェントをソリューションに梱包し、別環境(別テナント含む)へエクスポート&インポートする手順を解説。
なぜCopilot Studioの移行に「ソリューション」が必要なのか?
現時点で、Copilot StudioはPower PlatformのALM(アプリケーションライフサイクル管理)に完全に統合されており、エージェントの移行にはソリューションの使用が必須となっている。
これは、Copilot Studioで作成したエージェントが、Power AutomateのフローやAI Builderのプロンプトなど、外部の様々なオブジェクト(依存関係)と密接に連携しているため。
ソリューションを使用して移行することで、エージェント本体だけでなく、これら「エージェントが呼び出す機能」もパッケージ化して、安全に一緒に運ぶことが可能。
ということで、実際にソリューションを使用したエクスポートとインポート手順を以下に解説。
事前準備:移行するエージェントと依存関係の確認


【図解】エージェントをエクスポート/インポートする手順
エージェントのエクスポートとインポートは以下の手順で行う。
- 1. (作成していなければ)ソリューションの作成
- 2. エクスポート
- 3. インポート
手順1. 新規ソリューションの作成とエージェントの追加
まずはエージェントをエクスポートするための「ソリューション」を作成する。
※既にエージェントとエージェントに関わるコンポーネント(カスタムトピック、ツールなど)が1つのソリューションにまとまっている場合は、本手順は不要。

※ちなみにこの導線自体がすでに「わかりにくい」と思う…






以上でソリューションの作成は完了。
手順2. ソリューションのエクスポート(マネージド/アンマネージドの選択)
続いてエクスポート。



※今回はあくまでデモなので「アンマネージド」選択。

Power Platformにおけるソリューションは、環境間の移動(Dev→Prod)において以下の2種類を使い分ける。
- アンマネージド (Unmanaged): 「開発用の生データ」
- 役割: 開発環境用
- 特徴: 中身を編集可能
- 削除時: ソリューションの「ガワ」だけ消えて、中身(アプリやフロー)は環境に残留する
- 使い道: 開発環境の移動、ソース管理システムへのチェックイン、プロトタイプの配布 など
- マネージド (Managed): 「本番用の封印パッケージ」
- 役割: 検証・本番環境用。
- 特徴: 原則として編集不可(ロックされている)
- 削除時: ソリューションごと中身もきれいに一括削除される(アンインストール可能)
- 使い道: テスト環境・本番環境へのリリース など
※本番環境は絶対に「マネージド」というわけではありません。

これでエクスポートは完了。
手順3. 別環境へのインポートと接続設定
最後インポート。




※移行先環境に必要な接続がない場合は『新しい接続』を押して作成し、元の画面に戻って『一覧を更新』を押すと選択できるようになる





これがエージェントの移行(エクスポート、インポート)の流れ。
以下、おまけでCLIを使用した移行の紹介(ただし未検証です)。
【参考】Power Platform CLIでの移行が推奨されない理由
実はPower Platform CLIでもエージェントの移行はできる可能性がある。
1. テンプレートの出力 : pac copilot extract-template
まずは以下のコマンドを使用し、テンプレートを出力する。
pac copilot extract-template ` --environment 【環境ID】 ` --bot 【エージェントID】 ` --templateFileName 【ファイル名】.yaml
2. テンプレートを使用した新規作成 : pac copilot create –templateFileName
そして、以下のコマンドを使用し、先ほど作成したテンプレートを利用し、新しいエージェントを作成する。
pac copilot create --templateFileName 【ファイル名】.yaml

移行できるのはテンプレートに含まれるもののみ
この方法だと、別の環境へ移行できるのは「テンプレート」に含まれるもののみとなる。
- トピック (Topics): トリガーフレーズ、メッセージ、質問ノード、条件分岐などのロジック。
- 変数 (Variables): トピック内で定義・使用される変数。
- システムトピックのカスタマイズ: OnUnknownIntent(わからない場合)などをいじっていた場合、その変更内容。
- エンティティ呼び出し: 標準エンティティやカスタムエンティティを利用する「設定」は含まれる。
- Power Automate フロー本体 (×):
- YAML内にはフローのID(GUID)だけが記述されている。
- 重要: 移行先に「同じIDのフロー」が存在しないと、インポート後にボットがエラーを吐く(「フローが見つかりません」)。フローは別途ソリューションで運ぶ必要がある。
- 接続情報 (Connections) (×):SharePointやOutlookへの接続認証情報は含まれない。インポート時に再接続が必要。
- ナレッジソース (△):仕様上は含まれるはずだけど、「一部のナレッジソースが欠落する」という報告がGitHubで上がっている 。特にSharePoint連携などは不安定な可能性大。
- 環境変数 (×):環境変数の定義自体はDataverse側の話なので、このYAMLには含まれない。
結論:確実な移行にはソリューションを使おう
ということで、正直現時点でCLIを使用して移行する必要性は見つからないので、ソリューションを使用した移行が推奨。





コメント