【請求管理ロボ for Salesforce】決済情報がエラー表示なく連携されない場合の調査と対処法

はじめに

決済情報の連携バッチ実行後、エラー表示なく一部レコードのステータスが更新されないのは、「取引先コード」が空のデータに起因する「巻き込み事故」(便宜上)が原因かもしれません。本記事ではその調査・対処法を解説いたします。

1. 発生する事象

以下のすべてに当てはまる場合、本記事の対象です。

 ● 一部の「決済情報」レコードの「操作ステータス」項目が、"未連携・更新情報未連携"のまま更新されない。
 ● 「決済情報」レコードの「最終更新日」項目はバッチ実行時刻で更新されている。
 ● Apexバッチ「請求先部署・決済情報登録バッチ(CLP_BIAndPaymentBulkUpsertScheduleClass)」は
  正常に実行されている。
 ● Apexジョブに目立ったエラー記録がない。


2. 原因と事象発生後の状況

 ●なぜ「巻き込み事故」が起きるのか

  1. 決済情報の連携は、複数のレコードをまとめて一つのバッチ(かたまり)で処理されます。
   (1バッチ最大200件)
  2. このバッチ内に、親の「取引先コード」が空のレコードが1件でも含まれていると、
   そのレコードはエラーとなります。
  3. バッチ処理の仕様上、1件でもエラー結果を正しくレコードに書き込めない場合、
   同じバッチで処理された他の正常なレコードへの結果書き込みも、すべて停止いたします。

  ※根本原因に関するヘルプ記事
   【請求管理ロボ for Salesforce】1102 / エラー101: 「取引先コードは必須です」の原因と対処法

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 【具体例】

   例えば1,000件(5バッチ)の処理対象に、不正なレコードが1件だけ混ざっていた場合、
   そのレコードが含まれる1つのバッチ(200件)はステータス更新されずに終了しますが、
   問題のない他の4つのバッチ(800件)は正常に更新されます。

 ●事象発生後のデータ状況

  この事象が発生した際、データは以下の状態になっています。
   ・ 請求管理ロボ: 不正な1件を除く、正常なデータ(例の999件)は登録・更新が完了しています。
   ・ Salesforce : 巻き込まれた正常データ(例の199件)は、ロボ側に登録済みにも関わらず、
           ステータスが古いままになっています。


3. 対処法:2つのステップ

 Step 1:原因レコードを特定し、修正する

  1. 調査対象の特定: レポート機能等で、以下の条件に合う「決済情報」をリストアップいたします。
     ・ 最終更新日 が、問題のバッチ実行日時になっている
     ・ 操作ステータス が、更新されていない(「連携成功」などになっていない)
  2. 原因の発見  : 1で特定したレコードの親「取引先」を順に確認し、「取引先コード」が空欄に
            なっているものを探します。
  3. 原因の修正  : 見つけた「取引先」レコードに、一意の取引先コードを入力し保存いたします。

  【ご依頼ください】 この作業は、貴社のSalesforceのシステム管理者様にご依頼ください。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

 Step 2:「巻き込まれた」正常なレコードを手動で更新する

  1. 対象の特定: Step 1のリストのうち、親の「取引先コード」に問題がなかったものが
         「巻き込まれた」レコードです。
  2. 手動更新 : 対象の「決済情報」レコードを編集し、以下の3項目を正しい状態に更新いたします。
     ・ 操作ステータス: 連携成功
     ・ 連携済み   : True(チェックあり)
     ・ 情報同期フラグ: 同期中

  【ご依頼ください】 この作業も、貴社のSalesforceのシステム管理者様に実施いただくことを推奨いたします。


4. まとめと恒久対策

 ● 原因  : 1件の「取引先コード」空欄データが、同じバッチ(最大200件)の全レコードの
        ステータス更新を停止させます。
 ● 対処法 : ①原因レコードのコードを修正し、②巻き込まれたレコードのステータスを手動で更新いたします。
 ● 恒久対策: 再発防止のため、以下のヘルプを参考に「取引先コード」が自動で設定される仕組みを
        導入してください。
   ● 参考:
    【請求管理ロボ for Salesforce】1102 / エラー101: 「取引先コードは必須です」の原因と対処法