詳細情報:
リリースの特殊な動作
この情報を参考にして、リリースに含めるものや、対象での変更の表示方法を決定してください。
「メタデータ API」セクションにリストされている動作は、Visual Studio Code 向け Salesforce 拡張機能を使用している場合に適用されます。
- 変更セットコンポーネント
承認プロセス、Apexコード、カスタム項目とオブジェクト、フロー、その他のカスタムコンポーネントがリリースにどのように影響するかを検討します。 - メタデータ API
ここで示す動作は、Visual Studio Code 向け Salesforce 拡張機能を使用している場合に適用されます。
変更セットコンポーネント
承認プロセス、Apexコード、カスタム項目とオブジェクト、フロー、その他のカスタムコンポーネントがリリースにどのように影響するかを検討します。
承認プロセス
- 承認ページの項目に標準オブジェクトのカスタム項目が含まれている場合は、そのカスタム項目を送信変更セットに手動で追加します。変更セットコンポーネントを選択するための [連動関係を参照/追加] オプションには、これらの項目は含まれません。
- 承認プロセスで、カスタム項目を含む投稿テンプレートを参照している場合、変更セットに追加する前にこれらの投稿テンプレートを送信側組織に再保存します。[設定] の [クイック検索] ボックスに「投稿テンプレート」と入力し、[投稿テンプレート] を選択します。各投稿テンプレートで、[編集]、[保存] の順にクリックします。
- 変更セットには、ソースの有効承認プロセスの順序は含まれません。場合によっては、リリース後に対象で承認プロセスを並び替える必要があります。
- 変更セットに以前に含まれており別の組織でリリース済みの承認プロセスの [一意の名前] を変更し、変更セット経由で承認プロセスを再送信する場合は、他の組織でリリースされる時点で新しい承認プロセスが作成されます。以前にリリースされた承認プロセスは、変更されません。
Apex クラスおよび Apex トリガー
デフォルトでは、Apex ジョブを待機中または処理中にする Apex コードへの変更はリリースできません。これらの変更をリリースするには、次のいずれかの手順を実行します。
- Apex コードへの変更をリリースする前に、Apex ジョブをキャンセルします。リリース後にジョブを再スケジュールします。
- Salesforce ユーザーインターフェースの [リリース設定] ページで Apex ジョブによるリリースを有効化します。
Apex テストでレコードが作成された場合、テスト レコードは参照済みとしてマークされません。そのため、LastViewedDateで絞り込むクエリを使用した Apex テストはリリース時に失敗し、コードカバー率が低下する可能性があります。Apex テストでレコードを表示済みとしてマークするには、まず FOR VIEW 句を使用し、次にLastViewedDateで絞り込みます。
次の Apex テスト例では、LastViewedDate で絞り込む前に FOR VIEW 句を使用します。
@isTest
public class AccountViewTest {
@testSetup
static void myTestSetup() {
Account a = new Account();
a.Name = 'Test Account';
insert a;
}
@isTest
static void testMethod1() {
List<Account> aForView = [Select Id, Name from Account LIMIT 1 FOR VIEW];
List<Account> a = [Select Id, Name from Account where LastViewedDate = TODAY LIMIT 1];
System.assertEquals(1, a.size());
}
}
カスタム項目
- カスタム項目のデータ型を変更するには、変更セットを使用します。ただし、多数のレコードが更新されるため、リリースが遅延することがあります。対象への変更は代わりにユーザーインターフェースを使用して行うことを検討してください。
カスタムオブジェクト
- リリースしようとしている変更セットに親-子リレーションを持つカスタムオブジェクトが含まれるが、同じ変更セット内に主従項目がない場合、エラーが発生することがあります。このエラーを解決するには、全体的なデフォルトを変更していなくても、主従カスタム項目を変更セットに追加します。
- カスタムオブジェクトの挿入、オブジェクトの sharingModel 項目の更新、新しい所有者に基づく共有ルールの追加を同時に行うことはサポートされていません。その場合は、3 つの個別のリリースが必要になります。まずカスタムオブジェクトをリリースし、次にオブジェクトの更新された sharingModel をリリースし、その後に新しい所有者に基づく共有ルールをリリースします。1 つのリリースで sharingModel 項目の更新を更新して、条件に基づく共有ルールまたはゲストユーザー共有ルールを追加することもできます。
フロー
- 変更セットを使用してフローをリリースする場合、移行サポートの制限を考慮します。変更セットで使用可能な項目とコンポーネントのみをフローで参照していることを確認してください。
- 変更セットには 1 つのバージョンフローのみを含むことができます。
- 送信変更セットをアップロードするときに有効なバージョンがない場合、最新の無効なバージョンが使用されます。
- 変更セットの連動コンポーネントを参照するとき、[コンポーネントの連動関係] ページに、フローの<i>すべて</i>のバージョンの連動関係が一覧表示されます。関連するフローバージョンのすべての相互連動関係コンポーネントを送信変更セットに追加します。
- 変更セットの有効なフローは、対象に無効としてリリースされます。リリース後手動でフローを有効化してください。
- 変更セットを使用してフローをリリースまたは再リリースすると、対象にフローのバージョンが作成されます。
- 本番組織では、変更セットまたはメタデータ API を使用して、プロセスまたはフローの新しい有効なバージョンをリリースする設定を有効にできます。スクラッチ組織、Sandbox 組織、開発者組織などの非本番組織では、新しい有効なバージョンを常にデプロイできるため、この設定は表示されません。
ページレイアウト
プロファイルおよびレコードタイプは含まれているが、そのレコードタイプに割り当てられたページレイアウトが含まれていないリリースの場合、そのレコードタイプのプロファイルから既存のレイアウトの割り当てを削除します。変更セットには常に、必要なすべてのレコードタイプのすべてのページレイアウトを含めるようにしてください。
選択リスト値
変更セットに含まれていない対象の選択リスト項目の値は無効に設定されます。
たとえば、対象の選択リストに有効な値 1 が含まれていて、変更セットの選択リストに値 1 が含まれていない場合、対象組織で 1 が有効から無効に変わります。
共有
オブジェクトの sharingModel 項目の更新と新しい所有者に基づく共有ルールの追加を同時に行うことはサポートされていません。全体的なデフォルトが公開である場合は、所有者に基づく共有ルールを追加できます。その後、sharingModel を更新すると、1 回だけ共有が再適用されます。変更セットコンポーネントを使用して、条件に基づく共有ルールまたはゲストユーザーの共有ルールのリリースと sharingModel 項目の変更を一緒に行うことができます。
メタデータ API
ここで示す動作は、Visual Studio Code 向け Salesforce 拡張機能を使用している場合に適用されます。
Apex クラスおよび Apex トリガー
デフォルトでは、Apex ジョブを待機中または処理中にする Apex コードへの変更はリリースできません。これらの変更をリリースするには、次のいずれかの手順を実行します。
- Apex コードへの変更をリリースする前に、Apex ジョブをキャンセルします。リリース後にジョブを再スケジュールします。
- Salesforce ユーザーインターフェースの [リリース設定] ページで Apex ジョブによるリリースを有効化します。
Apex テストでレコードが作成された場合、テスト レコードは参照済みとしてマークされません。そのため、LastViewedDateで絞り込むクエリを使用した Apex テストはリリース時に失敗し、コードカバー率が低下する可能性があります。Apex テストでレコードを表示済みとしてマークするには、まず FOR VIEW 句を使用し、次にLastViewedDateで絞り込みます。
次の Apex テスト例では、LastViewedDate で絞り込む前に FOR VIEW 句を使用します。
@isTest
public class AccountViewTest {
@testSetup
static void myTestSetup() {
Account a = new Account();
a.Name = 'Test Account';
insert a;
}
@isTest
static void testMethod1() {
List<Account> aForView = [Select Id, Name from Account LIMIT 1 FOR VIEW];
List<Account> a = [Select Id, Name from Account where LastViewedDate = TODAY LIMIT 1];
System.assertEquals(1, a.size());
}
}
承認プロセス
- メタデータ API と共に Salesforce ナレッジ記事の承認プロセスを使用するには、記事タイプをリリースする必要があります。承認プロセスの記事バージョン (_kav) の場合、サポートされるアクションの種類は、ナレッジアクション、メールアラート、項目自動更新、送信メッセージになります。
- 承認プロセスで、カスタム項目を含む投稿テンプレートを参照している場合、変更セットに追加する前にこれらの投稿テンプレートを送信側組織に再保存します。[設定] の [クイック検索] ボックスに「投稿テンプレート」と入力し、[投稿テンプレート] を選択します。各投稿テンプレートで、[編集]、[保存] の順にクリックします。
- メタデータには、有効承認プロセスの順序は含まれません。場合によっては、リリース後に対象で承認プロセスを並び替える必要があります。
- 変更セットに以前に含まれており別の組織でリリース済みの承認プロセスの [一意の名前] を変更し、変更セット経由で承認プロセスを再送信する場合は、他の組織でリリースされる時点で新しい承認プロセスが作成されます。以前にリリースされた承認プロセスは、変更されません。
認証プロバイダー
2022 年 11 月以降、コンシューマーの秘密が定義された認証プロバイダーが変更セットに含まれる場合、コンシューマーの秘密がプレースホルダー値に変更されます。変更セットのリリース時に、コンシューマーの秘密を手動で挿入する必要があります。
カスタム項目
API バージョン 30.0 以降、新しいカスタム項目をリリースする場合、プロファイル項目権限の editable 項目と readable 項目のデフォルト値は false です。デフォルト値を上書きするには、新規項目の項目権限をプロファイルに含めます。
カスタムオブジェクト
カスタムオブジェクトの挿入、オブジェクトの sharingModel 項目の更新、新しい所有者に基づく共有ルールの追加を同時に行うことはサポートされていません。その場合は、3 つの個別のリリースが必要になります。まずカスタムオブジェクトをリリースし、次にオブジェクトの更新された sharingModel をリリースし、その後に新しい所有者に基づく共有ルールをリリースします。1 つのリリースで sharingModel 項目の更新を更新して、条件に基づく共有ルールまたはゲストユーザー共有ルールを追加することもできます。
接続アプリケーション
- メタデータ API で consumerKey を設定することはできません。これは、情報提供を目的とした取得操作に含まれます。接続アプリケーションを別の組織に移動する場合、組織にリリースする前に consumerKey を .zip ファイルから削除する必要があります。移行先で新しいキーが生成されます。
- 接続アプリケーションのモバイル設定は、変更セットでサポートされていないため、手動で移行する必要があります。
グループ
グループ種別をリリースする場合、公開グループのメンバーは移行されません。
主従関係
主従関係が含まれるメタデータ API リリースでは、次の場合にごみ箱内のすべての従レコードが削除されます。
- 新しい [主従関係] 項目が含まれるリリースの場合、[主従関係] 項目のリリースに進む前にすべての従レコードを論理削除 (ごみ箱に送信) しないと、リリースは失敗します。リリース中、従レコードはごみ箱から完全に削除され、復元することはできません。
- 参照項目関係を主従関係に変換するリリースの場合、正常にリリースするには、従レコードが主レコードを参照しているか、従レコードが論理削除 (ごみ箱に送信) されている必要があります。ただし、リリースの成功時にごみ箱内のすべての従レコードは完全に削除されます。
ページレイアウト
ページレイアウトの割り当てを含むリリースでは、対象組織にある既存のすべてのページレイアウトの割り当てが、.zip ファイルで指定された割り当てに置き換えられます。組織の既存のページレイアウトが .zip ファイルに含まれていない場合、それらのページレイアウトはなくなります。すべての必要なレコードタイプの全ページレイアウトを .zip ファイルに必ず含めるようにしてください。
選択リスト値
メタデータに含まれていない対象組織の選択リスト項目の値は無効に設定されます。
たとえば、対象組織の選択リストに有効な値 1 が含まれていて、選択リストの値 1 がメタデータに含まれていない場合、対象組織で 1 が有効から無効に変わります。
プロファイル
対象に存在しない名前のプロファイルがパッケージに含まれている場合、新しいプロファイルはその名前で作成されます。リリースされたプロファイルで権限または設定が指定されていない場合、最終的なプロファイルは標準プロファイルのすべての権限と設定で構成されます。
ContentVersion オブジェクトのカスタム項目は、すべてのプロファイルユーザーが使用できます。プロファイルメタデータをエクスポートすると、すべてのカスタム項目が公開されます。
共有
- API バージョン 29.0 では、メタデータ API を使用してオブジェクトの sharingModel を変更することはできません。ユーザーインターフェースを使用して対象を手動で変更します。
- API バージョン 30.0 以降、メタデータ API とユーザーインターフェースを使用して、内部ユーザー向けにオブジェクトの sharingModel を変更できます。
- メタデータ API では、オブジェクトの sharingModel 項目の更新と新しい所有者に基づく共有ルールの追加を同時に行うことはサポートされていません。全体的なデフォルトが公開である場合は、所有者に基づく共有ルールを追加できます。その後、sharingModel を更新すると、1 回だけ共有が再適用されます。メタデータ API を使用して、条件に基づく共有ルールまたはゲストユーザーの共有ルールのリリースと sharingModel 項目の変更を一緒に行うことができます。
ワークフロー
メタデータ API では、フロートリガーのテストモードはサポートされていません。システム管理者がワークフロールールを起動したときにフロートリガーで最新のフローバージョンを実行する場合は、リリース後にユーザーインターフェースでテストモードを有効にします。

