「ノックフォワード」しないデータ連携—ERPとDataverse、パスの繋ぎ方

こんばんは。室長こと、吉島良平Microsoft MVP for Business Applications | Microsoft Regional Director)です。

皆さん、週末をいかがお過ごしでしょうか。

今日は、ラグビーリーグワンの試合をJ SPORTSで観戦していました。

そんな中、山口良治監督の訃報に触れる一日となりました。山口先生は、伏見工業高校ラグビー部の監督としてチームを日本一に導き、「泣き虫先生」の愛称で多くの人に親しまれ、後に『スクール☆ウォーズ』のモデルにもなられた方です。決勝戦では大阪工大高校と激闘を繰り広げ、最後は劇的なトライで僅差の勝利を収め、高校ラグビーの頂点に立たれました。心よりご冥福をお祈りいたします。

また、本日サントリーサンゴリアスは惜しくも敗れましたが、3位決定戦は中村亮土選手、流大選手、垣永真之介選手の引退試合となります。日本代表として長年にわたり体を張り続けた選手たちの最後の雄姿を、しっかり見届けたいと思います。

さて、ラグビーには「ノックフォワード」という反則があります。以前は「ノックオン」とも呼ばれていましたが、現在はワールドラグビーの規則改定により正式名称が変更されています。ボールを前方に落としてしまう反則で、せっかく繋いできたパスが一瞬で途切れてしまう、あの場面です。ラグビーはボールを前に投げることができないスポーツです。だからこそ、後ろへのパスを繋ぎ続け、最後にトライを取りに行く。その流れの中で、一度でもボールが前にこぼれてしまうと、それまで積み重ねてきた攻撃はすべて途切れてしまいます。

実は、データ連携でも同じことが起きます。ERPに蓄積された大切なデータが、システムの境界で途切れてしまう。Power PlatformやDataverseに渡したいのにうまく繋がらない。あるいは繋がったとしても、「どこにデータが存在しているのか」が見えなくなってしまう。これはまさに、データの世界における「ノックフォワード」です。

「信は力なり。」

山口先生のこの言葉が、頭を離れません。

システム間の連携も、信なくしては成り立ちません。ERPがDataverseを信じ、DataverseがERPを信じる。その信頼の経路をどう設計するか—それがそのまま、システムの力になります。Virtual Tableは、その極致とも言える存在です。データをコピーしない、移動させない。ERPにあるデータを、そのまま信じて参照する。信頼があるからこそ、複製せずに済むのです。

今日は、その「信じ方の設計」について整理してみます。

本記事では、Dynamics 365 Finance & Operations(FO)およびBusiness Central(BC)をシステム・オブ・レコードとした前提で、DataverseとVirtual Tableをどのように使い分け、どこでデータを保持し、どこで参照させるべきかという「データアーキテクチャ設計」を整理していきます。

DataverseとVirtual Table、どんな時に使うの?

ここで重要なのは、DataverseとVirtual Tableの機能比較ではなく、「ERP(FO / Business Central)を中心にしたデータの置き場所の話」です。

もう少し、DataverseとVirtual Tableについて情報を整理しておきますね。

データフロー図

機能図

ERP(FO / BC)を中心に据え、Dataverseは業務データ、Virtual Tableは参照レイヤーとして分離することが設計の基本です。

ERPとDataverse / Power Platformを繋ぐ実例 10選

▮ DataverseとVirtual Tableを使う代表的なシーン

ERPとDataverse / Power Platformを繋ぐ実例 10選

01

名刺データから顧客マスタを自動作成

名刺スキャンアプリやOCRで読み取った情報をDataverse経由でERPの得意先マスタに自動登録。営業担当者が手入力する手間をゼロに。

Data Sync

02

Dynamics 365 CRM → ERPへの顧客・案件連携

D365 SalesのAccount・ContactをERPの得意先マスタと双方向同期。QuoteからSales Order・請求まで、CRMとERPをシームレスにつなぐLead to Cashフローを実現。

Data Sync

