tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:ICU ロケール形式の自動有効化エラーについて

ICU ロケール形式の自動有効化エラーについての話。ちょうど、Developer Edtion組織に対して次のようなアラートメールが届いたのでせっかくなので記録です。(DE組織も本番と同じように扱われる組織)


組織で使用されている API バージョンが 45 を下回るため、通知したとおりに ICU ロケール形式で有効化されませんでした。Apex クラス、Apex トリガー、およびカスタム Visualforce ページを API バージョン 45 以上にアップグレードしてください。


これはリリース更新ページで確認できる「ICU ロケール形式を有効化」に関する機能のアラートです。


ICU ロケール形式を有効化は数年前(Winter'20)で最初にアナウンスされて準備ができたタイミングで切り替えるように案内が出ていたものです。


2025年に準備期間終了で完全切り替えとなり、システム側で自動で切り替えを行うことになっています。(こちらもアナウンスがでていたと思います。)


今回のアラートメールはこの自動有効化に失敗したというメールになります。このアラートの解決方法はICUロケール形式の有効化を行えば良いのですが、自動有効化の場合はApexのAPIバージョンを45.0未満のものがあると実施できません。(AppExchangeのコードを含む)


自動有効化はできないのですが、手動有効化は古いAPIバージョンがあっても実行可能です。Sandbox環境などでシステムが止まらないかやExcperine Cloudなどで外部向けのポータルサイトを構築している場合はそのあたりのチェックの実施が推奨されますが、懸念がない場合は手動での更新を実施することで、有効化されてこのアラートは表示されなくなると思います。


手動実行の方法はリリース更新のページから実施することになります。


ちなみにデータストレージやファイルストレージが上限を超えていると storage limit exceeded と表示されて有効化できません。


その場合は組織のディスク使用料のページで確認してみましょう。(テストでアップロードしてたのだと思うけど100%超えてるの気づかなかった)


適用がスケジュールされましたというメッセージが少し気になりますが、この対応で手動更新の設定ができたと思います。


作業実施後はアーカイブ済みタブに移動して完了と表示されます。


手動有効化はこのような形で実施可能です。これでアラートメールも届かなくなるのですが、Apexのバージョンは別途対応が必要です。古いバージョンの場合はICUを有効化していても下のJDKのほうがそのApex処理では適用されてしまうとのことです。Apex処理の内容的に影響 / 懸念がないことがわかっている場合は一旦期限の迫っているICUロケールの有効化を手動で実施して、なるべくはやめにApexコードのバージョンをアップしていくのが良さそうです。


その他にも読んでおいたほうが良さそうな内容が「よくある質問」にまとめられていました。


もう少しわかりやすく確認したい場合は、サクセスナビにもまとめられているのでこちらがおすすめです。

ICUロケール形式の有効化|セキュリティ・開発・運用|Salesforce サクセスナビ