domingo, 2 de marzo de 2008

Autenticación en CRM 4.0 y 3.0

El sistema de autenticación de Microsoft Dynamics 4.0 y 3.0 es muy robusto. El acceso viene definido por dos procesos: autenticación contra AD (Active Directory) y autenticación contra usuario de Microsoft Dynamics.

Si el equipo desde que accedemos a Microsoft Dynamics CRM está dentro del dominio al que está asociado Microsoft Dynamics CRM el proceso de autenticación es totalmente transparente ya que no es necesario ningún tipo de formulario de logín previo al acceso. Simplemente, Microsoft Dynamics CRM comprueba que el usuario que está intentando acceder es un usuario de Microsoft Dynamics CRM con su licencia correspondiente.

Si accedemos desde fuera de del dominio de Microsoft Dynamics CRM el acceso es permitido previo usuario y password introducido en un formulario de autenticación.

En muchas ocasiones es necesario agrupar varios usuarios de una organización para que accedan a Microsoft Dynamics CRM como un único usuario. En mi experiencia personal en un cliente es la siguiente:

Una organización donde tienen montado un Sharepoint 2007 y tienen Microsoft Dynamics CRM embebido en un webpart. El acceso a Sharepoint viene definido por usuario de AD, pero el acceso a CRM es agrupado. Es decir, varios usuarios de Sharepoint pertenecen a único usuario de CRM. El problema es que cuando se accede a CRM desde Sharepoint, CRM coge el usuario con el que se accede a Sharepoint y lo que interesaba en este caso es el usuario fuera distinto. La solucón que encontramos para esta problemática era crea una nueva unidad organizativa de usuarios de CRM dentro de la unidad organizativa del AD creada para el acceso a Sharepoint. De esta manera, cuando se accede a Sharepoint como usuario "Jose" y posteriormente se accede a CRM (embebido en un web part en un site de Sharepoint) nos pide usuario y contraséña para que se valide con la nueva unidad organizativa de AD creada para los usuarios de CRM.

Postriormente, nos surge la pregunta de concurrencia de usuarios, ¿puedo acceder con un mismo usuario desde distintas ubicaciones a la vez? la respuesta es SI. El licenciamiento es nominal, lo que significa que tenemos acceso por cada usuario de AD que tiene una licencia asociada pero sin restricciones de número de accesos.

domingo, 17 de febrero de 2008

Web Services en los eventos(onload,onsave, onchange) de una entidad

Biiiiien!!!que dilema me supuso pensar que no podía obtener datos de un BD (Base de datos) desde los eventos onload, onsave y onchange (que sólo admiten JavaScript) que me ofrecen las entidades de Microsoft Dynamics CRM 4.0. y 3.0

Claro, lo primero que hice fue buscar por toda la red si existía alguna posibilidad de obtener datos de una BD a través de JavaScript, todo lo que encontré fueron respuestas negativas (JavaScript es código que se ejecuta en el cliente....y conectarte a una BD de un servidor IMPOSIBLE!!!). Pero derrepente vi la luz cuando pensé en web Service e indagué un poquito más en la web y encontré un post que utilizaba javaScript para llamar a un web service:

http://geeks.ms/blogs/marco/archive/2007/01/08/c-mo-implementar-bloqueos-de-registro-en-crm-3-0-servicios-web-jscript.aspx de Marco Amoedo (tiene un blog muy muy muy interesante para todo lo relacionado con CRM http://geeks.ms/blogs/marco/)

Bueno, ya sabemos como llamar a un web services desde JavaScript, ahora ya sólo nos queda crearnos un web services que se comunique con el origen de datos que queramos y ya tenemos todo solucionado!!!

sábado, 16 de febrero de 2008

Cargar un picklist desde BBDD

Sin duda, todos los que nos hemos o estamos pegándonos con Microsoft Dynamic CRM 3.0 nos ha surgido la duda de como cargar un picklist (típico combox de asp.net ) desde un origen de datos distinto al propio de CRM (BBDD, ficheros, etc,...). Y es que el SDK de CRM 3.0 NO nos proporciona métodos Add para cargar elementos en un picklist ¡es necesario modificar el xml que contiene la estrcutura de cada entidad!

