2024.4.15 「Salesforce - Undelete が実はデータローダーでも可能になっていた ~ それだけじゃない DataLoader v60.0 の改善点」
お世話になっております。
ウフル カスタマーサポートでございます。
前回の記事で、「データローダーで一括削除を誤って行ってしまったときの取り消し方法」として、「Workbench でブラウザから API アクセスして Undelete コマンドを実行する」という方法をご紹介させていただいたところ・・・
2024.3.22 「Salesforce - データローダーで誤って削除してしまっても "Workbench" ですぐに復元!(お客様のお問合せからの気づきシリーズ)」
https://csminfo.uhuru.jp/hc/ja/articles/30213285499673
記事をご覧になられた方より、「最新版の "バージョン 60.0" から、データローダー自体に Undelete 機能が追加実装されましたよ!」という情報を頂きました。
データローダーのバージョンは Salesforce での4ヶ月おきのメジャーバージョンアップで更新されるため、実は結構な頻度で細かな機能修正が行われています。
その機能修正というのは内部的な API の安定性向上や不具合修正などがメインで、インターフェースが大きく変わることは比較的稀なので、開発者レベルならともかく、一般的なシステム管理者レベルならば「メジャーバージョンアップのたびに新しいバージョンを入れる」ことはそう多くないのではと思われます。
その一方で、最新版以外のバージョンを使用する上で原因不明の不具合が発生した場合は、最新版で事象が再現するかどうかを確認の上、再現しないことが確認できたら、作業環境を最新版に置き換える必要があります(旧バージョンの改修は行われない:つまり今後「v58.0.3 ⇒ v58.0.4」への更新は行われない)。
あるお客様の環境でデータローダーをバッチモードで設定して基幹からエクスポートされる CSV を自動で取り込む運用をしておりましたが、v58.0.3 環境で特定の項目の更新漏れが散見されたので、Salesforce サポートに問合せをしたところ「最新版の v60.0.2 で再現するか確認し、再現しなかった場合、引き続き v60.0.2 を使用してください」という回答がありました。
つまり、「サポート対象は常に最新バージョンのみ」ということになります。
その案件の対応中、先述の「v60.0.2 で Undelete が使えるようになってますよ」という報告があったので、これを機に新機能チェックをしようと思い立った次第です。
それにしても、データローダーで「インターフェースが大きく変わる機能追加」がされたのに、Spring '24 のリリースノートには記載が無いんですよね・・・。
データローダー v60 インストールの準備 - JAVA ランタイム環境(JRE)の更新
データローダー v58 以前を使用している場合、アップデートの際に注意が必要です。
v59 で JAVA ランタイム環境(JRE)の必要バージョンが「17以降」に上がっているので、もし 16 以前がインストールされている場合、バージョン17をインストールする必要があります。
先述の「バッチを置き換える作業」で、インストールを始めて黒いプロンプト画面が表示されすぐ消える事象が起きていたので、確認したら JRE のバージョンが古かったでした。
インストールできない場合、まず JRE のバージョンを確認してください。
データローダーのインストールガイドに記載されている JRE は Zulu OpenJDK になります。
Java 8, 11, 17, 21, 22 Download for Linux, Windows and macOS (azul.com)
https://www.azul.com/downloads/?package=jdk#zulu
Windows、Mac それぞれ「x86 64-bit」を選択してダウンロードします(一般的なコンピュータの場合)。
Windows の場合は .msi 形式を選んでおくと、ダウンロードして即実行できるので手間が少ないです。(同様に Mac の場合は .dmg が良いかと)
ZULU JDK の最新バージョンは 21 ですが、必ずしも「大は小を兼ねる」とは限りません。
こういう不具合も確認されています。
Zulu 18 以降をインストールすると、Windows 版のデータローダーで文字化けが発生
https://help.salesforce.com/s/articleView?id=000391856&type=1
他にも、開発者の方で Visual Studio Code にて Salesforce Extention を使用している場合、バージョン17が必要なので、データローダーの方も JDK はバージョン17に留めておいた方が賢明と思われます。
Set Up Visual Studio Code
https://trailhead.salesforce.com/ja/content/learn/projects/quick-start-lightning-web-components/set-up-visual-studio-code
Visual Studio Code 向け Salesforce 拡張機能の一部の機能、特に Apex サポートは、
Java Platform Standard Edition Development Kit (JDK) に依存します。
JDK バージョン 17 (推奨) または JDK バージョン 11 のインストールが必要です。
別のバージョンの Java がインストールされていても、JDK 17 または JDK 11 を
インストールする必要があります。
インストールされている JDK のバージョンは、コマンドプロンプトで確認できます。
javac -version
参考:
Qiita - javaのバージョンを下げる方法
https://qiita.com/maruyama42/items/1b970e1c09e8b8ffd71c
データローダーのインストール
JDK のインストールが完了したら、Salesforce 管理画面からデータローダーのページに進みます。
https://{YOURDOMAIN}.lightning.force.com/lightning/setup/DataLoader/home
「ダウンロード」をクリックすると別タブが開き、データローダーのダウンロードリンクが表示されます。
https://developer.salesforce.com/tools/data-loader
"Download Spring '24 Release for macOS and Windows (v60.0.2)" のリンクをクリックし、ZIP ファイルをダウンロードします。
ダウンロードした ZIP を開き、中のファイル一式をインストール先ディレクトリにコピーしておきます。
コピーが終わったらインストーラーを実行します。
Windows は install.bat、Mac は install.command になります。
コマンドプロンプトが開き、インストールが始まります。
ここで画面が消える場合、先述の通り適切なバージョンの JDK がインストールされているかを確認します。
「インストール先」「デスクトップショートカット作成」「スタートメニュー作成」を訊かれます。すべて Yes でよいでしょう。
インストールが完了するとデータローダーが起動します。
データローダー v60.0.2 の新機能
データローダー v60 の起動画面です。
早速ですが Undelete ボタンが見えております。
Undelete の操作方法は、前回 Workbench でご説明した通り、Delete と同様に「ID だけのマッピング」になります。
Export All で "ISDELETE = TRUE" 条件でエクスポートしておくか、直近の Delete のサクセスログを読ませるかのいずれかの方法を取ります。
マッピングはご覧の通り ID 項目を CSV の ID カラムに紐づけるだけです。
これで終わり・・・と思いきや、実作業で Update を操作したら、見慣れないダイアログが・・・。
対象として選んだオブジェクトの主従/参照項目について、どのオブジェクトのどの項目を参照するかを選択するメニューが追加されております。
つまり、どうやらこれは、Upsert ではなく Update でも参照先オブジェクトの外部 ID を値として使用できるようになった、ということのようです。
確認したら Insert でも同じでした。
Account の "Lookup Field of Related Object"
User の "Lookup Field of Related Object"
取引先(親取引先)の場合はネイティブの Salesforce ID と外部 ID 項目、ユーザーの場合は SFID と外部 ID 項目に加えて以下のものが使用可能になっていました。
- メールアドレス
- 従業員番号
- SAML 統合 ID
- ユーザー名
シングルサインオンを導入しているお客様も多いと思うので、SAML ID が使えるのは良いことだと思います。
ユーザ名はユニーク強制なので問題ないですが、それ以外の値で重複があった場合、恐らく Duplicate Value 云々のエラーになると思われます。(外部 ID でユニーク設定をしていなかった場合のエラーと同様)
なお、対象オブジェクト自体のキー項目のマッピングについては、Update の場合は項目選択が表示されなかったので、ここは SFID 固定となり、外部 ID で上書き更新を行うには従来通り Upsert が必要ということになります。
意外なところで痒い所に手が届くデータローダーの更新でした。
======================================
今回もまた前回に引き続き実際のお客様のお問合せから記事のヒントをいただきました。
今後も気づきがありましたら積極的にこちらで共有をさせて頂ければと思います。
お客様からのお問合せが、弊社の宝物となり、ちょっと磨くことで皆様のちょっとした財産になれば幸いです。
今後ともウフル カスタマーサポートチームをよろしくお願いいたします。
コメント