今回は、選択リスト型項目の改修時に失敗したことと気を付けたいことをご紹介します。
■値を追加するとき
「くだもの」項目に”みかん”の値を追加するぞー
・「新規」ボタン押下して。。。
・”みかん” 「保存」!
そう、、
無効な値を復活させてしまったのです。。。
しかも、思ってもない値で、、、
値を追加するページにちゃんと書いてありました
以下の 1 つ以上の選択リスト値を追加します。値は 1 行につき 1 つ存在する必要があり、値のラベルと API 参照名の両方で使用されます。
値が、無効な値の API 参照名と一致する場合、その値は以前のラベルと共に再度有効になります。
値が、無効な値のラベルと一致し、API 参照名と一致しない場合、新しい値が作成されます。
無効な値が、複数ページに及んでいることにも気が付いておらずで。。。
「一覧を表示」→「次のページ」と進んでいくと、あるわあるわ。。
バックアップをとっていたので、復元できましたが、冷や汗ダラダラです。
早速、値とAPI参照名は同じ値に設定するよう運用ルールを定めました。
設定でAPI参照名の変更の制限を検討してもいいかもしれません。
(参考)Salesforceヘルプ:
数式とインテグレーションの選択リスト API 参照名の保護
■変更セットでリリースを行うとき
まずは、ヘルプを確認
(参考)Salesforceヘルプ:
リリースの特殊な動作選択リスト値
変更セットに含まれていない対象の選択リスト項目の値は無効に設定されます。
たとえば、対象の選択リストに有効な値 1 が含まれていて、変更セットの選択リストに値 1 が含まれていない場合、対象組織で 1 が有効から無効に変わります。
早速検証だ!というわけで、
変更セットでリリースを行う場合の、値の変化は、下図の通りとなりました。
まとめると、次のとおりです。
・選択リストオプションの「値セットで定義された値に選択リストを制限します」が
チェックなし・・・制限しない場合 ⇒『有効な値のみ』 送信される(
H(※1)) チェックあり・・・制限する場合 ⇒『有効な値も』 『
無効な値も』 送信される(
H(※2))・リリース時
現在有効な値が、有効な値として変更セットに含まれていない場合、無効な値に変更される(B・C)
・API参照名をキーとしているため
API参照名が同一で 値が異なる場合、値が上書きされる(K・L)
・検証・リリース時
API参照名が 異なっていても、値が重複しているものがあればエラーとなる(I・J)
▼エラー
どうでしょう、、なんどなく動作が分かってきました。
■手動でリリース作業を行うとき
変更セットでリリースすると失敗ばかり、、もう選択リスト項目は手動でリリースするぞ!
と心に決めたとたん、、陥るのが無効の値を再有効化したときのレコードタイプへの追加漏れです。。。
この間まで使っていた値を復活させる場合でも、自動では戻ってくれません。
必ず、レコードタイプの設定も確認。ユーザ権限で想定の値が選択可能であることを確認することが大切ですね。
■まとめ ~選択リスト型項目の改修時気を付けること~
【リリース準備】・改修対象の「項目」を含むレコード全件の「(改修対象の)項目の値」と「レコードID」についてバックアップをとる
・
改修対象の項目の「有効な値」と「無効な値」について 「値」「API参照名」ともに画面をドラッグ&コピーしてExcelなどに貼り付け、バックアップをとっておく
【変更セットリリース or 手動リリース時】・有効な値と無効な値がどう変化するか把握しておく
・レコードタイプのあるオブジェクトの場合
変更セットの場合・・・レコードタイプも変更セットに含める
手動リリースの場合・・・再有効化の値は、レコードタイプに追加する
【リリース後確認】・レポートでバックアップデータから異変がないかサンプルチェックを行う
・レコードタイプに値が追加されているか確認する
数々の失敗を繰り広げてたどり着いた答えは、どれも基本的なことでした。
とにもかくにも基本に忠実であれば自分を守ることにもつながりますね!