Desarrollo entre CRM 2011 y SharePoint 2010

Hola.

Cada vez más clientes tanto de SharePoint 2010 como de CRM 2011 comienzan a utilizar ambos productos conjuntamente. Son dos productos totalmente complementarios que ayudan a integrar la visión de gestión de negocio global de CRM con la gestión particular de tareas y acciones sociales de los empleados que provee SharePoint. Además, la mayoría de los clientes quieren sacarle el máximo potencial a ambos productos por lo cual o integran sus customizaciones o hacen un plan de desarrollo de ambos para que la interoperabilidad sea perfecta.

Entonces cuando la integración o desarrollo de nuevas aplicaciones entre productos comienza se encuentran que desde las aplicaciones de CRM 2011 basadas en .NET 4.0 aparece el siguiente mensaje al acceder al modelo de objetos de SharePoint: 

¿Que es lo que ha pasado?

Muchos clientes creen que ambos productos ejecutan en la misma versión de .NET pero por desgracia no es así. CRM 2011 está construido en .NET 4.0 y SharePoint 2010 esta construido .NET 3.5 SP1 (evolución/extensión de .NET 2.0).

La forma de atajar la integración entre productos es muy sencilla, tenemos dos maneras:

  • Integración mediante Web Services. 

Directamente instanciar una conexión al asmx que queráis usar de SharePoint y mediante comunicación de mensajes SOAP hacer operaciones CRUD sobre SharePoint. Todos los Web Services disponibles en el producto están referenciados en el siguiente enlace https://msdn.microsoft.com/en-us/library/ee705814.aspx . Por desgracia sus operaciones están muy limitadas comparado con el modelo objeto de servidor

  • Integración mediante el nuevo modelo manejado de objeto cliente de SharePoint 2010.

SharePoint 2010 permite consumir datos desde una aplicación cliente .NET sin necesidad de Web Services mediante el modelo de objeto cliente. Es casi tan rico como el modelo de objetos de servidor de SharePoint y bastante fácil e intuitivo de usar. Tan sólo tenéis que referenciar las dlls Microsoft.SharePoint.Client, Microsoft SharePoint.Client.Runtime en el proyecto en cuestión y compilar en modo .NET 4.0 (el modo .NET 4.0 client no es compatible) . Para más información  https://msdn.microsoft.com/en-us/library/ee537247.aspx

Viceversa también ocurre lo mismo, Solución de SharePoint instanciando dlls de CRM (llamarías desde 3.5 a 4.0) para ello deberías de usar Integración mediante Web Services de CRM. Para más información https://msdn.microsoft.com/en-us/library/gg334357.aspx 

Para más información sobre integración de SharePoint 2010 y CRM 2011 os recomiendo la siguiente Charla del Tech-Ed Europe 2010

https://channel9.msdn.com/Events/TechEd/Europe/2010/OFS218

Gracias.

Un saludo.

Héctor Calvarro Martín. SharePoint Dev/Core. Microsoft Support Escalation Engineer for EMEA