30/6/09

Nuevo foro de Dynamics CRM en español

image Un nuevo espacio para la comunidad de CRM en español. Revisado, monitorizado y respondido (cuando no son preguntas sobre Hotmail) por el equipo de MVPs de CRM de habla española. O sea, Marco Amoedo. Y allá va el enlace:



 http://social.microsoft.com/Forums/en-US/crmspanish/threads

28/4/09

Modificar el filtrado de los campos lookup

Esta es una de esas pequeñas modificaciones (no soportadas) que pueden hacer que nuestros usuarios ganen mucho tiempo. Los campos de tipo lookup tienen su propia vista asociada, que se puede modificar para que en lugar de mostrarnos todos los registros de un determinado tipo, realice algún tipo de filtrado sobre ellos. El ejemplo más típico: cuando establecemos el contacto principal de una cuenta, no queremos ver todos los contactos, sino sólo aquellos que pertenecen a esa cuenta. Pues bien, gracias a un post de Atilio en las news que me llevó a este otro de Jim Wang que explica cómo hacerlo. Resulta que los campos lookup admiten un parámetro additionalparams donde podemos añadir un texto cualquiera para que aparezca en la caja de búsqueda. Si añadimos como campo de búsqueda a la vista de contactos el nombre de la empresa, ya tenemos resuelto el tema.

Modificamos el OnLoad del formulario de Cuenta para que añada el parámetro:



if (crmForm.FormType == 2 && crmForm.ObjectId != null) {
var name = crmForm.all.name.DataValue;
crmForm.all.primarycontactid.additionalparams = 'search=' + name;
}

Ahora modificamos la vista de búsqueda de contactos para que incluya el nombre de la cuenta:

SNAG-0001

Añadimos el campo Cliente principal:

SNAG-0000

Y ya está. Ahora, cuando abramos el lookup de Contacto principal, tendremos rellenado el nombre de la empresa. Si pulsamos buscar aparecerán sólo los contactos de esa cuenta.

23/4/09

Buscar relaciones N:N en CRM

Una de las funcionalidades añadidas en la versión 4.0 fue la de permitir crear relaciones múltiples entre entidades. Aunque internamente se está creando una tabla intermedia o Intersect Table los Web Services de la SDK no la publican como una entidad más que podamos crear o editar. Para asociar dos entidades de esta relación tendremos que usar el mensaje específico AssociateEntitiesRequest. ¿Y para buscar? Hay que recurrir a dos LinkEntities, igual que en SQL necesitaríamos dos JOIN. Lo cuelgo aquí para cuando se me olvide. Por cierto, creo que en la SDK hay un pequeño error.




// Buscar todos los "B" relacionados con "A"
QueryExpression qe = new QueryExpression();
qe.EntityName = "pre_entidad_b";
qe.ColumnSet = new AllColumns();

// Crear el enlace entre la tabla buscada(B) y la intermedia
LinkEntity le1 = new LinkEntity();
le1.LinkFromEntityName = "pre_entidad_b";
le1.LinkFromAttributeName = "pre_entidad_bid";
le1.LinkToEntityName = "pre_entidad_b_entidad_a";
le1.LinkToAttributeName = "pre_entidad_bid";

// Enlace entre la tabla intermedia y la conocida(A)
LinkEntity le2 = new LinkEntity();
le2.LinkFromEntityName = "pre_entidad_b_entidad_a";
le2.LinkFromAttributeName = "entidad_aid";
le2.LinkToEntityName = "entidad_a";
le2.LinkToAttributeName = "entidad_aid";

// Crear la condición para filtrar por la entidad conocida
ConditionExpression ce = new ConditionExpression();
ce.AttributeName = "entidad_aid";
ce.Operator = ConditionOperator.Equal;
ce.Values = new object[] { entidad_aId };

// Añadir la condición al segundo enlace
le2.LinkCriteria = new FilterExpression();
le2.LinkCriteria.Conditions = new ConditionExpression[] { ce };

// Añadir el segundo enlace al primero
le1.LinkEntities = new LinkEntity[] { le2 };
qe.LinkEntities = new LinkEntity[] { le1 };

// Crear la petición
RetrieveMultipleRequest req = new RetrieveMultipleRequest();
req.Query = qe;
RetrieveMultipleResponse resp = (RetrieveMultipleResponse)crm.Execute(req);
resp.BusinessEntityCollection;

