Dynamics 365 のカスタム開発手法まとめとユースケース

D365 Project

Dynamics 365 のカスタム開発にはさまざまな手法があり、用途や要件に応じて適切な手法を選択することが重要です。以下、それぞれの詳細解説とユースケースを説明します。

Plugin(プラグイン)

概要:

  • サーバーサイド(C#)で実行されるカスタムコード
  • Dynamics 365 のイベント(Create、Update、Delete など)にフックし、ビジネスロジックを実装
  • SDKを通じてEntityのデータ操作が可能

ユースケース:
データの自動補完・検証:

  • 取引先企業の登録時に、必要な関連データ(担当者情報など)を自動作成
    トランザクション管理:
  • Opportunity(商談)が成約したら、関連する Quote(見積)を自動で確定
    外部システムとの連携:
  • データが変更されたら、Azure Service Bus 経由で外部システムへ通知

JavaScript(JS)

概要:

  • クライアントサイド(ブラウザ側)で動作するスクリプト
  • フォームやビューの動的な変更、UIカスタマイズを実装
  • Web API を利用し、データの取得や更新も可能

ユースケース:
フォームの動的制御:

  • 商談の「金額」が一定額以上なら、特定のフィールドを必須にする
    リアルタイムバリデーション:
  • メールアドレスのフォーマットチェックを即座に行う
    データ取得 & UI更新:
  • 取引先企業を選択すると、関連する住所を自動入力

WebResource(ウェブリソース)

概要:

  • JavaScript、HTML、CSS、画像、XML などを格納するためのリソース
  • より複雑なUIを実装する際に利用可能

ユースケース:
カスタム検索パネル:

  • Dynamics 365 のエンティティデータを検索する独自のUIを実装
    チャートのカスタマイズ:
  • Power BI よりも自由度の高いダッシュボードを作成
    画像や動画の埋め込み:
  • 商品データに関連する画像や動画を表示

Power Automate(Flow)

概要:

  • ローコード/ノーコードでのワークフロー自動化ツール
  • Dynamics 365 のデータ変更をトリガーに、他のシステムと連携可能

ユースケース:
見積書の自動送信:

  • 商談が成立したら、自動で PDF 見積書を生成し、顧客にメール送信
    承認ワークフロー:
  • 契約書が作成されたら、マネージャーに承認依頼を送信
    外部サービスとの連携:
  • Salesforce からデータを取得し、Dynamics 365 に登録

Azure Functions / Logic Apps

概要:

  • Dynamics 365 から外部システムとの高度な連携が必要な場合に利用
  • Azure Functions は C# や JavaScript を用いたサーバーレス開発
  • Logic Apps はノーコードで API 連携可能

ユースケース:
データのバッチ処理:

  • 夜間に顧客データを外部システムと同期
    サードパーティ API 連携:
  • Dynamics 365 のデータを Salesforce や SAP と連携
    AI 活用:
  • 顧客からの問い合わせを AI(Azure OpenAI)で解析し、自動分類

PCF(PowerApps Component Framework)

概要:

  • Dynamics 365 の UI を拡張するカスタムコントロールを作成
  • React や TypeScript を用いて開発
  • モデル駆動アプリやキャンバスアプリで利用可能

ユースケース:
カスタム入力フォーム:

  • 直感的な UI(ドラッグ & ドロップ、スライダーなど)を実装
    グラフやデータ可視化:
  • Dynamics 365 のデータをリアルタイムで表示
    外部データとの統合:
  • Google マップを埋め込み、顧客の所在地を表示

Custom API(旧Custom Action)

概要:

  • Dynamics 365 の Web API をカスタマイズし、独自のエンドポイントを提供
  • 他のシステムやワークフローから利用可能

ユースケース:
カスタム業務プロセス:

  • 特定の処理を API 経由で呼び出し、ワークフローをシンプル化
    外部システム連携:
  • ERP システムから注文情報を受け取る REST API を提供
    複雑なビジネスロジックの実装:
  • 取引先情報の一括更新を API 経由で実行

Virtual Entities

概要:

  • 外部データをリアルタイムで参照する仮想エンティティ
  • 実データを Dynamics 365 にインポートせずに利用可能

ユースケース:
外部データを CRM 内で利用:

  • SQL Server にある受注情報を Dynamics 365 の画面で表示
    ERP との統合:
  • SAP の在庫データを仮想エンティティとして表示
    データ同期不要:
  • 外部データを即座に参照し、不要なデータ移行を削減

Embedded Canvas App

概要:

  • キャンバスアプリを Dynamics 365 のフォームに埋め込み可能
  • 柔軟な UI と外部データ連携を実現

ユースケース:
カスタムオーダー管理:

  • PowerApps でオーダー入力 UI を作成し、Dynamics 365 のデータと統合
    外部データ表示:
  • SharePoint に保存された契約書リストを CRM 内で表示
    顧客とのやり取りを最適化:
  • LINE や WhatsApp のメッセージ履歴を CRM に統合

開発手法まとめ

Dynamics 365 のカスタム開発手法 まとめ

手法主な用途特徴・詳細
Plugin(プラグイン)サーバーサイドのビジネスロジックの自動化C#で開発し、レコードの作成・更新・削除などのイベントにフックして実行。データの検証・補完、外部システムとの連携に適用。
JavaScript(JS)クライアントサイドのUIカスタマイズフォームのフィールド制御、リアルタイムバリデーション、Web APIを利用したデータ取得・更新が可能。
WebResource(ウェブリソース)カスタムUIコンポーネントHTML、CSS、JavaScriptを用いて、標準フォームの制約を超えたUIを構築。カスタム検索パネルやダッシュボードに利用。
Power Automate(旧Flow)ローコードでのワークフロー自動化ノーコードでトリガーベースのプロセスを作成。見積書の自動送信、承認フロー、外部システム連携などを実装可能。
Azure Functions / Logic Apps外部システム連携・バッチ処理Dynamics 365 のデータを外部システムと統合したり、AI解析や夜間バッチ処理などをサーバーレス環境で実行。
PCF(PowerApps Component Framework)高度なカスタムUIReactやTypeScriptを用いて、標準UIでは実現できない高度なインタラクティブコンポーネントを作成。
Custom API(カスタムAPI)Dynamics 365 のWeb API拡張既存のWeb APIを拡張し、外部システムやワークフローからカスタムエンドポイントを呼び出し可能にする。
Virtual Entities(仮想エンティティ)外部データのリアルタイム参照Dynamics 365 にデータを格納せずに、外部DBやERPなどの情報をリアルタイムで表示。
Embedded Canvas App(埋め込みキャンバスアプリ)PowerAppsの統合Dynamics 365 のフォーム内にキャンバスアプリを埋め込み、外部データやカスタムUIを表示。

Dynamics 365 のカスタム開発は、サーバーサイド(Plugin、Azure Functions)、クライアントサイド(JavaScript、PCF)、ローコード/ノーコード(Power Automate、Embedded Canvas App)など、さまざまなアプローチがあります。

  • リアルタイムでデータを処理したい場合Plugin
  • フォームの見た目や動作をカスタマイズしたい場合JavaScript / WebResource
  • ノーコードでワークフローを自動化したい場合Power Automate
  • 外部システムと連携し、高度なデータ処理を行いたい場合Azure Functions / Logic Apps
  • 標準UIでは実現できない独自のUIを作りたい場合PCF
  • 外部データを直接CRMに統合し、リアルタイムで利用したい場合Virtual Entities
  • PowerAppsを活用し、柔軟なUIや外部データ連携を実現したい場合Embedded Canvas App

これらのカスタマイズ手法を適切に選択・組み合わせることで、Dynamics 365 の柔軟性と拡張性を最大限に活用し、業務に最適なソリューションを構築できます。

コメント

タイトルとURLをコピーしました