26/11/09

A vueltas con el Event Viewer

Recientemente me he tenido que pelear con la generación de instaladores MSI con WIX, o sea, que como diría Clint "He descubierto un mundo de dolor". Una de las cosas que hay que hacer es dar mensajes al usuario durante la instalación para que sepa cómo está funcionando todo. La información tiene que ir tanto en la ventana interactiva del instalador como en el Visor de Sucesos de Windows.

Pues bien, después de mucha pelea acabé con una CustomAction que incluye el siguiente código que hace las dos cosas a la vez:


private static void Log(Session session, string message)
{
EventLog.WriteEntry(
"MsiInstaller",
message,
EventLogEntryType.Information,
1000);

var recordInfo = new Record(3);
recordInfo[2] = message;
session.Message(
InstallMessage.ActionStart,
recordInfo);
}

Utilizo la Event Source MsiInstaller porque creo que siempre va a estar creada, con lo que se evita el problema de que el usuario no tenga permisos para crear la fuente de eventos.


Gracias a NETIKUS por explicar qué demonios es el Event Id y por qué tengo que poner un "1000". De hecho, si no ponemos el Identificador de evento, nos encontraremos con un extraño error que dice algo como:


The description for Event ID ([Event Id]) in Source ([Nombre_Fuente]) could not be found. 
It contains the following insertion string(s): ....

Esto ocurre porque los eventos del visor responden a una tabla con mensajes predefinidos con un formato específico, por ejemplo "No se pudo instalar el servicio %1" donde cada símbolo es sustituible por un parámetro. El formato del 1000 es simplemente "%1" así que podemos poner lo que queramos.

23/11/09

Novedades de CRM "5.0"

Como Marco ya lo ha explicado mejor que yo, me limito a copiar (y traducir) su post sobre novedades de CRM 5.0 en la conferencia PDC que se celebró la semana pasada.



  • Empaquetado de soluciones Se acabó lo de tener que manejar Plugins y personalizaciones por separado. Se incorpora un gestor de soluciones y versiones, muy útil para ISVs.

  • Soporte a Framework 4.0 Por primera vez, alineación de versiones entre CRM y .NET
    Mejora de Web Services: basados en WCF, dan soporte a REST y AJAX, para que sea más fácil interoperar con otros entornos.

  • Tipos de datos del sistema Esta me encanta... los datos ahora se expresan con clases nativas de .NET. Adiós a CrmNumber, por ejemplo. No sé si lo echaremos de menos...

  • Linq to CRM Sin tener que recurrir a terceros, librería de consultas integrada en el lenguaje.

  • Picklists compartidos Si hay un picklist que aparece en más de una entidad es incómodo tener que sincronizarlos a mano. Pues nada, solucionado en esta versión.

  • Code Sandbox Plug-Ins y actividades personalizadas de Workflow no sólo en en CRM On-premise, también en Hosted y CRM Online.


He aquí unos enlaces a los PPTs de las sesiones originales


Managing the Solution Lifecycle for xRM Applications

Gestión de soluciones, empaquetado y despliegue con xRM.
http://microsoftpdc.com/Sessions/PR31



Developing xRM Solutions using Windows Azure

http://microsoftpdc.com/Sessions/P09-07

Nuevas opciones de desarrollo sobre xRM y conexión con el mundo "de la nube" con Azure y el Service Bus.



Build a .NET Business Application in 60 Minutes with xRM and SharePoint

Desarrollo de una aplicación de línea de negocio en 60 minutos con xRM y SharePoint
http://microsoftpdc.com/Sessions/PR33



Ah, y aquí tenéis el post original de Marco Amoedo: Summary of xRM and CRM 5 at PDC09

19/10/09

Resumen de artículos xRM en MSDN

Este es un post recordatorio, o incluso auto-recordatorio. En esta dirección de MSDN se puede acceder a una serie de artículos de desarrollo sobre Dynamics CRM muy interesantes. Por un lado tenemos la Developer Ramp up Kit, que está muy bien para los primeros pasos en este entorno. Para temas más específicos, tenemos artículos avanzados sobre asuntos como despliegue de plug-ins, importación de datos, herramientas de depuración etc.

Muy recomendable.

02/09/09

Curso online de desarrollo sobre CRM


De nuevo hablando sobre mi mismo... pero si no, ¿para qué se inventaron los blogs? He fabricado mi primer Curso online de desarrollo sobre Dynamics CRM para MSDN.

Ojo, es un curso para desarrolladores, no se tratan temas funcionales de CRM. Es básico, pero también se hace algún “exceso”, como en el capítulo de Silverlight. Se puede descargar gratuitamente y está formado por

  • Fragmentos de código en C# (mucho)
  • Videos con voz monótona (unos pocos)
  • Capturas de pantalla (bastantes)
  • Texto (lo justito)

Si alguien está decidido a empezar a crear aplicaciones sobre CRM (o XRM) y ya tiene conocimientos creo que puede ser un buen punto de arranque.

