メタデータ API を使用したコミュニティのリリース
メタデータ API を使用して、Salesforce 組織間でコミュニティを移行します。テスト環境でコミュニティの設定とテストを行ってから、コミュニティのデータを取得して本番組織にリリースします。
| 使用可能なインターフェース: Salesforce Classic (使用できない組織もあります) および Lightning Experience |
| 使用可能なエディション: Enterprise Edition、Performance Edition、Unlimited Edition、および Developer Edition |
メタデータ API を使用して、Lightning コミュニティと Salesforce タブ + Visualforce コミュニティを移行できます。
次のメタデータ型を組み合わせてコミュニティを定義します。コミュニティを移行するには、メタデータ API の retrieve コールを使用して、組織のコンポーネントの XML ファイル表現を取得します。
- Network — コミュニティを表します。ページの上書き、メール、メンバーシップの設定などの管理設定が含まれています。
- CustomSite — indexPage、siteAdmin、URL 定義など、ドメインとページの設定情報が含まれています。
- SiteDotCom — コミュニティサイトのレイアウトが含まれています。
これらのメタデータ型についての詳細とデータ移行の手順は、『メタデータ API 開発者ガイド』と『Salesforce CLI コマンドリファレンス』を参照してください。
ヒントと検討事項
- データを別の組織に移行する前に、エラーの発生を避けるため、移行先の組織でコミュニティを有効化し、Sandbox 組織で使用したものと同じドメイン名を入力します。
- 各コミュニティのネットワークコンポーネントには、一意の名前と URL パスプレフィックスがあります。ネットワークコンポーネントを取得すると生成される XML ファイル名は、ネットワークの名前に基づきます。移行時に API でファイル名が参照され、ファイル名が存在している場合はコミュニティが更新されます。存在していない場合、API でコミュニティが作成されます。誰かが Sandbox でコミュニティ名を変更して移行しようとすると、API によって既存のパスプレフィックスでコミュニティの作成が試行されるため、エラーが表示されます。
- すべての連動関係が取り込まれていることを CustomSite の XML ファイルで確認します。いずれかがない場合、XML ファイルで明示的に指定します。
- Network、CustomSite、および SiteDotCom コンポーネントに加えて、カスタムオブジェクト、カスタム項目、カスタム Lightning コンポーネント、Apex クラスなど、コミュニティに必要な他のコンポーネントをすべて含めます。
- でコミュニティの名前を変更する場合は、リリース元コミュニティとリリース先コミュニティで、Network コンポーネントの picassoSite 属性と site 属性の値が一致することを確認します。
- ゲストユーザプロファイルに変更があった場合は、コミュニティ移行の一部としてプロファイルを含めます。
- ユーザプロファイルを移行すると、ユーザが本番組織のコミュニティに追加されます。その後、新しいコミュニティの場合と同じようにメールがメンバーに送信されます。
- 以前のリリースバージョンを使用している対象組織にリリースすることはできません。たとえば、ソース組織が Summer '19 (API バージョン 46.0) の場合、Spring '19 (API バージョン 45.0) の対象組織にはリリースできません。
- リリース中、対象組織の NavigationMenu API 参照名がソース組織の API 参照名と同じであることを確認します。
- containerType が CommunityTemplateDefinition の場合、メタデータ API を介して既存の NavigationMenu を更新することはできません。
- メニュー項目を追加したナビメニューをリリースすると、対象環境の既存のメニュー項目に適用されているすべての翻訳が削除されます。
サンプルテンプレート
次のサンプルには、メタデータ API で移行できるすべての項目が含まれています。
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 <navigationLinkSet>
32 <navigationMenuItem>
33 <label>Topics</label>
34 <position>0</position>
35 <publiclyAvailable>true</publiclyAvailable>
36 <target>ShowMoreTopics</target>
37 <type>NavigationalTopic</type>
38 </navigationMenuItem>
39 </navigationLinkSet>
40 <networkMemberGroups>
41 <permissionSet>MyCommunity_Permissions</permissionSet>
42 <profile>Admin</profile>
43 </networkMemberGroups>
44 <networkPageOverrides>
45 <changePasswordPageOverrideSetting>VisualForce</changePasswordPageOverrideSetting>
46 <forgotPasswordPageOverrideSetting>Designer</forgotPasswordPageOverrideSetting>
47 <homePageOverrideSetting>Designer</homePageOverrideSetting>
48 <loginPageOverrideSetting>Designer</loginPageOverrideSetting>
49 <selfRegProfilePageOverrideSetting>Designer</selfRegProfilePageOverrideSetting>
50 </networkPageOverrides>
51 <picassoSite>MyCommunity1</picassoSite>
52 <selfRegistration>true</selfRegistration>
53 <sendWelcomeEmail>true</sendWelcomeEmail>
54 <site>MyCommunity</site>
55 <status>Live</status>
56 <tabs>
57 <defaultTab>home</defaultTab>
58 <standardTab>Chatter</standardTab>
59 </tabs>
60 <urlPathPrefix>mycommunity</urlPathPrefix>
61 <welcomeTemplate>unfiled$public/CommunityWelcomeEmailTemplate</welcomeTemplate>
62</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>SiteDotCom</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>43.0</version>
48</Package>