16/4/09

Lanzamiento del Microsoft Dynamics CRM Dev Toolkit

Leo en el blog del equipo de CRM que se ha lanzado un nuevo toolkit integrado en Visual Studio para facilitar el desarrollo sobre CRM.

Aquí tenemos el enlace al post del Microsoft Dynamics CRM Team Blog:


Announcing the Microsoft Dynamics CRM Dev Toolkit


Y aquí el enlace al instalador:


The Microsoft Dynamics CRM Developer Toolkit


Hasta ahora, la SDK sólo proporcionaba poco más que un fichero de documentación y un par de dlls. El desarrollo sobre Visual Studio se realizaba de la manera estándar, sin muchas ayudas específicas para CRM. Con este lanzamiento se facilita el famoso XRM o CRM como plataforma de desarrollo. Pero no es sólo una ayuda para el desarrollo puro. Además, con este Toolkit podemos hacer directamente desde Visual Studio algunas tareas que suelen hacerse pesadas desde la interfaz de CRM:

  • Ver un listado de entidades
  • Crear entidades y atributos
  • Crear clases wrapper para entidades
  • Desarrollar Plug-Ins
  • Desplegar una solución completa en uno o varios servidores

Desde luego, una buena noticia para los que nos peleamos con CRM (a diario).

7/4/09

Formularios de actividades direccionables

Una de las funcionalidades más útiles de CRM para los desarrolladores es la posibilidad de lanzar formularios y vistas desde aplicaciones externas. Lo que en la SDK se describe como URL-Addressable Forms and Views (que por cierto, no sé muy bien como traducir, porque Formularios y vistas direccionables por URL suena raro) es lo que nos permite lanzar un Internet Explorer con la dirección:


http://crm:5555/Org/CS/cases/edit.aspx?id={guid}

Por ejemplo, para editar un caso para el que conocemos su id. Si lo que queremos es crear un nuevo caso, simplemente no ponemos el parámetro id y ya está:


http://crm:5555/Org/CS/cases/edit.aspx

Aún mejor, si queremos rellenar para el usuario algún campo en el formulario, la URL lo admite con la forma habitual campo=valor así que podemos escribir, por ejemplo:


http://crm:5555/Org/sfa/accts/edit.aspx?name=Spenta&telephone1=1234556

Para rellenar el nombre y el teléfono de una nueva cuenta. Hasta aquí todo perfecto.Bueno, pues en la SDK está documentado una serie de entidades (cuenta, contacto, caso etc.) pero no dice nada acerca de las actividades. En un proyecto en el que estoy trabajando que incluye integración con Silverlight, necesitaba lanzar una ventana para crear actividades y me di cuenta de su formato de URL no estaba en la lista. No hace falta ser un hacker para darse cuenta de que cuando lanzas una ventana de actividad, la URL tiene una forma ligeramente distinta. Además, para rellenar los campos de tipo partylist hay que hacer un pequeño truco adicional.


http://crm:5555/Org/activities/phone/edit.aspx
?pId={guid}&pType=2&pName=Nombre&partyid={guid}&partytype=2&partyname=Nombre


No es para tanto, es sólo que el parámetro pId para el destinatario no está documentado. Y que con los campos partyid y partyname se añaden destinatarios a los campos de tipo partylist.

18/3/09

Extendiendo el eService Accelerator

Estos últimos días me he estado peleando ocupando de instalar y extender el acelerador de CRM que más coincide con la funcionalidad del proyecto CSP. El eService Accelerator es una extensión de CRM que permite "abrir" nuestro CRM publicando una selección de funcionalidades en una web al estilo portal público o extranet. Aquí nuestros clientes (o ciudadanos) pueden acceder a información o aportarla en tareas como:

  • Registrarse como usuarios del portal - Contacto
  • Realizar preguntas o reclamaciones - Caso
  • Programar visitas o servicios - Actividad de Servicio
  • Consultar la base de conocimiento - Artículos de la Knowledge Base

Además, esta plataforma inicial es fácilmente ampliable, de manera que si una empresa quisiera, por ejemplo, dar acceso al autoservicio de presupuestos para clientes, lo podría hacer publicando la entidad Oferta. Un conjunto de controles UserControl de ASP.NET permiten a un equipo de desarrollo añadir esta funcionalidad con poco esfuerzo.