03

E-CommerceサイトからERP受注を自動作成

ECサイトでの購入をトリガーに、Power AutomateやAPIを通じてERPに受注データを登録し、Virtual Tablesを通じて在庫確認や注文状況をリアルタイムに参照。在庫確認から受注確定までの一連の流れを効率化。(※受注のようなトランザクション処理はAPI経由での登録が基本となる)

Virtual Tables

04

Power Appsタイムシート → プロジェクトモジュール連携

現場作業員がPower Appsで入力した工数・時間データを、Virtual Tables経由でERPのプロジェクト仕訳帳にリアルタイム反映。原価管理の精度が格段に上がる。

Virtual Tables

05

Power Apps製造実績 → 生産管理モジュール連携

製造ラインのタブレットからPower Appsで入力した生産実績・出来高データをERPの製造仕訳帳・出来高仕訳帳に自動連携。ペーパーレスと原価リアルタイム化を同時に実現。

Virtual Tables

06

Power Apps修理・サービス実績 → サービスモジュール連携

フィールドエンジニアがPower Appsに入力した修理内容・作業時間・使用部品をERPのサービス受注・作業報告に直接書き込み。現場と経理の情報ギャップを解消。

Virtual Tables

07

Power Apps棚卸データ → 在庫管理モジュール連携

倉庫担当者がスマートフォンのPower Appsでスキャン・カウントした棚卸結果を、ERPの棚卸仕訳帳に直接反映。Excel転記ミスや入力漏れをゼロに。

Virtual Tables

08

ERP請求書確定 → 承認フロー自動起動

ERPで請求書が作成されたイベントをWebhookでキャッチし、Power AutomateでTeams通知・承認フローを自動起動。経理部門の確認、売上計上処理スピードが劇的に向上。

Webhook

09

ERP在庫アラート → 他システム連鎖処理

ERPの在庫が安全在庫を下回ったBusiness EventsをDataverseが受信し、自動発注依頼の作成やサプライヤーへのメール送信を連鎖的に実行。

Business Events

10

Power BI・Microsoft FabricでERPデータをリアルタイム分析

Data SyncでERPデータをDataverseにコピーし、Power BIやFabricで経営ダッシュボードを構築。売上・在庫・原価をリアルタイムに可視化して意思決定を加速。

Data Sync + Power BI

Virtual Tables(データはERPにあり、Dataverseからリアルタイム参照) Data Sync(DataverseにコピーしERPと同期)
Webhook(ERPイベントをリアルタイムにキャッチ) Business Events(ERPアクションをDataverseに伝播)
Data Sync + Power Platform(組み合わせ活用)

いかがでしょうか。製造現場の実績入力、フィールドサービスの修理報告、倉庫での棚卸、ECからの受注、営業のCRM連携—ERPと外の世界を繋ぐシーンは、実は身近なところにたくさんあります。そしてこれらのシーンを支えているのが、Dataverseの4つの連携メカニズムです。

BCとFOのDataverse連携:4つのメカニズム

MicrosoftのERP製品であるBusiness Central(BC)とFinance & Operations(FO)、どちらもDataverseと連携できますが、その仕組みは同じではありません。

まずBCから整理します。MS Learnの統合概要ページには、BCとDataverseの連携方式として4種類が明記されています。

BCとDataverseの連携には、BCとDataverse間でデータをレプリケートするData Synchronization、Business Central APIを経由したVirtual TablesによるData Virtualization(CRUD対応)、WebhookによるData Change Events(CUD)、Business Eventsの4種類があります。

Data Synchronization — データをDataverseにコピーする

Dataverseを通じて、あるDynamics 365アプリから別のアプリへ、一方向または双方向でnear-real timeにデータを同期することができます。たとえばBCとDynamics 365 Salesを連携させる場合、Sales側で受注を作成すると、BCに同期され、逆にBC側の在庫状況をSalesから確認することができます。

