12月初旬の更新をすっかり忘れていて、無資格開発者となりました。ブラック〇ャックみたいな気持ちで頑張っています。
さて、Salesforceのバックアップって、運用者・開発者の大きな悩みの一つだと思いますが、今回はメタデータのバックアップについてです。
昔からできていたのかもしれませんが、Salesforce CLIにてそれなりに簡単にメタデータがごそっと抜けるようになっています。
手順としては、マニフェストを作った後に、そのマニフェストを使ってメタデータを読み取るだけの話です。
使用するsfコマンドはsf project generate manifestでございます。
--from-org
というオプションが、メタデータの目録であるpackage.xml
作ってくれるので、数分待ちましょう。
> sf project generate manifest --output-dir ./manifest --from-org <orgname/alias>`
successfully wrote package.xml to ./manifest
わぁ、全部抜けちゃうかもというワクワクを噛み締めながら、よーし全部読みこんじゃうぞ!と次のステップに進みましょう。
使用するsfコマンドはいつもお世話になっておりますsf project retrieve start です。このstart
って冗長に感じるのは、僕の英語火力不足に違いない。
--zip-file-name
オプションはお好みで…
> sf project:start:retrieve -o <orgname/alias> -x .\manifest\package.xml -t .\manifest --zip-file-name metadata.zip
Retrieving v62.0 metadata from <orgname/alias> using the v62.0 SOAP API
Preparing retrieve request... Succeeded
Wrote retrieve zip file to \manifest\metadata.zip.
これでメタデータのバックアップは完了です。全部抜けたはずのメタデータをスクラッチ組織になどにデプロイしてみて初めてバックアップができたことになりますが、一発でデプロイできることはないので、まごころを込めてデプロイを試してみましょう。その辺のTipsめいたものは(時間が足りないので)またの機会にします。
と、あんまり大きくないSalesforce組織の場合は、単純な話ではありますね…
sf project retrieve start
の読み込み件数は1万件未満にしないといけないらしい
試行した案件の対象組織では大量のレポートが存在したようで、package.xml
内のメタデータは1万件を軽く超えていました。
> sf project:start:retrieve -o <orgname/alias> -x .\manifest\package.xml -t .\manifest --zip-file-name metadata.zip
Retrieving v62.0 metadata from <orgname/alias> using the v62.0 SOAP API
Preparing retrieve request... Failed
Error (LIMIT_EXCEEDED): LIMIT_EXCEEDED: Too many files in retrieve call, limit is: 10000
まごころを込めてpackage.xml
を手動で分割、それぞれの読み込めば大丈夫です。
sf project retrieve start
はsfdx-project.json
に定義したAPIバージョンで抜いてくる
オプションでも制御できるように思うのですが、sfdx-project.json
を最新にしておくとよいように思います。Salesforce CLIにて抜いてくるメタデータの形式はAPIバージョン間で破壊的変更が結構見受けられると感じています。
ExperienceBundle
は組織側の設定で有効化することが必要
組織の設定で有効にしないと抜けなかったりです。ExperienceCloudサイトをお持ちの方はご注意くださいませ。
マニフェストを作くるのは凄い簡単でしたが、読み込みとデプロイはひとつづつ丁寧に解いていくしかないし、Stack Overflowには足を向けて寝れなくなります。
この記事は、Salesforce Advent Calendar 2024の11日目に投稿するつもりだったものです。