Desde aquí os animo (¡venga!) a que lo descarguéis, lo probéis y lo critiquéis aquí mismo. Se hará lo que se pueda para corregir los problemas que haya o incorporar nuevos temas.

¡Salud!

07/08/09

La importancia de los SPNs

Leo en esta entrada del blog del equipo de CRM un artículo que resume de manera muy efectiva (no diré entretenida, tampoco hay que pasarse) un tema que más de una vez nos ha dado dolores de cabeza a la gente que trabajamos con Dynamics CRM: los Service Principal Names o SPNs. Atención porque me meto en el tenebroso mundo de los Administradores de Sistemas y puede haber heridos (empezando por mi orgullo).


Los SPNs son nombres que identifican unívocamente las instancias de un servicio. Son atributos del Directorio Activo, pero no están expuestos a través de la interfaz habitual. Permiten un proceso conocido como Delegación Kerberos, mediante el cual se pueden “pasar” credenciales de usuario entre distintos servidores. Entran en juego en un entorno CRM cuando tenemos distribuida nuestra instalación entre distintos servidores. Por ejemplo, si tenemos nuestro servidor de informes (SRS) y nuestro CRM en máquinas distintas. Cuando un usuario pide un informe a CRM, retransmite sus credenciales a SRS para que este lo sirva en su nombre. Si los SPNs no están configurados correctamente, obtendremos el temido mensaje


HTTP Error 401 - Unauthorized


Hay muchos casos en los que se crean automáticamente SPNs para los servicios. Por ejemplo, al instalar SQL Server se crea uno para la cuenta de usuario que ejecuta su servicio. Si luego se cambia este usuario, se pueden acabar duplicando las entradas. O también, cuando un pool de IIS se ejecuta con una identidad distinta a Network Service o sobre un número de puerto no estándar (no es ni el 80 ni el 443). También cuando se crean alias o cabeceras para el servicio. Por ejemplo, si queremos acceder a nuesto CRM con una dirección del estilo crm.miempresa.com

Vamos, que como veis hay un montón de casos en los que tendremos que pegarnos con las SPNs en un entorno mínimamente complejo de CRM. Las herramientas que podemos usar (con mucho respeto) son ADSI Edit y SetSPN están incluidas en las Support Tools, que tendremos que descargar por separado si trabajamos con Windows 2003. En Windows 2008 están preinstaladas en los controladores de dominio. En el artículo se comentan los siguientes escenarios específicos para CRM:

  • Uso de host header
  • Cambiar la identidad del pool de CRM
  • Cambiar la identidad del pool de CRM cuando hay otras aplicaciones en el servidor (i.e. Intranet)

Es un tema complejo y delicado sobre el que no puedo contar mucho más. Tan sólo redirigir (para empezar, a mi mismo) a recursos más o menos digeribles para legos como yo. Por ejemplo, esta Guía de Kerberos para el Administrador con Prisas (la traducción es mía). Suerte.

14/07/09

Nuevos aceleradores de Dynamics CRM

image

En la sesión inaugural de la conferencia Conferencia Mundial de Partners se ha mostrado una forma de integrar el-cada-vez-más-popular twitter como un canal más de comunicación con clientes. Hasta la gente más insignificante y con menos cosas que decir puede encontrarse en twitter. Por cierto, ¿os he contado que yo también estoy en twitter?

Twitter.com

Por otro lado, se fortalece la visión xRM con otros dos aceleradores para gestionar relaciones con partners y otro para publicación de entidades CRM en portales web. En breve aparecerán publicados en el sitio habitual de codeplex.

En resumen, los aceleradores son:

  • Social Networking Accelerator
  • Partner Relationship Management Accelerator
  • Portal Integration Accelerator

Más información de la noticia en este enlace a MS Press.

06/07/09

Un poco de autobombo

MVP_FullColor_ForScreen 

¡¡Me han nombrado MVP de Microsoft Dynamics CRM!! Ya sé que se ven poco las exclamaciones en este blog, pero la ocasión lo merece. Hace un tiempo que estaba rondando este gallardón - que me llena de orgullo y satisfacción. Tampoco se ven muchas rimas, por cierto. La verdad es que aparecer en la misma lista que Michael Höhne o Mitch Milam da un poco de vértigo por las expectativas creadas.

Y a continuación una lista no enumerada (ul) de gracias:

  • Gracias al equipo de Microsoft Ibérica (Luis Panzano, César de la Torre) que han apoyado mi candidatura una y otra vez.
  • Gracias a la gente de Spenta Consulting (Jordi, Gerard, David) por darme margen y libertad suficientes para dedicarle tiempo a la tarea. ¡Y por crear un buen entorno de trabajo donde estas cosas son posibles! Pronto veremos surgir más MVPs en Spenta como champiñones en otoño.

Parece que fue ayer que comenté que en el foro de CRM sólo había un MVP de habla española. Bueno, ¡pues ya hay dos! Creo que el premio me lo han dado precisamente por colaborar en los foros respondiendo preguntas y eso es lo que pienso seguir haciendo. Lo dedico a la Virgen de la Cabeza, a Alcobendas y a Pedro Almodóvar.