El proceso de instalación del eService es bastante sencillo, aunque hay una serie de problemas menores que mejor no tener que encontrarse una segunda vez. Los comparto aquí por si sirven de algo. La parte de personalización y ampliación se queda un poco corta en explicaciones, así que también pondré mi granito de arena.

Instalación

Hay un pequeño bug en la manera como la consola de eService almacena la configuración. El instalador de eService genera una entidad personalizada eServiceConfiguration que contiene un solor registro con los parámetros de configuración de nuestra instalación. Pues bien, el código de eService busca por nombre este registro, y este nombre tiene que ser exactamente eServiceConfig_V1. Para encontrar este registro haremos una búsqueda avanzada, ya que la entidad no se incluye por defecto en el SiteMap.
  • Click en Herramientas - Búsqueda avanzada
  • En el desplegable de entidad, escoger eService Configuration
  • Pulsar el botón de búsqueda
  • Doble click en el único elemento que debe haber (si hay más de uno es que hemos hecho algo mal en la importación)
  • Se abre el registro, rellenar todos los campos necesarios

Os recomiendo crear un acceso directo por si tenemos que volver aquí.

Además de cambiar el nombre, tendremos que rellenar todos los campos de esta entidad: SmtpServer, SmtpPassword, Default Subject. Aquí encontramos también el usuario que va a identificar al portal de eService para CRM. Este usuario debe tener los permisos exactos (ni más ni menos) para realizar las tareas de eService:

  • Read/Write/AppendTo en contact
  • Read/Write/AppendTo en account
  • Read/Write/AppendTo en activity
  • Read/Write/AppendTo/Assign To en case
  • AppendTo en Subject
  • Read en eServiceConfiguration
  • Read en Metadata

Os recomiendo que creéis un rol específico para este usuario. El usuario, además, debe tener cumplimentado el atributo internalemailaddress.

La base de datos de Membership (eServiceMembership) tiene que tener permisos de lectura para el usuario de identidad del pool donde se esté ejecutando el portal. En micaso este usuario es NT Autority\Network Service.

Editar el Workflow de Sign-up, que es el responsable de enviar un correo al usuario que acabamos de registrar en el portal. El email contiene un enlace a la página createuser.aspx que debe tener la base correcta, algo así como http://emp.com/eservice/createuser.aspx?id=x

Ampliación

La forma de añadir nuevas entidades a eService es (por decirlo suavemente) un poco incómoda, ya que la lista se encuentra hardcoded en el código de la página EntityList. Por otro lado, en la parte de código fuente, el proyecto que nos proporcionan no es de tipo Web Application Project, sino Web Site. Sin embargo, el modo de desplegar la consola de eService implica copiar su dll en la carpeta bin de CRMWeb. Como consecuencia, tendremos que fabricar un nuevo proyecto de tipo Web Application Project, copiar las páginas y usar la opción Convertir a Aplicación Web.

Para crear una nueva página que dé soporte a una nueva entidad, el proceso sería el siguiente:

  • Añadir el nombre de la entidad a la lista de EntityList.aspx.cs
  • Crear una nueva página aspx
  • Añadir EntityEditor.ascx y configurar su EntityName
  • Si queremos que edite, rellenar EntityId

13/2/09

Lanzamiento de ISV Utilities for Comparing Customizations and Transferring Configuration Data

En este artículo de MSDN se presentan dos herramientas muy útiles para cualquiera que esté desarrollando una aplicación de negocio sobre CRM.

ISV Utilities for Comparing Customizations and Transferring Configuration Data


La primera de ellas nos permite comparar dos ficheros de personalizaciones customizations.zip extraidos de dos implementaciones CRM o de dos momentos del tiempo diferentes. Con una interfaz visual sencilla, muestra la estructura de dos ficheros y resalta las diferencias entre ellos.

Comparar personalizacionesLa segunda de las herramientas es útil para un escenario también muy típico. Hemos generado un paquete de instalación para nuestra solución que crea las entidades, atributos, relaciones necesarias para nuestra personalización. Algunas de estas entidades suelen contener información de configuración de nuestras extensiones, de modo que después de hacer el despliegue nos toca crear esos registros y rellenar sus valores iniciales. Una forma es importar un fichero csv a través de la interfaz de importación de registros. Esta herramienta nos ofrece una interfaz más sencilla y nos evita tener que trabajar con Excel o pesados ficheros de texto.

