CRM v3C… Ya está disponible!

Leo en el blog del equipo del CRM que ya ha sido liberada la versión 3c de Microsoft CRM. ¡Es una gran noticia! Ya que esta versión nos permitirá trabajar con Microsoft CRM desde el nuevo Office 2007 y Windows Vista.

Esta nueva versión se trata en realidad de una actualización para el Cliente Outlook de Microsoft CRM para soportar Office 2007 y Vista, aunque también incluye nuevas funcionalidades, parches y mejoras. Incluso, según comentan en el blog, se han implementado en esta versión algunas de las funcionalidades y mejoras que estaban previstas originalmente para «Titan» (la siguiente versión de Microsoft CRM).

Entre las principales características a destacar:

  • Integración con el «Ribbon» de Office 2007
  • Almacén MAPI propio (no más ficheros PST)
  • SQL 2005 Express SP1
  • Todos los Hotfixes de cliente incluidos
  • Soporte para Windows Vista
    • UAC
    • Distribución del cliente con GPO
    • Internet Explorer 7
  • Además soporta…
    • Posibilidad de instalación limpiar de la v3C (sin necesidad de actualizar desde la anterior)
    • Actualización del cliente Outlook de la v3 a la V3c
    • Soporte para parches y hotfixes utilizando la tecnología MSP

Disponibilidad

Podéis descargar esta actualización desde Microsoft Downloads utilizando el siguiente enlace, Se trata de una imagen ISO de unos 200Mb

http://www.microsoft.com/downloads/details.aspx?FamilyId=740E1B3B-11C3-4AEF-B2E3-8309E0CF1BB0&displaylang=en

La única pega es que de momento solo está disponible la versión inglesa, el resto de la versiones en los distintos lenguajes están siendo preparadas e irán siendo liberadas a lo largo de Enero.

Versiones Soportadas

Con esta nueva actualización la lista de versiones de Windows y Office soportadas para los clientes pasa a ser la siguiente:

Windows 2000 SP4, Windows XP SP2, y Windows Vista

Office XP SP3(con windows 2000 y XP solo), Office 2003 SP2, y Office 2007

Próximas Releases

Actualización de los scripts para implementación con Terminal Services (primeros de Enero)

Actualización del Conector de e-mail para Exchange (incluye el asistente de despliegue de reglas) para trabajar con Exchange 2007
(primeros de enero)

 

En fin habrá que permanecer atentos. De momento voy a descargarme la versión inglesa y a probarla en mi máquina virtual de pruebas que está en Inglés 😉

Un saludo a todos, y Feliz Navidad!

Marco Amoedo

Faltan 3 Días – Compatibilidad de Microsoft CRM 3.0 con Office 2007

El equipo de Microsoft CRM tiene previsto liberar la descarga de la nueva release de Microsoft CRM 3.0 el próximo viernes 22 de diciembre. Esta release se llamará Microsoft CRM v3C, y estará disponible para descarga vía Microsoft Downloads y MSDN. Las principales cuestiones a tener en cuenta sobre esta re-release son:

  • Sólo afecta a los Clientes Outlook, es decir no modifica nada en el servidor.
  • Incluye el Roll Up 1 para los clientes.
  • Es totalmente compatible con las versiones soportadas hasta ahora de Windows y Office

Además en esa misma fecha está planeado que se libere también la actualización del Asistente para implementación de reglas sobre Exchange, para dar así compatibilidad con Exchange 2007. Ahora sólo nos queda esperar hasta el viernes y ver qué pasa.

MS CRM 3.0 Business Data Lookup Snap-ins: Nueva versión para Office 2007

