Loading
Experience Cloud
Implementar su sitio de Experience Cloud con la API de metadatos

Implementar su sitio de Experience Cloud con la API de metadatos

Utilice la API de metadatos para mover su sitio de Experience Cloud de una organización de Salesforce a otra. Configure y pruebe su sitio en su entorno de prueba y, a continuación, recupere los datos del sitio e impleméntelos en su organización de producción.

Ediciones necesarias

Disponible en: Salesforce Classic y Lightning Experience
Disponible en: Enterprise Edition, Performance Edition, Unlimited Edition y Developer Edition
Se aplica a: sitios LWR, Aura y Visualforce

Dependiendo del marco de trabajo del sitio, se combinan los siguientes tipos de metadatos para definir el sitio. Para migrar una sitio con éxito, utilice la llamada de API de metadatos retrieve para recuperar las representaciones de archivos XML de los componentes de su organización.

Red
Representa un sitio de Experience Cloud. Contiene la configuración de administración, como, por ejemplo, los parámetros de sustitución de página, email y suscripción.
CustomSite
Contiene la información de ajustes de página y dominio, incluidas las definiciones de URL indexPage y siteAdmin.
DigitalExperienceBundle y DigitalExperienceConfig o ExperienceBundle o SiteDotCom
El tipo de metadatos que requiere varía dependiendo del tipo de sitio. Representa los diferentes parámetros y componentes, como páginas, conjuntos de marca y temas, que componen un sitio.
  • Para sitios LWR mejorados, presentados en Winter ’23 (versión 56.0 de la API), DigitalExperienceBundle y DigitalExperienceConfig se combinan para proporcionar representaciones basadas en texto de sus elementos y configuraciones de sitio. Puede recuperar metadatos de sitio modificables y crear, actualizar, publicar e implementar sitios de forma programática rápidamente. También puede implementar parcialmente sitios LWR mejorados.
  • Para sitios LWR no mejorados, ExperienceBundle proporciona representaciones basadas en texto de la configuración, las páginas y los componentes del sitio. Puede recuperar metadatos de sitio modificables y crear, actualizar, publicar e implementar sitios de forma programática rápidamente.
  • Para sitios Aura, puede elegir utilizar ExperienceBundle o SiteDotCom, pero recomendamos utilizar ExperienceBundle. Antes de Summer ’19 (versión de API 45.0 y anteriores), los tipos de metadatos Network, CustomSite y SiteDotCom se combinaban para definir un sitio Aura. No obstante, la recuperación del tipo SiteDotCom genera un archivo .site binario, que no es legible para las personas. Consulte ExperienceBundle para sitios de Experience Builder.
  • Para sitios de Visualforce, SiteDotCom representa el sitio.

Para obtener información adicional sobre los tipos de metadatos e instrucciones sobre la migración de datos, consulte la Guía del desarrollador de la API de metadatos y la Referencia de comandos de la CLI de Salesforce.

Detalle de tipos de metadatos requeridos

Los tipos de metadatos que utiliza para implementar un sitio varían dependiendo del tipo de sitio.

Tipos de metadatos requeridos Sitio LWR mejorado Sitio LWR Sitio Aura Sitio de Visualforce
Red Obligatorio Obligatorio Obligatorio Obligatorio
CustomSite Obligatorio Obligatorio Obligatorio Obligatorio
DigitalExperienceBundle Obligatorio      
DigitalExperienceConfig Obligatorio      
ExperienceBundle   Obligatorio

ExperienceBundle (recomendado)

o bien

SiteDotCom

 
SiteDotCom     Obligatorio

