メタデータ API を使用した Experience Cloud サイトのリリース
| 使用可能なインターフェース: Salesforce Classic (使用できない組織もあります) および Lightning Experience の両方 |
| 使用可能なエディション: Enterprise Edition、Performance Edition、Unlimited Edition、および Developer Edition |
サイトのフレームワークに応じて、次のメタデータ型を組み合わせてサイトを定義します。サイトを移行するには、メタデータ API の retrieve コールを使用して、組織のコンポーネントの XML ファイル表現を取得します。
- Network
- Experience Cloud サイトを表します。ページの上書き、メール、メンバーシップの設定などの管理設定が含まれています。
- CustomSite
- indexPage、siteAdmin、URL 定義など、ドメインとページの設定情報が含まれています。
- DigitalExperienceBundle と DigitalExperienceConfig 、または ExperienceBundle 、あるいは SiteDotCom
- 必要なメタデータ型は、サイトの種別によって異なります。メタデータ型は、サイトを構成するさまざまな設定や、ページ、ブランドセット、テーマなどのコンポーネントを表します。
23 年冬に導入され機能強化された LWR サイト (API バージョン 56.0) では、DigitalExperienceBundle と DigitalExperienceConfig を組み合わせて、サイトの要素や設定がテキストベースの表現で提供されますが、よりコンテンツを重視した構造に刷新されています。編集可能なサイトメタデータを取得し、サイトをプログラムですばやく作成、更新、公開、リリースできます。また、機能強化された LWR サイトを部分的にリリースすることも可能です。
機能強化されていない LWR サイトの場合、ExperienceBundle は、サイトの設定、ページ、およびコンポーネントのテキストベースの表現を提供します。編集可能なサイトメタデータを取得し、サイトをプログラムですばやく作成、更新、公開、および部分的にリリースできます。
Aura サイトの場合、ExperienceBundle と SiteDotCom のいずれかを選択して使用できますが、ExperienceBundle の使用をお勧めします。Summer ’19 以前 (API バージョン 45.0 以前) は、Network、CustomSite、SiteDotCom メタデータ型を組み合わせて Aura サイトを定義していました。ただし、SiteDotCom 型を取得すると、人間が判読できないバイナリの .site ファイルが生成されました。「ExperienceBundle for Experience Builder Sites (エクスペリエンスビルダーサイトの ExperienceBundle)」を参照してください。
Visualforce サイトの場合、Network でサイトを表します。
これらのメタデータ型についての詳細とデータ移行の手順は、『メタデータ API 開発者ガイド』と『Salesforce CLI コマンドリファレンス』を参照してください。
必要なメタデータ型の一覧
サイトのリリースに使用するメタデータ型は、サイトの種別によって異なります。
| 必要なメタデータ型 | 機能強化された LWR サイト | LWR サイト | Aura サイト | Visualforce サイト |
|---|---|---|---|---|
| Network | ![]() |
![]() |
![]() |
![]() |
| CustomSite | ![]() |
![]() |
![]() |
![]() |
| DigitalExperienceBundle | ![]() |
|||
| DigitalExperienceConfig | ![]() |
|||
| ExperienceBundle | ![]() |
ExperienceBundle または SiteDotCom |
||
| SiteDotCom | ![]() |
ヒントと検討事項
- データを別の組織に移行する前に、エラーの発生を避けるため、移行先の組織でデジタルエクスペリエンスを有効化し、Sandbox 組織で使用したものと同じドメイン名を入力します。
- 各 Experience Cloud サイトのネットワークコンポーネントには、一意の名前と URL パスプレフィックスがあります。ネットワークコンポーネントを取得すると生成される XML ファイル名は、ネットワークの名前に基づきます。移行時に API でファイル名が参照され、ファイル名が存在している場合はサイトが更新されます。存在していない場合、API でサイトが作成されます。誰かが Sandbox でサイト名を変更して移行しようとすると、エラーが表示されます。API は、既存のパスプレフィックスでサイトの作成を試みます。
- すべての連動関係が取り込まれていることを CustomSite の XML ファイルで確認します。いずれかがない場合、XML ファイルで明示的に指定します。
- 前述の必須コンポーネントに加えて、使用するサイトに必要な他のコンポーネントもすべて組み込みます。コンポーネントには、カスタムオブジェクト、カスタム項目、カスタム Lightning コンポーネント、Apex クラスなどの項目を含めることができます。
- ロック解除済みパッケージを使用して Network コンポーネントと Profile コンポーネントをリリースするには、コンポーネントごとに個別のロック解除済みパッケージを作成して個別にリリースします。
- ExperienceBundle を使用して Aura サイトをリリースする場合、SiteDotCom 型がマニフェストファイルに含まれていないことを確認します。
- でサイトの名前を変更する場合は、リリース元サイトとリリース先サイトで、Network コンポーネントの picassoSite 属性と site 属性の値が一致することを確認します。
- ゲストユーザプロファイルに変更があった場合は、サイト移行の一部としてプロファイルを含めます。
- ユーザプロファイルを移行すると、ユーザが本番組織のサイトに追加されます。その後、新しいサイトの場合と同じようにメールがメンバーに送信されます。
- リリース中、リリース先組織の NavigationMenu API 参照名がリリース元組織の API 参照名と同じであることを確認します。
- containerType が CommunityTemplateDefinition の場合、メタデータ API を介して既存の NavigationMenu を更新することはできません。
- メニュー項目を追加したナビメニューをリリースすると、リリース先環境の既存のメニュー項目に適用されているすべての翻訳が削除されます。
- サイトを移動する際にナビゲーションメニューを含めるには、NavigationMenu メタデータ型を使用します。
- 以前のリリースバージョンを使用しているリリース先組織にリリースすることはできません。たとえば、リリース元組織が Summer '19 (API バージョン 46.0) の場合、Spring '19 (API バージョン 45.0) のリリース先組織にはリリースできません。
- NavigationLinkSet は、Winter '20 (API バージョン 47.0) で廃止され、NavigationMenu に置き換えられました。
- ExperienceBundle では、異なる API バージョンでの取得およびリリースはサポートされません。ExperienceBundle メタデータを古い API バージョンから新しいバージョン (API バージョン 48.0 から 49.0 など) にアップグレードする場合は、次の手順を実行します。
- package.xml マニフェストファイルの API バージョンを 48.0 に設定して、パッケージをリリースします。
- 次に、package.xml の API バージョンを 49.0 に設定します。
- 最新の ExperienceBundle の更新を取得するには、パッケージを取得します。
サンプルテンプレート
1<?xml version="1.0" encoding="UTF-8"?>
2<Network xmlns="http://soap.sforce.com/2006/04/metadata">
3 <allowInternalUserLogin>true</allowInternalUserLogin>
4 <allowMembersToFlag>true</allowMembersToFlag>
5 <allowedExtensions>txt,png,jpg,jpeg,pdf,doc,csv</allowedExtensions>
6 <caseCommentEmailTemplate>unfiled$public/ContactFollowUpSAMPLE</caseCommentEmailTemplate>
7 <changePasswordTemplate>unfiled$public/CommunityChangePasswordEmailTemplate</changePasswordTemplate>
8 </communityRoles>
9 <disableReputationRecordConversations>true</disableReputationRecordConversations>
10 <emailSenderAddress>admin@myorg.com</emailSenderAddress>
11 <emailSenderName>MyCommunity</emailSenderName>
12 <enableCustomVFErrorPageOverrides>true</enableCustomVFErrorPageOverrides>
13 <enableDirectMessages>true</enableDirectMessages>
14 <enableGuestChatter>true</enableGuestChatter>
15 <enableGuestFileAccess>false</enableGuestFileAccess>
16 <enableInvitation>false</enableInvitation>
17 <enableKnowledgeable>true</enableKnowledgeable>
18 <enableNicknameDisplay>true</enableNicknameDisplay>
19 <enablePrivateMessages>false</enablePrivateMessages>
20 <enableReputation>true</enableReputation>
21 <enableShowAllNetworkSettings>true</enableShowAllNetworkSettings>
22 <enableSiteAsContainer>true</enableSiteAsContainer>
23 <enableTalkingAboutStats>true</enableTalkingAboutStats>
24 <enableTopicAssignmentRules>true</enableTopicAssignmentRules>
25 <enableTopicSuggestions>true</enableTopicSuggestions>
26 <enableUpDownVote>true</enableUpDownVote>
27 <forgotPasswordTemplate>unfiled$public/CommunityForgotPasswordEmailTemplate</forgotPasswordTemplate>
28 <gatherCustomerSentimentData>false</gatherCustomerSentimentData>
29 <lockoutTemplate>unfiled$public/CommunityLockoutEmailTemplate</lockoutTemplate>
30 <maxFileSizeKb>51200</maxFileSizeKb>
31 <networkMemberGroups>
32 <permissionSet>MyCommunity_Permissions</permissionSet>
33 <profile>Admin</profile>
34 </networkMemberGroups>
35 <networkPageOverrides>
36 <changePasswordPageOverrideSetting>VisualForce</changePasswordPageOverrideSetting>
37 <forgotPasswordPageOverrideSetting>Designer</forgotPasswordPageOverrideSetting>
38 <homePageOverrideSetting>Designer</homePageOverrideSetting>
39 <loginPageOverrideSetting>Designer</loginPageOverrideSetting>
40 <selfRegProfilePageOverrideSetting>Designer</selfRegProfilePageOverrideSetting>
41 </networkPageOverrides>
42 <picassoSite>MyCommunity1</picassoSite>
43 <selfRegistration>true</selfRegistration>
44 <sendWelcomeEmail>true</sendWelcomeEmail>
45 <site>MyCommunity</site>
46 <status>Live</status>
47 <tabs>
48 <defaultTab>home</defaultTab>
49 <standardTab>Chatter</standardTab>
50 </tabs>
51 <urlPathPrefix>mycommunity</urlPathPrefix>
52 <welcomeTemplate>unfiled$public/CommunityWelcomeEmailTemplate</welcomeTemplate>
53</Network>package.xml マニフェストファイルのサンプル
マニフェストファイルでは、取得するコンポーネントを定義します。次のサンプルに、エクスペリエンスビルダーサイトのすべてのコンポーネントを取得するための package.xml マニフェストファイルを示します。
1<?xml version="1.0" encoding="UTF-8"?>
2<Package xmlns="http://soap.sforce.com/2006/04/metadata">
3 <types>
4 <members>*</members>
5 <name>Network</name>
6 </types>
7 <types>
8 <members>*</members>
9 <name>CustomSite</name>
10 </types>
11 <types>
12 <members>*</members>
13 <name>ExperienceBundle</name>
14 </types>
15 <types>
16 <members>*</members>
17 <name>CustomTab</name>
18 </types>
19 <types>
20 <members>*</members>
21 <name>CustomObject</name>
22 </types>
23 <types>
24 <members>*</members>
25 <name>ApexClass</name>
26 </types>
27 <types>
28 <members>*</members>
29 <name>ApexPage</name>
30 </types>
31 <types>
32 <members>*</members>
33 <name>ApexComponent</name>
34 </types>
35 <types>
36 <members>*</members>
37 <name>Portal</name>
38 </types>
39 <types>
40 <members>*</members>
41 <name>Profile</name>
42 </types>
43 <types>
44 <members>*</members>
45 <name>Document</name>
46 </types>
47 <version>46.0</version>
48</Package>