--- sidebar_position: 6 title: "注文フルフィルメント" --- # 注文フルフィルメント Salesforceの注文がWHMCSのサービスとして実現される技術的プロセスを説明します。 ## フルフィルメントトリガー Salesforce Change Data Capture (CDC)が注文の`Activation_Status__c`フィールドの変更を検出すると、BFFのプロビジョニングキュー(BullMQ)にジョブがエンキューされます。 ### トリガー条件 - 注文ステータスが「Approved」または「Reactivate」に変更 - べき等キーにより同一注文の重複処理を防止 - ジョブはバックオフ付きリトライ戦略を使用 ## プロビジョニングワークフロー ### ステップ1:ステータス更新 Salesforce注文の`Activation_Status__c`を「Activating」に設定し、処理中であることを示します。 ### ステップ2:WHMCS注文作成 - Salesforce OrderItemsをWHMCS商品IDにマッピング(Product2の`WH_Product_ID__c`フィールドを使用) - WHMCS `AddOrder` APIアクションを呼び出し - 作成されるもの:WHMCSオーダー、請求書、サブスクリプション/サービスレコード - 支払い方法:`stripe` - プロモコード:設定されている場合に適用 ### ステップ3:SIMアクティベーション(SIM注文のみ) - eSIM注文:Freebit APIでeSIMプロファイルをアクティベート - Physical SIM注文:エージェントが`Assign_Physical_SIM__c`にSIMを割り当て後にアクティベート ### ステップ4:Salesforce更新 - `WHMCS_Order_ID__c`に作成されたWHMCS Order IDを記録 - `Activation_Status__c`を「Active」(成功時)またはエラーステータスに更新 - 各OrderItemに`WHMCS_Service_ID__c`を記録 - 関連Opportunityに`WHMCS_Service_ID__c`を記録しステージを「Active」に更新 ### ステップ5:リアルタイム通知 - SSEイベントを公開して接続中のクライアントに注文ステータスの変更を通知 - アプリ内通知を作成(「Order approved」「Service activated」など) ## エラー処理とリカバリ ### 支払い方法不足 `Activation_Error_Code__c` = `PAYMENT_METHOD_MISSING`が設定されます。顧客がWHMCSで支払い方法を追加し、サポートチームが再トリガーするまでプロビジョニングは一時停止されます。 ### WHMCS APIエラー - WHMCS注文作成失敗時、Salesforceステータスをロールバック - エラーコードとメッセージをSalesforceに記録 - 部分的なWHMCS注文は保持されません ### Freebit/SIMエラー - エラーをログに記録しactivation statusに表示 - 注文はSalesforceにリトライ用に保持 ### 一時的エラー - BullMQキューでエクスポネンシャルバックオフ付きリトライ - 最大リトライ回数後にフルフィルメント失敗としてマーク ## 双方向リンク フルフィルメント後、システムは双方向にリンクされます: | 方向 | フィールド | 場所 | 値 | | --- | --- | --- | --- | | SF Order → WHMCS | `WHMCS_Order_ID__c` | Salesforce Order | WHMCS Order ID | | SF OrderItem → WHMCS | `WHMCS_Service_ID__c` | Salesforce OrderItem | WHMCSサービスID | | SF Opportunity → WHMCS | `WHMCS_Service_ID__c` | Salesforce Opportunity | メインWHMCSサービスID | | WHMCS Service → SF | OpportunityIdカスタムフィールド | WHMCS Product/Service | Salesforce Opportunity ID | この双方向リンクにより解約が機能します。ポータルはWHMCSサービスIDでOpportunityを検索しステージを更新します。