Estos días también se han producido otras novedades con respecto a Office 2007 y Microsoft CRM 3.0. El Business Data Lookup Snap-in (BDL) que fue liberado en Febrero de 2006 como parte de la fase 1 del Programa Microsoft Dynamics Snaps, este componente permite a los usuarios buscar e insertar datos de Microsoft CRM 3.0 dentro de Outlook 2003, Excel 2003 y Word 2003. Y guardar los documentos creados con estas aplicaciones (excepto Outlook) dentro de Microsoft Dynamics CRM 3.0 como documentos adjuntos a los registros de entidades. Pues bien, la gente del proyecto de Microsoft Dynamics Snap SandBox en GotDotNet, ha liberado una pre-release de la segunda fase de este Snap-in que ofrece compatibilidad con Office 2007. Podéis descargarlo desde Microsoft Dynamics SandBox y utilizar su foro para cualquier comentario sobre el mismo.

Un saludo,

Marco Amoedo

Receta para un Callout – Callouts (III)

Hoy, por fin J, retomamos el tutorial sobre callouts para Microsoft CRM 3.0. Podéis ver las anteriores entregas aquí (Primera parte y Segunda Parte). En esta nueva entrega vamos a ver que necesitamos para crear un pre-callout y un post-callout, y los pasos necesarios para desplegarlos en el servidor de Microsoft CRM.


Paso 1 – Preparar el entorno de desarrollo


Microsoft CRM 3.0 está construido sobre .Net Framework 1.1 lo que nos obliga, en principio, a utilizar Visual Studio .Net 2003 para desarrollar un callout. Digo en principio, porque existe una plantilla de proyecto para Visual Studio 2005 que nos permitirá crear un Callout en Visual Studio 2005, de la que ya hablamos una vez.


Lo primero que tendremos que hacer para desarrollar un Callout es copiar la dll con la clase base para los callouts a nuestro entorno de desarrollo para posteriormente incluirla en las referencias de nuestro proyecto en Visual Studio. Esta dll se encuentra en el cd de instalación de Microsoft CRM <server cd>binassemblyMicrosoft.Crm.Platform.Callout.Base.dll . Nota: No será necesario copiar esta dll al servidor cuando despleguemos el callout, ya que está en la GAC del servidor.


Una vez realizado esto ya podemos crear una nueva clase en el proyecto que será la que contenga el código para nuestro(s) Callout(s), hablo en plural porque en realidad la clase puede implementar varios callouts (de distinto tipo) ya que cada evento de callout es un método. Así por ejemplo en una sola clase podremos implementar un callout para loe eventos postcreate, precreate, postupdate y preupdate, u otra combinación que necesitemos.


En la nueva clase que hemos creado tendremos que añadir la referencia al espacio de nombre donde se encuentra la clase base de la que heredaremos para crear nuestro callout. En C# using Microsoft.Crm.Callout; . Y luego hacer que nuestra clase herede de CrmCalloutBase. Algo tal que así:


….
using Microsoft.Crm.Callout;

namespace CalloutSample2
{
class CalloutComponent: CrmCalloutBase
{
//….
}

}


Paso 2 – Desarrollar nuestro Callout


Bueno, ahora en nuestra flamante clase sólo tenemos que redefinir el método(s) que queramos utilizar, y gracias al IntelliSense de Visual Studio, bastará con empezar a escribir public override y podremos seleccionar el tipo de callout que necesitemos. En el sdk podéis encontrar todas las firmas de métodos disponibles para los callouts. Así por ejemplo un método para precreate podría ser el siguiente.


public override PreCalloutReturnValue PreCreate(
CalloutUserContext userContext,
CalloutEntityContext entityContext,
ref string entityXml,
ref string errorMessage
)
{
//Codigo del callout, por ejempo comprobar duplicados

return PreCalloutReturnValue.Continue;
}


Fijaros que los pre-callouts deben devolver un valor del tipo PreCalloutReturnValue para determinar cómo continua el proceso de ejecución: continue (continua el procesamiento de los demás callouts), stop (detiene el procesamiento de los callout y pasa directamente a ejecutar la operación de la plataforma) y abort (aborta la ejecución del resto de callouts y de la operación de la plataforma, al usuario se le mostrará el mensaje de error definido).


