CRM 2011: Expiración de la sesión en autenticación basada en claims (IFD)

30 04 2011

En una instalación de CRM 2011 con autenticación basada en claims (el antiguo IFD) a menudo nos sucede que al cabo de tener una sesión cliente abierta sin actividad se nos muestra el siguiente mensaje:

Esto sucede cuando expira el token de seguridad. Si pulsamos la opción ‘Iniciar sesión’ se nos muestra el mensaje:

Según la guía de instalación de IFD para CRM 2011 esto es debido a que el tiempo de vida por defecto del token de seguridad para la autenticación basada en claims usando ADFS 2.0 es de 60 minutos. CRM 2011 está configurado para que muestre este mensaje 20 minutos antes de que el token expire. Esto puede suponer una molestia para el usuario que debe disponer del acceso a CRM abierto pero puede tener muchos ratos de espera.

En el mismo documento de instalación del IFD se nos explica cómo podemos aumentar el valor por defecto del tiempo de vida del token (por defecto a 60 minutos) por otro valor superior como por ejemplo 480 minutos (8 horas) con lo cual el mensaje de CRM 2011 no aparecerá hasta 20 minutos antes de ese tiempo. Os transcribo a continuación el proceso descrito en ese documento (en inglés). El proceso debe ejecutarse en el servidor donde tengáis el ADFS 2.0 configurado y debe ejecutarse con PowerShell:

1. Abrir Windows PowerShell

2. Añadir el snap-in de Microsoft Dynamics CRM Windows PowerShell:

PS > Add-PSSnapin Microsoft.Adfs.PowerShell

3. Configurara el tiempo de vida del relying party token:

PS > Get-ADFSRelyingPartyTrust -Name:"relying_party"
PS > Set-ADFSRelyingPartyTrust -TokenLifetime 480

donde:

relying_party es el nombre del relying party que se haya creado.

Anuncios




Extreme Microsoft Dynamics CRM 2011 Prague – Presentaciones

25 04 2011

En el blog CRM-Spain, publicado por nuestro colega Javier Lopez, hoy ha publicado un artículo referente al evento de Dynamics CRM en Europa “Extreme 2011” celebrado en Praga. En concreto nos muestra los link proporcionados por Microsoft para descargar las presentaciones. Muy recomendable!!!. Podéis encontrar el artículo en:

http://crm-spain.blogspot.com/2011/04/extreme-microsoft-dynamics-crm-2011.html





CRM 2011: Cambiar logo superior

22 04 2011

Aunque probablemente más de uno ya lo habrá localizado con el Developer Tools de IE, para cambiar la imagen superior de CRM 2011 donde se muestra el logo de Microsoft Dynamics CRM, debemos substituir la imagen siguiente por la que nos interese:

<directorio MSCRM CRMWeb>\_imgs\CRMMastheadLogo.png

De este modo podemos personalizar el aspecto de la página principal de CRM 2011 como se muestra en la siguiente imagen:

Tan sólo comentar un par de detalles:

1. La imagen que substituyamos debe tener unas dimensiones de 140x17x256

2. El fondo de la imagen debe tener transparencia pues al redimensionar la ventana de CRM 2011 puede superponerse con al background azul de la derecha





CRM 2011: Mostrar formulario en función del valor de un picklist

22 04 2011

La posibilidad de crear varios formularios para una misma entidad y su visualización en función de los roles del usuario abre un mundo de posibilidades. Sin embargo, muchos desarrolladores se preguntan inmediatamente si es posible mostrar un formulario u otro en función del valor de un atributo de la entidad. Así por ejemplo, nos puede interesar que al abrir un registro, se muestre un formulario u otro (todos ellos disponibles para el role del usuario) en función del valor de un picklist.

Pues bien, a continuación os describo un pequeño desarrollo que nos permitirá abrir un registro en un formulario u otro en función del valor de un picklist. Antes de mostrar el desarrollo es importante tener en cuenta que:

