Salesforce Summer’22 で実施される「Platform API バージョン 21.0 ~ 30.0廃止」の影響調査

Salesforce Platform API バージョン 21.0 ~ 30.0が廃止されるアナウンスがありました。 該当するAPIのコールを調査するスクリプトを紹介しています。
2021.02.08

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Salesforce Summer’22リリースでSalesforce Platform API バージョン 21.0 ~ 30.0が廃止されるというアナウンスがありました。

Salesforce Platform API バージョン 21.0 ~ 30.0

外部アプリケーション(AppExchangeで入れているもの)も影響を受けるので、組織が実行しているAPI全体を調査する必要があります。

調査用スクリプト(Node.js)

ということで、Salesforce Platform API バージョン 21.0 ~ 30.0に記載されている調査を自動化するスクリプトをNode.jsで書きました1

https://github.com/shinchit/sf-summer22-investigation

大まかな処理の流れは次の通りです。

  1. 過去30日間のEventLogFileを検索する
  2. ヒットしたログファイルをAPIを使って取得する
  3. 取得したログファイルを解析して、APIバージョン30.0以下のAPI利用があったらCSV化して出力する

使い方

以下はNode.js は既にインストール済であるという前提で記述しています。 未インストールの場合はNode.jsを参照してNode.jsのインストールを行ってください。

ターミナルを立ち上げて次のコマンドを実行します。

$ git clone https://github.com/shinchit/sf-summer22-investigation.git
$ cd sf-summer22-investigation
$ ls
api-version-checker.js  package-lock.json   package.json
$ npm i
npm WARN summer22@1.0.0 No description
npm WARN summer22@1.0.0 No repository field.

added 93 packages from 151 contributors and audited 94 packages in 1.771s

2 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities

次にapi-version-checker.jsをテキストエディタで開いて、Salesforce接続情報を設定します。

/* Salesforce接続情報 */
const isProduction = true;  /* 本番環境に接続するならtrue、Sandboxに接続するならfalseを指定する */
const sf_account = '<SalesforceのログインID>';
const sf_password = '<Salesforceのログインパスワード>' + '<Salesforceのセキュリティトークン>';
const sf_env = 'https://' + ( isProduction ? 'login' : 'test' ) + '.salesforce.com';

接続情報を設定したら、まず過去30日のログがいくつあるか調べます。というのは、各ログ毎にその中身を取得するAPIをコールすることになるため、ログの数によっては膨大なAPIコールが発生してしまうからです。

ログの数は次のコマンドで調べます。

$ node api-version-checker.js logs-count-only
count of logs: 1652

この場合、ログの数が1652個であるため、各ログの中身を取得するAPIコール数は最低1652回あると判断できます。APIコールが失敗した時のリトライも考慮すると予想APIコール数は2,000回ぐらいでしょうか。

この数を多いと判断するか少ないと判断するかは組織が可能なAPIコール数によります。組織のAPIコール数の状況はSalesforce組織にログインし、[設定] > [会社の設定] > [組織情報] > [API 要求数 (この 24 時間以内)]で確認できます。

組織の残APIコール数に余裕があることを確認したら次のコマンドでv30.0以下のAPI利用のログを抽出します。

$ node api-version-checker.js > usingIllegalApiVersion.csv

生成したCSV(usingIllegalApiVersion.csv)は次のようになります2

APIバージョン調査結果CSV

APIバージョンが30.0以下のログが記録されています。 CLIENT_NAMEにモザイクをかけていますが、ここに30.0以下のAPIをコールしているクライアントの名前が表示されます。例えば、/SOME_APPと記載されていれば、SOMEというアプリがAPIコールをしていると推察することができます。

ログの数が多すぎる場合にどうするか?

デフォルトではこのスクリプトは過去30日間のログを調査します。その設定はスクリプト冒頭部の

/* 調査対象の最古のログの作成日 */
const mostOldestCreatedDate = 'LAST_N_DAYS:30'

の数値を変えることで変更できます。例えばLAST_N_DAYS: 7とすれば、過去一週間のログを調査します。 他にもSalesforceが提供している日付リテラルを使うことができます。

日付形式と日付リテラル | SOQL および SOSL リファレンス | Salesforce Developers

まとめ

Summer'22 で廃止されるAPIバージョンの調査を行うスクリプトをご紹介しました。 早めに調査・対策をとり、余裕をもってSalesforceのリリースを迎える一助になれば幸いです。


  1. 本スクリプトの利用に関し、トラブルが発生した場合、利用者又は第三者に損害が生じた場合であっても、本スクリプトが利用者の自己責任のもと利用されるものであることに鑑み、弊社は、損害賠償その他一切の責任を負担致しません。 
  2. Numbersで開いた状態で示しています。