Dynamics 365 の保守設計 — Upgradeが構造的に難しい理由と、Agent時代の運用モデル

こんばんは。室長こと、吉島良平(Microsoft MVP for Business Applications|Microsoft Regional Director)です。
あ、今日も午前3時。頭は絶好調であります。
さて昨日公開した「Dynamics 365はアップデートのたびに揺れる」に、予想以上の反響をいただきました。
「保守やってます。こういう記事を待っていました、ありがとうございます。」
「チェックリスト、チームに共有しました。」
「もう少し掘り下げた内容が読みたいです。」
嬉しかったです。実は、本稿が続編となります。
今日は二つのことを書きます。
一つは「なぜUpgradeはここまで難しいのか」—技術的な構造の話です。
もう一つは「AIは保守のどこに入ってくるのか、そしてどう設計するか」—Agent時代の運用モデルの話です。
※本記事は、前回の「Dynamics 365はアップデートのたびに揺れる」の続編です。本記事でのCRMは「Dynamics 365 Customer Engagementアプリケーション(Sales、Customer Service、Field Serviceなど)」を指します。
Upgradeはなぜここまで難しいのか
前回の記事でチェックリストを公開したとき、「これだけの確認が必要なんですか」という声がありました。
そうです。でも、なぜそれだけ必要なのか—その「なぜ」を今日は話したいと思います。
Upgradeが難しい根本的な理由は一つです。
Microsoftの変更と、あなたの環境の変更が、独立して走り続けているから。
Microsoftのクラウドサービスは進化を止めません。あなたの会社は業務要件に合わせてカスタマイズを積み重ねます。ISVはそれぞれのタイミングで更新します。連携先のシステムも変わります。それが年単位で積み重なった結果、「Microsoft + あなたの環境」という複合体のアップデートになっている。だから難しいのです。
CRM(Customer Engagement apps)— Solution Layerと依存関係の複雑さ
CRMのUpgradeで難しいのは、Solution Layerの構造と、Component単位の依存関係です。
FO(Finance & Operations apps)— X++ビルドパイプラインとランタイム互換性
FOのUpgradeは、CRMとは質的に異なる難しさを持っています。X++というMicrosoft固有の言語で書かれたカスタマイズが、更新後の環境でも正常に動作するかを検証する必要があるからです。
BC(Business Central)— Major / Minor二層更新とExtension互換性
Business Centralは毎年4月と10月のMajor更新に加えて、Minor更新が継続的に提供されます。更新の種類にかかわらず、導入済みExtensionが適用後の環境で正常に動作することを確認する必要があります。ただし、Microsoftによる事前互換性検証、更新スケジュール、通知および対応プロセスは、Major更新とMinor更新で異なる場合があります。
Integration と Regression Testing — テスト設計の考え方
CRM・FO・BCに共通する難しさがあります。それがIntegration(連携)とRegression Testing(回帰テスト)です。
業務プロセス・法人数・Security Role・Localization・連携先・カスタマイズの組み合わせが増えるほど、確認対象は急速に増えます。すべてを同じ深度で手動テストするのではなく、変更影響分析とリスクに基づいて対象を選ぶことが現実的なアプローチです。
| テスト層 | テスト種別 | 主な担当 | 主な検証対象 | アップデート対応での役割 |
|---|---|---|---|---|
| 🔵 単体層 | Unit Test | 開発者 | 個別ロジック(Plugin / X++ / AL) | 変更されたAPIやメソッドの動作確認 |
| 🔵 単体層 | API / 契約テスト | 開発者 / アーキテクト | APIの入出力・認証・エラー契約 | OData / Dataverse API / BC APIの互換確認。UI構造の変更とは独立してAPI契約を検証しやすい一方、API仕様、認証、権限、データモデル、エラー応答の変更には影響を受けます。APIテストだけで業務プロセス全体を保証できるわけではないため、Integration Testおよび業務プロセステストと組み合わせます |
| 🟡 機能層 | 機能テスト | コンサルタント / キーユーザー | 個別機能が仕様通りに動くかを確認。UIテスト(画面操作・フォーム・表示・ユーザー導線)・帳票テスト(Word/Excel/RDLCレイアウト・ERコンフィグ・フィールドマッピング・計算式)を含む | 画面構造変更に影響を受けやすい。Client Logic・Security・操作性・User JourneyはUIテストが必要。自動化スクリプトはアップデートで壊れやすいため保守コストを考慮する。帳票テスト(Word/Excel/RDLCレイアウト・ERコンフィグ・計算式)は、アップデートによる帳票出力・ERバージョン変更の影響を確認する |
| 🔴 結合層 | Integration Test | 開発者 + コンサルタント | システム間連携・再送・順序・整合性 | Dual-write / Virtual Table / DMF / 外部システム連携の疎通と正確性確認 |
| 🔴 結合層 | 業務プロセステスト | コンサルタント + キーユーザー | 受注・購買・請求・期末締めなどのシナリオ | 業務重要度と変更影響に基づいてリスクベースで対象を絞る。エンドツーエンドの業務検証 |
| 🔴 結合層 | パフォーマンステスト | アーキテクト / 開発者 | 大量データ・同時実行・バッチ・応答時間 | プラットフォーム変更でクエリ最適化が変わった場合の影響確認 |
この表はテストの引き出しです。起点は「Microsoftの変更が何に影響するか」。影響がない層はスキップできます。大変なのは確かですが、すべてをゼロからやり直すのではなく、変化の波及先だけを追う仕事です。
Upgradeが難しいのは、誰かの能力が足りないからではありません。
構造的に難しい仕事なのです。それを理解することが、保守を正しく評価する出発点だと思っています。
AIは保守サイクルのどこに入るか
では、AIはこの難しい仕事のどこを変えられるのでしょうか。
保守の仕事を「サイクル」として分解してみます。
| 保守サイクル | AIが支援できること | 人が判断すること |
|---|---|---|
| 📥 Update情報収集 | Microsoft 365 Copilot Chatなどを利用したリリースノート・What’s New・Deprecations情報の要約・翻訳・抽出。複数製品の変更情報を横断してまとめる。機密資料を扱う場合は、利用するMicrosoft 365 Copilotの契約・ライセンス、Enterprise Data Protectionの適用条件、テナント設定、アクセス権、データ保持・監査要件を、導入時点のMicrosoft公式資料で確認します | 自社環境に関係する変更かどうかの文脈判断 |
| 🔍 影響分析 | GitHub Copilotを利用したX++ / ALコードの調査・参照箇所の検索支援・修正候補の作成。ただし、正式な非推奨検出と互換性判定にはCompiler Warning・AL Code Analyzer・Microsoft公式Deprecated情報を併用する | 影響の重大度判定と対応優先順位の決定。業務文脈を踏まえたリスク評価 |
| 🧪 Regression Test | 変更箇所から影響フローを逆引きしたテストケース案の生成。過去の障害記録からリスクの高いシナリオを提案。テスト結果ログの分析・異常候補の抽出 | 業務的に重要なシナリオの最終判断。「ここは必ずテストする」という優先順位付け。AIの出力の正確性確認 |
| 🚀 Deploy・適用 | 適用手順・事前確認・失敗時のEscalation Plan・復旧方法・代替運用の初稿作成。ただし、Rollback可否と復旧方法は製品・環境・Update TypeごとにMicrosoft公式手順を確認する(SaaS更新では任意のRollbackができない場合がある) | 適用タイミングの最終決定(業務カレンダーとの調整)。Go / No-go判断 |
| 📊 Monitoring | 製品・環境から取得可能なTelemetry、Alert、Exception、Dependency情報を、Application InsightsやAzure Monitorなどの監視基盤へ連携し、ルールまたはカスタムAgentによる異常候補の抽出と初期調査を支援する(取得できるTelemetryの種類、転送方式、保持先は製品・環境によって異なる) | 「これは許容範囲か」の判断。顧客への影響有無の説明 |
| 🚨 Incident対応 | 類似障害事例の検索・提示。症状からの原因仮説リスト生成。初動対応手順の提案。対応が必要な候補をAgentが抽出し、承認後に構成済みConnectorまたはAPI Actionを使ってAzure DevOpsやServiceNowへWork Item / Ticketを登録する | 顧客への状況説明と関係管理。根本原因の最終判断。対応完了の判定。チケット起票の承認 |
| 📝 ナレッジ化 | 障害報告書・ポストモーテムの初稿生成。今回の対応内容をナレッジとして整理・蓄積。AIの一次要約・候補生成については、情報の完全性・誤検知・見逃しを人または自動検証機構で確認する | 「何を学んだか」の意味づけ。次回のプロセス改善への落とし込み |
AIは「収集・検出・提示・初稿」が得意。人は「判断・関係・文脈・承認」を担う。
Microsoftの変更情報と顧客環境固有のカスタマイズ・依存関係・過去障害・業務重要度を統合し、常に正確な影響判断を自動で行うには、データ整備・権限設計・評価・監査・人による承認が必要です。AIは保守を「なくす」のではなく「変える」のです。
Copilot・Agentは今どこまで来ているか
設計案:保守運用を捉える5つの視点
ここからは、「保守ナレッジをどう整理し、AIに渡せる形にするか」という設計の話をします。一つの正解があるわけではなく、目的や組織の成熟度によって向いている考え方が異なります。五つの視点を紹介します。
案1:ALM / DevSecOpsパイプラインとして設計する
保守対応は、情報を整理する話である前に、変更を安全に本番へ届ける話です。そう考えると、ALM(Application Lifecycle Management)とDevSecOpsパイプラインは、変更を安全に本番へ届けるという目的に直接対応する設計モデルです。
案2:Incident / Problem / Change Managementとして設計する
ITサービスマネジメントで一般的なIncident、Problem、Change、Knowledgeの考え方に近い整理です。保守の仕事を「Incident(今起きている問題を復旧)」「Problem(再発原因を分析)」「Change(Microsoftの更新を管理)」「Knowledge(解決策を蓄積)」の4区分で整理します。
| 区分 | 保守での役割 | AIの役割 |
|---|---|---|
| Incident | 発生中の障害を復旧する | ログ検索・類似事例検索・初動案の提示 |
| Problem | 再発原因・構造原因を分析する | 原因候補・影響範囲・再発パターンの分析支援 |
| Change | Microsoftの更新・修正・設定変更を管理する | 変更影響候補の生成・テストシナリオ案・承認資料の初稿 |
| Knowledge | 解決方法・判断基準・再発防止策を蓄積する | 報告書・手順書・FAQ・検索用ナレッジの初稿生成 |
この設計の強みは、保守業務の責任分界とチケット運用が明確になることです。ServiceNow・Azure DevOps・Power Platform ALMとの相性も良いです。
Dynamics 365自体を保守業務のプラットフォームとして使う
案2のIncident・Problem・Change・Knowledgeの運用を、Dynamics 365のモジュールで構成することもできます。Case Management(Dynamics 365 Customer Service)はIncident・Problemの起票・エスカレーション・SLA追跡に、Knowledge ManagementはKB記事の蓄積・検索・Copilotによる提示に、Contact Center(Dynamics 365 Contact Center)は顧客からの問い合わせチャネル統合に対応します。「Dynamics 365を保守する仕事」を「Dynamics 365を使って回す」というEnd-to-Endな構成は、Microsoft製品スタックの強みの一つです。
案3:Dependency Graph(依存関係グラフ)として設計する
技術者にとって最も本質に近い考え方です。保守の核心は「どのMicrosoft変更が、どのカスタマイズ・API・帳票・権限・業務プロセスに影響するかを辿れること」にあります。
Microsoft変更ノード → Dataverse列 → Plugin / Flow / PCF / 帳票
Microsoft変更ノード → FOデータエンティティ → OData連携 / DMF / 外部システム
Microsoft変更ノード → BC標準オブジェクト → AL Extension / PTE / AppSourceアプリ
このモデルでは、AgentはGold層だけを静的に参照するのではなく、変更ノードから依存ノードを探索し、関連するテストケース、過去障害、確認済みのGold層情報を組み合わせて、未確認の依存関係や対応候補を提示します。対応チケットの起票は承認後に実施します。実現にはカスタマイズ台帳・コードリポジトリ・テスト結果・障害履歴をグラフ構造で管理する基盤整備が必要です。
案4:Digital Thread(変更のデジタルスレッド)として設計する
一つの変更について、Microsoftの変更から顧客の意思決定まで「一続きの証跡」として管理する考え方です。経営層への説明にも使いやすいです。
Microsoftの変更 → 自社資産の特定 → 影響分析 → テスト結果 → 承認 → 本番適用 → 監視 → 障害 → 改善—この一連の流れを切れ目なく追跡できる設計です。Change Intelligence(変更に関するインテリジェンス)として、保守対応の品質と透明性を経営・顧客・監査の視点で示せます。
案5:Medallion Architectureの発想を転用する
※ここから紹介する3層は、Microsoftが保守ナレッジ管理のReference Architectureとして定義したものではありません。Microsoft FabricのMedallion Architectureが持つ「Raw Dataを段階的に検証・変換し、利用目的に適したData Productへ高める」という考え方から着想を得た、本記事独自の整理です。
以前このブログで「データ移行とは、AIに経験・証跡を引き継ぐこと」と「続・データ移行はAIへの経験伝承」で紹介したMedallion Architecture(Bronze / Silver / Goldによる段階的なデータ品質向上)の考え方を、保守ナレッジのパイプラインに転用するとどうなるか、という発想です。
5つの視点をどう使うか
これらは互いに排他的ではありません。実装上は組み合わせることができます。
Fabric / OneLakeでBronze / Silver / Gold(案5)として情報を蓄積・品質化し
↓
Dependency Graphで変更と自社資産の依存関係を管理し(案3)
↓
ALMパイプラインで修正・テスト・承認・適用を実行し(案1)
↓
Incident / Problem / Change Managementでチケットと責任分界を管理し(案2)
↓
Digital Threadとして変更から顧客説明まで一続きに追跡する(案4)
どこから始めるかは、組織の成熟度と目的によります。
「まず変更情報の収集を整理したい」ならBronze層から。「AI Agentに保守問い合わせを任せたい」ならGold層の整備から。「説明責任と監査を強化したい」ならDigital Threadから。どこからでも始められます。
まとめ — Agent時代の保守チームの姿
AIが保守に入ってくると、保守の仕事は「なくなる」のではなく「変わる」と私は思っています。
変わるのは、定型作業の比重です。リリースノートの一次要約、ログからの異常候補抽出、定型チェックの実施支援—こうした作業をAIが担えるようになります。ただし、情報の完全性・誤検知・見逃しは人または自動検証機構で確認する必要があります。
残るのは、判断です。影響の重大度を決める。顧客に何をどう伝えるか決める。今回のリリースで何を優先するか決める。過去の経験と業務文脈を踏まえてリスクを評価する。
保守チームがAgent時代に求められるのは、「AIが出した候補を正しく判断できる人」です。
AIが「このAPIは廃止されています、影響候補が17件あります」と言ったとき、その17件の中から「これが本当に問題」「これは今は関係ない」を見分けられる人。
その判断力は、AIだけに委ねるのではなく、現場経験、レビュー、ケース学習、業務理解を通じて人が身につけ、継続的に磨く必要があります。
一つ聞いてもいいですか?
あなたのチームの保守ナレッジは、どこに蓄積されていますか?
担当者の頭の中にあるなら、その人が異動したとき何が残りますか?
AIに渡せる形になっていますか?
Agent時代の保守力は、「蓄積したナレッジの質」で決まります。どの視点から始めるにしても、今から整備しておくことが、将来の保守品質、対応速度、説明責任、AI活用の土台になります。
前回の記事で「保守は、プロジェクトより難しい仕事です」と書きました。
Agent時代になっても、それは変わりません。むしろ、AIを正しく活用するための判断力が加わる分、求められる能力は広がります。
でも、それはチャンスでもあります。
定型作業をAIに渡すことで、本当に価値のある「判断・関係・文脈・承認」の仕事に集中できる。保守の仕事の価値が、より見えやすくなる時代が来ます。
保守・サポートの現場にいる皆さんへ。Agent時代の保守は、あなたたちが主役です。
AIはツールです。使いこなすのは、現場を知っているあなたたちです。
Let’s Enjoy our DX365LIFE!