データはDataverse側に永続化されます。先ほどのユースケースでいえば、「①名刺→顧客マスタ」「②D365 CRM↔ERP」「⑩Power BI・Fabric分析」がこのアプローチです。

Virtual Tables — データはERPに置いたまま、Dataverseから操作する

「Virtual EntitiesはDataverse上に「テーブルの定義(窓口)」として登録されています。Power AppsやPower Automateからは通常のDataverseテーブルと同じように見えます。

BCの場合、Virtual TablesはBC側のAPI Pagesを通じて公開されたAPIを使用します。Dataverse側からはVirtual Tablesは通常のテーブルと同様に見えます。Dataverseにデータのコピーはつくられず、データはBC側で完全に管理され続けます。

*FOの場合、Virtual EntitiesはFO側のData Entitiesを通じて公開されたAPIを使用します。Dataverse側からはVirtual Entityは通常のテーブルと同様に見えます。Dataverseにデータのコピーはつくられず、データはFO側で完全に管理され続けます。

ERPがSingle Source of Truth(データの一元管理)のまま、Power AppsやPower AutomateからERP側のデータを操作することができるのです。

注意)CRUDの可否はERP側のエンティティ設計や公開方式に依存します。

Read:OK

Write(CUD):プロバイダ依存

BCの場合は、API PageのInsertAllowed・ModifyAllowed・DeleteAllowedプロパティ設定に依存します。

*F&Oの場合は、Data EntityのアクセスレベルプロパティとODataの公開設定に依存します。

データの二重管理が発生しないのが最大のメリットで、「③ECからの受注(受注登録はAPI等、Virtual Tableは参照用途)」「④タイムシート」「⑤製造実績」「⑥修理実績」「⑦棚卸」がこのアプローチです。

Webhook(Data Change Events)— ERPのイベントをリアルタイムにキャッチする

ERPでデータが作成・更新・削除されたタイミングをWebhookで通知し、Power Automateのフローを起動します。

「⑧請求書確定→承認フロー自動起動」がこのアプローチです。

ERPの処理が完了した瞬間に外部システムを動かしたい場合に有効です。

Business Events — ERPのアクションをDataverseに伝播する

Business EventsはWebhookよりも「業務アクション」に近い粒度で、イベントを発火させる仕組みです。

「⑨在庫アラート→連鎖処理」のように、ERPのビジネスプロセスの結果をDataverseを介して、他のDynamics 365アプリやPower Appsに伝播できます。

では、FOは何が違うのか

Dual-writeはCustomer EngagementアプリとFOアプリ間のほぼリアルタイムな双方向連携を提供する「すぐに使えるインフラ(out-of-box)」です。

FOでのデータ変更はDataverseへの書き込みを引き起こし、Dataverseでの変更もFOへの書き込みを引き起こします。

BCのData Synchronizationに対応する仕組みがFOのDual-writeですが、自動・双方向・密結合という点でその性格が異なります。

そしてVirtual Entitiesについては、BCのVirtual Tablesと同様に、データをFO側に置いたままDataverseから操作できますが、技術的な経路が違います。

DataverseからFO Virtual Entitiesへの呼び出しは、Virtual Entities Plugin → CDSVirtualEntityService Web API → FOのData Entity→物理テーブルという経路を通ります。

すべての操作でFOのエンティティが直接呼び出されるため、そのエンティティや背後のテーブルのビジネスロジックを確実に実行できる構成になっています。

BCはAPI Pagesが直接の入口なのに対し、FOはData Entitiesという抽象レイヤーを経由します。FOのビジネスロジックが呼び出される設計になっているわけです。

もう一点、FOとDataverseの接続には重要な注意点があります。

FOとDataverseの接続は強く結合されるため、無効化(切断)や再構成には注意が必要です。

特にDual-writeを無効化・アンインストールした場合、Dataverse側のデータやマッピングが課題となる可能性があり、実運用では「戻す前提」での設計はお勧めできません。

BCとFOのDataverse連携の違い

整理すると、こうなります。

まとめ:BCとFOのDataverse連携の違い

