Guía de ISVforce
Transcripción
Guía de ISVforce
Version 29.0: Winter ’14 Guía de ISVforce © Copyright 2000–2013 salesforce.com, inc. Todos los derechos reservados. Salesforce.com es una marca registrada de salesforce.com, inc., como el resto de nombres y marcas. El resto de las marcas pueden ser marcas registradas de sus respectivos propietarios. Contenido Contenido Capítulo 1: Introducción......................................................................................................................1 Funciones en el ciclo de vida de la aplicación............................................................................................................................2 Capítulo 2: Inicio rápido de ISVforce....................................................................................................3 Tutorial n.º 1: Inscripción.........................................................................................................................................................4 Paso 1: Inscribirse en el programa de socios..................................................................................................................4 Paso 2: Generar entornos de desarrollo y prueba...........................................................................................................5 Paso 3: Obtener una organización de negocio...............................................................................................................5 Paso 4: Editar la lista del publicador..............................................................................................................................6 Resumen de inscripción.................................................................................................................................................7 Tutorial n.º 2: Desarrollo de su aplicación................................................................................................................................7 Paso 1: Crear una aplicación..........................................................................................................................................7 Paso 2: Empaquetar la aplicación..................................................................................................................................9 Paso 3: Asignar un espacio de nombres.........................................................................................................................9 Paso 4: Cargar una versión beta.....................................................................................................................................9 Paso 5: Instalar y probar la versión beta.......................................................................................................................10 Resumen de la tarea de desarrollo................................................................................................................................11 Tutorial n.º 3: Publicación y licencias......................................................................................................................................11 Paso 1: Cargar en AppExchange.................................................................................................................................11 Paso 2: Crear la lista de aplicaciones............................................................................................................................12 Paso 3: Completar la lista............................................................................................................................................12 Paso 4: Instalar la LMA..............................................................................................................................................13 Paso 5: Licencias y gestión de aplicaciones..................................................................................................................14 Resumen de publicación y licencias.............................................................................................................................14 Tutorial n.º 4: Actualización de la aplicación..........................................................................................................................14 Paso 1: Crear una organización de parche...................................................................................................................15 Paso 2: Desarrollar un parche......................................................................................................................................16 Paso 3: Cargar el parche..............................................................................................................................................16 Paso 4: Instalar o enviar un parche..............................................................................................................................17 Resumen de la actualización de la aplicación...............................................................................................................17 Capítulo 3: Arquitectura y desarrollo de aplicaciones............................................................................19 Concepto de paquetes gestionados y no gestionados...............................................................................................................20 Planificación de la edición de paquetes gestionados....................................................................................................20 Componentes disponibles........................................................................................................................................................21 Modificación de componentes y atributos después de la instalación............................................................................25 Los componentes se agregan automáticamente a paquetes..........................................................................................31 Comportamiento especial de los componentes en paquetes....................................................................................................33 Componentes protegidos.............................................................................................................................................41 Consideraciones arquitectónicas para Group Edition y Professional Edition.........................................................................42 Funciones disponibles en Group Edition y Professional Edition................................................................................43 Límites para Group Edition y Professional Edition....................................................................................................43 Control de acceso en Group Edition y Professional Edition.......................................................................................44 i Contenido Uso de Apex en Group Edition y Professional Edition...............................................................................................44 Acceso a API en Group Edition y Professional Edition..............................................................................................44 Acceso a la API de REST en Group Edition y Professional Edition..............................................................45 Diseño de la aplicación para que sea compatible con varias ediciones.........................................................................46 Compatibilidad con varias ediciones mediante un paquete de ampliación.......................................................46 Compatibilidad con varias ediciones mediante Apex dinámico.......................................................................47 Escenarios de diseño de ejemplo para Group Edition y Professional Edition.............................................................48 Concepto de dependencias......................................................................................................................................................49 Creación de aplicaciones empaquetadas con Chatter .............................................................................................................50 Aspecto de Salesforce coincidente...........................................................................................................................................51 Desarrollo de la documentación de las aplicaciones.................................................................................................................51 Creación de configuración de perfil personalizado..................................................................................................................52 Acerca de los conjuntos de permisos y la configuración de perfil............................................................................................52 Descripción general de las aplicaciones conectadas.................................................................................................................55 Creación de una aplicación conectada.........................................................................................................................55 Modificación, empaquetado o eliminación de una aplicación conectada.....................................................................58 Instalación de una aplicación conectada.......................................................................................................................59 Visualización de detalles de la aplicación conectada ...................................................................................................59 Gestión de una aplicación conectada...........................................................................................................................60 Modificación de una aplicación conectada...................................................................................................................60 Monitoreo del uso de una aplicación conectada...........................................................................................................62 Desinstalación de una aplicación conectada.................................................................................................................63 Acerca del WSDL de socio.....................................................................................................................................................63 Trabajo con servicios externos.................................................................................................................................................63 Aprovisionamiento de servicios externos.....................................................................................................................64 Protección de la propiedad intelectual.....................................................................................................................................64 Núcleo de entorno...................................................................................................................................................................65 Configuración del Núcleo de entorno..........................................................................................................................66 Configuración de Mi dominio para el Núcleo de entorno...........................................................................................68 Mejores prácticas del Núcleo de entorno.....................................................................................................................69 Conexión de una organización al Núcleo de entorno..................................................................................................69 Consulta de los detalles de un miembro del Núcleo de entorno..................................................................................70 Modificación de los detalles de un miembro del Núcleo de entorno...........................................................................72 Creación de una organización nueva desde el Núcleo de entorno................................................................................73 Activación del inicio de sesión único en el Núcleo de entorno....................................................................................73 Desactivación del inicio de sesión único en el Núcleo de entorno...............................................................................74 Asignación de usuarios para inicio de sesión único en el Núcleo de entorno...............................................................74 Capítulo 4: Empaquetado y pruebas de la aplicación.............................................................................76 Registro de un prefijo de espacio de nombres..........................................................................................................................77 ¿Qué son las versiones beta de los paquetes gestionados?........................................................................................................77 Creación y carga de un paquete en versión beta.......................................................................................................................78 Acerca de los entornos de desarrollo y prueba del socio...........................................................................................................79 Cómo inscribirse en entornos de prueba..................................................................................................................................79 Instalación de un paquete........................................................................................................................................................79 ii Contenido Disponibilidad de componentes tras la implementación..............................................................................................81 Configuración de paquetes instalados..........................................................................................................................81 Solución de errores en la instalación............................................................................................................................83 Desinstalación de un paquete..................................................................................................................................................84 Instalación de paquetes gestionados mediante la API.............................................................................................................85 Creación y carga de un paquete gestionado.............................................................................................................................86 Acerca de las versiones de paquetes.........................................................................................................................................87 Ejecución de Apex en la actualización/instalación del paquete................................................................................................88 Ejecución de Apex en la desinstalación del paquete................................................................................................................91 Capítulo 5: Superación de la revisión de seguridad...............................................................................94 Acerca de la revisión de seguridad...........................................................................................................................................95 Pasos en la revisión de seguridad.............................................................................................................................................95 El cuestionario de la revisión de seguridad..............................................................................................................................97 Creación de una organización de publicación de AppExchange..............................................................................................98 Cambio de la organización de publicación de AppExchange..................................................................................................99 Actualización de la versión del paquete en la lista de AppExchange.....................................................................................100 Envío de una aplicación móvil al proceso de revisión de seguridad.......................................................................................100 Envío de un paquete de extensión para someterlo a la revisión de seguridad.........................................................................101 Recursos para la revisión de seguridad...................................................................................................................................101 Preguntas más frecuentes sobre la revisión de seguridad.......................................................................................................102 ¿Cuánto tarda el proceso de la revisión de seguridad? ¿Cada cuánto tiempo es obligatorio realizarla?......................103 ¿Hay alguna tasa?.......................................................................................................................................................103 ¿Por qué tengo que hacer pruebas en mi aplicación antes de la revisión si el equipo de seguridad va a hacerlas de todos modos?.......................................................................................................................................................103 ¿Puedo enviar mi aplicación para someterla a la revisión de seguridad antes de que esté terminada con el fin de tener este proceso hecho pronto?.........................................................................................................................104 ¿Por qué el equipo de revisión tiene que hacer pruebas en la parte X o Y de mi oferta?............................................105 ¿Debo solucionar todos los problemas que el equipo de revisión de seguridad detecte?.............................................105 ¿Por qué el equipo de revisión no puede enviarme todas las instancias de todo lo que encuentre en mi revisión?.....105 Si actualizo mi aplicación, ¿debe pagar de nuevo la tasa de la revisión de seguridad para vuelva a ser revisada?........106 Cuando creo un paquete gestionado nuevo (en realidad, una actualización de mi primera aplicación), ¿tendré que pagar de nuevo la tasa para que vuelva a ser revisada la seguridad de la aplicación?.............................................106 ¿Por qué debo realizar revisiones de seguridad periódicas?........................................................................................106 Entiendo que las soluciones revisadas pueden funcionar con las organizaciones con PE y GE. ¿Cómo funciona esto?.....................................................................................................................................................................106 Capítulo 6: Publicación de la aplicación.............................................................................................107 ¿Qué es AppExchange?.........................................................................................................................................................108 Vender en AppExchange...........................................................................................................................................108 ¿Cómo funciona AppExchange?................................................................................................................................108 ¿Quién puede utilizar AppExchange?........................................................................................................................109 Gestión de las organizaciones de Salesforce..........................................................................................................................109 Publicación de la aplicación o el servicio...............................................................................................................................110 Publicación de aplicaciones en AppExchange...........................................................................................................110 iii Contenido Creación o modificación del perfil de proveedor.......................................................................................................110 Creación o modificación de listas..........................................................................................................................................111 Marca de la aplicación...........................................................................................................................................................119 Envío de la lista para su aprobación.......................................................................................................................................119 Registro del paquete y elección de la configuración de la licencia..........................................................................................121 Notificaciones por email........................................................................................................................................................121 Uso de Checkout de AppExchange.......................................................................................................................................122 Preguntas más frecuentes sobre Checkout de AppExchange.................................................................................................123 Trabajo con prospectos de AppExchange..............................................................................................................................125 Reportes de análisis para publicadores...................................................................................................................................128 Reporte Instalaciones (Obtener ahora) (Installs [Get It Now]).................................................................................129 Reporte Prospectos....................................................................................................................................................129 Reporte Recursos y promociones...............................................................................................................................130 Reporte Pruebas, demostraciones y capturas de pantalla...........................................................................................130 Reporte Más información, videos y capturas de pantallas..........................................................................................131 Preguntas más frecuentes sobre AppExchange......................................................................................................................131 Capítulo 7: Gestión de licencias y asistencia administrativa.................................................................137 Descripción general de la Aplicación de gestión de licencias (LMA)....................................................................................138 Concepto de gestión de licencias...............................................................................................................................138 Diagrama de relaciones de la entidad.........................................................................................................................138 Terminología de LMA..............................................................................................................................................139 Instalación de la LMA..........................................................................................................................................................140 Configuración de la LMA.....................................................................................................................................................141 Asociación de paquetes con su LMO....................................................................................................................................142 Valores predeterminados de licencias.........................................................................................................................143 Uso de la LMA.....................................................................................................................................................................143 Acerca de los prospectos............................................................................................................................................144 Acerca de los paquetes...............................................................................................................................................144 Detalles del paquete.......................................................................................................................................144 Modificación de los propietarios de paquetes................................................................................................145 Modificación del gestor de prospectos para un paquete.................................................................................146 Acerca de las versiones de paquetes...........................................................................................................................146 Detalles de la versión del paquete..................................................................................................................147 Acerca de las licencias................................................................................................................................................147 Detalles de licencias.......................................................................................................................................147 Modificación de propietarios de licencias......................................................................................................149 Modificación de licencias...............................................................................................................................149 Integración con ventas y marketing.......................................................................................................................................151 Mejores prácticas...................................................................................................................................................................151 Preguntas más frecuentes sobre la Aplicación de gestión de licencias....................................................................................152 Solución de problemas...........................................................................................................................................................153 Capítulo 8: Prueba gratuita de la aplicación........................................................................................155 ¿Por qué utilizar Trialforce?...................................................................................................................................................156 iv Contenido Descripción general de Trialforce..........................................................................................................................................156 Configuración de Trialforce..................................................................................................................................................157 Vinculación de un paquete a su organización de publicación de AppExchange........................................................158 Vinculación de un paquete con la organización de gestión de licencias.....................................................................159 Solicitud de una organización de gestión de Trialforce..............................................................................................159 Configuración de una marca personalizada para Trialforce.......................................................................................160 Creación de emails con imagen de marca......................................................................................................161 Creación de una página de inicio de sesión con marca...................................................................................161 Creación de una organización de origen de Trialforce...............................................................................................162 Vinculación de una organización de origen de Trialforce con la APO......................................................................163 Creación de una plantilla de Trialforce......................................................................................................................163 Obtención de una plantilla de Trialforce revisada......................................................................................................164 Pruebas gratuitas en AppExchange.......................................................................................................................................164 Proporcionar pruebas gratuitas en AppExchange mediante Trialforce......................................................................165 Configuración de una unidad de prueba en AppExchange........................................................................................165 Prueba gratuita en AppExchange disponible cuando se instala la aplicación.............................................................166 Pruebas gratuitas en el sitio Web...........................................................................................................................................166 Solicitud de un formulario de inscripción para Trialforce..........................................................................................166 Vinculación de una plantilla de Trialforce con el formulario de inscripción..............................................................167 Personalización del formulario de registro de HTML...............................................................................................168 Aprovisionamiento de organizaciones de prueba nuevas...........................................................................................168 Modificación de la prueba para una actualización.................................................................................................................169 Mejores prácticas de Trialforce..............................................................................................................................................169 Creación de inscripciones usando la API..............................................................................................................................170 SignupRequest...........................................................................................................................................................171 Inicio de solicitud de inscripción...............................................................................................................................177 Creación de una solicitud de inscripción....................................................................................................................177 Visualización de los detalles de solicitud de inscripción.............................................................................................177 Agregar campos personalizados a las solicitudes de inscripción.................................................................................178 Ejecución de reportes en solicitudes de inscripción...................................................................................................179 Uso de desencadenadores con solicitudes de inscripción...........................................................................................179 Creación de inscripciones de proxy para acceso de OAuth y a API...........................................................................180 Preguntas más frecuentes sobre Trialforce.............................................................................................................................182 Capítulo 9: Asistencia a sus suscriptores.............................................................................................183 Ficha Soporte........................................................................................................................................................................184 Consola de compatibilidad del suscriptor..............................................................................................................................184 Visualización de detalles del suscriptor......................................................................................................................185 Solicitud de acceso de inicio de sesión.......................................................................................................................185 Iniciar sesión en Organizaciones del suscriptor..........................................................................................................186 Mejores prácticas...........................................................................................................................................186 Solución de problemas en Organizaciones del suscriptor...........................................................................................186 Capítulo 10: Actualización de la aplicación........................................................................................187 Creación y carga de parches...................................................................................................................................................189 v Contenido Trabajo con versiones de parche............................................................................................................................................190 Versiones del código Apex.....................................................................................................................................................191 Efectos de la desaprobación de Apex para los suscriptores........................................................................................192 Capítulo 11: Envío de una actualización............................................................................................193 Acerca de las actualizaciones mediante envío........................................................................................................................194 Mejores prácticas en las actualizaciones mediante envío........................................................................................................195 Asignación de acceso a los componentes y campos nuevos....................................................................................................196 Secuencia de comandos posterior a la instalación de ejemplo para una actualización mediante envío...................................196 Limitaciones conocidas en las actualizaciones mediante envío..............................................................................................198 Programación de actualizaciones mediante envío..................................................................................................................198 Visualización de detalles de actualización mediante envío.....................................................................................................200 Visualización del historial de actualizaciones de una organización........................................................................................201 Apéndices........................................................................................................................................202 Apéndice A: Desarrollo y distribución de paquetes no gestionados.............................................202 Apéndice B: Comparación de licencias de usuario de ISVforce...................................................206 Apéndice C: Comparación de licencias de usuario de OEM.......................................................209 Glosario...........................................................................................................................................213 Índice..............................................................................................................................................216 vi Capítulo 1 Introducción En este capítulo... • Funciones en el ciclo de vida de la aplicación La guía de ISVforce está destinada a los proveedores de software independientes (ISV) que quieren compilar y vender aplicaciones compiladas en la plataforma Force.com. Se organiza en los capítulos siguientes: • • • • • • • • • Inicio rápido: punto de partida para obtener y configurar todos los entornos que va a necesitar para compilar y vender aplicaciones. Arquitectura y desarrollo de aplicaciones: ante de empezar a desarrollar, es importante saber que todas las piezas encajan. En este capítulo se explican las decisiones de arquitectura que hay que tomar antes del desarrollo. Empaquetado y pruebas de la aplicación: en este capítulo también se explican aspectos específicos del desarrollo y la realización de pruebas de aplicaciones incluidas en paquetes. Superación de la revisión de seguridad: más información sobre las mejores prácticas de seguridad y la planificación para la revisión de seguridad. Publicación de la aplicación: incorporación de la aplicación en el mercado de AppExchange. Gestión de licencias y asistencia administrativa: uso de la aplicación de gestión de licencias para gestionar los clientes y las licencias de las aplicaciones. Trialforce: creación de una prueba gratuita para ayudarle a vender la aplicación a clientes que no sean de Salesforce. Asistencia a sus suscriptores: prestación de asistencia técnica a los clientes para instalar y utilizar su aplicación. Actualización: cuando es el momento de actualizar su aplicación empaquetada, puede enviar parches menores o crear versiones principales. 1 Introducción Funciones en el ciclo de vida de la aplicación Funciones en el ciclo de vida de la aplicación En esta guía se explica el ciclo de vida completo de una aplicación de paquete por lo que algunos de los temas podrían no ser relevantes para sus intereses. En la lista siguiente se sugieren temas según la función para la que sean relevantes. Arquitecto de aplicaciones El arquitecto de aplicaciones determina el ámbito de la aplicación y las estructuras internas que la sustentan. Necesita conocer detalles sobre la plataforma Force.com subyacente que determinen no solo el uso de la aplicación sino también las ediciones con las que es compatible y el modo de instalación, configuración y actualización. El arquitecto debe conocer bien esta guía completo pero en especial los capítulos siguientes: • Arquitectura y desarrollo de aplicaciones en la página 19 • Superación de la revisión de seguridad en la página 94 Desarrollador que crea, empaqueta y carga aplicaciones El desarrollador, o con frecuencia el equipo de desarrolladores, se encarga de crear la aplicación, empaquetarla y cargarla en AppExchange. Además, actualiza la aplicación con soluciones a los problemas detectados y con funciones nuevas. El desarrollador debe consultar los capítulos siguientes: • Arquitectura y desarrollo de aplicaciones en la página 19 • Empaquetado y pruebas de la aplicación en la página 76 • Desarrollo de la documentación de las aplicaciones en la página 51 • Actualización de la aplicación en la página 187 Publicador que distribuye y vende la aplicación y presta servicio de asistencia El publicador de una aplicación es aquella persona o compañía que tiene un perfil y una o varias listas para la aplicación en AppExchange. Las listas de los publicadores contienen vínculos a las aplicaciones que han cargado en AppExchange o a un sitio Web de terceros. Los publicadores también establecen las configuraciones de licencias predeterminadas. El publicador debe consultar los capítulos siguientes: • Publicación de la aplicación en la página 107 • Prueba gratuita de la aplicación en la página 155 • Asistencia a sus suscriptores en la página 183 Administrador que instala la aplicación El administrador se encarga de descargar la aplicación desde AppExchange y de instalarla en su organización. También pueden personalizar la aplicación para adaptarla mejor a sus necesidades de negocio. En el tema siguiente puede conocer cuál es la interacción de los administradores con las aplicaciones: • Instalación de un paquete en la página 79 2 Capítulo 2 Inicio rápido de ISVforce En este capítulo... • • • • Tutorial n.º 1: Inscripción Tutorial n.º 2: Desarrollo de su aplicación Tutorial n.º 3: Publicación y licencias Tutorial n.º 4: Actualización de la aplicación La finalidad de este inicio rápido es introducirle en el ciclo de vida de la aplicación lo más rápido posible. Cuando lo termine, tendrá todo lo que necesita para desarrollar y publicar una aplicación empaquetada. Nota: Para poder efectuar todos los pasos de este inicio rápido, deberá ser un socio de ISVforce/OEM, ya que algunas de las funciones solo están disponibles para los socios aptos. ¿Cómo se organiza el inicio rápido? El inicio rápido se desglosa en cuatro tutoriales que deben completarse en orden. Como algunos de los pasos requieren una respuesta de email automática, el tiempo necesario para completarlos puede variar de uno a otro. No obstante, puede pararse en cualquier paso y retomar posteriormente donde lo haya dejado. • • • • En el tutorial n.º 1 se explica el proceso de inscripción en el programa de socios de Salesforce ISV y la obtención de todas las organizaciones (entornos) que va a necesitar. En el tutorial n.º 2 se explica el proceso de creación de una aplicación Hello World sencilla. En el tutorial n.º 3 se describe el proceso de publicación y gestión de la aplicación. En el tutorial n.º 4 aprenderá a actualizar su aplicación para ediciones principales y menores. Quiero más.... Al final de cada paso, existe una sección opcional denominada Quiero más. Si quiere hacer las cosas con rapidez, vaya al siguiente paso. Sin embargo, si le gusta ir con calma y profundizar más, aquí encontrará mucha información de gran utilidad. • • • Para consultar una lista de términos útiles, vea el glosario en la página 213. Para obtener más información acerca de Force.com y obtener acceso a muchos más recursos, visite Developer Force en http://developer.force.com. Para leer una introducción suave al desarrollo en Force.com, consulte el libro de trabajo de Force.com en la Web http://developer.force.com/workbook. 3 Inicio rápido de ISVforce Tutorial n.º 1: Inscripción Tutorial n.º 1: Inscripción En este tutorial va a poder recopilar todas las partes que necesitará para desarrollar sus aplicaciones, venderlas y prestar asistencia. Todo comienza con la inscripción en el programa de socios de AppExchange. Gracias a esta tendrá acceso al portal de socios de donde puede obtener las organizaciones de desarrollo y prueba (entornos) y donde puede crear casos para que se activen otras funciones. El primer caso que va a registrar corresponde a la solicitud de una organización de CRM que utilizará para gestionar la publicación, las licencias y las posibles ventas de su aplicación. Aunque no necesite esa organización inmediatamente, es mucho más fácil si se quita de encima cuanto antes estas tareas administrativas. Si está familiarizado con Salesforce, sabrá que una organización es una nube en sí misma. Si no ha usado Salesforce antes, piense en la organización como un entorno aparte donde podría desarrollar, probar o publicar su aplicación. Ilustración 1: Las organizaciones (entornos) son nubes Paso 1: Inscribirse en el programa de socios El primer paso es inscribirse en el programa de socios de AppExchange. 1. En el navegador, vaya a www.salesforce.com/partners y haga clic en Únase ahora (Join Now). 2. Seleccione la primera casilla de verificación: Compilar y comercializar aplicaciones comerciales mediante tecnologías de salesforce.com (Build & Market Commercial Applications using salesforce.com Technologies) (proveedor de software independiente, socio ISV). 3. Rellene los campos en los que se solicita información suya y de la compañía. 4. En el área Preguntas adicionales (Additional Questions), haga clic en los cuadros desplegables y seleccione la respuesta adecuada. 5. Ingrese las palabras del sistema Captcha mostradas y haga clic en Enviar inscripción (Submit Registration). 6. Enseguida recibirá un email con su nombre de usuario y una contraseña temporal. Haga clic en el vínculo para acceder al portal de socios (https://sites.secure.force.com/partners/PP2PartnerLoginPage) e inicie sesión en él. 7. Acepte los términos de uso y rechace el mensaje emergente que aparezca. 8. Guarde esta página en Favoritos porque la va a utilizar bastante. Felicitaciones, ya forma parte del programa de socios ISV de Salesforce. 4 Inicio rápido de ISVforce Paso 2: Generar entornos de desarrollo y prueba Paso 2: Generar entornos de desarrollo y prueba Para compilar y vender aplicaciones en la plataforma Force.com, necesitará varios entornos donde llevar a cabo distintas tareas. Estos entornos se denominan organizaciones. Puede obtener las organizaciones necesarias a través del portal de socios de un modo sencillo. La primera que necesita es una organización con Partner Developer Edition, que es donde va a llevar a cabo las tareas de desarrollo y posiblemente el empaquetado de la aplicación. Aunque ya disponga de una organización con Developer Edition, debería inscribirse en la edición Partner Developer Edition, ya que esta permite un mayor almacenamiento de datos, licencias y usuarios. 1. Debería haber iniciado ya sesión en el portal de socios. Si no es así, haga clic en el elemento guardado como favorito e inicie sesión ahora. 2. En el portal de socios, en la sección Vínculos rápidos, haga clic en Crear una organización de prueba (Create a Test Org). Ilustración 2: Generación de una organización 3. En el cuadro desplegable Edition, elija Partner Developer Edition. En lo sucesivo, y por razones de simplicidad, vamos a denominarla organización de desarrollo. 4. Seleccione la casilla de verificación para aceptar los términos y haga clic en Enviar. En pocos minutos, recibirá un email con un vínculo de inicio de sesión. 5. Mientras espera ese mensaje de email, puede aprovechar a generar otras organizaciones que va a necesitar. Después, se inscribirá en una organización de prueba que será la que se utilice para probar la aplicación que desarrolle. En el área Vínculos rápidos, haga clic de nuevo en Crear una organización de prueba, pero esta vez elija Enterprise/Platform Edition. En lo sucesivo, y por razones de simplicidad, vamos a denominarla organización de prueba. 6. Unos minutos después, recibirá mensajes de email en los que se le pide iniciar sesión y cambiar la contraseña para las organizaciones de desarrollo y prueba. Haga clic en el vínculo, cambie la contraseña y cree una pregunta y repuesta para la contraseña. Quiero más.... Quizás ha observado que hay varios tipos diferentes de organizaciones de prueba en las que puede inscribirse. Las distintas ediciones de Salesforce tienen funciones diferentes y si tiene previsto distribuir la aplicación a otras ediciones, será conveniente probar la aplicación y asegurarse de que funciona correctamente en cada una de estas ediciones. Esto no se incluye entre los objetivos de este inicio rápido, de modo que si quiere obtener más información, consulte Consideraciones arquitectónicas para Group Edition y Professional Edition en la página 42. Paso 3: Obtener una organización de negocio En el paso anterior, ha obtenido organizaciones específicas para llevar a cabo las tareas de desarrollo y pruebas. Para poder publicar su aplicación y gestionar las licencias de la aplicación, necesitará una organización diseñada de forma específica para tal fin. En este paso, va a registrar un caso en el portal de socios para que se le proporcione una ISV CRM Edition. Esta edición será su “organización de negocio”, ya que se utilizará para publicar y gestionar las ventas y la distribución de su aplicación. Nota: Esta función está disponible a los socios aptos. Para obtener más información sobre el programa de socios, incluidos los requisitos de aptitud, visite el sitio Web www.salesforce.com/partners. 1. En el portal de socios, en la sección Vínculos rápidos, haga clic en Crear un caso (Create a Case). 5 Inicio rápido de ISVforce Paso 4: Editar la lista del publicador Ilustración 3: Creación de un caso 2. 3. 4. 5. 6. 7. 8. En la sección Categoría (Category), elija la primera opción. En el cuadro de la primera categoría, elija AppExchange y listas de servicios (AppExchange and Service Listings). En el cuadro de la segunda categoría, elija Solicitar CRM para socio (Request CRM for Partner). En el cuadro desplegable Motivo (Reason), elija Solicitud de administración (Administration Request). En el cuadro desplegable Gravedad (Severity), elija Alta (High). En el asunto, ingrese Necesito CRM para ISV. En el campo Descripción (Description), indíquenos si ya tiene una organización o si necesita una nueva. Si ya tiene una organización de Salesforce, puede proporcionar el Id. de esta en el campo Descripción y se agregarán dos licencias de CRM adicionales a su organización. En caso de que no tenga una organización existente, le proporcionaremos una nueva. En cualquiera de los dos casos, no se olvide de ingresar la dirección de su compañía. Después, haga clic en Guardar. Ilustración 4: Creación de un caso en el portal de socios 9. En pocos minutos, recibirá otro email en el que se le pedirá que inicie sesión y cambie su contraseña. Hágalo e incluya la página en los marcadores de favoritos como ha hecho antes. Quiero más.... • • Su organización de negocio puede tener muchos nombres. Algunas veces, nos podemos referir a ella como su organización de publicación de AppExchange APO, siglas en inglés), su organización de gestión de licencias (LMO, siglas en inglés) o como la CRM ISV Edition. Su organización es todas estas al mismo tiempo, por lo que lo más sencillo es denominarla “organización de negocio”. El cierre del caso puede tardar entre 24 y 48 horas. Haga clic en Mis casos (My Cases) en el menú Vínculos rápidos para ver el estado de sus casos. Paso 4: Editar la lista del publicador En este paso va a iniciar sesión en AppExchange y proporcionar información sobre su compañía. 6 Inicio rápido de ISVforce Resumen de inscripción 1. La sesión en la organización de negocio debería seguir iniciada. En la esquina superior derecha, haga clic en Agregar aplicaciones de AppExchange (Add AppExchange Apps). 2. En la esquina superior derecha, haga clic en Iniciar sesión o registrarse (Login or Register). 3. En la página de inicio de sesión, utilice su nombre de usuario y contraseña para la organización de negocio. 4. Haga clic en la ficha Publicando (Publishing). 5. Haga clic en Su perfil de proveedor (Your Provider Profile). 6. Rellene la información en el perfil de proveedor y haga clic en Guardar. Resumen de inscripción En este primer tutorial, se ha inscrito en el programa de socios y en todas las organizaciones que necesitará principalmente para desarrollar, probar y vender su aplicación. Recapitulemos y veamos en qué se ha inscrito y la finalidad de cada uno de estos elementos. Programa de socios de ISV El programa de socios le proporciona acceso al portal de socios, que es el lugar donde puede crear organizaciones, registrar casos y encontrar información general sobre el programa de socios. Partner Developer Edition También denominada organización de desarrollo, se trata de la organización donde va a desarrollar la aplicación y posiblemente empaquetarla para su distribución. Organización de prueba con Enterprise Edition También denominada organización de prueba, se trata de la organización donde va a instalar y probar su aplicación, exactamente igual que lo harán los clientes. Organización CRM ISV También denominada organización de negocio, se trata de la organización que se utiliza para la publicación de su aplicación, las licencias y la gestión de esta desde un punto de vista de negocio. Como ayuda para la gestión de su licencia, ha instalado la aplicación de gestión de licencias (LMA) en su organización de negocio. Tutorial n.º 2: Desarrollo de su aplicación En este tutorial va a aprender a crear una aplicación muy sencilla que hemos denominado “Hello World”. Esta aplicación no hará grandes cosas pero bastará para aprender dónde tiene lugar el desarrollo dentro del ciclo de vida de una aplicación en paquetes. Paso 1: Crear una aplicación En este paso va a crear una aplicación que contiene una página y una ficha en la que se mostrará la página. 1. En el navegador, inicie sesión en su organización con Partner Developer Edition. En lo sucesivo, vamos a denominarla “organización de desarrollo”. 2. En Configuración, haga clic en Desarrollo > Páginas. 3. En la lista de Visualforce, haga clic en Nuevo. 4. En el campo Etiqueta (Label), ingrese Saludo. 5. En el área de marca de Visualforce, sustituya el contenido de la etiqueta <h1> por Hello World. 7 Inicio rápido de ISVforce Paso 1: Crear una aplicación Ilustración 5: Editor de páginas de Visualforce 6. Haga clic en Guardar. Ahora va a asociar la página a una ficha. 1. En el menú de la barra lateral, haga clic en Crear > Fichas (Create > Tabs). 2. En la lista de fichas de Visualforce, haga clic en Nuevo. 3. En el asistente para crear una nueva ficha de Visualforce, haga clic en el cuadro desplegable y seleccione la página Hello World que acaba de crear. 4. Para la etiqueta de fichas, ingrese Hello. 5. Haga clic en el campo Estilo de la ficha (Tab Style) y elija cualquier icono que represente a la ficha. 6. Haga clic en Siguiente, de nuevo en Siguiente y, en la página final, en Guardar. Ahora va a crear una aplicación nueva que contenga la ficha y la página. 1. En el menú de la barra lateral, haga clic en Crear > Aplicaciones (Create > Apps). 2. Haga clic en Nuevo. 3. En el campo Etiqueta de la aplicación (App Label), ingrese Hello World y haga clic en Siguiente y, en la página siguiente, de nuevo en Siguiente. 4. En la página Elegir fichas (Choose the Tabs), desplácese a la parte inferior de la lista de fichas disponibles, encuentre la ficha Hello y agréguela a la lista de fichas selecconadas. Haga clic en Siguiente. 5. Seleccione la casilla de verificación Visible para que todos los perfiles puedan ver esta aplicación. Después, haga clic en Guardar. Quiero más.... Si le da la sensación de que acaba de crear una página dentro de un contenedor, que ha colocado dentro de otro contenedor, efectivamente lo ha hecho. Y está a punto de poner todo dentro de otro contenedor más. ¿Qué son estos contenedores y qué hacen? • • • Una ficha es un contenedor de cosas que quiere que se muestren en la misma página: un gráfico, una tabla o la página de Visualforce que ha creado. Una aplicación es un contenedor de fichas que aparecen las unas junto a las otras. Cuando se crea una aplicación, está se muestra disponible en el selector de aplicaciones en la esquina superior derecha de la pantalla. Un paquete es un contenedor de cosas que ha cargado en AppExchange. Normalmente, un paquete contiene una aplicación que los clientes pueden instalar en su organización pero también puede cargar paquetes que amplíen las aplicaciones existentes. No ha creado aún un paquete; esto lo hará en el paso siguiente. 8 Inicio rápido de ISVforce Paso 2: Empaquetar la aplicación Paso 2: Empaquetar la aplicación En este paso, va a empaquetar la aplicación para que pueda distribuirla en AppExchange. Un paquete no es más que un contenedor de componentes. En este caso, se trata de su aplicación, la ficha y la página. 1. 2. 3. 4. En el menú de la barra lateral, haga clic en Crear > Paquetes (Create > Packages) y, a continuación, en Nuevo. En el campo Nombre de paquete (Package Name), ingrese Hello World y haga clic en Guardar. En la página Detalles de paquete (Package Detail), haga clic en Agregar componentes (Add Components). Seleccione la aplicación Hello World y haga clic en Agregar a paquete (Add to Package). Quiero más.... Cuando ha hecho clic en Agregar a paquete, ¿se ha dado cuenta de que la ficha Hello y la página de saludo se han agregado de forma automática al paquete? Cuando se crea un paquete, el marco detecta automáticamente componentes dependientes y los agrega al paquete. Paso 3: Asignar un espacio de nombres En este paso va a elegir un identificador único denominado espacio de nombres. Un espacio de nombres establece la diferencia entre los distintos componentes y permite hacer cosas tales como la actualización de la aplicación después de su instalación. Escoja con cuidado el espacio de nombres, ya que no podrá modificarlo después. 1. En el menú de la barra lateral, haga clic en Crear > Paquetes (Create > Packages). 2. En la lista Configuración de desarrollador, haga clic en Modificar y, en la página siguiente, haga clic en Continuar. 3. En el campo Prefijo de espacio de nombres (Namespace Prefix), ingrese un Id. alfanumérico de entre 1 y 15 caracteres y, después, haga clic en Comprobar disponibilidad (Check Availability). Repita este paso hasta que tenga un espacio de nombres exclusivo. 4. En el campo Paquete que debe gestionarse (Package to be managed), elija el paquete Hello World y haga clic en Revise sus selecciones (Review Your Selections). 5. Revise la información de la página y haga clic en Guardar. Quiero más.... En el código subyacente, el espacio de nombres se antepone en todos los componentes incluidos en paquetes desde su organización de desarrollo. Esto permite que el paquete y su contenido se distinga de los paquetes de otros desarrolladores y garantiza un control exclusivo de todos los componentes empaquetados. Paso 4: Cargar una versión beta Antes de cargar una versión de producción de su aplicación, habitualmente se carga una versión beta para probarla. 1. 2. 3. 4. 5. En el menú de la barra lateral, haga clic en Crear > Paquetes (Create > Packages). En la página Paquetes, haga clic en su paquete Hello World y, a continuación, en Cargar (Upload). En la página Cargar paquete (Upload Package), ingrese un nombre y número de versión. Para el tipo de versión, asegúrese de elegir Gestionado en versión beta (Managed — Beta). Desplácese a la parte inferior y haga clic en Cargar (Upload). La carga puede tardar unos momentos hasta que termina. Felicitaciones, ha cargado una aplicación en AppExchange. Su aplicación no está disponible al público pero puede acceder a ella a través de un vínculo de instalación. Lo hará en el paso siguiente. 9 Inicio rápido de ISVforce Paso 5: Instalar y probar la versión beta Quiero más.... La finalidad de una versión beta es únicamente probar sus funciones. Por tanto, solo se puede instalar una organización de prueba, una organización con Developer Edition o un sandbox (se explicará más adelante). El paso siguiente consiste en instalar la versión beta en la organización de prueba que ha creado en el paso 2: Generar entornos de desarrollo y prueba. Paso 5: Instalar y probar la versión beta La instalación de la versión beta es sencilla: basta con hacer clic en el vínculo y proporcionar el nombre de usuario y la contraseña que va a utilizar para la organización de prueba. 1. Haga clic en la URL de instalación. Ilustración 6: Vínculo de URL de instalación 2. 3. 4. 5. 6. 7. En la página de inicio de sesión, ingrese el nombre de usuario y la contraseña de la organización de prueba. En la página Detalles de instalación del paquete (Package Installation Details), haga clic en Continuar (Continue). Haga clic en Siguiente. En la página Nivel de seguridad (Security Level), otorgue acceso a todos los usuarios y haga clic en Siguiente. Haga clic en Instalar. Cuando finalice la instalación, podrá seleccionar su aplicación en el selector de aplicación situado en la esquina superior derecha. Ilustración 7: Aplicación Hello World 8. En su página, debería ver la ficha Hello y el texto de saludo. Ilustración 8: Ficha y página Hello World 10 Inicio rápido de ISVforce Resumen de la tarea de desarrollo Llegados a este punto, normalmente debería probar la aplicación y asegurarse de que funciona tal y como se ha diseñado. Su aplicación se instala con facilidad y muestra lo que se pretende, pasemos a otra cosa. Quiero más.... Los paquetes de versión beta también se pueden instalar en entornos de sandbox. Un sandbox es una réplica de la organización de su cliente donde se puede desarrollar, probar o instalar aplicaciones, así como comprobar los cambios que se quieren introducir. Ninguna de las organizaciones en las que se ha inscrito en este libro de trabajo tiene un sandbox pero si lo tuviera en otra instalación y quisiera instalar allí la aplicación, deberá sustituir la parte inicial de la URL de instalación con http://test.salesforce.com. Resumen de la tarea de desarrollo Felicitaciones, acaba de finalizar una parte fundamental del ciclo de vida de desarrollo de software. Los cambios que quiera hacer en un futuro en la aplicación seguirán el mismo procedimiento: 1. 2. 3. 4. 5. Modificar la aplicación existente en la organización de desarrollo Incluir la aplicación en un paquete Cargar el paquete como una versión beta Instalar la versión beta en una organización de prueba Probar la aplicación instalada Tutorial n.º 3: Publicación y licencias Imagine que ha pasado por varios ciclos de desarrollo con su versión beta y ya está preparado para publicar una aplicación pública. El paso siguiente consiste en cargar una aplicación de producción, también llamada versión gestionada y editada de la aplicación. Después, puede crear una lista para que otras personas puedan encontrar la aplicación y saber qué hace. Por último, va a conectar la aplicación a la organización de negocio para que pueda gestionar las licencias de las personas que instalen su aplicación. Paso 1: Cargar en AppExchange Este paso le puede resultar familiar, ya que se parece al paso para cargar una versión beta. 1. Si ha seguido los tutoriales sin parar, probablemente continúe su sesión iniciada en la organización de prueba. Ahora, vamos a iniciar sesión en la organización de desarrollo. 2. Observará en la esquina superior derecha que hay un vínculo que dice Desarrollo de Hello World, versión 1.0 (Developing Hello World, version 1.0). Haga clic en ese vínculo para acceder directamente a la página Detalles del paquete. Ilustración 9: Desarrollo de Hello World, versión 1.0 3. En la página Detalles del paquete, haga clic en Cargar. 4. En Tipo de versión, elija Gestionado y editado. 11 Inicio rápido de ISVforce Paso 2: Crear la lista de aplicaciones 5. Desplácese a la parte inferior y haga clic en Cargar (Upload). 6. En el mensaje emergente, haga clic en Aceptar. Paso 2: Crear la lista de aplicaciones En este paso va a modificar la lista de aplicaciones y va a conectar su organización de negocio a la aplicación. 1. Después de la carga del paquete, verá un vínculo para publicar en AppExchange, haga clic en él. Ilustración 10: Publicar en AppExchange 2. Se mostrará un cuadro de diálogo de inicio de sesión; esta vez, utilice el nombre de usuario y la contraseña de su organización de negocio. 3. Lea y acepte los términos y condiciones, y haga clic en Acepto (I Agree). 4. En la primera pregunta se cuestiona si ya aparece en AppExchange. Lo hizo en el Tutorial n.º 1: Inscribirse, Paso 4: Editar la lista del publicador en la página 6, de modo que debe seleccionar Sí y hacer clic en Continuar. 5. Haga clic en Vincular organización nueva (Link New Organization). 6. Se le pedirá el nombre de usuario y la contraseña. Ingrese los valores correspondientes a la organización de desarrollo. 7. Haga clic en la ficha Publicando (Publishing). 8. Haga clic en Crear lista nueva (Create New Listing). 9. En la ventana emergente, ingrese un título de lista de Aplicación Hello World de <su nombre>. Será conveniente agregar el nombre porque el título de la lista debe ser exclusivo y no podemos tener a todo el mundo listando aplicaciones Hello World genéricas. 10. Seleccione el botón de opción Aplicación y, a continuación, haga clic en Enviar. 11. Rellene los campos obligatorios en la página Información básica (Basic Information). 12. Haga clic en Guardar. Su lista ya está preparada pero aún quedan cosas por hacer, incluido el rellenado de las fichas de la parte superior. Lo haremos en el paso siguiente. Quiero más.... No se preocupe demasiado por tener la lista perfecta, todavía no es pública y puede cambiar la lista en cualquier momento. Paso 3: Completar la lista En la parte superior se muestran otras fichas: Ofertas (Offering), Descripción general (Overview), Especificaciones (Specs), Asistencia técnica (Support), Contenido cargado (Uploaded Content) y Prospectos (Leads). Deberá rellenar los campos obligatorios en estas fichas para que la lista esté completa. 1. Haga clic en Ofertas. 2. Para vincular su aplicación, haga clic en Cambiar paquetes (Change Packages). 3. Seleccione su aplicación y trasládela a la lista de aplicaciones seleccionadas; a continuación, haga clic en Aceptar. 12 Inicio rápido de ISVforce Paso 4: Instalar la LMA 4. En el cuadro desplegable etiquetado Seleccione la versión más reciente de la aplicación (Select the latest version of your application), seleccione su aplicación. 5. Haga clic en Guardar. 6. Haga clic en la ficha Descripción general. 7. Seleccione Gratis (Free). 8. Rellene el campo Descripción completa (Full Description) y haga clic en Guardar. 9. Haga clic en la ficha Especificaciones. 10. Haga clic en Cambiar ediciones (Change Editions). 11. En el mensaje emergente, traslade todas las ediciones a la lista de elementos seleccionados y haga clic en Enviar. Nota: La página de Visualforce que ha creado está disponible en todas las ediciones pero no siempre es así con las demás funciones. Antes de desarrollar una aplicación completa, seguro que le interesa tener en cuenta a sus destinatarios y la edición que estos tienen. Para obtener más información sobre las ediciones y las funciones compatibles, consulte el apartado: Consideraciones arquitectónicas para Group Edition y Professional Edition en la página 42 12. Haga clic en Cambiar idiomas (Change Languages). 13. Elija el idioma en el que ha desarrollado la aplicación (inglés, probablemente) y haga clic en Enviar. 14. Haga clic en Guardar. Las demás fichas no contienen campos obligatorios por lo que puede dejarlos en blanco de momento. Como hasta ahora, puede volver atrás cuando quiera y cambiar los valores. Paso 4: Instalar la LMA La aplicación de gestión de licencias (LMA, siglas en inglés) permite gestionar las ventas, las licencias y el servicio de asistencia de su aplicación. Para instalar la LMA, deberá archivar un caso en el portal de socios. Cuando el caso esté resuelto, instale la LMA en la organización de negocio. Nota: Esta función está disponible a los socios aptos. Para obtener más información sobre el programa de socios, incluidos los requisitos de aptitud, visite el sitio Web www.salesforce.com/partners. 1. 2. 3. 4. 5. 6. 7. 8. 9. En el mensaje de email que reciba, haga clic en el vínculo de LMA. Puede leer la reseña sobre la aplicación y hacer clic en Obtener ahora (Get It Now). En la ventana emergente, elija En mi Salesforce de producción (In my production Salesforce). Lea y acepte los términos y condiciones, y haga clic en Instalar (Install). Compruebe su contraseña y haga clic en Enviar (Submit). En la página Detalles de instalación del paquete (Package Installation Details), haga clic en Continuar (Continue). Haga clic en Siguiente, Siguiente e Instalar. Haga clic en Implementar ahora (Deploy Now) y, en la página siguiente, haga clic en Implementar (Deploy). Haga clic en la esquina superior derecha y observará que hay una aplicación nueva instalada. 13 Inicio rápido de ISVforce Paso 5: Licencias y gestión de aplicaciones Ilustración 11: Aplicación de gestión de licencias La LMA no se utiliza directamente, sino que primero hay que desarrollar una aplicación y publicarla. Es lo que va a hacer en el paso siguiente. Paso 5: Licencias y gestión de aplicaciones En este paso va a conectar su aplicación a la aplicación de gestión de licencias (LMA) en su organización de negocio. 1. 2. 3. 4. 5. 6. Haga clic en la ficha Publicando (Publishing). Junto al paquete que ha cargado, haga clic en Gestionar licencias (Manage Licenses). Haga clic en Registrar (Register). Haga clic en Asignar (solo una vez) (Assign [One-Time Only]). Ingrese las credenciales de inicio de sesión de su organización de negocio y haga clic en Enviar. Haga clic en Guardar. La aplicación tardará hasta 30 minutos en conectarse a la LMA. Descanse un rato, se lo ha ganado. Resumen de publicación y licencias En este tutorial, ha cargado su aplicación gestionada y editada en AppExchange y ha creado una lista para su aplicación. También ha instalado la aplicación de gestión de licencias y la ha vinculado a su aplicación. Puede usar la LMA para gestionar y renovar las licencias, así como para establecer la configuración de licencias predeterminada. Por ejemplo, puede otorgar licencia a su aplicación como prueba gratuita que caducará tras un número específico de días. Para obtener más información, consulte Gestión de licencias y asistencia administrativa en la página 137. Ahora su aplicación tiene una lista privada en AppExchange que puede compartir con posibles clientes pero que el público general no verá a menos que se disponga del vínculo necesario. Antes de incluir la aplicación en una lista pública, deberá superar una revisión de seguridad. Esta revisión se explica en otros capítulos. Para obtener más información, consulte Pasos en la revisión de seguridad en la página 95. Tutorial n.º 4: Actualización de la aplicación Si está familiarizado con Salesforce, sabrá que hacemos versiones de parches semanales para solucionar problemas y varias veces al año publicamos una versión principal en la que introducimos funciones nuevas. Como proveedor de software independiente (ISV), puede hacer lo mismo: entregar versiones de parches para solucionar problemas y una versión principal para agregar funciones nuevas. • En el caso de las funciones nuevas, el proceso es el mismo que ya conoce. Debe comenzar por modificar la aplicación, incluirla en un paquete, subir una versión beta, probar la versión beta y cargar una versión gestionada y editada. Las versiones 14 Inicio rápido de ISVforce • • Paso 1: Crear una organización de parche principales aumentan el número de versión al siguiente número entero, del 1.0 al 2.0, por ejemplo, mientras que las versiones menores aumentan en una unidad el número tras el punto, de 1.0 a 1.1, por ejemplo. No hay reglas estrictas que definan exactamente lo que constituye una versión principal o una menor. Todo depende de usted. En el caso de las soluciones de problemas, el proceso varía un poco. Debe comenzar por crear una organización de parches, un entorno especial con funcionalidad limitada que solo se puede usar para desarrollar un parche para un paquete específico. Después de cargar el parche, puede enviarlo a sus clientes para que obtengan las soluciones a los problemas cuando inicien sesión de nuevo. Las versiones menores aumentan el número de versión al segundo decimal, de 1.0 a 1.0.1, por ejemplo. Los clientes deben encargarse de instalar las versiones principales o menores. Sin embargo, puede enviar versiones de parche directamente a las organizaciones de los clientes. Esta función solo está disponible para los socios de ISVforce/OEM registrados. Para obtener más información sobre el programa de socios, incluidos los requisitos de aptitud, visite el sitio Web www.salesforce.com/partners. Como ya conoce bien el proceso para desarrollar una versión principal, trataremos aquí el desarrollo de una versión de parche y su entrega mediante envío a nuestros clientes. Paso 1: Crear una organización de parche Para crear un parche, debe generar una organización de desarrollo de parches nueva. Para crear una versión del parche: 1. 2. 3. 4. Desde Configuración, haga clic en Crear > Paquetes. Haga clic en el nombre de su paquete gestionado. Haga clic en la ficha Organización de parche y, a continuación, en Nueva. Seleccione la versión del paquete cuyo parche desea crear en la lista desplegable Aplicación de parche a la versión principal. El tipo de versión debe ser Gestionado y editado. 5. Introduzca un Nombre de usuario para iniciar sesión en su organización de parche. 6. Introduzca una Dirección de email asociada con su inicio de sesión. 7. Haga clic en Guardar. Nota: Si pierde su información de inicio de sesión, haga clic en Restablecer en la página de detalles del paquete en Organización de desarrollo de parche para restablecer el inicio de sesión en su organización de desarrollo de parche. En unos minutos, recibirá un email con las credenciales de inicio de sesión. Después de haber iniciado sesión y cambiado su contraseña, continúe en el paso siguiente. Quiero más.... El desarrollo en una organización de parche está limitado. A continuación se incluye una lista de advertencias: • • • • • • • • No se pueden agregar componentes de paquete. No se pueden eliminar los componentes de paquete actuales. Los controles de acceso de API y Apex dinámica no se pueden cambiar para el paquete. No se puede desaprobar ningún tipo de código Apex. No se pueden agregar nuevas relaciones de clase de Apex, como extends. No se pueden agregar nuevos modificadores de acceso de Apex, como virtual o global. No se pueden añadir nuevos servicios Web. No se pueden añadir nuevas dependencias de funciones. 15 Inicio rápido de ISVforce Paso 2: Desarrollar un parche Paso 2: Desarrollar un parche Vamos a hacer un cambio sencillo en la aplicación. En lugar de que se muestre solo Hello World, va a agregar la fecha del día actual. 1. 2. 3. 4. En la organización de parche, en Configuración haga clic en Crear > Paquetes y, después, en el paquete Hello World. En la lista de componentes de paquetes, haga clic en la página de saludo. Haga clic en Modificar. Justo después de la etiqueta de cierre </h1>, ingrese lo siguiente: <br/> <apex:outputText value="The date and time is: {!NOW()}"/> 5. Haga clic en Guardar. 6. Para ver el resultado, haga clic en la ficha Hello y verá que se muestra la fecha y hora actuales. Ilustración 12: Mostrar la fecha y hora Esto es todo lo que necesitamos hacer en este parche. Continuemos. Quiero más.... La función !NOW devuelve la fecha en un formato estándar. Existen muchas funciones incorporadas y maneras de dar formato al resultado. Para obtener más información, consulte la Guía del desarrollador de Visualforce. Paso 3: Cargar el parche Normalmente, el paso siguiente consiste en cargar un parche beta e instalarlo en una organización de prueba. Como el proceso es muy parecido al que ha seguido en el Paso 4: Cargar una versión beta y en el Paso 5: Instalar y probar la versión beta que ya realizó en el tutorial n.º 2: Desarrollo de su aplicación, no vamos a repetirlo. 1. 2. 3. 4. 5. En la organización de parche, en Configuración haga clic en Crear > Paquetes y, después, en el paquete Hello World. En la página Carga del paquete, haga clic en Cargar. Ingrese un nombre de versión, por ejemplo, la fecha actual. Tenga en cuenta que el Número de versión ha aumentado su Número de parche. Seleccione Gestionado y editado (Managed — Released). 16 Inicio rápido de ISVforce Paso 4: Instalar o enviar un parche 6. De forma opcional, introduzca y confirme una contraseña para compartir el paquete de forma privada con cualquiera que tenga contraseña. No introduzca una contraseña si desea que el paquete esté disponible para cualquiera en AppExchange y compartir el paquete públicamente. 7. Salesforce selecciona automáticamente los requisitos que encuentra. Además, seleccione cualquier otro componente obligatorio de las secciones Requisitos del paquete y Requisitos del objeto para notificar a los instaladores de los requisitos de este paquete. 8. Haga clic en Cargar. Felicitaciones, ha cargado una versión de parche. Seguro que le interesa compartir el parche con otras personas. Eso es precisamente lo que vamos a hacer a continuación. Paso 4: Instalar o enviar un parche Hay dos maneras de entregar un parche: puede requerir que sean los clientes quienes lo instalen o puede enviárselo. Las actualizaciones mediante envío se realizan automáticamente; es decir, cuando el cliente inicia sesión, encuentra las actualizaciones. Vamos a probar esta opción. 1. Inicie sesión en la organización de desarrollo. 2. En la esquina superior derecha, haga clic en Desarrollo de Hello World, versión 1.0 (Developing Hello World, version 1.0). Ilustración 13: Desarrollo de Hello World, versión 1.0 3. 4. 5. 6. 7. 8. En la página Detalles del paquete, haga clic en Actualizaciones de envío (Push Upgrades). Haga clic en Programar actualizaciones mediante envío. En la lista desplegable Versión de parche (Patch Version), selecicone la versión de parche que va a enviar. En el campo Fecha de inicio programado (Scheduled Start Date), ingrese la fecha del día actual. En la sección Seleccionar organizaciones de destino (Select Target Organizations), seleccione la organización de prueba. Haga clic en Programar. ¡Ya lo ha hecho! Ha enviado una versión de parche al suscriptor para que este obtenga de forma automática las actualizaciones. Debería comprobar que los clientes han recibido el parche y asegurarse de que lo han instalado correctamente. Quiero más.... Las versiones beta no son aptas para las actualizaciones mediante envío. En este caso, deberá desinstalar la versión beta e instalar después la nueva versión beta. Resumen de la actualización de la aplicación En este tutorial ha aprendido a actualizar su aplicación en una organización de parche y a enviar dicha actualización a los clientes. Comenzó por crear una organización de parche específica de una versión de paquete editado. Después, modificó la aplicación, la cargó y programó la actualización mediante envío para sus clientes. 17 Inicio rápido de ISVforce Resumen de la actualización de la aplicación Felicitaciones, ¡ha terminado! ¿O quizás esto no haya hecho más que empezar? Puede modificar la aplicación actual como quiera que sea o bien puede crear una nueva organización de desarrollo en el portal de socios y compilar otra aplicación. Puede utilizar las mismas organizaciones de prueba y ventas, así como todo lo que haya configurado para publicar y gestionar muchas más aplicaciones. Va a conseguir que ISVforce sea un éxito. 18 Capítulo 3 Arquitectura y desarrollo de aplicaciones En este capítulo... • • • • • • • • • • • • • • • Concepto de paquetes gestionados y no gestionados Componentes disponibles Comportamiento especial de los componentes en paquetes Consideraciones arquitectónicas para Group Edition y Professional Edition Concepto de dependencias Creación de aplicaciones empaquetadas con Chatter Aspecto de Salesforce coincidente Desarrollo de la documentación de las aplicaciones Creación de configuración de perfil personalizado Acerca de los conjuntos de permisos y la configuración de perfil Descripción general de las aplicaciones conectadas Acerca del WSDL de socio Trabajo con servicios externos Protección de la propiedad intelectual Núcleo de entorno En esta sección se incluyen conceptos importantes y decisiones de arquitectura que debe tener en cuenta antes de comenzar el desarrollo. Son los siguientes: • • • • Componentes disponibles Límites para Group Edition y Professional Edition Protección de la propiedad intelectual Concepto de dependencias Consulte también: Consideraciones arquitectónicas para Group Edition y Professional Edition 19 Arquitectura y desarrollo de aplicaciones Concepto de paquetes gestionados y no gestionados Concepto de paquetes gestionados y no gestionados Los paquetes tienen dos formas: gestionados y sin gestionar. Paquetes no gestionados Los paquetes sin gestionar se suelen utilizar para distribuir proyectos de código abierto o plantillas de aplicaciones y ofrecer a los desarrolladores los fundamentos de una aplicación. Una vez haya instalado los componentes de un paquete sin gestionar, los componentes se pueden modificar en la organización en la que se instalan. El desarrollador que ha creado y cargado el paquete sin gestionar no tiene control sobre los componentes instalados y no podrá cambiarlos ni actualizarlos. Los paquetes sin gestionar no se deben utilizar para migrar componentes de un Sandbox a una organización de producción. En su lugar, utilice Conjuntos de cambios. Paquetes gestionados Los clientes de salesforce.com suelen utilizar los paquetes gestionados para distribuir y vender aplicaciones a los clientes. Estos paquetes se deben crear a partir de una organización de Developer Edition. Mediante AppExchange y la aplicación de gestión de licencias (LMA), los desarrolladores pueden vender y gestionar licencias basadas en usuarios en la aplicación. Los paquetes gestionados también son totalmente actualizables. Para garantizar actualizaciones sin problemas, puede que algunas modificaciones destructivas como la eliminación o modificación de objetos o campos no se realicen. Los paquetes gestionados también ofrecen los siguientes beneficios: • Protección de la propiedad intelectual de Apex • Compatibilidad de versiones para componentes accesibles de API integrada • Capacidad para aplicar divisiones y parches a versiones anteriores • Capacidad de enviar actualizaciones de parches a los suscriptores de manera sencilla • Asignación de nombres únicos a todos los componentes para garantizar instalaciones sin conflictos Las siguientes definiciones ilustran estos conceptos: Componentes Un componente es una parte constituyente de un paquete. Define un elemento, como un objeto personalizado o un campo personalizado. Puede combinar componentes de un paquete para producir funciones o aplicaciones potentes. En un paquete sin gestionar, los componentes no se pueden actualizar. En un paquete gestionado, algunos componentes pueden actualizarse y otros no. Atributos Un atributo es un campo de un componente, como el nombre de una plantilla de email o la casilla de verificación Permitir reportes de un objeto personalizado. En un componente no actualizable de un paquete gestionado o sin gestionar, los atributos son modificables por el desarrollador (el creador del paquete) y el suscriptor (el instalador del paquete). En un componente actualizable de un paquete gestionado, el desarrollador puede modificar algunos atributos, otros los puede modificar el suscriptor y algunos están bloqueados, por lo que no se pueden modificar. Planificación de la edición de paquetes gestionados La edición de un paquete de AppExchange es parecida a la edición de cualquier otro programa en el desarrollo de software. Puede que desee implementarlo mediante repeticiones para garantizar que cada componente funciona como se espera. Incluso puede ofrecer una versión beta a aquellos usuarios que se hayan ofrecido para instalar una primera versión de su paquete y enviarle sus comentarios. Una vez haya editado un paquete publicándolo en el directorio de AppExchange, cualquiera podrá instalarlo. Por ello, planifique cuidadosamente su edición. Revise los estados definidos a continuación para familiarizarse con el proceso de edición. Salesforce 20 Arquitectura y desarrollo de aplicaciones Componentes disponibles aplica automáticamente el estado adecuado a su paquete y componentes dependiendo de la configuración de carga que seleccionara y el punto en el que se encuentre dentro del proceso de edición. Estado Descripción Sin gestionar El paquete no se ha convertido en un paquete gestionado o el componente no se ha agregado a un paquete gestionado. Tenga en cuenta un componente que esté "Gestionado en versión beta" puede pasar al estado "No gestionado" si se retira de un paquete gestionado. Todos los paquetes son no gestionados a menos que se indique lo contrario con uno de los siguientes iconos gestionados. Gestionado en versión beta El paquete o componente se ha creado en la organización de Salesforce actual y está gestionado, pero no se ha editado por una de las tres razones siguientes: • No se ha cargado. • Se ha cargado habiendo seleccionado Gestionado en versión beta. Esta opción evita que se publique y esté disponible de forma pública en AppExchange. El desarrollador todavía puede modificar cualquier componente pero tal vez el instalador no pueda dependiendo de qué componentes se han incluido en el paquete. Gestionado y editado El paquete o componente se ha creado en la organización de Salesforce actual y está gestionado. También se ha cargado con la opción Gestionado y editado seleccionada, indicando que puede publicarse y estar disponible de forma pública en AppExchange. Tenga en cuenta que una vez que pase un paquete a este estado, ni el desarrollador ni el instalador podrán modificar algunas propiedades de los componentes. Este tipo de edición se considera una edición principal. Parche Si tiene que proporcionar una actualización menor para un paquete gestionado, considere la creación de un parche en lugar de una edición principal. Un parche permite a un desarrollador cambiar la funcionalidad de los componentes existentes en un paquete gestionado, mientras garantiza a los suscriptores experimentar que no hay cambios visibles en el paquete. Este tipo de edición se considera una versión de parche. Gestionado e instalado El paquete o componente se ha instalado desde otra organización de Salesforce pero está gestionado. Un desarrollador puede decidir redefinir las funciones de un paquete gestionado con el paso del tiempo al evolucionar los requisitos. Esto puede implicar la necesidad de volver a diseñar algunos componentes del paquete gestionado. Los desarrolladores no pueden eliminar algunos componentes en un paquete Gestionado y editado, pero pueden desaprobar un componente en una versión posterior del paquete para que los nuevos suscriptores no reciban el componente, mientras que el componente continúa funcionando para los suscriptores existentes y las integraciones de API. Componentes disponibles No todos los componentes se pueden incluir en paquetes para su distribución. Si crea una aplicación que utiliza componentes que no se pueden incluir en paquetes, sus suscriptores tendrán que crear y configurar esos componentes después de instalar su aplicación. Si la facilidad de instalación es un importante preocupación para sus suscriptores, tenga en cuenta los componentes que no se pueden incluir en paquetes en su proceso de desarrollo. 21 Arquitectura y desarrollo de aplicaciones Componentes disponibles La siguiente tabla muestra los componentes disponibles en un paquete gestionado y si son o no actualizable o eliminables. Las siguientes secciones describen las columnas de la tabla y sus valores. Actualizable Algunos componentes se actualizan a una versión más reciente cuando se actualiza un paquete. • No: El componente no se puede actualizar. • Sí: El componente se puede actualizar. Suscriptor que se puede eliminar Un suscriptor o instalador de un paquete puede eliminar el componente. • No: El suscriptor no puede eliminar el componente. • Sí: El suscriptor puede eliminar el componente. Desarrollador que se puede eliminar Un desarrollador puede eliminar algunos componentes después de cargar el paquete como Gestionado y editado. Los componentes eliminados no se eliminan en la organización del suscriptor durante la actualización de un paquete. El atributo Se puede proteger contiene más detalles acerca de la eliminación de componentes. • No: El desarrollador no puede eliminar un componente Gestionado y editado. • Sí: El desarrollador puede eliminar un componente Gestionado y editado. Se puede proteger Los desarrolladores pueden marcar ciertos componentes como protegidos. Los componentes creados en la organización del suscriptor no se pueden vincular o hacer referencia a componentes protegidos. Un desarrollador puede eliminar un componente protegido en una futura versión sin necesidad de preocuparse de errores en las instalaciones. Sin embargo, si se marca un componente como no protegido y se publica de forma global, el desarrollador no podrá eliminarlo. Cuando el suscriptor actualiza a una versión del paquete donde se ha eliminado el componente, éste último de elimina de la organización del suscriptor. • No: No se puede marcar el componente como protegido. • Sí: Se puede marcar el componente como protegido. Protección de IP Algunos componentes incluyen automáticamente la protección de propiedad intelectual, como la confusión del código Apex. Las únicas excepciones son métodos de Apex declarados como globales, lo que significa que se puede ver las firmas del método por el suscriptor. La información en los componentes que incluye en paquetes y publica puede ser visible para usuarios en AppExchange. Tenga cuidado cuando agregue su código a un custom s-control, una fórmula o página de Visualforce, o cualquier otro componente que no puede ocultar en su aplicación. • No: El componente no es compatible con la protección de propiedad intelectual. • Sí: El componente es compatible con la protección de propiedad intelectual Componente Actualizable Suscriptor que se puede eliminar Desarrollador que Se puede proteger Protección de IP se puede eliminar Acción Sí No No No No Instantánea analítica No Sí Sí No No 22 Arquitectura y desarrollo de aplicaciones Componentes disponibles Componente Actualizable Suscriptor que se puede eliminar Desarrollador que Se puede proteger Protección de IP se puede eliminar Clase de Apex Sí No Sí (si no está establecido como acceso global) No Sí Razón de colaboración de Apex Sí No No No No Nuevo cálculo de colaboración de Apex No Sí Sí No No Desencadenador de Apex Sí No Sí (si no está establecido como acceso global) No Sí Aplicación No Sí Sí No No Tipo de artículo Sí No No No No Centro de llamadas No Sí No No No Formato compacto Sí No Sí No No Aplicación conectada Sí Sí Sí No No Botón o vínculo personalizado Sí No Sí, si está protegido No, excepto No vínculos personalizados (para la página de inicio únicamente) Campo personalizado Sí Sí Sí Etiqueta personalizada Sí No Sí, si está protegido Sí No Objeto personalizado Sí No No No No Tipo de reporte personalizado Sí No No No No Configuración personalizada Sí No No No Sí Tablero No Sí Sí No No Documento No Sí Sí No No Plantilla de email No Sí Sí No No Conjunto de campos No No No No Sí 23 No No Arquitectura y desarrollo de aplicaciones Componentes disponibles Componente Actualizable Suscriptor que se puede eliminar Desarrollador que Se puede proteger Protección de IP se puede eliminar Página flexible Sí No No No No Flujo Sí Sí No No No Carpeta No Sí Sí No No Componente de la Sí página de inicio No No No No Formatos de página de inicio No Sí Sí No No Membrete No Sí Sí No No Vista de lista No Sí Sí No No Formato de página No Sí Sí No No Conjunto de permisos Sí No No No No Tipo de registro Sí No No No No Configuración de No sitio remoto Sí Sí No No Reporte No Sí Sí No No S-Control Sí No No No No Recurso estático Sí No No No No Tabulador Sí Sí Sí No No Traducción Sí No No No No Regla de validación Sí No No No No Componente de Visualforce Sí No Sí (si está establecido como acceso público) No Sí Página de Visualforce Sí No No No No Alerta de email de Sí flujo de trabajo No Sí, si está protegido Sí No Actualización del Sí campo de flujo de trabajo No Sí, si está protegido Sí No Mensaje saliente Sí de flujo de trabajo No Sí, si está protegido Sí No Regla de flujo de trabajo No No No Sí 24 No Arquitectura y desarrollo de aplicaciones Componente Modificación de componentes y atributos después de la instalación Actualizable Tarea del flujo de Sí trabajo Suscriptor que se puede eliminar Desarrollador que Se puede proteger Protección de IP se puede eliminar No Sí, si está protegido Sí No Atributos y comportamientos del componente Solo se pueden actualizar algunos atributos de un componente. Muchos componentes se comportan de manera diferente también o incluyen restricciones adicionales en un paquete gestionado. Es importante tener en cuenta esos comportamientos al diseñar su paquete. Consulte también: Modificación de componentes y atributos después de la instalación Los componentes se agregan automáticamente a paquetes Modificación de componentes y atributos después de la instalación La siguiente tabla muestra qué componentes y atributos son modificables después de la instalación desde un paquete gestionado. Las siguientes secciones describen las columnas de la tabla y sus valores. Desarrollador modificable El desarrollador puede modificar los atributos del componente en esta columna. Estos atributos están bloqueados en la organización del suscriptor. Suscriptor y desarrollador modificables El suscriptor y el desarrollador pueden modificar los atributos del componente en esta columna. Sin embargo, no son actualizables, solo los nuevos suscriptores reciben los últimos cambios. Bloqueado Cuando un paquete es Gestionado y editado, el desarrollador y el suscriptor no pueden modificar los atributos del componente en esta columna. Componente Desarrollador modificable Suscriptor y desarrollador modificables Bloqueado Acción • • • Tipo de registro de destino • Formato de acción Valores predeterminados para campos de acción Todos los campos excepto Tipo de registro de destino Instantánea analítica • Todos los atributos • excepto Nombre exclusivo de la instantánea analítica Nombre exclusivo de la instantánea analítica Clase de Apex • • Versión de API Código • 25 Nombre Arquitectura y desarrollo de aplicaciones Modificación de componentes y atributos después de la instalación Componente Desarrollador modificable Razón de colaboración de Apex • Suscriptor y desarrollador modificables Razón de etiqueta Nuevo cálculo de colaboración de Apex Desencadenador de Apex • • • Tipos de artículos • • • • • Descripción • Etiqueta • Etiqueta plural Empieza con un sonido de • vocal • • • • Formato compacto • Todos los atributos Aplicación conectada • • • • • • • Método de acceso URL de aplicación de lienzo URL de devolución de llamada Nombre de aplicación conectada Email de contacto Teléfono de contacto Descripción URL de icono URL de información Intervalos de IP Ubicaciones URL de la imagen del logotipo Ámbitos de OAuth • Comportamiento • • • • • • • • • • Botón o vínculo personalizado Nombre de razón • Nombre Todos los atributos excepto Nombre de aplicación • Nombre de aplicación Disponible para el portal • de clientes Visualizaciones de canales Modelo de colaboración predeterminado Nombre Estado de desarrollo Habilitar divisiones Otorgar acceso con jerarquías Formatos de búsqueda • • • • • Nombre de API Fecha de creación/por: Clave de consumidor Pregunta secreta de consumidor Instalado por Fecha de instalación Fecha de última modificación/por Versión • • URL de ACS Id. de entidad Restricciones IP Gestionar conjuntos de permisos Gestionar perfiles URL de inicio de Mobile Usuarios autorizados Los usuarios deben iniciar sesión Atributos de SAML Certificado de proveedor de servicio URL de inicio Tipo de asunto • Altura • Tipo de visualización • • • • • • 26 • Clase de Apex Versión de API Código Aplicación Bloqueado • • • Arquitectura y desarrollo de aplicaciones Componente Modificación de componentes y atributos después de la instalación Desarrollador modificable • • • • • • Suscriptor y desarrollador modificables URL de botón o vínculo Origen del contenido Descripción Mostrar casillas de verificación Etiqueta Codificación del vínculo • • • • • • • • Campo personalizado • • • • • • • • • • Formato de presentación de numeración automática Número de decimales Descripción Valor predeterminado Etiqueta de campo Fórmula Extensión Filtro de búsqueda Etiqueta de lista relacionada Criterios de filtro de resumen Etiqueta personalizada • • • Categoría Descripción breve Valor Objeto personalizado • • • • • Descripción Etiqueta Etiqueta plural Nombre del registro Empieza con un sonido de vocal • • • • • • • • • • • • • • • • • 27 Bloqueado Ajustar tamaño • Mostrar barra de dirección Mostrar barra de menú Mostrar barras de desplazamiento Mostrar barra de estado Mostrar barras de herramientas Anchura Posición de la ventana Nombre Seguimiento de noticias en tiempo real de Chatter Texto de ayuda Tipo de máscara Carácter de máscara Configuración de colaboración Ordenar valores de lista de selección Seguimiento de historial de campos • • • • • • • • Nombre de relación secundaria Tipo de datos Id. externo Nombre del campo Obligatorio Campos de resumen Objeto de resumen Tipo de resumen Exclusivo • Nombre • Permitir actividades • Permitir reportes • Disponible para el portal de clientes • Configuración de la ayuda contextual Modelo de colaboración predeterminado Estado de desarrollo Habilitar divisiones Búsqueda mejorada Otorgar acceso con jerarquías Formatos de búsqueda Nombre de objeto Tipo de datos del nombre de registro Formato de presentación del nombre de registro Arquitectura y desarrollo de aplicaciones Componente Tipo de reporte personalizado Modificación de componentes y atributos después de la instalación Desarrollador modificable • Configuración personalizada • • Suscriptor y desarrollador modificables Todos los atributos excepto Estado de desarrollo y Nombre del tipo de reporte • Seguimiento de historial de campos • Estado de desarrollo Descripción Etiqueta Bloqueado • Nombre del tipo de reporte • • • Nombre de objeto Tipo de configuración Visibilidad Tablero • Todos los atributos • excepto Nombre exclusivo del tablero Nombre exclusivo del tablero Documento • Todos los atributos • excepto Nombre exclusivo del documento Nombre único del documento Plantilla de email • Todos los atributos excepto Nombre de plantilla de email • Nombre de plantilla de email • Campos seleccionados (controlado únicamente por el suscriptor) • Nombre • • • Nombre Descripción Estado • • Nombre exclusivo del flujo URL • Todos los atributos • excepto Nombre exclusivo de la carpeta Conjunto de campos • • • Descripción Etiqueta Campos disponibles Página flexible • Página flexible Flujo • Todo el flujo Carpeta Componente de la página de • inicio • Cuerpo Posición del componente Formatos de página de inicio • 28 Todos los atributos excepto Nombre de formato Nombre exclusivo de la carpeta • • Nombre Tipo • Nombre de formato Arquitectura y desarrollo de aplicaciones Componente Modificación de componentes y atributos después de la instalación Desarrollador modificable Suscriptor y desarrollador modificables Bloqueado Membrete • Todos los atributos excepto Nombre de membrete Vista de lista • Todos los atributos • excepto Nombre exclusivo de vista Nombre exclusivo de vista Formato de página • Todos los atributos excepto Nombre de formato de página • Nombre de formato de página • Nombre Activo Proceso de negocio • Nombre Configuración de sitio remoto Todos los atributos excepto Nombre de sitio remoto • Nombre de sitio remoto Reporte • Todos los atributos • excepto Nombre exclusivo del reporte Nombre exclusivo del reporte • Incorporar previamente en • la página • Nombre de S-Control Tipo Conjunto de permisos • • • • • • Tipo de registro • • Descripción Etiqueta Permisos de objeto personalizados Permisos de campos personalizados Configuración de acceso a la clase de Apex Configuración de acceso a la página de Visualforce Descripción Etiqueta de tipo de registro S-Control • • • • • Contenido Descripción Codificación Nombre de archivo Etiqueta Recurso estático • • Descripción Archivo Tabulador • • Descripción Codificación • • • • 29 Mobile Ready Estilo de la ficha • Nombre de membrete • Nombre • Nombre de ficha Arquitectura y desarrollo de aplicaciones Componente Modificación de componentes y atributos después de la instalación Desarrollador modificable Suscriptor y desarrollador modificables • • • Con barra lateral Altura Etiqueta S-Control Vínculo personalizado a la página de bienvenida Tipo URL Anchura Traducción • Todos los atributos Regla de validación • • Descripción Formula de condición de error Ubicación del error Mensaje de error • • • • • • • • Activo Bloqueado • Nombre de regla Componente de Visualforce • • • • Versión de API Descripción Etiqueta Marca • Nombre Página de Visualforce Versión de API Descripción Etiqueta Marca • Nombre Emails adicionales Plantilla de email Dirección del remitente del email Destinatarios • Descripción • • • • Alerta de email de flujo de trabajo • • • • Actualización del campo de • flujo de trabajo • • Descripción Valor de campo Valor de fórmula • • Búsqueda Notificar a la persona asignada • Nombre Mensaje saliente de flujo de • trabajo • • • Descripción URL de extremo Campos para enviar Enviar Id. de sesión • Usuario para enviar como • Nombre 30 Arquitectura y desarrollo de aplicaciones Los componentes se agregan automáticamente a paquetes Componente Desarrollador modificable Regla de flujo de trabajo • • • Suscriptor y desarrollador modificables Descripción Criterios de evaluación Criterios de reglas Tarea del flujo de trabajo Bloqueado • Activo • Nombre de regla • • • • Asignar a Comentarios Fecha de vencimiento Notificar a la persona asignada Prioridad Tipo de registro Estado • Asunto • • • Los componentes se agregan automáticamente a paquetes Al agregar componentes a su paquete, se agregan algunos componentes relacionados automáticamente si es necesario. Por ejemplo, si agrega una página de Visualforce a un paquete que hace referencia a un controlador personalizado, esa clase de Apex también se agrega. Para comprender qué componentes se pueden incluir automáticamente, revise la siguiente lista: Cuando agrega este componente: Estos tipos de componentes de puede incluir de forma automática: Acción Objeto de destino de acción (si es un objeto personalizado), campo de destino de acción, tipo de registro de acción, valores de campo predeterminados, formato de acción y cualquier campo personalizado al que hacen referencia los valores predeterminado o el formato de acción en el objeto de destino Instantánea analítica Reportes Clase de Apex Campos personalizados, objetos personalizados y otras clases de Apex a las que se hace referencia de forma explícita, así como cualquier otra cosa a la que se hace referencia directamente en la clase de Apex Nota: Si una clase de Apex hace referencia a una etiqueta personalizada y esa etiqueta tiene traducciones, debe empaquetar de forma explícita los idiomas individuales que desee con el fin de que esas traducciones se incluyan. Desencadenador de Apex Campos personalizados, objetos personalizados y cualquier clase de Apex a la que se hace referencia de forma explícita, así como cualquier otra cosa a la que se hace referencia directamente en el desencadenador de Apex Tipo de artículo Campos personalizados, el formato de página predeterminado Formato compacto Campos personalizados Aplicaciones personalizadas Fichas personalizadas (incluyendo fichas Web), documentos (almacenados como imágenes en la ficha), carpeta de documentos 31 Arquitectura y desarrollo de aplicaciones Los componentes se agregan automáticamente a paquetes Cuando agrega este componente: Estos tipos de componentes de puede incluir de forma automática: Botón o vínculo personalizado Campos personalizados y objetos personalizados Campo personalizado Objetos personalizados Formatos de página de inicio personalizados Componentes de página de inicio personalizados en el formato Configuración personalizada Motivos de colaboración de Apex, nuevos cálculos de colaboración de Apex, desencadenadores de Apex, botones o vínculos personalizados, campos personalizados, vistas de lista, formatos de página, tipos de registro, reglas de validación Objeto personalizado Campos personalizados, reglas de validación, formatos de página, vistas de lista, botones personalizados, vínculos personalizados, tipos de registro, motivos de colaboración de Apex, nuevos cálculos de colaboración de Apex y desencadenadores de Apex Nota: • • Los motivos de colaboración de Apex no están disponibles en extensiones. Una vez instaladas y empaquetadas, solo se instalan las vistas de lista pública desde una aplicación. Si un objeto personalizado tiene cualquier vista de lista personalizada que desea incluir en su paquete, asegúrese de que la vista de lista es accesible para todos los usuarios. Ficha personalizada Objetos personalizados (incluyendo todos sus componentes), s-controls y páginas de Visualforce Tablero Carpetas, reportes (incluyendo todos sus componentes), s-controls y páginas de Visualforce Documento Carpeta Plantilla de email Carpeta, membrete, campos personalizados y documentos (almacenados como imágenes en el membrete o la plantilla) Conjunto de campos Cualquier campo al que se hace referencia Página flexible Cualquier acción rápida asociada Ficha Página flexible (Flexible Page) Página flexible Flujo Objetos personalizados, campos personalizados, clases de Apex y páginas de Visualforce Carpeta Todo el contenido de la carpeta Formato de página Botones personalizados, vínculos personalizados, s-controls y páginas de Visualforce Tipo de registro Asignaciones de tipo de registro, formato compacto Reporte Carpeta, campos personalizados, tipos de reporte personalizado y custom s-controls S-Control Campos personalizados y objetos personalizados Traducción Elementos traducidos para el idioma seleccionado en cualquier componente en el paquete Regla de validación Campos personalizados (a los que se hace referencia en la fórmula) 32 Arquitectura y desarrollo de aplicaciones Comportamiento especial de los componentes en paquetes Cuando agrega este componente: Estos tipos de componentes de puede incluir de forma automática: Páginas de Visualforce Clases de Apex utilizadas como controladores personalizados, componentes personalizados de Visualforce ,y conjuntos de campos a los que se hace referencia Regla de flujo de trabajo Todas las alertas de flujo de trabajo, las actualizaciones de campo, los mensajes salientes y las tareas relacionados; también si la regla de flujo de trabajo está diseñada por un objeto personalizado, se incluye el objeto personalizado automáticamente Nota: Algunos componentes de paquete, como reglas de validación o tipos de registro, podrían no aparecer en la lista de componentes del paquete pero están incluidos e instalados con los otros componentes. Comportamiento especial de los componentes en paquetes Al crear una aplicación para la distribución, es importante considerar cómo afectan los paquetes a su aplicación y sus componentes. Utilice la siguiente información para ayudarle a determinar qué incluir en sus paquetes, cómo diseñar su aplicación y cómo distribuir sus paquetes (gestionados o no gestionados). Nota: • • • Para obtener más información sobre las propiedades de cada componente en paquetes, consulte la tabla de propiedades de componentes en paquetes. Para obtener más información sobre los atributos de cada componente en paquetes, consulte la tabla de atributos de componentes. Los nombres de componentes deben ser exclusivos dentro de una organización. Para garantizar que sus nombres de componentes no entran en conflicto con los de la organización de un instalador, utilice un paquete gestionado para que todos sus nombres de componentes incluyan su prefijo de espacio de nombres. Instantánea analítica Los desarrolladores de paquetes gestionados deben considerar las implicaciones de introducir instantáneas analíticas que hagan referencia a reportes lanzados en una versión anterior del paquete. Si el suscriptor ha eliminado el reporte o lo ha trasladado a una carpeta personal, la instantánea analítica que haga referencia al reporte no se instalará, aunque la página Instalación de paquete indique que sí. Asimismo, si el suscriptor ha modificado el reporte, ese reporte puede devolver resultados que afecten a la información que muestra la instantánea analítica. Una práctica recomendada es que el desarrollador lance una instantánea analítica y los reportes relacionados en la misma versión. Como el usuario que interviene está seleccionado por el suscriptor, algunas asignaciones de campos de instantáneas analíticas podrían dejar de ser válidas si el usuario que interviene no tiene acceso a los campos de origen o de destino. Clases o desencadenadores de Apex Cualquier Apex que se incluya como parte de un paquete debe tener como mínimo un 75% de cobertura de prueba acumulada. Cada desencadenador debe contar también con alguna cobertura de prueba. Cuando carga su paquete en AppExchange, se ejecutan todas las pruebas para garantizar que se realizan sin errores. Además, todas las pruebas se ejecutan cuando el paquete se instala en la organización del instalador. El instalador puede decidir si desea o no instalar el paquete si falla alguna prueba. Sugerencia: Para evitar conflictos de nomenclatura, Salesforce recomienda utilizar paquetes gestionados para todos los paquetes que contengan Apex. De este modo, todos los objetos de Apex contienen su prefijo de espacio de nombres. Por ejemplo, si hay una clase de Apex denominada MyHelloWorld y el espacio de nombres de su organización es OneTruCode, se hará referencia a la clase como OneTruCode.MyHelloWorld. 33 Arquitectura y desarrollo de aplicaciones Comportamiento especial de los componentes en paquetes Tenga en cuenta las siguientes consideraciones cuando incluya Apex en su paquete: • Los paquetes gestionados reciben un espacio de nombres exclusivo. Este espacio de nombres se antepone automáticamente a sus nombres de clases, métodos, variables, etc., lo que ayuda a evitar nombres duplicados en la organización del instalador. • En una única transacción, solo puede hacer referencia a 10 espacios de nombres exclusivos. Por ejemplo, supongamos que tiene un objeto que ejecuta una clase en un paquete gestionado cuando se actualiza el objeto. A continuación, esa clase actualiza un segundo objeto, que a su vez ejecuta una clase diferente en un paquete diferente. Aunque el primer paquete no accediera directamente al segundo paquete, como ocurre en la misma transacción, se incluye en el número de espacios de nombres a los que se accede en una única transacción. • Si está exponiendo métodos como servicios Web, incluya documentación detallada para que los suscriptores puedan escribir código externo que active su servicio Web. • Si una clase de Apex hace referencia a una etiqueta personalizada y esa etiqueta tiene traducciones, debe empaquetar de forma explícita los idiomas individuales que desee con el fin de que esas traducciones se incluyan en el paquete. • Si hace referencia a un objeto de colaboración de un objeto personalizado (como MyCustomObject__share) en Apex, esto agregará una dependencia de modelo de colaboración a su paquete. Debe establecer el nivel de acceso predeterminado de colaboración de toda la organización para el objeto personalizado como Privado con el fin de que otras organizaciones instalen su paquete correctamente. • El código incluido en una clase o desencadenador de Apex que forme parte de un paquete gestionado se confundirá automáticamente y no podrá visualizarse en una organización de instalación. Las únicas excepciones son métodos declarados globales, lo que significa que las firmas de los métodos pueden visualizarse en una organización de instalación. • Puede utilizar la anotación desaprobado en Apex para identificar métodos, clases, excepciones, enumeraciones, interfaces y variables global a los que ya no se puede hacer referencia en las versiones posteriores del paquete gestionado en el que residen. Esto es de utilidad cuando reelabora el código de paquetes gestionados a medida evolucionan los requisitos. Después de cargar otra versión de paquete como Gestionado y editado, los nuevos suscriptores que instalen la versión de paquete más reciente no podrán ver los elementos desaprobados, aunque los elementos siguen funcionando para los suscriptores y las integraciones de API existentes. • Cualquier Apex incluida en un paquete no gestionado que haga referencia explícitamente a un espacio de nombres no se podrá cargar. • El código Apex que haga referencia a Categorías de datos no se podrá cargar. Motivos de colaboración de Apex Los motivos de colaboración de Apex pueden agregarse directamente a un paquete, pero solo están disponibles para objetos personalizados. Formatos compactos Cuando empaqueta un formato compacto, no se incluyen las asignaciones del tipo de registro. Los suscriptores o instaladores de un paquete que contiene un formato compacto deben volver a crear sus asignaciones de tipo de registro en su organización. Aplicaciones conectadas • • • Los suscriptores o instaladores de un paquete no pueden eliminar una aplicación conectada por sí misma; únicamente pueden desinstalar su paquete. Un desarrollador puede eliminar una aplicación conectada después de cargar un paquete como Gestionado y editado. La aplicación conectada se eliminará en la organización del suscriptor durante una actualización de paquete. Si actualiza una aplicación conectada y la incluye en una nueva versión de paquete, al actualizar ese paquete en una organización de cliente actualizará la aplicación conectada existente. Si realiza una actualización mediante envío de un paquete que contenga una aplicación conectada cuyo ámbito de OAuth o intervalos de IP hayan cambiado con respecto a la versión anterior, la actualización fallará. Se trata de una 34 Arquitectura y desarrollo de aplicaciones • • Comportamiento especial de los componentes en paquetes función de seguridad para bloquear a los usuarios no autorizados y que no tengan un acceso amplio a la organización de cliente mediante la actualización de un paquete instalado. Un cliente todavía puede realizar una actualización mediante consulta del mismo paquete; esto se permite porque se realiza con el conocimiento y consentimiento del cliente. Puede agregar una aplicación conectada existente (es decir, una creada antes de Summer ‘13) a un paquete gestionado. También puede combinar aplicaciones conectadas nuevas y existentes en el mismo paquete gestionado. Para aplicaciones conectadas creadas antes de Summer ‘13, la URL de instalación existente seguirá siendo válida hasta que empaquete y cargue una nueva versión. Una vez cargue una nueva versión del paquete con una aplicación conectada actualizada, la URL de instalación dejará de funcionar. Campos personalizados • • • Los suscriptores pueden agregar, modificar o eliminar los valores de campos de listas de selección de campos personalizados. Un desarrollador debería considerar detenidamente esto cuando haga referencia de manera explícita a un valor de lista de selección en el código. El desarrollador puede agregar o eliminar valores de listas de selección. Durante la actualización de un paquete, no se instalan nuevos valores de listas de selección en la organización del suscriptor para campos existentes. Todos los valores de listas de selección eliminados por el desarrollador siguen estando disponibles en la organización del suscriptor. Los desarrolladores pueden agregar campos personalizados obligatorios y necesarios para todos a paquetes gestionados siempre que tengan valores predeterminados. Los campos de tipo numeración automática y los campos obligatorios no se pueden agregar después de que se haya cargado el objeto en un paquete gestionado y editado. Etiquetas personalizadas Si se traduce una etiqueta, el idioma debe incluirse explícitamente en el paquete para que las traducciones se incluyan en el paquete. Los suscriptores pueden sustituir la traducción predeterminada de una etiqueta personalizada. Objetos personalizados • • Si un desarrollador habilita los atributos Permitir reportes o Permitir actividades en un objeto personalizado empaquetado, la organización del suscriptor también tendrá habilitadas estas funciones durante una actualización. Una vez habilitados en un paquete gestionado y editado, el desarrollador y el suscriptor no podrán deshabilitar estos atributos. Las sustituciones de botones y vínculos estándar también se pueden empaquetar. Tipos de reportes personalizados Un desarrollador puede modificar un tipo de reporte personalizado en un paquete gestionado después de que se haya editado, y agregar nuevos campos. Los suscriptores reciben automáticamente estos cambios cuando instalan una nueva versión del paquete gestionado. Sin embargo, los desarrolladores no pueden eliminar objetos o campos del tipo de reporte una vez se haya editado el paquete. Configuración personalizada • Si una configuración personalizada se incluye en un paquete gestionado y la Visibilidad se especifica como Protegida, la configuración personalizada no se incluirá en la lista de componentes del paquete de la organización del suscriptor. Todos los datos de la configuración personalizada se ocultarán al suscriptor. Fichas personalizadas • El Estilo de la ficha de una ficha personalizada debe ser exclusivo en su aplicación. Sin embargo, no tiene que ser exclusivo en la organización donde esté instalado. El estilo de una ficha personalizada no entrará en conflicto con una ficha personalizada existente del entorno del instalador. 35 Arquitectura y desarrollo de aplicaciones • • Comportamiento especial de los componentes en paquetes Para proporcionar nombres a fichas personalizadas en diferentes idiomas, desde Configuración, haga clic en Personalizar > Nombres de ficha y etiquetas > Renombrar fichas y etiquetas. Los suscriptores no pueden modificar fichas personalizadas de un paquete gestionado. Portal de clientes y portal de socios Los paquetes que hagan referencia a campos de portal de clientes o portal de socios son compatibles. El suscriptor que instale el paquete deberá tener habilitado el portal respectivo para instalar el paquete. Componentes del tablero Los desarrolladores de paquetes gestionados deben considerar las implicaciones de introducir componentes del tablero que hagan referencia a reportes lanzados en una versión anterior del paquete. Si el suscriptor ha eliminado el reporte o lo ha trasladado a una carpeta personal, el componente del tablero que haga referencia al reporte se omitirá durante la instalación. Asimismo, si el suscriptor ha modificado el reporte, ese reporte puede devolver resultados que afecten a la información que muestra el componente del tablero. Una práctica recomendada es que el desarrollador lance un tablero y los reportes relacionados en la misma versión. Divisiones • • • • • Cuando se habilitan divisiones en un objeto personalizado de un paquete, la organización suscriptora deberá tener habilitada la función de divisiones para instalar el paquete. Establecer el filtro de división en un reporte no causa una dependencia. El ajuste se omite cuando se instala en la organización del suscriptor. Resumir según el campo de división del objeto (por ejemplo, División de cuentas) en un reporte causa una dependencia. Si el campo de división del objeto de un reporte se incluye como columna y la organización del suscriptor no admite divisiones en el objeto, entonces la columna se omitirá durante la instalación. Si instala un tipo de reporte personalizado que incluya un campo de división de objeto, como una columna, esa columna se omitirá si la organización no admite divisiones. Dependencias de campos • • • • • Los desarrolladores y suscriptores pueden agregar, cambiar o eliminar dependencias de campos. Si el desarrollador agrega una dependencia de campos, se agregará durante la instalación a menos que el suscriptor ya haya especificado una dependencia para el mismo campo. Si un desarrollador elimina una dependencia, este cambio no se reflejará en la organización del suscriptor durante una actualización. Si el desarrollador introduce una nueva asignación de valores de listas de selección entre los campos dependientes y los campos de control, la asignación se agregará durante una actualización. Si un desarrollador elimina una asignación de valores de listas de selección, el cambio no se reflejará en la organización del suscriptor durante una actualización. Conjuntos de campos Los conjuntos de campos en paquetes instalados presentan diferentes comportamientos de combinación durante la actualización de un paquete: Si un desarrollador de paquete: Entonces en la actualización de paquete: Cambia un campo de No disponible a Disponible para El campo modificado se coloca al final del conjunto de el conjunto de campos o En el conjunto de campos campos actualizado en la columna a la que se haya agregado. Agrega un campo nuevo El campo nuevo se coloca al final del conjunto de campos actualizado en la columna a la que se haya agregado. 36 Arquitectura y desarrollo de aplicaciones Comportamiento especial de los componentes en paquetes Si un desarrollador de paquete: Entonces en la actualización de paquete: Cambia un campo de Disponible para el conjunto de El campo se elimina del conjunto de campos actualizado. campos o En el conjunto de campos a No disponible Cambia un campo de En el conjunto de campos a Disponible para el conjunto de campos (o viceversa) El cambio no se refleja en el conjunto de campos actualizado. Nota: Los suscriptores no reciben notificaciones de los cambios en sus conjuntos de campos instalados. El desarrollador debe notificar a los usuarios (a través de notas de versión de paquete u otra documentación) de cualquier cambio en los conjuntos de campos editados. La combinación permite eliminar campos de su conjuntos de campos. Una vez instalado un conjunto de campos, un suscriptor puede agregar o eliminar cualquier campo. Páginas flexibles Las vistas de lista no se incluyen de forma automática cuando empaqueta una página flexible ni se hace referencia a objetos personalizados en las propiedades de los componentes de la página flexible. Debe agregarlos manualmente. Flujos • • • • • • • • • • • • Únicamente puede empaquetar flujos activos. La versión activa del flujo se determina al hacer clic para cargar una versión del paquete. Si no hay ninguna versión activa del flujo, la carga puede fallar. Si desea actualizar un paquete gestionado con una versión distinta del flujo, active esa versión y vuelva a cargar el paquete. No necesita agregar la versión activada recientemente al paquete. No obstante, si activa por error una versión del flujo y carga el paquete, distribuirá esa versión del flujo a todo el mundo. Asegúrese de comprobar la versión que verdaderamente desea cargar. En una organización de desarrollo, no puede eliminar un flujo o versión del flujo una vez que lo haya cargado a un paquete gestionado publicado o beta. No puede eliminar componentes del flujo desde las instalaciones de paquetes gestionados en versión beta en organizaciones de desarrollo. No puede eliminar un flujo desde un paquete instalado. Para eliminar un flujo de un paquete desde su organización, primero tiene que desactivarlo, esperar 12 horas y, a continuación, desinstalar el paquete. Si tiene varias versiones de un flujo instalado a partir de múltiples paquetes no gestionados, no podrá eliminar únicamente una versión mediante la desinstalación de su paquete. Si desinstala un paquete, gestionado o no gestionado, que contenga una única versión del flujo, se eliminará todo el flujo, incluyendo todas las versiones. No se pueden incluir flujos en parches de paquetes. Un flujo activo en un paquete estará activo una vez que se instale. La versión activa anterior del flujo en la organización de destino se desactivará a favor de la versión instalada más recientemente. Todo flujo que se esté realizando basado en la versión ahora desactivada continuará ejecutándose sin interrupciones pero reflejará la versión anterior del flujo. Al actualizar un paquete gestionado en su organización, se instala una nueva versión del flujo solo si hay una versión del flujo más reciente del desarrollador. Tras varias actualizaciones, puede acabar teniendo varias versiones del flujo. Si instala un paquete que contiene varias versiones del flujo en una nueva organización de destino, solo se implementará la última versión del flujo que se haya incluido en el paquete. Si instala un flujo desde un paquete no gestionado que tenga el mismo nombre que un flujo que ya se encuentre en su organización pero un número de versión diferente, el flujo recién instalado se convertirá en la versión más reciente del flujo existente. Sin embargo, si el flujo de paquete tiene el mismo nombre y el mismo número de versión que un flujo que ya se encuentre en su organización, la instalación del paquete fallará. No puede sobrescribir un flujo. Cloud Flow Designer no puede abrir flujos instalados a partir de paquetes gestionados. 37 Arquitectura y desarrollo de aplicaciones Comportamiento especial de los componentes en paquetes Carpetas • • • • Los componentes que Salesforce almacena en carpetas, como documentos, no se pueden agregar a paquetes cuando se almacenan en carpetas personales y sin archivar. Coloque los documentos, reportes y otros componentes que Salesforce almacena en carpetas en una de sus carpetas con acceso público. Los componentes como documentos, plantillas de email, reportes o tableros se almacenan en carpetas nuevas en la organización del instalador utilizando los nombres de carpetas del editor. Proporcione a estas carpetas nombres que indiquen que forman parte del paquete. Si se instala un nuevo reporte, tablero, documento o plantilla de email durante una actualización y el suscriptor ha eliminado la carpeta que contenía el componente, la carpeta vuelve a crearse. Los componentes de la carpeta eliminada anteriormente no se restauran. El nombre de un componente incluido en una carpeta debe ser exclusivo en todas las carpetas del mismo tipo de componente, excluyendo las carpetas personales. Los componentes incluidos en una carpeta personal deben ser exclusivos únicamente en la carpeta personal. Componentes de la página de inicio Cuando empaqueta un formato de página de inicio personalizado, se agregan todos los componentes de página de inicio personalizados incluidos en el formato de página. Los componentes estándar como Mensajes y alertas no se incluyen en el paquete y no sobrescriben el componente Mensajes y alertas del instalador. Para incluir un mensaje en su formato de página de inicio personalizado, cree un componente personalizado de la ficha Inicio de tipo área HTML con su mensaje, bajo Configuración, en Personalizar > Inicio > Componentes de la página de inicio y agréguelo a su formato de página de inicio personalizado. Formatos de página de inicio Una vez instalados, sus formatos de página de inicio personalizados se enumeran con todos los formatos de página de inicio del suscriptor. Haga distinciones entre ellos incluyendo el nombre de su aplicación en el nombre del formato de página. Vistas de lista Las vistas de lista asociadas a colas no se pueden incluir en un paquete. Varias divisas • • • • • • Si un suscriptor instala un reporte o un tipo de reporte personalizado que incluye un campo de divisa de un objeto, como una columna, esa columna se omitirá si la organización del suscriptor no tiene habilitadas varias divisas. Hacer referencia al campo de divisa de un objeto en los criterios de un reporte (por ejemplo, Divisa de la cuenta) causa una dependencia. Resumir según el campo de divisa de un objeto en un reporte causa una dependencia. Utilizar una designación de divisa en un valor de criterios de reporte (por ejemplo, “Ingresos anuales iguales a GBP 100”) no causa una dependencia. El reporte genera un error cuando se ejecuta en la organización del instalador si no admite la divisa. Si el campo de divisa de un objeto de un reporte se incluye como columna y la organización del suscriptor no tiene habilitadas varias divisas, la columna se omitirá durante la instalación. Si un suscriptor instala un tipo de reporte personalizado que incluye un campo de divisa de un objeto, como una columna, esa columna se omitirá si la organización no tiene habilitadas varias divisas. Formatos de página El formato de página de la persona que carga un paquete es el formato utilizado para las organizaciones con Group Edition y Professional Edition y se convierte en el formato de página predeterminado para las organizaciones con Enterprise Edition, Unlimited Edition, Performance Edition y Developer Edition. 38 Arquitectura y desarrollo de aplicaciones Comportamiento especial de los componentes en paquetes Los formatos de página deben empaquetarse junto con tipos de registros de cortesía si el formato se va a instalar en un objeto existente. De lo contrario, los formatos de página instalados deberán aplicarse manualmente a los perfiles. Si se crean un diseño de página y un tipo de registro como resultado de la instalación de un paquete, entonces el formato de página del usuario que realiza la carga para ese tipo de registro se asigna a ese tipo de registro para todos los perfiles de la organización del suscriptor a menos que se asigne un perfil durante una instalación o actualización. Conjuntos de permisos Puede incluir conjuntos de permisos como componentes en un paquete, con los siguientes permisos y configuración de acceso: • Permisos de objeto personalizados • Permisos de campos personalizados • Acceso de clase de Apex • Acceso a la página de Visualforce Nota: Las aplicaciones asignadas y la configuración de fichas no están incluidas en los componentes del conjunto de permisos. Utilice conjuntos de permisos para instalar o actualizar un conjunto de permisos. A diferencia de la configuración de perfil, los conjuntos de permisos no sobrescriben los perfiles. Cuentas personales Los paquetes que hacen referencia a campos relacionados con cuentas personales del objeto Cuenta (por ejemplo, Es cuenta personal, Nombre, Apellidos o Título) no se pueden cargar. Valores de lista de selección • • Los suscriptores pueden cambiar el nombre o eliminar valores de campos de listas de selección. Un desarrollador debería considerar detenidamente esto cuando haga referencia de manera explícita a un valor de campo de lista de selección en Apex. Se pueden agregar o eliminar valores de campos de listas de selección en la organización del desarrollador. Tras la actualización, no se instalarán valores nuevos. Todos los valores eliminados por el desarrollador siguen estando disponibles en la organización del suscriptor hasta que el suscriptor los elimine. Configuración de perfil La configuración de perfil incluye lo siguiente para los componentes del paquete: • Aplicaciones asignadas • Configuración de fichas • Asignaciones de formatos de página • Asignaciones de tipo de registro • Permisos de objeto personalizados • Permisos de campos personalizados • Acceso de clase de Apex • Acceso a la página de Visualforce La configuración de perfil sobrescribe los perfiles existentes en la organización del instalador con permisos específicos y cambios de configuración. 39 Arquitectura y desarrollo de aplicaciones Comportamiento especial de los componentes en paquetes Tipos de registro • • • • • • Si se incluyen tipos de registro en el paquete, la organización del suscriptor debe admitir tipos de registro para instalar el paquete. Cuando se instala un nuevo valor de lista de selección, se asocia con todos los tipos de registro instalados de acuerdo con las asignaciones especificadas por el desarrollador. Un suscriptor puede cambiar esta asociación. Hacer referencia al campo de tipo de registro de un objeto en los criterios de un reporte (por ejemplo, Tipo de registro de cuenta) causa una dependencia. Resumir según el campo de tipo de registro de un objeto en los criterios de un reporte (por ejemplo, Tipo de registro de cuenta) causa una dependencia. Si el campo de tipo de registro de un objeto se incluye como columna en un reporte y la organización del suscriptor no utiliza tipos de registro en el objeto o no admite tipos de registro, entonces la columna se omitirá durante la instalación. Si instala un tipo de reporte personalizado que incluye un campo de tipo de registro de un objeto como una columna, esa columna se omitirá si la organización no admite tipos de registro o si el objeto no tiene definido ningún tipo de registro. Reportes Si un reporte incluye elementos que no se pueden empaquetar, esos elementos se omitirán o reducirán, o fallará la carga del paquete. Por ejemplo: • Se eliminan los desgloses de jerarquía de los reportes de actividades y oportunidades. • Se eliminan automáticamente los filtros de campos que no se pueden empaquetar (por ejemplo, en filtros sobre tipos de registro de objetos estándar). • La carga de paquetes falla si un reporte incluye lógica de filtro en un campo que no se puede empaquetar (por ejemplo, en filtros sobre tipos de registro de objetos estándar). • Se eliminan los valores de búsqueda en el campo Seleccionar campaña de reportes de campaña estándar. • Se eliminan los reportes de los paquetes si se han trasladado a una carpeta privada o a la carpeta Reportes públicos no archivados. • Cuando un paquete se instala en una organización que no tiene Chart Analytics 2.0: ◊ Los gráficos de combinación se reducen en lugar de eliminarse. Por ejemplo, un gráfico de columnas verticales de combinación con una línea agregada se reduce a un gráfico de columnas verticales sencillo; un gráfico de barras de combinación con barras adicionales se reduce a un gráfico de barras sencillo. ◊ Se eliminan los tipos de gráficos no admitidos, como los gráficos de anillos o de embudo. S-Control Los suscriptores únicamente pueden instalar S-Controls en paquetes no gestionados creados antes del 1 de enero de 2010. Los S-Controls se han desaprobados y han sido sustituidos por páginas de “Visualforce” en la Ayuda de Salesforce. Sistema de traducción • • Si ha habilitado el sistema de traducción y ha agregado un idioma a su paquete, los valores traducidos asociados se empaquetan automáticamente para los componentes adecuados de su paquete. Asegúrese de que ha proporcionado traducciones para todos los componentes posibles. Un instalador de su paquete puede ver qué idiomas son compatibles en la página de detalles del paquete. El instalador no necesita habilitar nada para que aparezcan las traducciones del idioma del paquete. El único motivo por el que los instaladores pueden querer habilitar el sistema de traducción es para cambiar las traducciones de los componentes no gestionados tras la instalación, sustituir traducciones de etiquetas personalizadas en un paquete gestionado o traducir los componentes a otros idiomas. 40 Arquitectura y desarrollo de aplicaciones • Componentes protegidos Si está diseñando una ampliación de paquete, puede incluir traducciones para los componentes de la ampliación pero no traducciones adicionales para componentes del paquete base. Reglas de validación Para los objetos personalizados empaquetados, las reglas de validación asociadas también se empaquetan implícitamente. Flujo de trabajo • • • • • • • • • • Salesforce impide que cargue alertas de flujo de trabajo que tengan un destinatario que sea un grupo público, usuario de socio o función. Cambie el destinatario a un usuario antes de cargar su aplicación. Durante la instalación, Salesforce sustituye ese usuario por el usuario que instala la aplicación y el instalador podrá personalizarlo según sea necesario. Salesforce impide que cargue actualizaciones de campos de flujo de trabajo que cambien un campo Propietario a una cola. Cambie el valor del campo actualizado a un usuario antes de cargar su aplicación. Durante la instalación, Salesforce sustituye ese usuario por el usuario que instala la aplicación y el instalador podrá personalizarlo según sea necesario. Salesforce impide que cargue reglas de flujo de trabajo, actualizaciones de campo y mensajes salientes que hagan referencia a un tipo de registro en un objeto estándar o gestionado instalado. Salesforce impide que cargue tareas de flujo de trabajo asignadas a una función. Cambie el campo Asignar a a un usuario antes de cargar su aplicación. Durante la instalación, Salesforce sustituye ese usuario por el usuario que instala la aplicación y el instalador podrá personalizarlo según sea necesario. Puede empaquetar reglas de flujo de trabajo y todas las acciones de flujo de trabajo asociadas, como alertas y actualizaciones de campo. Sin embargo, los desencadenadores basados en el tiempo no se incluyen en el paquete. Notifique a sus instaladores que configuren los desencadenadores basados en el tiempo que sean esenciales para su aplicación. El desarrollador puede proteger las alertas de flujo de trabajo, actualizaciones de campo, mensajes salientes y tareas. Para obtener más información sobre los componentes protegidos, consulte “Componentes protegidos” en la Ayuda de Salesforce. Los desarrolladores pueden asociar o eliminar la asociación de acciones de flujo de trabajo con una regla de flujo de trabajo en cualquier momento. Estos cambios, incluida la eliminación de asociación, se reflejan en la organización del suscriptor tras la instalación. En los paquetes gestionados, un suscriptor no puede eliminar la asociación de acciones de flujo de trabajo de una regla de flujo de trabajo si el desarrollador la asoció. El usuario que instale el paquete sustituirá las referencias a un usuario específico en acciones de flujo de trabajo, como el destinatario de email de una alerta de email de flujo de trabajo. Quizás no se puedan cargar las acciones de flujo de trabajo que hagan referencia a funciones, grupos públicos, equipos de cuentas, equipos de oportunidades o funciones de equipos de casos. Las referencias a una dirección de toda la organización, como Dirección del remitente del email de una alerta de email de flujo de trabajo, se restablecen a Usuario actual durante la instalación. En la instalación, todas las reglas de flujo de trabajo recién creadas en el paquete instalado o actualizado tienen el mismo estado de activación que en el paquete cargado. Componentes protegidos Los desarrolladores pueden marcar ciertos componentes como protegidos. Los componentes creados en una organización de suscriptor no pueden hacer referencia a componentes protegidos ni se pueden vincular los unos con los otros. Un desarrollador puede eliminar un componente protegido en una futura versión sin necesidad de preocuparse de errores en las instalaciones. Sin embargo, si se marca un componente como no protegido y se publica de forma global, el desarrollador no podrá eliminarlo. Los desarrolladores pueden marcar los siguientes componentes como protegidos en los paquetes gestionados: • • Etiquetas personalizadas Vínculos personalizados (para la página de inicio únicamente) 41 Arquitectura y desarrollo de aplicaciones • • • • Consideraciones arquitectónicas para Group Edition y Professional Edition Alertas del flujo de trabajo Actualizaciones de campos de flujo de trabajo Mensajes salientes de flujo de trabajo Tareas del flujo de trabajo Consideraciones arquitectónicas para Group Edition y Professional Edition Salesforce CRM se ofrece en cinco niveles o, también llamados, ediciones: • • • • • Group Edition (GE) Professional Edition (PE) Enterprise Edition (EE) Unlimited Edition (UE) Performance Edition (PXE) Nota: Contact Manager Edition (CME) no permite las instalaciones de paquetes con AppExchange por lo que no se va a incluir en este documento. Si va a vender su aplicación a los clientes de Salesforce que ya tienen, es importante entender las diferencias entre estas ediciones porque condicionan el diseño de la aplicación. Lo más práctico es pensar en ellos como clústeres, GE/PE y EE/UE/PXE, ya que las ediciones agrupadas de esa manera comparten las mismas funcionalidades. Por ejemplo, es posible que solo le interese la compatibilidad con las ediciones EE/UE/PXE si la aplicación necesita determinados objetos y funciones que no están disponibles en GE/PE. Además, en lugar de contar con una solución única para todas las ediciones, tiene una oferta por niveles. Esta consistiría en una solución básica para los clientes de GE/PE y una avanzada para los de EE/UE/PXE que aproveche las funciones adicionales. EE/UE/PXE dispone de la funcionalidad más sólida. Estas ediciones son compatibles con las licencias de la plataforma Force.com así como con las licencias de Salesforce CRM. Si la aplicación no necesita las funciones de Salesforce CRM (por ejemplo, prospectos, oportunidades, casos, etc.), las licencias de la plataforma Force.com le aportan la máxima flexibilidad para implementar la aplicación en aquellos usuarios que, probablemente, no sean usuarios de Salesforce. Su aplicación también estará sujeta de los límites de la edición y las reglas de empaquetado. GE/PE no contiene toda la funcionalidad que puede compilar en una edición Developer Edition (DE). Por tanto, una aplicación desarrollada en su organización con DE es posible que no pueda instalarse en una organización con GE/PE. Si va a diseñar una aplicación para que funcione de forma específica en GE/PE, tendrá que tener en cuenta la diferencia entre estas ediciones. Hay varias consideraciones que debe tener en cuenta a la hora de decidir sobre la compatibilidad con estas ediciones. Las licencias de la plataforma Force.com no se pueden aprovisionar en las organizaciones con GE/PE. Esto significa que solo los usuarios de Salesforce CRM existentes podrán utilizar su aplicación. Hay algunas funciones que no están disponibles en GE/PE. Para superar estas limitaciones, hay varios permisos especiales disponibles para las aplicaciones de socios aptos. Consulte las secciones siguientes para conocer las consideraciones sobre funciones, límites y de otros tipos. • • • • • • • Funciones disponibles en Group Edition y Professional Edition Límites para Group Edition y Professional Edition Control de acceso en Group Edition y Professional Edition Uso de Apex en Group Edition y Professional Edition Acceso a API en Group Edition y Professional Edition Diseño de la aplicación para que sea compatible con varias ediciones Escenarios de diseño de ejemplo 42 Arquitectura y desarrollo de aplicaciones Funciones disponibles en Group Edition y Professional Edition Funciones disponibles en Group Edition y Professional Edition La manera más sencilla de determinar cuáles son las funciones y objetos que están disponibles en una edición concreta es consultar la tabla de comparación de ediciones. También puede buscar la compatibilidad de las ediciones con una función u objeto determinado en la ayuda online. Antes de diseñar la aplicación, es importante consultar estos recursos para poder tomar una decisión informada sobre las ediciones para las que va a realizar el diseño. Una vez que haya terminado de compilar la aplicación, se recomienda probarla. Para ello, instale el paquete en las organizaciones de prueba con las ediciones GE y PE con el fin de asegurarse de que todo funciona correctamente. En la tabla siguiente se muestran las funciones principales que son diferentes según la edición de que se trate (GE, PE y DE). Función Group Edition Professional Edition Developer Edition Activos No Disponible por un costo adicional Sí Campañas No Sí Sí Contratos No Sí Sí Pronósticos No Sí Sí Ideas No Sí Sí Productos No Sí Sí Soluciones No Sí Sí Tipos de registro No No Sí Conjuntos de permisos No No Sí Perfiles personalizados No No Sí Tipos de reportes personalizados No Sí Sí Flujo de trabajo y aprobaciones No Disponible por un costo adicional Sí Código Apex Vea la nota siguiente Vea la nota siguiente Sí Reglas de colaboración No Sí Sí API Vea la nota siguiente Vea la nota siguiente Sí Sites No No Sí Nota: Un Id. de cliente permite que la aplicación utilice la API para su integración con aplicaciones compuestas. Para obtener más información, consulte Uso de Apex en Group Edition y Professional Edition y Acceso a API en Group Edition y Professional Edition. Límites para Group Edition y Professional Edition En todas las ediciones de Salesforce hay límites con respecto al número de aplicaciones, objetos y fichas que se pueden utilizar. Para obtener más información sobre los límites de varias ediciones, consulte la tabla de límites de ediciones. 43 Arquitectura y desarrollo de aplicaciones Control de acceso en Group Edition y Professional Edition Para los socios inscritos en el programa de proveedor de software independiente (ISV), los paquetes gestionados que publiquen de forma pública en AppExchange no se tendrán en cuenta con respecto a los límites de aplicaciones, objetos o fichas de la edición de Salesforce. De esta manera, los socios de ISV no tendrán que preocuparse más sobre los errores en la instalación de los paquetes debido a que se hayan superado los límites de las aplicaciones, objetos o fichas. Esta función se activa de forma automática en cuanto la aplicación supera la revisión de seguridad. Control de acceso en Group Edition y Professional Edition Ni la edición GE ni la edición PE son compatibles con los perfiles personalizados ni con la seguridad de nivel de campo. La consecuencia es que la seguridad a nivel de campo se gestiona también por el formato de página de cada objeto. Por tanto, cuando un cliente instala su aplicación, este no podrá definir los diferentes accesos de los perfiles y deberá asegurarse de que el diseño funciona para el perfil de usuario estándar. Los conjuntos de permisos se pueden instalar en las organizaciones con GE/PE pero no se pueden actualizar. Debido a que la seguridad a nivel de campo se gestiona por el formato de página, los campos que quiera que sean visibles deben agregarse al formato de página. Esto implica que para que los campos sean accesibles a través de la API o de Visualforce, deben agregarse al formato de página. Uso de Apex en Group Edition y Professional Edition Su aplicación puede contener lógica de negocio (clases, desencadenadores, servicios de email, etc.) escrita en Apex. En general, Apex no es compatible con las ediciones GE/PE y, por tanto, no funcionará en estas. Sin embargo, si el código APEX forma parte de una aplicación de ISV y se incluye en un paquete gestionado sí puede ejectuarse en GE/PE, incluso aunque estas ediciones no sean compatibles con Apex de forma predeterminada. Debe ser un socio apto que trabaje con salesforce.com y la aplicación debe superar la revisión de seguridad. Los permisos adecuados se activarán de forma automática en cuanto supere dicha revisión. Existen algunas condiciones importantes que debe tener en cuenta para utilizar Apex en GE/PE. • • • • Los clientes de GE/PE no pueden crear ni modificar Apex en su aplicación; solo pueden ejecutar el Apex que ya exista. Su código Apex no debe depender de las funciones ni la funcionalidad que exista únicamente en DE, EE, UE o PXE; de lo contrario, la aplicación no se instalará. Si va a exponer el método Apex como servicio Web, asegúrese de utilizar REST. Las clases de Apex expuestas como servicio Web de SOAP no se pueden invocar desde una aplicación Web externa en GE/PE. En GE/PE se permite utilizar Apex para realizar llamadas de servicio Web. Por ejemplo, si va a realizar una llamada de servicio Web a un servicio Web externo, siempre y cuando el paquete gestionado esté autorizado, estas clases funcionarán en GE/PE. Acceso a API en Group Edition y Professional Edition Por lo general, el acceso a API no se puede realizar en las organizaciones con GE/PE. Sin embargo, una vez que la aplicación supere la revisión de seguridad, será apto para usar algunas API para compilar aplicaciones compuestas. • • • En la actualidad, solo las API de REST y de SOAP son compatibles con las aplicaciones para las ediciones GE y PE. También puede solicitar que una aplicación conectada se incluya en la lista blanca que permite utilizar la API de REST en las organizaciones con GE o PE. Otras API, como la API de metadatos, la API masiva y los métodos Apex expuestos al utilizar el servicio Web de SOAP siguen sin estar disponibles. Los servicios Web basados en REST se pueden activar mediante la lista blanca del consumidor de la aplicación conectada. 44 Arquitectura y desarrollo de aplicaciones • Acceso a la API de REST en Group Edition y Professional Edition Los servicios Web basados en SOAP se pueden activar mediante un token de API denominado Id. de cliente, que debe agregarse a los encabezados de SOAP en las llamadas de integración. Esta clave especial permite a la aplicación realizar llamadas correctamente a GE/PE aunque el cliente no tenga acceso a API. El Id. de cliente tiene las propiedades siguientes: 1. No puede utilizar el id. de cliente con el kit de herramientas de AJAX en JavaScript personalizado, S-controls ni en ningún sitio de la aplicación donde su valor quede expuesto al cliente final. 2. Para los fines de desarrollo, las organizaciones con GE/PE creadas a través del portal de socios no necesitan el id. de cliente. 3. El id. de cliente solo otorgará acceso a GE/PE a la API de SOAP y no a la API de metadatos. La API de metadatos permite crear de forma dinámica varios componentes que normalmente crearía en la configuración. Por ejemplo, no se podría crear un campo personalizado de forma dinámica en GE/PE, ni siquiera con el token de API. En esta tabla se muestran las API accesibles cuando se utilizan las ediciones GE/PE y el método de acceso. API Acceso a GE/PE Servicios Web (SOAP) Sí, con token Métodos de Apex expuestos como servicios Web (SOAP) No Servicios Web (REST) Sí, con inclusión en la lista blanca del consumidor de la aplicación conectada Métodos de Apex expuestos como servicios Web (REST) Sí, con inclusión en la lista blanca del consumidor de la aplicación conectada API de REST de Chatter Sí API de metadatos No API masiva No Herramienta Data Loader (utiliza servicios Web de SOAP) No, no se puede establecer el token Acceso a la API de REST en Group Edition y Professional Edition La API de REST de Force.com constituye una API de servicios Web potente, práctica y sencilla para interactuar con Force.com. Los socios que reúnan los requisitos pueden solicitar a salesforce.com que activen la aplicación para las llamadas de la API de REST a las organizaciones con GE/PE. Para obtener el acceso a la API de REST, es necesario cumplir con las condiciones siguientes: • • • Acceso al portal de socios: si es nuevo, obtenga la información necesaria e inscríbase en uno de los programas de socios de proveedor de software independiente (ISV). Superación de la revisión de seguridad: todas las aplicaciones inscritas en AppExchange o en el programa OEM deben someterse a una revisión de seguridad periódica. Acceso a la edición Developer Edition de Salesforce: si no dispone ya de acceso a una organización con DE, puede obtener la edición Developer Edition para socios desde el portal de socios. Para solicitar el token de la API de REST, haga lo siguiente: 1. Cree una nueva aplicación conectada desde su organización con DE. Inicie sesión en salesforce.com con su cuenta de desarrollador. En Configuración (Setup), haga clic en Crear > Aplicaciones (Create > Apps) y, en la sección de aplicaciones conectadas, haga clic en Nuevo. 45 Arquitectura y desarrollo de aplicaciones Diseño de la aplicación para que sea compatible con varias ediciones Nota: Se recomienda encarecidamente hacer esto en una organización que vaya a utilizar durante mucho tiempo, por ejemplo, una donde compile el paquete gestionado o la organización de gestión de Trialforce (TMO). 2. Ingrese la información necesaria y haga clic en Guardar (Save). Al guardar la aplicación, se le indicarán la clave de consumidor y la pregunta secreta de consumidor que la aplicación utiliza para comunicarse con Salesforce. 3. Envíe un caso desde el portal de socios y proporcione su Id. de organización con DE y las credenciales correspondientes a la aplicación conectada. Después, evaluaremos su solicitud y activaremos el permiso adecuado. Una vez esté hecho, recibirá una notificación de caso nuestra. Espere 24 horas para que el permiso esté activado por completo. Su client_id (o clave de consumidor) y client_secret (o pregunta secreta de consumidor) se comprobarán con la información que envíe a través del caso durante la autenticación de OAuth. Si coinciden, el sistema le permitirá comunicarse con las ediciones GE/PE. Nota: • • Este permiso es exclusivo para la API de REST. No activa su aplicación para el uso de la API de servicios Web de SOAP, la API masiva, la API de metadatos, etc. para GE/PE. Este permiso se aplica únicamente a su organización. No se activa la API en la organización con GE/PE. Diseño de la aplicación para que sea compatible con varias ediciones La compatibilidad con varias ediciones abre las puertas a la posibilidad de editar versiones de la aplicación más avanzadas que sean compatibles con funciones mejores que se encuentran en EE, UE y PXE. Existen dos tecnologías que permiten lograrlo: la primera utiliza paquetes de ampliación y la segunda saca partido al Apex dinámico. Ambas presentan ventajas, por lo que se recomienda conocerlas antes de diseñar la aplicación. Compatibilidad con varias ediciones mediante un paquete de ampliación En este enfoque se utiliza un paquete gestionado base que contiene la funcionalidad de la aplicación fundamental, es decir, las funciones compatibles en las ediciones GE/PE. Después, se utiliza un segundo paquete gestionado, o paquete de ampliación, que amplía y mejora el paquete base. El paquete de ampliación agrega otras funciones compatibles en EE/UE/PXE. Por ejemplo, imagine que tiene una aplicación dedicada a los almacenes que controla el inventario. Una ampliación de esta aplicación podría incluir un flujo de trabajo, que no está disponible en la versión para Group Edition. Los clientes de las ediciones Group Edition y Professional Edition pueden instalar la aplicación para almacenes básica mientras que los demás pueden instalar el paquete básico y la ampliación que contiene los componentes del flujo de trabajo. 46 Arquitectura y desarrollo de aplicaciones Compatibilidad con varias ediciones mediante Apex dinámico Ilustración 14: Uso de un paquete base y de ampliación para que la aplicación sea compatible con varias ediciones Gracias a los paquetes de ampliación podrá evitar que haya varios conjuntos de código y podrá conseguir ventas incrementales entre sus clientes. La actualización de un cliente solo requerirá la instalación del paquete de ampliación. El proceso para crear un paquete de ampliación es el siguiente: 1. Cree su paquete gestionado base que contiene las funciones compatibles con las ediciones GE/PE. 2. Instale su paquete gestionado base en una organización aparte con la edición de desarrollo DE. 3. En esta organización, cree el paquete de ampliación que incluya la funcionalidad adicional compatible en GE/PE. Puede usar como referencia el paquete gestionado base para evitar la duplicación de funcionalidades. Cualquier componente que haga referencia al paquete gestionado base activará automáticamente este paquete para que sea un paquete de ampliación. Debido a que el paquete de ampliación depende del paquete base, es importante dedicar tiempo al diseño de la aplicación y de las interfaces entre los paquetes. Por ejemplo, si el paquete de ampliación necesita llamar a una clase de Apex en el paquete base, deberá asegurarse de que la clase de Apex es global. También es importante tener en cuenta el ciclo de vida completo de la aplicación. Por ejemplo, si quiere agregar funciones nuevas, estas deberían incluirse en el paquete adecuado. Las actualizaciones que se introduzcan en el paquete base no deberían romper el paquete de ampliación. Compatibilidad con varias ediciones mediante Apex dinámico Si se utilizan Apex dinámico, SOQL dinámico y DML dinámico, se podrá crear un paquete gestionado para todas las ediciones con las que quiera que la aplicación sea compatible sin tener que usar paquetes de ampliación. De esta manera, el comportamiento de la aplicación puede cambiar de forma dinámica según las funciones disponibles en la edición del cliente. Esto resulta útil cuando se diseña una aplicación con la intención de que sea compatible con varias ediciones. Asegúrese de que Apex, los flujos de trabajo, etc. de su paquete no contienen referencias muy específicas a funciones que no sean compatibles con las ediciones GE/PE. Un ejemplo podría ser agregar un campo personalizado en un objeto estándar no compatible, como Campañas, o realizar una referencia de Apex a funciones como la gestión de territorios o de varias divisas. Cuando se hace referencia a una función en el paquete no compatible con las ediciones GE/PE, esta dependencia del paquete provocará que la instalación no se realice correctamente. 47 Arquitectura y desarrollo de aplicaciones Escenarios de diseño de ejemplo para Group Edition y Professional Edition En su lugar, si utiliza Apex dinámico para comprobar primero si estas funciones están disponibles antes de hacer referencia a ellas, podrá instalar el paquete gestionado en GE/PE. Lo importante que debe tener en cuenta es que debe codificar el Apex dinámico de manera que sea compatible con ambos casos de uso. De esta manera, si el cliente no tiene una función u objeto específico, la aplicación funcionará de todas maneras. Escenarios de diseño de ejemplo para Group Edition y Professional Edition Los escenarios que se describen a continuación le ayudarán a saber cuándo debe compilar para GE/PE y cómo debe hacerlo. Escenario 1: Quiere compilar una aplicación que utilice los tipos de registro y el flujo de trabajo Debido a que los tipos de registro y el flujo de trabajo son funciones que no se encuentran en las ediciones GE o PE, tendrá que decidir si quiere que haya compatibilidad con GE/PE. Si es así, puede compilar un paquete gestionado base que no incluya ni tipos de registro ni flujo de trabajo. Después de cargar este paquete gestionado en un estado editado, puede instalarlo en otra organización con DE para comenzar a compilar la extensión. Su extensión puede agregar tipos de registro y flujos de trabajo que se instalarán y podrán aprovecharlas sus clientes de EE, UE y PXE. Escenario 2: Quiere compilar una aplicación con 80 objetos personalizados y 25 fichas personalizadas Normalmente, esto sería un problema para GE y PE debido a su límite de objetos y fichas. Sin embargo, si hace que su aplicación esté disponible en AppExchange, no contará para los límites de objetos, fichas y aplicaciones personalizados. Por ello, aunque su aplicación tenga 80 objetos personalizados y 25 fichas personalizadas, se instalará y funcionará con normalidad en GE y en PE. Escenario 3: Quiere compilar una aplicación que realice llamadas de Apex a un servicio Web Apex no suele ejecutarse en GE/PE, pero si obtiene la autorización del paquete gestionado durante la revisión de seguridad, el Apex se ejecutará según lo previsto. Por ello, para este escenario hay que compilar la llamada de Apex para invocar su servicio Web externo y, después, incluir esta clase en el paquete. Escenario 4: Quiere compilar una aplicación que aproveche la función Campañas Al igual que sucedía en el escenario 1, Campañas es una función que, de forma predeterminada, no es compatible con GE ni con PE. PE tiene la opción de adquirir la función Campañas como complemento pero para este escenario dispone de dos opciones. • • Opción 1: compile un paquete gestionado base que no haga referencia a la función Campañas. Una vez hecho, cárguelo e instálelo en otra organización con DE para compilar la funcionalidad Campañas como un paquete de ampliación. A partir de este momento, los clientes con ediciones GE y PE (sin la función Campañas) pueden instalar la base, mientras que el resto también pueden instalar la ampliación para obtener otras funciones. Opción 2: esto puede requerir solo un paquete si utiliza Apex dinámico como la única referencia a la función Campañas (tal y como se ha descrito antes) y garantizar que su paquete no incluye un campo personalizado en la campaña. Después, su aplicación podrá instalarse en GE, y en ediciones superiores, y si la función Campañas se encuentra en la edición de su cliente, su Apex dinámico podrá manipular las campañas según lo previsto. Escenario 5: Quiere compilar una aplicación compuesta donde recibe llamadas de API entrantes Tiene una aplicación alojada aparte que quiere integrar con Salesforce, por lo que necesitará realizar llamadas de API a los clientes con ediciones GE/PE. De un modo predeterminado, esto no es posible, pero si es un socio apto, puede solicitar un token de API especial que permita la integración de sus llamadas de SOAP con GE/PE. Solo necesitará incrustar el Id. de cliente en el encabezado de SOAP del código externo. 48 Arquitectura y desarrollo de aplicaciones Concepto de dependencias Concepto de dependencias Las dependencias de paquetes se crean cuando un componente hace referencia a otro componente, permiso o preferencia que se necesita para que el componente sea válido. Force.com realiza el seguimiento de algunas dependencias, incluyendo: • • • Se activan dependencias de la organización, como varias divisas o campañas Dependencias específicas de componentes, como tipos de registro o divisiones concretas Referencias a objetos o campos estándar y personalizados Los paquetes, las clases de Apex, los desencadenadores de Apex, los componentes de Visualforce y las páginas de Visualforce pueden tener dependencias en los componentes dentro de una organización. Estas dependencias se registran en la página Mostrar dependencias. Las dependencias son importantes para los paquetes porque cualquier dependencia en un componente de un paquete se considera una dependencia del paquete completo. Nota: La organización de un instalador debe cumplir todos los requisitos de dependencia enumerados en la página Mostrar dependencias o la instalación fallará. Por ejemplo, la organización del instalador debe tener divisiones activadas para instalar un paquete que haga referencia a divisiones. Las dependencias son importantes para las clases y los desencadenadores de Apex debido a que cualquier componente en el que depende una clase o un desencadenador debe estar incluido con la clase o el desencadenador cuando el código se desarrolla o incluye en paquetes. Además de las dependencias, también se muestra el ámbito de operación en la página Mostrar dependencias. El ámbito de operación es una tabla en la que se enumeran las operaciones de lenguaje de manipulación de datos (DML) (por ejemplo insert o merge) que una secuencia de comandos de Apex se ejecuta en un objeto especificado. El ámbito de operación se puede utilizar cuando se instala una aplicación para determinar todo el alcance de las operaciones de base de datos de la aplicación. Para ver las dependencias y el ámbito de operación de un paquete, una clase de Apex, un desencadenador de Apex o una página de Visualforce: 1. Navegue al componente adecuado desde Configuración: • • • • • Para paquetes, haga clic en Crear > Paquetes. Para clases de Apex, haga clic en Desarrollo > Clases de Apex. Para los desencadenadores de Apex en objetos estándar, haga clic en Personalizar, haga clic en el nombre del objeto y, a continuación, haga clic en Desencadenadores. Para los desencadenadores de Apex en objetos personalizados, haga clic en Crear, haga clic en el nombre del objeto y, a continuación, haga clic en Desencadenadores. Para páginas de Visualforce, haga clic en Desarrollo > Páginas. 2. Seleccione el nombre del componente. 3. Haga clic en Ver dependencias para un paquete o en Mostrar dependencias para los demás componentes. De este modo, podrá ver una lista de objetos que dependen del componente seleccionado. Si aparece una lista de los objetos dependientes, haga clic en Campos para acceder al detalle de nivel de campo del ámbito de operación. Los detalles a nivel de campo incluyen información , como si un campo está actualizado con Apex. Para obtener más información, consulte “Ámbito de operación de campo” en la Ayuda de Salesforce. Los paquetes, el código de Apex y las páginas de Visualforce pueden depender de muchos componentes, entre otros: • Definiciones de campos personalizados 49 Arquitectura y desarrollo de aplicaciones • • • • • Creación de aplicaciones empaquetadas con Chatter Fórmulas de validación Reportes Tipos de registro Apex Páginas y componentes de Visualforce Por ejemplo, si una página de Visualforce incluye una referencia a un campo de divisa múltiple, como {!contract.ISO_code}, a que la página de Visualforce tenga una dependencia de divisa múltiple. Si un paquete contiene esta página de Visualforce, también tiene una dependencia de divisa múltiple. Cualquier organización que desee instalar este paquete debe tener la opción de divisa múltiple activada. Creación de aplicaciones empaquetadas con Chatter Los objetos, la configuración de los campos y el historial de esta correspondientes a Chatter se pueden incluir en paquetes. No obstante, solo se puede realizar el seguimiento del campo de un objeto si se realiza el seguimiento de este mismo. Por ejemplo, puede crear un nuevo campo personalizado en el objeto estándar Cuenta pero solo se podrá hacer el seguimiento del campo si ha habilitado el seguimiento de noticias en tiempo real en Cuentas. Cuando se desarrollan aplicaciones que utilizan Chatter, es importante tener en cuenta que puede ser que algunas organizaciones no tengan Chatter habilitado. De forma predeterminada, cuando se cargan las aplicaciones de Chatter, el paquete solo está disponible para las organizaciones que tienen Chatter habilitado. Puede cambiar este comportamiento y permitir que las organizaciones instalen el paquete aunque no tengan Chatter. Tenga en cuenta lo siguiente: • • • Debe utilizar un paquete gestionado. Los paquetes no gestionados que incluyen la funcionalidad Chatter solo se pueden instalar en organizaciones con Chatter habilitado. Las operaciones de DML y las llamadas de SOSL y SOQL producirán una excepción de tiempo de ejecución si la organización del suscriptor no tiene Chatter habilitado. Debe captar y manejar las excepciones de Apex que se produzcan como consecuencia de la ausencia de la función Chatter. Estas excepciones son del tipo REQUIRED_FEATURE_MISSING_EXCEPTION para las llamadas de SOSL y SOQL. Para las llamadas de DML, debe comprobar el código de estado REQUIRED_FEATURE_MISSING específico en una excepción de DML. Cuando cargue el paquete, cancele la selección de la casilla de verificación de Chatter obligatoria (se selecciona de forma automática si tiene una referencia de Apex a Chatter). Nota: Si no se puede cancelar la selección de la casilla de verificación de Chatter obligatoria, será porque algún componente del paquete tiene un requisito especial para Chatter. Esto puede suceder, por ejemplo, si incluye en un paquete un tipo de reporte personalizado que se basa en Chatter. Si no se puede deshabilitar la casilla de verificación de Chatter obligatoria, el paquete solo se podrá instalar en aquellas organizaciones que tengan Chatter habilitado. En el ejemplo siguiente se intenta publicar en noticias en tiempo real y obtener las noticias en tiempo real de un usuario. Si Chatter no está habilitado en la organización, el código captará la excepción REQUIRED_FEATURE_MISSING. Tenga en cuenta que se trata de un ejemplo de código incompleto y no funciona. public void addFeedItem(String post, Id objId) { FeedItem fpost = new FeedItem(); // Get the parent ID of the feed fpost.ParentId = objId; fpost.Body = post; try{ insert fpost; } catch (System.DmlException e) { for (Integer i = 0; i < e.getNumDml(); i++) { // Chatter not endabled, do not insert record System.assertEquals(StatusCode.REQUIRED_FEATURE_MISSING, e.getDmlType(i)); 50 Arquitectura y desarrollo de aplicaciones Aspecto de Salesforce coincidente System.Debug('Chatter not enabled in this organization:' + e.getDMLMessage()); } } } public List<NewsFeed> getMyFeed() { List<NewsFeed> myfeed; try{ myfeed = [SELECT Id, Type, CreatedById, CreatedBy.FirstName,CreatedBy.LastName, CreatedDate, ParentId, Parent.Name,FeedItemId, Body, Title, CreatedById, LinkUrl, (SELECT Id, FieldName, OldValue, NewValue FROM FeedTrackedChanges ORDER BY Id DESC), (SELECT Id, CommentBody, CreatedDate, CreatedById, CreatedBy.FirstName, CreatedBy.LastName FROM FeedComments ORDER BY CreatedDate DESC, ID DESC LIMIT 10) FROM NewsFeed ORDER BY CreatedDate DESC, ID DESC LIMIT 20]; } catch(System.RequiredFeatureMissingException e){ // The above has returned an empty NewsFeed // Chatter is not enabled in this organization myfeed = new List<NewsFeed>{}; System.Debug('Chatter not enabled in organization:' + e.getMessage()); } return myfeed; } Aspecto de Salesforce coincidente Las aplicaciones que muestran un aspecto parecido a la interfaz de usuario de Salesforce resultan enseguida familiares a los usuarios y estos las encuentran más fáciles de utilizar. La forma más sencilla de adoptar el aspecto de la interfaz de usuario de Salesforce en la aplicación es utilizar Visualforce. Cuando use un controlador estándar con una página de Visualforce, la página nueva tomará el estilo de la ficha estándar el objeto asociado en Salesforce. Para obtener más información, consulte Uso de estilos de Salesforce en la guía del desarrollador de Visualforce. Desarrollo de la documentación de las aplicaciones Salesforce recomienda la publicación de la aplicación en AppExchange con los tipos de documentación siguientes: Opción Configurar Puede incluir una opción Configurar para los instaladores. Esta opción puede establecer un vínculo con los detalles de instalación y configuración, como: • Oferta de servicio externo de una aplicación compuesta • Configuración de aplicación personalizada La opción Configurar se incluye en su paquete como un vínculo personalizado. Puede crear un vínculo personalizado para sus formatos de página de inicio y agregarlo a su paquete. 1. Cree un vínculo personalizado a una URL que contenga información de configuración o una página de Visualforce que implemente la configuración. Cuando cree su vínculo personalizado, defina las propiedades de visualización como Abrir en una ventana emergente separada de manera que el usuario regrese a la misma página de Salesforce cuando haya terminado. 2. Cuando cree el paquete, seleccione este vínculo personalizado en el campo Configurar vínculo personalizado de los detalles de su paquete. 51 Arquitectura y desarrollo de aplicaciones Creación de configuración de perfil personalizado Hoja de datos Proporciona a los instaladores la información fundamental que necesitan sobre la aplicación antes de su instalación. Guía de personalización y mejora Ofrece información a los instaladores sobre lo que deben personalizar después de la instalación como parte de la implementación. Ayuda personalizada Puede proporcionar ayuda personalizada para registros de objetos y campos personalizados. Creación de configuración de perfil personalizado Cuando se diseña una aplicación para AppExchange, puede crear perfiles personalizados para los distintos usuarios de la aplicación. Cada uno de estos perfiles deberá tener el nivel de acceso a su aplicación adecuado, por ejemplo, la visibilidad de fichas o la configuración de seguridad en los campos de aprobación en los objetos personalizados. Tenga en cuenta las siguientes sugerencias cuando cree perfiles personalizados para las aplicaciones que va a publicar: • • • • Dé a cada perfil personalizado un nombre significativo con el que no haya dudas de que el perfil corresponde a la aplicación. Por ejemplo, si va a crear una aplicación de recursos humanos con el nombre “RRHH2GO”, podría denominar el perfil personalizado “RRHH2GO Gestor de aprobación” dirigido a los gestores que aprueban las solicitudes. Si los perfiles personalizados tienen una jerarquía, asegúrese de que el nombre indica el lugar de la jerarquía donde se encuentra ese perfil. Por ejemplo, el perfil de un gestor de nivel experto puede tener el nombre “RRHH2GO Gestor de aprobación de nivel 2”. No dé nombres a los perfiles personalizados que puedan tener interpretaciones distintas en otras organizaciones. Por ejemplo, “RRHH2GO Gestor de aprobación de nivel 2” es un nombre de perfil más adecuado que “Sr. Gestor”. El perfil Descripción (Description) se muestra al usuario que instala su aplicación. Proporcione una descripción significativa para cada perfil personalizado de esos usuarios. Cuando incluya una aplicación en un paquete, puede incluir también los perfiles personalizados. Las configuraciones de los perfiles se aplican a perfiles existentes en la organización del suscriptor en la instalación o actualización. Solo se aplican permisos relacionados con nuevos componentes creados como parte de la instalación o actualización. La configuración de seguridad asociada a los objetos estándares y a los objetos personalizados existentes en la organización del instalador no se verá afectada. Como alternativa, puede utilizar los conjuntos de permisos para evitar sobrescribir los permisos en los perfiles del suscriptor y para mantener el control de la configuración de permisos durante el proceso de actualización. Los conjuntos de permisos contienen un subconjunto de ajustes de configuración de acceso, que incluye los permisos de objetos, los permisos de campos, los accesos a la clase de Apex y el acceso a la página de Visualforce. Se trata de los mismos permisos que están disponibles en los perfiles. Puede agregar un conjunto de permisos como un componente en un paquete. Nota: En los paquetes, las configuraciones de fichas y aplicaciones asignadas no se incluyen en los componentes del conjunto de permisos. Acerca de los conjuntos de permisos y la configuración de perfil Los desarrolladores pueden usar conjuntos de permisos o configuración de perfil para otorgar permisos y otra configuración de acceso en un paquete. Al decidir si usar conjuntos de permisos, configuración de perfil o una combinación de ambos, tenga en cuenta las semejanzas y las diferencias. 52 Arquitectura y desarrollo de aplicaciones Acerca de los conjuntos de permisos y la configuración de perfil Comportamiento Conjuntos de permisos Configuración de perfil ¿Qué permisos y configuración se incluyen? • • • • ¿Se pueden actualizar en paquetes gestionados? Sí. Las configuraciones de los perfiles se aplican a perfiles existentes en la organización del suscriptor en la instalación o actualización. Solo se aplican permisos relacionados con nuevos componentes creados como parte de la instalación o actualización. ¿Pueden los suscriptores modificarlos? Los suscriptores pueden modificar los conjuntos de permisos en paquetes sin gestionar pero no en paquetes gestionados. Sí. ¿Se pueden duplicar o crear? Sí. Sin embargo, si un suscriptor duplica un conjunto de permisos o crea uno basado en un conjunto de permisos predefinidos, no se actualizará en actualizaciones posteriores. Solo se actualizan los conjuntos de permisos que se incluyen en un paquete. Sí. Los suscriptores pueden duplicar cualquier perfil que incluya permisos y configuraciones relacionados con los componentes predefinidos. ¿Incluyen permisos de objeto estándar? No. Además, no puede incluir permisos No. de objetos para un objeto personalizado en una relación principal-detalle donde el principal es un objeto estándar. ¿Incluyen permisos de usuario? No. No. ¿Se incluyen en el asistente de instalación? No. Los suscriptores deben asignar los conjuntos de permisos después de la instalación. Sí. Las configuraciones de los perfiles se aplican a perfiles existentes en la organización del suscriptor en la instalación o actualización. Solo se aplican permisos relacionados con nuevos componentes creados como parte de la instalación o actualización. ¿Cuáles son los requisitos de la licencia de usuario? Un conjunto de permisos solo se instala si la organización del suscriptor tiene al menos una licencia de usuario que coincida con el conjunto de permisos. Por ejemplo, los conjuntos de permisos con la licencia de usuario de Salesforce Ninguna. En la organización de un suscriptor, la instalación sustituye a la configuración de perfil, no a sus licencias de usuario. Permisos de objeto personalizados Permisos de campos personalizados Acceso de clase de Apex Acceso a la página de Visualforce • • • • • Nota: Los conjuntos de permisos incluyen aplicaciones • • asignadas y configuración de • fichas, pero estas configuraciones no se pueden empaquetar como componentes del conjunto de permisos. 53 Aplicaciones asignadas Configuración de fichas Asignaciones de formatos de página Asignaciones de tipo de registro Permisos de objeto personalizados Permisos de campos personalizados Acceso de clase de Apex Acceso a la página de Visualforce Arquitectura y desarrollo de aplicaciones Comportamiento Descripción general de las aplicaciones conectadas Conjuntos de permisos Configuración de perfil Platform no se instalan en una organización que no tenga licencias de usuario de Salesforce Platform. Si un suscriptor adquiere posteriormente una licencia, deberá volver a instalar el paquete para obtener los conjuntos de permisos asociados con la licencia recién adquirida. Los conjuntos de permisos sin licencia de usuario siempre están instalados. Si asigna un conjunto de permisos sin licencia de usuario, todos sus permisos y ajustes activados deben ser autorizados por la licencia del usuario o fallará la asignación. ¿Cómo se asignan a los usuarios? Los suscriptores deben asignar los conjuntos de permisos predefinidos después de la instalación del paquete. Las configuraciones de perfil se aplican a perfiles existentes. Mejores prácticas • • • Utilice conjuntos de permisos además de los perfiles del paquete para que sus suscriptores puedan añadir fácilmente nuevos permisos de usuarios de aplicación existentes. Si los usuarios necesitan acceder a aplicaciones, fichas, formatos de página y tipos de registro, no utilice conjuntos de permisos como el modelo exclusivo de concesión de permisos para su aplicación. Las aplicaciones asignadas y la configuración de fichas están disponibles en la interfaz de configuración de permisos de usuario, pero no se incluyen en los componentes del conjunto de permisos. Cree conjuntos de permisos empaquetados que otorgan acceso a los componentes personalizados en un paquete pero no componentes estándar de Salesforce. Descripción general de las aplicaciones conectadas Permisos de usuario necesarios Para gestionar aplicaciones: “Personalizar aplicación” Para ver aplicaciones: “Ver parámetros y configuración” Una aplicación conectada consiste en una aplicación que se integra con salesforce.com mediante el uso de API. Las aplicaciones conectadas utilizan los protocolos SAML y OAuth estándares para autenticar, proporcionar un inicio de sesión único y tokens para su uso con las API de Salesforce. Además de las funciones estándares de OAuth, las aplicaciones conectadas permiten a los administradores establecer varias políticas de seguridad y controlar de forma explícita quién puede utilizar las aplicaciones. Las aplicaciones conectadas comienzan cuando un desarrollador define los metadatos de OAuth de la aplicación, incluyendo: • • • • Información de contacto y descripción básica de la aplicación conectada Los ámbitos de OAuth y la URL de devolución de llamada de la aplicación conectada Intervalos IP opcionales donde se puede ejecutar la aplicación conectada Información opcional acerca de las políticas móviles que la aplicación conectada puede reforzar 54 Arquitectura y desarrollo de aplicaciones Creación de una aplicación conectada A cambio, al desarrollador se le proporciona un Id. de cliente de OAuth y una pregunta secreta de cliente para la aplicación conectada. El desarrollador podrá después empaquetar la aplicación y proporcionarla a un administrador de Salesforce. Existen dos modos de implementación: • • La aplicación se crea y utiliza en la misma organización. Se trata del caso normal para los departamentos de TI, por ejemplo. La aplicación se crea en una organización y se instala en otras organizaciones. Es el modo que las entidades con varias organizaciones o un proveedor de software independiente eligen para utilizar aplicaciones conectadas. Los administradores pueden instalar la aplicación conectada en su organización y utilizar perfiles, conjuntos de permisos y restricciones de intervalos de direcciones IP para controlar qué usuarios pueden acceder a la aplicación. La gestión se realiza desde una página de detalles de la aplicación conectada. Los administradores pueden también desinstalar la aplicación conectada e instalar una versión más reciente. Cuando se actualice la aplicación, el desarrollador puede notificar a los administradores sobre la disponibilidad de la nueva versión de la aplicación. Nota: Los paquetes administrados de Salesforce como son los que se usan para las aplicaciones móviles de Chatter no se pueden desinstalar. Se actualizan de forma automática cuando lo hace la sesión del siguiente usuario. Creación de una aplicación conectada Para crear una aplicación conectada, siga los pasos que se indican a continuación: 1. Desde Configuración, haga clic en Crear > Aplicaciones. 2. En la secciónAplicaciones conectadas, haga clic en Nueva (New). La información necesaria para crear una aplicación conectada está dividida en las siguientes partes: • • • • • Información básica API (Activar configuración de OAuth) Configuración de aplicación Web Configuración de aplicación móvil Configuración de aplicación de lienzo Cuando haya finalizado la introducción de la información, haga clic en Guardar para guardar su nueva aplicación. Ahora puede publicar su aplicación, realizar más modificaciones o eliminarla. Si utiliza OAuth, el almacenamiento de su aplicación le proporciona dos nuevos valores que la aplicación utiliza para comunicarse con Salesforce: • Clave de consumidor: Valor empleado por el consumidor para identificarse en Salesforce. También denominado client_id en OAuth 2.0. • Pregunta secreta de consumidor: Pregunta secreta utilizada por el consumidor para establecer la propiedad de la clave de consumidor. También denominado client_secret en OAuth 2.0. Información básica Especifique información básica acerca de su aplicación en esta sección, incluyendo el nombre, el logotipo y la información de contacto de la aplicación. 1. Ingrese el nombre de la aplicación conectada. Este nombre aparece en la lista de aplicaciones conectadas. Nota: El nombre debe ser completamente exclusivo en su organización. No puede reutilizar un nombre existente o el nombre de una aplicación conectada eliminada. 55 Arquitectura y desarrollo de aplicaciones Creación de una aplicación conectada 2. El nombre de la API se utiliza al hacer referencia a la aplicación desde un programa. El valor predeterminado es una versión del nombre sin espacios. Únicamente se permiten letras, números y guiones bajos, así que deberá modificar el nombre predeterminado si el nombre de la aplicación original contiene cualquier otro carácter. 3. Proporcione el email de contacto que salesforce.com debe utilizar para hacer contacto con usted o con su equipo de atención al cliente. Esta dirección no se proporciona a los administradores que instalan la aplicación. 4. Proporcione el teléfono de contacto de salesforce.com en el que podamos contactarle en caso necesario. Este número no se proporciona a los administradores que instalan la aplicación. 5. Ingrese una URL de imagen de logotipo para que se muestre su logotipo en la lista de aplicaciones conectadas y en la página de consentimiento que los usuarios ven cuando realizan la autenticación. La URL debe utilizar HTTPS y el logotipo no puede tener más de 125 píxeles de alto y 200 píxeles de ancho. El logotipo predeterminado es una nube. También puede seleccionar un logotipo entre los ejemplos a su disposición tras hacer clic en Seleccione uno de nuestros logotipos de muestra (Choose one of our sample logos). Entre estos se incluyen los de aplicaciones de salesforce.com, aplicaciones de terceros y formas estándares. 6. Ingrese una URL de icono para que se muestre un logotipo en la página de aprobación de OAuth que los usuarios vean la primera vez que utilicen la aplicación. El logotipo debe tener 16 píxeles de alto y ancho sobre un fondo blanco. Los logotipos de ejemplo también están disponibles para los iconos. 7. Si hay una página Web con más información sobre la aplicación, proporcione una URL de información. 8. Ingrese una descripción para que se muestre en la lista de aplicaciones conectadas. Hasta el invierno de 2014, la URL de inicio y la URL de inicio de Mobile se definían en esta sección. Ahora, estos campos se encuentran en las secciones Configuración de aplicación Web (Web App Settings) y Configuración de aplicación móvil (Mobile App Settings) que se describen a continuación. API (Activar configuración de OAuth) Esta sección controla cómo se comunica su aplicación con Salesforce. Seleccione Activar configuración de OAuth para configurar ajustes de autenticación. 1. Esta es la URL de devolución de llamada (extremo) a la que Salesforce devuelve las llamadas en su aplicación durante OAuth; es la redirect_uri (uri de redirección) de OAuth. 2. Si utilice el flujo de JWT de OAuth, seleccione Utilizar firmas digitales (Use Digital Signatures). Si la aplicación utiliza un certificado, haga clic en Seleccionar archivo (Choose File) y seleccione el archivo de certificado. 3. Agregue todos los ámbitos de OAuth compatibles a Ámbitos de OAuth seleccionados (Selected OAuth Scopes). Estos ámbitos hacen referencia a permisos otorgados por el usuario que ejecuta la aplicación conectada y van seguidos por su nombre de token de OAuth entre paréntesis: Valor Descripción api Permite el acceso a la cuenta actual en la que ha iniciado sesión el usuario mediante las API, como API de REST y API masiva. Eso incluye también chatter_api, que permite acceder a recursos de la API de REST de Chatter. chatter_api Solamente permite el acceso a los recursos de la API de REST de Chatter. full Permite acceder a todos los datos a los que puede acceder el usuario que ha iniciado sesión. completo no devuelve un token de actualización. Debe solicitar expresamente el ámbito refresh_token para obtener un token de actualización. id Solo permite el acceso al servicio de URL de identidad. refresh_token Permite que se devuelva un token de actualización en caso de que pueda recibir uno. visualforce Permite el acceso a las páginas de Visualforce. web Permite la capacidad de utilizar access_token en la Web. Esto incluye también Visualforce, lo que permite acceder a páginas de Visualforce. 56 Arquitectura y desarrollo de aplicaciones Creación de una aplicación conectada Si su organización ha seleccionado la opción No se necesita aprobación de usuario para usuarios de esta organización en su acceso remoto anterior a la versión Spring ’12, los usuarios en la misma organización así como aquella en la que se ha creado la aplicación aún tienen aprobación automática para la aplicación. La casilla de verificación de solo lectura No se necesita aprobación de usuario para usuarios de esta organización está seleccionada para mostrar esta condición. Para las aplicaciones conectadas, el procedimiento recomendado después de crear una aplicación es que los administradores instalen la aplicación y luego establezcan Usuarios autorizados (Permitted Users) como Usuarios aprobados por el administrador (Admin-approved users). Si no se ha seleccionado la opción de acceso remoto en un principio, no aparece la casilla de verificación. Configuración de aplicación Web Ingrese una URL de inicio para su aplicación con el fin de dirigir a sus usuarios a una ubicación específica después de su autenticación. Si no ingresa un valor para la URL de inicio, se enviarán a los usuarios a la página de inicio predeterminada de la aplicación cuando finalice la autenticación. Si la aplicación conectada que está creando es una aplicación de lienzo, no necesita ingresar un valor para este campo. El campo URL de aplicación de lienzo contiene la URL que se activa para la aplicación conectada. Si su aplicación conectada va a utilizar un proveedor de servicio SAML, seleccione Habilitar SAML (Enable SAML). Ingrese los valores de Id. de entidad (Entity Id), URL de ACS (ACS URL), Tipo de asunto (Subject Type), Formato de Id. de nombre (Name ID Format) y Emisor (Issuer) disponibles para su proveedor de servicio. Seleccione Certificado de proveedor de servicios si el proveedor de servicio le proporciona un certificado de seguridad. Examine su sistema para el certificado. Esto solo es necesario si piensa iniciar sesión en Salesforce por el proveedor de servicio y el proveedor de servicio firma sus solicitudes SAML. Importante: Si carga un certificado, todas las solicitudes SAML deben estar firmadas. Si no se carga ningún certificado, se aceptan todas las solicitudes SAML. Configuración de aplicación móvil Si la aplicación es móvil, ingrese la URL de inicio de Mobile para dirigir a los usuarios a una ubicación específica cuando se accede a la aplicación desde un dispositivo móvil. Si no ingresa una URL de inicio de Mobile, se enviará a los usuarios a la URL de inicio definida en Configuración de aplicación Web. Si la aplicación conectada que está creando es una aplicación de lienzo, no necesita ingresar un valor para este campo. El campo URL de aplicación de lienzo contiene la URL que se activa para la aplicación conectada. El SDK de Salesforce Classic aplica automáticamente la protección de PIN (http://developer.force.com/mobilesdk). También puede implementarla manualmente mediante la lectura del objeto mobile_policies desde la URL de identidad del usuario. Si la aplicación la activa, seleccione Protección de PIN (Pin Protect) para proporcionar a un administrador la opción de configurar el tiempo de inactividad de la sesión y la longitud del PIN para aplicaciones móviles después de instalar la aplicación conectada. Nota: Si elimina la integración de Mobile de una versión nueva de una aplicación conectada existente, dicha integración dejará de estar incluida en cualquier versión de la aplicación conectada. Por ejemplo, imagine que publica un paquete que contiene la versión 1.0 de la aplicación conectada con integración de Mobile. Después, elimine la integración de Mobile de la aplicación, vuelva a empaquetarla y publíquela como la versión 1.1. Si un cliente instala el paquete anterior con la versión 1.0 en este punto, la aplicación conectada de la versión 1.0 no contendrá la integración de Mobile. Configuración de aplicación de lienzo 1. Si su aplicación conectada se va a exponer como una aplicación de lienzo, seleccione Lienzo de Force.com (Force.com Canvas). 2. Ingrese la URL de aplicación de lienzo en la aplicación de terceros. El usuario se dirigirá a esta URL cuando haga clic en el vínculo hacia su aplicación de lienzo. 3. Seleccione un Método de acceso. Esto especifica cómo inicia la aplicación de lienzo el flujo de autenticación de OAuth. 57 Arquitectura y desarrollo de aplicaciones • Modificación, empaquetado o eliminación de una aplicación conectada Solicitud firmada (POST) (Signed Request [POST]): se utiliza la autenticación de OAuth, pero cuando el administrador instala la aplicación de lienzo, permite implícitamente el acceso para los usuarios. Por lo tanto, no se pedirá al usuario que permita el acceso a su información de usuario a terceros. Cuando utilice este método de acceso, la autenticación se publicará directamente en la URL de la aplicación de lienzo. Si su aplicación de lienzo utiliza una autenticación por solicitud firmada, asegúrese de no agregar Realice solicitudes en su nombre en cualquier momento (Perform requests on your behalf at any time) a Ámbitos de OAuth seleccionados (Selected OAuth Scopes). La autorización por solicitud firmada nunca devuelve un token de actualización, aunque se seleccione este valor de campo. • Flujo Web OAuth (GET) (OAuth Webflow [GET]): se utiliza la autenticación de OAuth y se pide al usuario que permita que la aplicación externa acceda a su información. Cuando utiliza este método de acceso, la aplicación de lienzo debe iniciar el flujo de autenticación de OAuth. 4. En Ubicaciones (Locations), seleccione dónde va a aparecer la aplicación de lienzo a los usuarios. Nota: Algunas opciones no aparecen en todas las organizaciones. La atención al cliente sobre las aplicaciones de lienzo de Force.com en el publicador y en las noticias en tiempo real de Chatter está disponible a través de un programa piloto y en todas las organizaciones nuevas con Development Edition. Para obtener información sobre cómo activarla en su organización, haga contacto con salesforce.com. • • • • • • Noticias en tiempo real de Chatter (Chatter Feed): la aplicación de lienzo puede aparecer como un elemento de noticias en tiempo real de Chatter. Ficha de Chatter (Chatter Tab): la aplicación de lienzo aparece en la lista de navegación de la aplicación en la ficha Chatter. Abrir CTI (Open CTI): la aplicación de lienzo aparece en la herramienta de control de llamada. Si se selecciona esta opción, deberá especificar la aplicación de lienzo en el archivo de definición de su aplicación de lienzo para que aparezca. Publicador (Publisher): la aplicación de lienzo puede aparecer como una acción de publicador global. Consola de Salesforce (Salesforce Console): la aplicación de lienzo aparece en el pie de página o en las barras laterales de una consola de Salesforce. Si se selecciona esta opción, debe elegir dónde se va a mostrar la aplicación de lienzo en una consola; para ello, agréguela como un componente de consola personalizado. Página de Visualforce (Visualforce Page): la aplicación de lienzo puede aparecer en una página de Visualforce. Si agrega un componente <apex:canvasApp> para exponer una aplicación de lienzo en una página de Visualforce, asegúrese de seleccionar esta ubicación para la aplicación de lienzo; de lo contrario, recibirá un error. 5. Seleccione Crear acciones automáticamente (Create Actions Automatically) para crear una acción global para la aplicación de lienzo. Para crear una acción global para la aplicación de lienzo, debe seleccionar Editor (Publisher) en Ubicación (Location); de lo contrario, no se creará ninguna acción global. También puede crear la acción manualmente en otra ocasión. Modificación, empaquetado o eliminación de una aplicación conectada Después de crear una aplicación conectada, puede modificarla, empaquetarla o eliminarla. Las aplicaciones conectadas tienen nombres exclusivos que no se pueden reutilizar aunque se elimine la aplicación correspondiente de la organización. Modificación de una aplicación conectada Puede actualizar una aplicación conectada en cualquier momento. En Configuración (Setup), haga clic en Crear > Aplicaciones (Create > Apps). Haga clic en el nombre de una aplicación conectada en la lista para abrir la página de detalles de la aplicación. Haga clic en Edit (Modificar) para que aparezca la página de modificación donde puede realizar cambios. Guarde sus cambios haciendo clic en Guardar (Save). Después de crear la aplicación, puede especificar intervalos de direcciones IP haciendo clic en Nuevo en Intervalos IP. Los intervalos de IP funcionan con OAuth y no con SAML, así que debe especificar las direcciones que pueden acceder a la aplicación sin que haya que autenticar al usuario. Ingrese una dirección IP válida en el campo Dirección IP inicial (Start IP Address) y una dirección IP superior en el campo Dirección IP final (End IP Address). Puede ingresar varios intervalos 58 Arquitectura y desarrollo de aplicaciones Instalación de una aplicación conectada discontinuos haciendo clic en Nuevo para cada intervalo. Una vez instalada la aplicación, el administrador de cada organización puede aprobar u omitir los intervalos configurando las restricciones de IP. Después de crear la aplicación, puede especificar atributos personalizados mediante un clic en Nuevo (New) en Atributos personalizados (Custom Attributes). Los atributos personalizados se utilizan para especificar los metadatos de SAML o los parámetros de OAuth que se leen durante el tiempo de ejecución de OAuth. Cada atributo personalizado debe tener una clave exclusiva y utilizar campos disponibles desde el menú Insertar campo (Insert Field). Los administradores pueden sobrescribir los atributos personalizados. Empaquetado de una aplicación conectada Después de crear una aplicación conectada o una nueva versión de una aplicación existente, empaquétela para ponerla a disposición de los usuarios en otras organizaciones de Salesforce. Puede agregar una aplicación conectada a un paquete gestionado de la misma manera que otros componentes, y junto con ellos, como por ejemplo los objetos personalizados, las páginas de Visualforce o las clases de Apex. Esto facilita la distribución de una aplicación conectada a otras organizaciones de Salesforce. Las aplicaciones conectadas, como componentes que se pueden incluir en paquetes, también puede aprovechar los beneficios de todas las demás funciones de los paquetes gestionados: inclusión en la lista de AppExchange, actualizaciones mediante envío, secuencias de comandos de Apex posteriores a la instalación, gestión de licencias y compatibilidad del suscriptor mejorada. Nota: Solo puede incluir en un paquete una aplicación conectada desde una organización con Developer Edition. Eliminación de una aplicación conectada Para eliminar una aplicación conectada, haga clic en el nombre de una aplicación conectada en la lista de aplicaciones. Haga clic en Eliminar en la página de modificación y confirme haciendo clic en Eliminar de nuevo. Aunque la aplicación se elimina de la lista, no podrá volver a utilizar su nombre. Si elimina una aplicación conectada que se ha incluido en un paquete, la aplicación seguirá estando disponible en el paquete hasta que actualice el paquete. Instalación de una aplicación conectada La aplicación conectada se instala mediante la instalación de un paquete gestionado que incluye la aplicación conectada como componente. Nota: Las aplicaciones conectadas creadas antes del verano de 2013 se pueden instalar mediante la URL de instalación, siempre y cuando la aplicación conectada no esté actualizada. Una vez que el desarrollador cargue una nueva versión del paquete con una aplicación conectada actualizada, la URL de instalación dejará de funcionar. Visualización de detalles de la aplicación conectada La página Detalles de la aplicación conectada muestra su información acerca de la aplicación conectada, incluidos su versión y sus ámbitos. Puede modificar y comprobar el uso de la aplicación conectada y también asociar perfiles y permisos a esta aplicación. • • • • Haga clic en Modificar (Edit) para realizar cambios en la aplicación en la página Modificar de la aplicación conectada. Haga clic en Descargar metadatos (Download Metadata) para descargar los metadatos del proveedor de servicios específicos de su configuración. Este botón solo se muestra si su organización está activada como un proveedor de identidad y solo con aplicaciones conectadas que utilicen SAML. Haga clic en Ver uso de OAuth (View OAuth Usage) para ver el reporte de uso de las aplicaciones conectadas de su organización. Haga clic en Gestionar perfiles (Manage Profiles) para seleccionar los perfiles para esta aplicación en la página Asignación de perfil de aplicación. Seleccione los perfiles para tener acceso a la aplicación. 59 Arquitectura y desarrollo de aplicaciones Gestión de una aplicación conectada Importante: Esta opción no aparecerá si la política de OAuth para Usuarios permitidos se establece como Todos los usuarios pueden autorizarse porque esta opción no es necesaria cuando los usuarios pueden autorizarse a sí mismos. • Haga clic en Gestionar conjuntos de permisos para seleccionar los conjuntos de permisos para los perfiles de esta aplicación en la página Asignación del conjunto de permisos de aplicación. Seleccione los conjuntos de permisos para tener acceso a la aplicación. Importante: Esta opción no aparecerá si la política de OAuth para Usuarios permitidos se establece como Todos los usuarios pueden autorizarse porque esta opción no es necesaria cuando los usuarios pueden autorizarse a sí mismos. • Haga clic en Nuevo en Atributos SAML de proveedor de servicio para crear nuevos pares de clave/valor de atributo. También puede modificar o eliminar los atributos existentes. Si ha seleccionado Usuarios aprobados por el administrador (Admin-approved users) para el valor Usuarios permitidos (Permitted Users) de la página Modificar de la aplicación conectada, solo los usuarios que pertenezcan al menos a uno de los perfiles o conjuntos de permisos seleccionados podrán iniciar la aplicación. Si en su lugar ha seleccionado Todos los usuarios, no se tendrán en cuenta los conjuntos de permisos y perfiles. Gestión de una aplicación conectada Para ver y actualizar propiedades de una aplicación conectada, busque la aplicación bajo Configuración, en Gestionar aplicaciones > Aplicaciones conectadas (Manage Apps > Connected Apps) y haga clic en la opción Modificar (Edit) situada junto a ellas. Para ver y actualizar los detalles de la aplicación, haga clic en el nombre de la aplicación. Nota: Las sesiones se actualizan de forma automática en frecuencias que van desde cada 15 minutos hasta cada 12 horas mientras el usuario se encuentra en la aplicación en función del valor de tiempo de espera de la sesión establecido para su organización. El usuario no se suele dar cuenta de estas actualizaciones. Modificación de una aplicación conectada La página de modificación de aplicaciones conectadas permite modificar parámetros de configuración y permisos para una aplicación conectada Para modificar la configuración de una aplicación conectada, siga los pasos que se indican a continuación: 1. Desde Configuración, haga clic en Gestionar aplicaciones > Aplicaciones conectadas (Manage Apps > Connected Apps). 2. Haga clic en Modificar junto al nombre de la aplicación que desea modificar. (Para revisar la información sobre una aplicación en la página de detalles de la aplicación conectada, haga clic en el nombre de la aplicación). • Hay políticas de OAuth disponibles para cada aplicación conectada. ◊ Usuarios autorizados determina quién puede iniciar la aplicación. - Todos los usuarios pueden autorizarse (All Users may self-authorize): predeterminado. Cualquiera de la organización puede autorizar la aplicación. Eso significa que cada usuario debe aprobar la aplicación la primer vez que accede a ella. - Los usuarios aprobados por el administrador se han autorizado previamente (Admin-approved users are pre-authorized): el acceso está limitado a los usuarios con un perfil o conjunto de permisos especificado pero estos no necesitan aprobar la aplicación antes de acceder a ella. Gestione perfiles para la aplicación mediante la modificación de la lista de acceso a aplicaciones conectadas de cada perfil. Gestione los 60 Arquitectura y desarrollo de aplicaciones Modificación de una aplicación conectada conjuntos de permisos para la aplicación modificando cada lista de aplicaciones conectadas asignadas de cada uno de ellos. Nota: Si cambia de Todos los usuarios pueden autorizarse a Los usuarios aprobados por el administrador se han autorizado previamente, cualquier persona que esté utilizando la aplicación en este momento perderá su acceso a menos que pertenezca a un conjunto de permisos o perfil que haya especificado para la aplicación. ◊ Restricciones de IP (IP Restrictions) hace referencia a las restricciones de direcciones IP a las que están sujetos los usuarios de la aplicación conectada. Un administrador puede seleccionar si reforzar u omitir estas restricciones seleccionando una de las siguientes opciones. - Activar restricciones de IP (Enforce IP restrictions): predeterminado. Un usuario que ejecuta la aplicación - está sujeto a las restricciones de direcciones IP de la organización, como los intervalos de direcciones IP establecidos en el perfil de usuario. Rebaje las restricciones de IP con un factor secundario (Relax IP restrictions with second factor): un usuario que ejecute esta aplicación omite las restricciones de IP de la organización si se cumple alguna de las condiciones siguientes: - - La aplicación cuenta con intervalos de direcciones IP con lista blanca y está utilizando el flujo de autenticación OAuth del servidor Web. Solo se permiten las solicitudes procedentes de las direcciones IP con lista blanca. La aplicación no cuenta con una lista blanca de intervalos de direcciones IP, está utilizando el flujo de autenticación OAuth del servidor Web o del usuario-agente y el usuario ha completado correctamente la confirmación de identidad. Rebajar restricciones de IP (Relax IP restrictions): un usuario que ejecuta esta aplicación conectada no está sujeto a ninguna restricción de dirección IP. ◊ Los usuarios deben iniciar sesión (Require Users to Log In) especifica la frecuencia con la que un usuario debe iniciar sesión para mantener los permisos que su aplicación cliente necesita en la aplicación conectada. Debe especificar que solo necesitan iniciar sesión la primera vez que utilizan la aplicación, cada vez que la utilizan, después de un periodo de inactividad o después de un periodo determinado de tiempo. ◊ Aquí también se indican los permisos actuales de la aplicación conectada. Si su aplicación conectada es una aplicación de lienzo que utiliza una autenticación por solicitud firmada, asegúrese de lo siguiente: ◊ Establezca Usuarios permitidos como Los usuarios aprobados por el administrador se han autorizado previamente. ◊ Establezca Los usuarios deben iniciar sesión como La primera vez que utilizan esta aplicación. ◊ De acceso a los usuarios mediante perfiles y conjuntos de permisos. • • La política de nivel de sesión está disponible para todas las aplicaciones conectadas. Seleccione la sesión de alta seguridad obligatorio para que los usuarios deban ingresar un token basado en el tiempo durante el inicio de sesión para acceder a la aplicación. Hay información básica disponible para todas las aplicaciones conectadas. Sin embargo, si su aplicación es de lienzo, estos valores de campo no se utilizarán. Por el contrario, se utilizará la URL de aplicación de lienzo especificada cuando se creó la aplicación conectada. ◊ URL de inicio se utiliza si la aplicación conectada utiliza un inicio de sesión único. En este caso, establezca la URL de la página donde el usuario iniciará el proceso de autenticación. Esta ubicación aparece también en el menú switcher de la aplicación. 61 Arquitectura y desarrollo de aplicaciones Monitoreo del uso de una aplicación conectada ◊ La URL de inicio de Mobile se utiliza para dirigir a los usuarios a una ubicación específica cuando se accede a la aplicación desde un dispositivo móvil. • La configuración de la aplicación móvil está disponible para las aplicaciones conectadas móviles en las que está activada la protección por PIN. ◊ Tiempo de espera de sesión especifica cuánto tiempo debe transcurrir cuando la aplicación está inactiva antes de que ésta se autobloquee y requiere el PIN antes de continuar. Los valores disponibles son ninguno (sin bloqueo), 1, 5, 10 y 30 minutos. ◊ Longitud de Pin establece la longitud del número de identificación enviado para la confirmación de la autenticación. La longitud puede ser de 4 a 8 dígitos, ambos incluidos. • Hay atributos personalizados disponibles para todas las aplicaciones conectadas. Los desarrolladores pueden establecer metadatos de SAML personalizados o atributos de OAuth personalizados para una aplicación conectada. Los administradores pueden eliminar o modificar estos atributos. También pueden agregar otros atributos personalizados. Los atributos que los administradores han eliminado, modificado o agregado sustituyen a aquellos que han establecido los desarrolladores. Monitoreo del uso de una aplicación conectada Permisos de usuario necesarios Para gestionar aplicaciones: “Personalizar aplicación” Para ver aplicaciones: “Ver parámetros y configuración” Para ver información sobre el uso de cualquier aplicación conectada en la organización, desde Configuración, haga clic en Gestionar aplicaciones > Uso de OAuth de aplicaciones conectadas (Manage Apps > Connected Apps OAuth Usage). Aparecerá una lista de las aplicaciones conectadas e información sobre cada una de ellas. Aplicación conectada Nombre de la aplicación. Las aplicaciones conectadas que están instaladas pero que nadie las ha utilizado no figuran en la lista. Ver información de la aplicación Haga clic en Ver información de la aplicación (View App Info) para acceder a la página de detalles de la aplicación conectada. Como alternativa, si la aplicación conectada no está aún instalada, haga clic en Instalar (Install). Conteo de usuarios El número de usuarios que han ejecutado la aplicación. Haga clic en el conteo de usuarios para ver información sobre cada usuario, incluidos los datos siguientes: • Cuándo usó por primera vez la aplicación. • Cuándo usó la última vez la aplicación. • El número total de veces que ha utilizado la aplicación. En la página Uso (Usage) del usuario de la aplicación conectada, puede hacer clic en la acción Revocar (Revoke) en la fila de la persona cuyo acceso a su sesión actual desee cancelar. O bien, haga clic en el botón Revocar todo (Revoke All) situado en la parte superior de la página para cerrar la sesión de todos los que estén utilizando la aplicación conectada en ese momento. 62 Arquitectura y desarrollo de aplicaciones Desinstalación de una aplicación conectada Acción Haga clic en Bloque (Block) para finalizar todas las sesiones de usuario actuales con la aplicación conectada y bloquear todas las sesiones nuevas. El bloqueo de una aplicación no es una acción permanente. Puede hacer clic en Desbloquear (Unblock) para permitir a los usuarios que inicien sesión y accedan a la aplicación en otro momento. Desinstalación de una aplicación conectada Puede eliminar una aplicación conectada de su organización desinstalando el paquete del que forma parte. Nota: Cuando se desinstala una aplicación conectada, se eliminan los tokens de acceso y actualización de todos los usuarios de la aplicación. Eso evita que un usuario inicie la aplicación más adelante, utilizando un token de acceso existente, sin aprobar la aplicación de forma explícita. Acerca del WSDL de socio El WSDL de servicios Web de socio se utiliza para las aplicaciones cliente que se basan en metadatos y son dinámicas por naturaleza. En concreto, aunque no de forma exclusiva, resulta útil para los socios de salesforce.com que compilan aplicaciones cliente para varias organizaciones. Como se trata de una representación del modelo de datos de Salesforce que no está estrictamente tipificada y que funciona con pares de nombre-valor y valores en lugar de tipos de datos específicos, se puede utilizar para acceder a los datos dentro de cualquier organización. Este WSDL es el más adecuado para los desarrolladores de clientes que pueden hacer consultas para obtener información sobre un objeto antes de que el cliente actúe sobre este. El documento WSDL de socio solo debe descargarse y utilizarse una vez por cada versión de la API. Para obtener más información sobre el WSDL de socio, consulte el apartado sobre el uso del WSDL de socio en la guía del desarrollador de la API de SOAP. Trabajo con servicios externos Es posible que desee actualizar los datos de Salesforce cuando se producen cambios en otro servicio. Del mismo modo, quizás también quiera actualizar los datos en otro servicio (fuera de Salesforce) en función de los cambios producidos en los datos de Salesforce. Salesforce dispone de maneras de hacer ambas transacciones. Por ejemplo, puede que quiera enviar un email masivo a más contactos y prospectos de los que Salesforce permite. Para hacerlo, puede utilizar un servicio de correo externo que permita a los usuarios crear una lista de nombres y direcciones de email de destinatarios con la información de contactos y prospectos disponible en su organización de Salesforce. Una aplicación compilada en la plataforma Force.com puede conectarse con un servicio externo de muchas maneras diferentes. Por ejemplo: • • • Puede crear un campo de fórmula personalizada o vínculo personalizado que transfiera información a un servicio externo. Puede utilizar la API de Force.com para transferir datos dentro y fuera de Salesforce. Puede utilizar una clase de Apex que contenga un método de servicio Web. Antes de que cualquier página de Visualforce, activación de Apex o código de JavaScript mediante XmlHttpRequest en un S-Control o un botón personalizado pueda acceder a un sitio externo, dicho sitio debe registrarse en la página Configuración de sitio remoto o el acceso no se realizará correctamente. Para obtener información sobre el registro de componentes, consulte “Configuración de ajustes remotos” en la Ayuda de Salesforce. Advertencia: No almacene nombres de usuarios ni contraseñas dentro de cualquier servicio externo. 63 Arquitectura y desarrollo de aplicaciones Aprovisionamiento de servicios externos Aprovisionamiento de servicios externos Si su aplicación está vinculada a un servicio externo, los usuarios que instalen la aplicación deben inscribirse para utilizar el servicio. Proporcione acceso de una de las dos maneras siguientes: • • Acceso por parte de todos los usuarios activos en una organización sin que haya una necesidad real de identificar a cada uno de ellos individualmente Acceso por usuario individual donde la identificación de la persona es importante El servicio de Salesforce proporciona dos identificadores exclusivos globales para que se puedan llevar a cabo estas opciones. El id. de usuario identifica a una persona individual y es exclusivo en todas las organizaciones. Los id. de usuario no se reutilizan nunca. Del mismo modo, el id. de organización identifica a la organización de forma exclusiva. Cuando proporcione acceso a un servicio externo, no utilice direcciones de email, nombres de compañía ni nombres de usuario de Salesforce. Los nombres de usuario pueden cambiar con el tiempo y las direcciones de email y los nombres de compañía pueden estar duplicados. Si va a proporcionar acceso a un servicio externo, se recomienda seguir las directrices siguientes: • • • • • Utilice técnicas de inicio de sesión único (SSO) para identificar a los usuarios nuevos cuando utilicen el servicio. En cada punto de entrada a su aplicación (por ejemplo, un vínculo personalizado o una ficha Web), incluya el id. de usuario en la cadena de parámetro. Configure su servicio para que examine el id. de usuario con el fin de verificar que este pertenece a un usuario conocido. Incluya un id. de sesión en la cadena de parámetro para que el servicio pueda leer datos a través de la API de Force.com y validar que este usuario tiene una sesión activa y está autenticado. Ofrezca el servicio externo a los usuarios conocidos. Para los usuarios nuevos, muestre una página alternativa para recopilar la información necesaria. No almacene contraseñas de usuarios individuales. Aparte de los evidentes riesgos para la seguridad, muchas organizaciones restablecen las contraseñas con cierta regularidad, lo que requiere que el usuario actualice también la contraseña en su sistema. Se recomienda diseñar el servicio externo para utilizar el id. de usuario y de sesión para autenticar e identificar a los usuarios. Si en su aplicación es necesario realizar actualizaciones asíncronas cuando ha vencido una sesión de usuario, dedique una licencia de usuario administrador diferente para esta tarea. Protección de la propiedad intelectual Los instaladores conocen todos los detalles de los objetos personalizados, los vínculos personalizados, los reportes y todos los demás elementos instalados. Aunque esta información les permite revisar una aplicación y todos sus componentes y detectar si hubiera contenido dañino, impide que los desarrolladores protejan la propiedad intelectual. La siguiente información es importante cuando se tiene en cuenta su propiedad intelectual y su protección. • • • • Publique únicamente componentes de paquete que sean su propiedad intelectual y para los que cuente con derechos de colaboración. Una vez que los componentes estén disponibles en AppExchange, no podrá recuperarlos de las personas que los hayan instalado. La información en los componentes que incluye en paquetes y publica puede ser visible para los clientes. Tenga cuidado al agregar su código a una página de Visualforce de fórmulas o cualquier otro componente que no pueda ocultar en su aplicación. El código incluido en una clase o desencadenador de Apex que forme parte de un paquete gestionado se confundirá automáticamente y no podrá visualizarse en una organización de instalación. Las únicas excepciones son métodos declarados globales, lo que significa que las firmas de los métodos pueden visualizarse en una organización de instalación. 64 Arquitectura y desarrollo de aplicaciones • Núcleo de entorno Si una configuración personalizada se incluye en un paquete gestionado y la Visibilidad se especifica como Protegida, la configuración personalizada no se incluirá en la lista de componentes del paquete de la organización del suscriptor. Todos los datos de la configuración personalizada se ocultarán al suscriptor. Núcleo de entorno Permisos de usuario necesarios Para establecer y configurar el Núcleo de entorno: “Gestionar el Núcleo de entorno” Para conectar una organización al el Núcleo de entorno: “Conectar organizaciones al Núcleo de entorno” El Núcleo de entorno le permite ver, conectar, crear e iniciar sesión en varias organizaciones de Salesforce desde una sola ubicación. Eso puede ser especialmente conveniente si utiliza un gran número de organizaciones para negocios, desarrollo y pruebas. Debe elegir una organización como el Núcleo de entorno (u organización de núcleo) y luego puede conectar todas sus demás organizaciones (u organizaciones miembros) al Núcleo. Puede establecer el inicio de sesión único entre las organizaciones de núcleo y miembros, permitiendo a los usuarios alternar perfectamente entre ellas sin necesidad de proporcionar las credenciales cada vez. Cuando conecta una organización al Núcleo, se descubren las organizaciones relacionadas automáticamente por o que no tiene que conectarlas manualmente. Los siguientes tipos de organizaciones relacionadas se descubren automáticamente. • • • • Para cualquier organización, todas las organizaciones de sandbox creadas desde ella. Para una organización de versión, todas sus organizaciones de parche relacionadas. Para una organización de gestión de Trialforce, todas las organizaciones de origen de Trialforce se crean a partir de ella. Para una organización de gestión de licencias (LMO), que es una organización con la aplicación de gestión de licencias (LMA) instalada, cualquier organización de versión (y por lo tanto todas sus organizaciones de parche asociadas) con un paquete gestionado registrada en la LMO. Para acceder al Núcleo de entorno: 1. En el menú de aplicaciones de Force.com, haga clic en Núcleo de entorno. 2. Haga clic en la ficha Núcleo de entorno. Nota: Para averiguar la organización de Núcleo para cualquier organización miembro, en Configuración, haga clic en Perfil de la compañía > Información de la compañía (Company Profile > Company Information). El Id. de organización de la organización de Núcleo aparece en la sección Detalles de la organización. La página principal del Núcleo de entorno muestra una lista de todas las organizaciones miembros conectadas al Núcleo. Para cada organización, se muestra su nombre, su descripción, su edición, su Id. de organización, su estado de inicio de sesión único y otros detalles. Desde la ficha Núcleo de entorno (Environment Hub), puede realizar estas acciones. • • • • • Haga clic en Conectar organización para agregar otra organización. Haga clic en Crear organización (Create Organization) para crear una nueva. Haga clic en el nombre de cualquier organización para ver detalles acerca de ella, incluyendo otras organizaciones relacionadas con ella. Haga clic en Modificar junto a una organización para actualizar sus detalles. Haga clic en Eliminar junto a una organización para eliminarla del Núcleo de entorno. 65 Arquitectura y desarrollo de aplicaciones • Configuración del Núcleo de entorno Haga clic en Iniciar sesión (Login) junto a una organización para iniciar sesión en ella. Si anteriormente ha habilitado el inicio de sesión único para esa organización, se iniciará la sesión sin que tenga que proporcionar las credenciales correspondientes. Si ha agregado un número amplio de organizaciones al Núcleo de entorno, puede anular organizaciones de un tipo específico como, por ejemplo, organizaciones de desarrollo u organizaciones creadas después de una fecha determinada. Para crear una vista personalizada, haga clic en la opción Crear nueva vista (Create New View) situada en la parte superior de la página. Puede filtrar las organizaciones según varios criterios como la edición, la fecha de creación, la instancia, el origen, el estado de SSO, etc. Cada organización miembro corresponde a un objeto EnvironmentHubMember. Se trata de un objeto estándar, parecido a Cuentas o Contactos. Por tanto, puede utilizar toda la funcionalidad de la plataforma Force.com para ampliar o modificar el Núcleo de entorno, tanto a través de la interfaz de usuario como de la API. Por ejemplo, puede crear campos personalizados, configurar reglas de flujo de trabajo o definir asignaciones de usuarios y habilitar el inicio de sesión único mediante la API para cualquier organización miembro. Configuración del Núcleo de entorno Permisos de usuario necesarios Para establecer y configurar el Núcleo de entorno: “Gestionar el Núcleo de entorno” Siga estos pasos para configurar el Núcleo de entorno por primera vez. 1. Elija la organización que va a utilizar como su organización de núcleo. Esta debería ser la organización en la que la mayoría de los empleados inician sesión habitualmente. 2. Configure e implemente Mi dominio para su organización de núcleo. Se trata de un requisito para activar el Núcleo de entorno. 3. Haga contacto con el servicio de atención al cliente de salesforce.com para pedir que le activen el Núcleo de entorno para su organización de núcleo. 4. Una vez que la función está activada, inicie sesión en la organización de núcleo a través de la nueva URL de Mi dominio. 5. Modifique los perfiles o los conjuntos de permisos para asignar a los usuarios acceso a determinadas funciones en el Núcleo de entorno. a. b. c. d. En Configuración, haga clic en Gestionar usuarios > Perfiles. Haga clic en Modificar (Edit) junto al perfil correspondiente. En la página de modificación de perfiles, seleccione la configuración que va a activar. Haga clic en Guardar. En esta tabla se resume la configuración del Núcleo de entorno en la página de modificación de perfiles. Sección del perfil Configuración para el Núcleo de entorno Configuración de aplicaciones Active la aplicación personalizada del Núcleo de entorno para que esté disponible personalizadas (Custom App Settings) en el menú de aplicaciones de Force.com. Acceso a aplicación conectada (Connected App Access) La aplicación conectada del Núcleo de entorno es para uso interno únicamente y no necesita activarse para los perfiles. Acceso al proveedor de servicios (Service Provider Access) Aquí aparecerá automáticamente una nueva entrada cada vez que se active un inicio de sesión único en una organización miembro. Al activar el acceso a un proveedor de servicios, se permite el acceso de inicio de sesión único a la organización miembro correspondiente. El proveedor de servicios se denomina 66 Arquitectura y desarrollo de aplicaciones Sección del perfil Configuración del Núcleo de entorno Configuración para el Núcleo de entorno "Proveedor de servicios de [OrganizationID]", donde [OrganizationID] es el Id. de la organización miembro. Los usuarios que no tengan acceso al proveedor de servicios verán el mensaje siguiente cuando intenten iniciar sesión a través del inicio de sesión único: "El usuario [UserID] no tiene acceso al proveedor de servicios [ServiceProviderID]". Permisos administrativos (Administrative Permissions) El permiso "Gestionar el Núcleo de entorno" controla qué perfiles pueden activar, crear y modificar la configuración de inicio de sesión único para las organizaciones miembros. Además controla qué perfiles pueden crear nuevas organizaciones a partir del núcleo (a través del botón Crear organización [Create Organization]). Permisos de usuario generales (General User Permissions) El permiso "Conectar organizaciones al Núcleo de entorno" controla qué perfiles pueden conectar las organizaciones existentes al Núcleo de entorno. Permisos de objeto estándar (Standard La configuración de "miembros del núcleo" se utiliza para controlar el acceso a Object Permissions) las entidades de miembros del Núcleo de entorno del modo siguiente: • Lectura: permite ver los registros existentes del miembro del núcleo. • Creación: esta configuración no afecta a la posibilidad de crear registros del miembro del núcleo. La creación de registros se realiza mediante la conexión de una organización existente o la creación de una organización nueva desde el Núcleo de entorno. • Modificación: permite modificar varios campos en los registros de miembro del núcleo existentes (organización, descripción, etc.). Tenga en cuenta que no todos los campos son modificables, ya que la mayoría se gestiona de forma interna. • Eliminar: permite "desconectar" una organización del núcleo y eliminar su registro de miembro correspondiente y su registro de proveedor de servicios (si el inicio de sesión único se ha activado en el miembro). • Ver todos: el permiso administrativo para leer todos los registros de los miembros del núcleo, con independencia de quién los haya creado. • Modificar todos: el permiso administrativo para leer, modificar y eliminar todos los registros de los miembros del núcleo, con independencia de quién los haya creado. Además, la configuración de "invitaciones al núcleo" se utiliza para gestionar la conexión de organizaciones con el Núcleo de entorno. Cuando se active el permiso "Conectar organizaciones al Núcleo de entorno", las configuraciones de creación, lectura, actualización y eliminación también deben activarse para el objeto de "invitaciones al núcleo". De lo contrario, no pasa nada por desactivarlo. 6. Defina las asignaciones de usuarios para configurar qué usuarios son los que deberían tener acceso de inicio de sesión único a determinadas organizaciones miembro. Para obtener más información, consulte: Activación de inicio de sesión único y Definición de una asignación de usuarios de SSO. Una vez que haya completado los pasos anteriores, los usuarios que tengan el perfil adecuado podrán acceder al Núcleo de entorno al hacer clic en Núcleo de entorno (Environment Hub) en el menú Aplicación (App). Los tipos de acciones que estos puedan realizar en el Núcleo de entorno dependerá de la configuración del perfil de cada uno de ellos. 67 Arquitectura y desarrollo de aplicaciones Configuración de Mi dominio para el Núcleo de entorno Configuración de Mi dominio para el Núcleo de entorno Permisos de usuario necesarios Para configurar un nombre de dominio: “Personalizar aplicación” Mi dominio debe ser totalmente funcional en su organización antes de poder habilitar el Núcleo de entorno. Efectúe estos pasos para configurar e implementar Mi dominio. 1. Encuentre un nombre de dominio que esté disponible e inscríbase en él. a. b. c. d. e. En Configuración, haga clic en Gestión de dominios > Mi dominio (Domain Management > My Domain). Ingrese el nombre del subdominio que desee utilizar dentro de la URL de muestra. Puede usar hasta 40 caracteres. Haga clic en Comprobar disponibilidad. Si su nombre ya se ha utilizado, seleccione otro. Haga clic en Condiciones para revisar su acuerdo y, a continuación, seleccione la casilla de verificación. Haga clic en Registrar dominio (Register Domain). Recibirá un email cuando su nombre de dominio esté listo para una prueba. Puede tardar entre 10 minutos y 24 horas. 2. Pruebe el nombre del dominio e impleméntelo en su organización completa. a. En Configuración, haga clic en Gestión de dominios > Mi dominio y, a continuación, en Haga clic aquí para iniciar sesión (Click here to login). O bien, haga clic en la URL en el email de confirmación para iniciar sesión en Salesforce con el nombre de dominio nuevo. b. Compruebe el nuevo nombre de dominio haciendo clic en las fichas y vínculos dentro de su aplicación. Se dará cuenta de que todas las páginas muestran su nuevo nombre de dominio. Si ha personalizado la interfaz de usuario de Salesforce con funciones como botones personalizados o páginas de Visualforce, asegúrese de comprobarlas correctamente antes de implementa el nombre de dominio. Sus personalizaciones no deben utilizar URL basadas en instancias. c. Para implementar el nuevo nombre de dominio en su organización, en Configuración, haga clic en Gestión de dominios > Mi dominio y, a continuación, en Implementar para usuarios (Deploy to Users). El dominio se activa de forma inmediata y se redireccionará a todos los usuarios a las páginas con las direcciones con el dominio nuevo. 3. Establezca la política de inicio de sesión de dominio para los usuarios que acceden a sus páginas. a. En Configuración, haga clic en Gestión de dominios > Mi dominio (Domain Management > My Domain). b. En Configuración de Mi dominio, haga clic en Modificar. c. Para desactivar la autenticación de los usuarios que no utilizan la página de inicio de sesión específica del dominio, seleccione la política de inicio de sesión. Por ejemplo, esto impedirá que los usuarios inicien sesión en la página de inicio de sesión https://<instancia>.salesforce.com/ y se les redireccionará a sus páginas. Esta opción es una mejora para la seguridad, ya que impide que quien no conozca el nombre del dominio pueda intentar iniciar sesión. d. Elija una política de redireccionamiento basada en el nivel de seguridad deseado. Tiene tres opciones que le permiten incrementar la seguridad: • • • Redireccionar a los usuarios a la misma página dentro del dominio Redireccionar a los usuarios con una advertencia Impedir el redireccionamiento, de modo que los usuarios tengan que ingresar el nombre de dominio nuevo 4. Opcionalmente, puede personalizar la página de inicio de sesión y agregar o cambiar los proveedores de identidad disponibles en la página de inicio de sesión. Para obtener más información, consulte la ayuda online de Salesforce. 68 Arquitectura y desarrollo de aplicaciones Mejores prácticas del Núcleo de entorno Mejores prácticas del Núcleo de entorno Las directrices siguientes pueden ayudarle a utilizar el Núcleo de entorno con eficacia. • • • • Elija como organización de Núcleo aquella organización con mayor número de empleados que inician sesión con regularidad. Debería tener solo una organización de Núcleo. Configure Mi dominio para cada organización miembro además de la organización de Núcleo. Modifique los perfiles o los conjuntos de permisos para asignar a los usuarios acceso a determinadas funciones en el Núcleo de entorno. La configuración clave se indica a continuación. ◊ La aplicación personalizada del Núcleo de entorno debe estar habilitada para que aparezca en el menú de aplicaciones de Force.com. ◊ El permiso "Gestionar el Núcleo de entorno" es obligatorio para crear organizaciones nuevas o configurar el acceso de inicio de sesión único. Se trata de una funcionalidad potente y debería asignarse únicamente a los usuarios administradores. ◊ El permiso "Conectar organizaciones al Núcleo de entorno” es obligatorio para agregar organizaciones miembros nuevas al Núcleo. ◊ El acceso al proveedor de servicios debe estar habilitado para cada organización miembro a la que quiere permitir el acceso de inicio de sesión único. • • • Para obtener más información de toda la configuración del perfil, consulte: Configuración del Núcleo de entorno. Decida la estrategia que va a aplicar para habilitar el acceso mediante inicio de sesión único según los requisitos de seguridad de la organización. Después, puede elegir la combinación de los tres métodos de SSO (asignación explícita, Id. de federación o fórmula personalizada) que va a usar para sus necesidades específicas. Para obtener más información, consulte: Activación del inicio de sesión único. Debido a que cada organización miembro es un objeto estándar (del tipo EnvironmentHubMember), puede modificar su comportamiento o acceder a ella de forma programada. Por ejemplo, puede crear campos personalizados, configurar reglas de flujo de trabajo o definir asignaciones de usuarios y habilitar el inicio de sesión único mediante la API para cualquier organización miembro. El inicio de sesión único no funcionará para los usuarios recién agregados ni para las asignaciones de usuarios de SSO definidas en una organización de sandbox. Debería agregar únicamente los usuarios, modificar la información de usuario o definir las asignaciones de usuarios de SSO en la organización principal del sandbox. Conexión de una organización al Núcleo de entorno Permisos de usuario necesarios Para conectar una organización al el Núcleo de entorno: “Conectar organizaciones al Núcleo de entorno” Para conectar una organización al Núcleo: 1. En la página principal del Núcleo de entorno, haga clic en Conectar organización. 2. Ingrese el nombre de usuario de administrador de la organización miembro, que no es otra que la organización que quiere conectar al Núcleo. 3. Haga clic en Conectar organización. 4. En la ventana emergente, ingrese el nombre de usuario y la contraseña del administrador de la organización miembro. 5. Haga clic en Iniciar sesión en Salesforce (Log in to Salesforce). 6. Haga clic en Permitir en la siguiente ventana emergente. La organización ya está conectada al Núcleo y aparece en la lista de organizaciones miembro en el Núcleo de entorno. 69 Arquitectura y desarrollo de aplicaciones Consulta de los detalles de un miembro del Núcleo de entorno Consulta de los detalles de un miembro del Núcleo de entorno Haga clic en el nombre de cualquier organización en el Núcleo de entorno para ver detalles acerca de ella, como su nombre, su descripción, su Id. de organización, sus organizaciones relacionadas y sus usuarios vinculados. La página de detalles contiene las siguientes secciones. • • • • Detalles del miembro del Núcleo Organizaciones principales Organizaciones secundarias Asignaciones de usuarios de inicio de sesión único Desde la página Detalles del miembro del Núcleo (Hub Member Detail), puede realizar lo siguiente: • • • • • Haga clic en Modificar para modificar la información acerca de esta organización. Haga clic en Eliminar para eliminar esta organización del Núcleo de entorno. Haga clic en Activar SSO para activar el inicio de sesión único para esta organización. Eso permite a los usuarios vinculados iniciar sesión en esta organización desde el Núcleo de entorno sin proporcionar credenciales. Haga clic en Iniciar sesión en organización (Log into Organization) para iniciar la sesión. Si ha habilitado SSO para esta organización, la sesión estará iniciada sin que tenga que ingresar las credenciales. Haga clic en Nueva asignación de usuario SSO (New SSO User Mapping) para vincular un nombre de usuario en la organización miembro con un nombre de usuario en la organización de Núcleo para el acceso de inicio de sesión único. Detalles del miembro del Núcleo En esta sección se muestran los siguientes atributos (en orden alfabético). Atributo Descripción Descripción Una descripción breve de esta organización. Edición La edición de la organización, por ejemplo, DE o EE. Origen El método según el que se ha agregado esta organización al Núcleo de entorno. Los posibles valores incluyen Descubierto automáticamente (Auto Discovered) y Usuario agregado (User Added). Organización El nombre de esta organización. Id de la organización El Id. de organización para esta organización. Sandbox Se trata de una organización de sandbox. Proveedor de servicio Un vínculo Detalles indica aquí que el servicio de asistencia de salesforce.com ha activado la organización para el inicio de sesión único en el Núcleo de entorno. Tendrá que habilitar el acceso del proveedor de servicios para esta organización en todos los perfiles que se utilizarán para el inicio de sesión único. Estado El estado de las licencias o de creación de esta organización. Los valores posible son Prueba (Trial), Gratuita (Free), Activa (Active), Suspendido (Suspended) y Eliminado (Deleted). 70 Arquitectura y desarrollo de aplicaciones Consulta de los detalles de un miembro del Núcleo de entorno Atributo Descripción SSO Si se ha activado el inicio de sesión único para esta organización. Los posibles valores son: • Activado (On): el inicio de sesión único está habilitado. • Desactivado (Off): el inicio de sesión único está deshabilitado. • Pendiente (Pending): el inicio de sesión único está en proceso de activación. • Error (Failed): ha fallado la activación del inicio de sesión único. Haga contacto con el servicio de atención al cliente de salesforce.com para obtener ayuda. Método 1 de SSO: Usuarios asignados El número de asignaciones de usuarios de SSO definidas entre esta organización y el Núcleo de entorno Método 2 de SSO: Id. de federación Si el inicio de sesión único se ha activado según el Id. de federación coincidente. Método 3 de SSO: Fórmula de nombre de usuario Inicio de sesión único activado mediante una fórmula personalizada que establece la coincidencia de los nombres de usuarios Organizaciones principales y secundarias Cuando conecta una organización al Núcleo de entorno, los siguientes tipos de organización se descubren y se conectan automáticamente. • • • • Para cualquier organización, todas las organizaciones de sandbox creadas desde ella. Para una organización de versión, todas sus organizaciones de parche relacionadas. Para una organización de gestión de Trialforce, todas las organizaciones de origen de Trialforce se crean a partir de ella. Para una organización de gestión de licencias (LMO), que es una organización con la aplicación de gestión de licencias (LMA) instalada, cualquier organización de versión (y por lo tanto todas sus organizaciones de parche asociadas) con un paquete gestionado registrada en la LMO. En estas secciones se muestra una lista de las organizaciones relacionadas con esta organización. Para cada organización en la lista, aparece su nombre y su relación con esta organización. Asignaciones de usuarios de inicio de sesión único En esta sección se muestra una lista de usuarios asignados; esto es, usuarios en la organización de Núcleo que están asociados con un usuario correspondiente en la organización miembro. Si el inicio de sesión único está activado para la organización miembro, todos los usuarios asignados pueden iniciar sesión en ella desde el Núcleo de entorno sin proporcionar credenciales. Desde esta sección, puede realizar lo siguiente: • • Hacer clic en Nueva asignación de usuario SSO para definir una asignación de usuarios nueva. Hacer clic en Eliminar junto a un usuario para deshabilitar su acceso de inicio de sesión único. Las asignaciones de usuarios pueden ser de muchas a una, pero no de una a muchas. Esto significa que puede asociar varios usuarios en la organización de Núcleo al mismo usuario en una organización miembro. Esto puede ser útil, por ejemplo, si desea que un grupo de usuarios inicien sesión en una organización de prueba como si fuera el mismo usuario con el fin de que puedan experimentar la misma configuración. 71 Arquitectura y desarrollo de aplicaciones Modificación de los detalles de un miembro del Núcleo de entorno Nota: • • Si se ha definido una asignación de usuarios y el usuario sigue sin poder utilizar el inicio de sesión único, compruebe que el perfil del usuario tiene habilitados los permisos adecuados. Para obtener más información, consulte: Configuración del Núcleo de entorno. El inicio de sesión único no funcionará para los usuarios recién agregados ni para las asignaciones de usuarios de SSO definidas en una organización de sandbox. Debería agregar únicamente los usuarios, modificar la información de usuario o definir las asignaciones de usuarios de SSO en la organización principal del sandbox. Modificación de los detalles de un miembro del Núcleo de entorno Para modificar detalles de una organización miembro en el Núcleo de entorno: 1. Haga clic en Modificar junto al nombre de esa organización en la página principal del Núcleo de entorno o en su página de detalles. 2. En la página que se muestre, modifique el nombre y la descripción de la organización. Resulta útil especificar un nombre y una descripción significativos. Gracias a ellos puede reconocer con facilidad la organización en la lista de miembros en el Núcleo de entorno. 3. De forma opcional, seleccione uno o varios métodos de inicio de sesión único (descritos a continuación). 4. Haga clic en Guardar. Para establecer la coincidencia de los usuarios en las organizaciones miembro y de Núcleo para el inicio de sesión único, puede utilizar cualquiera de los tres métodos siguientes: Método de SSO Descripción Usuarios asignados La coincidencia entre los usuarios de la organización de Núcleo y los de la organización miembro se establece manualmente. Se trata del método predeterminado si ha definido cualquier asignación de usuarios de SSO desde la página de detalles de miembros. Para obtener más información, consulte: Definición de una asignación de usuarios de SSO. Id. de federación La coincidencia de usuarios se establece entre los que tienen el mismo Id. de federación en ambas organizaciones. Para activar este método, seleccione la casilla de verificación junto a él. Fórmula de nombre de usuario Se define una fórmula personalizada para establecer la coincidencia entre los usuarios en las organizaciones de Núcleo y miembro. Es la opción más flexible. Para habilitar este método, ingrese una fórmula personalizada en el cuadro de texto proporcionado. Por ejemplo, la siguiente fórmula establece la coincidencia de la primera parte del nombre de usuario (la que se sitúa antes del signo “@”) con un nombre de dominio explícito. LEFT($User.Username, FIND("@", $User.Username)) & ("mydev.org") Si especifica varios métodos de inicio de sesión único, cuando el usuario intente iniciar sesión se seguirá el orden de prioridad indicado. El primer método que consiga una coincidencia es el que se usa para iniciar la sesión del usuario y ya no se continúa con los demás métodos. Si no se puede identificar ningún usuario coincidente, se le redireccionará a la página de inicio de sesión de salesforce.com estándar. 72 Arquitectura y desarrollo de aplicaciones Creación de una organización nueva desde el Núcleo de entorno Creación de una organización nueva desde el Núcleo de entorno Permisos de usuario necesarios Para establecer y configurar el Núcleo de entorno: “Gestionar el Núcleo de entorno” Para crear una organización nueva en el Núcleo de entorno, haga lo siguiente: 1. En el Núcleo de entorno, haga clic en Crear organización (Create Organization). 2. En el menú desplegable, elija el tipo de organización que va a crear. Las posibles opciones son las siguientes: Desarrollo (Development), Prueba (Prueba) y Versión (Release). 3. En la página que aparezca, ingrese el nombre de la organización y Mi dominio, así como el nombre, el nombre de usuario y la dirección de email del usuario administrador. Si va a crear una organización de prueba, deberá especificar también su edición o un Id. de plantilla de Trialforce. 4. Haga clic en Crear. Los distintos tipos de organizaciones usadas para el desarrollo son los siguientes: • • • Organización de desarrollo: una organización con Developer Edition (DE) estándar. Organización de versión: una organización con DE usada para crear y cargar un paquete gestionado. Organización de prueba: una organización de prueba creada con fines de pruebas y de demostración, parecida a la organización que se crea desde www.salesforce.com/trial. Los socios pueden especificar una plantilla de Trialforce para crear organizaciones de prueba. De este modo, pueden configurar y probar exactamente la experiencia que tendrán sus clientes potenciales con la prueba. Activación del inicio de sesión único en el Núcleo de entorno Permisos de usuario necesarios Para establecer y configurar el Núcleo de entorno: “Gestionar el Núcleo de entorno” Para activar el inicio de sesión único para una organización: 1. En la página principal del Núcleo de entorno, haga clic en el nombre de la organización. 2. Haga clic en Activar SSO en la página de detalles de la organización. 3. En la página que aparece, haga clic en Activar SSO. Se le dirigirá a la página de detalles de la organización. Su estado de inicio de sesión único aparece en la parte superior de la página y junto al campo SSO en la sección Detalles del miembro del Núcleo. Para establecer la coincidencia de los usuarios en las organizaciones miembro y de Núcleo para el inicio de sesión único, puede utilizar cualquiera de los tres métodos siguientes: Método de SSO Descripción Usuarios asignados La coincidencia entre los usuarios de la organización de Núcleo y los de la organización miembro se establece manualmente. Se trata del método predeterminado si ha definido cualquier asignación de usuarios de SSO desde la página de detalles de miembros. Para obtener más información, consulte: Definición de una asignación de usuarios de SSO. 73 Arquitectura y desarrollo de aplicaciones Desactivación del inicio de sesión único en el Núcleo de entorno Método de SSO Descripción Id. de federación La coincidencia de usuarios se establece entre los que tienen el mismo Id. de federación en ambas organizaciones. Para activar este método, seleccione la casilla de verificación junto a él. Fórmula de nombre de usuario Se define una fórmula personalizada para establecer la coincidencia entre los usuarios en las organizaciones de Núcleo y miembro. Es la opción más flexible. Para habilitar este método, ingrese una fórmula personalizada en el cuadro de texto proporcionado. Por ejemplo, la siguiente fórmula establece la coincidencia de la primera parte del nombre de usuario (la que se sitúa antes del signo “@”) con un nombre de dominio explícito. LEFT($User.Username, FIND("@", $User.Username)) & ("mydev.org") Si especifica varios métodos de inicio de sesión único, cuando el usuario intente iniciar sesión se seguirá el orden de prioridad indicado. El primer método que consiga una coincidencia es el que se usa para iniciar la sesión del usuario y ya no se continúa con los demás métodos. Si no se puede identificar ningún usuario coincidente, se le redireccionará a la página de inicio de sesión de salesforce.com estándar. Nota: • • Si se ha definido una asignación de usuarios y el usuario sigue sin poder utilizar el inicio de sesión único, compruebe que el perfil del usuario tiene habilitados los permisos adecuados. Para obtener más información, consulte: Configuración del Núcleo de entorno. El inicio de sesión único no funcionará para los usuarios recién agregados ni para las asignaciones de usuarios de SSO definidas en una organización de sandbox. Debería agregar únicamente los usuarios, modificar la información de usuario o definir las asignaciones de usuarios de SSO en la organización principal del sandbox. Desactivación del inicio de sesión único en el Núcleo de entorno Permisos de usuario necesarios Para establecer y configurar el Núcleo de entorno: “Gestionar el Núcleo de entorno” Para deshabilitar el inicio de sesión único para una organización, haga lo siguiente: 1. En la página principal del Núcleo de entorno, haga clic en el nombre de la organización. 2. Haga clic en Desactivar SSO (Disable SSO) en la página de detalles de la organización. 3. En la página que aparece, haga clic en Desactivar SSO. Se le dirigirá a la página de detalles de la organización. Su estado de inicio de sesión único aparece en la parte superior de la página y junto al campo SSO en la sección Detalles del miembro del Núcleo. Asignación de usuarios para inicio de sesión único en el Núcleo de entorno Permisos de usuario necesarios Para establecer y configurar el Núcleo de entorno: “Gestionar el Núcleo de entorno” 74 Arquitectura y desarrollo de aplicaciones Asignación de usuarios para inicio de sesión único en el Núcleo de entorno Puede definir una asignación entre un usuario en la organización de Núcleo y uno o varios usuarios en una organización miembro. Si el inicio de sesión único está activado para la organización miembro, todos los usuarios asignados pueden iniciar sesión en ella desde el Núcleo de entorno sin proporcionar credenciales. Las asignaciones de usuarios pueden ser de muchas a una, pero no de una a muchas. Esto significa que puede asociar varios usuarios en la organización de Núcleo al mismo usuario en una organización miembro. Esto puede ser útil, por ejemplo, si desea que un grupo de usuarios inicien sesión en una organización de prueba como si fuera el mismo usuario con el fin de que puedan experimentar la misma configuración. Para definir una nueva asignación de usuarios de inicio de sesión único en Núcleo de entorno, haga lo siguiente: 1. En la página principal del Núcleo de entorno, haga clic en el nombre de la organización. 2. Haga clic en Nueva asignación de usuario SSO (New SSO User Mapping) en la página de detalles del miembro de Núcleo. 3. En la página que aparezca, ingrese el nombre de usuario de la organización miembro y especifique el usuario correspondiente de la organización de Núcleo que utiliza el campo de búsqueda. 4. Haga clic en Guardar (o Guardar y nuevo para guardar y agregar un nuevo usuario asignado). Nota: • • Si se ha definido una asignación de usuarios y el usuario sigue sin poder utilizar el inicio de sesión único, compruebe que el perfil del usuario tiene habilitados los permisos adecuados. Para obtener más información, consulte: Configuración del Núcleo de entorno. El inicio de sesión único no funcionará para los usuarios recién agregados ni para las asignaciones de usuarios de SSO definidas en una organización de sandbox. Debería agregar únicamente los usuarios, modificar la información de usuario o definir las asignaciones de usuarios de SSO en la organización principal del sandbox. 75 Capítulo 4 Empaquetado y pruebas de la aplicación En este capítulo... • • • • • • • • • • • • Registro de un prefijo de espacio de nombres ¿Qué son las versiones beta de los paquetes gestionados? Creación y carga de un paquete en versión beta Acerca de los entornos de desarrollo y prueba del socio Cómo inscribirse en entornos de prueba Instalación de un paquete Desinstalación de un paquete Instalación de paquetes gestionados mediante la API Creación y carga de un paquete gestionado Acerca de las versiones de paquetes Ejecución de Apex en la actualización/instalación del paquete Ejecución de Apex en la desinstalación del paquete Esta sección contiene información sobre el empaquetado de la aplicación y la realización de pruebas en esta durante el desarrollo. El procedimiento general es el siguiente: 1. Cree y cargue un paquete en versión beta. 2. Instale ese paquete en una organización para pruebas del socio (están disponibles las ediciones Enterprise Edition, Professional Edition o Group Edition). Estas se pueden solicitar a través del portal de socios. 3. Pruebe el paquete. 4. Solucione los problemas y realice cambios en su organización de desarrollo. 5. Repita estos pasos hasta que esté todo listo para editar un paquete gestionado. Consulte también: Creación y carga de un paquete en versión beta Instalación de un paquete 76 Empaquetado y pruebas de la aplicación Registro de un prefijo de espacio de nombres Registro de un prefijo de espacio de nombres En un contexto de paquetes, un prefijo de espacio de nombres es un identificador alfanumérico de entre uno y 15 caracteres que distingue su paquete y su contenido de los paquetes de otros desarrolladores en AppExchange. Los prefijos de espacio de nombres no distinguen entre minúsculas y mayúsculas. Por ejemplo, ABC y abc no se reconocen como elementos únicos. Su prefijo de espacio de nombres debe ser totalmente único en todas las organizaciones de Salesforce. Mantiene su paquete gestionado bajo su control exclusivo. Salesforce antepone automáticamente su prefijo de espacio de nombres, seguido de dos guiones bajos (“__”), a todos los nombres de componentes únicos de su organización de Salesforce. Un componente de paquete único es uno que requiere un nombre que no pertenezca a otro componente en Salesforce, como objetos personalizados, campos personalizados, vínculos personalizados, s-controls y reglas de validación. Por ejemplo, si su prefijo de espacio de nombres es abc y su paquete gestionado contiene un objeto personalizado con el nombre de API, Expense__c, utilice el nombre de API abc__Expense__c para acceder a este objeto utilizando la API. El prefijo de espacios de nombre aparece en todas las páginas de detalle del componente. Su prefijo de nombre de espacios debe: • • • Empezar por una letra. Contener entre 1 y 15 caracteres alfanuméricos. No contener dos caracteres subrayados consecutivos. Para registrar un prefijo de espacio de nombres: 1. Desde Configuración, haga clic en Crear > Paquetes. 2. Haga clic en Modificar. Nota: Este botón no aparece si ya ha establecido su configuración de desarrollador. 3. 4. 5. 6. 7. 8. Revise las selecciones necesarias para establecer la configuración de desarrollador y haga clic en Continuar. Introduzca el prefijo de espacio de nombres que desee registrar. Haga clic en Comprobar disponibilidad para determinar si ya se ha utilizado. Repita el mismo paso si el prefijo de espacio de nombres que ha introducido no está disponible. Haga clic en Revisar mis selecciones. Haga clic en Guardar. ¿Qué son las versiones beta de los paquetes gestionados? Un paquete en versión beta es una versión anticipada de un paquete gestionado que se carga en un estado Gestionado en versión beta. La finalidad de los paquetes gestionados en versión beta es permitir al desarrollador la realización de pruebas de su aplicación en distintas organizaciones de Salesforce y compartir la aplicación con un conjunto de usuarios de control para que estos evalúen la aplicación y envíen sus comentarios. Antes de instalar una versión beta de un paquete gestionado, consulte las notas siguientes: • • • Los paquetes beta se pueden instalar en organizaciones de sandbox o con Developer Edition o en organizaciones de prueba proporcionadas únicamente a través del portal de socios de salesforce.com. La organización del desarrollador puede modificar los componentes de un paquete en versión beta hasta que se cargue un paquete gestionado y editado. Las versiones beta no son versiones principales, de modo que el número de versión de paquete no cambia. 77 Empaquetado y pruebas de la aplicación • Creación y carga de un paquete en versión beta Los paquetes beta no se pueden actualizar. Debido a que los desarrolladores aún pueden seguir modificando los componentes de un paquete en versión beta, la versión gestionada y editada podría no ser compatible con el paquete en versión beta instalado. Desinstale el paquete en versión beta e instale uno nuevo, también en la versión beta, o la versión editada. Para obtener más información, consulte Desinstalación de un paquete en la página 84 y Instalación de un paquete en la página 79. Creación y carga de un paquete en versión beta Utilice el procedimiento siguiente para crear y cargar un paquete en versión beta. 1. Cree un paquete: a. b. c. d. e. f. g. h. i. Desde Configuración, haga clic en Crear > Paquetes. Haga clic en Nuevo. Ingrese un nombre para el paquete. Desde el menú desplegable, seleccione el idioma predeterminado de todas las etiquetas de componentes en el paquete. También puede elegir un vínculo personalizado del campo Configurar vínculo personalizado (Configure Custom Link) para mostrar información de configuración a los instaladores. El vínculo personalizado se muestra como un vínculo Configurar (Configure) en Salesforce en la página Paquetes instalados (Installed Packages) y en la página de detalles de la aplicación de la organización del suscriptor. En el campo Destinatario de la notificación de excepción de Apex (Apex Exception Notification Recipient), ingrese el nombre de usuario de la persona que va a recibir la notificación de email si se produce una excepción en una secuencia de comandos de Apex que no ha captado la secuencia de comandos. Ingrese una descripción del paquete. En la derecha de la pantalla, seleccione la casilla de verificación Gestionado (Managed). Haga clic en Guardar. 2. De forma opcional, puede cambiar los privilegios de acceso a API. De forma predeterminada, el acceso a API se establece en No restringido (Unrestricted) pero puede cambiarlo para restringir el acceso a API de los componentes del paquete. 3. Agregue los componentes: a. b. c. d. e. Haga clic en Agregar componentes (Add Components). En la lista desplegable, seleccione el tipo de componente. Seleccione los componentes que desea agregar. Haga clic en Agregar a paquete. Repita estos pasos hasta que haya agregado todos los componentes que desee al paquete. Nota: Algunos componentes relacionados se incluyen automáticamente en el paquete incluso cuando no puedan mostrarse en la lista Componentes del paquete. Por ejemplo, al agregar un objeto personalizado a un paquete, sus campos personalizados, formatos de página y relaciones con objetos estándar se incluyen de forma automática. 4. De forma opcional, haga clic en Mostrar dependencias (Show Dependencies) y revise una lista de componentes que se basan en otros componentes, permisos o preferencias dentro del paquete. Para obtener más información sobre las dependencias, consulte Concepto de dependencias en la página 49. Haga clic en Listo para volver a la página de detalles del paquete. 5. Haga clic en Cargar. 6. En la página de carga de paquete, realice lo siguiente: a. Ingrese un nombre de versión, por ejemplo Spring 11 — Beta. b. Ingrese un número de versión, por ejemplo 1.0. Todos los paquetes beta utilizan el mismo número de versión hasta que se carga un paquete gestionado y editado. 78 Empaquetado y pruebas de la aplicación Acerca de los entornos de desarrollo y prueba del socio c. Seleccione el tipo de versión Gestionado en versión beta. Nota: Los paquetes en versión beta solo pueden instalarse en organizaciones con Developer Edition o Sandbox, o en organizaciones de prueba solicitadas a través del portal de socios de salesforce.com y, por lo tanto, no pueden pasarse a organizaciones de clientes. d. De forma opcional, introduzca y confirme una contraseña para compartir el paquete de forma privada con cualquiera que tenga contraseña. No introduzca una contraseña si desea que el paquete esté disponible para cualquiera en AppExchange y compartir el paquete públicamente. e. Salesforce selecciona automáticamente los requisitos que encuentra. Además, seleccione cualquier otro componente obligatorio de las secciones Requisitos del paquete y Requisitos del objeto para notificar a los instaladores de los requisitos de este paquete. f. Haga clic en Cargar. Cuando haya cargado el paquete correctamente, recibirá un email con un vínculo de instalación. Nota: Si efectuó la carga desde su organización de producción de Salesforce, notifique a los instaladores que desean instalarla en una organización de Sandbox para que sustituyan la parte "login.salesforce.com" del vínculo de instalación por “test.salesforce.com”. Acerca de los entornos de desarrollo y prueba del socio Como socio proveedor de software independiente (ISV) de Force.com, puede utilizar varios entornos para desarrollar y probar su aplicación de Force.com, así como para crear demostraciones de esta. En general, le interesará probar la aplicación en todas las ediciones con las que quiera que sea compatible. Cómo inscribirse en entornos de prueba Para inscribirse en entornos de prueba (organizaciones), use el portal de socios. 1. Inicie sesión en el portal de socios. 2. En el portal de socios, en la sección Vínculos rápidos, haga clic en Crear una organización de prueba (Create a Test Org). 3. En el cuadro desplegable Edition, elija la edición para la que va a hacer las pruebas. Para ver las características de las distintas ediciones, consulte Acerca de los entornos de desarrollo y prueba del socio en la página 79. 4. Seleccione la casilla de verificación para aceptar los términos y haga clic en Enviar. 5. Recibirá un email en el que se le pedirá que inicie sesión y cambie su contraseña. Haga clic en el vínculo, cambie la contraseña y cree una pregunta y repuesta para la contraseña. Instalación de un paquete Utilice el procedimiento siguiente para encontrar la aplicación. Si ha recibido un vínculo al paquete, haga clic en el vínculo y omita este paso: 1. 2. 3. 4. Haga clic en el vínculo de AppExchange de su organización o vaya directamente a www.appexchange.com. Examine el sitio Web de AppExchange en busca de la aplicación que desee instalar. Haga clic en Descargar ahora en la página de información de la aplicación. Haga clic en Siguiente. 79 Empaquetado y pruebas de la aplicación Instalación de un paquete Nota: Solo una persona de su organización puede instalar o cargar un paquete a la vez. Para instalar el paquete, haga lo siguiente: 1. Introduzca su nombre de usuario y contraseña, lea las condiciones de uso, seleccione la casilla de verificación y haga clic en Continuar. Nota: Si está realizando la instalación en un Sandbox, sustituya la parte “www.salesforce.com” del vínculo de instalación por “test.salesforce.com”. Tenga en cuenta que este paquete se eliminará de su organización de Sandbox cuando cree una copia de Sandbox. 2. Si el paquete está protegido por contraseña, introduzca la contraseña que recibió del editor. 3. Seleccione una opción de seguridad y haga clic en Siguiente. Conceder acceso a administradores únicamente Especifica los siguientes ajustes en el perfil del administrador de instalación y en cualquier perfil con el permiso "Personalizar aplicación": • Permisos de objeto: “Leer”, “Crear”, “Modificar”, “Eliminar”, “Ver todo” y “Modificar todo” están activados • Seguridad a nivel de campo: establecida como visible y modificable para todos los campos • Clases de Apex: activadas • Páginas de Visualforce: activadas • Configuración de aplicaciones: activada • Configuración de fichas: determinada por el creador del paquete • Configuración del formato de página: determinada por el creador del paquete • Configuración de tipo de registro: determinada por el creador del paquete Tras la instalación, si tiene Enterprise Edition, Unlimited Edition, Performance Edition o Developer Edition, puede proporcionar a los perfiles personalizados los permisos de usuario y objeto adecuados que necesite. Otorgar acceso a todos los usuarios Especifica los siguientes ajustes en todos los perfiles personalizados internos: • Permisos de objeto: “Leer”, “Crear”, “Modificar”, “Eliminar”, “Ver todo” y “Modificar todo” están activados • Seguridad a nivel de campo: establecida como visible y modificable para todos los campos • Clases de Apex: activadas • Páginas de Visualforce: activadas • Configuración de aplicaciones: activada • Configuración de fichas: determinada por el creador del paquete • Configuración del formato de página: determinada por el creador del paquete • Configuración de tipo de registro: determinada por el creador del paquete Nota: Los perfiles Usuario del portal de clientes, Gestor del portal de clientes, Portal de clientes de gran volumen, Sitio Web autenticado, Usuario de socios y estándar no reciben ningún tipo de acceso. Seleccionar ajustes de seguridad Permite seleccionar el acceso de uso a todos los perfiles personalizados existentes de su organización. Puede configurar cada perfil para que tenga un acceso completo o ningún tipo de acceso al nuevo paquete y todos sus componentes. 80 Empaquetado y pruebas de la aplicación Disponibilidad de componentes tras la implementación Nota: • • Dependiendo del tipo que instale, es posible que no vea este paso. Por ejemplo, en Group Edition y Professional Edition o si el paquete no contiene un objeto personalizado, Salesforce omite este paso y el siguiente, proporcionando acceso completo a todos los usuarios. Las opciones de seguridad no incluyen conjuntos de permisos. Si su paquete incluye conjuntos de permisos, asígnelos tras la instalación. 4. Seleccione el nivel de acceso que va a conceder a los usuarios en cada perfil y haga clic en Siguiente. • Acceso completo: especifica los siguientes ajustes para cada perfil: ◊ ◊ ◊ ◊ ◊ ◊ ◊ ◊ • Permisos de objeto: “Leer”, “Crear”, “Modificar”, “Eliminar”, “Ver todo” y “Modificar todo” están activados Seguridad a nivel de campo: establecida como visible y modificable para todos los campos Clases de Apex: activadas Páginas de Visualforce: activadas Configuración de aplicaciones: activada Configuración de fichas: determinada por el creador del paquete Configuración del formato de página: determinada por el creador del paquete Configuración de tipo de registro: determinada por el creador del paquete Sin acceso: especifica los mismos ajustes que Acceso completo, excepto que todos los permisos de objeto están desactivados. Es posible que vea otras opciones si el editor ha incluido ajustes para los perfiles personalizados. Puede incorporar los ajustes de los perfiles personalizados del editor en sus propios perfiles sin que esto afecte a sus ajustes existentes. Seleccione el nombre de la configuración de los perfiles en la lista desplegable que se encuentra junto al perfil al que desea que se apliquen. La configuración actual de ese perfil se mantendrá intacta. 5. Haga clic en Instalar. Si se producen errores en la instalación, consulte la sección Solución de errores en la instalación en la página 83. 6. Antes de implementar el paquete para sus usuarios, realice las modificaciones necesarias para su implementación. Dependiendo del contenido del paquete, es posible que necesite personalizar algunos elementos. Para obtener más información, consulte Configuración de paquetes instalados en la página 81. 7. Haga clic en Aceptar. 8. Haga clic en Gestionar licencias (Manage Licenses) para asignar licencias a los usuarios. Disponibilidad de componentes tras la implementación Muchos componentes tienen un atributo Está implementado (Is Deployed) que controla si están disponibles para los usuarios finales. Después de la instalación, todos los componentes estarán disponibles de forma inmediata si lo estaban en la organización del desarrollador. Para conocer sugerencias que le ayuden a personalizar el paquete instalado y los componentes, consulte el apartado “Configuración de paquetes instalados” en la Ayuda de Salesforce. Los paquetes instalados están disponibles para los usuarios en su organización que tengan los permisos y la configuración de formato de página adecuados. Configuración de paquetes instalados Antes de implementar el paquete en sus usuarios, realice las modificaciones necesarias para su implementación. Dependiendo del contenido del paquete, es posible que necesite personalizar los siguientes elementos: 81 Empaquetado y pruebas de la aplicación Configuración de paquetes instalados Opción Configurar Si el publicador ha incluido un vínculo a un sitio Web externo con información acerca de la configuración, la página de descargas de AppExchange muestra la opción Configurar junto al paquete en Configuración al hacer clic en Paquetes instalados. Haga clic en Configurar para ver las configuraciones sugeridas por el editor. Campos personalizados y vínculos personalizados Agregue cualquier campo o vínculo personalizado que sea necesario a los objetos personalizados nuevos. Objeto personalizado Active el seguimiento en los objetos que no están en este paquete, pero que tienen campos seguidos en Chatter. Por ejemplo, si desea hacer un seguimiento a un campo personalizado en Cuenta, debe asegurarse de que el objeto personalizado Cuenta está activado para su seguimiento. Tipos de reportes personalizados Si el Nombre de tipo de reporte de un tipo de reporte personalizado coincide con el utilizado en la organización, cambie el Nombre de tipo de reporte después de instalar el paquete para evitar cualquier confusión entre los dos tipos de reportes. Usuario que ejecuta en los tableros La opción Usuario que interviene de los tableros está definida para el usuario que instala el paquete. Puede modificar las propiedades del tablero y cambie el valor Usuario que interviene a un usuario que cuente con la configuración de seguridad que desea aplicar al tablero. Carpetas Cuando las aplicaciones contienen documentos, plantillas de email, reportes o tableros, Salesforce crea carpetas nuevas en la organización del instalador que utiliza los nombres de carpetas del editor. Asegúrese de que estos nombres de carpetas sean exclusivos en su organización. Todos los usuarios pueden ver nuevas carpetas. Si desea que la visibilidad sea limitada, configure las opciones de las carpetas antes de implementar la aplicación para los usuarios. Formatos de página de inicio Los formatos de página de inicio personalizados que se incluyen en el paquete no se asignan a ningún usuario. Para ponerlos a disposición de sus usuarios, asígnelos a los perfiles apropiados. Vistas de lista Todos los usuarios pueden consultar las vistas de listas de las aplicaciones. Si es necesario, cambie la visibilidad de estas vistas de listas. Formatos de página El formato de página predeterminado de los objetos personalizados incluidos en el paquete se asigna a todos los usuarios. Los administradores de las organizaciones con Enterprise Edition, Unlimited Edition, Performance Edition y Developer Edition pueden configurar el formato de página para los usuarios adecuados. Si un objeto personalizado del paquete incluye relaciones con objetos estándar, agréguelos como listas relacionadas en los formatos de página correspondientes. Si el paquete incluye vínculos personalizados, agréguelos a los formatos de página adecuados. Si su organización tiene la gestión avanzada de divisa activada, los campos de resumen de divisa no son válidos si están en cuentas y resumen valores de oportunidades o en oportunidades que resumen valores de objetos personalizados. Elimine estos campos de cualquier formato de página. 82 Empaquetado y pruebas de la aplicación Solución de errores en la instalación Conjuntos de permisos Asigne los conjuntos de permisos incluidos en un paquete a los usuarios que necesiten acceder al paquete. No puede modificar los conjuntos de permisos que están incluidos en un paquete gestionado. Si duplica un conjunto de permisos incluido con el paquete o crea uno propio, podrá realizar cambios en el conjunto de permisos, pero las actualizaciones posteriores no le afectarán. Sistema de traducción Los valores traducidos para los componentes de paquetes instalados también están instalados para cualquier idioma que el desarrollador incluya. Cualquier componente de paquete que el desarrollador haya personalizado en la configuración, como un campo personalizado o tipo de registro, se muestra en las páginas de configuración del instalador en el idioma del desarrollador (el idioma utilizado para definir estos componentes). Los usuarios de la organización del instalador visualizan automáticamente los valores traducidos si su idioma personal se incluye en el paquete. Adicionalmente, los instaladores pueden activar idiomas adicionales siempre que esté activado el sistema de traducción. Alertas de flujo de trabajo Si el destinatario de una alerta del flujo de trabajo es un usuario, Salesforce sustituye ese usuario por el usuario que instala el paquete. Puede cambiar los destinatarios de cualquier alerta del flujo de trabajo instalada. Actualizaciones de campo de flujo de trabajo Si la actualización de un campo se designa para cambiar un campo de propietario del registro a un usuario específico, Salesforce sustituye ese usuario por el usuario que instala el paquete. Puede cambiar el valor de campo de cualquier actualización de campo instalada. Mensajes salientes de flujo de trabajo Salesforce sustituye el usuario en el campo Usuario que debe enviarse como de un mensaje saliente por el usuario que instala el paquete. Puede cambiar este valor después de realizar la instalación. Reglas de flujo de trabajo Las reglas de flujo de trabajo se instalan sin desencadenadores basados en el tiempo que puede haber creado el desarrollador. Configure los desencadenadores basados en el tiempo que sean necesarios. Tareas de flujo de trabajo Salesforce sustituye el usuario en el campo Asignado a de un mensaje saliente por el usuario que instala el paquete. Puede cambiar este valor después de realizar la instalación. Solución de errores en la instalación Una instalación puede fallar por diversos motivos: • • • • • • • El paquete incluye objetos personalizados que harán que la organización sobrepase su límite de objetos personalizados. El paquete incluye fichas personalizadas que harán que la organización sobrepase su límite de fichas personalizadas. El desarrollador del paquete ha cargado una versión más reciente del paquete y ha desaprobado la versión asociada con esta URL de instalación. Haga contacto con el editor del paquete para obtener la URL de instalación más reciente. Está intentando instalar una extensión en un paquete y no ha instalado el paquete base. El paquete requiere que se activen ciertos componentes en su organización o ciertas funciones en su edición. El paquete contiene código Apex, y no está autorizado a ejecutar Apex en su organización. El paquete que está instalando tiene una prueba de Apex que falla. Si es un desarrollador y falla la instalación debido a un fallo de prueba de Apex, compruebe lo siguiente: 83 Empaquetado y pruebas de la aplicación • • Desinstalación de un paquete Asegúrese de que organiza todos los datos necesarios para la prueba de Apex, en lugar de basarse en los datos del suscriptor existentes. Si un suscriptor crea una regla de validación, campo necesario o desencadenador en un objeto referenciado en su paquete, su prueba podrá fallar si ejecuta DML en este objeto. Si este objeto se crea únicamente solo por motivos de prácticas y nunca en el tiempo de ejecución y se produce un error en la creación debido a los conflictos, puede ignorarlo con seguridad y continuar con la prueba. De lo contrario, haga contacto con el cliente y determine la repercusión. Desinstalación de un paquete Durante el ciclo de desarrollo y pruebas, es posible que necesite periódicamente desinstalar paquetes antes de instalar la siguiente versión beta. Para eliminar un paquete: 1. 2. 3. 4. En Configuración, haga clic en Paquetes instalados. Haga clic en Desinstalar junto al paquete que desea modificar. Active Sí, deseo desinstalar... y haga clic en Desinstalar. Después de la desinstalación, Salesforce crea automáticamente un archivo de exportación con los datos del paquete y las notas y archivos adjuntos relacionados. Cuando la desinstalación se ha completado, Salesforce envía un email con un vínculo al archivo de exportación al usuario que realice la desinstalación. El archivo de exportación y las notas y archivos adjuntos relacionados se enumeran en la lista de paquetes instalados. Es recomendable guardar el archivo en otra ubicación ya que solo está disponible durante un período limitado tras finalizar la desinstalación. Sugerencia: Si vuelve a instalar el paquete posteriormente y desea volver a importar los paquetes posteriormente y volver a importar los datos del paquete, consulte “Importación de datos del paquete” en la Ayuda de Salesforce. Cuando desinstale paquetes, tenga en cuenta lo siguiente: • • Si desinstala un paquete que incluye un objeto personalizado, también se eliminarán todos los componentes de dicho objeto personalizado. Esto incluye los campos personalizados, reglas de validación, S-Control y botones y vínculos personalizados, así como las reglas de flujo de trabajo y procesos de aprobación. No puede desinstalar un paquete si un componente, que no se incluya en la desinstalación, hace referencia a cualquier componente. Por ejemplo: ◊ Si un paquete instalado incluye cualquier componente en un objeto estándar al que otro componente hace referencia, Salesforce le impedirá desinstalar el paquete. Significa que puede instalar un paquete que incluya un campo de usuario personalizado y crear una regla de flujo de trabajo que se active cuando el valor de dicho campo sea un valor específico. Si desinstala el paquete impedirá el funcionamiento del flujo de trabajo. ◊ Si ha instalado dos paquetes no relacionados que incluyen cada uno un objeto personalizado, y un componente de dicho objeto haga referencia a un componente del otro, Salesforce impedirá desinstalar el paquete. Significa que puede instalar, por ejemplo, una aplicación de reportes de gastos que incluya un campo de usuario personalizado y crear una regla de validación en otro objeto personalizado instalado que haga referencia a dicho campo de usuario personalizado. Sin embargo, la desinstalación de la aplicación de reportes de gastos impedirá el funcionamiento de la regla de validación. ◊ Si una carpeta instalada contiene componentes que ha agregado tras la instalación, Salesforce impedirá que desinstale el paquete. ◊ Si un membrete instalado se utiliza para una plantilla de email que ha agregado tras la instalación, Salesforce impedirá que desinstale el paquete. • Desinstale los archivos de exportación que contienen datos de aplicación personalizados para su paquete excluyendo algunos componentes como documentos y valores de campos de fórmula. 84 Empaquetado y pruebas de la aplicación Instalación de paquetes gestionados mediante la API Instalación de paquetes gestionados mediante la API Puede instalar, actualizar y desinstalar los paquetes gestionados mediante la API en lugar de usar la interfaz de usuario. La automatización de estas tareas repetitivas puede ayudarle a que su trabajo sea más eficiente y el desarrollo de aplicaciones más rápido. Para instalar, actualizar o desinstalar un paquete, utilice la llamada de API de metadatos estándar deploy() con el tipo de metadatos InstalledPackage. Las operaciones siguientes son compatibles: • • • La implementación de un InstalledPackage instala el paquete en la organización de implementación. La implementación de una versión más nueva de un paquete ya instalado actualiza el paquete. La implementación de un InstalledPackage mediante un manifiesto denominado destructiveChanges.xml, en lugar de package.xml, lo desinstala de la organización. Nota: No puede implementar un paquete junto con otros tipos de metadatos. Por tanto, InstalledPackage debe ser el único tipo de metadatos especificado en el archivo de manifiesto. Se trata de un manifiesto de proyecto habitual (package.xml) para instalar un paquete. El manifiesto no debe contener un elemento fullName ni namespacePrefix. <?xml version="1.0" encoding="UTF-8"?> <Package xmlns="http://soap.sforce.com/2006/04/metadata"> <types> <members>*</members> <name>InstalledPackage</name> </types> <version>28.0</version> </Package> El paquete se especifica en un archivo denominado MyNamespace.installedPackage, donde MyNamespace es el prefijo del espacio de nombres del paquete. El archivo debe estar en un directorio denominado installedPackages y su contenido debe tener este formato: <?xml version="1.0" encoding="UTF-8"?> <InstalledPackage xmlns="http://soap.sforce.com/2006/04/metadata"> <versionNumber>1.0</versionNumber> <password>optional_password</password> </InstalledPackage> Para desinstalar un paquete, implemente este archivo de manifiesto destructiveChanges.xml además del archivo package.xml. <?xml version="1.0" encoding="UTF-8"?> <Package xmlns="http://soap.sforce.com/2006/04/metadata"> <types> <members>MyNamespace</members> <name>InstalledPackage</name> </types> </Package> La recuperación de un InstalledPackage mediante la llamada retrieve() crea una representación en XML del paquete instalado en una organización. Si el paquete instalado tiene una contraseña, esta no se recupera. La implementación del archivo recuperado en una organización diferente instala el paquete en esa organización. Para obtener más información sobre los comandos deploy() y retrieve(), consulte la guía del desarrollador de la API de metadatos. 85 Empaquetado y pruebas de la aplicación Creación y carga de un paquete gestionado Creación y carga de un paquete gestionado Utilice el procedimiento siguiente para crear y cargar un paquete gestionado. En este procedimiento se supone que ya ha creado un espacio de nombres y un paquete en versión beta. Si va a cargar un paquete en versión beta para realizar pruebas, consulte Creación y carga de un paquete en versión beta en la página 78. 1. Cree un paquete: a. b. c. d. e. f. g. h. i. Desde Configuración, haga clic en Crear > Paquetes. Haga clic en Nuevo. Ingrese un nombre para el paquete. Desde el menú desplegable, seleccione el idioma predeterminado de todas las etiquetas de componentes en el paquete. También puede elegir un vínculo personalizado del campo Configurar vínculo personalizado (Configure Custom Link) para mostrar información de configuración a los instaladores. El vínculo personalizado se muestra como un vínculo Configurar (Configure) en Salesforce en la página Paquetes instalados (Installed Packages) y en la página de detalles de la aplicación de la organización del suscriptor. En el campo Destinatario de la notificación de excepción de Apex (Apex Exception Notification Recipient), ingrese el nombre de usuario de la persona que va a recibir la notificación de email si se produce una excepción en una secuencia de comandos de Apex que no ha captado la secuencia de comandos. Ingrese una descripción del paquete. En la derecha de la pantalla, seleccione la casilla de verificación Gestionado (Managed). Haga clic en Guardar. 2. De forma opcional, puede cambiar los privilegios de acceso a API. De forma predeterminada, el acceso a API se establece en No restringido (Unrestricted) pero puede cambiarlo para restringir el acceso a API de los componentes del paquete. 3. Agregue los componentes: a. b. c. d. e. Haga clic en Agregar componentes (Add Components). En la lista desplegable, seleccione el tipo de componente. Seleccione los componentes que desea agregar. Haga clic en Agregar a paquete. Repita estos pasos hasta que haya agregado todos los componentes que desee al paquete. Nota: Algunos componentes relacionados se incluyen automáticamente en el paquete incluso cuando no puedan mostrarse en la lista Componentes del paquete. Por ejemplo, al agregar un objeto personalizado a un paquete, sus campos personalizados, formatos de página y relaciones con objetos estándar se incluyen de forma automática. 4. De forma opcional, haga clic en Mostrar dependencias (Show Dependencies) y revise una lista de componentes que se basan en otros componentes, permisos o preferencias dentro del paquete. Para obtener más información sobre las dependencias, consulte Concepto de dependencias en la página 49. Haga clic en Listo para volver a la página de detalles del paquete. 5. Haga clic en Cargar. 6. En la página de carga de paquete, realice lo siguiente: a. Ingrese un nombre de versión, por ejemplo Spring 12. El nombre de versión es el nombre que se utiliza en marketing para una versión concreta de un paquete y permite crear un título más descriptivo de lo que es un número. b. Ingrese un número de versión, por ejemplo 1.0. Para obtener más información sobre las versiones, consulte Actualización de la aplicación en la página 187. c. Seleccione un tipo de versión de gestionado y editado. d. Cambie la Descripción si fuera necesario. 86 Empaquetado y pruebas de la aplicación Acerca de las versiones de paquetes e. De forma opcional, introduzca y confirme una contraseña para compartir el paquete de forma privada con cualquiera que tenga contraseña. No introduzca una contraseña si desea que el paquete esté disponible para cualquiera en AppExchange y compartir el paquete públicamente. f. Salesforce selecciona automáticamente los requisitos que encuentra. Además, seleccione cualquier otro componente obligatorio de las secciones Requisitos del paquete y Requisitos del objeto para notificar a los instaladores de los requisitos de este paquete. g. Haga clic en Cargar. 7. Una vez completada la carga, puede realizar lo siguiente: • • Haga clic en Cambiar contraseña para cambiar la opción de contraseña. Haga clic en Desaprobar para evitar nuevas instalaciones de este paquete y permitir que las instalaciones existentes sigan funcionando. Nota: No puede desaprobar la versión más reciente de un paquete gestionado. Cuando desapruebe un paquete, recuerde quitarlo también de AppExchange. Consulte el apartado sobre "Eliminación de aplicaciones de AppExchange" en la ayuda online de AppExchange. • Haga clic en Cancelar desaprobación para que una versión desaprobada vuelva a estar disponible para su instalación. Cuando haya cargado el paquete correctamente, recibirá un email con un vínculo de instalación. Nota: Si efectuó la carga desde su organización de producción de Salesforce, notifique a los instaladores que desean instalarla en una organización de Sandbox para que sustituyan la parte "login.salesforce.com" del vínculo de instalación por “test.salesforce.com”. Acerca de las versiones de paquetes Una versión de paquete es un número que identifica el conjunto de componentes cargados en un paquete. El número de versión tiene el formato majorNumber.minorNumber.patchNumber (por ejemplo, 2.1.3). Los números mayor y menor aumentan con cada versión posterior. El patchNumber se genera y se actualiza solo para una versión de parche. Los paquetes sin gestionar no se pueden actualizar, de modo que cada versión de paquete es simplemente un conjunto de componentes que se distribuyen. La versión de un paquete tiene más importancia en el caso de los paquetes gestionados. Los paquetes se comportan de modo diferente según la versión. Los editores pueden utilizar las versiones de paquetes para hacer evolucionar los componentes de sus paquetes gestionados cómodamente publicando versiones posteriores de paquetes sin que dicho paquete estropee las integraciones de clientes existentes. Los números de versión dependen del tipo de publicación de paquete, que identifica la forma en que se distribuyen los paquetes. Hay de dos tipos: Edición principal La edición principal indica que un paquete es Gestionado y editado. En estas ediciones, los números principales y secundarios de una versión de paquete aumentan hasta el valor seleccionado. Versión de parche La versión del parche solo es válida en caso de que haya distintos parches de un paquete. Cada versión de parche tiene un número mayor a la del anterior. Cuando un suscriptor existente instala una versión de paquete nueva, sigue habiendo solo una instancia de cada componente en el paquete aunque los componentes pueden emular versiones anteriores. Por ejemplo, un suscriptor puede utilizar un paquete 87 Empaquetado y pruebas de la aplicación Ejecución de Apex en la actualización/instalación del paquete gestionado que contiene una clase de Apex. Si el editor decide desaprobar un método en la clase de Apex y publicar una versión de paquete nueva, el suscriptor seguirá viendo solo una instancia de la clase de Apex después de instalar la versión nueva. Sin embargo, esta clase de Apex puede seguir emulando la versión anterior de cualquier código que haga referencia al método desaprobado en la versión anterior. Los desarrolladores de paquetes pueden utilizar una lógica condicional en desencadenadores y clases de Apex que muestren diferentes comportamientos para diferentes versiones. De esta forma, el desarrollador del paquete puede continuar manteniendo el comportamiento existente en clases y desarrolladores en versiones anteriores del paquete mientras continúa creando el código. Cuando se desarrollan aplicaciones cliente con la API, puede especificar la versión de cada paquete que utilice en las integraciones. Ejecución de Apex en la actualización/instalación del paquete Los desarrolladores de aplicaciones pueden especificar una secuencia de comandos de Apex para ejecutar automáticamente después de que un suscriptor instale y actualice un paquete gestionado. Eso permite personalizar la instalación o la actualización del paquete, basándose en detalles de la organización del suscriptor. Por ejemplo, puede utilizar la secuencia de comandos para completar la configuración personalizada, crear datos de muestra, enviar un email al instalador, notificar un sistema externo o poner en marcha un trabajo para llenar un nuevo campo en un gran conjunto de datos. Para simplificar, solo puede especificar una secuencia de comandos posterior a la instalación. Debe ser una clase Apex miembro del paquete. La secuencia de comandos posterior a la instalación se invoca después de ejecutar pruebas y está sujeta a límites reguladores predeterminados. Se ejecuta como el usuario de un sistema especial que representa su paquete, por lo que todas las operaciones realizadas por la secuencia de comandos aparecen como realizadas en su paquete. Puede acceder a este usuario utilizando UserInfo. Solo verá este usuario en el tiempo de ejecución, no durante las pruebas de ejecución. Si la secuencia de comandos falla, se cancelará la instalación/actualización. Cualquier error en la secuencia de comandos se enviará por email al usuario específico en el campo Notificar error de Apex del paquete. Si no se especifica ningún usuario, los detalles de instalación/actualización no estarán disponibles. La secuencia de comandos posterior a la instalación cuenta con las siguientes propiedades adicionales. • • • Puede iniciar trabajos por lotes, programados y futuros. No puede acceder a los Id. de sesión. Solo puede realizar llamadas utilizando una operación sin sincronizar. La llamada se produce después de ejecutar la secuencia de comandos y de que la instalación haya finalizado y se haya asignado. Nota: No puede ejecutar una secuencia de comandos posterior a la instalación en una nueva organización de prueba proporcionada utilizando Trialforce. La secuencia de comandos solo se ejecuta cuando un suscriptor instala su paquete en una organización existente. ¿Cómo funciona una secuencia de comandos posterior a la instalación? Una secuencia de comandos posterior a la instalación es una clase de Apex que implementa la interfaz InstallHandler. Esta interfaz tiene un único método denominado onInstall que especifica las acciones que deben realizarse en una instalación. global interface InstallHandler { void onInstall(InstallContext context) } El método onInstall toma un objeto de contexto como su argumento, que proporciona la siguiente información. • • El Id. de la organización en la que tiene lugar la instalación El Id. del usuario que inició la instalación 88 Empaquetado y pruebas de la aplicación • • • ¿Cómo funciona una secuencia de comandos posterior a la instalación? El número de versión del paquete instalado previamente (especificado mediante la clase Version). Siempre es un número de tres partes como, por ejemplo, 1.2.0. Si la instalación es una actualización. Si la instalación es un envío. El argumento de contexto es un objeto cuyo tipo es la interfaz InstallContext. El sistema implementa automáticamente esta interfaz. La siguiente definición de la interfaz InstallContext muestra los métodos que puede activar en el argumento de contexto. global interface InstallContext { ID organizationId(); ID installerId(); Boolean isUpgrade(); Boolean isPush(); Version previousVersion(); } Métodos y clase de la versión Puede utilizar los métodos de la clase System.Version para obtener la versión de un paquete gestionado y comparar versiones de paquetes. Una versión de paquete es un número que identifica el conjunto de componentes cargados en un paquete. El número de versión tiene el formato majorNumber.minorNumber.patchNumber (por ejemplo, 2.1.3). Los números mayor y menor aumentan hasta el valor seleccionado con cada versión que no sea de parche. Los aumentos de los números mayor y menor siempre utilizarán un número de parche de 0. A continuación se incluyen métodos de instancia para la clase System.Version. Método Argumentos Tipo de retorno compareTo System.Version versión Entero Descripción Compara la versión actual con la versión especificada y devuelve uno de los valores siguientes: • Cero si la versión actual del paquete es igual a la versión del paquete especificado • Un valor Entero superior a cero si la versión actual del paquete es superior a la versión del paquete especificado • Un valor Entero inferior a cero si la versión actual del paquete es inferior a la versión del paquete especificado Si se compara una versión de dos partes con una versión de tres partes, se ignorará el número de la ruta y la comparación se basará únicamente en los números mayor y menor. major Entero Devuelve la versión superior del paquete del código de llamada. minor Entero Devuelve la versión inferior del paquete del código de llamada. patch Entero Devuelve la versión de parche del paquete del código de llamada o null si no hay ninguna versión de parche. 89 Empaquetado y pruebas de la aplicación Ejemplo de una secuencia de comandos posterior a la instalación La clase System contiene dos métodos que puede utilizar para especificar la lógica condicional, de modo que versiones distintas del paquete muestren diferentes comportamientos. • • System.requestVersion: Devuelve una versión de dos partes que contiene los números de versión mayor y menor de un paquete. Con este método puede determinar la versión de una instancia instalada de su paquete desde la que el código de llamada hace referencia a su paquete. Dependiendo de la versión del código de llamada, puede personalizar el comportamiento del código de su paquete. System.runAs(System.Version): Cambia la versión actual del paquete a la versión del paquete especificada en el argumento. Cuando un suscriptor ha instalado varias versiones de su paquete y escribe un código que hace referencia a las clases o desencadenadores de Apex de su paquete, debe seleccionar la versión a la que está haciendo referencia. Puede ejecutar distintas rutas de código en el código Apex de su paquete en función de la configuración de la versión del código Apex de llamada que realiza la referencia. Puede determinar la configuración de la versión del paquete del código de llamada activando el método System.requestVersion en el código del paquete. Ejemplo de una secuencia de comandos posterior a la instalación La siguiente secuencia de comandos posterior a la instalación de muestra realiza estas acciones al instalar/actualizar un paquete. • Si la versión anterior es nula, es decir, el paquete se está instalando por primera vez, la secuencia de comandos: ◊ Crea una nueva cuenta denominada “Newco” y verifica que se ha creado. ◊ Crea una nueva instancia de la encuesta del objeto personalizado denominada “Client Satisfaction Survey”. ◊ Envía un mensaje de email al suscriptor confirmando la instalación del paquete. • • • Si la versión anterior es 1.0, la secuencia de comandos crea una nueva instancia de la encuesta denominada “Upgrading from Version 1.0”. Si el paquete es una actualización, la secuencia de comandos crea una nueva instancia de la encuesta denominada “Sample Survey during Upgrade”. Si la actualización se está enviando, la secuencia de comandos crea una nueva instancia de la encuesta denominada “Sample Survey during Push”. global class PostInstallClass implements InstallHandler { global void onInstall(InstallContext context) { if(context.previousVersion() == null) { Account a = new Account(name='Newco'); insert(a); Survey__c obj = new Survey__c(name='Client Satisfaction Survey'); insert obj; User u = [Select Id, Email from User where Id =:context.installerID()]; String toAddress= u.Email; String[] toAddresses = new String[]{toAddress}; Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); mail.setToAddresses(toAddresses); mail.setReplyTo('[email protected]'); mail.setSenderDisplayName('My Package Support'); mail.setSubject('Package install successful'); mail.setPlainTextBody('Thanks for installing the package.'); Messaging.sendEmail(new Messaging.Email[] { mail }); } else if(context.previousVersion().compareTo(new Version(1,0)) == 0) { Survey__c obj = new Survey__c(name='Upgrading from Version 1.0'); insert(obj); } 90 Empaquetado y pruebas de la aplicación Especificación de una secuencia de comandos posterior a la instalación if(context.isUpgrade()) { Survey__c obj = new Survey__c(name='Sample Survey during Upgrade'); insert obj; } if(context.isPush()) { Survey__c obj = new Survey__c(name='Sample Survey during Push'); insert obj; } } } Puede comprobar una secuencia de comandos posterior a la instalación mediante el nuevo método testInstall de la clase Test. Este método toma los siguientes argumentos. • • • Una clase que implementa la interfaz InstallHandler. Un objeto Version que especifica el número de versión del paquete existente. Un valor booleano opcional que es true si la instalación es un envío. El valor predeterminado es false. Este ejemplo muestra cómo comprobar una secuencia de comandos posterior a la instalación implementada en la clase de Apex PostInstallClass. @isTest static void testInstallScript() { PostInstallClass postinstall = new PostInstallClass(); Test.testInstall(postinstall, null); Test.testInstall(postinstall, new Version(1,0), true); List<Account> a = [Select id, name from Account where name ='Newco']; System.assertEquals(a.size(), 1, 'Account not found'); } Especificación de una secuencia de comandos posterior a la instalación Una vez haya creado y probado una secuencia de comandos posterior a la instalación, puede especificarlo en el campo de búsqueda Secuencia de comandos posterior a la instalación en la página Detalles del paquete. En versiones de parche posteriores, puede cambiar los contenidos de la secuencia de comandos pero no la clase de Apex. La selección de clase también está disponible mediante la API de metadatos como Package.postInstallClass. Esto está representado en package.xml como un elemento de <postInstallClass>foo</postInstallClass>. Ejecución de Apex en la desinstalación del paquete Los desarrolladores de aplicaciones pueden especificar una secuencia de comandos de Apex para ejecutar automáticamente después de que un suscriptor desinstale un paquete gestionado. Eso permite realizar tareas de limpieza y notificación, basándose en detalles de la organización del suscriptor. Para simplificar, solo puede especificar una secuencia de comandos de desinstalación. Debe ser una clase Apex miembro del paquete. La secuencia de comandos de desinstalación está sujeta a límites reguladores predeterminados. Se ejecuta como el usuario de un sistema especial que representa su paquete, por lo que todas las operaciones realizadas por la secuencia de comandos aparecerán como realizadas en su paquete. Puede acceder a este usuario utilizando UserInfo. Solo verá este usuario en el tiempo de ejecución, no durante las pruebas de ejecución. Si se produce un fallo en la secuencia de comandos, la desinstalación continúa pero no se comprometerá ninguno de los cambios realizados por la secuencia de comandos. Cualquier error en la secuencia de comandos se enviará por email al usuario específico en el campo Notificar error de Apex del paquete. Si no se especifica ningún usuario, los detalles de desinstalación no estarán disponibles. 91 Empaquetado y pruebas de la aplicación ¿Cómo funciona una secuencia de comandos de desinstalación? La secuencia de comandos de desinstalación tiene los siguientes límites. No puede utilizarlo para iniciar trabajos por lotes, futuros y programados para acceder a los Id. de sesión o para realizar llamadas. ¿Cómo funciona una secuencia de comandos de desinstalación? Una secuencia de comandos de desinstalación es una clase de Apex que implementa la interfaz UninstallHandler. Esta interfaz tiene un único método denominado onUninstall que especifica las acciones que deben realizarse en una desinstalación. global interface UninstallHandler { void onUninstall(UninstallContext context) } El método onUninstall toma un objeto de contexto como su argumento, que proporciona la siguiente información. El Id. de la organización en la que tiene lugar la desinstalación. El Id. del usuario que inició la desinstalación. • • El argumento de contexto es un objeto cuyo tipo es la interfaz UninstallContext. El sistema implementa automáticamente esta interfaz. La siguiente definición de la interfaz UninstallContext muestra los métodos que puede activar en el argumento de contexto. global interface UninstallContext { ID organizationId(); ID uninstallerId(); } Ejemplo de una secuencia de comandos de desinstalación El ejemplo de una secuencia de comandos de desinstalación siguiente realiza las siguientes acciones en la desinstalación del paquete. Inserta una entrada en la fuente que describe el usuario que ha ejecutado la desinstalación y la organización Crea y envía un mensaje de email confirmando la desinstalación a ese usuario • • global class UninstallClass implements UninstallHandler { global void onUninstall(UninstallContext ctx) { FeedItem feedPost = new FeedItem(); feedPost.parentId = ctx.uninstallerID(); feedPost.body = 'Thank you for using our application!'; insert feedPost; User u = [Select Id, Email from User where Id =:ctx.uninstallerID()]; String toAddress= u.Email; String[] toAddresses = new String[] {toAddress}; Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); mail.setToAddresses(toAddresses); mail.setReplyTo('[email protected]'); mail.setSenderDisplayName('My Package Support'); mail.setSubject('Package uninstall successful'); mail.setPlainTextBody('Thanks for uninstalling the package.'); Messaging.sendEmail(new Messaging.Email[] { mail }); } } Puede comprobar una secuencia de comandos de desinstalación mediante el método testInstall de la clase Test. Este método toma como argumento una clase que implementa la interfaz UninstallHandler. 92 Empaquetado y pruebas de la aplicación Especificación de una secuencia de comandos de desinstalación Este ejemplo muestra cómo comprobar una secuencia de comandos de desinstalación implementada en la clase de Apex UninstallClass. @isTest static void testUninstallScript() { Id UninstallerId = UserInfo.getUserId(); List<FeedItem> feedPostsBefore = [SELECT Id FROM FeedItem WHERE parentId=:UninstallerId AND CreatedDate=TODAY]; Test.testUninstall(new UninstallClass()); List<FeedItem> feedPostsAfter = [SELECT Id FROM FeedItem WHERE parentId=:UninstallerId AND CreatedDate=TODAY]; System.assertEquals(feedPostsBefore.size() + 1, feedPostsAfter.size(), 'Post to uninstaller failed.'); } Especificación de una secuencia de comandos de desinstalación Una vez haya creado y probado una secuencia de comandos de desinstalación y haberla incluido como un miembro de su paquete, puede especificarlo en el campo de búsqueda Secuencia de comandos de desinstalación en la página Detalles del paquete. En versiones de parche posteriores, puede cambiar los contenidos de la secuencia de comandos pero no la clase de Apex. La selección de clase también está disponible mediante la API de metadatos como Package.uninstallClass. Esto está representado en package.xml como un elemento de <uninstallClass>foo</uninstallClass>. 93 Capítulo 5 Superación de la revisión de seguridad En este capítulo... • • • • • • • • • • Acerca de la revisión de seguridad Pasos en la revisión de seguridad El cuestionario de la revisión de seguridad Creación de una organización de publicación de AppExchange Cambio de la organización de publicación de AppExchange Actualización de la versión del paquete en la lista de AppExchange Envío de una aplicación móvil al proceso de revisión de seguridad Envío de un paquete de extensión para someterlo a la revisión de seguridad Recursos para la revisión de seguridad Preguntas más frecuentes sobre la revisión de seguridad Salesforce.com revisa todas las aplicaciones nuevas para asegurarse de cumplen con las normas de seguridad. Las aplicaciones deben cumplir o sobrepasar estos requisitos para obtener la certificación. Las aplicaciones que ya están certificadas también se someten a una revisión anual. La seguridad de la información del cliente es fundamental para nuestro éxito continuado mutuo. Es necesario hacer las cosas bien desde el principio para que nuestros clientes puedan tener plena confianza en Force.com como la plataforma que desean para sus aplicaciones corporativas principales. Este capítulo contiene directrices y tareas específicas que le ayudarán a asegurarse de que sus aplicaciones superan el proceso de revisión de seguridad de AppExchange. 94 Superación de la revisión de seguridad Acerca de la revisión de seguridad Acerca de la revisión de seguridad La revisión de seguridad es un proceso diseñado para evaluar la seguridad adoptada en las organizaciones de los socios. Además, la finalidad de la revisión es garantizar que todas las aplicaciones publicadas en AppExchange cumplen las mejores prácticas de la industria en relación con los estándares de seguridad. Para conocer la información más reciente sobre la revisión de seguridad, visite http://wiki.developerforce.com/page/Security_Review. La revisión de seguridad de AppExchange: • • • Da garantías a los clientes para que confíen en que las aplicaciones de terceros funcionan correctamente con sus aplicaciones de Salesforce. Ayuda a los socios a ofrecer aplicaciones que abarquen varios sistemas y que cumplan con las necesidades de los usuarios de AppExchange. Permite que salesforce.com facilite las relaciones abiertas entre los clientes, los desarrolladores de terceros y los proveedores de aplicaciones, ya que proporciona un ecosistema seguro. El ámbito de la revisión de seguridad depende del tipo de aplicación. En el proceso se realizarán las pruebas que se indican a continuación para cada tipo de componente incluido en su aplicación. Tipo de aplicación Descripción Ámbito de revisión Force.com Aplicaciones en las que los datos principales, • la lógica y la interfaz de usuario se han • compilado por completo en la plataforma Force.com. La aplicación puede invocar • servicios Web de terceros autorizados, como Amazon, Google, Facebook, etc. • Análisis de código automático Revisión de código manual y pruebas de caja negra Componentes del lado de cliente (Flash y JavaScript) Integraciones y servicios Web Aplicaciones cliente y móviles Aplicaciones que no se ejecutan dentro del entorno de Salesforce. Estas aplicaciones toman la plataforma Force.com como el origen de los datos y utilizan el modelo de desarrollo de cualquier herramienta y plataforma para el que estén diseñados. Los ejemplos clásicos de este tipo de aplicación son las aplicaciones para iPhone y los conectores de Microsoft Outlook. • • • Pruebas prácticas manuales Integraciones y servicios Web Revisión de la arquitectura y pruebas del servidor Web Aplicaciones Web Las aplicaciones que se ejecutan en un entorno • alojado de terceros y se integran con Salesforce, aprovechando la API de servicios • Web de Force.com. Los datos de aplicaciones, la lógica y la interfaz de usuario se pueden • almacenar fuera de Force.com. • Pruebas automáticas y pruebas manuales de caja negra Componentes del lado de cliente (Flash y JavaScript) Integraciones y servicios Web Revisión de la arquitectura y pruebas del servidor Web Pasos en la revisión de seguridad Los pasos del proceso de revisión de seguridad son los siguientes: 95 Superación de la revisión de seguridad Pasos en la revisión de seguridad 1. Prepárese para la revisión de seguridad. • • • • • • • • • Lea las directrices de seguridad descritas en este capítulo. Revise los recursos gratuitos indicados en nuestro sitio de desarrollo en la Nube seguro. Vea nuestro video de seminario Web sobre revisión de seguridad para conocer sugerencias sobre preparación. Revise la lista de comprobación de requisitos. Revise la lista de comprobación del proyecto OWASP Top 10. Ejecute un análisis de código fuente de autoservicio gratuito con respecto al código desarrollado en la plataforma Force.com: Realice un examen de aplicación Web gratuito con respecto a su aplicación Web externa integrada con Force.com. Realice pruebas manuales en su aplicación para asegurarse de que cumple con los requisitos de revisión fuera del alcance de las herramientas. Para obtener más información, consulte: Guía de pruebas de OWASP Solucione los problemas detectados en las pruebas. En general, sea todo lo exhaustivo que pueda en las pruebas, ya que si la preparación no es la adecuada, la aprobación podría retrasarse. Por ejemplo, durante la fase de desarrollo de la aplicación, debería ejecutar el analizador de código varias veces para no tener que dedicar demasiado tiempo a solucionar problemas al final. Si tiene otras preguntas, puede hacer contacto con el equipo de seguridad en horario de oficina a través del vínculo: http://security.force.com/security/contact/ohours. 2. Inicie la revisión de seguridad. Nota: Antes de comenzar el proceso, la aplicación debe estar inscrita en el programa de socios incrustado de ISVforce o Force.com. Si no es así, haga contacto con el AE del proveedor de software independiente o registre un caso en el portal de socios. a. Inicie sesión en AppExchange con las credenciales de su APO. b. Haga clic en su nombre que aparece en la esquina superior derecha y, en el menú desplegable, seleccione Consola de publicación (Publishing Console). c. Haga clic en la ficha Oferta (Offering). d. Seleccione una de estas dos opciones, según sea adecuado para su aplicación. • • Su aplicación es un paquete (entero o una parte) (Your application is a package [entirely or in part]) Su aplicación no es un paquete y solo utiliza la API de Sales force (Your application is not a package and only uses the Salesforce API) e. Haga clic en Guardar. f. Haga clic en Iniciar revisión (Start Review) para su aplicación. En el caso de aplicaciones existentes que deben someterse a una revisión de seguridad posterior, registre un caso en el portal de socios. g. Para cada aplicación, deberá completar una lista de comprobación de seguridad y un cuestionario. Proporcione al equipo de revisión una cuenta de prueba totalmente configurada y otorgue acceso de inicie de sesión a su organización de publicación. h. Deberá proporcionar un entorno de prueba y documentación para su oferta. Además, deberá pagar la tasa anual de la lista. El equipo de revisión realizará pruebas para identificar las posibles vulnerabilidades del código y, si fuera necesario, se pondrá en contacto con usted para hablar sobre el seguimiento. Puede consultar el estado de la revisión de seguridad en el portal de socios. El equipo de revisión realizará pruebas de seguridad tanto en la aplicación como en la red y la proporcionará los resultados que obtenga. 3. Revise los resultados. Hay tres resultados posibles. • Aprobado: tendrá permiso para incluir de inmediato su aplicación en la lista de AppExchange.Puede que se le proporcione un token de API para acceder a las cuentas con Professional Edition. Para obtener más información sobre el programa de socios, incluidos los requisitos de aptitud, visite el sitio Web www.salesforce.com/partners. 96 Superación de la revisión de seguridad • • El cuestionario de la revisión de seguridad Aprobado provisionalmente: se han identificado problemas de riesgo bajo o medio que se pueden solucionar con bastante facilidad y no suponen un riesgo significativo para salesforce.com ni para sus clientes. Tendrá permiso para crear una lista público de su aplicación en AppExchange. Sin embargo, si no soluciona los problemas indicados en el plazo especificado, se retirará la aplicación de AppExchange. Puede que se le proporcione un token de API para acceder a las cuentas con Professional Edition. No aprobado: se han identificado problemas de riesgo elevado durante la fase de pruebas. No podrá incluir su aplicación en la lista en AppExchange hasta que se solucionen todos los problemas y el equipo de seguridad de AppExchange lo haya comprobado. Si la aplicación ya se encuentra en la lista en AppExchange, tendrá 60 días para solucionar los problemas. No recibirá un token de API para acceder a las cuentas con Professional Edition. Pasos clave después de superar la revisión de seguridad Una vez que ha superado la revisión de seguridad, se le considera apto para lo siguiente: • • Incluir su aplicación en una lista pública en AppExchange Solicitar un token de API Nota: Salesforce.com se reserva el derecho de llevar a cabo pruebas aleatorias en las instalaciones o fuera de ellas en las aplicaciones publicadas. Si, durante estas pruebas, observamos que la aplicación ya no cumple algunos de los requisitos de mejores prácticas, se lo notificaremos y le daremos un plazo para que solucione el problema. En casos de gravedad extrema, podríamos eliminar la lista de AppExchange del acceso público. El cuestionario de la revisión de seguridad Al iniciar la revisión de seguridad se ejecuta un cuestionario online en el que se le pide toda la información necesaria para probar la aplicación. Reserve el tiempo suficiente para responder a todas las preguntas, ya que se trata de un cuestionario detallado y exhaustivo. Durante el proceso, puede guardar las respuestas cuando quiera y retomar el cuestionario en otro momento para completarlo. Nota: Responda de la forma más detallada posible. Es mejor pecar por exceso de información que por defecto de esta. Además, cuanta más información tengamos, más rápidas irán las pruebas de la aplicación y podremos aprobarla antes. El cuestionario consiste en una serie de pantallas que le guiarán por la información que necesitamos y que variarán en función de los componentes que haya en su aplicación (es decir, Force.com, basada en Web, híbrida o móviles). 1. Preparación Descripción general de los pasos del cuestionario y de los indicadores de información útil. 2. Información general Su nombre y datos de contacto. 3. Políticas y certificaciones Detalles de la política de seguridad de la información de la compañía y de las certificaciones de esta. Si lo desea, puede cargar los documentos acreditativos. 4. Componentes Los componentes y las tecnologías que se usan en la aplicación. Puede seleccionar los elementos relevantes en una lista de comprobación según el tipo de aplicación. A continuación, le indicamos algunos ejemplos: • Force.com: Apex, Visualforce, API y SSO • Aplicación Web: marcos de trabajo/lenguajes (Java, .NET, Rails, etc.), SSO y Heroku 97 Superación de la revisión de seguridad • • Creación de una organización de publicación de AppExchange Aplicación cliente: aplicación de escritorio, plugin de navegador e implementación de kit de herramientas CTI de Salesforce Aplicación móvil: iOS, Android, Blackberry y Windows 5. Entornos de prueba Detalles de acceso como credenciales de inicio de sesión, vínculos de instalación y datos de ejemplo para entornos de prueba activos y configurados por completo. Dependen del tipo de aplicación. • Force.com: nombres de usuario y contraseñas para todos los niveles de usuario (administrador, usuario final, etc.) en una organización de prueba • Aplicación Web: URL, nombres de usuario y contraseñas para todos los niveles de usuario, claves de API, SSO y configuraciones de OAuth/SAML • Aplicación cliente: URL de instalación, datos e instrucciones de configuración, así como archivos de licencia necesarios, datos de ejemplo asociados, guías de configuración y credenciales • Aplicación móvil: vínculo de instalación aparte para cada tipo de aplicación móvil 6. Reportes Cargue reportes generados en pruebas anteriores. Por ejemplo: • Force.com: reporte del analizador del código de seguridad Nota: Los resultados del analizador del código deben estar limpios antes de enviar la aplicación para su revisión. Si detecta falsos positivos en el reporte del analizador, indique los detalles correspondientes. • • Aplicación Web: reporte del analizador de la aplicación Web Otro: otro reporte o documentación 7. Detalles de la revisión En esta fase se consolida toda la información proporcionada para que pueda comprobar que es correcta y está completa. Puede volver a cualquier pantalla anterior para modificar su información. 8. Pago En este paso se efectúa el pago de la revisión de seguridad a través del servicio de pago Recurly. La información de pago queda guardada, de modo que solo tendrá que indicarla una vez. Si su aplicación es gratuita, no será necesario realizar ningún pago. Creación de una organización de publicación de AppExchange Todas sus aplicaciones y listas de servicios deben publicarse bajo una sola organización de Salesforce, que será su organización de publicación de AppExchange (APO) principal. La APO, que casi siempre coincide con la organización que utiliza para gestionar las licencias, es la organización donde va a gestionar la publicación de AppExchange. Proporciona al perfil detalles que los clientes ven cuando buscan sus listas. Cumpla con las siguientes mejores prácticas para la APO. • Las organizaciones con Developer Edition (DE) donde se crea y se carga la aplicación no deberían designarse como la APO. En su lugar, las organizaciones con DE deberían vincularse a la APO como organizaciones secundarias. De este modo, podrá iniciar sesión en la APO para gestionar todos los paquetes (aplicaciones) y las plantillas de prueba (versiones de ejemplo de su aplicación) que las listas proporcionan, con independencia de la organización que ha utilizado para crear las aplicaciones. Como socio de salesforce.com, tiene una APO y todas las organizaciones vinculadas que necesite. 98 Superación de la revisión de seguridad • • Cambio de la organización de publicación de AppExchange Utilice la misma organización como APO y LMO. De esta manera podrá realizar el seguimiento de los prospectos que la lista genere, así como de los clientes que instalen su aplicación en un lugar. Pida al equipo de marketing de su compañía que complete la lista de la aplicación en su APO. Tenga en cuenta que su lista es información pública a la vista de los clientes y los clientes potenciales. Para crear su APO, haga lo siguiente: 1. Inicie sesión en AppExchange con las credenciales de su LMO. Si no tiene aún una LMO, cree una organización con DE nueva desde el portal de socios y utilice esas credenciales. Si no utiliza las credenciales de la LMO para crear la APO, podrá cambiar en otro momento la organización. 2. Haga clic en su nombre que aparece en la esquina superior derecha y, en el menú desplegable, seleccione Consola de publicación (Publishing Console). Si no ve el vínculo para acceder a la consola de publicación, efectúe los pasos siguientes: a. Haga clic en Lista en AppExchange (List on the AppExchange). b. Se mostrará la página que contiene los términos y condiciones. Lea la información y haga clic en Aceptar. c. Indique si ha publicado una aplicación en AppExchange anteriormente. Pasará a la zona de publicación donde se puede proporcionar la información sobre la aplicación. d. Ingrese la información especificada y haga clic en Guardar (Save). Cambio de la organización de publicación de AppExchange Para crear una lista en AppExchange, deberá iniciar sesión con las credenciales de Salesforce de una organización que ya exista. Se recomienda que la APO y la LMO sean las mismas. Esto significa que debería iniciar sesión en la consola de publicación de AppExchange con la organización donde esté instalada la aplicación de gestión de licencias. En algunos casos, es posible que haya iniciado sesión con otra organización y haya creado en esa sesión la lista de AppExchange. Esto puede suceder cuando no tiene aún una LMO creada o las personas responsables de la lista de AppExchange no tienen acceso a la LMO. Para cambiar su APO, haga lo siguiente: 1. Inicie sesión en AppExchange con las credenciales de su APO. 2. Haga clic en su nombre que aparece en la esquina superior derecha y, en el menú desplegable, seleccione Consola de publicación (Publishing Console). 3. Haga clic en la ficha Publicando (Publishing). 4. Haga clic en Sus organizaciones (Your Organizations). 5. Haga clic en Cambiar mi organización de publicación de AppExchange (Change my AppExchange Publishing Organization). 6. Ingrese las credenciales de la organización que va a designar como su APO. 7. Haga clic en Guardar. Si ya tiene una APO designada, al efectuar estos pasos la organización y todas sus organizaciones vinculadas se trasladarán a la organización nueva. Podrían pasar 30 minutos o más hasta que la aplicación aparezca como asociada con la APO. Para confirmar que se ha completado el proceso, regrese a la sección de inicio de la consola de publicación y haga clic en la ficha Sus paquetes cargados (Your Uploaded Packages). Debería ver su versión del paquete en la lista. Solo puede cambiar su APO si no tiene ninguna lista pública en AppExchange. Si ya ha publicado una lista, debe registrar un caso en el servicio de atención al cliente de Salesforce para cambiar la APO. Tenga en cuenta que la organización con DE donde crea las aplicaciones no debería ser la APO sino que debería estar vinculada a esta. Cuando registre el caso, haga lo siguiente: • • Busque el Id. de organización correspondiente a la LMO. Proporcione la URL de lista de AppExchange y explique que le gustaría cambiar su APO a la organización nueva. 99 Superación de la revisión de seguridad • Actualización de la versión del paquete en la lista de AppExchange Proporcione el Id. de organización correspondiente a la LMO. Actualización de la versión del paquete en la lista de AppExchange Cada vez que actualice el paquete, debería actualizar la lista de AppExchange para señalar la versión más reciente. De esta manera, todos los clientes nuevos obtendrán la versión más reciente de su aplicación. La aplicación actualizada debe cumplir con los criterios siguientes: 1. La aplicación ha superado la revisión de seguridad durante el último año. 2. Ha probado el paquete con el analizador de seguridad y ha solucionado los problemas detectados. 3. El paquete tiene el mismo espacio de nombres que el que ha superado la revisión de seguridad. Para actualizar la versión del paquete en la lista de AppExchange, haga lo siguiente: 1. Cargue la versión más reciente del paquete desde su organización de empaquetado. 2. Inicie sesión en AppExchange con sus credenciales de la APO. 3. Haga clic en la ficha Sus paquetes cargados (Your Uploaded Packages) para ver una lista de todos los paquetes cargados. Debería ver la versión del paquete más reciente que acaba de cargar. Hasta que aparezca en esta lista, pueden pasar varios minutos tras su carga. 4. En la columna Revisión de seguridad (Security Review), la versión del paquete que ha superado el control contiene la fecha en la que lo hizo. Las versiones posteriores mostrarán un estado "No revisada nunca" (Never Reviewed) en la misma columna. Haga clic en Iniciar revisión (Start Review) para la versión más reciente que acaba de cargar. 5. Rellene el cuestionario de autoevaluación y haga clic en Enviar (Submit). • • El paquete pasará por el analizador de origen de seguridad y recibirá los resultados por email. Deberá solucionar los errores que el analizador haya detectado. Si su aplicación ha superado la revisión de seguridad durante el último año, la versión nueva del paquete recibirá la aprobación de forma automática y su estado pasará a Revisada (Reviewed). El cambio de estado puede tardar hasta 24 horas. 6. Modifique la lista pública de su aplicación y haga clic en la ficha Oferta (Offering). 7. En la sección "Sus paquetes cargados" (Your Uploaded Packages), haga clic en el vínculo Cambiar paquetes (Change Packages). 8. Traslade la versión más reciente del paquete a la sección Seleccionadas (Selected) de la lista de selección múltiple. 9. En la lista de selección de versión, seleccione la más reciente del paquete. 10. Haga clic en Guardar. Nota: Si la última revisión de seguridad se ha llevado a cabo hace más de un año, el equipo encargado de la revisión de seguridad se pondrá en contacto con usted para programar otra revisión. Hasta ese momento, podrá continuar mostrando en la lista la versión más nueva. Envío de una aplicación móvil al proceso de revisión de seguridad La mayoría de los requisitos que se exigen a las aplicaciones cliente también se exigen a las aplicaciones móviles y algunos de los que correspondientes a las aplicaciones Web también se aplicarán en función de la compilación de la aplicación. Los escenarios más habituales son los siguientes: • La aplicación móvil tiene un componente de Force.com que se asienta en la organización del cliente. Este debería ser un paquete gestionado y debería someterse al proceso de revisión de seguridad para una aplicación incluida en paquetes. 100 Superación de la revisión de seguridad • Envío de un paquete de extensión para someterlo a la revisión de seguridad La aplicación móvil utiliza las API únicamente para comunicarse con Salesforce. En este caso, siga el proceso para someter una aplicación de solo API a la revisión de seguridad. Para la realización de pruebas pedimos que nos proporcione una aplicación para todas las plataformas en las que tiene pensado hacer la distribución. Aceptamos publicaciones de prueba o implementaciones ad-hoc para iOS. Para otras plataformas aceptamos la aplicación en un archivo (.APK, COR, etc.). Al igual que sucede para las aplicaciones compuestas, si hay llamadas a cualquier otro sistema distinto de Salesforce, le pediremos un reporte de Burp. Si la aplicación móvil tiene un componente Web, aunque sea opcional, deberá facilitar un reporte de Burp. Como se requiere con cualquier otra aplicación: • • Debería haber una lista para su aplicación en AppExchange. La lista de AppExchange debería vincularse con su APO. Envío de un paquete de extensión para someterlo a la revisión de seguridad Los proveedores de software independientes (ISV) crean paquetes de extensión cuando quieren proporcionar funciones complementarias a sus aplicaciones. Estos paquetes también son útiles para que las ediciones de Salesforce como PE y GE sean compatibles con su aplicación. En otros casos, estos paquetes actúan de "puente" para que la aplicación del ISV funcione con otra aplicación. Todos los paquetes, sean de base o de extensión, deben someterse a una revisión de seguridad y el proceso en ambos tipos de paquetes es el mismo. Algunos paquetes de extensión son muy pequeños: por ejemplo, algunos vínculos o botones para llamar a componentes del paquete base. Sea cual sea el tamaño del paquete de extensión, el proceso que debe seguirse es el mismo. La única diferencia es que el proceso será más rápido para los paquetes más pequeños. El envío de un paquete de extensión para someterlo a la revisión de seguridad de AppExchange sigue un proceso similar al del paquete de base. 1. Cargue el paquete de extensión (debería ser gestionado y editado como su paquete de base). Recuerde que el paquete de extensión solo se puede cargar desde una organización diferente de la correspondiente al paquete de base. 2. En la lista de AppExchange, vincule la organización donde se ha creado el paquete de extensión. Este debería aparecer en la lista de paquetes debajo de sus listas. 3. Haga clic en Iniciar revisión (Start Review) y complete los campos del formulario. Asegúrese de que la cuenta de prueba incluye los paquetes de base y de extensión. 4. Envíe el paquete para su revisión. Es conveniente que el equipo de seguridad de Salesforce revise y apruebe todos los paquetes de extensión. No importan lo pequeño que sea un paquete, cualquiera puede introducir vulnerabilidades en la plataforma. Siga el mismo proceso del autoanálisis del código antes de enviar el paquete para su revisión. Si el paquete de extensión tuviera componentes que funcionen con una aplicación externa, ejecute un análisis de Burp y envíe los resultados correspondientes. Recursos para la revisión de seguridad Estos recursos pueden ayudarle en la preparación para la revisión de seguridad. • • • Proceso de revisión de seguridad Lista de comprobación de los requisitos de la revisión de seguridad Recursos para el desarrollo en la Nube seguro de Force.com 101 Superación de la revisión de seguridad • • • • • • Preguntas más frecuentes sobre la revisión de seguridad Directrices de codificación segura de Force.com Proyecto abierto de seguridad de aplicaciones Web (OWASP, siglas en inglés) 10 problemas principales de OWASP Guía de pruebas de OWASP Guía de codificación segura de OWASP Referencia rápida de prácticas de codificación segura de OWASP Preguntas más frecuentes sobre la revisión de seguridad Esta sección contiene una lista de las preguntas más frecuentes planteadas sobre la revisión de seguridad. • • • • • • • • • • • • • • • • • • • • • ¿Es obligatoria la revisión de seguridad de AppExchange? ¿En qué consiste la revisión de seguridad? ¿Por qué debo someter la aplicación a una revisión de seguridad? ¿Cuánto tarda el proceso de la revisión de seguridad? ¿Cada cuánto tiempo es obligatorio realizarla? ¿Hay alguna tasa? ¿Las aplicaciones gratuitas deben pagar por someterse a una revisión de seguridad? ¿Por qué tengo que hacer pruebas en mi aplicación antes de la revisión si el equipo de seguridad va a hacerlas de todos modos? ¿Cuáles son los motivos habituales que impiden que se supere la revisión de seguridad? ¿Puedo enviar mi aplicación para someterla a la revisión de seguridad antes de que esté terminada con el fin de tener este proceso hecho pronto? ¿Por qué obtengo un error cuando solicito una revisión de seguridad? Si no tengo ninguna respuesta “No” en el cuestionario de seguridad, o no dispongo de documentación formal y detallada, ¿suspenderé la revisión? ¿Por qué el equipo de revisión tiene que hacer pruebas en la parte X o Y de mi oferta? ¿Debo solucionar todos los problemas que el equipo de revisión de seguridad detecte? ¿Por qué el equipo de revisión no puede enviarme todas las instancias de todo lo que encuentre en mi revisión? ¿Qué sucede después de superar la revisión de seguridad? ¿Qué sucede si no se aprueba mi aplicación? ¿Cuál es la diferencia entre Aprobada, Aprobación provisional y Con fallos? Si actualizo mi aplicación, ¿debe pagar de nuevo la tasa de la revisión de seguridad para vuelva a ser revisada? Cuando creo un paquete gestionado nuevo (en realidad, una actualización de mi primera aplicación), ¿tendré que pagar de nuevo la tasa para que vuelva a ser revisada la seguridad de la aplicación? ¿Por qué debo realizar revisiones de seguridad periódicas? Entiendo que las soluciones revisadas pueden funcionar con las organizaciones con PE y GE. ¿Cómo funciona esto? ¿Es obligatoria la revisión de seguridad de AppExchange? Sí, todas las aplicaciones de AppExchange y OEM deben superar una revisión de seguridad. ¿En qué consiste la revisión de seguridad? El proceso de revisión de seguridad consta de dos tipos de evaluaciones: • Cualitativa: ronda de preguntas y respuestas para revisar las políticas y los procedimientos. 102 Superación de la revisión de seguridad • ¿Por qué debo someter la aplicación a una revisión de seguridad? Cuantitativa: realización de una prueba de penetración de la red y la aplicación (consulte Ámbito). ¿Por qué debo someter la aplicación a una revisión de seguridad? Queremos que AppExchange sea el ecosistema de aplicaciones On-Demand de mayor confianza del mercado. La revisión de seguridad nos ayuda a crear esta atmósfera de confianza, ya que revisamos que las aplicaciones cumplan con un conjunto de estándares de seguridad y mejores prácticas. Esta revisión proporciona credibilidad a AppExchange y sus aplicaciones y, a cambio, esta confianza incrementa el número de clientes. ¿Cuánto tarda el proceso de la revisión de seguridad? ¿Cada cuánto tiempo es obligatorio realizarla? El proceso de revisión tarda entre 5 y 7 semanas desde el momento en que dispongamos de todos los elementos y siempre y cuando se cumplan las condiciones siguientes: • • • • Su documentación es completa y precisa. El entorno de prueba es completo, está configurado por completo e incluye toda la información necesaria. Ha cumplido con todos los requisitos. Su actuación está dentro de las directrices del acuerdo. Se trata de un proceso periódico. Cuando se acerque la fecha de caducidad de la revisión de seguridad, nos pondremos en contacto con usted para revisar de nuevo la aplicación. ¿Hay alguna tasa? Haga clic aquí para obtener más información sobre las tasas de las listas. ¿Las aplicaciones gratuitas deben pagar por someterse a una revisión de seguridad? No, la revisión de las aplicaciones gratuitas se hace sin costo alguno. Para que pueda ser así, la aplicación debe ser gratuita durante todo el año. ¿Por qué tengo que hacer pruebas en mi aplicación antes de la revisión si el equipo de seguridad va a hacerlas de todos modos? Las pruebas que realice antes de la revisión le permitirán enviar la mejor aplicación posible para que supere la revisión a la primera. Nuestra revisión de seguridad se basa en las mejores prácticas y es muy exhaustiva. Todo el esfuerzo que haga antes de la revisión se verá compensado en el proceso. Tenga en cuenta que la realización de nuevas pruebas conllevan un significativo retraso para la aplicación y el proceso en su conjunto. ¿Cuáles son los motivos habituales que impiden que se supere la revisión de seguridad? La lista siguiente enumera, sin un orden específico, los motivos principales que han impedido la aprobación de una aplicación. Para obtener más información, consulte lista de comprobación del proyecto OWASP Top 10. 103 Superación de la revisión de seguridad • • • • • • • • • • ¿Puedo enviar mi aplicación para someterla a la revisión de seguridad antes de que esté terminada con el fin de tener este proceso hecho pronto? Inyección (SQL, XML etc.) Cross-Site Scripting (XSS) Gestión de sesión y autenticación dañada Referencias a objetos directos no seguras Cross Site Request Forgery (CSRF/XSRF) Configuración de seguridad errónea Almacenamiento criptográfico no seguro Error en la restricción del acceso a URL Protección insuficiente de la capa de transporte Redireccionamientos y avances no validados ¿Puedo enviar mi aplicación para someterla a la revisión de seguridad antes de que esté terminada con el fin de tener este proceso hecho pronto? No. Es muy importante que la oferta enviada sea la versión que tiene previsto distribuir y que sea completa. Si no es el caso, no podremos detectar correctamente los problemas y habrá que hacer una segunda revisión completa, lo que originará un gran retraso. ¿Por qué obtengo un error cuando solicito una revisión de seguridad? Los errores que se describen a continuación pueden suceder cuando se solicita una revisión de seguridad para una lista. Esta asociación ya está vinculada a otro perfil de proveedor de AppExchange. Este error significa que la cuenta del socio está asociada a una organización de Salesforce diferente. Esta organización es la que actúa como su organización de publicación de AppExchange (APO) y es la única desde la que puede publicar en AppExchange. Para solucionar este error, vincule las organizaciones donde ha desarrollado la aplicación a su APO. Si no sabe qué organización es su APO, registre un caso en el portal de socios para obtener ayuda. Para poder someter su aplicación a la revisión de seguridad, usted debe ser un socio de salesforce.com y conectar la información de asociación con el perfil de proveedor. Para hacerlo, inicie sesión con la APO principal y modifique el perfil de proveedor. El perfil de proveedor de AppExchange (es decir, el que está asociado con la APO) debe estar vinculado con su cuenta de socio antes de poder enviar una lista a la revisión de seguridad. Este requisito simplifica el flujo del proceso de revisión, ya que garantiza que los socios tienen acceso al portal de socios y han aceptado los términos y condiciones. Para solucionar este error, inicie sesión en la página Publishing de AppExchange con las credenciales de la APO y agregue la información de la cuenta de socio a su perfil de proveedor. Si no tengo ninguna respuesta “No” en el cuestionario de seguridad, o no dispongo de documentación formal y detallada, ¿suspenderé la revisión? No, no la suspenderá. Aunque en las preguntas se pida documentación formal y detallada, entendemos que dependiendo del tamaño y la madurez de la compañía, a veces no es posible facilitarlo. Hemos intentado que el cuestionario sea genérico y pueda valer para todos los tipos de compañías. Por ejemplo, las compañías más pequeñas pueden enviarnos una lista de comprobación informal en lugar de la documentación formal de sus políticas de seguridad. Si tiene que responder “No” a 104 Superación de la revisión de seguridad ¿Por qué el equipo de revisión tiene que hacer pruebas en la parte X o Y de mi oferta? algunas de las preguntas, ingrese los comentarios que expliquen su respuesta en el cuadro oportuno. Sabemos que la puntuación no puede ser blanco o negro, por lo que valoramos los distintos elementos que entran en juego, como el tamaño de la compañía, su madurez, etc. ¿Por qué el equipo de revisión tiene que hacer pruebas en la parte X o Y de mi oferta? Nuestro objetivo es realizar pruebas en todas las partes de la oferta para garantizar que nuestros clientes mutuos y sus datos no corren ningún riesgo. Esto incluye a las aplicaciones o servicios Web externos, obligatorios u opcionales, las aplicaciones cliente o móviles, obligatorias u opcionales, y todos los elementos de Apex y Visualforce (en paquetes o no) que se incluyen en la oferta. Si no está seguro si debería incluir alguna parte de la oferta, inclúyala por si acaso. El equipo de revisión no realizará pruebas en las partes de la oferta que creamos que no entran en nuestro objetivo pero si falta una parte obligatoria, la revisión sufrirá un retraso. ¿Debo solucionar todos los problemas que el equipo de revisión de seguridad detecte? Sí. A menos que se indique lo contrario en los reportes de prueba, debe solucionar todas las clases de problemas en la aplicación completa que le envíe el equipo de revisión. ¿Por qué el equipo de revisión no puede enviarme todas las instancias de todo lo que encuentre en mi revisión? La revisión de seguridad consiste en una revisión de caja negra y con el tiempo limitado. Dado el tiempo y la visibilidad que tiene el equipo de revisión para cada proceso, sería poco práctico proporcionar esa información. Los resultados deberían interpretarse como ejemplos y deberían solucionarse todos los problemas detectados en las categorías proporcionadas en la oferta. ¿Qué sucede después de superar la revisión de seguridad? Puede incluir su aplicación en una lista pública en AppExchange. También podrá solicitar un token de API si su aplicación utiliza las API de SOAP o de REST. ¿Qué sucede si no se aprueba mi aplicación? No puede publicar su aplicación en AppExchange hasta que se hayan analizado todos los resultados y se haya realizado una revisión de seguimiento. ¿Cuál es la diferencia entre Aprobada, Aprobación provisional y Con fallos? Si en la revisión de seguridad ha obtenido un resultado Aprobada o Aprobación provisional, será que no hemos encontrado vulnerabilidad de riesgo alto en su aplicaciones. En el caso de la aprobación provisional, es probable que hayamos encontrado vulnerabilidades de riesgo medio. Para solucionar los problemas, acordaremos un plazo aceptable para ambas partes. Mientras tanto, dispondrá del token de API y podrá incluir su aplicación en AppExchange. Si ha obtenido un resultado Con fallo, lo primero que debe hacer es solucionar los problemas detectados antes de incluir la aplicación en AppExchange o de obtener acceso al token de API. 105 Superación de la revisión de seguridad Si actualizo mi aplicación, ¿debe pagar de nuevo la tasa de la revisión de seguridad para vuelva a ser revisada? Si actualizo mi aplicación, ¿debe pagar de nuevo la tasa de la revisión de seguridad para vuelva a ser revisada? No. La revisión de seguridad es un proceso que se realiza en un momento dado con cierta periodicidad que determina salesforce.com (normalmente en un intervalo entre 6 meses y 2 años). Cuando se carga una versión de paquete nueva en AppExchange y se intenta asociarla a su lista, ejecutamos un análisis de código de origen automático con relación al código de Force.com para identificar las posibles vulnerabilidades en la seguridad. Si detectamos algún problema, le enviamos un reporte por email y le pedimos que solucione los problemas de forma inmediata. Nos reservamos el derecho a llevar a cabo pruebas de penetración de seguridad aleatorias en su aplicación durante el año. Todo esto está incluido en la tasa de lista que paga anualmente y no supone ningún cargo adicional. Sin embargo, si observamos que no ha cumplido nuestros estándares de seguridad y mejores prácticas, podríamos eliminar su aplicación de AppExchange. Cuando creo un paquete gestionado nuevo (en realidad, una actualización de mi primera aplicación), ¿tendré que pagar de nuevo la tasa para que vuelva a ser revisada la seguridad de la aplicación? No. Si desarrolla una versión nueva en un paquete que ya está aprobado, cuando haga clic en "Iniciar revisión" (Start Review) para la versión nueva, esta se aprobará de forma automática y podrá asociarla a su lista. ¿Por qué debo realizar revisiones de seguridad periódicas? Requerimos someter todas las aplicaciones a revisiones de seguridad periódicas (normalmente, en intervalos desde 6 meses a 2 años, según el riesgo de la aplicación). Todos los años salen nuevas versiones de las aplicaciones y necesitamos asegurarnos de que nuestras soluciones integradas siguen cumpliendo con las mejores prácticas publicadas en materia de seguridad. Además, mantenemos el proceso de revisión al día con los requisitos de la industria para poder así comprobar las vulnerabilidades de seguridad más recientes. Es importante garantizar que su aplicación supera también estos requisitos nuevos. Entiendo que las soluciones revisadas pueden funcionar con las organizaciones con PE y GE. ¿Cómo funciona esto? Los socios aptos pueden solicitar un token de API a través del portal de socios. Este se utiliza para todas las llamadas de API para esa aplicación concreta. Después de la revisión de seguridad, y si es un socio apto, permitiremos que las transacciones de API identificadas con el token de API funcionen con las organizaciones con Professional Edition y Group Edition. Vea ejemplos de código en la página Uso de ClientID. 106 Capítulo 6 Publicación de la aplicación En este capítulo... • • • • • • • • • • • • • ¿Qué es AppExchange? Gestión de las organizaciones de Salesforce Publicación de la aplicación o el servicio Creación o modificación de listas Marca de la aplicación Envío de la lista para su aprobación Registro del paquete y elección de la configuración de la licencia Notificaciones por email Uso de Checkout de AppExchange Preguntas más frecuentes sobre Checkout de AppExchange Trabajo con prospectos de AppExchange Reportes de análisis para publicadores Preguntas más frecuentes sobre AppExchange En esta sección se explica cómo se realiza la publicación y la distribución de la aplicación en paquetes en AppExchange. Todas sus aplicaciones y listas de servicios deben publicarse bajo una sola organización de salesforce.com, que será su organización de publicación de AppExchange (APO). En la mayoría de los casos, la APO coincide con la organización que utiliza para gestionar las licencias. Puede vincular una o varias organizaciones con Developer Edition a la APO como organizaciones secundarias. De este modo, podrá iniciar sesión en la APO para gestionar todas las aplicaciones en paquetes y las plantillas de prueba (versiones de ejemplo de su aplicación) que las listas proporcionan, con independencia de la organización que ha utilizado para crear las aplicaciones. 107 Publicación de la aplicación ¿Qué es AppExchange? ¿Qué es AppExchange? Vender en AppExchange Bienvenido a AppExchange, un mercado completo dedicado a las aplicaciones y los socios de consultoría en el modelo Cloud Computing. Antes de poner su propia aplicación o servicio a disposición pública de los clientes potenciales (proceso denominado también publicación de una lista), debe ser un socio de salesforce.com. Si no es un socio, visite http://www.salesforce.com/partners para obtener más información. Antes de empezar Si va a publicar aplicaciones en AppExchange, instale la aplicación gratuita Aplicación de gestión de licencias (LMA, siglas en inglés). Gracias a la LMA podrá recibir automáticamente una notificación cada vez que su paquete (aplicación) se instale o desinstale, de modo que podrá realizar el seguimiento de los usuarios y avisar a estos cuando publique alguna actualización. ¿Cómo funciona AppExchange? El poder creativo subyacente a todas las aplicaciones de AppExchange reside en un usuario de Salesforce. AppExchange constituye un lugar donde crear, publicar o instalar aplicaciones y extensiones en Salesforce. El funcionamiento de AppExchange de Force.com se explica de un modo breve a continuación: Crear Cualquier usuario de Salesforce inicia el proceso cuando crea un objeto personalizado, una ficha personalizada o un conjunto de tableros y reportes que mejoran su negocio. Estos clientes pueden compartir sus personalizaciones, como aplicaciones o extensiones, con otros usuarios de Salesforce. Publicar Cualquier cliente de Salesforce puede registrar y publicar sus aplicaciones en AppExchange. También puede crear una demostración de la funcionalidad incluida en la aplicación para que los clientes la vean antes de instalarla. Instalar Los administradores de Salesforce pueden instalar cualquier aplicación publicada en AppExchange. La instalación de una aplicación publicada desde AppExchange es una tarea segura y sencilla: Examinar Vea las descripciones, las opiniones y las demostraciones de cualquier aplicación de AppExchange. Con esta información, podrá elegir la aplicación que mejor se adapte a sus necesidades. Prueba Revise una demostración totalmente funcional de la aplicación como usuario de solo lectura y planifique su implementación. Instalar Agregue la aplicación y todos sus componentes al entorno de Salesforce. Implementar Dé acceso inmediato a sus usuarios a la aplicación o personalícelo para un grupo escogido de usuarios. 108 Publicación de la aplicación ¿Quién puede utilizar AppExchange? ¿Quién puede utilizar AppExchange? Cualquiera puede explorar y probar las listas de AppExchange. Los administradores y usuarios de Salesforce que cuenten con el permiso “Descargar paquetes de AppExchange” pueden instalar aplicaciones de AppExchange. Para poder publicar una aplicación en AppExchange, un usuario debe tener los permisos “Crear paquetes de AppExchange” y “Cargar paquetes de AppExchange”. Gestión de las organizaciones de Salesforce Decida cómo quiere estructurar sus organizaciones de salesforce.com. Todas sus aplicaciones y listas de servicios deben publicarse bajo una sola organización de salesforce.com, que será su organización de publicación de AppExchange (APO) principal. La APO, que casi siempre coincide con la organización que utiliza para gestionar las licencias, es la organización donde va a gestionar la publicación de AppExchange. Proporciona al perfil detalles que los clientes ven cuando buscan sus listas. Las organizaciones con Developer Edition donde crea y carga la aplicación deberían estar vinculadas a la APO como organizaciones secundarias. De este modo, podrá iniciar sesión en la APO para gestionar todos los paquetes (aplicaciones) y las plantillas de prueba (versiones de ejemplo de su aplicación) que las listas proporcionan, con independencia de la organización que ha utilizado para crear las aplicaciones. Como socio de salesforce.com, tiene una APO y todas las organizaciones vinculadas que necesite. Se recomienda utilizar la misma organización como su APO y su organización de gestión de licencias (LMO). De esta manera, podrá realizar el seguimiento de los prospectos que la lista genere, así como de los clientes que instalen su aplicación en un lugar. Para gestionar sus organizaciones, haga clic en la ficha Publicando en AppExchange e inicie sesión. Siga el vínculo Sus organizaciones (Your Organizations). En esta página, puede hacer lo siguiente: • • • • Hacer clic en Cambiar mi organización de publicación de AppExchange e ingresar las credenciales de la organización que va a designar como su APO. Si ya tiene una APO designada, al efectuar estos pasos la organización y todas sus organizaciones vinculadas se trasladarán a la APO nueva. Solo puede cambiar su APO si no tiene ninguna lista pública en AppExchange. Si ya ha publicado una lista, debe registrar un caso en el servicio de atención al cliente de Salesforce para cambiar la APO. Tenga en cuenta que la organización con Developer Edition donde crea las aplicaciones no debería ser la APO sino que debería estar vinculada a esta. Ver una lista de las organizaciones vinculadas si ha iniciado sesión en la APO. Ver la información de la APO si ha iniciado sesión en una organización vinculada. Haga clic en Vincular organización nueva (Link New Organization) si ha iniciado sesión en la APO y ha ingresado las credenciales de la organización que va a agregar. En la lista de las organizaciones vinculadas se proporciona la información siguiente: Campo Descripción Organización El nombre de la organización vinculada Id. El Id. de la organización vinculada Edición de Salesforce La edición de la organización vinculada Paquetes El número de paquetes cargados desde la organización vinculada Plantillas de prueba (Trial Templates) El número de plantillas de prueba cargadas desde la organización vinculada Fecha de vinculación (Linked On) La fecha en la que la organización se vinculó a la APO. 109 Publicación de la aplicación Publicación de la aplicación o el servicio Publicación de la aplicación o el servicio Para que su aplicación o servicio de consultoría esté disponible en AppExchange, debe crear una lista del modo siguiente: 1. Inicie sesión en su organización de publicación de AppExchange (APO) o en la organización que designe como su APO cuando haya iniciado sesión. 2. Cree un perfil de proveedor. 3. Cree una lista nueva. 4. Si su lista es una aplicación y no un servicio, envíe el paquete de la aplicación para que se someta al proceso de revisión de seguridad. 5. Una vez que la aplicación esté aprobada, haga clic en Clasificar como público para que su lista esté disponible en la comunidad de AppExchange. Los servicios de consultoría públicos no necesitan someterse a una revisión. Publicación de aplicaciones en AppExchange La inclusión de su aplicación en una lista en AppExchange es flexible. No tiene que limitarse a una sola lista. Puede publicar una aplicación destinada a una necesidad de negocio genérica y también publicar distintas variaciones de la aplicación específicas para determinados mercados verticales. Una vez que ha creado un perfil de proveedor y cargado su aplicación, puede comenzar a crear una lista de aplicaciones; para ello, hay que hacer clic en Crear lista nueva (Create New Listing) en la página de inicio de Publishing. Las listas constituyen la herramienta de marketing principal para promocionar la aplicación. Cuanta más información agregue a estas, más probable será que los usuarios la encuentren. Describa su solución, los precios, el servicio de asistencia y otros detalles para que los posibles clientes puedan determinar si su solución es la adecuada para ellos. Cargue videos informativos, documentos técnicos y cualquier otro contenido que contribuya a que el cliente conozca con mayor profundidad las funciones de su aplicación. Para incluir su aplicación en una lista pública, esta deberá superar la revisión de seguridad de AppExchange. La finalidad de esta revisión es garantizar que la instalación de la aplicación o la plantilla de prueba es segura para los clientes. Creación o modificación del perfil de proveedor El perfil de proveedor que cree para su APO incluye la información sobre la compañía que quiere que esté visible para los clientes. En las listas la información de perfil se encuentra en la ficha Proveedor (Provider). También puede crear un perfil de proveedor para sus organizaciones vinculadas aunque este no será público. En estos momentos, puede indicar un servicio por perfil de proveedor. Para modificar el perfil, debe iniciar sesión con las credenciales de la organización de destino y hacer clic en la opción Su perfil de proveedor (Your Provider Profile) que verá en la esquina superior izquierda de la página de Publishing. Puede indicar la información siguiente: Campo Descripción Nombre de proveedor (Provider Name) El nombre de su compañía. Este es el único campo obligatorio. Sitio Web La URL del sitio Web de su compañía. Email El email de contacto de su compañía. Teléfono El teléfono de contacto de su compañía. 110 Publicación de la aplicación Creación o modificación de listas Campo Descripción Oficina central (Headquarters) La dirección completa de la oficina central de su compañía en la que no debe faltar la ciudad, el estado (si procede) y el país. Año de fundación (Year Founded) El año en que se fundó la compañía. Empleados El número de empleados que trabajan en la compañía. Descripción Un párrafo o dos breves en los que se hable sobre la compañía. Asociación con Salesforce.com (Salesforce.com La cuenta de socio de Salesforce.com de la compañía. Este Partnership) campo es obligatorio para incluir su aplicación o servicio en una lista pública en AppExchange. Haga clic en Cambiar asociación (Change Partnership) para crear un vínculo entre la cuenta del portal de socios y el perfil de proveedor de AppExchange. De este modo, la información de certificación, proyecto, satisfacción de los clientes y los datos del socio se mostrarán en AppExchange. Importante: Como solo puede vincular su cuenta del portal de socios de Salesforce.com una vez, asegúrese de vincularla a su APO. Logotipo El logotipo de su compañía. Ingrese la ubicación de un archivo o haga clic en Examinar... para buscar el logotipo. Creación o modificación de listas Las listas constituyen su herramienta de marketing principal para promocionar su aplicación o servicio de consultoría en AppExchange. Cuanta más información agregue a estas, más probable será que los usuarios la encuentren. Cree una lista para cada aplicación o servicio de consultoría. Modifique las fichas siguientes. Se trata de las fichas que los usuarios ven cuando tienen su lista delante. • • • • • • • • Ficha Básica (Basic): para las aplicaciones y los servicios de consultoría Ficha Oferta (Offering): para las aplicaciones Ficha Precios (Pricing): para las aplicaciones Ficha Especificaciones (Specs): para las aplicaciones Ficha Soporte: para las aplicaciones Ficha Experiencia (Experience): para los servicios de consultoría Ficha Contenido cargado (Uploaded Content): para las aplicaciones y los servicios de consultoría Ficha Prospectos (Leads): para las aplicaciones y los servicios de consultoría Ficha Básico En la ficha Básico (Basic) se incluye información que ayuda a los clientes a encontrar y evaluar su lista. Campo Descripción Título de la lista (Listing Title) (Obligatorio) El nombre de la lista. 111 Publicación de la aplicación Ficha Oferta (aplicaciones) Campo Descripción Línea de identificación (Tag Line) (Obligatorio) Una frase breve que describe la lista. Categorías (Obligatorio) Las categorías que los clientes utilizan para examinar su lista. Si la lista es una aplicación, salesforce.com asigna las categorías poco después de que la lista se haya hecho pública. De este modo, aumentan las posibilidades de que los clientes potenciales encuentren su aplicación. Para cambiar las categorías de una aplicación, debe registrar un caso en el portal de socios. Información de contacto (Contact Information) (Obligatorio) Email de negocio/marketing: la dirección de (privada y utilizada con salesforce.com) email en la que salesforce.com puede hacer contacto con usted para tratar temas relacionados con el negocio o el marketing. (Obligatorio) Email técnico: la dirección de email en la que salesforce.com puede hacer contacto con usted para tratar temas técnicos o relacionados con la seguridad. (Obligatorio) Email para opiniones: la dirección de email en la que desea recibir las notificaciones por email relacionadas con las opiniones y comentarios sobre su lista. Las direcciones de email anteriores no se comparten con los clientes. Información de contacto (pública) Email: la dirección de contacto de la compañía para los clientes potenciales. Teléfono: el número de teléfono de contacto de la compañía para los clientes potenciales. Sitio Web: la URL del sitio Web de la compañía. Descripción breve (Brief Description) (Obligatorio) Un resumen de la lista. El número máximo de caracteres permitidos es de 255. Aspectos destacados (Highlights) Funciones clave relativas a su lista. Descripción completa (Full Description) Una descripción detallada de la lista. El número máximo de caracteres permitidos es de 1200. Ficha Oferta (aplicaciones) En la ficha Oferta (Offering) debe decidir cómo pueden instalar los clientes su aplicación. Campo Descripción ¿Qué tipo de aplicación va a incluir en la lista? (What kind of application are you listing?) Un paquete es el contenedor que reúne todos los objetos y fichas personalizados y estándares que conforman su aplicación. Seleccione si la lista utiliza un paquete o la API. En caso de que la lista incluya un paquete y la API, seleccione la opción API. 112 Publicación de la aplicación Elección de la mejor opción de instalación Campo Descripción ¿Cómo deberían los usuarios instalar su aplicación? (How should people install your application?) Consulte el apartado Elección de la mejor opción de instalación. Habilitar inscripción de prueba gratuita de Marque aquí si quiere permitir a los clientes su inscripción Salesforce y su aplicación (Enable free trial sign up para una prueba gratuita de 30 días de Salesforce y su of Salesforce and your application) aplicación. Para obtener más información, consulte el apartado ¿Cómo puedo ofrecer una prueba gratuita de mi aplicación? Vincular uno o varios paquetes cargados a Si su lista incluye un paquete, haga clic en Cambiar paquetes esta lista (Link one or more of your uploaded (Change Packages) e incluya todas las versiones de la packages to this listing) aplicación. Cada versión del paquete se puede asociar únicamente con una lista cada vez. Seleccione la versión más reciente de la Seleccione la versión que quiere que los clientes instalen. La aplicación (Select the latest version of your información correspondiente a esta versión se muestra en la application) ficha Especificaciones (Specs) de la lista. Cada versión del paquete se puede asociar únicamente con una lista cada vez. Vincular una o varias plantillas de prueba a Si va a permitir el uso de una prueba gratuita, deberá asociar esta lista (Link one or more of your trial al menos una plantilla de prueba. templates to this listing) Seleccione la plantilla de prueba de inscripción (Select the sign-up trial template) Seleccione la plantilla que los clientes recibirán cuando se inscriban en la prueba gratuita. Para obtener más información sobre las plantillas de prueba, consulte el apartado ¿Cómo puedo ofrecer una prueba gratuita de mi aplicación? Prueba Marque aquí si quiere que los usuarios de Salesforce puedan probar una versión de solo lectura de su aplicación. Consulte el apartado Asociación de una prueba con su lista. Elección de la mejor opción de instalación Cuanto más fácil sea instalar y probar la aplicación, más probable será que los usuarios se conviertan en clientes de pago. En AppExchange, los posibles clientes hacen clic en Obtener ahora (Get It Now) en la lista de aplicaciones y responden algunas preguntas sencillas para guiarles por el proceso de instalación. El flujo depende de la respuesta que dé a la pregunta ¿Cómo deberían los usuarios instalar su aplicación? cuando cree la lista. Opción Consideraciones Instalarla directamente desde AppExchange Si su aplicación es un paquete, normalmente es la opción más sencilla. Permite que los usuarios instalen su aplicación en su entorno de sandbox o producción de Salesforce a través de la secuencia de instalación de AppExchange sin que usted tenga que hacer nada. (Install it directly from the AppxExchange) Instalarla directamente desde el sitio Web Si su aplicación es un cliente que se puede descargar o necesita de la compañía (Install it directly from your que se instale información adicional, se trata de la mejor company’s website) opción. Una vez que se hace clic en el botón Obtener ahora en la lista de aplicaciones y se aceptan los términos y condiciones, se pasa al sitio Web para completar el proceso de 113 Publicación de la aplicación Asociación de una unidad de prueba con su lista Opción Consideraciones instalación. Asegúrese de que en el sitio Web hay instrucciones claras sobre cómo se descarga la aplicación y realice la configuración que sea necesaria. Si no se puede instalar la aplicación sin su ayuda, descarte esta opción. Contactar con su compañía para ayudarle en la instalación (Contact your company so you can help them install it) Si se requiere ayuda en su instalación o proceso de selección, esta es la única opción posible. Después de aceptar los términos y condiciones, avisa al cliente que se pondrá en contacto con él para ayudarle con la instalación. Asegúrese de que en su compañía hay los recursos necesarios para ayudar a todos los posibles clientes. Habilitar inscripción de prueba gratuita de Esta opción proporciona una prueba gratuita de 30 días de Salesforce y su aplicación (Enable free trial sign up Salesforce y su aplicación. Para conocer los requisitos, consulte of Salesforce and your application) ¿Cómo puedo ofrecer una prueba gratuita de mi aplicación? Asociación de una unidad de prueba con su lista Los usuarios de Salesforce pueden tener otra oportunidad de probar una versión de solo lectura de su aplicación en una organización con Developer Edition. Esta organización, que incluye los datos de ejemplo que elija, es tan segura como cualquier otro entorno de Salesforce. Las unidades de prueba cuentan en la clasificación de popularidad. Para asociar una unidad de prueba a su lista, haga lo siguiente: 1. 2. 3. 4. Cuando cree o modifique la lista, en la ficha Oferta (Offering) haga clic en Crear unidad de prueba (Create Test Drive). Ingrese un título. Seleccione el paquete. Se instalará en una organización con Developer Edition nueva. Haga clic en Enviar. Salesforce enviará información sobre la nueva organización con Developer Edition a la dirección de email de usuario de Salesforce. 5. Cuando reciba la información de inicio de sesión, entre como administrador de la organización nueva y cree datos de ejemplo o realice otras tareas de configuración. 6. Cuando la organización ya esté lista, retroceda a la página Publishing de AppExchange. 7. Haga clic en Modificar (Edit) en la lista de destino. 8. En la ficha Oferta (Offering), haga clic en Cambiar organización (Change Organization) para especificar la organización con Developer Edition nueva. 9. Ingrese el inicio de sesión y la contraseña del usuario de evaluación que se le ha enviado junto con las credenciales de administrador. (La contraseña del usuario de evaluación no puede terminar en #). Tenga en cuenta que el usuario de evaluación tiene permisos de solo lectura. 10. Haga clic en Aceptar. Una vez que la lista está publicada, todas las personas que usen la unidad de prueba iniciarán la sesión como el mismo usuario de evaluación. Ficha Precios En la ficha Precios (Pricing) se especifica la información de precios correspondiente a su aplicación. Además, en ella puede inscribirse en Checkout: un servicio que facilita a los clientes el pago de las aplicaciones directamente en AppExchange. Para obtener más información, consulte el apartado Uso de Checkout de AppExchange en la página 122. 114 Publicación de la aplicación Ficha Experiencia Campo Descripción Describa los precios básicos de esta aplicación (Describe the basic pricing for this application) (Obligatorio) Especifique aquí si su aplicación es gratuita o de pago y si ofrece descuentos para las organizaciones sin fines de lucro u ONG. Nota: Algunos de los campos siguientes solo son pertinentes para las aplicaciones de pago y no se mostrarán si la suya es gratuita. ¿Cómo quiere facturar y gestionar esta Especifique si quiere gestionar el pago y la facturación aplicación? (How do you want to bill for and mediante Checkout o si quiere hacerlo por su cuenta. manage this application?) ¿Cuándo va a recopilar la información de pago? (When do you want to collect payment information?) Especifique aquí cómo va a recopilar la información de pago. Puede hacerlo antes de que los clientes instalen la aplicación o cuando comiencen a usar una prueba gratuita. Nota: Este campo solo aparece si se ha inscrito en Checkout y va a utilizarlo para esta lista. Precio de la lista Cargo El precio por unidad de su aplicación. Especifique el importe y la divisa. Unidades La unidad en la que se basan los precios: usuario o compañía. Si no utiliza Checkout, puede especificar además unidades personalizadas. Frecuencia La frecuencia de la facturación: mensual o única. Si no utiliza Checkout, también puede facturar precios anuales. Prueba gratuita El número de días de vigencia de una prueba gratuita. Esta opción solo está disponible cuando se utiliza Checkout y cuando recopila la información de pago antes de la instalación. Detalles adicionales Cualquier dato adicional sobre los precios que quiera comunicar a los clientes. Dispone de un máximo de 255 caracteres para escribir la información y esta puede incluir vínculos. Por ejemplo, podría incluir un vínculo a una hoja de precios completa en el sitio Web. Ficha Experiencia Cuando se modifica un servicio, en la ficha Experiencia (Experience) se proporciona la información de la lista relativa a la región, el idioma y la asociación. 115 Publicación de la aplicación Ficha Especificaciones Campo Descripción Área geográfica (Geographic Focus) Las ubicaciones donde presta el servicio. Puede agregar o cambiar las regiones. Idiomas ofrecidos (Languages Spoken) Los idiomas en los que presta el servicio. Puede agregar o cambiar los idiomas. Certificaciones, proyecto y satisfacción del Esta información está vinculada a su portal de socios. Para cliente (Certifications, Projects, and actualizar su asociación, haga clic en Ir al perfil de proveedor Customer Satisfaction) para gestionar este vínculo (Go to Your Provider Profile to Manage this Link). Ficha Especificaciones La ficha Especificaciones (Specs) se utiliza para ingresar la siguiente información sobre su aplicación. Campo Descripción Ediciones de Salesforce (Salesforce Editions) (Obligatorio) Las ediciones de Salesforce compatibles con su aplicación. Puede agregar o cambiar las ediciones. Idiomas admitidos (Supported Languages) (Obligatorio) Los idiomas que la aplicación admite. Puede agregar o cambiar los idiomas. Requisitos del sistema Los requisitos de su aplicación. Por ejemplo, podría indicar requisitos de sistema operativo, versiones del navegador u otro software necesario para que la aplicación funcione correctamente. Ficha Soporte En la ficha Soporte (Support) se proporciona información del servicio de atención al cliente que quiere prestar a los clientes. Campo Descripción Con asistencia (Supported) o Sin asistencia (No Aquí se indica si la aplicación dispone o no de servicio de asistencia. En caso de que lo tenga, ingrese la información que se solicita. En caso contrario, solo tiene que aceptar un acuerdo de términos y condiciones. Support) Número de teléfono El teléfono de asistencia de su compañía. Indique si en este número de teléfono se aplican cargos adicionales. Email El email de asistencia de su compañía. Indique si en esta dirección de email se aplican cargos adicionales. URL del chat online (Online Chat URL) La dirección del servicio de chat online de su compañía. Indique si en esta asistencia online se aplican cargos adicionales. 116 Publicación de la aplicación Ficha Contenido cargado Campo Descripción URL de base de datos de conocimientos (Knowledge Base URL) La dirección de la base de datos de conocimientos de su compañía. Indique si en el acceso a esta base de datos se aplican cargos adicionales. Asistencia disponible las 24 horas de los 7 días de la semana (Support Available 24 hrs × 7 days) Indique si el servicio de asistencia está disponible siempre: las 24 horas del día, los siete días de la semana. Asistencia Premium disponible (Premium Support Available) Indique si ofrece un paquete de soporte premium. Acuerdo de nivel de servicio (Service Level Agreement) Indique si ofrece un contrato de prestación de servicios. Detalles de asistencia (Support Details) Ingrese información detallada sobre las funciones de la asistencia. Términos y condiciones (Terms & Conditions) Ingrese los términos y condiciones que los clientes deben leer y aceptar antes de instalar la aplicación. Si ocupan más de 32.000 caracteres, ingrese un acuerdo abreviado y deje el documento completo como referencia en su sitio Web. Ficha Contenido cargado En la ficha Contenido cargado (Uploaded Content) puede agregar o eliminar archivos de su lista, tales como archivos de logotipos, paneles y videos. Campo Descripción Logotipo Cargue los logotipos de su lista. Sus logotipos se muestran en muchos lugares en AppExchange, incluida su lista, en los resultados de búsqueda y en la página de inicio. Consulte nuestras directrices para crear un logotipo fantástico. Mientras su lista sea privada, si no carga ningún logotipo, AppExchange mostrará logotipos predeterminados. Para que su lista sea pública, deberá cargar logotipos de pequeño tamaño, en mosaico y de alta resolución, como puede ver en la descripción siguiente. • Logotipo pequeño: cargue un archivo PNG de 100 KB como máximo. Las medidas deben ser exactamente 60 × 60 píxeles. • Logotipo en mosaico: cargue un archivo PNG de 300 KB como máximo. Las medidas deben ser exactamente 280 × 205 píxeles. • Logotipo de alta resolución: cargue un archivo PNG de alta resolución, con un fondo transparente y 10 MB como máximo Su uso será únicamente para las tareas de marketing y no se utilizará en el sitio. Los efectos, como las sombras, se aplican de forma automática por lo que no tiene que incluirlos en el logotipo. 117 Publicación de la aplicación Directrices para el logotipo Campo Descripción Panel (Banner) Puede cargar un panel para su lista. Este se mostrará en la página de resumen de la lista. Puede cargar un archivo PNG de 1 MB como máximo. Las medidas deben ser exactamente 1200 × 300 píxeles. Video Proporcione un video sobre su lista. Dispone de dos opciones: • Especifique una URL para ver un video en una página nueva. El cliente abandonará la página de su lista pero le permitirá generar prospectos. • Incruste un video de YouTube en la misma página. De este modo, se proporciona una experiencia integrada para el cliente pero no le permite generar prospectos. Deberá especificar una leyenda para el video. Imágenes Puede cargar hasta ocho imágenes de su lista. En este caso no hay restricciones en el tamaño de la imagen. Los archivos deben ser del formato PNG y tener 1 MB como máximo. Recursos Puede cargar hasta seis documentos técnicos, testimonios, estudios de casos, hojas de datos, seminarios Web, guías de personalización u otros recursos que se puedan alojar en AppExchange o en otros lugares. Los recursos pueden ser archivos PDF de 10 MB como máximo. Directrices para el logotipo Los logotipos son mucho más que elementos decorativos. Un buen logotipo transmite a sus clientes confianza en su aplicación o servicio porque ha dedicado tiempo a crear una marca. También comunica los atributos principales de su oferta. Sugerencias para crear un buen logotipo: 1. Contrate a un diseñador o aproveche los servicios de logotipos de origen social: ambas opciones puede encontrarlas online y puede establecer el precio que desee pagar por su logotipo. 2. No use simplemente el logotipo de la compañía: que la aplicación o el servicio tenga su propio nombre y logotipo constituye una plataforma para ampliar la oferta. 3. Utilice imágenes reconocibles: la finalidad es que la gente reconozca su marca al instante, sin tener que descifrar referencias imposibles. 4. Recurra a la simplicidad: evite usar fotos, palabrería e imágenes complejas. 5. Dedique tiempo a ver lo que han hecho sus competidores y curiosee las aplicaciones más populares: inspírese en el mercado. 6. Pruebe el logotipo en distintos contextos: sobre fondos blancos, negros y junto al logotipo de la compañía. Ficha Prospectos En la ficha Prospectos (Leads) puede especificar los escenarios en los que se generan prospectos desde su lista. 118 Publicación de la aplicación Marca de la aplicación Campo Descripción Enviarme prospectos en la instalación (Send me leads on install) En las listas de aplicaciones, se envía un prospecto cuando un cliente instala su aplicación. Debe seleccionar esta opción si requiere que los clientes se pongan en contacto con usted para obtener información sobre la instalación. Enviarme prospectos cuando pruebe la aplicación (Send me leads on test drive) En las listas de aplicaciones, se envía un prospecto cuando un cliente prueba la aplicación. Enviarme prospectos en la demostración (Send En las listas de aplicaciones, se envía un prospecto cuando un me leads on demo) cliente ve la demostración. Enviarme prospectos cuando me inscriba en la En las listas de aplicaciones, se envía un prospecto cuando el prueba gratuita (Send me leads on free trial cliente se inscribe e una prueba gratuita. sign up) Enviarme prospectos cuando pulse Más información (Send me leads on learn more) En las listas de servicios, se envía un prospecto cuando el cliente hace clic en Más información en su lista. Enviarme prospectos al ver el video (Send me En las listas de servicios, se envía un prospecto cuando un leads on video) cliente ve el video. Campaña (Campaign) (opcional) Si quiere asociar los prospectos que la lista genera con una campaña, ingrese el Id. de una campaña. Este identificador comienza por 701 y contiene 15 caracteres. Enviar prospectos a (Send Leads To) Haga clic en Cambiar organización (Change Organization) para especificar la organización de Salesforce a la que quiere enviar los prospectos de esta lista. La organización debe tener Prospecto Web habilitado. Marca de la aplicación Cuando diseñe las listas de aplicaciones, es importante tener en cuenta la importancia de los elementos de marca. Determine una marca significativa y potente que pueda usar siempre del mismo modo en AppExchange para que identifique a la aplicación. Consulte el documento sobre directrices para el uso de las marcas y el logotipo del socio en el contenido del portal de socios donde se tratan las convenciones para las marcas y el logotipo de la aplicación. Puede llegar a la página Relaciones públicas (Public Relations) de dos maneras: Inicio > Programas > Programa de consultoría > Orientación al mercado > Relaciones públicas (Home > Programs > Consulting Program > Go-to-market > Public Relations) o Inicio > Programas > Programa de ISV > Orientación al mercado > Relaciones públicas (Home > Programs > ISV Program > Go-to-market > Public Relations). Envío de la lista para su aprobación Las únicas aplicaciones que se pueden buscar en AppExchange son las que figuran en listas públicas. Para incluir la aplicación en una lista pública o proporcionar públicamente una plantilla de prueba en AppExchange, esta debe superar larevisión de seguridad de AppExchange. La finalidad de esta revisión es garantizar que la instalación de la aplicación o la plantilla de prueba es segura para los clientes. Como proveedor, está obligado a actualizar la información de revisión de seguridad cada vez que cambie la aplicación o la plantilla de prueba. Nota: La información proporcionada en esta revisión está disponible para todos los clientes de AppExchange. 119 Publicación de la aplicación Envío de la lista para su aprobación Para comenzar la revisión de una aplicación en paquete, efectúe los pasos siguientes 1. Haga clic en Iniciar revisión (Start Review) en la columna Revisión de seguridad (Security Review) del paquete en la página de inicio de Publicación o en Iniciar revisión en la ficha Oferta cuando edite la lista. 2. Indique si la aplicación es o no gratuita. Las aplicaciones gratuitas deben completar la revisión pero no se aplica la tasa de revisión. 3. Si va a cobrar por la aplicación, recibirá en un plazo de dos días un email del equipo de operaciones de socios con información sobre el pago de la revisión. Se trata de un pago anual. 4. Indique si la aplicación está integrada con algún servicio Web fuera de Force.com, incluidos sus propios servidores. 5. Si la aplicación se integra con otros servicios Web, indíquelos en el cuadro Servicios Web utilizados (Webservices Used). Puede ingresar hasta 1.000 caracteres. 6. Si su aplicación se integra con otros servicios Web, seleccione cómo realiza la autenticación con esos servicios. En el cuadro pertinente, ingrese los comentarios que puedan ser útiles. Puede ingresar hasta 1.000 caracteres. 7. Indique si la aplicación almacena las credenciales de usuario de salesforce.com fuera de Force.com. 8. Indique si la aplicación almacena los datos de cliente de salesforce.com fuera de Force.com. 9. Si la aplicación almacena datos de cliente de salesforce.com fuera de Force.com, indique todos los objetos de salesforce.com a los que se accede en el cuadro Objetos a los que se accede. Puede ingresar hasta 255 caracteres. 10. Indique si la aplicación requiere que los clientes instalen componentes de cliente, por ejemplo software o complementos. 11. Si la aplicación requiere componentes de cliente, ingrese los detalles en el cuadro Requisitos (Requirements). Puede ingresar hasta 1.000 caracteres. 12. Haga clic en Iniciar revisión de seguridad (Start Security Review) para comenzar la revisión de seguridad de AppExchange. Para no aplicar los cambios y regresar a la página anterior, haga clic en Cancelar (Cancelar). Importante: En virtud del contrato, debe mantener esta información actualizada. Por ejemplo, si actualiza la aplicación para utilizar un nuevo servicio Web, debe modificar la información en el envío de revisión de seguridad. Para modificar la información de envío, haga clic en Modificar revisión (Edit Review) en la ficha Oferta cuando modifique la lista. Las aplicaciones se revisan de nuevo periódicamente. Una vez que comience la revisión, un miembro del equipo de operaciones de socios le enviará, en un plazo de dos días laborables, un email con los pasos siguientes. Para proporcionar una prueba gratuita de la aplicación y Salesforce, tanto la aplicación (paquete) como su plantilla de Trialforce deben someterse a una revisión. Para comenzar el proceso de revisión para una plantilla de Trialforce, haga lo siguiente: 1. Asegúrese de que todos los paquetes incluidos en la plantilla de Trialforce ha superado la revisión de seguridad de AppExchange. No se aplica ningún costo adicional por este proceso. 2. Haga clic en Iniciar revisión en la columna Revisión de seguridad de la plantilla de Trialforce en la página de inicio de Publicación. 3. Haga clic en Inscribirse mediante plantilla de prueba (Sign Up Using Trial Template). 4. Ingrese el nombre de usuario y el email que desee para la nueva organización. Las credenciales nuevas (nombre de usuario y contraseña) se enviarán a este email. 5. Haga clic en Enviar. 6. Una vez que reciba el email de inscripción con sus credenciales de usuario, inicie sesión en esa organización y establezca la contraseña permanente. 7. Regrese a AppExchange y a la página de revisión de seguridad de la plantilla mediante la opción Iniciar revisión que encontrará en la columna Revisión de seguridad en la página de inicio de Publicación. 8. Haga clic en Cambiar organization (Cambiar organización). 9. Ingrese su nombre de usuario y contraseña para la organización de prueba nueva. 120 Publicación de la aplicación Registro del paquete y elección de la configuración de la licencia 10. Haga clic en Iniciar revisión de seguridad (Start Security Review) o haga clic en Cancelar (Cancel) para no aplicar los cambios y regresar a la página anterior. El proceso de revisión de la plantilla lleva varios días. En caso de tener preguntas, el equipo de revisión se pondrá en contacto con usted. Registro del paquete y elección de la configuración de la licencia Si registra el paquete de la aplicación recibirá un registro de licencia cada vez que un cliente instale la aplicación. Las licencias permiten realizar el seguimiento de las personas que utilizan la aplicación y del tiempo durante el que lo hacen. Para poder registrar el paquete, deben cumplirse las condiciones siguientes: • • Su aplicación es un paquete gestionado. Ha instalado la aplicación de gestión de licencias (LMA). La organización donde instala la LMA se denomina Organización de gestión de licencias (LMO). Normalmente, la LMA y la APO son la misma organización. Registre el paquete y elija los valores predeterminados de licencias: 1. En la página de inicio de Publishing, haga clic en Gestionar licencias (Manager Licenses) junto al paquete cargado y gestionado. 2. En la página de registro del paquete cargado, haga clic en Registrar (Register). Si el paquete nunca ha estado asociado con una LMO, seleccione una. Si ya había una versión anterior del paquete registrada, la configuración de esta aparecerá de forma automática. Puede modificar esta configuración excepto la LMO. Para cambiar una LMO debe hacer contacto con salesforce.com. 3. Seleccione si la licencia predeterminada es una licencia de prueba gratuita o una activa. Si se trata de una licencia gratuita, seleccione Activar (Activar). 4. Si ha seleccionado una licencia de prueba gratuita, ingrese la duración en número de días completos, hasta un máximo de 90. Si ha seleccionado una licencia activa, ingrese la duración en número de días completos. Si la licencia es gratuita o no caduca, seleccione La licencia no caduca (License does not expire). 5. Ingrese el número de puestos asociados con la licencia predeterminada o seleccione La licencia es para todo el sitio (License is site-wide) para ofrecer la licencia a todos los usuarios en la organización del instalador. 6. Haga clic en Guardar. Notificaciones por email Emails de notificación de instalación Los suscriptores de la aplicación recibirán una notificación por email 30 días después de su instalación inicial. La finalidad de esta es agradecer a los usuarios la instalación de la aplicación y animarles a escribir su opinión para compartir sus experiencias con los demás. La notificación se envía únicamente cuando se cumplen las condiciones siguientes: • • • Existe una dirección de email válida para ese usuario. No se ha enviado aún una notificación al usuario. El usuario no ha publicado aún ningún comentario. Emails de notificación de comentarios Cuando los usuarios publican comentarios y opiniones sobre su aplicación y las listas de sus socios de consultoría, se envían por email notificaciones a las partes interesadas. Existen varios tipos de notificaciones por email que dependen de la función del usuario en la plática (proveedor, autor o comentarista). 121 Publicación de la aplicación Tipo de notificación por email Uso de Checkout de AppExchange Enviada a Detalles Nueva opinión sobre su Usted como proveedor Enviada únicamente si ha especificado una dirección de email en el campo lista Email para opiniones (Reviews Email) en la ficha Modificar lista > Básica (Edit Listing > Basic). Nuevo comentario sobre El autor de la opinión su opinión Se envía únicamente si otra persona distinta del autor de la opinión hace un comentario sobre la opinión y siempre cuando el autor haya decidido en su perfil que desea recibir estas notificaciones por email. Si el autor responde a la notificación, la respuesta se publica como un comentario nuevo en la opinión. También comentado en Las personas que han la opinión comentado sobre la opinión Se envía a las personas que han comentado sobre una opinión y no son el autor de la opinión ni de este comentario y, por supuesto, han decidido en sus perfiles que desean recibir las notificaciones por email. Como mucho se envía una notificación por email a cada comentarista por cada comentario nuevo. Si la persona responde a la notificación, la respuesta se publica automáticamente como un comentario nuevo en la opinión. Nuevo comentario sobre Usted como proveedor Se envía cada vez que alguien escriba un comentario nuevo sobre una la opinión de su lista opinión de su lista. La notificación se envía únicamente si ha especificado una dirección de email en el campo Email para opiniones en la ficha Modificar lista > Básica. Uso de Checkout de AppExchange Checkout es un servicio de salesforce.com y Recurly que posibilita que los clientes paguen por sus aplicaciones directamente en AppExchange. El servicio carga el importe directamente en las tarjetas de crédito de los clientes y deposita el dinero en su cuenta. Si el acceso a su aplicación se vende como una suscripción, el servicio facturará a los clientes con determinada periodicidad. Checkout le proporciona acceso perfecto a la gestión de facturación y suscripción recurrente sin contacto que proporciona Recurly. Esto incluye el acceso a la gestión del pago inicial, complementos, reducciones, cancelaciones y renovaciones automáticas. Además, actualiza automáticamente las licencias en la aplicación de gestión de licencias (LMA). Checkout facilita a los clientes el pago de su aplicación al tiempo que a usted le ahorra el trabajo de gestionar las facturaciones y las licencias recurrentes. Para inscribirse en Checkout: 1. 2. 3. 4. 5. Haga clic en la ficha Publicando (Publishing) en AppExchange. Haga clic en Modificar lista (Edit Listing) para su aplicación. Haga clic en la ficha Precios (Pricing) en la página Lista (Listing). Haga clic en Inscribirse en Checkout (Sign up for Checkout). Se mostrará una superposición en la que se explica el servicio y que comprueba que utiliza su organización de publicación de AppExchange (APO) y que ha vinculado la cuenta del socio a su perfil de proveedor de AppExchange. Haga clic en Inscripción (Sign Up) para continuar. 6. Se mostrará una superposición que contiene los términos y condiciones de Recurly y de salesforce.com. Acéptelos para continuar. 7. Un mensaje confirmará que se ha inscrito en Checkout. Finalice especificando la información de precios en la ficha Precios (Pricing) para su aplicación. Aquí termina el proceso de inscripción en Checkout. Para activar Checkout en su lista, deberá registrarse en Recurly. Para ello, haga clic en el vínculo Go to Recurly (Ir a Recurly) que se muestra en el mensaje de advertencia de que este es el último paso. En Recurly, deberá hacer lo siguiente: 122 Publicación de la aplicación Preguntas más frecuentes sobre Checkout de AppExchange 1. Especificar la información de la pasarela de pago y de la cuenta bancaria comercial. 2. Proporcionar una tarjeta de crédito que se usará para facturarle todos los meses. Se le cobrará el 15 % de sus ingresos facturados a través de Checkout de AppExchange. 3. Active el servicio. Para obtener más información sobre estas tareas, visite http://appexchange-docs.recurly.com. Una vez que haya activado Checkout, a todos los clientes que compren su aplicación en AppExchange se les pedirá los datos de su tarjeta de crédito. Si continúan el proceso de instalación de su aplicación, se les cobrará según los detalles de pago que haya especificado. Preguntas más frecuentes sobre Checkout de AppExchange Esta sección contiene una lista en orden alfabético de las preguntas más frecuentes planteadas sobre el servicio Checkout de AppExchange. • • • • • • • • • • • • • ¿Puedo tener varias listas para una aplicación? ¿Puedo usar mi sistema de procesamiento de cargos en tarjetas de crédito actual junto con Checkout y Recurly? ¿Existen precios que no sean por usuario y mes, por ejemplo, 5.000 $ por año y por instancia de Salesforce? ¿Queda una licencia inactiva de forma automática si se rechaza una tarjeta de crédito? ¿Sustituye Checkout a la LMA? ¿Seguirá la LMA controlando el estado de las licencias (activas/prueba) o las licencias estarán activas para cualquier compra que se realice a través de Checkout? ¿Permite Checkout el pago en varias divisas? ¿Se aplica el reparto de ingresos a las transacciones que no se procesen con Checkout? ¿Cómo funciona la facturación cuando los clientes agregan o eliminan las licencias durante el mes? ¿Cómo afecta Checkout a los procesos actuales, tales como la gestión de prospectos, Trialforce y las licencias de prueba? Por ejemplo, ¿cómo interactuará la inscripción en Checkout con el procesamiento de prospectos? ¿Cómo debería tramitar las facturas para mis clientes? Si se rechaza un cargo, ¿existe algún periodo de gracia antes de que la licencia quede deshabilitada en la LMA? Si un administrador instala la aplicación, ¿puede otra persona de la compañía ir a su cuenta de AppExchange para comprar ahora? ¿Hay un reparto de ingresos mínimo? Por ejemplo, si el 15 % es inferior 1,00 $, ¿sigue siendo el reparto de ingresos el 15 %? ¿Puedo tener varias listas para una aplicación? Puede tener dos listas pero solo si dispone de dos paquetes separados. Un paquete solo puede estar asociado a una lista. ¿Puedo usar mi sistema de procesamiento de cargos en tarjetas de crédito actual junto con Checkout y Recurly? Recurly es compatible solo con algunas pasarelas que no sean de Recurly. Para obtener más información, consulte http://appexchange-docs.recurly.com/payment-gateways/additional. ¿Existen precios que no sean por usuario y mes, por ejemplo, 5.000 $ por año y por instancia de Salesforce? No por el momento. Las opciones de precios disponibles actualmente son las siguientes: 123 Publicación de la aplicación • • • • ¿Queda una licencia inactiva de forma automática si se rechaza una tarjeta de crédito? por usuario y mes por compañía y mes un solo pago por usuario un solo pago por compañía ¿Queda una licencia inactiva de forma automática si se rechaza una tarjeta de crédito? Si se rechaza una tarjeta de crédito, Recurly intenta realizar el cargo y solicitará al suscriptor la información de pago actualizada. Si ese proceso falla, Recurly puede cancelar la suscripción o mantenerla activa. Puede especificar el comportamiento en la configuración de la cuenta de Recurly. ¿Sustituye Checkout a la LMA? ¿Seguirá la LMA controlando el estado de las licencias o las licencias estarán activas para cualquier compra que se realice a través de Checkout? Checkout no sustituye a la LMA sino que funciona junto con ella para controlar si una aplicación está activa o inactiva, así como para saber cuántas licencias tiene una organización. Checkout crea y actualiza de forma automática los registros de licencias en la LMA según sea necesario. No puede modificar directamente los registros de licencias creados por Checkout. Para cambiar alguno de estos registros, actualice antes la información de suscripción correspondiente en Recurly. Después, Checkout actualizará de forma automática los registros en la LMA. ¿Permite Checkout compras en varias divisas? Checkout puede aceptar pagos en cualquier divisa compatible con su pasarela de pagos. Cuando se inscribe en Recurly, se elige una divisa de pago predeterminada basada en el país (por ejemplo, USD si se encuentra en Estados Unidos). Puede habilitar cualquier otra divisa que la pasarela de pagos acepte; para ello, debe modificar la configuración de cuenta de Recurly. Después, puede especificar esa divisa en el campo Cambiar de la ficha Precios correspondiente a la lista de su aplicación. Cuando los clientes compran la aplicación, Checkout les cobra el importe correspondiente en esta divisa y abona el dinero en esta divisa en su cuenta bancaria comercial. Nota: En este momento, solo puede seleccionar un valor para la divisa. No puede incluir su aplicación varias veces en la lista para ofrecerla en varias divisas. ¿Se aplica el reparto de ingresos a las transacciones que no se procesen con Checkout? El reparto de ingresos se aplica únicamente a las transacciones de Checkout, es decir a los cargos en su cuenta de Recurly vinculados a su organización de publicación de AppExchange (APO). ¿Cómo funciona la facturación cuando los clientes agregan o eliminan las licencias durante el mes? En el caso de que se agreguen o se eliminen licencias a mitad de mes se cobrará un importe prorrateado para ese mes. 124 Publicación de la aplicación ¿Cómo afecta Checkout a los procesos actuales, tales como la gestión de prospectos, Trialforce y las licencias de prueba? Por ejemplo, ¿cómo interactuará la inscripción en Checkout con el procesamiento de prospectos? ¿Cómo afecta Checkout a los procesos actuales, tales como la gestión de prospectos, Trialforce y las licencias de prueba? Por ejemplo, ¿cómo interactuará la inscripción en Checkout con el procesamiento de prospectos? Checkout no afecta a la manera en que se le envían los prospectos ni afecta a la configuración de Trialforce. Sin embargo, sí cambia la manera en que se gestionan las licencias de prueba de AppExchange. Cuando un cliente se inscribe en una prueba con Checkout, el usuario de dicha prueba se mostrará con el estado de activo en la LMA. ¿Cómo debería tramitar las facturas para mis clientes? Recurly envía las facturas a los clientes de forma automática. Los clientes también pueden ver las facturas directamente en AppExchange. Usted solo tiene que crear las facturas para los clientes que no compren a través del servicio Checkout. Si un administrador instala la aplicación, ¿puede otra persona de la compañía ir a su cuenta de AppExchange para comprar ahora? Cualquier usuario con permisos para instalar aplicaciones puede llevar a cabo acciones de Comprar ahora, siempre y cuando también tengan el permiso “Gestionar facturación”. Se trata del mismo permiso obligatorio para ver la página Mi cuenta o para comprar aplicaciones a través de Checkout dentro de Salesforce. Si se rechaza un cargo, ¿existe algún periodo de gracia antes de que la licencia quede deshabilitada en la LMA? Sí. El periodo de gracia predeterminado es de 10 días y el cliente recibe dos notificaciones por email antes de que la licencia quede deshabilitada. En la configuración de la cuenta de Recurly puede cambiar el comportamiento predeterminado. ¿Hay un reparto de ingresos mínimo? Por ejemplo, si el 15 % es inferior 1,00 $, ¿sigue siendo el reparto de ingresos el 15 %? No hay ningún cargo mínimo para las aplicaciones que se venden a través de Checkout. El reparto de ingresos siempre es el 15 %, incluso si este es menor de 1,00 $. Trabajo con prospectos de AppExchange AppExchange recopila la información de contacto cuando los usuarios realizan varias acciones en la lista de aplicaciones o servicios de consultoría de un proveedor. Esta información se envía a una organización de Salesforce, elegida por el proveedor, en forma de prospecto. Los proveedores pueden elegir qué acciones serán las que capten prospectos. Las acciones siguientes se pueden configurar para captar prospectos: • • • • Confirmar instalación (solo aplicaciones) Tomar una unidad de prueba (solo aplicaciones) Ver una demostración/video Inscribirse en una prueba gratuita de una aplicación del proveedor y Salesforce (solo aplicaciones) 125 Publicación de la aplicación • ¿Cómo recibo prospectos desde AppExchange? Hacer clic en Más información (solo servicios de consultoría) ¿Cómo recibo prospectos desde AppExchange? Para recibir prospectos desde AppExchange, modifique la lista de AppExchange y haga clic en la ficha Prospectos (Leads). Especifique las acciones que quiere que capten los prospectos y la organización de Salesforce a la que se enviará la información. Esta organización debe tener la función Prospecto Web habilitada y debería ser una organización de Salesforce estándar o la organización CRM para ISV del proveedor. En ningún caso debería ser una organización con Developer Edition. Los socios de salesforce.com pueden registrar un caso en el portal de socios de Salesforce.com para obtener una organización CRM para ISV. Además, los proveedores pueden especificar, si lo desean, un Id. de campaña para cada acción de la que quieren recibir prospectos. Los prospectos creados se asociarán de forma automática con la campaña correcta en la organización de Salesforce del proveedor. ¿Puedo recibir prospectos correspondientes solo a mi solución principal en AppExchange y no a las demás listas? Cada lista se habilita por separado para la recopilación de prospectos. Si no desea recopilar prospectos para una lista determinada, no especifique una organización que reciba prospectos en la ficha Prospectos (Leads). ¿Cómo sé que este prospecto procede de AppExchange? Los códigos de origen de prospecto proporcionan información sobre la creación del prospecto y pueden ayudarle a saber cómo actuar. El código de origen de prospecto siempre adopta la forma SFDC-XX|Nombre de lista o SFDC-dup-XX|Nombre de lista. Si el código de origen contiene -dup-, AppExchange ya le ha enviado un prospecto para este usuario, lista o acción en los últimos 180 días. XX identifica la acción que el usuario ha llevado a cabo para generar el prospecto. ¿Puede Salesforce anular la duplicación de prospectos antes de que los reciba? La mayoría de los socios a los que hemos consultado han pedido que se les envíe todos los prospectos. Cuando los prospectos están duplicados en AppExchange lo indicamos del modo siguiente: SFDC-dup-XX|Nombre de lista. Si el código de origen contiene -dup-, AppExchange ya le ha enviado un prospecto para este usuario, lista o acción en los últimos 180 días. Por ejemplo, SFDC-dup-DM|VerticalResponse for AppExchange indica que se ha generado un prospecto duplicado a partir de un usuario que ha hecho clic en el video de demostración en la lista VerticalResponse for AppExchange. ¿Qué significan los códigos de origen de prospecto de mi lista? Los códigos de origen de prospecto proporcionan información sobre la creación del prospecto y pueden ayudarle a saber cómo actuar. El código de origen de prospecto siempre adopta la forma SFDC-XX|Nombre de lista o SFDC-dup-XX|Nombre de lista. Si el código de origen contiene -dup-, AppExchange ya le ha enviado un prospecto para este usuario, lista o acción en los últimos 80 días. XX identifica la acción que el usuario ha llevado a cabo para generar el prospecto. En la tabla siguiente se muestran los códigos de acción y su significado: 126 Publicación de la aplicación ¿Cómo puedo ver más información en el registro de prospecto? Código de origen de prospecto Descripción IN El usuario ha comenzado el proceso de instalación de su aplicación a través del botón Obtener ahora (Get It Now) en su lista, ha aceptado los términos y condiciones y ha hecho clic en el botón de instalación final en la página de confirmación. A pesar de ello, es posible que el usuario no haya completado la instalación o quizás ha desinstalado la aplicación. Utilice la aplicación de gestión de licencias (LMA) para realizar el seguimiento de los usuarios que han instalado su aplicación. DM El usuario ha visto la demostración completa o parte de ella. LM El usuario ha hecho clic en Más información (Learn More) en la lista de servicios. Nota: las listas de aplicaciones que antes tenían botones Más información ahora tienen botones Obtener ahora y reciben códigos de origen de prospecto con acciones IN. TS El usuario ha hecho clic en Obtener ahora en su lista y ha decidido comenzar una nueva prueba gratuita de 30 de días de Salesforce y de su aplicación. Es probable que fuera un cliente de salesforce.com anteriormente. TD El usuario ha optado por la unida de prueba al hacer clic en Unidad de prueba (Test Drive) en su lista. ¿Cómo puedo ver más información en el registro de prospecto? En estos momentos, los proveedores no pueden modificar el formulario de prospectos que los clientes deben rellenar cuando ven una demostración, acceden a la unidad de prueba, instalan una aplicación o hacen clic en Más información. Indique las mejoras que propone en IdeaExchange. ¿Cuál es la diferencia entre los prospectos y los registros de licencia que la lista genera? Al publicar una lista en AppExchange recibirá prospectos y podrá elegir los escenarios en los que se van a generar prospectos. Si tiene una aplicación de gestión de licencias (LMA) instalada, podrá configurar los ajustes de la licencia predeterminada de modo que cada vez que un cliente instale la aplicación recibirá un registro de licencia en la organización donde ha instalado la LMA. Los registros de licencias y de prospectos son completamente independientes entre sí. ¿Qué sucede en mi lista si decido no recibir ningún prospecto de AppExchange? Si los proveedores no seleccionan ningún escenario en el que deseen recopilar prospectos, los usuarios no tendrán que rellenar el formulario de inscripción de prospecto y no se enviará ningún prospecto. Con independencia de la configuración de los prospectos, los usuarios siguen pudiendo ver la demostración, tomar una unidad de prueba, hacer clic en Más información e instalar la aplicación. 127 Publicación de la aplicación Reportes de análisis para publicadores Reportes de análisis para publicadores Los reportes de análisis de AppExchange contienen información sobre el desempeño de las listas de aplicaciones públicas o de socios de consultoría. En ellos, se indican mediciones, efectuadas a lo largo del tiempo, sobre el número de instalaciones y otras actividades del usuario. Con esta información, puede identificar cuáles son las áreas donde pueda ser necesario realizar ajustes o mejoras con el fin de atraer a usuarios, que estos participen de forma activa y, en definitiva, aumentar el número de instalaciones. Para acceder a los reportes, inicie sesión en Publicación de AppExchange y haga clic en el vínculo Reportes (Reports) asociado a su lista pública. Tenga en cuenta que los reportes no están disponibles para las listas privadas. Tipos de reporte Para una lista de aplicaciones, los reportes disponibles son los siguientes: • • • • Instalaciones (Obtener ahora) (Installs [Get It Now]) Prospectos Recursos y promociones (Resources & Promotions) Pruebas, demostraciones y capturas de pantalla (Test Drives, Demos & Screenshots) Para una lista de socios de consultoría, los reportes disponibles son los siguientes: • • Prospectos Más información, videos y capturas de pantallas (Learn Mores, Videos & Screenshots) Atributos de reportes Todos los reportes comparten estos atributos comunes. Nombre de lista El título de la lista se muestra en la parte superior de todos los reportes. Vínculo para volver a la página de inicio de Publishing A través de este vínculo puede volver a la página de inicio de Publishing. Menú Mostrar (Show) Permite seleccionar un reporte de entre los disponibles que se muestran en orden alfabético. Menú Intervalo de fechas (Date Range) Permite elegir uno de los intervalos de fechas disponibles, entre los que se incluyen Los últimos 30 días (Last 30 Days), Los últimos 60 días (Last 60 Days), Los últimos 90 días (Last 90 Days), Los últimos 120 días (Last 120 Days) y Los últimos 180 días (Last 180 Days). La opción seleccionada de forma predeterminada es Los últimos 30 días. Mediciones Reporte Mediciones Instalaciones (Obtener ahora) (Installs [Get It Now]) Proporción de obtenciones ahora, instalaciones y clics para instalar Prospectos Prospectos únicos, duplicados y totales Recursos y promociones (Resources & Promotions) Estudios de casos, hojas de datos, promociones, testimonios de clientes, seminarios Web, guías de personalización, documentos técnicos Pruebas, demostraciones y capturas de pantalla (Test Drives, Pruebas, demostraciones y capturas de pantalla Demos & Screenshots) 128 Publicación de la aplicación Reporte Instalaciones (Obtener ahora) (Installs [Get It Now]) Reporte Mediciones Más información, videos y capturas de pantallas (Learn Mores, Videos & Screenshots) Más información, videos y capturas de pantallas Gráfico de líneas Muestra una o varias líneas de cada una de las mediciones que haya seleccionado para ver. Active las casillas de verificación debajo del gráfico de las mediciones que quiere ver. De forma predeterminada, en el gráfico se incluyen todas las mediciones. En los reportes las mediciones obtenidas a lo largo del tiempo se agrupan según la fecha de creación. Cuando haga clic en el gráfico, se mostrarán la fecha y las mediciones seleccionadas correspondientes a ese día. Junto a cada medición, se muestra el número total de elementos medidos en el intervalo de fechas seleccionado con independencia de si ha elegido o no incluir el gráfico de esa medición. Tabla Todos los reportes incluyen una tabla. La primer columna en todos ellos corresponde a la fecha y las demás columnas corresponden a las mediciones asociadas con el reporte. En la tabla se muestran 30 filas a la vez. Haga clic en Siguiente (Next) para ver más datos. De forma predeterminada, la tabla se ordena desde la fecha más antigua a la más actual. Haga clic en los encabezados de columnas para cambiar el orden. Al hacer clic una segunda vez en la columna de orden seleccionada, se ordenarán los datos en el sentido contrario. El triángulo pequeño que apunta hacia arriba o hacia abajo junto al encabezado de una columna indica el sentido que se sigue en el orden al tiempo que marca esa columna como la columna de ordenación. Reporte Instalaciones (Obtener ahora) (Installs [Get It Now]) En el reporte Instalaciones (Obtener ahora) (Installs [Get it Now]) se muestra el desempeño de la lista en función del número de instalaciones. Las mediciones disponibles son las siguientes: • • • Clics de obtenciones ahora Clics de confirmación de instalación Tasa de conversión: el número total de clics de confirmación de instalación dividido entre el número total de clics de obtención ahora, mostrado como un porcentaje de dos cifras decimales. La tabla contiene la información siguiente: • • • • Fecha Obtenciones ahora: el número total de clics de obtención ahora para esta lista en la fecha especificada. Instalaciones: el número total de clics de instalación para esta lista en la fecha especificada. Proporción de clics para instalar: el número total de clics de instalación para esta lista en la fecha especificada dividido entre el número total de clics de obtención ahora en la fecha especificada, mostrado como un porcentaje de dos cifras decimales. Reporte Prospectos En el reporte Prospectos (Leads) se muestra el número de prospectos que ha recibido en la lista. Las mediciones disponibles son las siguientes: • • • Prospectos únicos: el número total de prospectos, sin incluir los duplicados. Prospectos duplicados: el número total de prospectos duplicados. Un prospecto duplicado es aquel que se crea cuando la misma persona realiza la misma acción en la misma lista varias veces en los últimos 180 días. Número total de prospectos: el número total de prospectos, incluidos los duplicados. 129 Publicación de la aplicación Reporte Recursos y promociones La tabla contiene la información siguiente: • • • • Fecha Prospectos únicos Prospectos duplicados Número total de prospectos Reporte Recursos y promociones En el reporte Recursos y promociones (Resources & Promotions) se muestra el desempeño de la lista en función de los recursos y las promociones. Las mediciones disponibles son las siguientes: • • • • • • • Estudios de casos: el número total de actividades relacionadas con estudios de casos de la lista por día. Testimonios de clientes: el número total de actividades relacionadas con testimonios de clientes de la lista por día. Guías de personalización: el número total de actividades relacionadas con guías de personalización de la lista por día. Hojas de datos: el número total de actividades relacionadas con hojas de datos de la lista por día. Seminarios Web: el número total de las actividades de seminarios Web de la lista por día. Documentos técnicos: el número total de las actividades relacionadas con documentos técnicos de la lista por día. Promociones: el número total de las actividades de promoción de la lista por día. La tabla contiene la información siguiente: • • • • • • • • Fecha Estudios de casos Testimonios de clientes Guías de personalización Hojas de datos Seminarios Web Documentos técnicos Promociones Reporte Pruebas, demostraciones y capturas de pantalla En el reporte Pruebas, demostraciones y capturas de pantalla (Test Drives, Demos & Screenshots) se muestra el desempeño de la lista en función de las actividades de evaluación. Las mediciones disponibles son las siguientes: • • • Pruebas: el número total de actividades de pruebas de la lista por día. Demostraciones: el número total de las actividades de demostración de la lista por día. Capturas de pantalla: el número total de las actividades de capturas de pantalla de la lista por día. La tabla contiene la información siguiente: • • • • Fecha Pruebas Demostraciones Capturas de pantalla 130 Publicación de la aplicación Reporte Más información, videos y capturas de pantallas Reporte Más información, videos y capturas de pantallas En el reporte Más información, videos y capturas de pantallas (Learn Mores, Videos & Screenshots) se muestra el desempeño de la lista del socio de consultoría en función del uso que se ha realizado de las opciones de más información, videos y capturas de pantalla. Las mediciones disponibles son las siguientes: • • • Más información: el número total de actividades de búsqueda de más información de la lista por día. Videos: el número total de las actividades de demostración de la lista por día. Capturas de pantalla: el número total de las actividades de capturas de pantalla de la lista por día. La tabla contiene la información siguiente: • • • • Fecha Más información Videos Capturas de pantalla Preguntas más frecuentes sobre AppExchange Esta sección contiene una lista en orden alfabético de las preguntas más frecuentes planteadas sobre la venta en AppExchange. • • • • • • • • • • • • • • • • • • • • • ¿Puedo agregar más industrias? ¿Puedo agregar más idiomas? ¿Puedo asociar mi cuenta de socio con varios perfiles de proveedor (organización)? ¿Puedo cambiar el nombre de mi compañía? ¿Puedo crear mi aplicación en un sandbox de Salesforce y cargarla en AppExchange? ¿Puedo editar una opinión? ¿Puedo mantener la misma lista pero cambiar el paquete que proporciona? ¿Puedo actualizar mi aplicación con una versión nueva (parche)? ¿Cómo encontrarán los clientes mi lista? ¿Cómo modifico un paquete después de haber creado una lista? ¿Cómo obtengo un token de API para mi aplicación? ¿Cómo puedo aumentar la popularidad de mi lista? ¿Cómo puedo ofrecer una prueba gratuita de mi aplicación? ¿Cómo veo las listas que Salesforce ha eliminado? ¿Cómo pueden mis clientes actualizar la aplicación a una nueva versión? ¿Qué representan los iconos de mi lista? ¿Qué es una APO? ¿Qué diferencia hay entre una prueba gratuita y una unidad de prueba? ¿Dónde puedo compartir mis ideas? ¿Dónde puedo cargar los testimonios? ¿Dónde puedo escribir una opinión? 131 Publicación de la aplicación ¿Puedo agregar más industrias? ¿Puedo agregar más industrias? No. Para evitar los abusos, solo puede especificar dos industrias para cada lista. Si abarca más, indíquelas en la descripción completa o breve de la lista. ¿Puedo agregar más idiomas? Cuando modifique una lista, puede seleccionar cualquier idioma en la lista Idiomas ofrecidos (Languages Spoken). Si admite un idioma que no está en la lista, inclúyalo en la descripción breve o completa de la lista. ¿Puedo asociar mi cuenta de socio con varios perfiles de proveedor (organización)? Antes de que una lista pueda ser pública en AppExchange, debe asociar el perfil de proveedor en la organización de publicación de AppExchange (APO) con su cuenta de socio. Para gestionar varias organizaciones de Salesforce bajo su cuenta de socio puede vincular organizaciones a la APO pero una cuenta de socio solo puede estar asociada directamente con un perfil de proveedor. Para eliminar la asociación entre la cuenta de socio y una organización, registre un caso en el servicio de atención al cliente de Salesforce desde el portal de socios. ¿Puedo cambiar el nombre de mi compañía? Sí, puede cambiar el nombre de la compañía en el perfil de proveedor. Antes de actualizar el perfil de proveedor, debe asegurarse de que ha iniciado sesión en AppExchange con las credenciales de su organización de publicación de AppExchange (APO), ya que los visitantes que consulten las listas en AppExchange solo pueden ver el perfil de proveedor que esté asociado a la APO. Recuerde que debe cambiar también el nombre de la compañía en el portal de socios de salesforce.com. ¿Puedo crear mi aplicación en un sandbox de Salesforce y cargarla en AppExchange? No. Aunque puede utilizar un sandbox para instalar y probar la aplicación, deberá crear y cargar esta mediante una organización con Developer Edition. ¿Puedo editar una opinión? Puede modificar las opiniones que haya escrito usted. Si no las ha escrito, puede comentarlas. ¿Puedo mantener la misma lista pero cambiar el paquete que proporciona? Sí, puede cambiar los paquetes gestionados vinculados a la lista. En la página de inicio de AppExchange, haga clic en la ficha Publishing e inicie sesión con las credenciales de su organización de publicación de AppExchange (APO). Haga clic en Sus organizaciones (Your Organizations) y, después, en Vincular organización nueva (Link New Organization). Agregue las credenciales de la organización Developer Edition donde ha creado el paquete gestionado nuevo. De este modo, todas las listas y paquetes que haya creado su organización con Developer Edition estarán visibles en su APO. 132 Publicación de la aplicación ¿Puedo actualizar mi aplicación con una versión nueva (parche)? ¿Puedo actualizar mi aplicación con una versión nueva (parche)? Sí, pero debe enviar la aplicación nueva (paquete) para someterla a la revisión de seguridad de AppExchange y debe registrar el paquete con su aplicación de gestión de licencias (LMA). ¿Cómo encontrarán los clientes mi lista? En AppExchange se buscan las aplicaciones y los servicios de consultoría de varias maneras diferentes: mediante términos de búsqueda, categorías de búsquedas y a través de proveedores de búsquedas externos, como Google. Resulta de gran utilidad conocer el puesto en que aparece la lista en cada uno de estos escenarios para poder obtener la máxima visibilidad entre los posibles clientes. • La mayoría de las veces, las aplicaciones y los servicios de consultoría se buscan mediante un término (palabra clave) en la página de inicio de AppExchange. AppExchange devuelve los resultados coincidentes y los ordena según la relevancia de la palabra clave. Estas son algunas sugerencias para entender su funcionamiento: ◊ Si incluye una palabra clave en cualquier lugar de la lista, esta última aparecerá en los resultados de las búsquedas que se hagan de esa palabra clave. ◊ Por lo general, la relevancia de una palabra clave aumenta al aparecer antes en la lista. ◊ Por lo general, la relevancia de una palabra clave aumenta al aparecer varias veces en la lista. Tenga en cuenta que aunque una palabra figure varias veces en una fila, el puesto que ocupa la lista no mejora. ◊ Cuando se buscan dos o más palabras clave, solo se mostrarán las listas que contienen todas las palabras clave en el mismo orden. Además, las búsquedas de varias palabras clave también encontrarán palabras que intercalen minúsculas y mayúsculas (por ejemplo, una búsqueda de "Aplicación Fantástica" también encontrará"AplicaciónFantástica"). ◊ Las listas que se muestran en los primeros puestos de una búsqueda son las más relevantes tanto desde el punto de vista de palabra clave como de popularidad (por ejemplo, la que tiene instalaciones más frecuentes, etc). • • • Cuando se buscan aplicaciones y servicios de consultoría mediante categorías de búsqueda (fichas Inicio, Aplicaciones o Servicios de consultoría), las listas de una categoría se ordenan según la popularidad obtenido durante los últimos 30 días. La popularidad sube o baja en función de todas las acciones que pueden llevar a cabo los clientes: instalación de una aplicación, realización de una prueba, observación de una demostración u otros recursos y clics en el vínculo de más información. Las actividades con mayor compromiso, tales como la instalación de una aplicación o la realización de una prueba, tienen un mayor peso específico que aquellas cuyo compromiso es menor, como hacer clic en capturas de pantalla. Tenga en cuenta que el número de revisiones y el puntuaje medio de una lista no tiene nada que ver con la popularidad de esta. Los resultados se pueden ordenar por puntuaje, fecha de publicación, nombre o nombre del proveedor. Los que lo hacen por puntuaje primero se ordenan por número de estrellas y luego por número de revisiones. Por tanto, una lista con una revisión y cinco estrellas se situará antes que una lista con 20 revisiones y cuatro estrellas. Debido a que AppExchange es un sitio Web público, los motores de búsqueda como Google y Bing indexan las páginas de listas y las muestran en sus resultados de búsquedas. Para mejorar su puesto en los resultados de proveedores de búsqueda externos, asegúrese de que hace referencia a la URL de su lista en su sitio Web, blog, Facebook y Twitter. ¿Cómo modifico un paquete después de haber creado una lista? Cuando inicie sesión en la página Publishing de AppExchange con las credenciales de su APO, podrá ver una lista de todos los paquetes cargados en AppExchange. Desde esta lista, puede hacer lo siguiente: • • Seleccionar Mostrar solo los paquetes no incluidos en listas (Show only unlisted packages) para ver únicamente las versiones de los paquetes cargados que no ha vinculado aún a una lista. Hacer clic en Iniciar revisión (Start Review) para comenzar la revisión de seguridad de AppExchange. 133 Publicación de la aplicación • • • • ¿Cómo obtengo un token de API para mi aplicación? Hacer clic en Modificar revisión para realizar cualquier cambio en el envío de la revisión de seguridad. Para los paquetes no incluidos en listas, hacer clic en Incluir en lista (List It) para crear una lista nueva y vincularla a esta versión de paquete de forma automática. Para los paquetes incluidos en listas, hace clic en Modificar lista (Edit Listing) para modificar la lista actual. Para las aplicaciones en paquetes gestionados, hacer clic en Gestionar licencias (Manage Licenses) para actualizar la configuración de licencias para esta versión de paquete. Podría indicar si la aplicación es gratuita o está a la venta, si caduca y, en ese caso, cuándo lo hará y el número de personas de la organización del instalador que pueden acceder a la aplicación. ¿Cómo obtengo un token de API para mi aplicación? Para obtener un token de API para su aplicación con el fin de poder usar las API de SOAP y de REST, es necesario que la aplicación supere la revisión de seguridad de AppExchange. Después, puede registrar un caso en el portal de socios en la categoría AppExchange y listas de servicios > Habilitar API de SOAP/REST para organización con GE/PE (AppExchange and Services Listings > Enable SOAP/REST API for GE/PE Org). Debe especificar el tipo de token (SOAP o API) y si utiliza OAuth. Nota: Esta función está disponible a los socios aptos. Para obtener más información sobre el programa de socios, incluidos los requisitos de aptitud, visite el sitio Web www.salesforce.com/partners. ¿Cómo puedo aumentar la popularidad de mi lista? La popularidad se basa en la actividad de los clientes en las listas. AppExchange mide todo lo que los usuarios hacen en las listas: instalar, buscar más información, usar versiones de prueba, ver demostraciones, observar capturas de pantalla, leer documentos técnicos, hojas de datos, entre otras actividades. AppExchange valora todas estas actividades según su nivel de importancia como indicaciones de interés e impide los intentos de abusar del sistema. AppExchange calcula la popularidad todos los días y resume y evalúa los resultados obtenidos durante 30 días. Cuando busca por categoría, verá las listas ordenadas según su popularidad relativa medida durante los últimos 30 días. La popularidad no es el resultado de las opiniones de los clientes ni de las puntuaciones que estos den a la lista. Los visitantes de AppExchange pueden ordenar por puntuación si lo prefieren. Si quiere mejorar las clasificaciones, siga estos consejos: • • • • Incluya una unidad de prueba. A los usuarios les gusta poder probar una aplicación y el número de unidades de prueba afecta a la popularidad. Además, con ello puede recopilar prospectos. Agregue imágenes. Una de las primeras cosas que hacen los visitantes es hacer clic en el botón Ver capturas de pantalla (View Screenshots). Sin estas capturas, muchas personas no se detendrán a ver una lista. Agregue más recursos, como hojas de datos y documentos técnicos. Sea claro con respecto a los precios: si no muestra los precios en la lista, los visitantes se mostrarán indiferentes enseguida. ¿Cómo puedo ofrecer una prueba gratuita de mi aplicación? Cuando cree o modifique una lista para una aplicación, en la ficha Oferta (Offering) deberá indicar si quiere ofrecer una prueba gratuita de Salesforce y su aplicación. Antes de poder hacerlo, deberá solicitar acceso mediante el registro de un caso en el portal de socios de salesforce.com. Cuando ya tenga el acceso otorgado, deberá preparar una organización de Salesforce de ejemplo que incluya la aplicación y los datos de ejemplo. Esta organización será la que cree una plantilla de prueba para los clientes que seleccionen la opción de prueba. Debe enviar la plantilla de prueba para someterla a la revisión de seguridad y debe asociarla con la lista de aplicaciones antes de poder hacerla pública. Haga clic aquí para obtener más información sobre las pruebas gratuitas en AppExchange. 134 Publicación de la aplicación ¿Cómo veo las listas que Salesforce ha eliminado? ¿Cómo veo las listas que Salesforce ha eliminado? En la página de inicio de Publishing, haga clic en Mostrar solo las listas eliminadas (Show only delisted listings) para ver las listas privadas que salesforce.com ha eliminado. Normalmente, estas eliminaciones de listas se deben a problemas de estas en las revisiones de seguridad periódicas. ¿Cómo pueden mis clientes actualizar la aplicación a una nueva versión? Cree una versión nueva del paquete gestionado y cargue esta versión en estado Editado. Cuando lo haga, podrá compartir la URL de instalación con los clientes actuales para que estos puedan hacer la actualización. Si solo va a implementar una solución de error y le gustaría que la actualización fuera automática, consulte “Programación de actualizaciones mediante envío” en la ayuda online de Salesforce. Puede utilizar la aplicación de gestión de licencias (LMA) para averiguar cuáles son los clientes que necesitan hacer la actualización. ¿Qué representan los iconos de mi lista? Cuando los clientes potenciales buscan listas en AppExchange pueden identificar con rapidez las funciones de su aplicación o servicio gracias a los iconos siguientes. Icono Descripción Significa que se vende la aplicación y no es gratuita. Significa que presta asistencia técnica para su aplicación. Significa que se trata de una aplicación nativa. Esta se compila principalmente en la plataforma Force.com con la posible excepción de las llamadas efectuadas a los proveedores siguientes: Google, Facebook o Amazon. Las aplicaciones nativas proporcionan muchos de los beneficios de Salesforce CRM y, por eso, gozan de popularidad entre los clientes. Para que su aplicación se considere "nativa", registre un caso en el portal de socios de salesforce.com. Identifica el estado de asociación de salesforce.com como socio de consultoría registrado. Identifica el estado de asociación de salesforce.com como socio de consultoría elegido. Identifica el estado de asociación de salesforce.com como socio de consultoría premier. Identifica el número de individuos certificados de Salesforce que hay en su organización. Para actualizar la información de certificación, inicie sesión en el portal de socios de salesforce.com. Identifica el número de proyectos finalizados que su compañía de consultoría ha registrado con salesforce.com. En la página de listas, se muestra el porcentaje de los clientes satisfechos. Este se calcula a partir de las respuestas a las encuestas enviadas 135 Publicación de la aplicación ¿Qué es una APO? Icono Descripción desde salesforce.com directamente a los clientes cuando finaliza un proyecto registrado. Para actualizar la información de proyectos, inicie sesión en el portal de socios de salesforce.com. ¿Qué es una APO? Todas sus aplicaciones y listas de servicios deben publicarse bajo una sola organización de salesforce.com, que será su organización de publicación de AppExchange (APO) principal. Considere la APO como la organización donde efectuará toda la gestión de AppExchange. Si tiene una organización de gestión de licencias (LMO), se recomienda utilizar la misma organización para la LMO y la APO. De esta manera, podrá realizar en un solo lugar el seguimiento de los clientes que instalan la aplicación y de los prospectos que la lista genera. La organización con Developer Edition donde crea las aplicaciones no debería designarse como la APO. Solo puede cambiar la APO si no tiene ninguna lista pública en AppExchange. Una vez que haya realizado al menos una lista pública, solo podrá designar una organización diferente como la APO si registra un caso en el servicio de atención al cliente de Salesforce desde el portal de socios. ¿Qué diferencia hay entre una prueba gratuita y una unidad de prueba? Cuando cree o modifique una lista para una aplicación, en la ficha Oferta (Offering) deberá indicar si quiere ofrecer una prueba gratuita de Salesforce y su aplicación. La prueba gratuita es una organización de Salesforce que no es de producción y que incluye la aplicación y datos de ejemplo. Si un cliente decide comprar la aplicación en lugar de esperar a que caduque la prueba, la organización se convierte en una versión de producción. Se recomienda dar a los clientes la opción de eliminar los datos de ejemplo mediante una secuencia de comandos de limpieza de datos y la inclusión de un botón para tal fin en la aplicación. Por otro lado, también puede ofrecer una unidad de prueba. Esta es una versión única de la aplicación de solo lectura en la que inician sesión los clientes que tomen esta unidas de prueba. Al igual que las pruebas gratuitas, las unidades de prueba son organizaciones con Developer Edition que incluyen datos de ejemplo y la configuración que elija usted. ¿Dónde puedo compartir mis ideas? Puede compartir sus ideas sobre la mejora de los programas de socios de AppExchange o de salesforce.com en el portal de socios de salesforce.com. Estas ideas solo las pueden ver salesforce.com y los demás socios. Si quiere que sus ideas sean públicas, ingréselas en IdeaExchange. ¿Dónde puedo cargar los testimonios? Cargue los testimonios en la ficha Contenido cargado (Uploaded Content) cuando modifique la lista. ¿Dónde puedo escribir una opinión? En la página de listas, haga clic en el número de opiniones o escriba la primera. Si ya hay opiniones, se le redireccionará a la página de opiniones donde puede hacer clic en Escribir una opinión (Write a review). Cada usuario puede escribir únicamente una opinión por lista. Importante: No puede escribir una opinión sobre su propia lista. Consulte las condiciones de uso de AppExchange para obtener más información legal. 136 Capítulo 7 Gestión de licencias y asistencia administrativa En este capítulo... • • • • • • • • • Descripción general de la Aplicación de gestión de licencias (LMA) Instalación de la LMA Configuración de la LMA Asociación de paquetes con su LMO Uso de la LMA Integración con ventas y marketing Mejores prácticas Preguntas más frecuentes sobre la Aplicación de gestión de licencias Solución de problemas Si ha instalado la Aplicación de gestión de licencias (LMA) puede realizar el seguimiento de licencias y prospectos, además de proporcionar asistencia administrativa para sus clientes. Estos temas se han explicado con más detalle en las secciones siguientes. Tenga en cuenta que AppExchange constituye un mecanismo estándar para presentar un acuerdo de licencia al instalador y requiere que se acepte este acuerdo antes de continuar con la instalación. Si quiere que sea necesario un acuerdo, pegue el texto del acuerdo de la licencia en el campo de texto Acuerdo de licencia (License Agreement) en la página de la lista de aplicaciones en el directorio de AppExchange. Si la aplicación necesita una negociación de licencia más interactiva, asegúrese de que en la página de bienvenida de la ficha Acerca de (About) se muestra con claridad el acuerdo de licencia de usuario final obligatorio y se indica el proceso recomendado para comenzar a usar la aplicación. En todos los casos, salesforce.com incluye una renuncia de responsabilidad de la aplicación. 137 Gestión de licencias y asistencia administrativa Descripción general de la Aplicación de gestión de licencias (LMA) Descripción general de la Aplicación de gestión de licencias (LMA) La Aplicación de gestión de licencias (LMA) ayuda a los desarrolladores y editores a aplicar las licencias a sus aplicaciones de AppExchange cargadas y registradas. Cada vez que un cliente o un cliente potencial instala su paquete gestionado, en la LMA se crean un registro de prospecto y uno de licencia. Al especificar los valores predeterminados de los registros de licencia, puede aplicar licencias para controlar el número de usuarios de la organización del cliente que puede acceder a su paquete y durante cuánto tiempo. Al utilizar la LMA, puede realizar el seguimiento de cuántos clientes han instalado un paquete y la versión del paquete están usando. Además, puede utilizarla para gestionar los prospectos asociados con las licencias. Nota: La LMA está disponible únicamente en inglés. La LMA es una aplicación que salesforce.com ha desarrollado y ha puesto a disposición de los socios aptos. Para obtener más información sobre el programa de socios, incluidos los requisitos de aptitud, visite el sitio Web www.salesforce.com/partners. Concepto de gestión de licencias El proceso de gestión de licencias comienza cuando alguien instala una aplicación desde AppExchange. A partir de ese momento, Salesforce realiza de forma automática las acciones siguientes: • • • Crea una licencia en la organización del instalador. Se guarda una copia de la licencia en la ficha Licencias de la LMA instalada en la LMO. Actualiza la versión del paquete con la información de la licencia. Crea un prospecto con el nombre, la compañía y la dirección de email del instalador. El origen del prospecto del instalador siempre es la instalación del paquete. Utilice la LMA para gestionar licencias para los paquetes gestionados. Al modificar los registros de licencias, podrá controlar el número de usuarios de la organización del cliente que tendrán acceso al paquete y la duración de este privilegio. Diagrama de relaciones de la entidad La LMA tiene tres objetos personalizados que están relacionados, directa e indirectamente, con objetos de Salesforce estándares. Consulte el diagrama de relaciones de la entidad siguiente para conocer cómo se establecen las relaciones de los objetos personalizados entre sí. 138 Gestión de licencias y asistencia administrativa • • • • • Terminología de LMA El objeto de paquete actúa de elemento raíz para toda la información de la LMA. Cada paquete puede tener varias versiones. La versión de paquete mantiene una relación principal-detalle con el objeto de paquete. Cada versión de paquete puede tener varias licencias. La licencia mantiene una relación de búsqueda con el objeto de versión de paquete. Cada licencia tiene una relación directa con un solo prospecto. La licencia mantiene una relación de búsqueda con el objeto de prospecto. El prospecto se puede convertir manualmente en una cuenta y un contacto. Cuando sucede esto, el registro de licencia se asocia de forma automática con los registros de la cuenta y el contacto convertidos. La licencia mantiene una relación de búsqueda con los objetos de cuenta y contacto. Terminología de LMA Aplicaciones Un conjunto de componentes de Salesforce como fichas, reportes, tableros y desencadenadores y clases de Apex destinados a una necesidad concreta del negocio. La aplicación se almacena en un paquete para cargarlo en AppExchange. Desarrollador El desarrollador de una aplicación es el usuario de Salesforce que ha creado la aplicación y sus componentes. Puede ser el propio editor u otra persona diferente. Instalador El instalador de una aplicación es la persona que ha instalado la aplicación desde AppExchange de Force.com en su organización de Salesforce. Gestor de prospectos El gestor de prospectos es el usuario responsable del seguimiento de los prospectos que se crean de forma automática cuando se instala un paquete gestionado. De forma predeterminada, los prospectos nuevos se asignan al gestor de licencias. El editor (que posee la LMO) utiliza el gestor de prospectos para realizar el seguimiento de los clientes que desinstalan los paquetes gestionados. 139 Gestión de licencias y asistencia administrativa Instalación de la LMA Licencia Una instalación de un paquete efectuada por una organización de Salesforce. Cada entrada de licencia en la LMA representa una instalación de un paquete gestionado. Gestor de licencias El usuario gestor de licencias se crea de forma automática cuando una organización instala la LMA. En ese momento, también se crea un perfil Gestor de licencias de paquete correspondiente. Este usuario es el propietario predeterminado de todos los paquetes gestionados mediante la LMA y todas las licencias creadas para estos paquetes. Organización de gestión de licencias (LMO) Una organización de gestión de licencias es la organización de Salesforce que puede utilizar para realizar un seguimiento de todos los usuarios de Salesforce que instalan su paquete. Una organización de gestión de licencias debe tener instalada la LMA. Recibe una notificación automáticamente cada vez que se instala o se desinstala su paquete, de manera que puede notificar fácilmente a los usuarios de las actualizaciones. Paquete gestionado Los paquetes gestionados son aquellos paquetes que se pueden actualizar en la organización del instalador. Son distintos de los no gestionados en que algunos componentes están bloqueados, lo que permite el proceso de actualización. Paquete El contenedor de una aplicación y sus componentes. En la LMA, el término paquete se refiere únicamente a los paquetes gestionados. Un paquete puede contener una aplicación, muchas o ninguna. Gestor de licencias de paquete El perfil Gestor de licencias de paquete proporciona a un solo usuario, el gestor de licencias, acceso completo a la LMA. No puede modificar este perfil ni asignarlo a otros usuarios. Versión del paquete Una versión específica de un paquete gestionado. La versión nueva se crea cuando el desarrollador carga el paquete actualizado desde una organización de desarrollador. Publicador El publicador de una aplicación es el usuario de Salesforce o la organización que ha publicado la aplicación en AppExchange. Después de registrar su aplicación, los publicadores deben registrarse con su información de contacto. Instalación de la LMA Antes de instalar la LMA, debe decidir qué organizaciones componen la organización de gestión de licencias (LMO). Como la LMA es una parte integral de las ventas, facturación y marketing de un paquete gestionado, incluir la LMA en organización equivocada dificulta la gestión de licencias como parte del proceso de ventas y marketing. La LMA crea registros de prospectos y licencias cuando los clientes instalan un paquete de prueba. Cuando compran el paquete, estas licencias se convierten licencias pagadas (por sitio o en función de un número de usuarios). La LMA realiza el seguimiento de quién ha instalado un paquete de prueba, quién lo utiliza, cuántas licencias se han adquirido, cuándo está lista para la renovación, etc. Todos estos elementos constituyen partes importantes del proceso de ventas, facturación y marketing que está en curso en su organización de producción. Si no ha solicitado aún un CRM para la organización ISV a través del portal de socios, hágalo ahora. CRM para los proveedores de software independientes está disponible para los socios aptos. Para obtener más información sobre el programa de socios, incluidos los requisitos de aptitud, visite el sitio Web www.salesforce.com/partners. 140 Gestión de licencias y asistencia administrativa Configuración de la LMA Nota: Si tiene una organización con Developer Edition que se usa para crear un paquete gestionado, no utilice esta organización como la LMO. Advertencia: Cuando comience a gestionar una licencia del paquete fuera de una LMO específica, no podrá trasladar esas licencias, prospectos ni ninguna otra información a otra organización. Una vez que instale la LMA, no podrá desinstalarla. Si desea desinstalar la LMA, deberá hacer contacto con el servicio de asistencia de Salesforce. Para instalar la LMA, haga lo siguiente: 1. Archive un caso en el portal de socios en la categoría AppExchange y listas de servicios > Solicitar la LMA (AppExchange and Services Listings > Request the LMA). 2. Cuando se resuelva el caso, recibirá un email con una URL de instalación. Inicie sesión en la organización que va a utilizar como su LMO y haga clic en el vínculo de LMA que figura en el mensaje de email. 3. Puede leer la reseña sobre la aplicación y hacer clic en Obtener ahora (Get It Now). 4. En la ventana emergente, elija En mi Salesforce de producción (In my production Salesforce). 5. Lea y acepte los términos y condiciones, y haga clic en Instalar (Install). 6. Compruebe su contraseña y haga clic en Enviar (Submit). 7. En la página Detalles de instalación del paquete (Package Installation Details), haga clic en Continuar (Continue). 8. Haga clic en Siguiente, Siguiente e Instalar. Haga clic en la esquina superior derecha y confirme que tiene la LMA instalada. Ilustración 15: Aplicación de gestión de licencias Configuración de la LMA Permisos de usuario necesarios Para configurar la LMA, haga lo siguiente: Perfil Administrador del sistema Para editar licencias y paquetes: "Lectura" Y "Modificación" Para ver licencias, paquetes y versiones de paquetes: "Lectura" Después de instalar la LMA, configúrela del modo siguiente: 141 Gestión de licencias y asistencia administrativa Asociación de paquetes con su LMO 1. Asigne un gestor de prospectos. Resulta fundamental que un usuario de la organización sea el propietario de todos los registros de prospectos creados tras la instalación de paquetes. 2. Establezca los permisos de objeto personalizados. a. Licencias: la mayoría de los usuarios en su organización no necesitan permisos. Los usuarios que ven licencias necesitan el permiso de “lectura” y los que modifican registros de licencias necesitan los permisos de “lectura” y “modificación”. b. Paquetes: solo los usuarios que asignan el gestor de prospectos necesitan permisos de “modificación”. Los demás tendrán permisos de “lectura” o ningún permiso. c. Versiones de paquetes: todos los usuarios tienen permisos de “lectura” o ningún permiso, ya que no es necesario crear, modificar ni eliminar estos registros. Advertencia: • • Las licencias, los paquetes y las versiones de paquetes gestionados en la LMA son diferentes de la mayoría de los registros, ya que AppExchange los crea de forma automática. Por este motivo, no deberían modificarse ni eliminarse los registros de licencia, paquete y versión de paquete. Los usuarios con el perfil Administrador del sistema pueden crear, modificar y eliminar registros de todos estos objetos personalizados, ya que tienen el permiso “Modificar todos los datos”. 3. Establezca la seguridad de nivel de campo en los perfiles de usuario o conjuntos de permisos. a. Licencias: la configuración depende de cómo quiera gestionar estos campos para distintos usuarios en la organización. b. Paquetes: todos los campos deben ser de solo lectura. Si quiere que los usuarios modifiquen el campo Gestor de prospectos (Lead Manager), puede hacer que este campo sea modificable. c. Versiones de paquetes: todos los campos deben ser de solo lectura. 4. Sustituya el botón estándar Modificar (Edit) en el registro de licencia para utilizar la página Modificar licencia (Modify License) de Visualforce. 5. Agregue listas relacionadas: • • • Agregue la lista relacionada Licencias (Licenses) al formato de página de prospectos adecuado. Los gestores de licencias pueden utilizar esta lista en la página de detalles de prospectos para ver las licencias asociadas con un prospecto concreto. Agregue la lista relacionada Licencias (Licenses) al formato de página de cuentas adecuado. Los usuarios pueden consultar esta lista e identificar en ella las licencias asociadas con una cuenta concreta. Agregue la lista relacionada Licencias (Licenses) al formato de página de contactos adecuado. Los usuarios pueden consultar esta lista e identificar en ella las licencias asociadas con un contacto concreto. Asociación de paquetes con su LMO Para recibir registros de prospectos y licencias desde instalaciones de clientes, debe asociar su paquete gestionado con su Organización de gestión de licencias (LMO), la organización de Salesforce donde está instalada la aplicación de gestión de licencias. Advertencia: Una vez que asocie un paquete con una LMO, los prospectos y las licencias de ese paquete deben gestionarse de forma permanente fuera de la LMO. No puede migrar licencias. Puede asociar su paquete gestionado con su LMO en AppExchange. 1. Vaya a http://www.appexchange.com. 2. Haga clic en la ficha Publicando (Publishing). 3. Ingrese la organización con Developer Edition donde haya creado el paquete. 142 Gestión de licencias y asistencia administrativa Valores predeterminados de licencias 4. 5. 6. 7. 8. 9. Acepte los términos y condiciones. Rellene un perfil breve, bastará con el nombre. Haga clic en la ficha Sus paquetes cargados (Your Uploaded Packages) y encuentre la versión del paquete. Haga clic en el vínculo Gestionar licencias (Manage Licenses) correspondiente a la versión de paquete. Haga clic en Registrar (Register). Especifique la LMO con las credenciales de usuario de esa organización y especifique los demás parámetros de licencia predeterminados. 10. Haga clic en Guardar. Pueden pasar al menos 30 minutos hasta que un registro de paquete aparezca asociado con la LMO. Nota: Todas las versiones de paquete gestionado se asocian con la misma LMO; por tanto, la LMO estará asociada solo una vez con el paquete. Valores predeterminados de licencias Registre el paquete y elija los valores predeterminados de licencias: 1. En la página de inicio de Publishing, haga clic en Gestionar licencias (Manager Licenses) junto al paquete cargado y gestionado. 2. En la página de registro del paquete cargado, haga clic en Registrar (Register). Si el paquete nunca ha estado asociado con una LMO, seleccione una. Si ya había una versión anterior del paquete registrada, la configuración de esta aparecerá de forma automática. Puede modificar esta configuración excepto la LMO. Para cambiar una LMO debe hacer contacto con salesforce.com. 3. Seleccione si la licencia predeterminada es una licencia de prueba gratuita o una activa. Si se trata de una licencia gratuita, seleccione Activar (Activar). 4. Si ha seleccionado una licencia de prueba gratuita, ingrese la duración en número de días completos, hasta un máximo de 90. Si ha seleccionado una licencia activa, ingrese la duración en número de días completos. Si la licencia es gratuita o no caduca, seleccione La licencia no caduca (License does not expire). 5. Ingrese el número de puestos asociados con la licencia predeterminada o seleccione La licencia es para todo el sitio (License is site-wide) para ofrecer la licencia a todos los usuarios en la organización del instalador. 6. Haga clic en Guardar. Cuando un cliente instala el paquete, estos valores predeterminados se utilizan para rellenar los campos Estado (Status), Fecha de caducidad (Expiration Date) y Puestos (Seats) en el registro de licencias en la LMA y en la organización del instalador. Si quiere actualizar estos valores, podrá modificar este registro en la LMA. Nota: Los valores predeterminados se encuentran en el nivel de versión de paquete; por tanto, las diferentes versiones del mismo paquete pueden tener distintos valores predeterminados. Uso de la LMA Permisos de usuario necesarios Para editar licencias y paquetes: "Lectura" Y "Modificación" Para ver licencias, paquetes y versiones de paquetes: "Lectura" 143 Gestión de licencias y asistencia administrativa Acerca de los prospectos Utilice la aplicación de gestión de licencias (LMA) para aplicar licencias al paquete gestionado con el fin de controlar el número de usuarios de la organización del instalador que puede acceder a su paquete y el tiempo durante el que tendrá acceso. Cada vez que se instala su paquete, se crea un registro de prospecto en la LMA. Puede utilizar esta información para hacer contacto con el prospecto e intentar que este se convierta en cliente o para informarle sobre las actualizaciones de las aplicaciones. Acerca de los prospectos Cuando un instalador instala un paquete gestionado, se crea automáticamente un prospecto en la LMO. Este contiene el nombre, la compañía y la dirección de email del instalador. El origen del prospecto es de forma predeterminada la instalación del paquete. Esta información es importante porque constituye el vínculo de la licencia con un usuario de Salesforce real con el que puede hacer contacto para notificarle las actualizaciones. Si un instalador desinstala el paquete desde su organización, un especialista dedicado a conservar los clientes de la organización del desarrollador podría hacer contacto con el instalador. Además, si hubiera una actualización para un paquete concreto, es posible que el gestor de licencias piense en enviar un email masivo a todos los instaladores del paquete para que sepan que la actualización está disponible. Cada LMO debería tener un gestor de prospectos que se responsabilice del seguimiento de todos los prospectos asociados con las licencias. Cuando se crea un prospecto nuevo tras la instalación de un paquete desde AppExchange, el campo Propietario del prospecto (Lead Owner) en el registro del prospecto toma como valor predeterminado el gestor de prospectos especificado para el paquete. En caso de que no exista tal gestor, el propietario predeterminado será el gestor de licencias. Acerca de los paquetes Los paquetes en la LMA son los paquetes gestionados que se han cargado en AppExchange. En AppExchange, a estos paquetes se les llama aplicaciones, sean cuales sean los componentes que contengan. Cada paquete tiene una o varias versiones, para las que puede haber varias licencias. Una organización con Developer Edition puede contener únicamente un paquete gestionado cada vez, pero una LMO puede gestionar varios paquetes desde varios desarrolladores. Haga clic en la ficha Paquetes (Packages) para ver todos los paquetes que un usuario ha consultado recientemente. Para ver todos los paquetes que la LMO gestiona, seleccione Todos (All) en la vista de lista. Puede hacer clic en el nombre de un paquete para ver los detalles: fecha de publicación, versión más reciente, propietario y nombre del desarrollador. Detalles del paquete En la ficha Paquetes (Packages), haga clic en el nombre de un paquete para ver los detalles de este. La página de detalles de paquete contiene información sobre el paquete, así como listas relacionadas relevantes. En la lista relacionada Versión del paquete (Package Version), puede ver todas las versiones del paquete cargadas y registradas en AppExchange. El objeto de la versión del paquete mantiene una relación principal-detalle con el objeto de paquete. Importante: No modifique, elimine, duplique ni cree paquetes o versiones de paquetes. No elimine, duplique ni cree licencias. Estos registros se crean de forma automática y contienen información importante para el seguimiento de las licencias y los paquetes en la Aplicación de gestión de licencias. No se pueden volver a rellenar. En esta tabla puede ver los atributos de un paquete. Campo Descripción Creado por Se toma como valor predeterminado el usuario que actúa de gestor de licencias. Nombre del desarrollador (Developer Name) El nombre de la organización del desarrollador del paquete. 144 Gestión de licencias y asistencia administrativa Campo Modificación de los propietarios de paquetes Descripción Id. de organización de El Id. de 18 caracteres de la organización del desarrollador del paquete. desarrollador (Developer Org ID) Autor de la última modificación El nombre del usuario que hizo la última modificación del registro. También se indica la fecha y hora de la actualización del registro. Versión más reciente (Latest La versión cargada y registrada más reciente del paquete. El desarrollador ingresa esta Version) información cuando carga el paquete. Gestor de prospectos (Lead Manager) El usuario de la LMO que se ha convertido automáticamente en el propietario de los prospectos creados tras la instalación del paquete. El campo Gestor de prospectos se mostrará en blanco cuando se crea el registro del paquete. Si no asigna un gestor de prospectos, el usuario que actúe de gestor de licencias será el propietario de los prospectos. Propietario Se toma como valor predeterminado el usuario que actúa de gestor de licencias. Puede transferir la propiedad en cualquier momento a cualquier usuario de la organización; para ello, debe hacer clic en Cambiar (Change) junto al nombre del propietario actual. Id. de paquete (Package ID) El Id. exclusivo global de 18 caracteres que identifica al paquete. Nombre de paquete El nombre del paquete, tal y como lo ha especificado el desarrollador. Fecha de publicación (Release Date) La fecha en la que el desarrollador ha cargado este paquete en AppExchange. Modificación de los propietarios de paquetes Permisos de usuario necesarios Para editar licencias y paquetes: "Lectura" Y "Modificación" De forma predeterminada, el propietario del paquete es el usuario que actúe de gestor de licencias. Puede cambiar el propietario de un paquete cuando lo desee, siempre y cuando tenga los permisos adecuados. Nota: Puede asignar la propiedad a cualquier usuario de la organización. Por tanto, es muy importante asegurarse de que el usuario al que va a transferir la propiedad tiene acceso a la LMA y la aplicación personalizada y que tiene los permisos de usuario adecuados. Para cambiar el propietario de un solo paquete, haga lo siguiente: 1. 2. 3. 4. 5. Haga clic en la ficha Paquetes (Packages). Seleccione un paquete. Haga clic en el vínculo Cambiar (Cambiar) situado junto al propietario. Haga clic en el icono de búsqueda y elija un propietario nuevo. También puede seleccionar la casilla de verificación Enviar email de notificación (Send Notification Email) para enviar un email al propietario actual y al nuevo. 145 Gestión de licencias y asistencia administrativa Modificación del gestor de prospectos para un paquete 6. Haga clic en Guardar. También puede transferir la propiedad de varios paquetes a un solo propietario; para ello, hay que ir a una vista de lista de paquetes específica. Para cambiar el propietario de varias licencias, haga lo siguiente: 1. 2. 3. 4. 5. 6. Haga clic en la ficha Paquetes (Packages). Seleccione una vista de lista de paquetes. Seleccione los paquetes que desea modificar. Haga clic en Cambiar propietario (Change Owner). Haga clic en el icono de búsqueda y elija un propietario nuevo. También puede seleccionar la casilla de verificación Enviar email de notificación (Send Notification Email) para enviar un email al propietario actual y al nuevo. 7. Haga clic en Guardar. Modificación del gestor de prospectos para un paquete Permisos de usuario necesarios Para editar licencias y paquetes: "Lectura" Y "Modificación" Cuando se crea un prospecto nuevo tras la instalación de un paquete desde AppExchange, el campo Propietario del prospecto (Lead Owner) en el registro del prospecto toma como valor predeterminado el gestor de prospectos especificado para el paquete. En caso de que no exista tal gestor, el propietario predeterminado será el gestor de licencias. Para asignar o modificar el gestor de prospectos de un paquete, haga lo siguiente: 1. Seleccione un paquete desde la ficha Paquetes (Packages). 2. Haga clic en Modificar. 3. Haga clic en el icono de búsqueda situado junto al campo Gestor de prospectos (Lead Manager) para buscar un usuario. 4. Seleccione un usuario. 5. Haga clic en Guardar. Acerca de las versiones de paquetes Las versiones de paquetes son cargas específicas de un paquete. Una versión del paquete puede contener objetos actualizados o adicionales, o bien puede representar una actualización de un paquete. Un paquete también puede tener una versión nueva si el paquete se ha cargado originalmente como “Gestionado en versión beta” pero, después, se ha cambiado a “Gestionado y editado”. Las licencias representan la versión del paquete que un usuario ha instalado. Todas las versiones de un paquete gestionado se asocian con la misma LMO. Si ve el detalle de una versión del paquete, podrá ver una lista de todas las licencias que los instaladores han instalado en esa versión. Nota: No modifique, elimine, duplique ni cree paquetes o versiones de paquetes. No elimine, duplique ni cree licencias. Estos registros se crean de forma automática y contienen información importante para el seguimiento de las licencias y los paquetes en la Aplicación de gestión de licencias. No se pueden volver a rellenar. 146 Gestión de licencias y asistencia administrativa Detalles de la versión del paquete Detalles de la versión del paquete Para acceder a la página de detalles de la versión del paquete, haga clic en el nombre de la versión del paquete en las fichas Licencias (Licenses), Paquetes (Packages) o Versiones del paquete (Package Versions). En la lista relacionada Licencias verá todas las licencias asociadas con esta versión del paquete. El objeto de licencia mantiene una relación de búsqueda con el objeto de versión del paquete. Nota: No modifique, elimine, duplique ni cree paquetes o versiones de paquetes. No elimine, duplique ni cree licencias. Estos registros se crean de forma automática y contienen información importante para el seguimiento de las licencias y los paquetes en la Aplicación de gestión de licencias. No se pueden volver a rellenar. En esta tabla puede ver los atributos de una versión del paquete. Campo Descripción Beta Se trata de una versión inicial de un paquete gestionado que se carga en AppExchange a modo de muestra para que el público objetivo del paquete pueda probarlo. Creado por Se toma como valor predeterminado el usuario que actúa de gestor de licencias. Autor de la última modificación El nombre del usuario que hizo la última modificación del registro. También se indica la fecha y hora de la actualización del registro. Paquete El paquete al que corresponde esta versión. Nombre de la versión del paquete (Package Version Name) El nombre de la versión del paquete, tal y como lo ha especificado el desarrollador durante la carga. Fecha de publicación (Release La fecha en la que el desarrollador ha cargado esta versión del paquete en Date) AppExchange. Versión La versión como la ha especificado el desarrollador durante la carga en AppExchange de Force.com. Id. de versión (Version ID) El Id. de 18 caracteres de esta versión del paquete. Acerca de las licencias Cuando se instala una aplicación, Salesforce crea una entrada de licencia en la LMA. Esta licencia estará relacionada directamente con la versión del paquete que el instalador ha instalado. Haga clic en la ficha Licencias (Licenses) para ver todas las licencias que un usuario ha consultado recientemente. Para ver todas las licencias de los paquetes que la LMO gestiona, en la lista desplegable seleccione Todos (All) y haga clic en Ir (Go!). Nota: No modifique, elimine, duplique ni cree paquetes o versiones de paquetes. No elimine, duplique ni cree licencias. Estos registros se crean de forma automática y contienen información importante para el seguimiento de las licencias y los paquetes en la Aplicación de gestión de licencias. No se pueden volver a rellenar. Detalles de licencias En la ficha Licencia (License), puede hacer clic en el nombre de una licencia para ver detalles de esta como su estado, la versión de paquete, el propietario y la fecha de instalación. En esta tabla puede ver los atributos de una licencia. 147 Gestión de licencias y asistencia administrativa Detalles de licencias Campo Descripción Cuenta La cuenta de un prospecto convertido. Contacto El contacto de un prospecto convertido. Creado por Se toma como valor predeterminado el usuario que actúa de gestor de licencias. Fecha de caducidad Se muestra la fecha de caducidad o, si la licencia no tiene tal fecha, la indicación No caduca (Does not expire). El valor predeterminado es No caduca. Fecha de instalación (Install La fecha en la que el instalador instaló la versión de paquete. Date) Autor de la última modificación El nombre del usuario que hizo la última modificación del registro. También se indica la fecha y hora de la actualización del registro. Prospecto El prospecto que la LMA ha creado de forma automática cuando se instaló la aplicación. Este prospecto representa al usuario propietario de la licencia. Si el prospecto se convierte en una oportunidad, se conserva el mismo nombre pero se elimina el registro del prospecto. Por tanto, si hace clic en este vínculo, se mostrará una página donde se indica que el prospecto se ha convertido. Nombre de licencia (License Name) Representa una instancia de una licencia. El nombre de licencia es un número automático que aumenta de uno en uno según se van agregando licencias. Puestos con licencia (Licensed Seats) Se trata de un campo de fórmula en el que se muestra el número de licencias o Licencia de sitio (Site License). El valor predeterminado es Licencia de sitio. Estado de licencia (License Status) Indica el tipo de licencia. Los valores disponibles son Prueba (Trial), Activa (Active), Suspendido (Suspended) y Desinstalado (Uninstalled). Tipo de licencia (License Type) Indica si se puede modificar la licencia. Propietario Se toma como valor predeterminado el usuario que actúa de gestor de licencias. Puede transferir la propiedad en cualquier momento a cualquier usuario de la organización; para ello, debe hacer clic en Cambiar (Change) junto al nombre del propietario actual. Versión del paquete Vincula a la página de detalles de la versión del paquete que sea la principal de esta licencia. Id. de organización de suscriptor (Subscriber Org ID) Un id. de 15 caracteres exclusivo global que representa la organización del instalador. Licencias utilizadas Se muestra el número de usuarios de una organización que tienen licencia para un paquete. (Solo lectura) Este campo se mostrará en blanco en las circunstancias siguientes: • • Un cliente ha desinstalado el paquete. El campo Puestos con licencia se ha establecido en Licencia de sitio. Tenga en cuenta que esta configuración conlleva que todos los usuarios de una organización tienen de forma implícita una licencia para el paquete. 148 Gestión de licencias y asistencia administrativa Modificación de propietarios de licencias Modificación de propietarios de licencias Permisos de usuario necesarios Para editar licencias y paquetes: "Lectura" Y "Modificación" De forma predeterminada, el propietario de la licencia es el usuario que actúe de gestor de licencias. Puede cambiar el propietario, siempre y cuando tenga los permisos adecuados. También puede transferir la propiedad de varias licencias a un solo propietario; para ello, hay que ir a una vista de lista de licencias específica. Nota: Puede asignar la propiedad a cualquier usuario de la organización. Por tanto, es muy importante asegurarse de que el usuario al que va a transferir la propiedad tiene acceso a la LMA y la aplicación personalizada y que tiene los permisos de usuario adecuados. Para cambiar el propietario de una licencia, haga lo siguiente: 1. 2. 3. 4. 5. Haga clic en la ficha Licencias (Licenses). Seleccione una licencia. Haga clic en el vínculo Cambiar (Cambiar) situado junto al propietario. Haga clic en el icono de búsqueda y elija un propietario nuevo. También puede seleccionar la casilla de verificación Enviar email de notificación (Send Notification Email) para enviar un email al propietario actual y al nuevo. 6. Haga clic en Guardar. Para cambiar el propietario de varias licencias, haga lo siguiente: 1. 2. 3. 4. 5. 6. Haga clic en la ficha Licencias (Licenses). Seleccione una vista de lista de licencias. Seleccione las licencias que desea modificar. Haga clic en Cambiar propietario (Change Owner). Haga clic en el icono de búsqueda y elija un propietario nuevo. También puede seleccionar la casilla de verificación Enviar email de notificación (Send Notification Email) para enviar un email al propietario actual y al nuevo. 7. Haga clic en Guardar. Modificación de licencias Permisos de usuario necesarios Para editar licencias y paquetes: "Lectura" Y "Modificación" Puede modificar las licencias de cada instalador. Para modificar una licencia, haga lo siguiente: 149 Gestión de licencias y asistencia administrativa Modificación de licencias 1. Haga clic en la ficha Licencias (Licenses). 2. Seleccione la licencia adecuada. 3. Haga clic en Modificar licencia (Modify License). Nota: Si no ve la opción Modificar licencia, compruebe el formato de la página o haga contacto con el administrador. 4. Realice los cambios necesarios en los campos modificables. 5. Haga clic en Guardar. Campos de licencia modificables Puede modificar los siguientes campos de licencia. Campo Descripción Vencimiento (Expiration) Ingrese la fecha de caducidad para identificar el último día que el instalador tendrá acceso al paquete en virtud del acuerdo de licencia. En caso de que la licencia no caduque, marque No caduca (Does not expire). Puestos (Seats) Ingrese un número positivo para establecer el número de licencias o marque Licencia de sitio (Site License) para que el paquete esté disponible para todos los usuarios de la organización del instalador. El valor predeterminado es Licencia de sitio. Estado Use la lista desplegable para establecer el estado de licencia. Los valores disponibles son los siguientes: • Prueba (Trial): establezca el valor en Prueba para que el instalador disponga de 90 días para probar el paquete. Una vez que una licencia de prueba se convierte en una licencia activa, ya no puede volver a ser una licencia de prueba. • Activa (Active): establezca el valor en Activa para que el instalador pueda utilizar el paquete según las condiciones del acuerdo de licencia. • Suspendido (Suspended): establezca el valor en Suspendido para prohibir al instalador el acceso al paquete. Es posible que le interese establece un paquete como Suspendido si el usuario no paga la licencia. Nota: Cuando el instalador desinstala el paquete, el estado será Desinstalado (Uninstalled). El gestor de licencias no puede establecer ni cambiar este estado. Una vez desinstalado el paquete, la licencia será de solo lectura y ya no se podrá modificar. Los cambios de estado permitidos son los siguientes: • • • 150 De Prueba a Activa De Activa a Suspendido De Suspendido a Activa Gestión de licencias y asistencia administrativa Integración con ventas y marketing Integración con ventas y marketing Puede utilizar la información en la LMA para enviar notificaciones a los clientes. Advertencia: No cree reglas de flujo de trabajo, desencadenadores ni reglas de validación que requieran campos personalizados en los objetos de licencia o de prospecto. No imponga condiciones sobre la actualización o la creación de registros de licencias o prospectos. De lo contrario, la LMA bloqueará la creación de los registros de licencia o prospecto, lo que daría como resultado la pérdida de datos relativos a los paquetes que instalen sus clientes. Enviar notificaciones de actualización Cree una plantilla de email para notificar a los clientes de que existe una actualización disponible. Enviar notificaciones de caducidad de licencias Cree una regla de flujo de trabajo que envíe emails de forma automática al representante de ventas o gestor de cuentas antes de que caduque la licencia. Para ello, cree una plantilla de email para la notificación. Después, cree una regla de flujo de trabajo con un filtro en la que se especifique un periodo de tiempo (mes) antes de la fecha de caducidad. Por último, asocie esa regla a una alerta de flujo de trabajo que envíe un email al miembro del equipo adecuado o al representante de ventas. Debería configurar la regla de tal modo que el representante de ventas y el cliente puedan disponer del tiempo suficiente para conocer las opciones de renovación del contrato antes del vencimiento de la licencia. También se recomienda enviar emails a los clientes para avisarles sobre la caducidad de la licencia. Conservar los clientes Cree una regla de flujo de trabajo que envíe automáticamente un email al representante del servicio de atención al cliente o al especialista dedicado a conservar los clientes para avisarle cuando el paquete haya dejado de estar instalado en esa organización. Para ello, cree una plantilla de email para la notificación. Después, cree una regla de flujo de trabajo con un filtro en la que se especifique que el estado de la licencia es “Desinstalado”. Por último, asocie esa regla a una alerta de flujo de trabajo que envíe un email al miembro del equipo adecuado o al especialista dedicado a conservar los clientes. Utilice la API para encontrar usuarios con licencias Puede utilizar el método isCurrentUserLicensed para determinar si un usuario tiene licencia para un paquete gestionado. Para obtener más información, consulte la Guía del desarrollador de Apex. Mejores prácticas Evitar los campos obligatorios No cree campos personalizados obligatorios en los objetos de prospecto, licencia, paquete y versión de paquete. Evitar los desencadenadores y las reglas de validación before-create No defina desencadenadores ni reglas de validación before-create en objetos de prospecto, licencia, paquete y versión de paquete. Utilizar dominios personalizados Cuando utilice el acceso a la asistencia de paquete para solucionar problemas de configuración del cliente, es posible que se cierre su sesión de la LMO. Para evitarlo, utilice un dominio personalizado para su LMO. Para obtener más información, consulte “Descripción general de Mi dominio” en la ayuda online de Salesforce. Asegurarse de que el usuario prospecto es un usuario válido y activo Esta comprobación es necesaria para la creación de prospectos y licencias. 151 Gestión de licencias y asistencia administrativa Preguntas más frecuentes sobre la Aplicación de gestión de licencias Realizar el seguimiento de las licencias Cree un filtro de consulta en la lista de prospectos para los prospectos que crean los paquetes instalados. Configure el seguimiento del historial para los campos de licencia. Enviar notificaciones de caducidad de licencias Cree una regla de flujo de trabajo que envíe emails de forma automática al representante de ventas o gestor de cuentas antes de que caduque la licencia. Para ello, cree una plantilla de email para la notificación. Después, cree una regla de flujo de trabajo con un filtro en la que se especifique un periodo de tiempo (por ejemplo, mes) antes de la fecha de caducidad. Por último, asocie esa regla a una alerta de flujo de trabajo que envíe un email al miembro del equipo adecuado o al representante de ventas. Debería configurar la regla de tal modo que el representante de ventas y el cliente puedan disponer del tiempo suficiente para conocer las opciones de renovación del contrato antes del vencimiento de la licencia. También se recomienda enviar emails a los clientes para avisarles sobre la caducidad de la licencia. Enviar notificaciones de actualización Cree una plantilla de email para notificar a los clientes de que existe una actualización disponible. En la ficha Prospectos de la LMA existe una lista de todos los clientes. Utilice la API para encontrar usuarios con licencias Puede utilizar el método isCurrentUserLicensed para determinar si un usuario tiene licencia para un paquete gestionado. Para obtener más información, consulte la Guía del desarrollador del código Apex de Force.com. Conservar los clientes Si un cliente desinstala un paquete, el estado de la licencia en la LMO cambiará a Desinstalado. Cree una regla de flujo de trabajo que envíe automáticamente un email al representante del servicio de atención al cliente para avisarle cuando el paquete haya dejado de estar instalado en esa organización. Para ello, cree una plantilla de email para la notificación. Después, cree una regla de flujo de trabajo con un filtro en la que se especifique que el estado de la licencia es “Desinstalado”. Por último, asocie esa regla a una alerta de flujo de trabajo que envíe un email al miembro del equipo adecuado o al especialista dedicado a conservar los clientes. Advertencia: No cree reglas de flujo de trabajo, desencadenadores ni reglas de validación que requieran campos personalizados en los objetos de licencia o de prospecto. No imponga condiciones sobre la actualización o la creación de registros de licencias o prospectos. De lo contrario, la LMA bloqueará la creación de los registros de licencia o prospecto, lo que daría como resultado la pérdida de datos relativos a los paquetes que instalen sus clientes. Preguntas más frecuentes sobre la Aplicación de gestión de licencias ¿Cómo cambio mi Organización de gestión de licencias? Haga contacto con el servicio de atención al cliente de salesforce.com. Tenga en cuenta que los registros de licencias en la Organización de gestión de licencias (LMO, siglas en inglés) no se trasladan a la nueva LMO sino que permanecen con la LMO original. ¿Por qué no se han creado los registros de prospecto y licencia en mi LMO? • • • • Su LMO no se ha asociado a su paquete. No se ha registrado su versión de paquete. Puede haber campos personalizados obligatorios en los objetos personalizados de prospecto, licencia, paquete y versión de paquete. El gestor de prospectos de la LMO (el propietario de los registros de prospectos) no es un usuario activo válido. 152 Gestión de licencias y asistencia administrativa • Solución de problemas Los desencadenadores del tipo before_ impiden la creación de prospectos. Para otras posibilidades, consulte la sección Solución de problemas. ¿Por qué no puedo ver el botón Modificar licencia (Modify License)? Debe personalizar el formato de la página y agregar a esta el botón Modificar licencia. Un cliente ha instalado mi paquete antes de que lo asociara con mi LMO. ¿Cómo puedo gestionar el registro de licencia? Pida al cliente que instale el paquete de nuevo sin desinstalarlo. ¿Qué sucede cuando reduzco el número de licencias por debajo del número actual de usuarios con licencia? Todos los usuarios seguirán tienen acceso hasta que un administrador del sistema en la organización del instalador revoque las licencias adicionales. ¿Por qué debería instalar la LMA en mi organización de Salesforce de producción? La LMA es una parte importante de las ventas, facturación y marketing de un paquete de un socio en la plataforma de Salesforce. La instalación en otra organización significa que no podrá gestionar las licencias de paquete como parte de su proceso de ventas y marketing. La instalación de la LMA en la organización de producción del cliente significa que este puede gestionar el prospecto, la prueba, las licencias y la facturación como parte de su conjunto de datos global de Salesforce. ¿Puedo automatizar la asignación de licencias de paquetes a los usuarios en la organización del suscriptor? No. La API no expone las licencias de paquete en la organización del suscriptor. Solución de problemas Los problemas más frecuentes se originan cuando no se crean los prospectos o las licencias o cuando se desactiva un usuario proxy. No se crean prospectos o licencias Cuando un suscriptor instala mi paquete, en la LMO no se crean los prospectos o las licencias. Normalmente, el problema se encuentra en una configuración errónea de la organización donde la LMA se encuentra instalada. Para buscar una solución, puede hacer las comprobaciones siguientes: ¿Ha instalado el suscriptor realmente el paquete? AppExchange cuenta la instalación cuando el usuario hace clic en “Obtener ahora” (Get it now) pero puede producirse un error en la instalación o puede cancelarse esta y, al no haber finalizado la instalación, no se entrega la licencia. ¿Existe un desencadenante en el objeto de prospecto o de licencia en la LMO? En los prospectos o licencias de la LMO, no debería haber nunca un desencadenante de tipo before_create o before_update. En su lugar, pruebe a utilizar desencadenantes del tipo after_. O bien, elimine el desencadenante. Tenga en cuenta que si, por cualquier motivo, se produce un error en el desencadenante, se bloqueará la creación de licencias. ¿Existe un campo personalizado obligatorio en el registro de prospecto o licencia? Si es así, elimine el requisito. La LMA no rellena el campo obligatorio y esto puede bloquear la creación de licencias o de prospectos. 153 Gestión de licencias y asistencia administrativa Solución de problemas ¿Es el gestor de prospectos de la LMO un usuario activo y válido? El gestor de prospectos (el propietario de los registros de prospectos) debe ser un usuario activo y válido; de lo contrario, se bloqueará la creación de licencias o de prospectos. ¿Existe una regla de validación en el registro de prospecto o licencia? Con frecuencia, las reglas de validación bloquean la creación de registros de prospectos o licencias de la LMA porque el campo obligatorio no se encuentra ahí. ¿Existe una regla de flujo de trabajo sobre los prospectos o las licencias? Si existe alguna, podría estar impidiendo la creación de la licencia. Pruebe a eliminar la regla de flujo de trabajo que exista. ¿Se ha convertido el prospecto en una cuenta? Cuando los prospectos se convierten en cuentas, dejan de ser prospectos. Nota: Si el problema se resuelve mediante alguno de los pasos descritos, en pocos días se entregarán a una LMO las licencias que no se pudieron entregar. Se ha desactivado un usuario proxy Si se muestra el mensaje de "usuario proxy desactivado" cuando se modifica una licencia en la LMO, podría bloquearse, eliminarse o deshabilitarse la organización del suscriptor. Para solucionar el problema, compruebe lo siguiente: Compruebe que la organización está activa. Compruebe junto con el administrador de la organización si esta está activa o se ha eliminado. Si se hubiera eliminado, haga lo mismo con el registro de licencia correspondiente. Compruebe que el paquete está instalado. Compruebe junto con el administrador de la organización si el paquete sigue estando instalado. Si la organización está bloqueado o el paquete ya no está instalado, no se puede actualizar la licencia. El suscriptor deberá reinstalar el paquete. 154 Capítulo 8 Prueba gratuita de la aplicación En este capítulo... • • • • • • • • • ¿Por qué utilizar Trialforce? Descripción general de Trialforce Configuración de Trialforce Pruebas gratuitas en AppExchange Pruebas gratuitas en el sitio Web Modificación de la prueba para una actualización Mejores prácticas de Trialforce Creación de inscripciones usando la API Preguntas más frecuentes sobre Trialforce Por lo general, a todos nos gusta probar lo que vamos a comprar. Por ello, las pruebas gratuitas constituyen una oportunidad para que los clientes potenciales conozcan el producto. Es un modo de llegar a más clientes y lograr la máxima distribución y adopción de la aplicación. Los socios que facilitan pruebas gratuitas de sus aplicaciones llegan a duplicar sus prospectos. Para hacerlo, dispone de varias opciones: • • • • En AppExchange puede poner a disposición la aplicación para que la instalen los prospectos. En AppExchange puede configurar una prueba. En AppExchange puede utilizar Trialforce. En su sitio Web puede utilizar Trialforce. Trialforce es una tecnología de aprovisionamiento para las organizaciones de salesforce.com. Permite que los socios de proveedores de software independientes configuren y gestionen pruebas gratuitas de sus aplicaciones. Con Trialforce, puede configurar su aplicación de Force.com según sus especificaciones, puede incluir datos de ejemplo que sean relevantes e incluso puede personalizar el aspecto de la aplicación para que refleje la marca de su compañía. Nota: Esta función está disponible a los socios aptos. Para obtener más información sobre el programa de socios, incluidos los requisitos de aptitud, visite el sitio Web www.salesforce.com/partners. 155 Prueba gratuita de la aplicación ¿Por qué utilizar Trialforce? ¿Por qué utilizar Trialforce? Trialforce constituye un modo sencillo de aprovisionar pruebas gratuitas e implementar su aplicación de Force.com desde su propio sitio Web o desde cualquier otro sitio. Con Trialforce podrá: • • • • Ejecutar sus propias campañas de marketing para llegar al mayor número posible de clientes y conseguir la máxima adopción Personalizar la aplicación, incluidas las marcas, la funcionalidad, el diseño, los datos y la experiencia de la versión de prueba Gestionar pruebas para varias aplicaciones, versiones y ediciones desde un lugar que resulte cómodo Permitir que los clientes, que no sean administradores, que no puedan instalar su aplicación puedan usar una prueba de la aplicación en una organización nueva Además del aprovisionamiento de una instancia de prueba de su aplicación para cada suscriptor nuevo, Salesforce también deposita un prospecto en su organización de gestión de licencias. Descripción general de Trialforce Una configuración de Trialforce consta de varias partes, configuradas en momentos distintos. Antes de comenzar a utilizar Trialforce, es importante conocer bien estas partes y la relación entre ellas. Organización de gestión de Trialforce (TMO, por sus siglas en inglés) Se trata el punto de inicio para configurar Trialforce y la ubicación central para gestionar Trialforce después de su configuración. Para recibir este componente, es necesario registrar un caso el portal de socios. Las dos tareas que puede llevar a cabo en la TMO son: creación de organizaciones de origen de Trialforce y definición de plantillas para el uso de marcas personalizadas. Organización de origen de Trialforce (TSO, por sus siglas en inglés) Esta organización se utiliza para crear una plantilla para las organizaciones de prueba que reciban sus clientes. Debe crearla a partir de su TMO. Las tareas que puede llevar a cabo en una TSO son: instalación de la aplicación, junto con datos de ejemplo, especificación de marcas mediante las plantillas creadas previamente en la TMO, configuración de la TSO para que sea tal y como quiere para sus clientes y generación de una plantilla de Trialforce que se convierta en la base de todas las organizaciones de prueba. Plantilla de Trialforce Se trata de una instantánea o una copia exacta de la TSO en una instancia determinada en el tiempo. Debe crearla a partir de una TSO después de haber instalado la aplicación y de haber realizado los cambios en la configuración. La plantilla de Trialforce se especifica en la página de HTML desde la que los clientes se inscriben para las pruebas y define la organización de prueba que se proporciona cada vez que un cliente se inscribe. Formulario de inscripción de HTML Se trata de un formulario de HTML que se utiliza como la página de registro en el sitio Web desde la que los clientes se inscriben para obtener las pruebas. Debe registrar un caso en el portal de socios para obtener este formulario y, después, debe personalizarlo con los detalles de su compañía. Se asocia con la plantilla de Trialforce que pretenda utilizar para las pruebas. Esto garantiza que cada vez que un cliente se inscribe en su sitio Web para una prueba, recibirá una organización que es una copia exacta de la plantilla de Trialforce elegida. 156 Prueba gratuita de la aplicación Configuración de Trialforce Ilustración 16: Relación entre organizaciones utilizada para configurar Trialforce Las organizaciones TMO y TSO y las plantillas de Trialforce se organizan en una estructura jerárquica según las relaciones que mantienen entre sí, tal y como se muestra en la ilustración anterior. • • Puede crear varias organizaciones TSO a partir de una TMO determinada. Por ejemplo, si quiere ofrecer pruebas para dos aplicaciones diferentes, tendría que generar dos organizaciones TSO distintas a partir de la misma TMO, una para cada aplicación. Esto le permite utilizar la organización TMO como el núcleo central para gestionar las pruebas de todas las aplicaciones de Force.com que haya producido su compañía. Puede crear varias plantillas de Trialforce a partir de la misma organización TSO. Por ejemplo, si realiza el lanzamiento de una versión nueva de su aplicación después de haber comenzado a utilizar Trialforce, podrá instalar la versión actualizada en la organización TSO anterior y, después, generar una plantilla de Trialforce nueva a partir de ella. Después, si actualiza su formulario de inscripción de HTML para dirigirlo a la nueva plantilla de Trialforce, todas las organizaciones de prueba creadas posteriormente tendrán de forma automática la versión nueva del paquete. Como mejor práctica, se recomienda tener una TMO exclusiva para su compañía, una TSO para cada aplicación y una plantilla de Trialforce para cada versión o edición de una aplicación. Si se escalona el proceso de configuración en estos niveles, será más fácil mantener y actualizar las pruebas. De esta manera, cada vez que tenga que cambiar algo, como la versión de una aplicación, su marca o un detalle de configuración de la organización de prueba, solo será necesario efectuar el cambio en un nivel de la jerarquía. Como ve, los pasos de configuración serán los mínimos y será más fácil gestionar de forma simultánea pruebas para varios productos, versiones y ediciones. Configuración de Trialforce Permisos de usuario necesarios Para gestionar Trialforce: “Personalizar aplicación” 157 Prueba gratuita de la aplicación Vinculación de un paquete a su organización de publicación de AppExchange Para habilitar Trialforce, debe haber firmado un acuerdo ISVforce/OEM. Una vez que ha compilado y probado su aplicación y que ha superado la revisión de seguridad de AppExchange, efectúe los pasos siguientes: 1. Cree el paquete gestionado. 2. Cree una organización de publicación de AppExchange (APO). La APO, que casi siempre coincide con la organización que utiliza para gestionar las licencias, es la organización donde va a gestionar la publicación de AppExchange. 3. Vincule su paquete gestionado con la APO. 4. Cree su organización de gestión de licencias (LMO). La LMO es la organización donde va a gestionar el acceso de los clientes a su aplicación. Debería instalar la aplicación de gestión de licencias en la organización de Salesforce CRM actual (es obligatorio disponer de Enterprise Edition). 5. Asocie su versión de paquete gestionado a la LMO y establezca los valores predeterminados de la licencia. De este modo se garantiza que cada vez que un cliente potencial cree una prueba de su aplicación, la LMO recibirá un registro de prospecto y licencia nuevo. 6. Solicite una organización de gestión de Trialforce (TMO). 7. De forma opcional, cree una página de inicio de sesión con marca personalizada y emails con marca en la TMO. 8. Cree una organización de origen de Trialforce (TSO) desde la TMO. 9. Vincule la TSO con la APO. 10. Instale el paquete gestionado en la TSO y personalícelo para que sea tal y como quiere que los clientes potenciales lo vean y lo usen. Aquí entra la aplicación de marcas personalizadas, la carga de datos de ejemplo o la creación de perfiles personalizados. 11. Cree una plantilla de Trialforce nueva desde la TSO. 12. Envíe la plantilla de Trialforce para su revisión y obténgala aprobada. Ahora puede utilizar esta plantilla para crear pruebas gratuitas de dos maneras, tal y como se explica en las secciones siguientes. • • Pruebas gratuitas en AppExchange Pruebas gratuitas en el sitio Web Vinculación de un paquete a su organización de publicación de AppExchange Puede vincular el paquete gestionado a su organización de publicación de AppExchange (APO) a través de la consola de publicación de AppExchange. 1. Inicie sesión en AppExchange con las credenciales de su APO. 2. Haga clic en su nombre que aparece en la esquina superior derecha y, en el menú desplegable, seleccione Consola de publicación (Publishing Console). 3. Haga clic en la ficha Publicando (Publishing). 4. Haga clic en Sus organizaciones (Your Organizations). 5. Haga clic en Vincular organización nueva (Link New Organization). 6. Ingrese las credenciales de la organización de empaquetado (la organización con Developer Edition en la que ha creado el paquete gestionado) y haga clic en Guardar. Podrían pasar 30 minutos o más hasta que la aplicación aparezca como asociada con la APO. Para confirmar que se ha completado el proceso, regrese a la sección de inicio de la consola de publicación y haga clic en la ficha Sus paquetes cargados (Your Uploaded Packages). Debería ver su versión del paquete en la lista. Solo tiene que vincular el paquete a AppExchange una vez. Las versiones nuevas del paquete aparecerán de forma automática en la consola de publicación. 158 Prueba gratuita de la aplicación Vinculación de un paquete con la organización de gestión de licencias Vinculación de un paquete con la organización de gestión de licencias Para recibir registros de prospectos y licencias desde instalaciones de clientes, debe vincular su paquete gestionado con su Organización de gestión de licencias (LMO), la organización de Salesforce donde está instalada la aplicación de gestión de licencias. Además, como parte de este proceso, puede especificar la configuración de licencias predeterminada para su aplicación. Nota: Una vez que vincule un paquete con una LMO, los prospectos y las licencias de ese paquete deben gestionarse de forma permanente fuera de la LMO. No puede migrar licencias a otra organización. Para vincular un paquete a la LMO y establecer la configuración de licencias predeterminada, haga lo siguiente: 1. Inicie sesión en AppExchange con las credenciales de su organización de publicación de AppExchange (APO). 2. Haga clic en su nombre que aparece en la esquina superior derecha y seleccione Consola de publicación (Publishing Console). 3. Haga clic en la ficha Sus paquetes cargados (Your Uploaded Packages) y encuentre la versión del paquete. 4. Haga clic en el vínculo Gestionar licencias junto a la versión de paquete. 5. Haga clic en Registrar (Register). 6. Especifique la LMO con las credenciales de usuario de esa organización y especifique los demás parámetros de licencia predeterminados. 7. Seleccione si la licencia predeterminada es una licencia de Prueba gratuita (Free Trial) o Activa (Active). Si no va a cobrar nada por una licencia, seleccione Activa. 8. Ingrese la el número de días que dura la licencia. Si la licencia es gratuita o no caduca, seleccione La licencia no caduca (License does not expire). 9. Ingrese el número de puestos asociados con la licencia predeterminada o seleccione La licencia es para todo el sitio (License is site-wide) para ofrecer la licencia a todos los usuarios en la organización del instalador. 10. Haga clic en Guardar. Para comprobar que el paquete está vinculado a la LMO, haga lo siguiente: 1. Inicie sesión en la LMO. 2. Haga clic en la ficha Versiones de paquete (Package Versions). 3. Haga clic en Ir (Go) junto a Ver todos (View All). Debería ver el nombre de su paquete en la lista. Nota: • • Todas las versiones de un paquete gestionado se asocian con la misma LMO. Por tanto, solo necesitará asociar el paquete con la LMO una vez. Cuando un cliente instala el paquete, estos valores predeterminados se utilizan para rellenar los campos Estado (Status), Fecha de caducidad (Expiration Date) y Puestos (Seats) en el registro de licencias en la LMA y en la organización del instalador. Si quiere actualizar estos valores, podrá modificar este registro en la LMA. Solicitud de una organización de gestión de Trialforce Permisos de usuario necesarios Para gestionar Trialforce: “Personalizar aplicación” 159 Prueba gratuita de la aplicación Configuración de una marca personalizada para Trialforce Las pruebas de una aplicación se gestionan en una organización de gestión de Trialforce (TMO). Esto permite crear su organización de origen de Trialforce (TSO) y especificar los objetos de marca personalizados para su página de inicio de sesión y sus emails. Para recibir una TMO, debe ser un socio de ISV apto y su aplicación debe haber superado la revisión de seguridad de AppExchange. La TMO debería ser una organización diferente de la del negocio y de la organización con Developer Edition en la que ha compilado la aplicación. Para solicitar una TMO, haga lo siguiente: 1. Inicie sesión en el portal de socios. 2. Si no ha creado ya una organización con Developer Edition (DE) para que sea su TMO, solicite una mediante Crear una organización de prueba (Create a test org) en la página principal del portal de socios. 3. Una vez que tenga la organización con DE, haga clic en Crear un caso (Create a case) en la página principal del portal de socios. 4. Especifique la categoría como Solicitud de portal general > Solicitar Organización de gestión de Trialforce (General Portal Request > Request Trialforce Management Organization). 5. Complete el formulario para crear la petición de una TMO. En la petición indique la información que solicita y los detalles del paquete y el Id. de la organización con DE que va a utilizar como su TMO. Nota: Para encontrar el Id. de la organización, en el menú Configuración vaya a Perfil de la compañía > Información de la compañía (Company Profile > Company Information) y podrá ver los detalles de la organización. 6. Haga clic en Guardar. Se ha generado la petición que se ha enviado al equipo de operaciones del socio. Este revisará el caso y configurará la organización con DE para que actúe de TMO, o bien se pondrá en contacto con usted si tiene alguna otra pregunta. Configuración de una marca personalizada para Trialforce Permisos de usuario necesarios Para gestionar Trialforce: “Personalizar aplicación” Los desarrolladores de aplicaciones mediante Trialforce para crear nuevas pruebas de sus productos pueden establecer opcionalmente un sitio de inicio de sesión y emails del sistema con marca. Marcando estas áreas con la apariencia de su compañía, los usuarios de su aplicación se verán inmersos en su marca desde el inicio hasta el fin de sesión. Las marcas personalizadas deberían utilizarse únicamente para las aplicaciones que no sean de CRM y no para aquellas que amplíen Salesforce CRM y necesiten objetos estándares de Salesforce tales como prospectos, oportunidades y casos. Una página de inicio de sesión con marca le permite modificar su dominio y su sitio de inicio de sesión. • • Los dominios de inicio de sesión finalizan con .cloudforce.com, de modo que si el nombre de su compañía es “micompañía”, entonces su dominio de inicio de sesión sería micompañía.cloudforce.com. Su sitio de inicio de sesión personalizado incluye el texto y el logotipo de su compañía, así como versiones simples de Mobile de su sitio de inicio de sesión. Los emails marcados le permiten especificar campos en emails generados por el sistema, de modo que el nombre de su compañía, la dirección y otros detalles pertinentes se utilizan en la correspondencia de email. Puede crear varios conjuntos de emails con marcas para distintas campañas o segmentos de clientes. Nota: Para configurar el proceso de marcado, debe iniciar sesión en una Organización de gestión de Trialforce (TMO, por sus siglas en inglés). Para obtener su TMO, registre un caso en el portal de socios de Salesforce. 160 Prueba gratuita de la aplicación Creación de emails con imagen de marca Creación de emails con imagen de marca Permisos de usuario necesarios Para gestionar Trialforce: “Personalizar aplicación” Puede personalizar la imagen de marca de los emails que envía a los suscriptores de las organizaciones de prueba nuevas. Para crear un conjunto de emails con imagen de marca, haga lo siguiente: 1. Inicie sesión en su organización de gestión de Trialforce. 2. En Configuración, haga clic en Configuración de aplicaciones > Trialforce > Marca > Conjuntos de emails (App Setup > Trialforce > Branding > Email Sets). 3. Haga clic en Nuevo conjunto de emails (New Email Set) o en Modificar (Edit) junto a un conjunto de emails existente. 4. Ingrese un nombre para el conjunto de emails y la información de su compañía. 5. En el área Vista previa de emails, haga clic en los distintos tipos de emails generados y asegúrese de que se leen correctamente. Nota: La URL de inicio de sesión que se muestra en la vista previa será siempre http://login.salesforce.com incluso si utiliza una página de inicio de sesión con imagen de marca. Estos dos procesos son distintos. 6. Haga clic en Guardar. 7. Si está preparado para hacer que estos emails estén disponibles en sus organizaciones de origen de Trialforce (TSO), haga clic en Publicar. De lo contrario, sus cambios se guardarán y los podrá publicar más tarde. Para asignar un conjunto de emails con imagen de marca a su TSO: 1. En Configuración, haga clic en Configuración de aplicaciones > Trialforce > Organizaciones de origen (App Setup > Trialforce > Source Organizations). 2. Haga clic en Modificar junto a la TSO. 3. Seleccione el conjunto de emails. 4. Haga clic en Guardar. 5. Haga clic en Iniciar sesión (Login) si desea ver el funcionamiento de la página de inicio de sesión con la imagen de marca. Creación de una página de inicio de sesión con marca Permisos de usuario necesarios Para gestionar Trialforce: “Personalizar aplicación” Los clientes suelen iniciar sesión en la aplicación mediante el sitio tradicional login.salesforce.com. Una página de inicio de sesión adaptada a su imagen de marca permite personalizar este dominio y esta página para que los clientes se identifiquen con la marca. Su sitio de inicio de sesión personalizado incluye el texto y el logotipo de su compañía, así como versiones simples de Mobile de su sitio de inicio de sesión. Para crear una página de inicio de sesión con marca: 1. Inicie sesión en su organización de gestión de Trialforce. 2. En Configuración, haga clic en Trialforce > Marca > Sitio de inicio de sesión. 3. Haga clic en Configurar sitio de inicio de sesión. 161 Prueba gratuita de la aplicación Creación de una organización de origen de Trialforce 4. Seleccione un subdominio para su sitio de inicio de sesión proporcionando un nombre en el campo provisto. El subdominio suele ser el nombre de su compañía. Nota: Los dominios de inicio de sesión finalizan con .cloudforce.com, de modo que si el nombre de su compañía es “micompañía”, entonces su dominio de inicio de sesión sería micompañía.cloudforce.com. 5. Compruebe la disponibilidad del dominio y, a continuación, acepte las condiciones de uso. 6. Haga clic en Guardar e iniciar editor. 7. Utilice el editor de marca de inicio de sesión para cambiar el aspecto de su página de inicio de sesión. Para obtener más ayuda acerca del uso del editor, haga clic en Ayuda para esta página. 8. Haga clic en Guardar y Cerrar. 9. Si está preparado para hacer que estos cambios estén disponibles en sus TSO, haga clic en Publicar. De lo contrario, sus cambios se guardarán y los podrá publicar más tarde. Creación de una organización de origen de Trialforce Permisos de usuario necesarios Para gestionar Trialforce: “Personalizar aplicación” Utilice una organización de gestión de Trialforce (TMO, siglas en inglés) para crear una organización de origen de Trialforce (TSO, siglas en inglés) que actúe como la base para las nuevas organización de prueba. Instale el paquete en la TSO e incluya también algunos datos para que los prospectos puedan jugar con ellos la primera vez que inicien sesión en su organización de prueba. La TSO siempre es una organización con Enterprise Edition. Para crear una TSO nueva, haga lo siguiente: 1. 2. 3. 4. 5. Inicie sesión en su organización de gestión de Trialforce. En Configuración, haga clic en Trialforce > Organizaciones de origen (Trialforce > Source Organizations). Haga clic en Nuevo. Introduzca un nombre de usuario y una dirección de email nuevos para la cuenta del administrador. Ingrese un nombre para la TSO y, de forma opcional, especifique el uso de la marca personalizada mediante un conjunto de emails con marca o un sitio de inicio de sesión con marca. 6. Haga clic en Crear. Recibirá un email con los detalles de inicio de sesión para su TSO. Después, puede iniciar sesión en la TSO e instalar el paquete junto con los datos y configuraciones de ejemplo. Además, de forma opcional puede hacer las tareas siguientes: • • • Crear un perfil personalizado Crear usuarios nuevos Crear registros de ejemplo El objetivo es configurar la TSO exactamente como quiere que la encuentren y la usen los clientes. Después, puede crear una plantilla de Trialforce que será una instantánea o una copia exacta de la TSO en un momento determinado. Nota: Tenga en cuenta las consideraciones especiales para trabajar con una TSO que se indican a continuación: • • Asocie siempre un paquete gestionado con su organización de gestión de licencias (LMO) antes de instalar la aplicación en la TSO. Si no sigue este orden, las organizaciones de prueba aprovisionadas desde la TSO no generarán prospectos ni licencias en la LMO. Asegúrese de que el administrador de la TSO tiene una licencia para la aplicación en esa organización antes de crear la plantilla de Trialforce. 162 Prueba gratuita de la aplicación • Vinculación de una organización de origen de Trialforce con la APO Puede crear varias organizaciones TSO a partir de su TMO. Esta opción le permite configurar pruebas para distintos productos, cada una de las cuales con su propia configuración y marcas. Vinculación de una organización de origen de Trialforce con la APO Para vincular la organización de origen de Trialforce (TSO) con la organización de publicación de AppExchange (APO), haga lo siguiente: 1. Inicie sesión en AppExchange con las credenciales de su APO. 2. Haga clic en su nombre que aparece en la esquina superior derecha y, en el menú desplegable, seleccione Consola de publicación (Publishing Console). 3. Haga clic en la ficha Publicando (Publishing). 4. Haga clic en Sus organizaciones (Your Organizations). 5. Haga clic en Vincular organización nueva (Link New Organization). 6. Ingrese las credenciales de inicio de sesión de su TSO. 7. Haga clic en Aceptar. Cuando ya se haya hecho la vinculación, las plantillas de Trialforce que cree se mostrarán en el área Sus plantillas (Your Templates). Creación de una plantilla de Trialforce Permisos de usuario necesarios Para gestionar Trialforce: “Personalizar aplicación” Una plantilla de Trialforce es una instantánea, o copia exacta, de su organización de origen de Trialforce (TSO) en una determinada instancia en el tiempo. Puede crear varias plantillas a partir de la misma organización TSO. Asegúrese de que ha instalado el paquete en la TSO y lo ha configurado tal y como quiere que los clientes lo vean y lo usen. Para ello, debe haber incluido los datos, perfiles, usuarios y registros de ejemplo adecuados. Nota: Solo puede crear una plantilla de Trialforce si el tamaño de la organización de origen de Trialforce es inferior a 256 MB. Para crear una plantilla de Trialforce: 1. 2. 3. 4. Inicie sesión en la TSO. En Configuración, haga clic en Configuración de aplicaciones > Trialforce (App Setup > Trialforce). Haga clic en Plantilla nueva de Trialforce. Especifique una descripción de la plantilla y si desea incluir datos en el diálogo que aparece. La opción predeterminada debería ser la correcta en la mayoría de los casos. 5. Haga clic en Guardar. Cuando se haya generado la plantilla, recibirá un email con el Id. de esta. Deberá enviar la plantilla al proceso de revisión antes de poder utilizarla para inscribirse en organizaciones de prueba. Recuerde que debe generar una plantilla nueva cada vez que actualice su TSO, para que las pruebas reflejen siempre el estado más reciente. Cada plantilla de Trialforce tiene un estado con uno de los siguientes valores. 163 Prueba gratuita de la aplicación Obtención de una plantilla de Trialforce revisada En curso Cuando se crea una plantilla de Trialforce por primera vez, siempre tiene este estado. Luego cambia automáticamente a los estados Error o Correcto. Correcto La plantilla de Trialforce se puede utilizar para crear nuevas organizaciones de prueba. Error La plantilla de Trialforce no se puede utilizar como algo que pasado a ser un error y que requiere depuración adicional. Eliminado La plantilla de Trialforce ya no está disponible para su uso. Las plantillas eliminadas se eliminan automáticamente durante las actualizaciones del sistema. Obtención de una plantilla de Trialforce revisada Para proporcionar una prueba gratuita en AppExchange mediante Trialforce, debe superar una revisión de la plantilla. Antes de solicitar la revisión de una plantilla, vincule la organización de origen de Trialforce con la organización de publicación de AppExchange (APO) y cree una plantilla de Trialforce desde su TSO. Nota: Solo puede solicitar la revisión de una plantilla de Trialforce que tenga al menos un paquete instalado. Todos los paquetes instalados deben haber superado previamente la revisión de seguridad. 1. Inicie sesión en AppExchange con las credenciales de su APO. 2. Haga clic en su nombre que aparece en la esquina superior derecha y, en el menú desplegable, seleccione Consola de publicación (Publishing Console). 3. Haga clic en la ficha Plantillas de prueba (Trial Templates). 4. Haga clic en Iniciar revisión (Start Review) junto a la plantilla que desee revisar. Recibirá un email de confirmación cuando inicie la revisión y otro cuando esta haya finalizado. La revisión es gratuita para los socios y suele tardar entre 2 y 3 días. Pruebas gratuitas en AppExchange Nota: Las pruebas gratuitas solo están disponibles para los socios aptos. Para obtener más información sobre el programa de socios, incluidos los requisitos de aptitud, visite el sitio Web www.salesforce.com/partners. Para crear pruebas en AppExchange, su aplicación debe cumplir con las condiciones siguientes: • • • • • Ser un paquete gestionado. Su gestión se realiza a través de la aplicación de gestión de licencias. Aprovisionamiento automático: es decir, no debe ser necesario que el usuario interactúe con usted en ningún momento para obtener la aplicación y ejecutarla. Haber superado la revisión de seguridad. Haber superado la revisión de la plantilla de Trialforce. Puede proporcionar una prueba gratuita en AppExchange de tres maneras diferentes: • • Uso de Trialforce Configuración de una unidad de prueba 164 Prueba gratuita de la aplicación • Proporcionar pruebas gratuitas en AppExchange mediante Trialforce Instalación de la aplicación en una organización actual Proporcionar pruebas gratuitas en AppExchange mediante Trialforce Nota: Las pruebas gratuitas solo están disponibles para los socios aptos. Para obtener más información sobre el programa de socios, incluidos los requisitos de aptitud, visite el sitio Web www.salesforce.com/partners. Para proporcionar pruebas gratuitas en AppExchange mediante Trialforce, haga lo siguiente: 1. Cree una plantilla de Trialforce nueva con su aplicación instalada y configurada tal y como quiere que la vean los clientes potenciales. Para obtener más información, consulte el apartado Configuración de Trialforce. 2. Envíe la plantilla de Trialforce para su revisión. Este proceso es gratuito y tarda mucho menos tiempo que la revisión de seguridad de su aplicación. Se le notificará por email una vez que se haya aprobado la plantilla. 3. Vincule la plantilla de Trialforce a la lista de AppExchange. a. b. c. d. e. Inicie sesión en AppExchange con las credenciales de la organización de publicación. Haga clic en Organizaciones (Organizations) en la parte superior de la página de inicio de Publishing. Haga clic en Vincular organización nueva (Link New Organization). Ingrese las credenciales de su organización de origen de Trialforce y haga clic en Guardar. Regrese a la página de inicio de Publishing y haga clic en la ficha Plantilla de prueba (Trial Templates). Pulse el vínculo de actualización que verá en la parte inferior de la página. Ahora debería ver su plantilla. 4. Vaya a su lista, haga clic en Modificar y, a continuación, haga clic en la ficha Oferta (Offering). 5. Seleccione Habilitar pruebas (Enable Trials), selecione la plantilla aprobada y haga clic en Guardar. Ya tiene todo activado. A partir de este momento, cualquier puede acceder a su prueba a través del botón Obtener ahora (Get It Now) en su lista. También puede dirigir a los usuarios directamente a la URL asociada con su formulario de prospecto de prueba. Cuando un usuario hace clic en Obtener ahora en su lista, este puede iniciar una prueba gratuita con su aplicación preinstalada si no dispone de una cuenta de salesforce.com anterior. Después de hacer esta selección, el usuario deberá ingresar la información que se suele recopilar para las pruebas gratuitas de Salesforce y aceptar los términos y condiciones, así como nuestro código MSA. Una vez completado el formulario, el usuario recibirá un email en el que se le pedirá que inicie sesión y restablezca la contraseña. Configuración de una unidad de prueba en AppExchange Una unidad de prueba es una organización con Developer Edition (DE) preconfigurada que permite a los clientes potenciales probar su aplicación con datos de ejemplo que usted configure. Esta organización tiene ya el paquete cargado e incluye los datos de ejemplo que elija. Una unidad de prueba es tan seguro como cualquier otro entorno de Salesforce. Las unidades de prueba cuentan en la clasificación de popularidad. La unidad de prueba tiene dos usuarios: el administrador y el usuario de evaluación de solo lectura. El usuario administrador es el que se usa para crear datos de ejemplo y preparar la organización. Cuando los clientes potenciales hacen clic en el botón Unidad de prueba (Test Drive) en la lista, inician sesión en la unidad de prueba como usuarios de evaluación de solo lectura. Para configurar una unidad de prueba, haga lo siguiente: 1. Inicie sesión en AppExchange con las credenciales de su organización de publicación de AppExchange (APO). 2. Haga clic en su nombre que aparece en la esquina superior derecha y seleccione Consola de publicación (Publishing Console). 3. Haga clic en la ficha Sus paquetes cargados (Your Uploaded Packages) y encuentre la versión del paquete. 165 Prueba gratuita de la aplicación Prueba gratuita en AppExchange disponible cuando se instala la aplicación 4. 5. 6. 7. Haga clic en el vínculo Modificar lista (Edit Listing) junto a la versión de paquete. Haga clic en la ficha Oferta (Offering). Haga clic en Crear unidad de prueba (Create Test Drive). En la ventana emergente, ingrese un título. Este debería se run nombre sin espacios, ya que se utilizará para crear el nombre de usuario. 8. Seleccione el paquete. Se instalará en una organización con Developer Edition nueva. 9. Haga clic en Enviar. Recibirá un email con las credenciales de inicio de sesión para una organización con DE nueva. Cuando tenga el mensaje, haga lo siguiente: 1. 2. 3. 4. Inicie sesión como administrador de la organización nueva y cree datos de ejemplo o realice otras tareas de configuración. Inicie sesión como usuario de evaluación para definir la contraseña. Vuelva a iniciar sesión en AppExchange. En la ficha Oferta, en Unidad de prueba haga clic en Cambiar organización (Change Organization) para especificar la nueva organización con DE. 5. Ingrese el inicio de sesión y la contraseña del usuario de evaluación que se le ha enviado junto con las credenciales de administrador. El usuario de evaluación tiene permisos de solo lectura. 6. Haga clic en Aceptar. 7. Haga clic en Guardar. Prueba gratuita en AppExchange disponible cuando se instala la aplicación Puede proporcionar pruebas gratuitas de su aplicación si en la configuración predeterminada de la licencia del paquete habilita las pruebas gratuitas. Cuando un cliente instala la aplicación en una organización de Salesforce actual, podrá utilizarla durante el periodo de prueba especificado. Pruebas gratuitas en el sitio Web Para proporcionar una prueba gratuita en el sitio Web, efectúe los pasos siguientes: 1. 2. 3. 4. 5. Configure Trialforce. Solicite un formulario de registro HTML. Vincule su plantilla de Trialforce al formulario HTML. Personalice el formulario HTML. Aprovisione organizaciones de prueba nuevas. Ya tiene todo listo. A partir de este momento, cada vez que un usuario potencial ingrese su información y envíe el formulario correspondiente, salesforce.com aprovisionará una prueba acorde a la plantilla de Trialforce configurada. Nota: Como alternativa al uso de un formulario Web, también puede crear inscripciones en Trialforce mediante la API. Esto le ofrece más control sobre el proceso de inscripción y mayor visibilidad sobre los clientes potenciales. Solicitud de un formulario de inscripción para Trialforce Los socios que desean utilizar Trialforce deben vincular su sitio Web a un formulario HTML donde se recopila la información importante sobre la persona que solicita la prueba. Salesforce.com facilita la tarea de solicitud de un formulario HTML de 166 Prueba gratuita de la aplicación Vinculación de una plantilla de Trialforce con el formulario de inscripción ejemplo en el que puede personalizar los elementos de marca para dar una imagen de unidad con el sitio Web. El sistema también conserva la información necesaria para garantizar que los envíos del formulario aprovisionarán la prueba adecuada. Para solicitar un formulario de inscripción, haga lo siguiente: 1. Inicie sesión en el portal de socios. 2. Haga clic en el botón para registrar una petición. 3. Seleccione Tengo una pregunta o problema relacionado con un programa de socios de salesforce.com (I have a question or issue relating to a salesforce.com partner program). 4. Seleccione Trialforce > Solicitar un nombre de formulario para Trialforce (Trialforce > Request a form name for Trialforce). 5. En el campo de motivo del caso, elija: Pregunta de usuario general (General User Question). 6. En la sección de descripción, indique un nombre de aplicación exclusivo para su prueba. Recibirá un email con el formulario de inscripción, así como las instrucciones necesarias para modificarlo y garantizar con ello el aprovisionamiento de la prueba adecuada. Siga las instrucciones del email para realizar los cambios necesarios en el formulario HTML predeterminado. Nota: Puede solicitar el formulario de inscripción antes de que la plantilla de Trialforce esté preparada. Como el formulario no estará vinculado a ninguna plantilla concreta, la organización resultante será una de prueba sencilla que caducará dos días después. No obstante, será una buena manera de probar el formulario sin necesitar una copia de la plantilla de Trialforce. Vinculación de una plantilla de Trialforce con el formulario de inscripción Puede asociar una plantilla de Trialforce específica con su formulario de inscripción HTML. Esto permite asegurarse de que cuando los usuarios rellenan el formulario para solicitar una prueba, estos van recibir una organización de prueba nueva con la aplicación instalada en ella además del contenido o los registros de ejemplo que haya agregado a la plantilla. Si se omite este paso, los usuarios que rellenen el formulario recibirán una organización de prueba genérica que caducará a los dos días. Para vincular una plantilla con el formulario de inscripción, haga lo siguiente: 1. 2. 3. 4. 5. Inicie sesión en su organización de origen de Trialforce. En Configuración, haga clic en Configuración de aplicaciones > Trialforce (App Setup > Trialforce). Anote el Id. de la plantilla de Trialforce que va a utilizar. Será similar a este: 0TTi0000000Sxd8. Anote el valor de Formname en el formulario de inscripción. Registre un caso para asociar la plantilla de Trialforce con el formulario de inscripción. a. Inicie sesión en el portal de socios. b. Haga clic en Crear un caso (Create a Case). c. Seleccione Tengo una pregunta o problema relacionado con un programa de socios de salesforce.com (I have a question or issue relating to a salesforce.com partner program). d. Seleccione Trialforce > Actualización de Trialforce (Trialforce > Trialforce Update). e. En la descripción, indique el Id. de la plantilla de Trialforce que anotó en el paso 3 y el nombre del formulario de inscripción del paso 4. Recibirá un email con la confirmación de que se ha procesado su solicitud. Pruebe que la plantilla se haya asociado correctamente al formulario de registro. Para ello, rellene el formulario y envíelo. Debería recibir un email cuando se haya aprovisionado la prueba nueva. 167 Prueba gratuita de la aplicación Personalización del formulario de registro de HTML Personalización del formulario de registro de HTML El formulario de HTML de registro de ejemplo que ha recibido tras registrar un caso en el portal de socios no es más que una plantilla que debe modificar. Algunos cambios son obligatorios para garantizar que se aprovisiona la prueba adecuada. Si lo desea, puede modificar el archivo para adaptarlo al aspecto de su sitio Web y su marca. Deberá asignar los valores de formName y Lead.Partner_Account en el formulario de HTML a los que el equipo de asistencia para socios le haya proporcionado. Puede encontrarlos en el email que contiene el formulario de registro de HTML de ejemplo. 1. Abra el archivo HTML del formulario de registro en una herramienta de edición de texto o HTML. 2. Cambie las siguientes líneas de HTML en el formulario de registro para que se refleje esta información mediante la actualización del atributo de valor. Busque el comentario TODO que le ayudará a encontrar las líneas que debe cambiar. <!-- TODO: Add Signup Config Item Name of Config record as formName --> <!-- TODO: Add Partner Account Record Id for Partner Lookup on Lead (Provided by Salesforce.com--> <input type="hidden" name="formName" value=""/> <input type="hidden" name="Lead.Partner_Account__c" value=""/> 3. Busque y modifique otras secciones en el formulario etiquetadas con "TODO". Podrá hacer cosas como especificar logotipos de la compañía, sobrescribir páginas de error o de proceso correcto, etc. a. Abra el archivo HTML del formulario de registro en una herramienta de edición de texto o html. b. Busque el término "TODO". c. Siga las instrucciones de los comentarios para cambiar la parte adecuada del formulario. Estos son algunos ejemplos de lo que puede cambiar de este modo: • • • • • un logotipo personalizado el nombre mostrado de la aplicación (sin espacios) especificar el nombre de la compañía como entidad de referencia para los prospectos que el formulario genere especificar las URL personalizadas para los redireccionamientos por éxito o error actualizar el idioma o la configuración regional del formulario 4. Modifique el HTML y CSS para adaptarlos al aspecto y el formato del sitio Web. Nota: No realice cambios en JavaScript excepto en las secciones identificadas de forma específica para que el formulario aprovisione una prueba nueva de forma adecuada. Una vez que se han realizado los cambios, puede probar el rellenado del formulario y el envío de este para comprobar que se aprovisionan las nuevas organizaciones de prueba correctamente. Si no lo ha hecho antes, registre otro caso en el portal de socios para asociar el Id. de instantánea de la plantilla de prueba con su nombre de formulario. De lo contrario, las pruebas que se aprovisionen mediante el rellenado del formulario serán pruebas de dos días de Force.com genéricas. Aprovisionamiento de organizaciones de prueba nuevas Una vez que haya configurado Trialforce, puede aprovisionar organizaciones de prueba nuevas de una de las dos maneras siguientes: 168 Prueba gratuita de la aplicación • • Modificación de la prueba para una actualización Envío: proporciona una prueba en nombre de un cliente al rellenar el formulario de registro con la información del cliente potencial. Obtención: los clientes potenciales solicitan ellos mismos una prueba mediante un formulario de registro que rellenan en su sitio Web público. 1. Cargue el formulario de registro HTML en sus servidores Web públicos. 2. Modifique y publique las páginas HTML adecuadas en el sitio Web de su compañía donde quiera incluir un vínculo al formulario de registro de Trialforce. 3. Desplácese a la página de registro desde el sitio Web de su compañía. 4. Rellene los campos obligatorios y envíe el formulario. Todas las personas con acceso al formulario de registro pueden crear manualmente una prueba en nombre de un cliente potencial sin que sea necesario publicar un formulario de registro en el sitio Web de la compañía. Para ello, inicie el archivo HTML del formulario de registro en un navegador y rellene los campos en nombre del cliente, después envíe el formulario. El cliente potencial recibirá un email, que puede incluir elementos de la marca de la compañía con información de esta, para avisarle de que la prueba nueva está disponible. Modificación de la prueba para una actualización Hay ocasiones en las que le puede interesar mantener sus pruebas para reflejar los cambios en su aplicación o en sus elementos de marca personalizados. Para ello, deberá hacer lo siguiente: • • Cree y publique una versión nueva del paquete gestionado (o un paquete de ampliación) con los cambios efectuados en la aplicación. La organización de origen de Trialforce (TSO) deberá cargar el paquete nuevo. Puede volver a utilizar la TSO que ya usó para crear la plantilla de Trialforce original, o bien puede crear una nueva. Si se decanta por esta última opción, asegúrese de vincularla a su lista de AppExchange. Para actualizar la prueba, haga lo siguiente: 1. Instale el paquete gestionado actualizado (o el paquete de ampliación) en la TSO. 2. Realice los cambios que desee en la TSO, como la carga de datos de ejemplo o la actualización de los elementos de marca personalizados. 3. Cree una plantilla de Trialforce nueva para la prueba. 4. Envíe la plantilla para su revisión.. Si no se han realizado cambios importantes en la aplicación, la revisión debería ser un proceso bastante rápido. 5. Una vez que obtenga la aprobación, vincule la plantilla nueva al formulario de inscripción HTML. Cuando haya terminado estos pasos, los envíos nuevos del formulario de inscripción darán como resultado una prueba actualizada. Mejores prácticas de Trialforce Las recomendaciones siguientes constituyen las mejores prácticas para usar Trialforce. • • • • Cree varias organizaciones de origen de Trialforce (TSO) para las experiencias de prueba personalizadas. Por ejemplo, una para cada paquete, solución vertical de la industria y país gestionado. Cargue los datos de ejemplo en la TSO. Inserte la marca personalizada al formulario de inscripción de prueba, a la página de inicio de sesión y a los mensajes de email. Actualice la plantilla de Trialforce cada vez que implemente una versión nueva de la aplicación. 169 Prueba gratuita de la aplicación • Creación de inscripciones usando la API Cuando haya configurado Trialforce, siga el flujo de inscripción para confirmar que todo funciona según lo previsto. Esto también puede ayudarle a identificar aquellas áreas que pueden mejorarse en el proceso de inscripción. Aunque Trialforce se diseñó principalmente para activar las pruebas gratuitas, también puede resultar útil en otros contextos. Por ejemplo, puede utilizarlo para: • • Crear organizaciones de prueba para usarlas en demostraciones comerciales. Crear organizaciones de prueba con datos de ejemplo para realizar controles de calidad internos. Creación de inscripciones usando la API Permisos de usuario necesarios Para crear o ver solicitudes de inscripción: "API de solicitudes de inscripción" Puede usar las llamadas de API al objeto SignupRequest para crear organizaciones de prueba para clientes potenciales. Cuando se crean organizaciones de prueba (o inscripciones) usando formularios Web, no es posible personalizar el proceso de inscripción o realizar un seguimiento de su estado. Usando la API, puede recoger y analizar información detallada en todas las inscripciones de la organización de negocio. Esto le ofrece más control sobre el proceso de inscripción y mayor visibilidad sobre los clientes potenciales. Por ejemplo, puede: • • • • Ejecutar reportes y recoger mediciones, como el número de inscripciones por día o el número de inscripciones en diferentes países. Personalizar el objeto SignupRequest para agregar campos de intereses especiales en su compañía. Crear desencadenadores para iniciar acciones específicas, como el envío de una notificación de email, siempre que se realice una nueva solicitud de inscripción. Activar inscripciones desde una amplia variedad de aplicaciones cliente y dispositivos, por lo que tendrá canales adicionales para la adquisición de clientes. Nota: Aunque puede crear nuevas inscripciones desde cualquier organización (con los permisos adecuados), se recomienda hacerlo desde la organización de negocio. De esta forma, podrá integrar fácilmente los datos y mediciones de todas las inscripciones en los procesos de negocio existentes. Para empezar a crear nuevas inscripciones usando la API: 1. Cree una organización de origen de Trialforce (TSO) desde la organización de gestión de Trialforce. 2. Instale la aplicación en la TSO, junto con cualquier dato de muestra que pueda ser útil para la prueba. 3. Configure la TSO como quiera que la experimenten sus clientes, incluyendo la especificación de cualquier marca personalizada. 4. Cree una plantilla de Trialforce desde la TSO. 5. Archive un caso en el portal de socios, especificando el Id. de organización de la TSO y el Id. de plantilla de la plantilla de Trialforce. Se le notificará por email una vez que se haya aprobado la plantilla. Entonces podrá utilizarla para crear nuevas inscripciones haciendo llamadas de API al objeto SignupRequest. Consulte a continuación para obtener más información sobre el objeto SignupRequest y una muestra de código demostrando su uso. Nota: Para obtener más información sobre cómo trabajar con objetos, consulte Referencia de objeto para Salesforce y Force.com. 170 Prueba gratuita de la aplicación SignupRequest SignupRequest Representa una solicitud para una nueva inscripción de Trialforce. Este objeto está disponible en la versión 27.0, y posteriores, de la API. Llamadas compatibles create(), delete(), describeLayout(), describeSObjects(), getDeleted(), getUpdated(), query(), retrieve(), undelete() Campos Nombre del campo Detalles AuthCode Tipo cadena Propiedades Create, Filter, Group, Sort Descripción Un código de autorización de una sola vez que se puede intercambiar para un token de acceso de OAuth y un token de actualización mediante las API de Salesforce estándares. Se utiliza junto con ConnectedAppCallbackUrl y ConnectedAppConsumerKey cuando la aplicación conectada especificada no se ha configurado con un certificado X.509. Se trata de un campo de solo lectura proporcionado por el sistema una vez procesada la solicitud de inscripción. Este campo está disponible en la versión 29.0, y posteriores, de la API. Company Tipo cadena Propiedades Create, Filter, Group, Sort Descripción Nombre de la compañía que solicita la inscripción de prueba. ConnectedAppCallbackUrl Tipo cadena Propiedades Create, Filter, Group, Sort Descripción Cuando se utiliza junto con ConnectedAppConsumerKey, especifica una aplicación conectada que debería aprobarse de forma automática durante la creación de la inscripción. Este campo está disponible en la versión 28.0, y posteriores, de la API. ConnectedAppConsumerKey Tipo cadena 171 Prueba gratuita de la aplicación Nombre del campo SignupRequest Detalles Propiedades Create, Filter, Group, Sort Descripción Cuando se utiliza junto con ConnectedAppCallbackUrl, especifica una aplicación conectada que debería aprobarse de forma automática durante la creación de la inscripción. Este campo está disponible en la versión 28.0, y posteriores, de la API. País Tipo cadena Propiedades Create, Filter, Group, Sort Descripción Código ISO-3166 de país de dos caracteres en mayúscula. Puede encontrar la lista completa de estos códigos diferentes sitios, como: www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html CreatedOrgId Tipo cadena Propiedades Filter, Group, Nillable, Sort Descripción Id. de la organización de 15 caracteres de la organización de prueba creada. Se trata de un campo de solo lectura proporcionado por el sistema una vez procesada la solicitud de inscripción. CreatedOrgInstance Tipo cadena Propiedades Filter, Group, Nillable, Sort Descripción La instancia de servidor de la nueva organización de prueba, por ejemplo “na8”. Este campo está disponible en la versión 29.0, y posteriores, de la API. ErrorCode Tipo cadena Propiedades Filter, Group, Nillable, Sort Descripción Código de error si la solicitud de inscripción no tiene éxito. Se trata de un campo de solo lectura proporcionado por el sistema que se debe utilizar si se solicita asistencia técnica. Nombre Tipo cadena 172 Prueba gratuita de la aplicación Nombre del campo SignupRequest Detalles Propiedades Create, Filter, Nillable, Sort Descripción Nombre del usuario administrador para la inscripción de prueba. Apellido Tipo cadena Propiedades Create, Filter, Group, Sort Descripción Apellido del usuario administrador para la inscripción de prueba. SignupEmail Tipo email Propiedades Create, Filter, Group, Sort Descripción Dirección de email del usuario administrador para la inscripción de prueba. Estado Tipo lista de selección Propiedades Filter, Group, Sort, Update Descripción Estado de la solicitud. Los posibles valores son Nuevo, En curso, Error o Correcto. El valor predeterminado es Nuevo. Subdomain Tipo cadena Propiedades Create, Filter, Group, Sort Descripción El subdominio de la nueva organización de prueba cuando utiliza un Mi dominio personalizado. La longitud máxima es 33 caracteres para Developer Edition (DE) y 40 caracteres para todas las demás ediciones (porque se agrega un sufijo a todas las organizaciones con DE). SuppressSignupEmails Tipo booleano Propiedades Filter, Group, Nillable, Sort 173 Prueba gratuita de la aplicación Nombre del campo SignupRequest Detalles Descripción Cuando se establece en true, no se envían emails de inscripción cuando se crea la organización de prueba. Este campo se utiliza para la función Inscripción de proxy y está disponible en la versión 29.0, y posteriores, de la API. TemplateId Tipo cadena Propiedades Create, Filter, Group, Sort Descripción Id. de 15 caracteres de la plantilla de Trialforce aprobada base para la inscripción de prueba. La plantilla es obligatoria y debe estar aprobada por salesforce.com. TrialDays Tipo cualquier tipo Propiedades Create, Defaulted on create, Filter, Group, Sort Descripción Duración de la inscripción de prueba en días. Debe ser igual o menor que los días de prueba de la plantilla de Trialforce aprobada. Si no se proporciona, el valor predeterminado será el de la duración de la prueba especificada para la plantilla de Trialforce. TrialSourceOrgId Tipo cadena Propiedades Filter, Group, Nillable, Sort Descripción Id. de la organización de 15 caracteres de la organización de origen de Trialforce desde la que se ha creado la plantilla de Trialforce. Nombre de usuario Tipo cadena Propiedades Create, Filter, Group, Sort Descripción Nombre de usuario del usuario administrador para la inscripción de prueba. Debe seguir la convención de direcciones especificada en RFC822: www.w3.org/Protocols/rfc822/#z10 Uso La clase de Java siguiente utiliza la API de REST para crear un objeto SignupRequest. Realiza la autenticación en la organización de gestión de Trialforce y, después, publica una solicitud en el objeto SignupRequest. Las variables siguientes son las que necesita especificar en este ejemplo. 174 Prueba gratuita de la aplicación • • • • • SignupRequest SERVER: el nombre del servidor del host para la organización de gestión de Trialforce (TMO); por ejemplo, “na1.salesforce.com”. USERNAME: el nombre de usuario del administrador para la TMO. PASSWORD: la concatenación de la contraseña del administrador y el token de seguridad para la organización TMO. Para obtener un email con el token de seguridad, en su configuración personal en Salesforce, seleccione Restablecer mi token de seguridad (Reset My Security Token) y haga clic en Restablecer token de seguridad (Reset Security Token). CLIENT_ID: en el menú Configuración (Setup) de Salesforce, debajo de Aplicaciones conectadas, haga clic en Crear > aplicaciones (Create Apps) y en Nuevo (New). Ingrese valores en los campos obligatorios (la URL de devolución de llamada es obligatoria pero inicialmente se especificar cualquier URL válida, ya que no se utiliza), otorgue acceso completo para los ámbitos de OAuth en el selector "Ámbitos de OAuth seleccionados" (Selected OAuth Scopes) y haga clic en Guardar (Save). A continuación, copie el valor de “Clave de consumidor” (Consumer Key) y utilícelo para esta variable. CLIENT_SECRET: en la misma página, haga clic en Haga clic para revelar (Click to reveal). A continuación, copie el valor de "Pregunta secreta de consumidor" (Consumer Secret) y utilícelo para esta variable. public class IsvSignupDriver { private static final String private static final String private static final String private static final String private static final String SERVER = server_name:port; USERNAME = tmo_username; PASSWORD = tmo_passwordsecurity_token; CLIENT_ID = consumer_key; CLIENT_SECRET = consumer_secret; private static SignupRequestInfo signupRequest = null; public static String createSignupRequest (SignupRequestInfo sr) throws JSONException, IOException { JSONObject createResponse = null; signupRequest = sr; JSONObject loginResponse = login(SERVER, USERNAME, PASSWORD); String instanceUrl = loginResponse.getString("instance_url"); String accessToken = loginResponse.getString("access_token"); createResponse = create(instanceUrl, accessToken); System.out.println("Created SignupRequest object: " + createResponse + "\n"); return createResponse.toString(); } /* Authenticates to the TMO using the required credentials */ private static JSONObject login(String server, String username, String password) throws ClientProtocolException, IOException, JSONException { String authEndPoint = server + "/services/oauth2/token"; HttpClient httpclient = new DefaultHttpClient(); try { HttpPost post = new HttpPost(authEndPoint); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("grant_type", "password")); params.add(new BasicNameValuePair("client_id", CLIENT_ID)); params.add(new BasicNameValuePair("client_secret", CLIENT_SECRET)); params.add(new BasicNameValuePair("username", username)); params.add(new BasicNameValuePair("password", password)); post.setEntity(new UrlEncodedFormEntity(params, Consts.UTF_8)); BasicResponseHandler handler = new BasicResponseHandler(); String response = httpclient.execute(post, handler); return new JSONObject(response); } finally { httpclient.getConnectionManager().shutdown(); } } /* Posts a request to the SignupRequest object */ private static JSONObject create(String instanceUrl, String accessToken) throws ClientProtocolException, IOException, JSONException { HttpClient httpClient = new DefaultHttpClient(); try { 175 Prueba gratuita de la aplicación SignupRequest HttpPost post = new HttpPost(instanceUrl + "/services/data/v27.0/sobjects/SignupRequest/"); post.setHeader("Authorization", "Bearer " + accessToken); post.setHeader("Content-Type", "application/json"); JSONObject requestBody = new JSONObject(); requestBody.put("TemplateId", signupRequest.getTemplateID()); requestBody.put("SignupEmail", signupRequest.getEmail()); requestBody.put("username", signupRequest.getUsername()); requestBody.put("Country", "US"); requestBody.put("Company", signupRequest.getCompanyName()); requestBody.put("lastName", signupRequest.getLastName()); StringEntity entity = new StringEntity(requestBody.toString()); post.setEntity(entity); BasicResponseHandler handler = new BasicResponseHandler(); String response = httpClient.execute(post, handler); return new JSONObject(response); } finally { httpClient.getConnectionManager().shutdown(); } } } Códigos de error Si la inscripción no se realiza correctamente, el sistema generará un código de error para que pueda identificar la causa. En esta tabla se muestran los más importantes. Código de error Descripción C-1007 Nombre de usuario duplicado. C-1015 Error al establecer la configuración de Mi dominio de la nueva organización. Haga contacto con el servicio de atención al cliente de salesforce.com para obtener ayuda. C-1016 Error al configurar la aplicación conectada de OAuth para la inscripción de proxy. Compruebe que la aplicación conectada tiene una clave de consumidor válida, una URL de devolución de llamada y un certificado vigente (si fuera aplicable). C-1018 Valor de subdominio no válido proporcionado durante la inscripción. C-1019 El subdominio se está utilizando. Elija un valor nuevo. C-9999 "Error fatal" genérico. Haga contacto con el servicio de atención al cliente de salesforce.com para obtener ayuda. S-1006 Dirección de email no válida (no sigue un formato adecuado). S-2006 Código de país no válido. T-0001 Id. de plantilla no válido (no sigue el formato 0TTxxxxxxxxxxxx). T-0002 No se ha encontrado la plantilla. La plantilla no existe (puede haberse eliminado) o no existe con la versión adecuada. T-0003 Plantilla no aprobada para su uso por salesforce.com. 176 Prueba gratuita de la aplicación Inicio de solicitud de inscripción Inicio de solicitud de inscripción Permisos de usuario necesarios Para crear o ver solicitudes de inscripción: "API de solicitudes de inscripción" Al hacer clic en la ficha Solicitudes de inscripción, aparece la página de inicio de solicitudes de inscripción. En la sección Solicitudes de inscripción recientes: • • • • Haga clic en Nuevo para crear una nueva inscripción. Haga clic en el número de cualquier solicitud de inscripción para ver detalles sobre ella, incluidos su historial y el estado de la aprobación. Seleccione un elemento de la lista desplegable para mostrar una lista de las solicitudes de inscripción que cumplen los criterios. En la lista, puede hacer clic en el nombre de la solicitud de inscripción para ir directamente al detalle de la solicitud de inscripción. Para mostrar una lista filtrada de elementos, seleccione una lista predefinida en la lista desplegable Ver o haga clic en Crear nueva vista para definir su propias vistas personalizadas. Para modificar o eliminar vistas que haya creado, selecciónelas en la lista desplegable Ver y haga clic en Modificar. Nota: La plantilla de Trialforce debe estar aprobada, rellenando un cuadro en el portal de socios, para poder crear nuevas inscripciones desde esta página. Creación de una solicitud de inscripción Permisos de usuario necesarios Para crear o ver solicitudes de inscripción: "API de solicitudes de inscripción" 1. Seleccione Solicitud de inscripción en la lista desplegable Crear nueva en la barra lateral o haga clic en Nuevo junto a Solicitudes de inscripción recientes en la página de inicio de solicitudes de inscripción. 2. Introduzca la información para la solicitud de inscripción. 3. Haga clic en Guardar cuando haya terminado o haga clic en Guardar y nuevo para guardar la solicitud de inscripción actual y añadir otra. Visualización de los detalles de solicitud de inscripción Permisos de usuario necesarios Para crear o ver solicitudes de inscripción: "API de solicitudes de inscripción" Desde la página de detalles de la solicitud de inscripción: • • Haga clic en Eliminar para eliminar la solicitud de inscripción Haga clic en Duplicar para crear una nueva solicitud de inscripción con los mismos atributos que esta La página de detalles contiene las siguientes secciones. 177 Prueba gratuita de la aplicación • • Agregar campos personalizados a las solicitudes de inscripción Detalle de solicitud de inscripción Historial de solicitud de inscripción Detalle de solicitud de inscripción En esta sección se muestran los siguientes atributos (en orden alfabético). Atributo Descripción Compañía Nombre de la compañía que solicita la inscripción de prueba. País Código ISO-3166 de país de dos caracteres en mayúscula. Puede encontrar la lista completa de estos códigos diferentes sitios, como: www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html Organización creada Id. de la organización de 15 caracteres de la organización de prueba creada. Se trata de un campo de solo lectura proporcionado por el sistema una vez procesada la solicitud de inscripción. Email Dirección de email del usuario administrador para la inscripción de prueba. Código de error Código de error si la solicitud de inscripción no tiene éxito. Se trata de un campo de solo lectura proporcionado por el sistema que se debe utilizar si se solicita asistencia técnica. Nombre Nombre del usuario administrador para la inscripción de prueba. Apellidos Apellido del usuario administrador para la inscripción de prueba. Organización de origen Id. de la organización de 15 caracteres de la organización de origen de Trialforce desde la que se ha creado la plantilla de Trialforce. Estado Estado de la solicitud. Los posibles valores son Nuevo, En curso, Error o Correcto. El valor predeterminado es Nuevo. Plantilla Id. de 15 caracteres de la plantilla de Trialforce aprobada base para la inscripción de prueba. La plantilla es obligatoria y debe estar aprobada por salesforce.com. Descripción de plantilla Descripción de la plantilla de Trialforce aprobada base para la inscripción de prueba. Días de prueba Duración de la inscripción de prueba en días. Debe ser igual o menor que los días de prueba de la plantilla de Trialforce aprobada. Si no se proporciona, el valor predeterminado será el de la duración de la prueba especificada para la plantilla de Trialforce. Nombre de usuario Nombre de usuario del usuario administrador para la inscripción de prueba. Debe seguir la convención de direcciones especificada en RFC822: www.w3.org/Protocols/rfc822/#z10 Historial de solicitud de inscripción En esta sección aparece la fecha en la que se creó la solicitud de inscripción, el usuario que la creó y las acciones que se han realizado en ella. Agregar campos personalizados a las solicitudes de inscripción Permisos de usuario necesarios Para crear o ver solicitudes de inscripción: "API de solicitudes de inscripción" Puede agregar campos personalizados al objeto SignupRequest tal y como lo hace para cualquier otro objeto estándar. 178 Prueba gratuita de la aplicación Ejecución de reportes en solicitudes de inscripción 1. En la organización de gestión de Trialforce, en Configuración, haga clic en Personalizar > Solicitudes de inscripción > Campos (Customize > Signup Requests > Fields). 2. Haga clic en Nuevo. 3. Especifique los detalles del campo personalizado y haga clic en Guardar. Para ver el campo personalizado en una lista de registros actuales de SignupRequest, cree una vista personalizada que contenga ese campo en la ficha Solicitudes de inscripción (Signup Requests). Ejecución de reportes en solicitudes de inscripción Permisos de usuario necesarios Para crear o ver solicitudes de inscripción: "API de solicitudes de inscripción" Una vez que se han creado algunos registros de SignupRequest, puede ejecutar reportes personalizados en ellos. 1. En la organización de gestión de Trialforce, en Configuración haga clic en Crear > Tipos de reporte (Create > Report Types) y en Tipos de reportes personalizados (Custom Report Types). 2. Seleccione Solicitudes de inscripción (Signup Requests) como el objeto principal. 3. Ingrese una etiqueta, un nombre, una descripción y guarde todo en una categoría como Reportes administrativos (Administrative Reports). 4. Finalice el asistente y guarde el tipo de reporte. 5. Configure el reporte con los campos que le interesen y haga clic en Guardar. 6. Seleccione la ficha Reportes (Reports) y haga clic en Reporte nuevo (New Report) para crear un reporte del nuevo tipo. 7. Seleccione el nombre del tipo de su reporte y haga clic Crear. Cuando haya creado el reporte, podrá ejecutarlo periódicamente para ver las tendencias en los datos. Uso de desencadenadores con solicitudes de inscripción Permisos de usuario necesarios Para crear o ver solicitudes de inscripción: "API de solicitudes de inscripción" Puede configurar desencadenadores para iniciar determinadas acciones cada vez que se envía una solicitud de inscripción. 1. En la organización de gestión de Trialforce, en Configuración, haga clic en Personalizar > Solicitudes de inscripción > Desencadenadores (Customize > Signup Requests > Triggers). 2. Haga clic en Nuevo. 3. Agregue el código del desencadenador y haga clic en Guardar. Por ejemplo, este desencadenador inserta un prospecto nuevo según la información de la solicitud de inscripción. trigger SignupRequestTrigger on SignupRequest (after insert) { private SignupRequest[] sr = Trigger.new; Lead l = new Lead( LastName = sr[0].LastName, FirstName = sr[0].FirstName, Company = sr[0].Company, Email = sr[0].SignupEmail, LeadSource = 'Trial Signup' ); insert l;} 179 Prueba gratuita de la aplicación Creación de inscripciones de proxy para acceso de OAuth y a API Puede comprobar que se ha creado un registro de prospecto cada vez que crea una SignupRequest. Para encontrar con facilidad un prospecto específico, puede ordenar los prospectos por email. Creación de inscripciones de proxy para acceso de OAuth y a API Permisos de usuario necesarios Para crear o ver solicitudes de inscripción: "API de solicitudes de inscripción" Mediante el uso del objeto SignupRequest, puede crear de forma programática una organización nueva sin que se envíen al usuario mensajes de email generados por el sistema. Después puede obtener un token de acceso de OAuth para iniciar sesión en la organización y realizar solicitudes de API desde ella, todo ello sin que el usuario tenga que hacer nada. Este proceso se denomina is inscripción de proxy porque permite crear y manejar la operación en nombre del usuario, sin que este sepa que está utilizando Salesforce en segundo plano. En el proceso de inscripción tradicional, cuando se crea una organización nueva, el usuario recibe un mensaje de email generado por el sistema que contiene la URL de inicio de sesión y una contraseña inicial para poder iniciar sesión en la organización. Después, el usuario tiene que iniciar sesión y concederle a usted de forma explícita el acceso a API para que pueda realizar llamadas a la organización en su nombre. En cambio, con el proceso de inscripción de proxy, no se generan mensajes de email ni el usuario tiene que hacer nada para proporcionarle acceso a API. La capacidad de crear y gestionar organizaciones mediante proxy amplía sus opciones para integrar Salesforce con aplicaciones externas disponibles en otras plataformas. Permite incorporar cualquier función de la plataforma Force.com en su propia aplicación sin exponer la interfaz de usuario de Salesforce. De hecho, se puede anular la asociación de todas las funciones de Salesforce de la interfaz de usuario para que estén disponibles para su integración en la ejecución o interfaz de usuario de cualquier otra aplicación de un modo perfecto e invisible. Por ejemplo, imagine que un proveedor de software independiente tiene una aplicación Web, compilada en la plataforma .NET, que ayuda a las compañías a gestionar los reportes y los reembolsos de los gastos de viajes para los empleados. A este proveedor podría interesarle integrar Chatter en su aplicación para que todos los empleados de la compañía pudieran opinar con comentarios y sugerencias sobre sus viajes útiles para los demás. El proveedor puede hacer esto mediante el uso de las API de Salesforce adecuadas para implementar la solución del modo siguiente: 1. 2. 3. 4. 5. Se utiliza la inscripción de proxy para crear una organización de Salesforce para cada uno de los clientes. Se crean los usuarios en cada organización de los clientes para todos los empleados de la compañía. Se configura y actualiza un grupo de Chatter para poder compartir información sobre viajes. Se monitorean los comentarios que hagan los usuarios en Chatter y se extrae información de las publicaciones individuales. Se inserta la información en su aplicación y se muestra en la interfaz de usuario existente. Con este proceso, el proveedor de software independiente proporciona a sus clientes acceso a la funcionalidad Chatter sin que tenga que desarrollarla desde cero. Los clientes del proveedor utilizan Chatter como si fuera una ampliación natural de la aplicación existente, en una interfaz que conocen bien y sin que tengan que saber nada de Salesforce ni tengan que iniciar sesión en este sistema. Este mismo concepto puede aplicarse a cualquier otra función de Salesforce, incluidos los objetos estándares y personalizados, Apex y Visualforce. En verdad, la inscripción de proxy permite a los proveedores de software independientes consumir Salesforce como servicio e integrar sus funciones en las aplicaciones de cualquier plataforma sin exponer la interfaz de usuario de Salesforce. Las aplicaciones posibles donde se puedan integrar las funciones de Salesforce son tantas como las que pueda imaginar el proveedor. El procedimiento para crear una inscripción de proxy es el siguiente: 1. Inicie sesión en una organización con Developer Edition (que tiene el permiso de usuario Aplicaciones conectadas [Connected Apps] activado de forma predeterminada). 180 Prueba gratuita de la aplicación Creación de inscripciones de proxy para acceso de OAuth y a API 2. En el menú Configuración (Setup), debajo de Aplicaciones conectadas haga clic en Crear > Aplicaciones (Create Apps) y en Nuevo (New). 3. Ingrese valores en los campos obligatorios. Debe especificar un certificado X.509 y otorgar acceso completo para los ámbitos de OAuth en el selector "Ámbitos de OAuth seleccionados" (Selected OAuth Scopes). La URL de devolución de llamadas es necesaria pero se puede establecer inicialmente en cualquier URL válida siempre que no se utilice. Haga clic en Guardar (Save) cuando haya terminado. 4. Registre el valor de Clave de consumidor (Consumer Key) en la misma página. Además, haga clic en Haga clic para revelar (Click to reveal) y registre el valor de Pregunta secreta de consumidor (Consumer Secret). 5. Agregue la aplicación conectada como un componente a un paquete nuevo. Registre el valor de la URL de instalación para el paquete. 6. Inicie sesión en la organización de gestión de Trialforce y, desde ahí, cree una nueva organización de origen de Trialforce. 7. Inicie sesión en la organización de origen de Trialforce e instale el paquete que contiene la aplicación conectada utilizando para ello la URL de instalación registrada en el paso 5. 8. Una vez que la aplicación conectada está instalada en la organización de origen de Trialforce, puede personalizarla en Configuración > Gestionar aplicaciones (Gestionar aplicaciones). Podrá ver la aplicación conectado y podrá modificar sus atributos. Especifique los perfiles y los permisos adecuados y, en la sección Políticas de OAuth (OAuth policies), elija la opción “Los usuarios aprobados por el administrador se han autorizado previamente” (Admin approved users are pre-authorized). De este modo, se garantiza que puede autenticar la organización con estos criterios en nombre de los usuarios. 9. Una vez que haya configurado la organización de origen de Trialforce según sus requisitos, cree a partir de ella una plantilla de Trialforce. Seleccione el botón de opción Toda la configuración y todos los datos (All Setup and Data) cuando cree la plantilla de Trialforce. 10. Archive un caso en el portal de socios para obtener la aprobación que le permite crear inscripciones nuevas con la plantilla. 11. Una vez que la plantilla esté aprobada, podrá inscribir una organización nueva con el objeto SignupRequest. Deberá especificar los valores de OAuth que sean necesarios para conectarse a la organización recién creada, es decir: Clave de consumidor y URL de devolución de llamada. POST https://mycompany-tmo.salesforce.com/services/data/v27.0/sobjects/SignupRequest/ Authorization Bearer 00Dxx0000001gR6!ARoAQAS3Uc6brlY8q8TWrrI_u1THuUGmSAp XrksSniyjom9kXfDac4UP.m9FApjTw9ukJfKqWuD8pA9meeLaltRmNFvPqUn7 Content-Type application/json Body: { "TemplateId":"0TT000000000001", "SignupEmail":"[email protected]", "Username":"[email protected]", "Country":"US", "Company":"salesforce.com", "LastName":"Smith", "ConnectedAppConsumerKey": "3MVG9AOp4kbriZOLfSVjG2Pxa3cJ_nOkwhxL1J1AuV22u8bm82FtDtWFVV__ Vs6mvqoVbAnwsChp9YT4bfrYu", "ConnectedAppCallbackUrl": "https%3A%2F%2Fwww.mysite.com%2Fcode_callback.jsp" } Cuando se especifican los campos ConnectedAppConsumerKey y ConnectedAppCallbackUrl en el objeto SignupRequest, se desencadena un flujo de inscripción de proxy para aprobar de forma automática una aplicación conectada existente para utilizar en esta organización nueva. En ese flujo, no se envía al usuario ningún mensaje de email relativo a la inscripción. Una vez que conoce el nombre de usuario del administrador, la clave de consumidor y la pregunta secreta de consumidor, ya dispone de toda la información que necesita para lo siguiente: • • Realizar solicitudes de API en la organización recién creada como usuario administrador de esta Solicitar un token de acceso actualizado en cualquier momento 181 Prueba gratuita de la aplicación Preguntas más frecuentes sobre Trialforce Preguntas más frecuentes sobre Trialforce Esta sección contiene una lista de las preguntas más frecuentes planteadas sobre Trialforce. • • • • ¿Cómo puedo actualizar la prueba a una nueva versión de la aplicación? ¿Puedo ofrecer mi aplicación a través de Trialforce y de AppExchange? ¿En qué se diferencian las pruebas de Trialforce? ¿Se puede instalar otra aplicación en una organización de prueba? ¿Cómo puedo actualizar la prueba a una nueva versión de la aplicación? Instale la versión nueva del paquete en la organización de origen de Trialforce. Después de la actualización, cree una plantilla de Trialforce nueva y úsela como la base para su prueba. ¿Puedo ofrecer mi aplicación a través de Trialforce y de AppExchange? ¡Por supuesto! Trialforce y AppExchange son complementarios y juntos constituyen un sistema de distribución eficiente. Incluso podría anunciar su página de Trialforce en la lista de AppExchange, y viceversa. Por lo general, AppExchange es eficiente para los clientes de Salesforce CRM mientras que Trialforce es la opción idónea para los clientes nuevos. ¿En qué se diferencian las pruebas de Trialforce? Las pruebas se administran desde AppExchange mientras que Trialforce se administra desde su propio sitio Web. Para obtener más información sobre las prueba, consulte Creación de una prueba en AppExchange. ¿Se puede instalar otra aplicación en una organización de prueba? Sí. La organización principal de Trialforce es una organización de Salesforce con funcionamiento pleno. Su cliente instalará su aplicación y, posteriormente, podrá instalar otras aplicaciones en la misma organización que quepan. Es como cualquier otra prueba gratuita de Salesforce. 182 Capítulo 9 Asistencia a sus suscriptores En este capítulo... • • Ficha Soporte Consola de compatibilidad del suscriptor Los editores de aplicaciones son responsables de la asistencia a los usuarios finales de todas sus listas. Cuando los usuarios se ponen en contacto con el servicio de atención al cliente de salesforce.com con una pregunta acerca de su lista en la fichas Acerca de y Asistencia de su lista. Asegúrese de que sus listas de AppExchange incluyen información de asistencia. Si ha instalado la Aplicación de gestión de licencias (LMA) puede iniciar sesión en la organización de un cliente y proporcionar asistencia administrativa para sus clientes. Esta función solo está disponible para paquetes gestionados que han superado la revisión de seguridad. Para obtener más información, consulte Iniciar sesión en Organizaciones del suscriptor. 183 Asistencia a sus suscriptores Ficha Soporte Ficha Soporte En la ficha Soporte (Support) se proporciona información del servicio de atención al cliente que quiere prestar a los clientes. Campo Descripción Con asistencia (Supported) o Sin asistencia (No Aquí se indica si la aplicación dispone o no de servicio de asistencia. En caso de que lo tenga, ingrese la información que se solicita. En caso contrario, solo tiene que aceptar un acuerdo de términos y condiciones. Support) Número de teléfono El teléfono de asistencia de su compañía. Indique si en este número de teléfono se aplican cargos adicionales. Email El email de asistencia de su compañía. Indique si en esta dirección de email se aplican cargos adicionales. URL del chat online (Online Chat URL) La dirección del servicio de chat online de su compañía. Indique si en esta asistencia online se aplican cargos adicionales. URL de base de datos de conocimientos (Knowledge Base URL) La dirección de la base de datos de conocimientos de su compañía. Indique si en el acceso a esta base de datos se aplican cargos adicionales. Asistencia disponible las 24 horas de los 7 días de la semana (Support Available 24 hrs × 7 days) Indique si el servicio de asistencia está disponible siempre: las 24 horas del día, los siete días de la semana. Asistencia Premium disponible (Premium Support Available) Indique si ofrece un paquete de soporte premium. Acuerdo de nivel de servicio (Service Level Agreement) Indique si ofrece un contrato de prestación de servicios. Detalles de asistencia (Support Details) Ingrese información detallada sobre las funciones de la asistencia. Términos y condiciones (Terms & Conditions) Ingrese los términos y condiciones que los clientes deben leer y aceptar antes de instalar la aplicación. Si ocupan más de 32.000 caracteres, ingrese un acuerdo abreviado y deje el documento completo como referencia en su sitio Web. Consola de compatibilidad del suscriptor En la consola de compatibilidad del suscriptor encontrará con facilidad información sobre todos los suscriptores, tal como la edición de Salesforce que utilizan y si han superado sus límites. Los suscriptores también pueden otorgarle acceso de inicio de sesión para que solucione problemas directamente desde dentro de la aplicación de la misma manera por la que otorgan acceso de inicio de sesión a los administradores. Cuando tenga acceso otorgado, podrá iniciar sesión en la organización del suscriptor y ver directamente su configuración y sus datos que pueden ser de utilidad para solucionar los problemas. 184 Asistencia a sus suscriptores Visualización de detalles del suscriptor Nota: Esta función está disponible a los socios de salesforce.com aptos. Para obtener más información sobre el programa de socios, incluidos los requisitos de aptitud, visite el sitio Web www.salesforce.com/partners. Visualización de detalles del suscriptor La página Descripción general del suscriptor, a la que se accede haciendo clic en el nombre de la organización desde la ficha Suscriptores de la LMA, proporciona información detallada acerca de cada organización del suscriptor. Eso le puede proporcionar perspectivas acerca de cómo un cliente utiliza su aplicación y le ayuda a solucionar problemas. En detalles de la organización: • • • El nombre y la información de contacto se encuentran en Configuración, página Perfil de la compañía > Información de la compañía de la organización del suscriptor. Esa puede ser diferente a la información que aparece en los registros de prospecto, cuenta o contacto de su LMA. El Id. de organización es un Id. único que identifica la organización de Salesforce de este cliente. La instancia determina en qué centro de datos de salesforce.com reside la organización de este cliente. También determina cuando se actualizará el cliente con una nueva versión de Salesforce. Consulte trust.salesforce.com durante el periodo de la versión para comprender qué versión de Salesforce está utilizando el cliente. La página también incluye estas listas relacionadas. Límites Información, en porcentajes, sobre el espacio en el archivo, en los datos y el número de solicitudes de API asociadas a este cliente. Acceso de inicio de sesión otorgado Se trata de una lista de usuarios a los que se les ha otorgado acceso de inicio de sesión y la fecha en la que caducará este acceso. Paquetes y licencias Una lista de todos los paquetes instalados en esta organización y asociados con esta LMA. Para cada paquete, se muestra la versión de la aplicación que utiliza un cliente, el número total de licencias suministradas al suscriptor y el número que ha utilizado. Esta información debería coincidir con el registro de licencias del suscriptor en la LMA. Solicitud de acceso de inicio de sesión Solicite al usuario que se dirija a su configuración personal y haga clic en Otorgar acceso de inicio de sesión de cuenta o Otorgar acceso de inicio de sesión, cualquiera que aparezca, para otorgar el acceso. Si el publicador no aparece en esta página, es por uno de estos motivos: • • • • Un administrador del sistema a desactivado la posibilidad de usuarios que no son administradores de otorgar acceso. El usuario no dispone de una licencia para el paquete. El paquete tiene licencia para toda la organización. Solo los administradores con el permiso “Gestionar usuarios” activado en su perfil pueden otorgar el acceso. Está activada la preferencia de la organización Los administradores pueden iniciar sesión como cualquier usuario. Nota: A menos que esté activada la preferencia de la organización Los administradores pueden iniciar sesión como cualquier usuario, el acceso se otorga durante un tiempo limitado, y el suscriptor puede revocar el acceso en cualquier momento. Cualquier cambio que realice cuando inicia sesión como un suscriptor se registran en el seguimiento de auditoría. 185 Asistencia a sus suscriptores Iniciar sesión en Organizaciones del suscriptor Iniciar sesión en Organizaciones del suscriptor Permisos de usuario necesarios Para iniciar sesión en las organizaciones del suscriptor: “Iniciar sesión en la organización del suscriptor” Para iniciar sesión, una vez que otro usuario le ha concedido acceso: 1. En la Aplicación de gestión de licencias (LMA), haga clic en la ficha Suscriptores. 2. Para buscar una organización del suscriptor rápidamente, introduzca un nombre del suscriptor o un Id. de organización en el cuadro de búsqueda y haga clic en Buscar. 3. Haga clic en el nombre de la organización del suscriptor. 4. En la página Detalles de la organización, haga clic en Inicio de sesión junto a un nombre de usuario. Tenga en cuenta que tiene los mismos permisos que el usuario con el que ha iniciado sesión. 5. Cuando haya finalizado la resolución de problemas, haga clic en Volver a Descripción general del suscriptor para volver a la organización. Nota: Únicamente aparecerán en esta lista los suscriptores que han instalado al menos un paquete gestionado vinculado a su Aplicación de gestión de licencias (LMA). Mejores prácticas • • • Cuando accede a una organización del suscriptor, se cierra la sesión de su LMO (Organización de gestión de licencias). Puede establecer un campo mi dominio, por lo que no se cerrará la sesión de su Organización de gestión de licencias automáticamente cuando inicia sesión en una organización del suscriptor. Para establecer un dominio propio, en Configuración, haga clic en Gestión de dominio > Mi dominio (Domain Management > My Domain). Procure permitir únicamente al personal técnico y de atención al cliente de confianza iniciar sesión en una organización del suscriptor. Dado que esta función puede incluir el acceso total de lectura/escritura a los datos y las configuraciones del cliente, es importante preservar su seguridad para mantener su reputación. Controle quién tiene acceso proporcionando permisos de usuario “Iniciar sesión en la organización del suscriptor” a personal de asistencia específico a través de un perfil o un conjunto de permisos. Solución de problemas en Organizaciones del suscriptor Si inicia sesión como un usuario en una organización del suscriptor, puede crear registros de depuración de Apex que contienen el resultado de sus paquetes gestionados. Eso incluye inicios de sesión que no se exponen normalmente al suscriptor. Utilizando esta información de registro, puede solucionar problemas específicos de esa organización del suscriptor. 1. Inicie la Consola de desarrollador desde Su nombre > Consola de desarrollador 2. Realice la operación y vea el registro de depuración con su resultado. Si el usuario tiene acceso, configure un registro de depuración: desde Configuración, haga clic en Monitoreo > Registros de depuración o Registros > Registros de depuración. Tenga en cuenta que los suscriptores no podrán ver los registros que ha establecido o creado ya que contienen su código Apex oculto. Además, puede ver y modificar datos que se contienen en la configuración personalizada protegida desde sus paquetes gestionados al iniciar sesión como un usuario. 186 Capítulo 10 Actualización de la aplicación En este capítulo... • • • Creación y carga de parches Trabajo con versiones de parche Versiones del código Apex Después de cargar una aplicación en paquetes, puede actualizarla para solucionar problemas o incorporar funcionalidades nuevas. Cuando se actualiza un paquete, se crea una versión nueva. Una versión de paquete es un número que identifica el conjunto de componentes cargados en un paquete. El número de versión tiene el formato majorNumber.minorNumber.patchNumber (por ejemplo, 2.1.3). Los números mayor y menor aumentan con cada versión posterior. El patchNumber se genera y se actualiza solo para una versión de parche. Los paquetes sin gestionar no se pueden actualizar, de modo que cada versión de paquete es simplemente un conjunto de componentes que se distribuyen. La versión de un paquete tiene más importancia en el caso de los paquetes gestionados. Los paquetes se comportan de modo diferente según la versión. Los editores pueden utilizar las versiones de paquetes para hacer evolucionar los componentes de sus paquetes gestionados cómodamente publicando versiones posteriores de paquetes sin que dicho paquete estropee las integraciones de clientes existentes. Los números de versión dependen del tipo de publicación de paquete, que identifica la forma en que se distribuyen los paquetes. Hay de dos tipos: Edición principal La edición principal indica que un paquete es Gestionado y editado. En estas ediciones, los números principales y secundarios de una versión de paquete aumentan hasta el valor seleccionado. Versión de parche La versión del parche solo es válida en caso de que haya distintos parches de un paquete. Cada versión de parche tiene un número mayor a la del anterior. En la tabla siguiente se muestra una secuencia de números de versión de una serie de cargas: Secuencia Tipo de carga Primera carga Número Notas de versión Gestionado 1.0 en versión beta 187 La primera carga Gestionado en versión beta. Actualización de la aplicación Secuencia Tipo de carga Número Notas de versión Segunda carga Gestionado 1.0 y editado Una carga Gestionado y editado. Observe que el número de versión no cambia. Tercera carga Gestionado 1.1 y editado Observe el cambio del segundo número de la versión en esta carga de tipo Gestionado y editado. Si carga una nueva versión de parche, no podrá cambiar el número de parche. Cuarta carga Gestionado 2.0 en versión beta La primera carga Gestionado en versión beta del número de versión 2.0. Observe la actualización del número de la versión. Quinta carga Gestionado 2.0 y editado Una carga Gestionado y editado. Observe que el número de versión no cambia. Cuando un suscriptor existente instala una versión de paquete nueva, sigue habiendo solo una instancia de cada componente en el paquete aunque los componentes pueden emular versiones anteriores. Por ejemplo, un suscriptor puede utilizar un paquete gestionado que contiene una clase de Apex. Si el editor decide desaprobar un método en la clase de Apex y publicar una versión de paquete nueva, el suscriptor seguirá viendo solo una instancia de la clase de Apex después de instalar la versión nueva. Sin embargo, esta clase de Apex puede seguir emulando la versión anterior de cualquier código que haga referencia al método desaprobado en la versión anterior. Consulte también: Trabajo con versiones de parche Acerca de las actualizaciones mediante envío 188 Actualización de la aplicación Creación y carga de parches Creación y carga de parches Nota: Las versiones de parche y las actualizaciones mediante envío solo están disponibles para socios de ISV de Salesforce. Para crear una versión del parche: 1. 2. 3. 4. Desde Configuración, haga clic en Crear > Paquetes. Haga clic en el nombre de su paquete gestionado. Haga clic en la ficha Organización de parche y, a continuación, en Nueva. Seleccione la versión del paquete cuyo parche desea crear en la lista desplegable Aplicación de parche a la versión principal. El tipo de versión debe ser Gestionado y editado. 5. Introduzca un Nombre de usuario para iniciar sesión en su organización de parche. 6. Introduzca una Dirección de email asociada con su inicio de sesión. 7. Haga clic en Guardar. Nota: Si pierde su información de inicio de sesión, haga clic en Restablecer en la página de detalles del paquete en Organización de desarrollo de parche para restablecer el inicio de sesión en su organización de desarrollo de parche. Cuando haya recibido un email indicando que Salesforce ha creado su organización de desarrollo de parche, puede hacer clic en Inicio de sesión para empezar a desarrollar su versión de parche. El desarrollo en una organización de parche está limitado. A continuación se incluye una lista de advertencias: • • • • • • • • No se pueden agregar componentes de paquete. No se pueden eliminar los componentes de paquete actuales. Los controles de acceso de API y Apex dinámica no se pueden cambiar para el paquete. No se puede desaprobar ningún tipo de código Apex. No se pueden agregar nuevas relaciones de clase de Apex, como extends. No se pueden agregar nuevos modificadores de acceso de Apex, como virtual o global. No se pueden añadir nuevos servicios Web. No se pueden añadir nuevas dependencias de funciones. Cuando haya terminado de desarrollar su parche, en su organización desarrollo de parche: 1. 2. 3. 4. 5. Haga clic en Crear > Paquetes y haga clic en el nombre del paquete. En la página Carga del paquete, haga clic en Cargar. Ingrese un Nombre de versión. Como práctica recomendada, es muy útil tener una descripción breve y la fecha. Tenga en cuenta que el Número de versión ha aumentado su Número de parche. En el caso de paquetes gestionados, seleccione un Tipo de versión: • • Seleccione Gestionados - Editados para cargar una versión que se pueda actualizar. Después de la carga, algunos atributos de los componentes de Salesforce estarán bloqueados. Seleccione Gestionado en versión beta si desea cargar una versión de su paquete a una pequeña muestra de su público con el fin de realizar pruebas. Todavía podrá cambiar los componentes y cargar versiones beta adicionales. Nota: Los paquetes Beta solo pueden instalarse en organizaciones con Developer Edition o sandbox, y por lo tanto no pueden pasarse a organizaciones de clientes. 189 Actualización de la aplicación Trabajo con versiones de parche 6. Cambie la Descripción si fuera necesario. 7. De forma opcional, introduzca y confirme una contraseña para compartir el paquete de forma privada con cualquiera que tenga contraseña. No introduzca una contraseña si desea que el paquete esté disponible para cualquiera en AppExchange y compartir el paquete públicamente. 8. Salesforce selecciona automáticamente los requisitos que encuentra. Además, seleccione cualquier otro componente obligatorio de las secciones Requisitos del paquete y Requisitos del objeto para notificar a los instaladores de los requisitos de este paquete. 9. Haga clic en Cargar. Para distribuir el parche puede compartir el vínculo de carga o programar una actualización mediante envío. Trabajo con versiones de parche Nota: Las versiones de parche y las actualizaciones mediante envío solo están disponibles para socios de ISV de Salesforce. Una versión de parche permite a un desarrollador cambiar la funcionalidad de los componentes existentes en un paquete gestionado, mientras garantiza a los suscriptores experimentar que no hay cambios visibles en el paquete. Los parches constituyen actualizaciones menores realizadas en un paquete Gestionado y editado y solo se utilizan para solucionar problemas o errores. Las versiones de parece solo se pueden crear para ediciones principales. Los suscriptores pueden recibir actualizaciones de parches como cualquier otra versión de paquete. Sin embargo, los parches también se pueden distribuir a través de actualizaciones mediante envío. Cuando cree un parche, el patchNumber (número de parche) que figura en el número de versión de un paquete aumenta una unidad. Por ejemplo, imagine que edita un paquete con el número de versión 2.0. Cuando envíe un parche, el número cambiará a 2.0.1. Tenga en cuenta que este valor no se puede cambiar manualmente. Organizaciones de desarrollo de parche Todos los parches se desarrollan en una organización de desarrollo de parche. Esta es la organización donde se desarrollan, se mantienen y se cargan las versiones de parche. Para iniciar el desarrollo de un parche, tendrá que crear una organización de desarrollo de parche. Este tipo de organizaciones son necesarias para que los desarrolladores puedan realizar todos los cambios que quieran en los componentes existentes sin provocar incompatibilidades entre las instalaciones de suscriptores que ya existen. Una organización de desarrollo de parche puede cargar un número ilimitado de parches y solo puede haber una por cada edición principal del paquete. De esta manera, una organización de desarrollo de parche que se cree, por ejemplo, para un paquete con el número de versión 4.2 solo puede funcionar para los parches numerados 4.2.1, 4.2.2, 4.2.3, etc., pero no podrá hacerlo para los parches de la versión 4.1 o 4.3. Integración del desarrollo de parche Si va a desarrollar los paquetes con el IDE de Force.com, puede beneficiarse de los sistemas de control de revisión en Eclipse para comparar y combinar distintas ramas del proyecto. Salesforce recomienda utilizar el complemento Subversion. Para instalarlo para el IDE de Force.com, haga lo siguiente: 1. Vaya a http://subclipse.tigris.org para obtener la URL más reciente del sitio de actualización de Eclipse que sea compatible con su versión de Eclipse. 2. En el IDE de Force.com, desplácese a Ayuda > Actualizaciones de software (Help - Software Updates) y seleccione la ficha Software disponible (Available Software). Haga clic en Agregar sitio (Add Site) e ingrese la URL del paso anterior. 3. Seleccione el nuevo sitio y haga clic en Finalizar (Finalizar) para buscar y obtener la versión más reciente del complemento Subclipse. En la lista que se muestre seleccione el complemento Subclipse que necesite. 4. Haga clic en Siguiente (Next), acepte las condiciones y haga clic de nuevo en Siguiente. 190 Actualización de la aplicación Versiones del código Apex 5. Haga clic en Finalizar para comenzar la instalación y, cuando se le pida, en Instalar todo (Install All). Deberá reiniciar Eclipse cuando termine la instalación. Ahora ya ha enlazado su entorno de IDE de Force.com a Subclipse. El paso siguiente es conectar el repositorio al entorno: 1. Abra la perspectiva SVN Repository Exploring en el IDE para llegar a la vista de los repositorios de SVN. 2. Utilice el icono Agregar repositorio de SVN (Add SVN Repository) en el extremo derecho para configurar Subclipse para acceder al repositorio local. La URL para acceder a su repositorio de forma local es file:///svn_repos. El repositorio de la versión secundaria controla los cambios efectuados en los proyectos almacenados. Debido a que en el trabajo con parches se involucran dos ramas diferentes (una organización de desarrollo principal y una de desarrollo de parche) es necesario combinar los cambios para una edición futura. Para ver las versiones diferentes del paquete: 1. Abra la perspectiva Project Explorer. 2. Desplácese a un archivo en el proyecto de desarrollo principal que quiera comparar y utilice el menu contextual para seleccionar Comparar con... > Rama/etiqueta... (Compare With... Branch/Tag...). 3. En el campo Comparar con (Compare to), seleccione la versión de parche del archivo. 4. Haga clic en Gráficamente y en Aceptar. Se mostrarán resaltados los cambios entre el archivo de la organización de desarrollo principal y el archivo almacenado en la organización de desarrollo de parche. Puede utilizar esta vista para combinar las diferencias entre los dos proyectos. Para obtener más información sobre el uso del IDE de Force.com, consulte la guía del desarrollador de la plataforma. Versiones del código Apex Los desarrolladores de paquetes pueden utilizar una lógica condicional en desencadenadores y clases de Apex que muestren diferentes comportamientos para diferentes versiones. De esta forma, el desarrollador del paquete puede continuar manteniendo el comportamiento existente en clases y desarrolladores en versiones anteriores del paquete mientras continúa creando el código. Cuando los suscriptores instalan varias versiones de su paquete y escriben un código que hace referencia a las clases o desencadenadores de Apex de su paquete, deben seleccionar la versión a la que está haciendo referencia. En el código Apex al que se hace referencia en el paquete, puede ejecutar de forma condicional varias rutas de código basadas en la configuración de versión del código Apex que hace la referencia. La configuración de la versión de paquete del código de llamada se puede determinar dentro del código de paquete; para ello, hay que llamar al método System.requestVersion. De esta manera, los desarrolladores de paquetes pueden determinar el contexto de la solicitud y especificar los distintos comportamientos para las versiones diferentes del paquete. En el ejemplo siguiente se muestran distintos comportamientos de un desencadenador para diferentes versiones de paquete: trigger oppValidation on Opportunity (before insert, before update) { for (Opportunity o : Trigger.new){ // Add a new validation to the package // Applies to versions of the managed package greater than 1.0 if (System.requestVersion().compareTo(new Version(1,0)) > 0) { if (o.Probability >= 50 && o.Description == null) { o.addError('All deals over 50% require a description'); } } // Validation applies to all versions of the managed package. if (o.IsWon == true && o.LeadSource == null) { o.addError('A lead source must be provided for all Closed Won deals'); } } } 191 Actualización de la aplicación Efectos de la desaprobación de Apex para los suscriptores Para comparar las diferentes versiones de sus clases de Apex, haga clic en la ficha Definición de clase (Class Definition) cuando consulte los detalles de la clase. Para obtener más información sobre el método System.requestVersion, consulte la guía del desarrollador de código Apex de Force.com. Efectos de la desaprobación de Apex para los suscriptores En esta sección se explica cómo afecta la desaprobación de un método de Apex a los suscriptores que instalan el paquete gestionado. En la tabla se muestra en la primera columna una secuencia habitual de acciones que lleva a cabo un desarrollador de paquetes y en la segunda columna la secuencia de las acciones que lleva a cabo un suscriptor. Cada fila de la tabla corresponde a un desarrollador de paquetes o una acción del suscriptor. Acción del desarrollador de paquetes Acción del suscriptor Notas Instalar la versión 1.0 del paquete. El número de versión del paquete es 1.0. El número de Crear una clase de Apex global, PackageDevClass, que contiene el método global m1. Cargar la versión 1.0 de un paquete gestionado y editado que contiene PackageDevClass. primera versión instalada es el 1.0. Crear una clase de Apex, SubscriberClass, que haga referencia a m1 en PackageDevClass. Desaprobar m1 y crear un método nuevo, m2. Cargar como la versión 2.0 gestionada y editada del paquete. Instalar la versión 2.0 del paquete. El número de versión del paquete es 2.0. El número de primera versión instalada sigue siendo el 1.0. SubscriberClass sigue haciendo referencia a la versión 1.0 del paquete y sigue funcionando igual que antes. Modificar la configuración de versión para que SubscriberClass haga referencia a la versión 2.0 del paquete. Guardar la clase. Se mostrará un mensaje de error que indica que no se puede hacer referencia a m1 en la versión 2.0 del paquete. Cambiar SubscriberClass para que haga referencia a m2 en lugar de a m1. Guardar la clase correctamente. 192 Capítulo 11 Envío de una actualización En este capítulo... • • • • • • • • Acerca de las actualizaciones mediante envío Mejores prácticas en las actualizaciones mediante envío Asignación de acceso a los componentes y campos nuevos Secuencia de comandos posterior a la instalación de ejemplo para una actualización mediante envío Limitaciones conocidas en las actualizaciones mediante envío Programación de actualizaciones mediante envío Visualización de detalles de actualización mediante envío Visualización del historial de actualizaciones de una organización Una actualización mediante envío es un método para actualizar de forma automática la versión del paquete que tienen los clientes a una nueva. Esta función solo se puede utilizar con paquetes gestionados y con el fin de asegurarse de que todos los clientes tienen la misma versión del paquete o la última de este. Puede enviar una actualización a cualquier número de organizaciones que hayan instalado el paquete gestionado. El suscriptor del paquete no tendrá que hacer nada para recibir la actualización mediante envío. El suscriptor se dará cuenta, después de una actualización mediante envío correcta, que el número de versión del paquete en la página Detalles de paquete (Package Detail) ha aumentado. Las actualizaciones que no se realicen correctamente deberá resolverlas el desarrollador que ha iniciado el envío. Las actualizaciones mediante envío reducen al mínimo los riesgos posibles y los costos de asistencia derivados de tener varios suscriptores ejecutando distintas versiones de la aplicación. Además, puede automatizar muchos pasos de configuración posteriores a la actualización con el fin de simplificar aún más el proceso de actualización para los clientes. Nota: Esta función está disponible a los socios de salesforce.com aptos. Para obtener más información sobre el programa de socios, incluidos los requisitos de aptitud, visite el sitio Web www.salesforce.com/partners. 193 Envío de una actualización Acerca de las actualizaciones mediante envío Acerca de las actualizaciones mediante envío Puede enviar parches o actualizaciones principales. Los parches contienen solo subsanaciones de errores y mejoras menores. Por el contrario, las actualizaciones principales pueden incluir mejoras importantes y funciones nuevas que agregan componentes nuevos. El envío de actualizaciones se resume de un modo básico en los pasos siguientes: • • • • • Actualice el paquete gestionado instalado en la organización de un cliente desde la versión X a la versión Y. Seleccione una, muchas o todas las organizaciones de clientes para actualizar y seleccionar una versión concreta a la que se va a actualizar. Programe la actualización para que comience en una fecha y hora concreta. Consulte el progreso de las actualizaciones, cancele las actualizaciones en curso o vea el resultado de una actualización mediante envío. Junto con el envío, puede utilizar una secuencia de comandos de Apex después de la instalación para automatizar muchas configuraciones posteriores a la actualización que los clientes podrían haber realizado manualmente antes. Advertencia: El envío de una actualización significa que realiza cambios en la organización de un suscriptor sin su consentimiento explícito. Por ello, es importante planificar el proceso con antelación y extremar el cuidado. El envío de una actualización principal conlleva un mayor nivel de riesgo, ya que se podría dañar la funcionalidad que ya existe en la organización de un suscriptor. Esto se debe a que podría haber componentes nuevos en el paquete actualizado que no estén disponibles para los usuarios existentes del paquete o bien que sobrescriban las personalizaciones de los usuarios. Como el desarrollador de la aplicación, tiene la responsabilidad de proteger a los usuarios frente a cualquier impacto negativo que pudiera derivarse de la actualización. Se recomienda encarecidamente que piense bien en todas las posibles consecuencias de la actualización y haga todo lo necesario para evitar problemas. Cuando se envía una actualización principal, se recomienda dividir los cambios del paquete en dos categorías: 1. Mejoras en las funciones existentes a las que los usuarios ya tienen acceso: utilice una secuencia de comandos de Apex posterior a la instalación para asignar de forma automática los componentes relevantes a los usuarios existentes. De este modo, se asegurará de que todos los usuarios actuales del paquete pueden seguir utilizándolo sin que los administradores tengan que actuar. 2. Nuevas funciones que se incorporan por primera vez: no utilice una secuencia de comandos de Apex posterior a la instalación para asignar los componentes de forma automática. De esta manera, los suscriptores podrán decidir si quieren usar las funciones nuevas y cuándo quieren hacerlo. Tenga en cuenta las directrices adicionales que se enuncian a continuación a la hora de planificar una actualización mediante envío. • • • • • Evite los cambios en las reglas de validación, campos de fórmula y errores procedentes de los desencadenadores de Apex, ya que pueden afectar negativamente a las integraciones de suscriptores. No haga cambios visibles en los parches de un paquete. Si no se produce un cambio en el número de versión del paquete, no se notifica a los suscriptores de las actualizaciones mediante envío. Haga pruebas en el paquete actualizado en varios entornos, replicando en ellas todas las funciones relevantes de las organizaciones de los clientes, incluidas las ediciones, las personalizaciones, otros paquetes instalados y los conjuntos de permisos. Programe actualizaciones mediante envío en las horas de menor carga de trabajo de su cliente y fuera de la ventana de versión principal de salesforce.com para minimizar el impacto potencial del suscriptor. Notifique a los suscriptores con antelación sobre la programación de la actualización, sus consecuencias posibles y los pasos que deben efectuar. 194 Envío de una actualización Mejores prácticas en las actualizaciones mediante envío Mejores prácticas en las actualizaciones mediante envío Actualización mediante envío es una de las funciones más potentes que proporcionamos a nuestra comunidad de socios. Gracias a ella podrá actualizar a sus clientes aunque es imprescindible que lo haga con precaución. Si hace una actualización mediante envío sin haber efectuado la planificación y preparación adecuadas, el cliente podría dar muestras de desagrado. Para evitarlo, se recomienda encarecidamente seguir las mejores prácticas que se explican a continuación. Planificación, pruebas y comunicación • • • • • • Comunique, comunique y comunique. Puede suceder que sus clientes no hayan oído hablar de la función de actualización mediante envío. Algunos incluso pueden mostrarse muy recelosos sobre el envío de cambios a sus organizaciones. Haga contacto con ellos y explíqueles cómo funciona el modelo de Cloud Computing, cuáles son las ventajas de las actualizaciones que se realizan sin problemas, cuénteles que sigue unas mejores prácticas para que la actualización sea perfecta y descríbales el proceso y el compromiso adquirido con ellos con respecto a los plazos y el contenido de las actualizaciones. El éxito de este programa depende fundamentalmente de que haya una comunicación oportuna y exhaustiva. Mantenga informados a los clientes sobre el plan y los plazos establecidos para la actualización de modo que ellos sepan cuándo se van a efectuar las actualizaciones y las frecuencias de estas. Planifique cuándo quiere enviar las actualizaciones a las organizaciones de los clientes. Tenga en cuenta que la mayoría de los clientes no quiere que los cambios se lleven a cabo a final de mes, de trimestre, de año ni en los ciclos de auditoría. ¿Conoce si sus clientes tienen otros periodos críticos en los que no quieren que se efectúen cambios en su organización? Por ejemplo, podría haber determinadas horas en las que no tienen personal disponible para verificar cambios ni realizar ningún paso necesario después de la instalación. Programe las actualizaciones mediante envío para que se ejecuten a las horas de menor carga de trabajo, como puede ser a última hora de la tarde o por la noche. ¿Ha tenido en cuenta las zonas horarias? ¿Tiene clientes fuera de Estados Unidos para los que las horas de menor carga de trabajo sean otras? Puede programar las actualizaciones mediante envío para varias organizaciones de clientes a la vez. Para ello, es conveniente agrupar las organizaciones por zonas horarias en caso de que el horario de oficina difiera bastante dentro de la base de clientes. No programe actualizaciones mediante envío en los días próximos a los plazos de mantenimiento programados de Salesforce. En la mayoría de los casos, es aconsejable esperar de 3 a 4 semanas después de la instalación de una versión principal de Salesforce para realizar actualizaciones mediante envío principales. Realice pruebas y más pruebas. Debido a que es usted el que envía los cambios a la organización en lugar de que sea el cliente el que toma los cambios, hay una responsabilidad mayor de garantizar que la versión nueva de la aplicación funciona correctamente en todas las configuraciones de los clientes. Organización del envío en etapas • • • • No envíe los cambios a todos los clientes de una sola vez. Es importante asegurarse de que tiene recursos suficientes para manejar los casos de asistencia técnica en caso de que haya problemas. Además, es importante detectar los posibles problemas antes de que se vea afectada toda la base de clientes. Antes de nada, envíe las actualizaciones a sus propias organizaciones de prueba para confirmar que el envío se realiza correctamente. Después de la actualización mediante envío, inicie sesión en su organización de prueba para ver que todo funciona según lo previsto. Cuando proceda, haga el envío a las organizaciones de sandbox de sus clientes antes de hacerlo a sus organizaciones de producción. Durante una semana o más, deje que los clientes prueben y validen la actualización y corrijan los fallos en el entorno de sandbox antes de enviarla a sus organizaciones de producción. Inicialmente, envíe las actualizaciones a lotes pequeños de organizaciones de producción de clientes. Por ejemplo, si tiene 1000 clientes, envíe las actualizaciones a 50 o 100 clientes a la vez, al menos las primeras veces. Una vez que se encuentre tranquilo con los resultados, podrá actualizar los clientes en lotes mayores. La confianza del cliente es lo importante • Usted es el responsable de garantizar que su actualización no afecte negativamente a las organizaciones de los clientes. Para conseguirlo, evite realizar cambios en el paquete como, por ejemplo, cambios en las reglas de validación o en los campos 195 Envío de una actualización • • • Asignación de acceso a los componentes y campos nuevos de fórmula, que podrían romper las integraciones externas que realiza el cliente. Si por algún motivo tuviera que hacerlo, haga las pruebas pertinentes y comuníquelo al cliente con antelación suficiente. Tenga en cuenta que si envía una actualización con problemas, podrían verse afectados no solo los metadatos sino también los datos del cliente. Escriba una prueba de Apex sobre la instalación para realizar pruebas lógicas básicas con el fin de confirmar que la aplicación actualizada funciona según lo previsto. Si va a mejorar una función que ya existe, utilice una secuencia de comandos posterior a la instalación para que se asignen de forma automática los componentes nuevos en los usuarios existentes con permisos. Si va a agregar una función nueva, no realice la asignación automática de la función a los usuarios existentes. Informe sobre lo que va a hacer y determine junto con los administradores de la organización de cliente quiénes deberían tener acceso a la función nueva y el plazo de la implementación. Asignación de acceso a los componentes y campos nuevos Si la versión nueva de su paquete incluye componentes nuevos o campos nuevos en los componentes que ya existen, los usuarios actuales del paquete no tendrán acceso automático a estos tras la actualización. Esto puede impedirles usar las funciones nuevas agregadas o, como consecuencia, puede ser que las funciones más antiguas dejen de funcionar correctamente. De forma predeterminada, los componentes nuevos del paquete se asignan únicamente a los administradores. Tiene dos opciones para asegurarse de que todos los usuarios del paquete tienen acceso a los componentes y campos nuevos: Notificar a los administradores para que asignen los permisos adecuados a todos los usuarios del paquete Se recomienda esta opción para todas las funciones nuevas que introduzca. De esta manera, son los administradores los que deciden si van a poner las funciones nuevas a disposición de los usuarios y cuándo lo van a hacer. Asignar los componentes nuevos a los usuarios existentes de forma automática a través de una secuencia de comandos de Apex posterior a la instalación Se recomienda esta opción para la incorporación de mejoras en funciones que ya existen. De este modo, se asegurará de que todos los usuarios actuales del paquete pueden seguir utilizándolo sin que los administradores tengan que actuar. Para asignar automáticamente el acceso a los componentes nuevos, puede usar la siguiente estrategia: 1. Cree conjuntos de permisos nuevos que definan la configuración predeterminada de acceso a todos los componentes y campos nuevos. 2. Incluya los conjuntos de permisos nuevos en la nueva versión del paquete. 3. Escriba una secuencia de comandos de Apex posterior a la instalación para que se ejecute de forma automática en la organización del suscriptor después de la actualización del paquete. La secuencia de comandos debe realizar estas tareas. a. Para cada conjunto de permisos nuevo, elija un componente que ya existe cuya asignación de usuarios deba copiarse. b. Encuentre todos los perfiles con acceso a ese componente. c. Asigne los conjuntos de permisos nuevos a todos los usuarios incluidos en esos perfiles. Nota: No se pueden modificar los conjuntos de permisos predeterminados de todos los perfiles estándar. Por tanto, la secuencia de comandos posterior a la instalación desencadenará una excepción si intenta actualizar uno de estos conjuntos. Es importante crear un conjunto de permisos nuevo para asignar el acceso a los componentes nuevos en el paquete. Secuencia de comandos posterior a la instalación de ejemplo para una actualización mediante envío En esta sección se muestra una secuencia de comandos posterior a la instalación de ejemplo que automatiza la asignación de componentes nuevos a usuarios actuales de un paquete. Para obtener más información sobre la compilación de una secuencia 196 Envío de una actualización Secuencia de comandos posterior a la instalación de ejemplo para una actualización mediante envío de comandos de Apex posterior a la instalación, consulte Ejecución de Apex en instalación/actualización del paquete en la página 88. La secuencia de comandos de ejemplo se ha escrito para un escenario en el que un proveedor de software independiente (ISV) actualiza suscriptores a una versión de paquete nueva que contiene páginas de Visualforce nuevas y un conjunto de permisos nuevo que otorga acceso a esas páginas. Después de la actualización, los usuarios actuales del paquete no tendrán acceso a las páginas nuevas de forma predeterminada. La secuencia de comandos posterior a la instalación resolverá este problema mediante la identificación de los usuarios con acceso a las páginas de Visualforce en la versión antigua del paquete y les otorgará acceso a las páginas nuevas. La secuencia de comandos realiza las acciones siguientes: Obtiene el Id. de las páginas de Visualforce en la versión antigua del paquete. Obtiene los conjuntos de permisos con acceso a esas páginas. Obtiene la lista de perfiles asociados a esos conjuntos de permisos. Obtiene la lista de usuarios con esos perfiles asignados. Asigna el conjunto de permisos en la paquete nuevo a esos usuarios. • • • • • global class PostInstallClass implements InstallHandler global void onInstall(InstallContext context) { { //Get the Id of the Visualforce pages List<ApexPage> pagesList =[SELECT Id FROM ApexPage WHERE NamespacePrefix = 'TestPackage' AND Name = 'vfpage1']; //Get the permission sets that have access to those pages List<SetupEntityAccess> setupEntityAccessList = [SELECT Id, ParentId, SetupEntityId, SetupEntityType FROM SetupEntityAccess where SetupEntityId IN:pagesList]; Set<ID > PermissionSetList = new Set<ID> (); for(SetupEntityAccess sea : setupEntityAccessList){ PermissionSetList.add(sea.ParentId)}; List<PermissionSet> PermissionSetWithProfileIdList = [SELECT id,Name,IsOwnedByProfile,Profile.Name, ProfileId FROM PermissionSet where IsOwnedByProfile = true AND Id IN :PermissionSetList ]; //Get the list of profiles associated with those permission sets Set<ID> ProfileList = new Set<ID> (); for(PermissionSet per : PermissionSetWithProfileIdList){ ProfileList.add(per.ProfileId); } //Get the list of users who have those profiles assigned List<User> UserList =[SELECT id FROM User where ProfileId IN :ProfileList ]; //Assign the permission set in the new package to those users List<PermissionSet> PermissionSetToAssignList = [SELECT id,Name FROM PermissionSet where Name='TestPermSet' AND NamespacePrefix = 'TestPackage']; PermissionSet PermissionSetToAssign = PermissionSetToAssignList[0]; Set<ID> UsersSet = new Set<ID> (); for(User us : UserList){ PermissionSetAssignment psa= new PermissionSetAssignment(); psa.PermissionSetId = PermissionSetToAssign.id; psa.AssigneeId = us.id; UsersSet.add(us.id); } } } // Test for the post install class @isTest private class PostInstallClassTest { 197 Envío de una actualización Limitaciones conocidas en las actualizaciones mediante envío @isTest public static void test() { PostInstallClass myClass = new PostInstallClass(); Test.testInstall(myClass, null); } } Limitaciones conocidas en las actualizaciones mediante envío Las limitaciones conocidas siguientes condicionan el envío de actualizaciones: • • Los conjuntos de permisos no transfieren la configuración de la visibilidad de fichas. Por tanto, si la actualización requiere cambios en la configuración de fichas, no podrá implementarlos de forma automática con una secuencia de comandos posterior a la instalación. En su lugar, tendrá que notificar a los administradores para que ellos se encarguen de hacer el cambio. Se producen errores en la actualización mediante envío si el paquete contiene la marca de Visualforce que intenta acceder a la entidad OpenActivity. Por ejemplo, el código siguiente en el paquete provocará que la actualización mediante envío no se realice correctamente. <apex:outputLabel for="taskDate" value="{!$ObjectType.OpenActivity.fields.ActivityDate.label}" /> Como solución alternativa, no utilice la referencia global ObjectType para obtener la etiqueta de OpenActivity.ActivityDate mediante la especificación de la etiqueta del modo siguiente: <apex:outputLabel for="taskDate" value="Date" /> Programación de actualizaciones mediante envío Permisos de usuario necesarios Para actualizar un envío: “Cargar paquetes de AppExchange” Nota: Las versiones de parche y las actualizaciones mediante envío solo están disponibles para socios de ISV de Salesforce. Cuando haya creado una “versión de parche” en la Ayuda de Salesforce de su paquete, puede implementarla automáticamente a clientes mediante una actualización. Sugerencia: Salesforce.com recomienda el seguimiento de esta secuencia para actualizaciones de paquete de envío. 1. Envíe la actualización a sus organizaciones para poder ejecutar pruebas y solucionar problemas antes de enviarlo a los suscriptores. 2. Cuando esté listo y se haya coordinado con sus clientes en su proceso de gestión de cambios, actualice el envío a un pequeño número de organizaciones de clientes. Pruebe con las organizaciones de Sandbox en primer lugar si es posible. 3. Una vez esté cómodo con los resultados iniciales, actualice el envío a una base de clientes más amplia, según sus acuerdos con cada cliente. 4. Desapruebe la versión anterior de su paquete en su organización de desarrollo principal. Sustituya la versión en AppExchange si fuera necesario y actualice su configuración de Trialforce. 198 Envío de una actualización Programación de actualizaciones mediante envío 5. Si su actualización es un parche, después de distribuir correctamente la actualización en organizaciones del suscriptor, vuelva a integrar esos cambios en su organización de desarrollo principal. Para obtener más información sobre la combinación de parches en su organización de desarrollo principal, consulte Trabajo con versiones de parche en la página 190. Consulte “Mejores prácticas de actualizaciones mediante envío y versiones de parche” en la Ayuda de Salesforce para obtener más información. Para programar una actualización mediante envío: 1. Inicie sesión en su organización de desarrollo principal. 2. En Configuración, haga clic en Crear > Paquetes, haga clic en el nombre del paquete gestionado cuya actualización desee enviar. En la página de detalles del paquete, haga clic en la ficha Versiones y, a continuación, haga clic en Actualizaciones de envío. 3. Haga clic en Programar actualizaciones mediante envío. 4. Seleccione una versión de paquete para enviar en la lista desplegable Versión de parche. Nota: No es posible enviar versiones beta. 5. Introduzca una Fecha de inicio programado que indique cuándo debe comenzar la actualización mediante envío. 6. En la sección Seleccionar organizaciones de destino, seleccione las organizaciones que reciben su actualización mediante envío. Las organizaciones que ya hayan recibido una actualización mediante envío para la versión de paquete seleccionada no aparecerán en esta lista. Puede seleccionar organizaciones: • • • • Al introducir un término que filtre en función del nombre o Id. de una organización. Los nombres pueden coincidir parcialmente, pero los Id. deben coincidir de forma exacta. Al seleccionar organizaciones de producción y Sandbox en la lista desplegable Organizaciones. Al seleccionar organizaciones que ya se han instalado en una versión concreta. Al hacer clic en organizaciones individuales o en las casillas de verificación Seleccionar todo y Anular todas las selecciones. Esta sección también incluye la siguiente información sobre la organización (en orden alfabético): Campo Descripción Versión actual La versión de paquete actual que ha instalado una organización. Id de la organización El Id. que identifica de forma única la organización en salesforce.com. Nombre de la organización Nombre de la organización. Al hacer clic aquí se muestra el historial de actualizaciones de la organización. Contacto principal Nombre del usuario que instaló el paquete. 7. Haga clic en Programar. Mientras una actualización mediante envío se está procesando, puede hacer clic en Cancelar para detenerla. En la página anterior de las actualizaciones mediante envío, la tabla enumera las actualizaciones mediante envío programadas más recientes del paquete. 199 Envío de una actualización Visualización de detalles de actualización mediante envío Visualización de detalles de actualización mediante envío Permisos de usuario necesarios Para ver los detalles de actualizaciones mediante envío: “Cargar paquetes de AppExchange” Nota: Las versiones de parche y las actualizaciones mediante envío solo están disponibles para socios de ISV de Salesforce. Para obtener información sobre una actualización mediante envío específica de su organización, en Configuración, haga clic en Crear > Paquetes, seleccione el nombre del paquete que desea ver y, a continuación, haga clic en actualizaciones mediante envío. Al hacer clic en el nombre de un Destino accede a la página de detalles de actualización mediante envío, que tiene información sobre el trabajo de envío y cada organización que se envía. La sección Detalles del trabajo tiene la siguiente información sobre la actualización mediante envío general (en orden alfabético): Campo Descripción Fecha de finalización Fecha y hora a las que terminó la actualización mediante envío. Ignorar fallos de la prueba de Apex Si se han ignorado los fallos de la prueba de Apex que pueden causar que la aplicación instalada no funcione adecuadamente. Programado por Nombre del usuario que inició la actualización mediante envío. Fecha de inicio La hora y fecha de inicio programado de la actualización mediante envío. Estado El estado de la actualización mediante envío, programada, en proceso, completada, cancelada o completado con fallos. Versión El número de versión del paquete que se ha enviado. En la sección Organizaciones, puede obtener una lista de todas las organizaciones que reciben una actualización mediante envío. Puede filtrar las organizaciones mediante el cuadro de búsqueda e introduciendo un término que filtre en función del nombre o Id. de una organización. Los nombres pueden coincidir parcialmente, pero los Id. deben coincidir de forma exacta. Desde la lista desplegable, también puede filtrar por estado de la actualización mediante envío. La lista contiene la siguiente información específica para cada organización (en orden alfabético): Campo Descripción Duración Cantidad de tiempo que tardó la actualización mediante envío. Tipo de fallo Enumera el tipo de fallo que se ha producido (si lo hay). Si la actualización mediante envío ha fallado, se ofrece una explicación posible en la sección contraíble. Si la actualización mediante envío no se ha realizado correctamente, haga clic en Reintentar para intentarlo de nuevo. Id de la organización El Id. que identifica de forma única la organización en salesforce.com. 200 Envío de una actualización Visualización del historial de actualizaciones de una organización Campo Descripción Nombre de la organización Nombre de la organización. Al hacer clic aquí se muestra el historial de actualizaciones de la organización. Inicio La hora y fecha de inicio programado de la actualización mediante envío. Estado El estado de la actualización mediante envío, programada, en proceso, completada, cancelada o completado con fallos. Visualización del historial de actualizaciones de una organización Permisos de usuario necesarios Para ver el historial de actualizaciones mediante envío: “Cargar paquetes de AppExchange” Nota: Las versiones de parche y las actualizaciones mediante envío solo están disponibles para socios de ISV de Salesforce. Para obtener más información sobre una organización específica que haya recibido actualizaciones mediante envío, en Configuración, haga clic en Crear > Paquetes, seleccione el nombre del paquete que desea ver y, a continuación, haga clic en Destino. Al hacer clic en una organización de la lista de destino se ofrecen los siguientes detalles (en orden alfabético): Campo Descripción Versión actual La versión de paquete actual que ha instalado una organización. Id de la organización El Id. que identifica de forma única la organización en salesforce.com. Nombre de la organización Nombre de la organización. Contacto principal Nombre del usuario que instaló el paquete. Email de contacto principal La dirección de email del editor del paquete. Estado El estado de la actualización mediante envío, programada, en proceso, completada, cancelada o completado con fallos. En Historial de actualizaciones mediante envío aparece la siguiente información (en orden alfabético): Campo Descripción Acción Al hacer clic en Ver detalles vuelve a los detalles del trabajo de esa actualización. Fecha de inicio La hora y fecha de inicio programado de la actualización mediante envío. Estado El estado de la actualización mediante envío, programada, en proceso, completada, cancelada o completado con fallos. Versión El número de versión del paquete que se ha enviado. 201 Apéndices Apéndice A Desarrollo y distribución de paquetes no gestionados Los paquetes no gestionados se han utilizado siempre para distribuir proyectos de código abierto a desarrolladores o como una distribución única de aplicaciones que requieren personalización tras su instalación. No debería utilizar nunca paquetes no gestionados para la migración desde un entorno Sandbox a uno de producción. Para hacer esta migración, utilice el IDE de Force.com o la herramienta de migración de Force.com. Si utiliza Enterprise Edition, Unlimited Edition o Performance Edition, consulte la sección sobre “conjuntos de cambios” en la Ayuda de Salesforce. Consulte también: Componentes disponibles en paquetes no gestionados Componentes disponibles en paquetes no gestionados No todos los componentes se pueden incluir en paquetes para su distribución. En la tabla siguiente se muestran los componentes disponibles en un paquete sin gestionar, se indica cómo está incluido el componente en el paquete y si el componente permite el cambio de nombre automático. Incluido en paquete de forma explícita o implícita Los componentes se pueden agregar de forma explícita o implícita. Los explícitos deben incluirse directamente en el paquete mientras que los implícitos se agregan de forma automática. Por ejemplo, si crea un campo personalizado en un objeto estándar, debe agregar de forma explícita el campo personalizado al paquete. Sin embargo, si se crea un objeto personalizado y se agrega un campo personalizado, el campo se agregará de forma implícita al paquete cuando agregue el objeto personalizado. • De forma explícita: el componente debe agregarse de forma manual al paquete. • De forma implícita: el componente se agrega automáticamente al paquete cuando se agrega otro componente dependiente, normalmente un objeto personalizado. Cambio de nombre automático Salesforce puede resolver los conflictos de nombres automáticamente en la instalación. • No: si se produce un conflicto de nombres, se bloquea la instalación. • Sí: si se produce un conflicto de nombres, Salesforce puede cambiar opcionalmente el nombre del componente que se instala. 202 Desarrollo y distribución de paquetes no gestionados Componentes disponibles en paquetes no gestionados Componente Incluido en paquete de forma explícita Cambio de nombre automático o implícita Instantánea analítica De forma explícita Sí Clase de Apex De forma explícita No Razón de colaboración de Apex De forma implícita No En una extensión: De forma explícita Nuevo cálculo de colaboración de Apex De forma implícita Desencadenador de Apex No En un objeto estándar o de extensión: De No forma explícita En un objeto en el paquete: De forma implícita Aplicación De forma explícita No Botón o vínculo personalizado En un objeto estándar: De forma explícita No En un objeto personalizado: De forma implícita Campo personalizado En un objeto estándar: De forma explícita No En un objeto personalizado: De forma implícita Etiqueta personalizada De forma implícita No Objeto personalizado De forma explícita No Tipo de reporte personalizado De forma explícita No Configuración personalizada De forma explícita No Tablero De forma explícita Sí En una carpeta: De forma implícita Documento De forma explícita Sí En una carpeta: De forma implícita Plantilla de email De forma explícita Sí En una carpeta: De forma implícita Carpeta De forma explícita Sí Componente de la página de inicio De forma explícita No Formatos de página de inicio De forma explícita No Membrete De forma explícita Sí 203 Desarrollo y distribución de paquetes no gestionados Componentes disponibles en paquetes no gestionados Componente Incluido en paquete de forma explícita Cambio de nombre automático o implícita Vista de lista En un objeto estándar: De forma explícita Sí En un objeto personalizado: De forma implícita Formato de página En un objeto estándar: De forma explícita No En un objeto personalizado: De forma implícita Tipo de registro En un objeto estándar: De forma explícita No En un objeto personalizado: De forma implícita Reporte De forma explícita Sí En una carpeta: De forma implícita S-Control De forma explícita No Recurso estático De forma explícita No Tabulador De forma explícita No Traducción De forma explícita No Regla de validación En un objeto estándar: De forma explícita No En un objeto personalizado: De forma implícita Componente de Visualforce De forma explícita No Página de Visualforce De forma explícita No Alerta de email de flujo de trabajo De forma explícita No Actualización del campo de flujo de trabajo De forma explícita No Mensaje saliente de flujo de trabajo De forma explícita No Regla de flujo de trabajo De forma explícita No Tarea del flujo de trabajo De forma explícita No Consulte también: Los componentes se agregan automáticamente a paquetes 204 Desarrollo y distribución de paquetes no gestionados Creación y carga de un paquete no gestionado Creación y carga de un paquete no gestionado Utilice el procedimiento siguiente para cargar un paquete no gestionado. 1. Cree el paquete: a. b. c. d. Desde Configuración, haga clic en Crear > Paquetes. Haga clic en Nuevo. Rellene los detalles del paquete. Haga clic en Guardar. 2. Agregue los componentes: a. b. c. d. e. Haga clic en Agregar componentes (Add Components). En la lista desplegable, seleccione el tipo de componente. Seleccione los componentes que desea agregar. Haga clic en Agregar a paquete. Repita estos pasos hasta que haya agregado todos los componentes que desee al paquete. Nota: Algunos componentes relacionados se incluyen automáticamente en el paquete incluso cuando no puedan mostrarse en la lista Componentes del paquete. Por ejemplo, al agregar un objeto personalizado a un paquete, sus campos personalizados, formatos de página y relaciones con objetos estándar se incluyen de forma automática. 3. Haga clic en Cargar. Cuando haya cargado el paquete correctamente, recibirá un email con un vínculo de instalación. Espere unos momentos antes de hacer clic en el vínculo de instalación o de distribuirlo a otros, ya que podrían pasar unos minutos hasta que esté activo. 205 Apéndice B Comparación de licencias de usuario de ISVforce Introducción En las tablas siguientes se comparan los accesos a objetos, los permisos de usuario y las funciones, así como los límites en las organizaciones para las siguientes licencias: • • Administrador de Force.com: una licencia de Salesforce estándar con capacidad de personalización completa. La restricción contractual prohíbe crear, leer, actualizar y eliminar prospectos, oportunidades, productos, casos, soluciones y campañas. Una licencia de la plataforma Salesforce estándar con acceso a cuentas, contactos y objetos personalizados. La utilizan quienes no son administradores. En las tablas se utilizan los símbolos siguientes: • • • • • • • : incluido en la licencia C: acceso de creación en el objeto R: acceso de lectura en el objeto U: acceso de actualización en el objeto D: acceso de eliminación en el objeto $: disponible como un complemento por una tasa adicional X: incluido en la licencia Objeto al que se accede Objeto al que se accede Administrador de Force.com Force.com EE UE/PXE EE UE/PXE Cuentas CRUD CRUD CRUD CRUD Actividades, tareas CRUD CRUD CRUD CRUD CRUD CRUD CRUD CRUD Contactos CRUD CRUD CRUD CRUD Contenido CRUD CRUD CRUD CRUD Activos Campañas Calendario, Eventos Casos Contratos 206 Apéndice B: Comparación de licencias de usuario de ISVforce Objeto al que se accede Administrador de Force.com Force.com EE UE/PXE EE UE/PXE Objetos personalizados CRUD CRUD CRUD CRUD Documentos CRUD CRUD CRUD CRUD CRUD CRUD CR CR CRUD CRUD Asignaciones Ideas Prospectos Oportunidades Productos y listas de precios Preguntas y respuestas Presupuestos Soluciones Funciones del usuario Funciones del usuario Exportaciones de Jigsaw Administrador de Force.com Force.com EE UE/PXE EE UE/PXE $ $ $ $ $ $ $ Knowledge Envío de email masivo Móvil (completo) $ Móvil parcial Offline Visual Workflow $ Permisos de usuario Permisos de usuario Administrador de Force.com Force.com EE Crear y personalizar reportes Ejecutar reportes Crear y personalizar tableros Ver tableros* Compartir con usuarios 207 UE/PXE EE UE/PXE Apéndice B: Comparación de licencias de usuario de ISVforce Permisos de usuario Administrador de Force.com Force.com EE UE/PXE EE UE/PXE Límite de aplicaciones personalizadas 10 UNL 10 UNL Límite de fichas personalizadas 25 UNL 25 UNL Límite de objetos personalizados** 200 2.000 200 2.000 Inicio de sesión único Miembro de colas Chatter (grupos, archivos y perfiles) Escribir código Apex y Visualforce Enviar aprobaciones de flujo de trabajo * El usuario que ejecuta de un tablero debe ser usuario de Force.com o usuario de Force.com One App para poder ver el tablero. Otros tipos de licencias de Force.com no pueden ver los tableros que usan el administrador de Force.com. ** Límite restringido por contrato para Force.com One App y Chatter Plus. Otros límites de la organización Otros límites de la organización (agregados por usuario) Administrador de Force.com Force.com EE UE/PXE EE UE/PXE Almacenamiento de datos (MB) 20 120 20 120 Almacenamiento de archivos (MB) 612 612 612 612 Llamadas a API (por día y usuario) 1.000 1.000 1.000 1.000 208 Apéndice C Comparación de licencias de usuario de OEM Introducción En las tablas siguientes se comparan los accesos a objetos, los permisos de usuario y las funciones, así como los límites en las organizaciones para las siguientes licencias: • • • OEM incrustado: una licencia de Force.com completa con restricciones contractuales. Prohíbe crear, leer, actualizar y eliminar prospectos, oportunidades, productos, casos, soluciones, campañas y contratos. Portal de ISV: una licencia de sitio Web autenticada con opciones básicas de uso compartido de datos (no se permite el uso compartido manual con usuarios ni la participación en grupos compartidos). El usuario solo puede iniciar sesión a través de sitios de Force.com. Se recomienda utilizarlo cuando se espera que el número de usuarios sobrepase los 100.000. Portal ISV con uso compartido: una licencia de gestión del portal de clientes con capacidad completa para compartir. El usuario solo puede iniciar sesión a través de sitios de Force.com. Se recomienda utilizarlo cuando se espera que el número de usuarios no llegue a los 100.000 y sea necesario el acceso granular a la seguridad. Los usuarios finales no pueden desarrollar aplicaciones ni ampliar aplicaciones mediante la creación de otros objetos personalizados. Sin embargo, pueden tener acceso a otras aplicaciones siempre y cuando estas se vendan con una licencia incrustada o de ISVforce. Las licencias de portales no se pueden utilizar para el acceso a otras aplicaciones o funcionalidades excepto a aquella con la que se ha vendido la aplicación. En las tablas se utilizan los símbolos siguientes: • • • • • • : incluido en la licencia $: disponible como un complemento por una tasa adicional C: acceso de creación en el objeto R: acceso de lectura en el objeto U: acceso de actualización en el objeto D: acceso de eliminación en el objeto Objeto al que se accede Objeto al que se accede OEM incrustado Cuentas CRUD Actividades, tareas CRUD Activos Portal de ISV Portal de ISV con uso compartido CRU CRU 209 Apéndice C: Comparación de licencias de usuario de OEM Objeto al que se accede OEM incrustado Calendario, Eventos CRUD Portal de ISV Casos Portal de ISV con uso compartido CRU Contactos CRUD CRU Contenido CRUD R Objetos personalizados CRUD CRUD CRUD Documentos CRUD R R Asignaciones Ideas CRU CR CR CR Productos y listas de precios R R Preguntas y respuestas CR CR Soluciones R Funciones del usuario Funciones del usuario OEM incrustado Knowledge Portal de ISV Portal de ISV con uso compartido R Envío de email masivo Móvil (completo) $ Móvil parcial Offline Visual Workflow Permisos de usuario Permisos de usuario OEM incrustado Crear y personalizar reportes Ejecutar reportes Crear y personalizar tableros Ver tableros* 210 Portal de ISV Portal de ISV con uso compartido Apéndice C: Comparación de licencias de usuario de OEM Permisos de usuario OEM incrustado Portal de ISV Portal de ISV con uso compartido Límite de aplicaciones personalizadas 10 N/A N/A Límite de fichas personalizadas 100 100 100 Límite de objetos personalizados 400** 400 400 Compartir con usuarios Inicio de sesión único Miembro de colas Chatter (grupos, archivos y perfiles) Enviar aprobaciones de flujo de trabajo * El usuario que ejecuta de un tablero debe ser usuario de Force.com o usuario de Force.com One App para poder ver el tablero. Otros tipos de licencias de Force.com no pueden ver los tableros que usan el administrador de Force.com. ** El limite de 400 objetos personalizados se aplica a la oferta de aplicación principal. Los suscriptores no pueden crear sus propios objetos personalizados. Límites de almacenamiento Otros límites de la organización (agregados por usuario) OEM incrustado Portal de ISV Portal de ISV con uso compartido Almacenamiento de datos (MB) 20 0 2 Almacenamiento de archivos (MB) 612 0 0 Cada organización con OEM inscrustado recibe una capacidad mínima de almacenamiento de datos y de archivos. También recibe una cantidad de almacenamiento por usuario multiplicada por el número de usuarios si el resultado es mayor que la capacidad mínima de almacenamiento. Ejemplo del uso de almacenamiento de datos: una organización con OEM incrustado con 600 usuarios recibiría 12.000 MB (12 GB) de almacenamiento de datos, porque 20 MB por usuario, multiplicado por 600 usuarios es igual a 12.000 MB. Una organización con OEM incrustado más pequeña, por ejemplo, una con 20 usuarios, recibiría 1 GB de almacenamiento de datos, porque 20 MB por usuario multiplicado por 20 son solo 400 MB, que es menos del mínimo de 1 GB permitido a todas las organizaciones con OEM incrustado. Edición de Salesforce Almacenamiento de datos mínimo por organización Almacenamiento de archivos Asignación de mínimo por organización almacenamiento por licencia de usuario OEM incrustado 1 GB, más 5 MB para cada licencia de Socio Oro 11 GB 20 MB de almacenamiento de datos y 612 MB de almacenamiento de archivos Límites de la API En la siguiente tabla se enumeran los límites de solicitudes (llamadas) a la API totales durante un periodo de 24 horas para una organización con OEM incrustado: 211 Apéndice C: Comparación de licencias de usuario de OEM Edición de Salesforce Llamadas a la API por tipo de licencia Mínimo Máximo OEM incrustado 1000 5.000 1.000.000 Los límites se aplican al conjunto de todas las llamadas a la API que realice la organización en un periodo de 24 horas: los límites no se calculan según cada usuario individual. Cuando una organización supera un límite, todos los usuarios de la organización pueden tener temporalmente bloqueada la posibilidad de hacer llamadas adicionales. Las llamadas se bloquearán hasta que el uso de las 24 horas precedentes caiga por debajo del límite. 212 Glosario Los términos y definiciones siguientes describen conceptos y funciones clave de paquetes y aplicaciones: Aplicación Una colección de componentes, como fichas, reportes, tableros y páginas de Visualforce, destinados a una necesidad concreta del negocio. Salesforce proporciona aplicaciones estándar como Ventas y Centro de llamadas. Puede personalizar las aplicaciones estándar para que se adapten a su forma de trabajar. Además, puede combinar una aplicación y cargarla en AppExchange junto con otros componentes relacionados como campos, fichas y objetos personalizados. A continuación, puede hacer que la aplicación esté disponible para otros usuarios de Salesforce desde AppExchange. AppExchange AppExchange es una interfaz de colaboración de salesforce.com que le permite explorar y compartir aplicaciones y servicios para la plataforma Force.com. Beta, paquete gestionado En el contexto de los paquetes gestionados, un paquete gestionado beta es una versión previa de un paquete gestionado distribuido a una muestra del público al que va dirigido para que lo pruebe. Implementar Mover funcionalidad desde un estado inactivo a otro activo. Por ejemplo, al desarrollar funciones nuevas en la interfaz de usuario de Salesforce, debe seleccionar la opción “Implementado” para que la funcionalidad esté visible a otros usuarios. El proceso por el que una aplicación u otra funcionalidad se mueve desde el desarrollo a la producción. Mover componentes de metadatos desde un sistema de archivos local a una organización de Salesforce. Para las aplicaciones instaladas, la implementación pone a disposición de los usuarios de la organización los objetos personalizados en la aplicación disponible. Antes de implementar un objeto personalizado, solo está disponible para los administradores y para los usuarios que tengan el permiso “Personalizar aplicación”. Aplicación de gestión de licencias (LMA) Una aplicación AppExchange gratuita que permite realizar el seguimiento de prospectos y cuentas de ventas de todos los usuarios que descargan un paquete gestionado (aplicación) desde AppExchange. Organización de gestión de licencias (LMO) La organización de Salesforce que se utiliza para realizar el seguimiento de todos los usuarios de Salesforce que instalan el paquete. Una organización de gestión de licencias debe tener instalada la Aplicación de gestión de licencias (LMA). Recibe una notificación automáticamente cada vez que se instala o se desinstala su paquete, de manera que puede notificar fácilmente a los usuarios de las actualizaciones. Puede especificar cualquier organización con Enterprise Edition, Unlimited Edition, Performance Edition y Developer Edition como su organización de gestión de licencias. Para obtener más información, vaya a http://www.salesforce.com/docs/en/lma/index.htm. 213 Glosario Edición principal Edición importante de un paquete. En estas ediciones, los números mayor y menor de una versión de paquete aumentan hasta el valor seleccionado. Paquete gestionado Un conjunto de componentes de aplicación publicados como unidad en AppExchange y que están asociados a un espacio de nombre y, posiblemente, a una organización de gestión de licencias. Para admitir actualizaciones, un paquete debe estar gestionado. Una organización puede crear un único paquete gestionado que muchas organizaciones diferentes pueden descargar e instalar. Los paquetes gestionados se diferencian de los paquetes no gestionados en que algunos componentes están bloqueados, lo que permite la actualización posterior del paquete gestionado. Los paquetes no gestionados no incluyen componentes bloqueados y no se pueden actualizar. Además, los paquetes gestionados confunden ciertos componentes (como Apex) en las organizaciones suscriptoras para proteger la propiedad intelectual del desarrollador. Ampliación de paquete gestionado Cualquier paquete, componente o conjunto de componentes que agrega funcionalidad a un paquete gestionado. No puede instalar una extensión antes de instalar su paquete gestionado. Prefijo de espacio de nombres En un contexto de paquetes, un prefijo de espacio de nombres es un identificador alfanumérico de entre uno y 15 caracteres que distingue su paquete y su contenido de los paquetes de otros desarrolladores en AppExchange. Los prefijos de espacio de nombres no distinguen entre minúsculas y mayúsculas. Por ejemplo, ABC y abc no se reconocen como elementos únicos. Su prefijo de espacio de nombres debe ser totalmente único en todas las organizaciones de Salesforce. Mantiene su paquete gestionado bajo su control exclusivo. Paquete Un grupo de componentes y aplicaciones de Force.com que se han puesto a disposición de otras organizaciones a través de AppExchange. Utilice paquetes para agrupar una aplicación junto con los componentes relacionados de modo que pueda cargarlos conjuntamente en AppExchange. Dependencia de paquete Se crea cuando un componente hace referencia a otro componente, permiso o preferencia que se necesita para que el componente sea válido. Los componentes pueden incluir (sin limitar la generalidad de la lista siguiente): • Campos estándar o personalizados • Objetos estándar o personalizados • Páginas de Visualforce • Código Apex Los permisos y preferencias pueden incluir (sin limitar la generalidad de la lista siguiente): • Divisiones • Varias divisas • Tipos de registro Instalación de paquete La instalación incorpora el contenido de un paquete en su organización de Salesforce. Un paquete de AppExchange puede incluir una aplicación, un componente o una combinación de ambos. Después de instalar un paquete, es posible que necesite implementar componentes en el paquete para que esté disponible de un modo general para los usuarios de la organización. 214 Glosario Versión del paquete Una versión de paquete es un número que identifica el conjunto de componentes cargados en un paquete. El número de versión tiene el formato majorNumber.minorNumber.patchNumber (por ejemplo, 2.1.3). Los números mayor y menor aumentan con cada versión posterior. El patchNumber se genera y se actualiza solo para una versión de parche. Los paquetes sin gestionar no se pueden actualizar, de modo que cada versión de paquete es simplemente un conjunto de componentes que se distribuyen. La versión de un paquete tiene más importancia en el caso de los paquetes gestionados. Los paquetes se comportan de modo diferente según la versión. Los editores pueden utilizar las versiones de paquetes para hacer evolucionar los componentes de sus paquetes gestionados cómodamente publicando versiones posteriores de paquetes sin que dicho paquete estropee las integraciones de clientes existentes. Consulte también Parche y Organización de desarrollo de parche. Parche Un parche permite a un desarrollador cambiar la funcionalidad de los componentes existentes en un paquete gestionado, mientras garantiza a las organizaciones suscriptoras que no hay cambios de comportamiento visibles en el paquete. Por ejemplo, puede agregar nuevas variables o cambiar el cuerpo de una clase de Apex, pero no puede agregar, desaprobar o eliminar ninguno de sus métodos. Un Número de parche agregado a cada versión del paquete realiza un seguimiento a los parches. Consulte además Organización de desarrollo de parche y Versión del paquete. Organización de desarrollo de parche La organización en la que se desarrollan, se mantienen y se cargan las versiones del paquete. Las organizaciones de desarrollo de parche se crean automáticamente para una organización de desarrollador cuando solicitan crear un parche. Consulte también Parche y Versión del paquete. Versión de parche Una actualización menor a un paquete gestionado. Cada versión de parche tiene un número mayor a la del anterior. Publicador El publicador de un listado de AppExchange es el usuario u organización de Salesforce que ha publicado el listado. Actualización mediante envío Un método para distribuir actualizaciones que envía las actualizaciones de un paquete gestionado instalado a todas las organizaciones que han instalado el paquete. Suscriptor El suscriptor de un paquete es un usuario de Salesforce con un paquete instalado en su organización de Salesforce. Prueba Una prueba es una organización de Salesforce totalmente funcional que contiene una aplicación y todos los registros de muestra agregados por el editor para un paquete concreto. Permite que los usuarios experimenten una aplicación como usuario de solo lectura en AppExchange utilizando una interfaz de Salesforce conocida. Paquete no gestionado Un paquete que no se puede actualizar ni su desarrollador puede controlar. Actualización Una actualización de un paquete es el proceso de instalar una nueva versión. Salesforce admite actualizaciones para paquetes gestionados que no son beta. Carga La carga de un paquete en Salesforce ofrece una URL de instalación para que otros usuarios puedan instalarla. La carga también permite que tu paquete se pueda publicar en AppExchange. 215 Índice Índice A Actualización de paquetes 187 actualizaciones mediante envío detalles de organización 201 detalles de trabajo 200 programación 198 actualizar 135, 182 análisis de listas Instalaciones (Obtener ahora), reporte 129 Más información, videos y capturas de pantallas, reporte 131 Prospectos, reporte 129 Pruebas, demostraciones y capturas de pantalla, reporte 130 Recursos y promociones, reporte 130 Apex comportamiento en paquetes 191 efectos de la desaprobación 192 Apex dinámico compatibilidad con varias ediciones 47 API de REST acceso en Group Edition 45 acceso en Professional Edition 45 aplicación actualizaciones de parche (versión) 133 aplicaciones nativas 135 envío para aprobación de seguridad 119 opciones de instalación 113 optimización de la búsqueda 133 publicar 110 vender 110 Aplicación conectada control de acceso en 59–60 creación 55 crear 54 desinstalación 63 detalles 59 eliminación 58 empaquetado 58 gestión 60 instalación 59 modificación 58–60 monitoreo del uso 62 restricciones de direcciones IP para 59–60 URL de inicio 59–60 Aplicación de gestión de licencias terminología 139 uso 143 Aplicaciones carga 86, 205 aplicaciones nativas 135 APO asociar con cuenta de socio 110 crear perfil de proveedor 110 definición 108 APO (continuación) designar o cambiar 109 AppExchange ayuda personalizada 51 creación de paquetes 88, 90–93, 196, 198 desarrollo de documentación de aplicaciones 51 diseño de 52 marca 160–161 marca de email 162–163 paquetes en versión beta 77 proporcionar una prueba gratuita 164 tipos de versión de paquete gestionado 87 versiones de paquetes gestionados 87 AppExchange, descripción general 108 Asistencia al usuario 183 Asistencia para usuarios finales 183 Atributos 20 Ayuda personalizada aplicaciones de AppExchange 51 C Carga de paquetes 86, 205 Carga de paquetes en versión beta 78 Carga de parches 189 Chatter en paquetes 50 Checkout 114, 122–125 Checkout de AppExchange 114, 122–125 Ciclo de vida de desarrollo 2 comentarios 136 Compatibilidad con varias ediciones 47 Compatibilidad del suscriptor 184–186 Componentes 20 Configuración 141 Configuración de paquetes 81 Configuración de perfil 52 Conjuntos de permisos 52 control de acceso en aplicaciones conectadas 59–60 creación de inscripciones para acceso de OAuth y a API 180 creación de inscripciones usando la API 170 Creación de paquetes 86, 205 Creación de parches 189 creación de una aplicación conectada 54–55 cuenta de socio 132 D Dependencias 49 Desarrollo paquetes no gestionados 202 WSDL de socio 63 Descripción general 138 Desinstalación de paquetes 84 desinstalación de una aplicación conectada 63 216 Índice Diseño aspecto de Salesforce coincidente 51 E Ediciones 79, 140 Ediciones compatibles 138 eliminación de una aplicación conectada 58 empaquetado de una aplicación conectada 58 G gestión de acuerdos de licencia 137 Gestión de licencias descripción general 138 gestión de una aplicación conectada 60 Group Edition acceso a la API de REST 45 control de acceso 44 límites 43 paquetes 42–44, 46 uso de Apex 44 I iconos 135 ideas 136 idiomas 132 Implementación 81 industrias 132 Inicio de sesión 184–186 inscripción de proxy 180 Instalación 140 Instalación de paquete 79 Instalación de paquetes 79 instalación de una aplicación conectada 59 Intervalos de direcciones IP con aplicaciones conectadas 58 Intervalos de direcciones IP de lista blanca en aplicaciones conectadas 58 L licencias elegir configuración 121 y prospectos, configuración 127 Licencias campos modificables 150 detalles 147 modificación 149 modificación de propietario 149 lista agregar categorías 111, 118, 121 agregar una unidad de prueba 114, 125 análisis 128 definición 108 eliminado de la lista por Salesforce 135 lista (continuación) envío para aprobación de seguridad 119 precios 114 Logotipo 119 Logotipo del socio 119 M Marca 119 Marketing 151 Mejores prácticas 151 modificación de una aplicación conectada 58–60 monitoreo del uso de una aplicación conectada 62 N nombre de compañía 132 Nombre de dominio descripción general de la configuración 68 Núcleo de entorno activación del inicio de sesión único 73 adición de usuario vinculado 73–74 conectar una organización 69 desctivación del inicio de sesión único 74 modificar los detalles de la organización 72 visualización de los detalles de la organización 70 O Objetos SignupRequest 171 opinión escribir 136 modificar 132 optimización de la búsqueda 133 Organización de gestión de licencias asociación de un paquete gestionado 142 organizaciones vinculadas definición 108 vincular a APO 109 P Paquete actualizaciones mediante envío, programación 198 asociación con LMO 142 ciclo de vida 2 paquete gestionado cambiar 132 cambiar una lista 133 registrar 121 Paquetes acerca de 1, 20 asistencia al usuario 183 ayuda personalizada 51 carga 86, 205 Chatter 50 217 Índice Paquetes (continuación) componentes que se pueden incluir en paquetes 21, 31, 202 comportamiento del componente 25, 33 concepto 20 configuración 81 creación 86, 88, 90–93, 196, 198, 205 dependencias 49 desarrollo 20 desarrollo de documentación de aplicaciones 51 desinstalación mediante la API 85 detalles 144 diseño 19 disponibilidad de componentes 81 distribución 107 Ediciones 20 errores en la instalación 83 estado 20 gestionado 20 instalación de paquetes 48 instalación mediante la API 85 marca 160–163 modificación de propietario 145 modificación del gestor de prospectos 146 no gestionado 20 protección de la propiedad intelectual 64 secuencia de comandos de desinstalación 91–92 secuencia de comandos posterior a la instalación 88, 90, 196, 198 solución de problemas 83 terminología 20 versiones 146–147 Paquetes de ampliación 46 Paquetes en versión beta carga 78 desinstalación 84 Paquetes gestionados actualización 187 actualizaciones mediante envío 193–196, 198 beta 77 compatibilidad con varias ediciones 46–47 componentes que se pueden incluir en paquetes 21, 31, 202 comportamiento del componente 25, 33 configuración 81 disponibilidad de componentes 81 estado 20 Group Edition 42–44, 46 límites para Group Edition 43 límites para Professional Edition 43 planificación 20 prefijo de espacio de nombres 77 Professional Edition 42–44, 46 tipos de versión 87 versión de parche 190 versiones 87 Paquetes no gestionados componentes que se pueden incluir en paquetes 31, 202 comportamiento del componente 33 Paquetes no gestionados (continuación) desarrollo 202 parches 133 perfil de proveedor crear o modificar 110 y cuentas de socio 132 Perfiles personalizados creación 52 Permisos necesarios 138 plantilla de prueba descripción 102, 134 envío para aprobación de seguridad 119 vínculo a la lista 112 popularidad 134 Preguntas más frecuentes LMA 152 Professional Edition acceso a la API de REST 45 control de acceso 44 límites 43 paquetes 42–44, 46 uso de Apex 44 Propiedad intelectual protección 64 Propietario de licencia modificación 149 prospectos códigos de origen 126–127 escenarios de prospectos escogidos 118 y licencias, registros 127 Prospectos modificación del gestor de prospectos 146 prueba gratuita crear 102, 134 y unidad de prueba 136 Pruebas 76, 79 pruebas de AppExchange diferencia con Trialforce 182 publicar crear una unidad de prueba 114, 125 hacer que la lista sea pública 110 R recursos 101 Relaciones de la entidad 138 relevancia 134 Restricciones de direcciones IP para aplicaciones conectadas 59–60 revisión de seguridad envío de aplicaciones y plantillas de prueba 119 errores 104 requisitos 119 Revisión de seguridad aplicación móvil 100 cuestionario 97 paquete de extensión 101 218 Índice S Sandbox 132 servicios optimización de la búsqueda 133 publicar 110 vender 110 Servicios externos aprovisionamiento 63 trabajo con 63 SignupRequest, objeto 171 socio de consultoría Más información, videos y capturas de pantallas, reporte 131 Solicitud de inscripción crear 177 Solicitudes de inscripción página de inicio 177 visualización de detalles 177 Solución de problemas 83, 153 T Terminología Aplicación de gestión de licencias 139 testimonios 136 token de API solicitud 134 Trialforce aprovisionamiento de organizaciones de prueba 168 crear una organización de prueba 170, 178–179 inscripción 170, 178–179 instalación de otra aplicación 182 mejores prácticas 169 modificación de una prueba 169 Trialforce (continuación) personalización del formulario de HTML 168 proporcionar pruebas gratuitas en AppExchange 165 vincular plantilla a formulario HTML 167 Tutoriales 3 U unidad de prueba crear o modificar 114, 125 y prueba gratuita 136 URL de inicio en aplicaciones conectadas 60 uso de Apex dinámico 46–47 uso de paquetes de ampliación 46 V Valores predeterminados configuración 143 Ventas 151 Versiones de paquetes comportamientos diferentes según la versión de Apex 191 desaprobación de Apex 192 detalles 147 Versiones de parche carga 189 carga de parches 190 creación 189 creación de parches 190 W WSDL de socio 63 219