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

更なる5万メールボックス以上の大規模組織への対応の必要性
また別の課題として、大規模なスケールでのご利用が増え、従来のOnTimeサーバーでは最大でも2万メールボックス前後が上限であることを認識しており、更なるスケールアップを行える方法を考える必要がありました。もちろんCPU能力だけでなくネットワークトラフィックの帯域不足についても考慮する必要があります。
OnTimeサーバーからイベント同期エンジンを独立させる
そこでGraph APIのストリーミング購読機能を利用した新しい同期エンジンの開発を行う際に、従来のOnTimeサーバーとは独立して動作するプログラムを開発することにしました。これによりOnTimeサーバーと同期エンジンを別マシンで運用できるように設計を開始しました。新しい同期エンジンの開発は2022年から着手し2025年には「OnTime同期ハブ」と命名してリリースを行いました。検証環境ではこの同期エンジンで約5万メールボックスは充分に対応できています。
また、2万前後のメールボックスまでであれば、同じマシン上に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万メールボックス程度までなら同一マシンで問題ございません。
ただし、同一マシンの際、Microsoft GraphからのWebhookによるストリーム通知を受け付けるポートを開放できるようにネットワーク設計をしてください。
以下のFAQの内容も参考にしてください。

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