1. Cuando en una entidad un usuario tiene disponibles varios formularios por su role, CRM 2011 siempre mantiene el último formulario seleccionado. Así por ejemplo, si disponemos de dos formularios Form1 y Form2 y, al abrir un registro seleccionamos el Form2, al abrir un nuevo registro o al crear uno nuevo, se nos mostrará con el Form2

2. Los formularios que queremos mostrar en función del valor de un atributo deben estar todos disponibles para el role de los usuarios que accederán a los registros de la entidad

3. Al seleccionar por código un formulario u otro debemos ocultar el selector de formularios ya que si no, el desarrollo perdería su gracia ya que, a pesar de mostrar el formulario correcto el usuario podría cambiar a otro formulario

4. Al cambiar de formulario por el selector de formularios, si se ha realizado algún cambio en los valores de los atributos se nos muestra un mensaje de si queremos guardar antes de cambiar de formulario. Por tanto, nuestro desarrollo deberá contemplar la opción de ocultar el selector de formulario para que tan sólo se pueda cambiar de formulario al guardar y en función del valor del atributo

5. Debido al punto 1, cuando el usuario entre en un registro en el que se muestre por ejemplo el Form2, cuando entre en un registro que debe mostrar el Form1 se producirá una primera carga del registro con el Form2 e inmediatamente se cargará el registro en el Form1. Esto producirá un efecto de ‘flicker’ que puede no ser del todo ‘agradable’

6. Cada formulario definido en una entidad dispone de sus propias librerías y funciones por tanto, si queremos realizar un desarrollo común hay que crearlo en un webresource y adjuntarlo como librería en todos los formularios que definamos

Dicho esto, vemos a continuación el desarrollo que nos ha de permitir abrir un formulario u otro en función del valor de un atributo. En el siguiente ejemplo se ha creado el siguiente entorno:

1. Se ha creado una nueva entidad Test con tres atributos: Name (string), Select Form (picklist) y Test Field (string)

2. En el picklist de SelectForm se han creado dos valores 1-Form1 y 2-Form2

3. Se han definido dos formularios Form 1 y Form 2. En el Form 1 se muestran los tres atributos. En el Form 2 solo se muestra el atributo Name y el Select Form

4. Se ha definido un webresource new_OnLoad_Test de tipo JavaScript que se ha añadido como librería en el Form 1 y en el Form 2 (hay que tener en cuenta que cada formulario utiliza sus librerías y funciones!!!). El código de la librería es:


function showFormItems()
{
var lblShow = "Form1";
// Si el valor del picklist no se corresponde con el formulario seleccionado, lo cambia
if (Xrm.Page.getAttribute("new_selectform").getValue() == 2)
lblShow = "Form2";
// Cambia de formulario si no se corresponde con el que queremos mostrar para el valor del picklist
if (Xrm.Page.ui.formSelector.getCurrentItem().getLabel() != lblShow)
{
var items = Xrm.Page.ui.formSelector.items.get();
for (var i in items)
{
var item = items[i];
var itemId = item.getId();
var itemLabel = item.getLabel();
if (itemLabel == lblShow)
{
item.navigate();
}
}
}
// Oculta el selector de formularios
document.getElementById("crmFormSelector").style.display = "none";
}

5. Se ha añadido como función asociada al OnLoad la función showFormItems

Una vez configurado todo lo anterior podemos comprobar que al crear un nuevo formulario con el valor del picklist Form1, siempre se abrirá el registro con el formulario Form 1 y lo mismo para otro registro con Form2, para el cúal se abrirá el formulario Form 2.

Al abrir el Registro con Form1, se abrirá con el formulario de tipo Form1 ya que el picklist tiene el valor Form1 seleccionado:

Al abrir el Registro con Form2, se abrirá con el formulario de tipo Form2 ya que el picklist tiene el valor Form2 seleccionado:

Como comentaba al inicio, al abrir el segundo registro se produce una doble carga de formulario pues CRM 2011 intenta abrir el registro con el último tipo de formulario utilizado (Form1).

En este ejemplo he usado un picklist con dos valores pero, entiendo que sabréis extrapolarlo a cualquier otro tipo de atributo y lógica a aplicar.