【 BC の Dataverse 連携 】

BC──→Dataverseコピー・永続化

BC───Dataverse仮想化(BCにデータあり)

BC──→Power AutomateWebhook

BC──→DataverseBusiness Events

【 FO の Dataverse 連携 】

FODual-writeDataverse双方向・リアルタイム同期(設定依存)

FO───DataverseVirtual Entities(FOにデータあり)

比較軸 BC FO
データコピー(同期) Data Synchronization Dual-write
データ仮想化 Virtual Tables
API Pages 経由
Virtual Entities
Data Entities 経由
仮想化時のデータ格納場所 BC 側 FO 側
双方向自動同期 なし Dual-write で対応
イベント連携 Webhook & Business Events

BCはメカニズムが4種類と明確に整理されており、用途に応じて選択できる柔軟な設計です。 Virtual TablesでSingle Source of Truth(唯一の情報源→データの一元管理)を守りながら、Power Platformと繋ぐか、Data Syncでデータをコピーしてより広いPower Platform活用を目指すか—それぞれの業務要件に合わせて使い分けができます。

一方、FOのDual-writeはエンタープライズ規模でのCEアプリとのシームレスな統合を前提とした密結合アーキテクチャです。 接続やデータ同期が強く結びつくため、無効化や再構成時にはデータやマッピングに影響が出る可能性があり、導入前に設計をしっかり固めることが求められます。

勘のいい方は、気付きましたね。そうです。そうなんです!

「データをDataverse側にコピーして持たせるべきか(同期)、それともERP側にあるデータをそのまま見に行くべきか(仮想テーブル)」

という判断基準を、お伝えしたかったのです。

どちらを選ぶべきか? — Data Sync vs Virtual Table 判断ガイド

📦 Dataverse同期(Data Sync / Dual-write)

データをDataverse側にコピー

📊

大量データを分析・AI処理したい

Power BIで大量データを可視化したり、CopilotやAgentに読み込ませて高度な推論をさせる場合は、Dataverse側にデータが実体として存在している方がパフォーマンスが圧倒的に有利。

アプリの応答速度(UX)を最優先したい

スマホアプリ(Power Apps)から瞬時にデータを呼び出したい場合、ERPのAPIを毎回叩くより同期済みデータにアクセスする方がサクサク動く。

🔍 仮想テーブル(Virtual Table / Entity)

ERPのデータをそのまま直接見に行く

⏱️

「今」のリアルタイム性が絶対条件

在庫数や与信枠など1秒でもズレると業務に支障が出るデータは、コピーを持たずERPを直接見に行くべき。同期のタイムラグは致命的。

💰

ストレージコストと二重管理を抑えたい

Dataverse Capacityは貴重なリソース。ERPの膨大な明細データをわざわざコピーして格納するのはコストの無駄。参照するだけならVirtual Tableで十分。

🤔 迷ったときの判断フロー

データを
分析・AI処理
したいか?
YES
Power BI / Copilot / Agentに食わせる、大量データを処理する
Data Sync
NO
参照・表示だけ、またはリアルタイム性が重要
Virtual Table

1秒のズレが
業務に影響
するか?
YES
在庫数・与信枠・価格など即時性が必須のデータ
Virtual Table
NO
多少のタイムラグは許容できる、集計・レポート用途
Data Sync

アプリの
応答速度が
最優先か?
YES
スマホアプリ・現場アプリでサクサク動かしたい
Data Sync
NO
ストレージコストを抑えたい、データ二重管理を避けたい
Virtual Table

<Dataverseへの同期(Data Sync / Dual-write)を選ぶべきケース>

データを使ってゴリゴリ分析・処理をしたい時:

Power BIで大量データを可視化したり、AI(Copilotや自律型エージェント)にデータを読み込ませて高度な推論をさせたりする場合は、Dataverse側にデータが「実体」として存在している方が圧倒的にパフォーマンスが良いです。

アプリの応答速度(UX)を最優先する時:

