18/3/09

Extendiendo el eService Accelerator

Estos últimos días me he estado peleando ocupando de instalar y extender el acelerador de CRM que más coincide con la funcionalidad del proyecto CSP. El eService Accelerator es una extensión de CRM que permite "abrir" nuestro CRM publicando una selección de funcionalidades en una web al estilo portal público o extranet. Aquí nuestros clientes (o ciudadanos) pueden acceder a información o aportarla en tareas como:

  • Registrarse como usuarios del portal - Contacto
  • Realizar preguntas o reclamaciones - Caso
  • Programar visitas o servicios - Actividad de Servicio
  • Consultar la base de conocimiento - Artículos de la Knowledge Base

Además, esta plataforma inicial es fácilmente ampliable, de manera que si una empresa quisiera, por ejemplo, dar acceso al autoservicio de presupuestos para clientes, lo podría hacer publicando la entidad Oferta. Un conjunto de controles UserControl de ASP.NET permiten a un equipo de desarrollo añadir esta funcionalidad con poco esfuerzo.

El proceso de instalación del eService es bastante sencillo, aunque hay una serie de problemas menores que mejor no tener que encontrarse una segunda vez. Los comparto aquí por si sirven de algo. La parte de personalización y ampliación se queda un poco corta en explicaciones, así que también pondré mi granito de arena.

Instalación

Hay un pequeño bug en la manera como la consola de eService almacena la configuración. El instalador de eService genera una entidad personalizada eServiceConfiguration que contiene un solor registro con los parámetros de configuración de nuestra instalación. Pues bien, el código de eService busca por nombre este registro, y este nombre tiene que ser exactamente eServiceConfig_V1. Para encontrar este registro haremos una búsqueda avanzada, ya que la entidad no se incluye por defecto en el SiteMap.
  • Click en Herramientas - Búsqueda avanzada
  • En el desplegable de entidad, escoger eService Configuration
  • Pulsar el botón de búsqueda
  • Doble click en el único elemento que debe haber (si hay más de uno es que hemos hecho algo mal en la importación)
  • Se abre el registro, rellenar todos los campos necesarios

Os recomiendo crear un acceso directo por si tenemos que volver aquí.

Además de cambiar el nombre, tendremos que rellenar todos los campos de esta entidad: SmtpServer, SmtpPassword, Default Subject. Aquí encontramos también el usuario que va a identificar al portal de eService para CRM. Este usuario debe tener los permisos exactos (ni más ni menos) para realizar las tareas de eService:

  • Read/Write/AppendTo en contact
  • Read/Write/AppendTo en account
  • Read/Write/AppendTo en activity
  • Read/Write/AppendTo/Assign To en case
  • AppendTo en Subject
  • Read en eServiceConfiguration
  • Read en Metadata

Os recomiendo que creéis un rol específico para este usuario. El usuario, además, debe tener cumplimentado el atributo internalemailaddress.

La base de datos de Membership (eServiceMembership) tiene que tener permisos de lectura para el usuario de identidad del pool donde se esté ejecutando el portal. En micaso este usuario es NT Autority\Network Service.

Editar el Workflow de Sign-up, que es el responsable de enviar un correo al usuario que acabamos de registrar en el portal. El email contiene un enlace a la página createuser.aspx que debe tener la base correcta, algo así como http://emp.com/eservice/createuser.aspx?id=x

Ampliación

La forma de añadir nuevas entidades a eService es (por decirlo suavemente) un poco incómoda, ya que la lista se encuentra hardcoded en el código de la página EntityList. Por otro lado, en la parte de código fuente, el proyecto que nos proporcionan no es de tipo Web Application Project, sino Web Site. Sin embargo, el modo de desplegar la consola de eService implica copiar su dll en la carpeta bin de CRMWeb. Como consecuencia, tendremos que fabricar un nuevo proyecto de tipo Web Application Project, copiar las páginas y usar la opción Convertir a Aplicación Web.

Para crear una nueva página que dé soporte a una nueva entidad, el proceso sería el siguiente:

  • Añadir el nombre de la entidad a la lista de EntityList.aspx.cs
  • Crear una nueva página aspx
  • Añadir EntityEditor.ascx y configurar su EntityName
  • Si queremos que edite, rellenar EntityId

2 comentarios:

Trovomenace dijo...

He seguido todos tus pasos y tengo un mensaje de error como este: Could not find any resources appropriate for the specified culture

Daniel Sabater dijo...

Vaya, pues no das muchas pistas de dónde aparece el error. Parece que es un error que tiene que ver con un fichero de recursos .resx que no contiene una clave. ¿Estás tratando de traducir el acelerador? Se me ocurre.