PR

【Salesforce】component インスタンスには識別子が設定されていません

blog-eyecatch-error Salesforce
この記事は約4分で読めます。
記事内に広告が含まれています。

Salesforce のデプロイ作業中に、「***」 component インスタンスには識別子が設定されていません というエラーが表示された場合の対処方法です。

エラーの対象リソース

Lightning ページのデプロイの際に発生する場合があります。

本エラーの対象のメタデータ は「flexipages」です。

flexipages について

メタデータ デプロイで Lightningページ設定(flexipages)をデプロイする際に利用します。

Package.xml では以下のように記載します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>xxx</members>
        <name>flexipages</name>
    </types>
    <version>56.0</version>
</Package>
スポンサーリンク

エラーの原因

私は Salesforce の Winter '23 のアップデート後(2022年11月)に直面しました。

原因は、「ページ内の各コンポーネントに ID が割り振られていない」ことのようです。

注意点としては、この「flexipage」の各コンポーネントのIDは、GUIで設定することはできません。

Salesforceのバージョンアップの際に、メタデータ にて各コンポーネントに一意なID要素が追加されているようです。

新規開発の際は問題ないかもしれませんが、昔のバージョンにて開発したLihghtningページを久々に修正し、デプロイするといった場合に直面する可能性があります。

解決策

Lightningページを開発した環境にて、対象のメタデータ をリトリーブします。

すると、(gitを利用している場合は)以下のようなタグが差分として表示されます。

<identifier>{<componentName>と同様/もしくは類似した文字列}</identifier>

この <identifier> タグが、Salesforceのバージョンアップに伴い、内部的に追加されるようになったようです。

公式ヘルプページは以下です。

FlexiPage | メタデータ API 開発者ガイド | Salesforce Developers
Lightning ページに関連付けられたメタデータを表します。Lightning ページは、Lightning コンポーネントを含む領域で構成される、カスタマイズ可能な画面を表します。

FieldInstance の章には次のように記載があります。

必須。FieldInstance の一意の名前。動的フォーム対応 Lightning ページの項目の個々のインスタンスを一意に識別できます。この項目は、最大 120 文字に制限されています。

この項目は、API バージョン 53.0 以降で使用できます。

メタデータ API 開発者ガイド:Flow

API バージョン 53.0 以降とありますが、筆者が直面したのは Winter'23 なのでバージョン 56.0 の環境です。

一意な識別子が内部的に自動で付与されていた可能性があるため、昔開発した設定に一切変更を加えていなくても、デプロイに失敗する可能性があります。

スポンサーリンク

デプロイ前に一度リトリーブを行い、差分を確認することをお勧めします。

おわりに

Salesforce では、バージョンアップで突然今までのやり方でデプロイに失敗する場合があります。

リリース時に必要な設定も日々変わる可能性があるので、アンテナを広げておく必要がありますね。

実際は、エラーに出会ったら中々日本語の情報がないので苦労しますよね。。

本記事が少しでもお役に立ちますように。

スポンサーリンク

コメント

タイトルとURLをコピーしました