スマホアプリ(Power Apps)から瞬時にデータを呼び出したい場合、ERPのAPIを毎回叩くより、Dataverse内にある同期済みデータにアクセスする方がサクサク動きます。

<仮想テーブル(Virtual Table / Entity)を選ぶべきケース>

「今」のリアルタイム性が絶対条件の時:

在庫数や利用可能な与信枠など、1秒でもズレると業務に支障が出るデータは、コピーを持たずにERPを直接見に行くべきです。

データの二重管理・容量(ストレージコスト)を抑えたい時:

Dataverseのストレージ容量(Dataverse Capacity)は貴重。ERP側にある膨大な明細データをわざわざDataverseにコピーして格納するのはコストの無駄になります。

BCとFOの「裏側の仕組み」の違い、ここが肝

表でも少し触れましたが、Business Central(BC)とFinance & Operations(FO)では、仮想テーブルや同期の「信頼性」のレベルが違います。

BCとFOの「裏側の仕組み」の違い — エンジニア・アーキテクト視点

比較軸 🔵 Business Central(BC) 🟢 Finance & Operations(FO)
仮想化の
入口
API Pages
BCのOData API Pageを経由。プロパティ設定(InsertAllowedなど)やALコードの書き方で動きが変わる。
Data Entities
FOのData Entities抽象レイヤーを経由。すべての操作でFOのエンティティが直接呼び出される。
ビジネス
ロジックの
実行
設計次第
開発者がAPI Pageに意図的に実装しないと、検証ルールや自動計算が走らない場合がある。「ただ繋げばいい」わけではない。
確実に実行できる構成
Power AppsからFOを操作した場合でも、背後のビジネスロジック・検証ルール・自動計算を確実に実行できる構成になっています。トランザクション整合性が保たれる設計。
同期方式 Data Synchronization
near-real time。一方向または双方向で設定可能。
Dual-write
ほぼリアルタイムの双方向自動同期。CEアプリ(Sales / Service)との密結合統合が前提。
接続の
可逆性
可逆
接続・切断を比較的柔軟に変更できる。
要注意
FOとDataverseの接続は切断・再構成に慎重な設計が必要。一度接続するとデータフローが密結合になる。
注意点 開発者・アーキテクトが意図を持って設計しないと、予期せぬ挙動・データ不整合のリスクがある。 非常に強力な構造だが、パフォーマンスやデータ整合性に影響が出るケースもあるため、設計・運用には専門知識が必要。

DXプロジェクトの成否を分ける「データの配置・パスの設計」

⚠️

「とりあえず仮想テーブル」は危険

BCの場合、API Pageの設計が不十分だとビジネスロジックが動かず、データ不整合が発生するリスクがある。

⚠️

「なんとなく全部同期」もNG

Dataverse Capacityは有限。膨大なERP明細データを全部コピーすれば、コストと複雑性が跳ね上がる。

🏉

「意図的に使い分ける」がプロの設計

リアルタイム性・コスト・AI活用・UXという業務要件から逆算して、4つのアプローチを意図的に選択する。

🚀

AIエージェント時代の「データのパス設計」が、DXの成否を分ける

Sales Agent・Payables Agent・Expense Agentなど、ERPへのAI組み込みが加速する2026年。
「どのデータをDataverseに置いてAIに食わせ、どのデータをERPの中に安全に閉じ込めておくか」——
この設計判断こそが、DX365プロジェクトのアーキテクトに求められる核心スキルです。

<FOのDual-writeとVirtual Entitiesは「エンタープライズ用途において非常に強力な構造」>

FOは、仮想テーブル(Data Entity)を通した時でも、背後にある複雑な「ビジネスロジック(検証ルールや自動計算)」がしっかり走る仕組みになっています。Power AppsからFOのデータを操作した場合でも、すべての操作でFOのエンティティが直接呼び出されるため、そのエンティティや背後のテーブルのビジネスロジックを確実に実行できる構成になっています。これにより、トランザクション整合性が保たれるように設計されています。ただし、設計や使い方次第では、パフォーマンスやデータ整合性に影響が出るため、その点には注意が必要です。