Sugerencias y consideraciones

  • Antes de migrar datos a otra organización, active experiencias digitales en la organización de destino e ingrese el mismo nombre de dominio que el que utilizó en su organización sandbox para evitar obtener errores.
  • Para cada sitio de Experience Cloud, el componente de red tiene un nombre y un prefijo de ruta de URL exclusivos. Cuando se recupera el componente de red, el nombre de archivo XML generado se basa en el nombre de la red. Cuando se migra, la API consulta el nombre del archivo y, si existe, actualiza el sitio. Si no existe, la API crea un sitio. Si alguien cambia el nombre del sitio en el entorno sandbox y luego intenta migrar, verá un error. La API está intentando crear un sitio con el prefijo de ruta existente.
  • Examine el archivo XML en busca del componente CustomSite para asegurarse de que se incorporan todas las dependencias. Si falta alguna, debe establecerlas explícitamente en el archivo XML.
  • Además de los componentes requeridos descritos anteriormente, incluya todos los demás componentes requeridos por su sitio. Los componentes pueden incluir elementos como objetos personalizados, campos personalizados, componentes Lightning personalizados y clases de Apex.
  • Para implementar los componentes Red y Perfil utilizando paquetes desbloqueados, cree un paquete desbloqueado separado para cada componente e impleméntelos de forma individual.
  • Cuando implemente un sitio Aura con ExperienceBundle, asegúrese de que el tipo SiteDotCom no está incluido en el archivo de manifiesto.
  • Si cambia el nombre de un sitio en Administración | Configuración, asegúrese de que los sitios de origen y de destino tienen valores coincidentes para los atributos picassoSite y site en el componente Red.
  • Si hay cambios en el perfil de usuario invitado, incluya el perfil como parte de la migración del sitio.
  • Cuando migra perfiles de usuario, los usuarios se agregan al sitio en la organización de producción. Los emails se envían a los miembros de la misma manera que en cualquier sitio nuevo.
  • Durante la implementación, asegúrese de que el nombre del desarrollador NavigationMenu de la organización de destino sea el mismo que el nombre del desarrollador de la organización de origen.
  • Si containerType es CommunityTemplateDefinition, no podrá actualizar un NavigationMenu existente mediante la API de metadatos.
  • Para implementar un sitio Aura con una plantilla personalizada, primero recupere e implemente CommunityTemplateDefinition y los tipos de metadatos relevantes, como CommunityThemeDefinition. A continuación recupere e implemente ExperienceBundle o SiteDotCom y los tipos de metadatos relevantes.
  • La implementación del menú de navegación con elementos de menú adicionales elimina cualquier traducción aplicada a elementos de menú existentes en el entorno de destino.
  • Para incluir menús de navegación cuando traslada su sitio, utilice el tipo de metadatos NavigationMenu.
  • No se puede realizar la implementación a una organización de destino que utilice una versión anterior. Por ejemplo, si su organización de origen utiliza Summer ’19 (versión de API 46.0), no podrá realizar la implementación a una organización de destino que utilice Spring ’19 (versión de API 45.0).
  • NavigationLinkSet se desaprobó en Winter ’20 (versión de API 47.0) y se sustituyó por NavigationMenu.
  • Si su sitio incluye páginas de Site.com Studio, utilice el tipo de metadatos SiteDotCom, porque la implementación del sitio utilizando ExperienceBundle elimina permanentemente las páginas de Site.com Studio.
  • ExperienceBundle no admite la recuperación e implementación en diferentes versiones de API. Si está intentando actualizar metadatos de ExperienceBundle desde una versión de API anterior a una posterior (por ejemplo, desde la versión de API 48.0 a 49.0), realice los siguientes pasos:
    1. Establezca la versión de API en el archivo de manifiesto package.xml como 48.0 e implemente el paquete.
    2. A continuación, establezca la versión de API en package.xml como 49.0.
    3. Para obtener las actualizaciones de ExperienceBundle más recientes, recupere el paquete.
  • Al implementar un sitio, a veces recibe un mensaje de advertencia acerca de valores de Id. no válidos. Por ejemplo: La propiedad topicId del componente 9b8a4e98-e724-4092-DIM3c-0813adf9ddc2 hace referencia a un objeto con el valor de Id. 0TO4R000000EGPEWA4. En ocasiones, cuando se implementan en una organización de destino, los valores de Id. pueden volverse no válidos; por ejemplo, si el Id. al que se hace referencia no existe en la organización de destino. Si encuentra problemas de componentes en su organización de destino, verifique que los valores de Id. son correctos.

    En estas situaciones puede implementar el sitio correctamente a pesar de la advertencia. Sin embargo, recomendamos verificar en la organización de destino que el Id. de objeto al que se hace referencia en el componente aún sea válido. Si el Id. es incorrecto, actualice manualmente el Id. para resolver cualquier problema de componente en la organización de destino. De forma alternativa, si es un componente personalizado que creó, considere sustituir el Id. de objeto por el nombre de la API del objeto en vez de evitar el problema en el futuro.

Plantilla de muestra

La siguiente muestra contiene todos los campos que puede migrar a través de la API de metadatos.

