はじめに
この記事では、ツバイソPSA(Salesforce)とツバイソERP間における、REST APIを用いたデータ連携方式について解説します。
ツバイソPSA(Salesforce)とツバイソERPは、REST APIを介して、JSON形式でのシームレスなデータ連携を実現しています。通信は常にPSAを起点とする一方向の設計となっており、売上等の実績データをERPへ送信する「Push型」と、為替レートや残高情報をERPから取得する「Pull型」の2つの方式を組み合わせて運用します。
この設計により、各システムの独立性を保ちながら二重入力の排除やガバナンスの強化を図り、保守性の高い安定したシステム運用を可能にしています。
1. 連携詳細仕様
PSAデータ → ERPデータ(PSAからのデータ送信 / Push型)
ユーザーのボタン操作(手動実行)を主なトリガーとして、PSAからERPへデータを非同期で送信します。一部の連携(取引先情報など)はApexトリガーによる自動実行にも対応しています。また、締処理後の自動ERP連携機能により、レコードを締処理すると自動的にERPへ連携することも可能です。
| 項目 | 内容 |
|---|---|
| トリガー | ユーザー操作(手動実行)が主。一部はApexトリガーによる自動実行、または締処理後の自動連携 |
| HTTPメソッド | POST |
| 認証 | Access-Token ヘッダー認証(オプションで Client-Auth-Token による追加認証も可能) |
主な連携データ
| PSA側データ | ERP側データ | 起動方式 |
|---|---|---|
| 売上明細 | 売上伝票 | 手動実行 + 締処理後自動 |
| 仕入経費明細 | 仕入伝票 | 手動実行 + 締処理後自動 |
| 入金予定 | 売上伝票(赤黒伝票方式) | 手動実行 + 締処理後自動 |
| 支払予定 | 仕入伝票(赤黒伝票方式) | 手動実行 + 締処理後自動 |
| 経費精算 | 経費精算 | 手動実行 |
| 原価計算票 | 手動仕訳 | 手動実行 |
| 財務記録 | 手動仕訳 | 手動実行 |
| 取引先情報 | 取引先マスタ | 手動 + 自動 |
| 銀行口座マスタ | 銀行口座マスタ | 手動実行 |
各レコード(売上・仕入経費・入金予定・支払予定など)で「締処理後自動作成」オプションを有効にすると、レコードを締処理した際に自動的にERP連携が実行されます。Salesforce Flowにより、締処理から1分後に非同期でERP連携処理が開始されます。
大量データ連携時にはSalesforceの「Queueable」インターフェースを使用。データをキューに格納し、分割してバッチ処理することで、Salesforce特有のガバナ制限を回避しながら安定した通信を行います。
ERP側のAPIキー設定で有効化すると、Salesforce組織ID(15桁)をクライアント認証トークンとしてリクエストヘッダーに付加し、セキュリティを強化できます。
ERPデータ → PSAデータ(PSAからのデータ取得 / Pull型)
ERP側に存在するマスタデータや計算結果を、PSA側から能動的に取得します。
| 項目 | 内容 |
|---|---|
| トリガー | スケジュール実行(深夜バッチ等) + 手動実行 |
| HTTPメソッド | GET |
| 重要な設計 | ERPからPushせず、PSAがAPIをコールする「Pull型」 |
主な取得データ
| 連携データ | 用途 | 起動方式 |
|---|---|---|
| 為替レート | 多通貨対応のレート同期 | スケジュール(定期) |
| 債権残高 | 取引先の売掛残高確認 | 手動実行 |
| 債務残高 | 取引先の買掛残高確認 | 手動実行 |
| 予定日計算 | 入金・支払予定日の算出 | API呼び出し |
2. 設計上の特徴とメリット
|
1. 疎結合な設計
REST APIによる標準的なインターフェースとJSON形式でのデータ交換により、各システムの独立性を維持しています。 |
2. 非同期処理の活用
Salesforceのガバナ制限を考慮した大量データの段階的処理と、処理結果のログ記録を実現しています。 |
|
3. エラーハンドリング
各レコードに連携ステータスを記録し、失敗時のリトライと管理者への通知機能を備えています。 |
4. 一方向アーキテクチャ
PSAが常に通信の起点となり、ERPはAPIを提供するのみ。シンプルで保守性の高い設計です。 |
3. 実行ユーザーと権限
すべてのERP連携はPSA(Salesforce)側が起点となるため、Salesforce上の実行ユーザーのコンテキストで処理が行われます。
実行ユーザーの決定ルール
| 実行方式 | 実行ユーザー | 該当する連携 |
|---|---|---|
|
手動実行 (VFページ / LWCのボタン操作) |
操作したログインユーザー | 売上・仕入・経費精算・取引先連携・債権/債務残高取得 等 |
|
スケジュールジョブ (Schedulable) |
ジョブを登録したユーザー | 為替レート連携 |
|
Apexトリガー (自動実行) |
レコードを更新したユーザー | 取引先情報の自動同期 |
|
レコードトリガーフロー (締処理後の自動ERP連携) |
締処理を実行したユーザー | 売上・仕入経費・入金予定・支払予定の締処理後自動連携 |
必要な権限(プロファイル・権限セットグループ・権限セット)
プロファイル
PSAパッケージには以下のプロファイルが含まれています。ERP連携を行うユーザーには十分なオブジェクトアクセス権を持つプロファイルが必要です。
| プロファイル名 | 用途 | ERP連携操作 |
|---|---|---|
| システム管理者 | Salesforce標準。全機能へのフルアクセス | ✅ すべて可能 |
| ツバイソPSAシステム管理者 | PSAパッケージ付属。PSA全機能へのアクセス | ✅ すべて可能 |
| ツバイソPSAユーザ | PSAパッケージ付属。一般業務ユーザー向け | ⚠️ 権限セットグループの追加が必要 |
| ツバイソPSAユーザSF | PSAパッケージ付属。Salesforce機能併用ユーザー向け | ⚠️ 権限セットグループの追加が必要 |
権限セットグループ
PSAパッケージでは以下の権限セットグループが定義されており、業務ロールに応じて割り当てます。
| 権限セットグループ名 | 用途 | 連携可能なERP機能 |
|---|---|---|
| フル機能(管理部門) | 管理部門向け。売上・仕入・経費・入金/支払予定等の全管理権限 | 売上・仕入・経費精算・入金予定・支払予定・取引先・銀行口座・原価計算票・財務記録・為替レート・債権/債務残高 |
| フル機能(管理部門2) | 管理部門向け(請求・支払のユーザ権限を追加) | 売上・仕入・経費精算・入金予定・支払予定・取引先・銀行口座・原価計算票・財務記録・為替レート・債権/債務残高 |
| フル機能(情シス) | 情シス向け。全オブジェクトのAdmin権限 | 売上・仕入・経費精算・入金予定・支払予定・取引先・銀行口座・原価計算票・財務記録・為替レート・債権/債務残高 |
| フル機能(参照) | 全オブジェクトの参照権限 | -(参照のみ、連携操作不可) |
| 営業機能 | 営業系オブジェクトの操作権限 | 売上・取引先 |
| 営業機能ライト | 営業機能の軽量版 | 取引先 |
| プロマネ機能 | 案件・発注・検収・制作指図等のPM向け権限 | 仕入・原価計算票 |
| 調達機能 | 発注・検収・支払等の調達向け権限 | 仕入・支払予定・取引先 |
| マネジメント機能(MG) | 経営層向けの管理機能 | 債権/債務残高 |
| マネジメント機能(PM) | PM向けの管理機能 | 原価計算票 |
| 顧客管理、案件管理機能 | 顧客・案件の管理権限 | 取引先 |
| 経費精算、工数登録機能 | 経費精算・タイムシートの操作権限 | 経費精算 |
4. まとめ
ツバイソPSAとERPの連携は、REST APIを基盤としたシンプルかつ堅牢なアーキテクチャで実現されています。
| 項目 | 内容 |
|---|---|
| PSAデータ → ERPデータ | 手動実行中心のPush型(PSAからのデータ送信POST) |
| ERPデータ → PSAデータ | スケジュール駆動のPull型(PSAからのデータ取得GET) |
| 通信方式 | すべてREST API(JSON形式)※ファイル連携(CSV等)は不使用 |
| 認証方式 | Access-Token ヘッダー方式(オプションで Client-Auth-Token による追加認証) |
この設計により、各システムの独立性を保ちながら、必要なデータを適切なタイミングで連携することが可能となっています。