Dd442453.0b8f0a81-1a17-4d77-9419-1cdc12427223(en-us,MSDN.10).gifAdemás, todo el código de estas dos herramientas está disponible, lo que nos permitirá adaptarlo a nuestras necesidades de despliegue y generación de datos iniciales.

11/2/09

Depurando con entidades dinámicas

Esta vez tomo prestado el trabajo de Simon Hutson, el responsable del blog de CRM de Microsoft UK. Si habéis desarrollado utilizando la clase DynamicEntity, en algún momento habréis tenido que poner un punto de ruptura en vuestro código e inspeccionar el contenido de una entidad. En ese momento empiezan los problemas, o mejor dicho la incomodidad, ya que una DynamicEntity puede tener docenas de propiedades almacenadas en un array que tenemos que ir abriendo una por una hasta que encontramos la que nos interesa. Un rollo. La herramienta que proporciona Simon habilita un nuevo visualizador para el depurador de Visual Studio. Así, además de las opciones estándar (Html, Texto, XML) tendremos una adicional: DynamicEntity.





De esta manera, vemos rápidamente todas las propiedades de la entidad, con su nombre y su valor asociado. En el artículo completo hay una descripción detallada de cómo desarrollar estos visualizadores:



Microsoft Dynamics CRM UK Blog : Creating A Debugger Visualizer For Dynamic Entities


Podéis descargar el proyecto de Visual Studio aquí.

23/1/09

Utilidad MetadataDiagram de la SDK

Leyendo el blog del equipo de CRM he descubierto una herramienta que estaba ahí desde el principio y que habría sido de mucha utilidad en más de una ocasión. Más vale tarde que nunca:

 

Using Metadata for Generating Entity Diagrams in Microsoft Dynamics CRM 4.0

Esta herramienta genera diagramas de Visio con las entidades y atributos de una instalación de CRM. No hace falta decir el tiempo que podemos ganar cuando estamos generando documentación. El aspecto que tienen nos resultará familiar: con esta herramienta ha generado el equipo de CRM todos los esquemas que hay en la documentación de la SDK.

metadatadiagram

8/1/09

Crear una interfaz WPF para CRM

Este post sólo es un enlace a otro post del blog del equipo de CRM que me ha parecido interesante. Se trata de fabricar un "cuadro de mando" de CRM sobre una aplicación WPF. Integra varias vistas de CRM para hacer más ágil el trabajo de un determinado rol de usuario, agrupando sus tareas más habituales. El post original, aquí.



Me ha interesado ver que se puede integrar sobre un WPF un fragmento de página web, de modo que no hace falta reinventar la rueda para todo el cuadro, sino sólo para aquellas zonas en las que podemos sacar partido a WPF. Para el resto podemos usar las páginas tradicionales de CRM. En la imagen, la parte de abajo a la derecha corresponde al editor de tareas estándar de CRM, mientras que las otras zonas son controles WPF reales.

17/12/08

Utilidades para e-mail en Workflows

Un requisito muy habitual - y que falta en CRM 4.0 - es la posibilidad de añadir enlaces en mensajes de correo creados por Workflows. El problema es que el identificador GUID del registro no está disponible en el editor de campos dinámicos del Workflow. Lo que han hecho en el blog del equipo de desarrollo de CRM es desarrollar una actividad personalizada de Workflow que fabrica un campo de texto ya formateado como hiperenlace a partir del identificador de un registro. O sea:

<a href="{0}">{0}</a>

El artículo completo aquí:

http://blogs.msdn.com/crm/archive/2008/12/15/workflow-e-mail-utilities.aspx

Además trata otro problema que - la verdad - no me había encontrado: cuando se copia un campo de tipo ntext (memo) en un correo, los saltos de línea desaparecen.

12/12/08

Fallan las credenciales al acceder a Reporting Services

Este post es uno de esos para no olvidar cómo c*** arreglé aquel error. Se trata de lo siguiente: estás instalando CRM en una máquina y tienes la base de datos en otra. Desde la máquina local de SQL Server el Report Server y el Report Manager se ven sin problema ninguno. Ahora, cuando intentas acceder desde la máquina de CRM, empieza a pedirte credenciales (que no debería, está configurado para autenticación integrada con AD) y finalmente te lanza un error 401. Bueno, pues la solución la proporcionó este mensaje de un tal Janos. Se abre una consola y desde C:\Inetpub\AdminScripts se escribe:


cscript adsutil.vbs get w3svc/NTAuthenticationProviders



Si devuelve el mensaje The parameter "NTAuthenticationProviders" is not set at this node es que vamos bien. Escribimos lo siguiente:


cscript adsutil.vbs set w3svc/NTAuthenticationProviders "NTLM"



Y asunto arreglado. Me da vergüenza reconocerlo pero ... no sé muy bien cuál era el problema. Aparentemente, algo está mal en la metabase del IIS.

2/12/08

Aceleradores de CRM: eService

Aceleradores de CRM Desde el viernes tenemos un nuevo vecino en el programa de aceleradores de CRM, el eService accelerator. Se trata de un punto de partida - no una solución completa - para crear un portal de autoservicio para clientes. Desde el portal podrán manejar su perfil, crear nuevos casos, programar servicios o consultar la base de conocimiento, todo con una interfaz web sencilla y sin necesidad de ser usuario de CRM. Esto último tiene implicaciones de licencia, ya que nos lleva al tenebroso terreno del licenciamiento CRM External Connector. Por cierto, ¿existe este licenciamiento para la versión 4.0?

Se puede descargar aquí junto con un video explicativo para la instalación.

27/11/08

Form Reporter: Generador de documentación para CRM

Esta nueva herramienta presentada por Jim Daly en este post del blog del equipo de desarrollo de CRM puede ser de mucha utilidad para los fans de la documentación de proyectos. El Microsoft CRM 4.0 Form Reporter es una aplicación que permite crear un documento Word 2007 con información de entidades, atributos, elementos de interfaz de usuario etc. Todo (o casi todo) lo que contiene un fichero customizations.xml exportado desde CRM. formreporter

Seguro que ahorrará mucho tiempo para documentar nuestros desarrollos o para - quizás más importante - entender los de terceros. Se ha desarrollado usando transformaciones XSL y la SDK para desarrollo de Open XML , así que requiere .NET Framework 3.5 y Word 2007.

8/9/08

Integración con MOSS aprovechando DynamicEntity

Y aprovechando también que he tenido que pensar un poco acerca de las entidades dinámicas en CRM para el proyecto CSP de Microsoft, voy a poner mis ideas en orden. Dentro del proyecto se encuentra una integración con MOSS que incluye Forms Server y por tanto InfoPath. Se trata de un gobierno local o ayuntamiento que quiere gestionar on-line una serie de trámites del ciudadano. En nuestra solución, cada trámite se traduce en una entidad personalizada de CRM que tiene una relación 1:1 con un Caso del módulo de servicio. Por el lado de MOSS, tenemos una serie de formularios InfoPath con los datos específicos de cada trámite. Necesitamos una manera de convertir una cosa en otra: un formulario de InfoPath en un registro de una entidad de CRM. Y aquí es donde entran la DynamicEntity de CRM. La SDK nos da mucho juego al fabricar entidades fuertemente tipadas, pero en este caso nos ataría mucho al tipo concreto de entidad. Además, las DynamicEntities permiten ser serializadas en XML. InfoPath también es XML, así que lo único que necesitamos es una transformación XSL para pasar de un lado al otro:

dynamicentities

En el último paso, un Plug-In se encarga de rellenar los campos que falten y que InfoPath no puede conocer. En este caso, se trata del Guid del ciudadano, que no está explícitamente en el formulario de InfoPath. Una de las ventajas que permite esta aproximación es su genericidad: si se añade un nuevo trámite, en principio, no habría que cambiar una sola linea de código. Sería tan sólo añadir la nueva transformación XSL. Este esquema es bastante flexible y se podría aprovechar para generar cualquier tipo de entidad.

1/9/08

Intellisense para JavaScript de CRM

En este video del muy interesante libro CRM as a Rapid Development Plaform te cuentan (entre otras muchas cosas) cómo hacer el desarrollo de lado cliente para CRM un poco más amistoso. A través de la SDK de metadatos se descarga todo el conjunto de nombres de entidades y atributos y se genera un fichero JavaScript con sus definiciones.

Muy ingenioso y puede ahorrar bastantes quebraderos de cabeza por un literal mal escrito.

15/7/08

CRM como plataforma de desarrollo