<?xml version="1.0" encoding="UTF-8"?>
<Network xmlns="http://soap.sforce.com/2006/04/metadata">
    <allowInternalUserLogin>true</allowInternalUserLogin>
    <allowMembersToFlag>true</allowMembersToFlag>
    <allowedExtensions>txt,png,jpg,jpeg,pdf,doc,csv</allowedExtensions>
    <caseCommentEmailTemplate>unfiled$public/ContactFollowUpSAMPLE</caseCommentEmailTemplate>
    <changePasswordTemplate>unfiled$public/CommunityChangePasswordEmailTemplate</changePasswordTemplate>
    </communityRoles>
    <disableReputationRecordConversations>true</disableReputationRecordConversations>
    <emailSenderAddress>admin@myorg.com</emailSenderAddress>
    <emailSenderName>MyCommunity</emailSenderName>
    <enableCustomVFErrorPageOverrides>true</enableCustomVFErrorPageOverrides>
    <enableDirectMessages>true</enableDirectMessages>
    <enableGuestChatter>true</enableGuestChatter>
    <enableGuestFileAccess>false</enableGuestFileAccess>
    <enableInvitation>false</enableInvitation>
    <enableKnowledgeable>true</enableKnowledgeable>
    <enableNicknameDisplay>true</enableNicknameDisplay>
    <enablePrivateMessages>false</enablePrivateMessages>
    <enableReputation>true</enableReputation>
    <enableShowAllNetworkSettings>true</enableShowAllNetworkSettings>
    <enableSiteAsContainer>true</enableSiteAsContainer>
    <enableTalkingAboutStats>true</enableTalkingAboutStats>
    <enableTopicAssignmentRules>true</enableTopicAssignmentRules>
    <enableTopicSuggestions>true</enableTopicSuggestions>
    <enableUpDownVote>true</enableUpDownVote>
    <forgotPasswordTemplate>unfiled$public/CommunityForgotPasswordEmailTemplate</forgotPasswordTemplate>
    <gatherCustomerSentimentData>false</gatherCustomerSentimentData>
    <lockoutTemplate>unfiled$public/CommunityLockoutEmailTemplate</lockoutTemplate>
    <maxFileSizeKb>51200</maxFileSizeKb>
    <networkMemberGroups>
        <permissionSet>MyCommunity_Permissions</permissionSet>
        <profile>Admin</profile>
    </networkMemberGroups>
    <networkPageOverrides>
        <changePasswordPageOverrideSetting>VisualForce</changePasswordPageOverrideSetting>
        <forgotPasswordPageOverrideSetting>Designer</forgotPasswordPageOverrideSetting>
        <homePageOverrideSetting>Designer</homePageOverrideSetting>
        <loginPageOverrideSetting>Designer</loginPageOverrideSetting>
        <selfRegProfilePageOverrideSetting>Designer</selfRegProfilePageOverrideSetting>
    </networkPageOverrides>
    <picassoSite>MyCommunity1</picassoSite>
    <selfRegistration>true</selfRegistration>
    <sendWelcomeEmail>true</sendWelcomeEmail>
    <site>MyCommunity</site>
    <status>Live</status>
    <tabs>
        <defaultTab>home</defaultTab>
        <standardTab>Chatter</standardTab>
    </tabs>
    <urlPathPrefix>mycommunity</urlPathPrefix>
    <welcomeTemplate>unfiled$public/CommunityWelcomeEmailTemplate</welcomeTemplate>
</Network>

Archivo de manifiesto package.xml de muestra

Un archivo de manifiesto define los componentes que está intentando recuperar. El siguiente ejemplo muestra un archivo de manifiesto package.xml para recuperar todos los componentes de un sitio de Experience Builder.

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>*</members>
        <name>Network</name>
    </types>
    <types>
        <members>*</members>
        <name>CustomSite</name>
    </types>
    <types>
        <members>*</members>
        <name>ExperienceBundle</name>
    </types>
    <types>
        <members>*</members>
        <name>CustomTab</name>
    </types>
    <types>
        <members>*</members>
        <name>CustomObject</name>
    </types>
    <types>
        <members>*</members>
        <name>ApexClass</name>
    </types>
    <types>
        <members>*</members>
        <name>ApexPage</name>
    </types>
    <types>
        <members>*</members>
        <name>ApexComponent</name>
    </types>
    <types>
        <members>*</members>
        <name>Portal</name>
    </types>
    <types>
        <members>*</members>
        <name>Profile</name>
    </types>
    <types>
        <members>*</members>
        <name>Document</name>
    </types>
    <version>46.0</version>
</Package>
 
Cargando
Salesforce Help | Article