エンタープライズERP:SAPとNetSuite
SellioをSAP(OData)またはNetSuite(REST)と双方向で接続する手順ガイド:アカウント、注文、請求書をERPに送信し、イベント(請求書支払い済み、注文/顧客更新)を受け取ります。BYOモデル:ERPと認証情報はあなたのものです。
この連携は、SellioをSAP(OData経由)またはNetSuite(REST Record Service経由)のいずれかであなたのエンタープライズERPに接続し、深く、双方向の同期を実現します。単純なエンドポイントへのPOSTのみを行う汎用「ERP/請求」コネクタを補完するもので、ここでは各プラットフォームの型付きAPIと、それぞれの実際の認証方式で直接やり取りします。BYOモデル:アカウントと認証情報はあなたのものであり、当社側でのコストはありません。すべては無効な状態で始まります。設定して有効化するまで何も送受信されません。シークレットは暗号化して保存され、再表示されることはありません。
各方向で起きること:「送信」(Sellio → ERP)では、あなたが(または自動化が)トリガーすると、CRMはERPの言語でレコードを組み立て(SAPではOData EntitySet、NetSuiteではrecordType)、認証付きPOSTを行います。「受信」(ERP → Sellio)では、ERPが各イベント(請求書支払い済み、注文更新、顧客更新)ごとにSellioのwebhook URLを呼び出します。Sellioは金額+通貨で保留中の支払いを照合するか(それが支払い済みの請求書/注文の場合)、対応する連絡先に活動を記録します。重複するイベントは外部IDで重複排除されます。
1. 前提条件
SAP(S/4HANA Cloud、SAP Gateway経由のS/4HANAオンプレミス、またはSAP BTP):同期する各エンティティ用に公開されたODataサービス(例えば、アカウント/連絡先用の標準サービスAPI_BUSINESS_PARTNER、注文用のAPI_SALES_ORDER_SRV、請求書用のAPI_BILLING_DOCUMENT_SRV)と、それを呼び出すための認証情報が必要です。認証情報には2つの選択肢があります:(a)Basic AuthのCommunication User、または(b)SAP BTP上のOAuth 2.0クライアント(client credentials)。権限:ユーザー/クライアントは、選択したODataエンティティへの作成(POST)権限が必要です。
NetSuite(SuiteTalk REST):アカウントで「SuiteTalk(SOAP and REST Web Services)」機能と「Token-Based Authentication」機能が有効になっていること、また同期するオブジェクト(Customers、Sales Orders、Invoices)のLists/Records権限と「REST Web Services」権限(Setup配下)を持つRoleのユーザーが必要です。Integration Record(Consumer Key/Secret)とAccess Token(Token ID/Secret)を作成します。
- コネクタを保存・有効化するには、Sellioの管理者(設定を管理する権限)である必要があります。
- URL/IDを手元に用意してください:SAPではODataサービスのベースURL、NetSuiteではあなたのAccount ID(例:1234567、サンドボックスの場合は1234567_SB1)。
2. プロバイダー側(SAP):ODataを公開し、認証情報を作成する
- 目的のエンティティのODataサービスを公開/有効化します。S/4HANAオンプレミスでは、トランザクション/IWFND/MAINT_SERVICEを使ってサービス(例:API_BUSINESS_PARTNER)を追加・有効化し、結果として得られるベースURL(https://yourhost:44300/sap/opu/odata/sap/API_BUSINESS_PARTNERのようなもの)をメモします。S/4HANA Cloudでは、サービスはすでに公開されているため、対応するCommunication ArrangementからService URLをコピーします。
- 通信認証情報を作成します。Basic Authの場合:Communication Management → Maintain Communication Usersで、ユーザー名とパスワードを持つCommunication Userを作成し、Communication Arrangementsで、そのユーザーをODataサービスを公開するCommunication Scenarioに紐付けます。OAuth 2.0(BTP)の場合:サービスインスタンスを作成し、Client ID、Client Secret、Token URL(エンドポイント/oauth/token)をメモします。
- ユーザー/クライアントがエンティティへのPOST(作成)権限を持っていることを確認します。同じ認証情報でコレクションのGETをブラウザ/Postmanで素早くテストし、アクセスを確認します。
2. プロバイダー側、NetSuite(Integration Record + Access Token TBA)
- 機能を有効化します:Setup → Company → Enable Features → SuiteCloudタブ →「SOAP Web Services」および/または「REST Web Services」と「Token-Based Authentication」にチェックを入れます。保存します。
- Integration Recordを作成します:Setup → Integration → Manage Integrations → New。名前を付け(例:「Sellio CRM」)、「Token-Based Authentication」をチェックしたままにし、TBAのみを使う場合は「TBA: Authorization Flow」と「OAuth 2.0」のチェックを外して保存します。NetSuiteはConsumer KeyとConsumer Secretを「一度だけ」表示するので、今すぐ両方をコピーしてください(再表示されません)。
- Access Tokenを作成します:Setup → Users/Roles → Access Tokens → New。Application Name(作成したIntegration Record)、User、Role(Records権限+「REST Web Services」を持つロール)を選択します。保存します。NetSuiteはToken IDとToken Secretを「一度だけ」表示するので、今すぐ両方をコピーしてください。
- あなたのAccount IDをメモします:Setup → Company → Company Information(「Account ID」フィールド)、例:1234567(本番)または1234567_SB1(サンドボックス)。
3. Sellioで:認証情報を貼り付けて有効化する
- 設定 → 連携を開き、「SAP(エンタープライズERP)」または「NetSuite(エンタープライズERP)」カードを見つけます。
- SAP:「ODataサービスURL」に、サービスのベースURLを貼り付けます(末尾のスラッシュとEntitySet名は不要です。SellioがEntitySetを正しく付加します)。「認証タイプ」で、Basic(ユーザー名+パスワードを貼り付け)またはOAuth 2.0(トークンURL+Client ID+Client Secretを貼り付け)を選択します。
- NetSuite:「Account ID」にIDを貼り付けます(例:1234567または1234567_SB1)。「認証タイプ」でToken-Based Authentication(TBA)を選択し、Consumer Key、Consumer Secret、Token ID、Token Secretを貼り付けます。(OAuth 2.0を使いたい場合は、そのオプションを選択してAccess Tokenを貼り付けます。)
- ERPのイベントをSellioに送り返す場合は、「Webhookシークレット」を入力します。受信には「必須」です:イベントは支払いを確定させ得るため、セキュリティ上、Sellioはこのシークレット/署名を伴うwebhookのみを受け付けます。ないと受信は拒否されます(手順4を参照)。暗号化して保存されます。
- 「コネクタを保存」をクリックします。認証情報は暗号化して保存されます。その後「有効化」をクリックします。送信と受信は、コネクタが「有効化」されて初めて機能します。
ERPイベントを受信するには:保存後、「webhook URLを生成」を使い、そのURL(形式:https://app.../api/inbound/erp/YOUR_TOKEN)をコピーします。そのURLをERPのwebhook送信先に貼り付けます:SAPでは自動化/ミドルウェア(Event Mesh、SAP BTP、またはPOSTするジョブ)に、NetSuiteではUser Event Script/RESTlet、またはイベントをPOSTする自動化ツール(SuiteFlow+スクリプト)に。プロバイダー(SAPまたはNetSuite)はトークン自体によって識別されるため、URL内で選択する項目はありません。
4. テスト方法
- コネクタが有効化された状態で、カードの「テストレコードを送信」をクリックします。Sellioは架空のアカウント(「Sellio CRM」接続テスト)を組み立てて、あなたのERPに送信します。
- ERP側で確認します:SAPでは対応するエンティティで新しく作成されたBusiness Partnerを、NetSuiteではLists → Relationships → Customersで新しいCustomerを探します。
- 「テストレコードがERPに送信されました」と表示されれば、認証とエンドポイントは正しいということです。次に、「実際の」レコードを送信するには、CRMレコード(アカウント、連絡先、注文、商談、または請求書)から送信をトリガーしてください。Sellioは同じ経路を使用します。
- 「受信」をテストするには:ERP内でイベントを生成(またはシミュレート)し(例えば請求書を支払い済みにする)、Sellio内で同じ金額の保留中支払いが照合されたか、または対応する連絡先に活動が現れたかを確認します。
5. トラブルシューティング
- 401(unauthorized):認証情報が間違っているか期限切れです。SAP Basic → Communication Userのユーザー名/パスワードを確認、SAP OAuth → Client ID/Secretとトークン URLを確認、NetSuite TBA → Consumer Key/SecretとToken ID/Secretを確認してください(1文字の過不足で署名が無効になります)。シークレットを貼り直してください(セキュリティ上、サーバーから再取得できません)。
- 無効なTBA署名(NetSuite):Token-Based Authenticationは、メソッド、正確なURL(クエリパラメータを含む)、Account ID(realm)に依存するHMAC-SHA256のOAuth 1.0aを使用します。Account IDが正しいこと(サンドボックスでは_SB1サフィックス付き)、4つの値(Consumer Key/Secret、Token ID/Secret)がスペースなしで貼り付けられていることを確認してください。NetSuiteでトークンを再生成した場合は、Sellioでも更新してください。
- 403(forbidden):認証情報は認証されていますが、ロール/ユーザーがそのレコードを作成する権限を持っていません。NetSuiteではRoleの権限(Lists/Records+「REST Web Services」)を、SAPではODataエンティティ/Communication ScenarioへのPOST権限を確認してください。
- Entity/recordTypeが見つからない(404):SAPではODataサービスURLが間違っているか、サービスが有効化されていません。ベースURL(EntitySetなし)を確認し、/IWFND/MAINT_SERVICEでサービスを有効化してください。NetSuiteでは、デフォルトのrecordTypeがあなたのものと一致しない場合があり、カスタムのアカウント/注文/請求書には異なるrecordTypeが必要になることがあります(マッピングの調整についてサポートにお問い合わせください)。
- フィールドが拒否される:SAPとNetSuiteはプロパティ名に厳格です。Sellioは共通フィールドの控えめなセット(name、email、phone、company、amount、currency、reference)を送信します。ERPが追加の必須フィールド(例:SAPのBP Category、NetSuiteのsubsidiary)を要求する場合、それらはマッピングされる必要があるため、設定でマッピングを調整するか、サポートにお問い合わせください。
- Webhookが届かない(受信):コネクタが「有効化」されていること(無効化されたコネクタのwebhookは404を返します)、ERPに貼り付けたURLが(トークン付きで)完全であること、「Webhookシークレット」を設定した場合はERPがX-Sellio-Secretヘッダーでシークレットを送信するか、本文のHMAC-SHA256を署名ヘッダーで送信していることを確認してください。そうでない場合、レスポンスは401になります。