Ultimamente se está oyendo hablar mucho de este tema: considerar CRM no sólo como un producto terminado, sino también como unos cimientos sobre los que construir aplicaciones de negocio de cualquier orientación. Siempre que haya clientes implicados y considerando que la capa de plataforma de CRM incluye:

  • Creación de entidades
  • Gestión de relaciones 1-n y n-n entre entidades
  • Generador de Interfaz de Usuario

  • Generador de consultas

  • Seguridad basada en roles
  • Motor de Workflow
  • Trabajo offline

  • Enlace automático con correo electrónico
  • Gestión de eventos en cliente
  • Asistente para reporting
  • Importación/Exportación de datos con Excel

Pues tenemos gran parte de la "fontanería" de la aplicación creada para nosotros. Hace poco participé en un evento de Microsoft en el marco de los Innovation Days sobre Herramientas de desarrollo rápido o RAD de aplicaciones donde presenté este tema.

Podéis descargar las PPTs de mi parte del evento aquí.

Actualización Otro enlace interesante: el Developer Ramp up kit for Microsoft Dynamics CRM 4.0 Contiene Powerpoints, videos y documentos con laboratorios paso a paso para aprender a desarrollar sobre CRM.

23/5/08

Barra de botones de Outlook desaparecida

Este problema es un viejo conocido: un buen día arrancas el Outlook y la barra de botones de CRM ha desaparecido. He encontrado varios apaños, como lo que cuenta en este blog un tal John Bryntze. Dice, en resumen, que hay que:

  • Rehabilitar elementos del Outlook (En Outlook 2003 ir a Ayuda - Acerca ... - Elementos deshabilitados, en Outlook 2007 ir a Ayuda - Elementos deshabilitados)
  • Habilitar el add-in de CRM
  • Salir de Outlook
  • Abrir regedit
  • Ir a la clave HKEY_CURRENT_USER\Software\Microsoft\MSCRMClient
  • Borrar el contenido de la clave UIXmlHash

El contenido de UIXmlHash se volverá a rellenar una vez se haya reiniciado Outlook

23/4/08

Probando LinqtoCRM (y Jing)

Esto es una prueba doble: por un lado utilizo una librería para CRM que permite hacer consultas con Linq: LinqtoCRM. Está en Codeplex y su autor está aquí: http://www.itu.dk/~friism/blog/ Todavía es muy, muy preliminar pero aún así es interesante. Para mi es la excusa para meterme en la jungla de Linq. Por el otro lado, estreno Jing + ScreenCast para subir vídeos de programación, a ver qué tal está la calidad del video. Como es grande para embeberlo en el blog, dejo sólo el enlace:



Enlace al video

Añadir vistas en el SiteMap

Un escenario que me he encontrado a menudo es el del cliente que quiere utilizar una entidad para más de un propósito. Por ejemplo: las cuentas sirven para representar tanto a clientes, proveedores o socios. Las vistas de CRM pueden servir para tener un filtrado rápido según el criterio de tipo de relación, pero aún así hay gente que preferiría que la navegación fuera más explícita, con un enlace en la navegación principal. La nueva característica de Copiar acceso directo de CRM 4.0 nos permite este pequeño truco. Lo que haremos será utilizar un enlace a una vista como una página al mismo nivel que el resto de entidades. Digamos que fabricamos una vista Proveedores y la publicamos.

Ahora navegamos hasta la vista que acabamos de crear y usamos la acción Copiar accceso directo.



Exportamos el fichero de SiteMap para incluir el nuevo enlace. Por cierto, ojo con el carácter de ampersand incluido en la Url de la vista porque puede despistar al cargador de personalizaciones. En resumen: sustituid & por &amp o la personalización no cargará.

.._root/homepage.aspx?etc=1&amp;viewid=%7b60..

Aquí tenéis la muestra del SiteMap con el nuevo enlace. Lo he colocado justo debajo del enlace a Cuentas.


<SubArea Id="nav_accts" Entity="account" DescriptionResourceId="Account_SubArea_Description" />
<SubArea Id="nav_proveedores"
Url="http://10.1.4.129:5555/CRMDemo/_root/homepage.aspx?etc=1&amp;viewid=%7b60ACDB4C-210D-DD11-A3F2-0003FF8B31FE%7d">
<Titles>
<Title LCID="3082" Title="Proveedores" />
</Titles>
</SubArea>


Sólo queda importar el nuevo fichero SiteMap a CRM y ya está: si hacéis Ctrl+F5 tendréis un enlace a una nueva entidad en vuestro CRM.