ACTION REQUIRED: Update Unsupported Legacy API Version


Salesforce Platform API バージョン 21.0 ～ 30.0 の廃止

+ [ACTION REQUIRED: Update Unsupported Legacy API Version](https://trailhead.salesforce.com/trailblazer-community/feed/0D54S00000JgBLtSAN)

:::note
Please follow the below,

- https://help.salesforce.com/s/articleView?id=000389618&type=1
- https://developer.salesforce.com/blogs/2022/03/prepare-for-legacy-api-retirement-in-summer-22
:::

# 対応方法

+ [Summer '22 でのレガシー API の廃止に備える](https://developer.salesforce.com/blogs/2022/03/prepare-for-legacy-api-retirement-in-summer-22)

# レガシ API の使用状況を特定する

Salesforce は、業界で最も強力な後方互換性体制の 1 つを維持してきました。たとえば、Salesforce SOAP API のバージョン 7.0 は 2006 年にリリースされましたが、15 年前までは何をしていましたか? iPhone で話したり、iPad をタップしたり、Python 3.0 でコードを書いたり、Node.js で JavaScript を実行したり、Uber を呼んだりすることはできませんでした。なぜなら、これらのテクノロジーは当時存在していなかったからです !

従来の API をサポートし、下位互換性を維持するには、API プロバイダーにコストがかかります。Salesforce も例外ではありません。そのため、レガシー API の廃止に向けたロードマップを開始しました。これにより、新しい API バージョンごとに拡張機能を追加することに開発努力を集中できるため、信頼を維持しながらイノベーションを提供できます。興味深い事実: 実際には、 古い SOAP API の小さなセットを 2018 年に廃止しました。

メジャー リリースごとに、Salesforce プラットフォーム API は自動的に新しいバージョンにアップグレードされ、稼働後 3 年間の文書化されたポリシーでサポートされます。Summer '21 リリースでは、最新のレガシー API 廃止作業の最初のマイルストーンに到達しました。このリリースの時点で、v21.0 より古いバージョンのすべての SOAP、REST、および Bulk API 呼び出しは引き続き機能しますが、非推奨と見なされ、 サポートされなくなりました。

注: この投稿のコンテキストでは、「REST API」という用語を使用して、   API バージョンの/services/data/vXX.Y/ 場所 の下にあるエンドポイント URI を持つすべての API を指定します。 これには、sObject とレコードを操作するためのXX.Y「標準」の Lightning プラットフォーム REST APIだけでなく、次のリソースも含まれます。

+ ツール API
+ Chatter/Connect API
+ クエリ API
+ 検索 API
+ ログイン API  (別名「ID」)

# レガシ API の使用状況を特定する

レガシー API を使用しているかどうかを確認するには、周囲に尋ねて、会社が使用しているすべての統合のリストを作成できますが、それは長く、エラーが発生しやすくなります。たとえば、古いバージョンのデータ ローダや、サポートされていない Salesforce Office Toolkit などのレガシー統合など、ユーザーのマシンにローカルにインストールされている古いクライアントを特定する必要があります。幸いなことに、自動化された方法で API の消費をスキャンするのに役立つツールがあります。

すべての Salesforce API トランザクションは、イベント モニタリング ログに記録されます。 通常、イベント監視に は特定のライセンスが必要ですが、  API の合計使用量 ( ApiTotalUsage) イベントをすべてのお客様に無料で公開しているため、レガシー API の消費を監視し、アップグレードが必要なクライアントと統合を特定できます。

このイベントを使用して、組織内の従来の API コールを検出する方法を見てみましょう。完全なプロセスは ナレッジ記事に記載されていますが、このタスクを自動化する小さな Apex ユーティリティ ツールを作成しました。

# ユーティリティでチェックを自動化する

[このリポジトリ](https://github.com/pozil/legacy-api-scanner)に移動し  、セットアップ手順に従います。プロジェクトの Apex コードは、 ApiTotalUsage イベント ログをスキャンし、ログ保持期間中に行われた従来の API への呼び出しを報告します。

>API が有効な組織は、API Total Usage イベント ログ ファイルに無料でアクセスでき、データ保持期間は 1 日です。追加料金を支払うと、30 日間のデータ保持期間で、このログ ファイルと他のすべてのログ ファイルの種類にアクセスできます。

スキャナーが組織のログでレガシー API 呼び出しを検出すると、次のような出力が表示されます。

> ログに古い API バージョンが見つかりました: {SOAP v7, REST v20, BULK_AP v21}

その場合は、手動で調査を続けてください (この投稿の次のセクションを参照してください)。そうしないと、次のメッセージが表示されます。

> タイプ ApiTotalUsage の EventLogFile エントリが見つかりませんでした。
これは、ログ保持期間中にレガシー API が呼び出されなかったことを示しています。

これは、組織に対して行われた従来の API 呼び出しがまだいくつかある可能性があることを意味しますが、それらはログ保持期間外であるため、追跡することはできません。

# 手動調査の実行

調査をさらに推し進める必要がある場合は、この [ナレッジ記事](https://help.salesforce.com/articleView?id=000351312&type=1&mode=1&language=en_US&_ga=2.122046467.926800168.1676878592-1843459571.1676274682)で そのプロセスについて詳しく説明しています。つまり、SOQL クエリを実行して、 ApiTotalUsage イベント ログ レコードの ID を取得する必要があります。 次に、ログ レコードごとに、関連するログ ファイルを CSV 形式で取得するために、Postmanなどの HTTP クライアントを使用してレコード ID で REST API を呼び出す必要があります 。

参考までに、 ApiTotalUsage イベント ログは次のようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328136/b46fa2a2-9635-850a-b7e9-bee7b7d53149.png)

ログには、調査のガイドとなる主要なフィールドが含まれています。

この CLIENT_NAME フィールドは、調査と調整が必要な API 呼び出しを実行しているアプリと統合を特定するのに特に役立ちます。API 呼び出しを実行するときは、 Sforce-Call-Options 要求ヘッダーをクライアント名とともに使用することが常にベスト プラクティスです 。これにより、ログを確認するときにクライアントからの呼び出しを特定するのに役立ち、統合ガバナンスの時間を節約できます。

USER_ID 従来の API 呼び出しのソースを特定するのに役立ちます CLIENT_IP が、テクニカル ユーザー/システム アカウント (共有ユーザー ID) または呼び出しが物理的なオフィスの場所 (共有 IP住所）。

最後に API_FAMILY、、、、 および  フィールドは、API クライアントによって実行される操作の種類に関する重要な手がかりを提供しますAPI_VERSION。 API_RESOURCEHTTP_METHOD

# レガシー API を使用して統合をアップグレードする

アップグレード手順は、使用している API の種類によって異なりますが、必要なものの簡単な概要を次に示します。

+ SOAP ベースの API 呼び出しの場合、新しい WSDLを生成し 、影響を受ける統合に組み込みます
+ REST エンドポイントの場合、URI のバージョン番号を現在のメジャー リリースに更新します
+ /async Bulk API の場合も 同様にエンドポイントの URI を更新できますが 、従来の呼び出しをアップグレードする最も有益な方法は、 Bulk API 2.0を採用し 、よりシンプルなワークフローと改善された制限を享受することです!

アプリケーションが古いライブラリやプラグイン (古い SForceOfficeToolkit COM インターフェイスなど) を使用してレガシ API 呼び出しを行っている可能性があることに注意してください。これらのライブラリは、クライアント アプリケーションと API の間の仲介者として機能し、特定のタスクを暗黙的に処理するため、統合のコーディングが簡単になります。このようなヘルプを利用した結果、URI にバージョンを含むエンドポイント定義をマスクできます。そのため、影響を受けるアプリケーションがそのようなインターフェイスを使用している場合は、ソース コードを詳しく調べてください。このデューデリジェンスは、自分またはチームが所有するアプリのコードを書いていない場合に特に必要です。

ユーザは、Data Loader や Connectors to Microsoft Office 製品などのデスクトップ アプリケーションを使用して、Salesforce とやり取りしている場合があります。これらのアプリは、プラットフォーム API を呼び出してアクションを実行します。また、API と同様に、Data Loader はメジャー リリースごとにバージョン管理されます。そのため、あなたや関係者が古いバージョンのデータ ローダを使用している場合は、古いバージョンの API を呼び出しているに違いありません。

これらすべてを念頭に置いて、システム管理者と協力して、組織にインストールされている AppExchange ソリューションの最新パッケージにアップグレードしてください。ISV コミュニティは、これらの退職プログラムに関するパートナー アラートを受け取り、必要に応じてアプリを調整するための措置を講じています。

そして覚えておいてください: 変更に関係なく、必ず回帰テストを実行して、すべてが期待どおりに機能していることを確認してください。