<BCのVirtual Tablesは「設定次第」>

BCの場合は、API Pageという仕組みを経由します。これの InsertAllowed などのプロパティ設定や、背後のAL言語のコードの書き方次第で動きが変わるため、「ただ繋げばいい」わけではなく、開発者・アーキテクトが意図を持って設計しないと予期せぬ挙動になるリスクがあります。

「BCとFOは同じMicrosoft ERPファミリーでも、Dataverse連携の設計思想は別物」—これがエンジニア・アーキテクトとして押さえておくべき重要なポイントです。

2026年現在、ERPの世界にも「AIエージェント(Sales Agent・Payable Agent・Expense Agentなど)」がどんどん組み込まれてきています。AIやPower Appsを賢く動かすためには、「どのデータをDataverseに置いてAIに食わせ、どのデータをERPの中に安全に閉じ込めておくか」という『データの配置・パスの設計』が、DXプロジェクトの成否を分けるということです。

「とりあえず繋がるから仮想テーブルで」とか「なんとなく全部同期で」という安易な設計ではなく、業務要件(リアルタイム性、コスト、AI活用、UX)から逆算して、4つのアプローチをプロとして「意図的に使い分けて欲しい」という、メッセージが込めました。

最後に|室長からひと言

いかがでしたでしょうか。

ERPとDataverse、そしてVirtual Tableの連携は、単なる技術的な接続の話ではありません。どこにデータを置き、どこから参照し、どこで確定させるのか。その一つひとつの設計が、業務全体の流れを左右します。

社内の勉強会やプロジェクトのキックオフなどで、このテーマを共有される際は、「AI活用を見据えたデータの置き場所の最適化」という文脈で伝えると、皆さまのチームにもかなり刺さるのではないかと思います。

ラグビーにおいて、ボールを後ろへつなぎ続けることでチャンスが生まれるように、システムにおいても、データを“正しくつなぎ続ける”ことでしか、本当の価値にはたどり着けません。そして、一度のノックフォワードが流れを止めてしまうように、わずかな設計の誤りが、データの流れを断ち、全体の価値を失わせてしまうことがあります。だからこそ重要なのは、「何を信用し、どこを信じるのか」を明確にすることです。

ERPが持つべきデータはERPに任せる。Dataverseが展開すべきデータはDataverseに任せる。その信頼関係を崩さずにつなぐことが、システム全体の力になります。

その上で、もう一つ大切な視点があります。データを“持たない”という選択も、設計です。

Virtual Tableは、その思想を最も純粋な形で示しています。データをコピーせず、移動させることもなく、「そこにあるものをそのまま信じて使う」という選択です。

まさに、「信は力なり」です。

この“信頼の設計”と、それを実現するアーキテクチャこそが、これからのDynamics 365とPower Platformを扱う上で、最も重要なポイントになるはずです。

今日の記事が、皆さんのデータ設計における“次のパス”につながれば嬉しいです。

それでは、また次回。Let’s Enjoy our DX365Life! 🚀

dx365jp
  • dx365jp
  • 25年ほど、Microsoft Dynamics 365 【ERP(NAV/AX)+CRM】の導入コンサルティングに従事し、日本を含む34か国において導入コンサルティングを経験してきました。グローバル環境における“プロジェクト”と“マーケティング”を生業としております。

    最近は、【CRM/MKTG(攻めのDX)⇔ ERP(守りのDX)】+【ローコード】というDX365な活動に奮闘中です。Microsoft Dynamics 365 ビジネスで地球を92周中です。#DX365 #DynamicsIoT

    Microsoftの運営する外部技術者グローバル組織「Microsoft MVP(*日本163名/世界3674名)・ Microsoftのトラスティッドアドバイザーである「Microsoft Regional Director (*日本4名/世界167名)」として、複数のITコミュニティーにて活動中。(*2026/08/08時点)

    プロフィールはこちら→bit.ly/Dynamics365JP