MSCRM 4.0: Importar miembros de listas de marketing

12 04 2011

Una opción bastante demandada por los usuarios de Microsoft Dynamics CRM es la importación de miembros de listas de marketing. A menudo los usuarios desean exportar una segmentación de sus cuentas o contactos o lead a Excel y trabajar con herramientas externas la información de las mismas para terminar obteniendo un conjunto de registros que desean importar a una lista de marketing. La herramienta estándar de CRM no permite la importación de miembros de listas de marketing (ya que se trata de una relación, no de una entidad).

Para resolver este tema hemos desarrollado una actividad personalizada de workflow que nos permite indicar una cuenta y una lista de marketing y la actividad genera una nueva entrada para la cuenta (miembro)en la lista de marketing. Esta actividad la podemos usar en cualquier evento como por ejemplo en la creación de una cuenta, si queremos que todas las cuentas creadas se añadan a una lista de marketing (incluso podemos añadir cierta lógica en el workflow que añada las cuentas a distintas listas de marketing en función de ciertos parámetros de la cuenta…).

Tras registrar la nueva actividad de workflow podemos seleccionarla en la opción Agregar paso:

En el ejemplo comentado anteriormente, podemos crear un workflow que añada las cuentas creadas a una lista de marketing:

Al activar el nuevo workflow, creamos una nueva cuenta y observamos que se genera una nueva instancia del workflow que al rato nos asocia como miembro a la nueva cuenta en la lista de marketing seleccionada:

En el caso que nos ocupa, la importación de miembros de una lista de marketing, podemos crear una nueva entidad llamada Importación de miembros de listas de marketing con dos atributos, un lookup a cuenta y otro a lista de marketing. Seguidamente, creamos un workflow para el evento de creación de registro en la nueva entidad. De ese modo, cada vez que importemos un registro cuenta/lista de marketing, se creará un miembro en la lista de marketing correspondiente a la cuenta.

Como podeis suponer, esta actividad de workflow se podría complementar con la posibilidad de no sólo asociar cuentas sino también contactos y leads, controlar que la lista de marketing seleccionada se corresponde al tipo de entidad (cuenta, contacto o lead)… y muchas más ampliaciones. Si alguien se anima a completar el código, bienvenido sea!!!

Si deseáis disponer del código fuente (extremadamente simple) de esta actividad de workflow podéis solicitárnoslo a través de un comentario de este artículo al pie del mismo.





CRM 2011: Publicado el SDK 5.0.3

8 04 2011

Casi al unísono de la aparición el 04/04/2011 del Rollup 1, se ha publicado el 06/04/2011 el nuevo SDK 5.0.3 para CRM 2011. Se puede descargar desde aquí. A continuación transcribo las novedades que aporta esta nueva versión que, a juzgar por el aumento de tamaño del archivo, debe traer muchas:

