OnTime同期ハブとは
従来のEWS APIが終了予定
OnTime Group CalendarはExchange Onlineの更新情報はEWS APIの機能であるストリーミング通知を利用していました。ただ、EWSは将来的に提供が終了する予定であり、新たにGraph APIによる更新情報の把握を必要としていました。しかしGraph APIにはEWSにあるストリーミング通知は存在せず、EWSとは仕様の違うストリーミング購読機能を活用する必要がありました。

更なる5万メールボックス以上の大規模組織への対応の必要性
また別の課題として、大規模なスケールでのご利用が増え、従来のOnTimeサーバーでは最大でも2万から3万メールボックス前後が上限であることを認識しており、更なるスケールアップを行える方法を考える必要がありました。もちろんCPU能力だけでなくネットワークトラフィックの帯域不足についても考慮する必要があります。
OnTimeサーバーからイベント同期エンジンをプログラム的に独立させる
そこでGraph APIのストリーミング購読機能を利用した新しい同期エンジンの開発を行う際に、従来のOnTimeサーバーとは独立して動作するプログラムを開発することにしました。これによりOnTimeサーバーと同期エンジンを別マシンで運用できるように設計を開始しました。新しい同期エンジンの開発は2022年から着手し2025年には「OnTime同期ハブ」と命名してリリースを行いました。検証環境ではこの同期エンジンで約5万メールボックスは充分に対応できています。
補足)
Ver.6.4.xより従来のEWS方式と同じくGraph方式もOnTimeサーバーに内蔵されます。2万ライセンス程度であれば別マシンにOnTime同期ハブをインストールせず、Webhook用のポート開放だけでご利用いただけます。
現行バージョンでは予定表データの同期方法は3種類
3種類の同期方法について比較
| API方式 | 方法 | 証明書 | ポートオープン | エンジン | 注意事項 |
| EWS API | オンプレ時代からの方式。Microssoftからの変更通知をhttpsのResponseとしてして取得。 | Microsoft側が準備しているサーバー証明書のURLにhttps接続。 | 必要なし | 内蔵 | 2027年4月にMicrosoftクラウドではEWSを廃止予定。 オンプレExchangeは継続して利用できます。 |
| Graph API | Graphに実装された通知方式。Microsoftからの変更通知をWebhookの仕組みを利用してhttpsの特定ポートで取得。 | OnTime側がサーバー証明書を準備。設定でMicrosoftにhttps接続用URLを指示。 | クライアント向けの80/443とは別に9010(変更可)ポートをMicrosoft向けにオープン | 内蔵 | Ver.6.4.xから利用可能。 |
| OnTime同期ハブ | Ver.6.3.xから利用可能。 約3-5万メールボックスなど大規模な場合はOnTimeとは別サーバーに実装可能。 |
内蔵のGraph API方式の利用について
Ver.6.4.xより従来のEWS方式と同じくGraph方式もOnTimeサーバーに内蔵されます。2万ライセンス程度であれば別マシンにOnTime同期ハブをインストールせず、Webhook用のポート開放だけでご利用いただけます。
詳細と手順については内蔵型Graph方式がリリースされてからご案内します。
OnTimeサーバーで外部に9010(変更可)ポート開放ができない場合は、DMZ等にOnTime同期ハブを実装して中継させてください。
既存のOnTimeサーバーにOnTime同期ハブ(イベント同期エンジン)の同居も大丈夫
まとめますと「OnTime同期ハブ(イベント同期エンジン)」で提供するのは以下の2点を実現するためです。
- 5万メールボックスやそれ以上の大規模テナントへの対応
- ネットワーク構成への柔軟な対応
なので、2万から3万前後のメールボックスまでであれば、従来通り1台の同じマシン上でOnTimeサーバーとOnTime同期ハブを実装できます。

OnTime同期ハブの構築マシンの仕様について
ハードウェア要件について
OnTime同期ハブはOnTimeと同じマシンにも別のマシンにも構築できます。
- オペレーティングシステム:
Windows Server 2016 以上 / Windows 10 以上 - CPU:
OnTime同期Hubは1つのCPUのみ使用します。OSの動作を向上するためにCPUの追加を推奨します。 - メモリ:
メモリは同期するメールボックス数によって異なります。1つのメールボックスあたり1KB 未満を使用します。 - ストレージ:
OSの要件に加えて1GB が必要です。1GBはプログラムファイルとログファイル用でメールボックスの通知情報は保存しません。 - ネットワーク:
OnTimeサーバーからポート番号80/443で受信接続。ポート番号は変更可能。
MicrosoftからのWebhook用にポート番号443で受信接続。ポート番号は変更可能。
ネットワーク要件としてのWebhook
OnTime同期ハブはMicrosoftクラウドからWebhookによる通信が行われますので、MicrosoftクラウドからのHTTPリクエストが到達できるネットワーク上に構築してください。
Webhookとは
HTTPリクエストを通じてリアルタイムで自動的に通知を送る仕組みで近年では一般的な方法
Microsoft Graphからの変更通知に利用されるIPアドレスは以下に記載されています。

上記ページの「23 Microsoft Graph の変更通知(Microsoft Graph Change Notifications)」に記載されています。
アプリケーションプロキシーやファイヤーウォールで通信制御を行う場合は参照ください。ポート番号のデフォルトは443ですが、後ほど設定するOnTime同期ハブの「otSubHub.json」ファイルで組織の使用状況に合わせて変更できます。
2025年のMicrosoft Learnでは以下の4つのネットワークアドレスが指定されています。
20.20.32.0/19, 20.190.128.0/18, 20.231.128.0/19, 40.126.0.0/18
構築手順のアウトライン
OnTimeサーバーと同一マシンに構築するかしないかを決める。
スペック的には約2万メールボックス程度までなら同一マシンで問題ございません。
ただし、同一マシンの際、Webhookという仕組みでMicrosoft GraphからHTTPリクエストによるストリーム通知を受け付けるポートを開放できるようにネットワーク設計をしてください。

OnTimeサーバー本体用のアクセス許可するAPIが違うので別のアプリを登録する。
同じアプリで追加でAPIを許可しても構いません。

node.jsとOnTime同期ハブ関連ファイルのインストールを実施します。

接続に利用するTLS証明書ファイルや接続URL等を設定します。

OnTimeサーバー側の設定を行えば完了です。

最初に構築場所を考える
最初にOnTimeサーバーと同じマシンに構築するか、別のマシンに構築するかを検討します。