La solución es la siguiente para Microsoft Dynamics CRM 3.0:

Ejemplo en vb.net para modificar el xm de la entidad cuenta (account)

1. Exportamos la entidad:





2. Realizamos los cambios del campo del picklist la entidad.

En este proceso hay que cargar en un xmldocument el xml que representa la entidad (el xml que hemos exportado con el procedimiento anterior). Posteriormente hay que modificar la sección del xml que representa el campo picklist que muestro acontinuación para añadir, quitar o modificar los elementos del picklist:



3. Importamos la entidad y la publicamos:

Public Sub importar_entidad()
Dim service As New CRMWebServer.CrmService

service.Credentials = System.Net.CredentialCache.DefaultCredentials
' Create the import request.
Dim importRequest As New CRMWebServer.ImportXmlRequest
' Tell the request where the temporary xml file is located.

'importRequest.Filename = temporyFileName
Dim customizationPath As String = Path.Combine(Environment.CurrentDirectory, "customization_original.xml")
' Pass the stream of customization XML to the import request.

Dim sr As New StreamReader(customizationPath)
Dim customizationXml = sr.ReadToEnd()
importRequest.CustomizationXml = customizationXml

' Tell the request that the Account entity is being imported.
importRequest.ParameterXml = _
"" + _
"" + _
"account" + _
"" + _
"" + _
""
' Execute the import.

Dim importResponse As CRMWebServer.ImportXmlResponse = CType(service.Execute(CType(importRequest, CRMWebServer.Request)), CRMWebServer.ImportXmlResponse)
'Publico la entidad
Dim publishRequest As New CRMWebServer.PublishXmlRequest
' Supply the request that is being published with the Bank Account and Safe Deposit Box. publishRequest.ParameterXml =

"" + _
"" + _
"account" + _
"" + _
"" + _
""
' Execute the request. Dim publishResponse As CRMWebServer.PublishXmlResponse = CType(service.Execute(CType(publishRequest, CRMWebServer.Request)), CRMWebServer.PublishXmlResponse)

End Sub


Pero en el nuevo SDK de Microsoft Dynamics CRM 4.0 parece ser que ya tenemos estos métodos Add tan deseados para cargar de una manera mucho más sencilla un picklist con datos de cualquier origen de datos...No lo he probado pero en próximos post seguro que puedo ofreceros algunos ejemplos!

miércoles, 30 de enero de 2008

Integración CRM en MOSS2007

Cuando hablamos de CRM 4.0 en muchas ocasiones lo hacemos en un contexto donde Sharepoint 2007 (MOSS 2007) también se haya presente y necesariamente surge la pregunta ¿Cómo se integran CRM 4.0 y MOSS 2007? Pues la solución es muy sencilla:

1. Embeber CRM 4.0 en el propio site creado en MOSS 2007 a traves de un web part de visualización de páginas web. Este proceso es realmente sencillo ya que CRM 4.0 es una aplicación web, y por tanto, todas las interfaces que nos ofrece CRM 4.0 están disponibles directamente desde una dirección web. Por ejemplo:


2. Embeber MOSS 2007 en cualquier página de CRM 4.0 a través de un iframe. Por ejemplo:

3. Crear un web part en MOSS2007 que utilice el motor de Microsoft CRM. Este el caso más engorroso, pero en ocasiones necesario cuando no nos interesa la interface de Microsoft Dynamics CRM y si su información. ¿Cuando es necesario? Por ejemplo, puede que queramos utilizar una lista BDC (Business Data Catalog) de MOSS y queramos aplicarle uná lógica interaccionando con la información de Microsoft Dynamics CRM a través de su SDK y además queremos que todo se muestre en un web part de MOSS para que lo puedan administrar los propios usuarios de MOSS. Lo mismo se puede aplicar en una página .aspx cualquiera ;.)

Un ejemplo CRMlistwebpart.