Temas nuevos y actualizados Descripción de los cambios
Microsoft_Dynamics_CRM_2011_SDK_Readme.htm Actualizado el readme con nueva información.
SDKBin Actualización assemblies para Microsoft Dynamics CRM 2011 Rollup 1.
Actualización Microsoft.Xrm.Client y Microsoft.Xrm.Portal assemblies de correcciones de errores.
SDKHandsOnLabsLos HandsOn Lab se han actualizado para trabajar con la versión RTM. Además, el laboratorio de flujo de trabajo se ha dividido en dos laboratorios, uno para usar el diseñador de la aplicación de flujo de trabajo Web, y otro para crear un flujo de trabajo personalizado utilizando Microsoft Visual Studio 2010.  
SDK Plantillas Xrm.PageScriptProjectTemplate Incluye extensiones de Microsoft Visual Studio y Microsoft Dynamics CRM Solución archivos de compatibilidad con IntelliSense para JScript y pruebas limitadas de Bibliotecas JScript que utilizan el objeto Xrm.Page dentro de Microsoft Dynamics CRM formas. Esto se llama la secuencia de comandos Xrm.Page Biblioteca de plantillas.
El archivo Readme.docx en esta ubicación se describe cómo instalar y utilizar esta solución.
SDK Tools PluginRegistrationActualización código de ejemplo con correcciones de errores.  
SDK Tools WebResourceUtility Actualización herramienta para arreglar un problema en ver los resultados no permiten el desplazamiento para ver todos los resultados.
Resumen de las funciones de auditoría Se ha añadido una declaración sobre la auditoría de las IsSecured atributo.
Prácticas recomendadas para desarrollar con Microsoft Dynamics CRM 2011 Se agregó información sobre la limitación de los metadatos recuperados para mejorar el rendimiento: Limitar datos recuperados . Se ha añadido una sección nueva performance en almacenamiento en caché: El almacenamiento en caché .
Configurar Windows Azure Integración con Microsoft Dynamics CRM Se agregó información sobre la configuración de seguridad del servidor para permitir que el proceso de servicio asincrónica para acceder a la Web.
Crear, exportar o importar una solución no administrado Se ha añadido una Solución de problemas de la sección con un enlace al blog: Solución de problemas
Personalización de Referencia XML Completado XML de personalización de los temas de referencia.Se agregó información que se aclara que un usuario debe ser asignado a la función de seguridad por lo menos una.Incluye información para los desarrolladores directo Xrm.Page Script Biblioteca de plantillas.
· Ribbon XML Reference
· Site Map XML Reference
· Form XML Reference
· Saved Query XML Reference
Procedimientos de seguridad basada en funciones se pueden utilizar para controlar el acceso a las entidades de Microsoft Dynamics CRM  
User and Team Entities
Privilege and Role Entities
Bibliotecas para Microsoft Dynamics CRM JavaScript  
Key to Entity Diagrams Añadido código de ejemplo para la generación de diagramas entidad relación lógica. En este tema se actualizó también incluye un enlace para descargar los gráficos proporcionados por Microsoft Dynamics CRM 2011 y Microsoft Dynamics CRM Online.Añadido scripts de Windows PowerShell muestra.
SDK SampleCode CS
Microsoft.Xrm.Sdk.Deployment  
Código de ejemplo para la implementación de servicios Web
Plug-in Isolation, Trusts, and Statistics Ha añadido nueva información sobre cómo cambiar el acceso de un recinto de seguridad Web para plug-ins.
Register Your Solution with the Dynamics Marketplace Información actualizada
Sample: Retrieve Multiple Records Using the REST Endpoint with Jscript Agregó dos nuevos ejemplos que muestran cómo superar la limitación en el número de registros recuperados mediante el criterio de valoración de los recursos REST Web.Incluye información sobre los tipos de campos de búsqueda se puede ajustar con los parámetros pasados ​​a un formulario.
SDKSampleCodeCSSilverlightRESTEndpointPagingSilverlight
Sample: Retrieve Multiple Records Using the REST Endpoint with Silverlight
SDKSampleCodeJSRESTEndpointRESTEndpointPaging
Set Field Values Using Parameters Passed to a Form  
Supported Extensions for Microsoft Dynamics CRM Se aclaró la ayuda al desarrollo en Windows XP.
User and Team Entities Se ha corregido la información en este tema: los registros de usuarios no se pueden eliminar, pero se puede deshabilitar.
Web Access for Isolated (sandboxed) Plug-ins Se agregó información sobre la configuración de seguridad del servidor para permitir que el proceso de recinto de seguridad para acceder a la Web.
¿Qué entidades son personalizables? Se agregó un vínculo a la CanModifyAdditionalSettings propiedad EntityMetadata.
Workflow and Process Entities Se agregó información sobre un cambio en los atributos de flujo de trabajo con Microsoft Dynamics CRM 2011 Rollup 1.
Write Code for Microsoft Dynamics CRM Forms Incluye herramientas de desarrollo sección para introducir la secuencia de comandos Xrm.Page Biblioteca de plantillas.




CRM 2011: Ya está disponible el Rollup 1

8 04 2011

Con fecha 04/04/2011 ya está disponible el Rollup 1 para CRM 2011. Tras instalarlo la versión de CRM 2011 es la 5.0.9688.1045. Se puede descargar aquí.