Y un método para un postcreate podría ser este otro.


public override void PostCreate(
CalloutUserContext userContext,
CalloutEntityContext entityContext,
String postImageEntityXml
)
{
WriteToFile(String.Format(«PostCreate called.n
postImage = {0}»
,postImageEntityXml));
}


Importante: En el desarrollo de un callout debemos evitar…



  • Provocar bucles infinitos: Si desde un callout hacemos alguna operación sobre Microsoft CRM que provoque la activación del mismo callout caeremos en bucle infinito. Por ejemplo: Desde un callout de postupdate de una entidad llamar a los servicios web para cambiar algún objeto de esa misma entidad provocará un bucle infinito de disparo de callouts.
  • Escribir por consola: El código de un callout no puede escribir en la consola Console.Write ni utilizar llamadas de interop Pinvoke.
  • Desperdiciar memoria: Debemos liberar todos los recursos que utilicemos en nuestro código.

Paso 3 – Desplegar el Callout


Lo primero será crear (o editar) el fichero callout.config.xml que tendrá que ser copiado al directorio <installdir>Program FilesMicrosoft CRMserverbinassemblycallout.config.xml. Este fichero tendrá una etiqueta raíz callout.config, dentro de ella tendremos las etiquetas callout que permiten indicar una entidad y un evento para el que registraremos métodos que manejarán el evento de callout. Por ejemplo:


<callout.config version=»1.0″>
<callout entity=»account» event=»PreCreate»>

</callout>
<callout entity=»account» event=»PreSetState»>
….
</callout>
<callout entity=»account» event=»PostCreate»>

</callout>
</callout.config>


Dentro de una definición de <callout> … </callout> insertaremos los tags de subscription para registrar todos aquellos métodos de callout que serán llamados en el momento de dispararse el evento. En el tag de subscription debemos de establecer, como mínimo, los atributos assembly y class; que indican respectivamente el nombre de la dll y el nombre de la clase (incluyendo namespaces) que contienen al método apropiado. Fijaos que no tenemos que indicar el nombre del método ya que el nombre es conocido (herencia de la clase base).


Además opcionalmente podemos indicar, mediante el atributo onerror, que hacer en caso de que el método genere una excepción, si ignorarlo (ignore) o abortar (abort); aunque esto es sólo para los post-callouts esta atributo es ignorado en los pre-callouts (tomando el valor por defecto ignore) ya que estos tienen la obligación de devolver un PreCalloutReturnValue en el que indicar la opción a tomar. Así mismo, tenemos la posibilidad de indicar, mediante el atributo timeout, un valor de timeout en segundos para la ejecución del método, por defecto 60 y como máximo 600.


<callout entity=»account» event=»PreSetState»>
</subscription assembly=»CalloutAssembly.dll» timeout=»100″
class=»MyCallouts.PreSetStateAccount»>
</callout>


Para un PreCallout la configuración termina aquí, pero para un post-callout podemos indicar un par de cosas más. Los pre-values (valores previos a la operación) y los post-values (valores de la entidad después de ejecutar la operación) que necesitamos. Se indican en mediante un tag que contiene el nombre de esquema de un atributos (uno a uno) o el comodín @all (todos), como podemos ver en el siguiente ejemplo. Nota: En los pre-callouts no es necesario esto ya que se le pasan todos los nuevos valores disponibles y si necesitasen consultar los valores actuales podrían utilizar los servicios web o vistas filtradas.


<callout entity=»appointment» event=»PostUpdate»>
<subscription assembly=»CalloutAssembly.dll»
class=»MyCallouts.PostCreateApt»>
<prevalue>subject</prevalue>
<postvalue>subject</postvalue>
</subscription>
</callout>
<callout entity=»invoice» event=»PostAssign»>
<subscription assembly=»CalloutAssembly.dll»
class=»MyCallouts.PostAssignInvoice»>
<prevalue>billto_country</prevalue>
<postvalue>billto_country</postvalue>
<prevalue>shipto_line2</prevalue>
<postvalue>shipto_line2</postvalue>
<prevalue>billto_city</prevalue>
<postvalue>billto_city</postvalue>
<prevalue>shipto_line1</prevalue>
<postvalue>shipto_line1</postvalue>
</subscription>
</callout>


