類似した複数環境統合時におけるコードレベルの差分抽出
① カスタマイズした AOT 一覧抽出
- 使用ツール:SQL(
ModelElement
+ModelElementType
) - 条件:
Name LIKE 'Fky%'
などの接頭辞で絞り込み - 結果:環境A・環境BのAOT名リストを取得(差分検出のベース)
② カスタマイズされた AOT のソースコードを抽出
- 使用ツール:
ModelUtil.exe
- 対象モデルのみをエクスポート(カスタムモデル名例:
FkyCustomizations
) .xml
または.xpp
ファイル群として出力- 補足:接頭辞ベースでファイルフィルタも可能(不要部分の除外)
公式:https://learn.microsoft.com/ja-jp/dynamics365/fin-ops-core/dev-itpro/dev-tools/models-export-import
③ ソースコードを GitHub(またはGitリポジトリ)にアップロード
- 環境A, 環境Bそれぞれのフォルダ構成を維持して commit
- ブランチを切る、または別フォルダ構成で push
④ VS Code で差分抽出し、カスタマイズ内容を特定
- 拡張機能:Compare Folders / Git Graph / Diff Folders 等
- 差分行に注目し「何をしているコードか」「追加・削除・変更の影響範囲」をレビュー
.xpp
/.xml
内のクラス・テーブル・メソッド単位で確認
⑤ カスタマイズされていない環境に反映した場合の影響を特定
観点例:
- テーブルフィールドの追加による既存データ構造の変更
- メニュー追加によるUI影響
- 業務プロセスへの影響(ワークフロー、レポートなど)
⑥ 影響がある場合は排除または回避策を策定
例:既存環境のフィールド名が同じ → 競合の回避方法を定義
モデル依存関係の確認(Descriptor.xml
や参照リストから)
条件付きで読み込む・IF文制御などで回避処理を設計
⑦ 統合(データおよびカスタマイズのマージ)を実施
カスタマイズコードの統一(片方の環境に反映)
データの突合とマッピング(フィールド追加や変換があれば対応)
モデルビルド、deployable package の作成
必要に応じてデータアップグレードスクリプト(X++ または Data management)
メリット
どのようにシステムが作られているか把握できるため、追加で開発する際に、コードレベルで作業がイメージでき、結果として、工数と予算算出が正確にできる。
コメントを残す