sandboxから本番環境にシステムリリースする際に変更セットを利用しているのですが、毎回考慮事項がたくさんありその都度悩んでしまいます。
すべての考慮事項を洗い出すのはさすがに大変ですが、備忘録としてちょこちょこ書き留めていこうかなと思います。
たぶん覚えては忘れての繰り返しになるんだろうなとは思いますが。
カスタムオブジェクト
主従関係を持つオブジェクト
主従関係を持つオブジェクトをリリースする際は、主従関係項目も一緒に変更セットに詰めてあげないとエラーになってしまいます。
これは本当に毎回忘れます。
項目
カスタム項目のデータ型変更
変更セットでカスタム項目のデータ型を変更する場合は、ひとまず以下のことを頭に入れておきたいと思います。
- 項目がApex、数式、入力規則などで使用されている場合には変更できない。
- 「参照→主従以外、主従→参照以外、数式→数式以外」のデータ型変更はできない
- 「参照と主従以外→参照/主従、数式以外→数式」のデータ型変更はできない
1. 項目がApex、数式、入力規則などで使用されている場合
データ型を変更したいカスタム項目が Apex、数式、入力規則などで使用されている場合は、変更セットでデータ型の変更ができません。
対処法としては、先にリリース先環境で、対象のApex、数式、入力規則などの項目使用箇所をコメントアウトしておく必要があります。
2. 「参照→主従以外、主従→参照以外、数式→数式以外」のデータ型変更
変更セットで「参照→主従以外、主従→参照以外、数式→数式以外」のデータ型変更はできません。
オブジェクトマネージャーからデータ型を変更する時も新たに項目を作り直す必要があります。
リリース先環境で対象のカスタム項目を削除した上で、データ型を変更した項目を変更セットに詰めてリリースする必要があります。
3. 「参照と主従以外→参照/主従、数式以外→数式」のデータ型変更
こちらも上記と同じですね。
リリース先環境で対象のカスタム項目を削除して、データ型を変更した項目を変更セットに詰めてリリースします。
項目レベルセキュリティ
変更セットに新規カスタム項目を追加してリリースしても、プロファイルを同じ変更セットに詰めていないと項目レベルセキュリティの設定は引き継がれません。
しかし、プロファイルを変更セットに含めるとプロファイルに設定されている他の設定内容もリリースされ、いろいろと面倒なことになります。
なので項目レベルセキュリティの設定は基本的には手動設定がいいんじゃないかなと思います。
新規項目がたくさんあると大変ですが、、、
項目履歴管理の設定
新規項目を作成し、項目履歴管理を設定している場合、変更セットでその項目をリリースすると項目履歴管理の設定は引き継がれます。
ただし、既存項目の項目履歴管理をオフにして、変更セットで項目をリリースしてもリリース先環境の項目履歴管理はオフにはなりません。
ちょっと仕組みが分からないですが、新規作成項目であれば、変更セットで項目をリリースした時に設定が引き継がれるみたいです。
選択リスト値の変更
変更セットで選択リスト項目の選択リスト値を変更する際は、「表示ラベルとAPI参照名の変更」を行うのか「表示ラベルのみの変更」を行うのかで注意点が異なります。
表示ラベルとAPI名を変更する場合
表示ラベルとAPI名を変更する場合は、変更セットではなく、手動で変更することをオススメします。
というのも、変更セットでリリースした場合、対象組織の既存データに設定されたリスト値が置換されないからです。
例えば、リリース元環境の選択リストに含まれる「High」というリスト値の表示ラベルとAPI参照名を「Super High」に変更するとします。
リリース元環境では手動でリスト値を変更し、それに伴い、既存のデータでリスト値が「High」となっているものは、自動的に「Super High」に置き換わります
しかし、このまま変更セットでリリースすると、リリース先環境では既存データの値の置換は行われず、 「High」のリスト値が有効から無効に変わり、新たに「Super High」が作成されます。
なぜなら、リリース先環境の選択リストには有効なリスト値のAPI名として「High」が存在しますが、変更セットには「High」は含まれず、「Super High」 のみ含まれているからです。
対応するAPI名がなければリスト値は新しく作成される(もしくは無効になる)ということです。
表示ラベルのみを変更する場合
表示ラベルのみを変更し、変更セットでリリースするとリリース先組織の既存データのリスト値が自動で置換されます。
ただし、リスト値のAPI名が変更されたわけではないので、レイアウト上では値が変更されますが、SOQLで選択リスト値を確認すると値はそのままの状態です。
SOQLで取得されるのはリスト値のAPI名になります。
レポート
レポートをリリースする時のポイントもまとめておきます。
- 新規項目を含むレポートをリリースする際はレポートタイプを変更セットに含める
- リリース先環境にレポート格納用のフォルダがない場合、フォルダを変更セットに含める
- [私の非公開カスタムレポート] フォルダに保存されたレポート (非公開レポート) は変更セットに追加できない
- 積み上げ集計がオフの状態でリリースされる
- ユーザがレポートの表示項目を変えている可能性を考慮する
1. レポートタイプを変更セットに含める
新規項目を含むレポートをリリースする際はそのレポートのレポートタイプも変更セットに含める必要があります。
というのも、リリース元環境にあってリリース先環境に無い項目がレポートタイプに存在すると、リリース時にそれらの項目が表示されないといった現象がおこります。
レポートタイプお忘れなく。
2. フォルダを変更セットに含める
リリース先環境にレポート格納用のフォルダがない場合、フォルダを変更セットに含める必要があります。
ついつい忘れてしまいます。
そりゃ格納場所が分からないとリリースできないですよね。
3. [私の非公開カスタムレポート] フォルダ
[私の非公開カスタムレポート] フォルダに保存されたレポート (非公開レポート) は変更セットに追加可能なレポートのリストに表示されず、追加できません。
また、[未整理公開レポート] フォルダに保存されたレポートは、変更セットに追加可能なレポートのリストに表示されますが、変更セットに追加されてもリリースされません。
変更セットを使用して非公開レポートまたは未整理レポートをリリースするには、最初にレポートを別のレポートフォルダにコピーまたは移動させておく必要があります。
4. 積み上げ集計がオフの状態でリリースされる
積み上げ集計を使用したレポートを変更セットでリリースすると積み上げ集計がオフになった状態でリリースされます。
具体的には、レポート下部に表示される「積み上げ集計」トグルボタンがオフになっているということです。
なぜこんなことになるのかさっぱりですが、リリース後、必要に応じてオンにする必要ありです。
5. ユーザがレポートやリストビューの表示項目を変えているかも
レポートやリストビューの表示項目はをユーザ自身で変更している場合があり、そこに変更セットでレポートに更新をかけるとユーザが変更した箇所がすべて上書きされてしまうので注意が必要です。
ユーザ側からすれば「変更したところが全部消えてる!?」となりかねないので、変更セットで既存のレポートやリストビューを更新する際には注意ですね。
大した変更でなければ手動設定で問題ないのかなと思います。
プロファイル
続いてプロファイルのリリースについてです。
変更セットでリリースする際は特に注意が必要です。
- プロファイル設定が引き継がれるのは同じ変更セットに含まれるコンポーネント
- ログインIPアドレスの制限もリリースされる
1. プロファイル設定が引き継がれるのは同じ変更セットに含まれるコンポーネント
カスタムオブジェクトやカスタム項目のオブジェクト権限や項目レベルセキュリティの設定を変更セットで行いたい場合は、対象のプロファイルと設定を引き継ぎたい対象のコンポーネントを変更セットに含めます。
逆に、プロファイルだけ変更セットにあって、コンポーネントが変更セットに無いとプロファイル設定はリリースされません。
標準オブジェクトとそのタブ、項目はもともと変更セットに追加できないので、これらに対してプロファイルの設定を行いたい場合は、手動設定ということになりますね。
2. ログインIPアドレスの制限もリリースされる
変更セットにプロファイルを含めてリリースするとsandboxのIPアドレスが本番環境にも適応されてしまいます。
sandboxと本番環境で異なるIPアドレスを使用することはよくあるのでこれは困りますね。
プロファイル周りの設定に関しては手動設定が無難ですかね、、、
その他
カスタムボタンやカスタムリンクのURL
カスタムボタンやカスタムリンクにURLを設定している場合、リリース時には注意が必要です。
特にレコードIDをべた書きで指定している場合は、リリース後にURLの遷移先に飛ぼうとしてもIDが見つけられずエラーになってしまいます。
環境によってレコードIDは異なるので、リリース後に必ず正しいIDに書き換えましょう。
例えば、下画像はレポートへ遷移するカスタムボタンですが、URLに直接レポートIDを指定しいるので、リリース後にリリース先環境のレポートIDで置き換える必要があります。
公開グループ
変更セットでは「グループ」コンポーネントを選択することで公開グループをリリース先環境へリリースすることができます。
ただ、公開グループの中身(ユーザやロールなど)はリリースされませんので、リリース先環境で再度設定する必要があります。
参考資料
まとめ
プロファイル周辺が本当にめんどくさい。
また何かあればその都度書き足していきます。
コメント