Ahora que ya tenemos el fichero de configuración en el directorio indicado, sólo nos resta copiar la dll que contiene nuestro callout al mismo directorio (solo nuestra dll no hace falta la de la clase base de callout). Una vez hecho esto debemos reiniciar nuestro servicio de IIS (iisreset en una consola) y reiniciar el CRM workflow service y el CRM bulk e-mail service. Y listo, nuestros callouts estarán preparados para ejecutarse cuando se produzcan los eventos para los que los registramos.


En caso de que hubiese algún problema en el fichero de configuración, este se mostraría en el registro de eventos del sistema en el log de Aplicación, así que conviene darle un vistazo para ver si ha ocurrido algo.


En próximas entregas…


Seguiremos viendo más a fondo detalles de los callouts como: llamadas a los servicios web e impersonación, serialización y deserialización, depuración… y lo que propongáis.


Un saludo,


Marco


PD: Espero no tardar tanto en volver a escribir, está siendo un final de año de infarto con cantidad de trabajo, y si no escribo más a menudo no es por falta de ganas si no de tiempo… Ahora mismo en Plain Concepts estamos embarcados en varios proyectos muy interesantes y que seguro que darán para muchos post. Un día de estos le diré a mi amigo Rodrigo Corral que me explique su truco para poder escribir en cantidad y calidad 😉


 


 

CRM 3.0 Update Rollup 1 ya disponible

Me entero en el blog del equipo del CRM, que desde el pasado Viernes está disponible para descarga pública el Update Rollup 1 de Microsoft Dynamics CRM 3.0. Esta actualización está compuesta por dos ficheros, uno para actualizar el Servidor de Microsoft CRM y otro los clientes Outlook.


Este Update es un conjunto de todos los hotfix disponibles hasta ahora para Microsoft CRM 3.0, en el artículo de la KB 922815 podéis encontrar una lista de todos los problemas que soluciona (que no son pocos). Pero conviene tener claro unas cuantas cosillas sobre el mismo:



  • Este Update Rollup 1 no incluye la compatibilidad con Office 2007 ni Windows Vista, para esto se liberará una re-release de Microsoft CRM 3.0 que no debería tardar demasiado (en principio a finales de este mes). Esta «nueva versión permitirá, entre otras cosas, integración con los ribbons de Office 2007 (ver imagen del blog ICU MSCRM), dejar de utilizar MSDE para pasar a SQL Server 2005 Express en los clientes Outlook offline (con las ventajas que ello conlleva), integración con Vista (gadgets, etc..), integración con Exchange 2007 (soporte para seguimiento de mensajes de voz), etc. Habrá que permanecer atentos.
  • Las personalizaciones realizadas en una instalación de CRM sin Update Rollup 1 no pueden ser importadas en una versión que lo tenga, y viceversa. Esto se debe a que al instalar el Update pasamos a otro número de versión con lo que los ficheros de personalizaciones dejan de ser compatibles.
  • Hay una serie de hotfix incluidos en el Update Rollup 1 que necesitan ser configurados mediante claves del registro, en el artículo de la KB 922815 (sección Registry Information) tenéis más información.

Además de la liberación del Update Rollup 1, hay una serie de novedades a las que tendremos que permanecer atentos: Informe sobre optimización del rendimiento de Microsoft CRM 3.0 (fecha estimada el 15 de este mes), y la re-release de compatibilidad con Vista y Office 2007 (finales de este mes, aunque seguro que acabará siendo en Enero).


Un saludo,


Marco Amoedo


PD: Espero tener más tiempo esta semana que las anteriores y poder seguir con la serie de artículos sobre Callouts y algunas cosillas más.