Spiga

Como incrementar la longitud de los archivos adjuntos en Microsoft CRM 3.0

De forma predeterminada Microsoft CRM 3.0 tiene un límite de tamaño en los archivos que podemos adjuntar a la entidad notas. Ese límite es de 8 Mb.

En el caso que necesitemos adjuntar archivos de mayor tamaño, lo que debemos hacer es lo siguiente:

Paso 1:

En el paso 1 lo que debemos realizar es una modificación en el registro.
Para hacer esto vamos a inicio -> ejecutar y escribimos regedit.
Buscamos la ruta HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM
y editamos el atributo maxuploadfilesize, el cual tambien esta indicando el máximo de longitud de un archivo admitido en CRM.

En este caso el valor esta en bytes, asi que van a tener que convertir el tamaño deseado a esa unidad.
Les recomiendo que al abrir esta clave de registro seleccionen la opción para visualizar el valor en decimal.

Paso 2:

Ir al Web.config de CRM y editar el atributo maxRequestLength.El mismo indica el tamaño máximo de archivo el cual puede ser subido (Esta en Kb).Por otro lado también vamos a encontrar el atributo executionTimeout, el cual indica el tiempo de espera a que el archivo se transmita al server. Les recomiendo aumentar ese valor en el caso de que aumenten la máxima longitud del archivo. (El tiempo esta expresado en segundos).

Este es un ejemplo para aumentarlo a 10 Mb:

&lthttpRuntime executionTimeout="500" maxRequestLength="10024"/&gt


Paso 3:

Tenemos que reinicir el servicio de Internet Information Server (IIS).
Para hacer esto vamos a inicio -> ejecutar y escribimos IISRESET.

Hasta la próxima!

Como visualizar la base de conocimiento desde el cliente outlook de Microsoft CRM 3.0

De forma predeterminada Microsoft CRM 3.0 no muestra la entidad de base de conocimiento desde el cliente para outlook de Microsoft CRM. Para poder realizar esto lo que debemos hacer es editar la entidad sitemap siguiendo estos pasos:


  1. Ingresar a Microsoft CRM con un rol de administrador de sistema.
  2. Ir a la pagina para exportar las personalizaciones y exportar la entidad sitemap.
  3. Guardar el xml y editarlo.
  4. Bajo el grupo de id "CS" se encuentra el subarea correspondiente a base de conocimiento (ver imagen). Lo que tememos que hacer es borrar el atributo Cliente="Web".
  5. Guardamos el archivo e importamos nuestra personalización.
  6. Publicamos nuestro CRM y listo!.

Para mas información pueden ver un artículo relacionado a la entidad sitemap Aqui.

Espero que les sea de utilidad!

Hasta la próxima!.

Como modificar los numeradores automaticos en Microsoft CRM 3.0

En el post de hoy les queria comentar sobre la posibilidad de modificar los numeradores automáticos de las entidades Contratos, Casos, Articulos, Presupuestos, Pedidos, Facturas y Campañas.

Si bien Microsoft CRM brinda la posibilidad de personalizar los primeros 3 caracteres de los numeradores y la longitud de la última parte de la tercia que lo conforma, no nos da la posibilidad de modificar la parte númerica.

Para poder realizar esto lo que tenemos que hacer es lo siguiente:

1) Ir al administrador corporativo de Sql Server.
2) Buscar y abrir la tabla OrganizationBase.

Vamos a encotrar los siguientes atributos que corresponden a cada uno de los numeradores.

CurrentCaseNumber -> Numerador del caso.
CurrentContractNumber -> Numerador del contrato.
CurrentQuoteNumber -> Numerador del presupuesto.
CurrentOrderNumber -> Numerador del pedido.
CurrentInvoiceNumber -> Numerador de la factura.
CurrentArticleNumber -> Numerador del artículo.
CurrentCampaingNumber -> Numerador de la campaña.

3) Para terminar solo vamos a tener que modificar el atributo correspondiente a la entidad que necesitamos.

En varias oportunidades me han requerido el poder iniciar los casos/incidentes de servicios con el numerador en 0001. Dado que Microsoft CRM inicializa todos los numeradores en 1001.

Espero que les sea de utilidad!.

Hasta la próxima.

Novedades en los campos lookup de Microsoft CRM 4.0 (Titan)

Hola a todos, después de varios días de duro trabajo me hice un rato para escribir una nueva entrada.

Hoy les voy a contar sobre una nueva característica de los campos lookup en Microsoft CRM 4.0 o Titan.

Haciendo un poco de memoria recordamos que en la versión 1.0/1.2 de CRM los campos lookup solo los podíamos popular con data haciendo click en el botón con la lupa que contenía el control. Con la llegada de la versión 3.0, esto siguió así, pero se le agrego un asistente de formulario el cual facilitaba ingresar datos en el campo sin la necesidad de abrir una nueva ventana para realizar la búsqueda de un registro en particular.

Pues bien, gracias a esta nueva funcionalidad en Microsoft CRM 4.0 y a AJAX podemos escribir en los controles del tipo lookup!!..
Básicamente luego de escribir por ejemplo parte de el nombre de una cuenta, y sacar el foco del campo, CRM intentará resolver ese nombre haciendo una búsqueda de la cuenta que contenga ese nombre.





Ciertamente esto es una gran ventaja, sobre todo para el usuario final, ya que le representa mucho menos uso del mouse/ratón para el ingreso de datos.


Bien, eso es todo, espero sus comentarios. Saludos!.

Error de instalación del cliente outlook de CRM en Windows 2000

Hace un tiempo tuve la necesidad de realizar una instalación del cliente outlook de CRM en una workstation con windows 2000.

Luego de cumplir todos los requerimientos mínimos descriptos en el IG, comencé a instalarlo y me encontré con el siguiente error:

Error de la accion Microsoft.Crm.Setup.Client.InstallAbpAction.Exception from HRESULT:0xFFFFFFFF

Después de varias idas y vueltas pude encontrar la solución y el porqué de este error.

Primero el problema:

El problema se dá por un archivo de Windows 2000 y no de MSCRM. Específicamente en el archivo MSI.DLL.
El error se produce por la configuración regional del equipo. En mi caso tenía configurado Español (Argentina). Pero tengo entendido que con otros idiomas se produce el mismo error.



Solución:

  1. Desinstalar cualquier instalación del cliente que tengamos en el cliente.
  2. Entrar a Configuración / Panel de Control / Configuración Regional.
  3. En "Su idioma (ubicación)" seleccionar ESPAÑOL (ESPAÑA).
  4. En Alfabetización seleccionar INTERNACIONAL.
  5. Aceptar e intentar de nuevo la instalación del cliente de CRM.
Por supuesto una vez instalado pueden volver a su configuración regional original.

Saludos.

JavaScript no documentado sobre formularios de Microsoft CRM

Continuando un poco el hilo de la entrada anterior donde les comentaba sobre algunas funciones de JavaScript no documentadas que podíamos utilizar sobre la grilla de CRM. Ver artículo.
Hoy voy a agrandar la lista de funciones pero esta vez las que podemos utilizar sobre el formulario de las entidades.

Antes que nada y como siempre, aclaro que esto no esta soportado por Microsoft y ustedes a esta altura ya saben lo que eso implica.

Comencemos..

Algunas de las funciones que si estan "soportadas" por que figuran en el SDK y de hecho hay varios artículos de Microsoft hablando de ellas son:

Funciones:
crmForm.Save() - Guarda el formulario.
crmForm.SaveAndClose() - Guarda el formulario y lo cierra.
crmForm.SetFieldReqLevel(sField, bRequired) -Establece un campo como requerido o no.
Parametros:
sField: String del id del campo (Ej: 'accountnumber');
bRequired: Entero/Booleano. valor (1) Si es requerido. valor (0) si no lo es.

Propiedades:
crmForm.FormType - Retorna el tipo de formulario. (creación, modificación, sólo lectura, etc)
crmForm.ObjectTypeCode -Retorna el código del tipo de entidad a la que pertenece el formulario.
crmForm.ObjectTypeName -Retorna el nombre de la entidad a la que pertenece el formulario.
crmForm.ObjectId -Retorna el id del objeto.
crmForm.isDirty - Retorno si hubo una molificación en un campo no guardada.

Ahora bien, a esta lista les podemos sumar todas estas que no están documentadas (ni soportadas, en teoría).:

Funciones:
crmForm.detachCloseAlert() - Elimina el cartel que nos indica si estamos seguros de cerrar el formulario luego de haber realizado una modificación no guardada.
crmForm.GetLabel(oControl) - Obtiene el label del campo
Parámetros:
oControl: Object. Objeto o campo (Ej: crmForm.accoutnumber)
crmForm.GetControl(sId) - Obtiene el objeto que por su id.
Parámetros:
sId: (String) id de campo (Ej: 'accountnumer')
crmForm.Close() -Cierra el formulario verificando si hay datos sin guardar (distinto a window.close())

Bueno eso es todo espero que les sea de utilidad.

Hasta la próxima!

Primer contacto con CRM 4.0 Titan

Hola a todos!... hoy la entrada va a ser breve y es simplemente para recomendarles que vean este videillo que realizó el amigo Marco Amoedo presentando algunas de las nuevas características del Microsoft CRM 4.0, y por sobre todo su nueva interfaz!!. Para ver el video click Aqui .

Saludos

Como agregar el logo de mi compañía en Microsoft CRM 3.0

Hoy les voy a comentar sobre una personalización que si bien no tiene gran utilidad funcional, hace que nuestro CRM sea un poco mas personalizado para nuestra compañía.

La idea es poder agregar una imagen (o logo), sobre la barra de negación lateral.

Por supuesto y antes que nada quiero aclarar que esta personalización no esta soportada por Microsoft.

Lo primero que tenemos que hacer es ubicar el archivo navbarpage.aspx en la carpeta \CRMWeb\_root de nuestro servidor de Microsoft CRM.

Luego lo editamos con el notepad, y buscamos la siguiente sección

</script>
<body class="leftBody">


Por ultimo entre ambas secciones insertamos la imagen con nuestro logo.

</script>
<img Src="../_imgs/logo.jpg"/>
<body class="leftBody">


Les recomiendo antes de hacer esto de realizar una copia del archivo original como backup.

Saludos

Utilizar JavaScript sobre la grilla de Microsoft CRM (CrmGrid)

En la entrada de hoy les voy a hablar sobre algunas funciones en JavaScript que utiliza Microsoft CRM sobre la grilla que muestra los registros de las diferentes entidades.
Claro esta, que todas estas funciones no están documentadas y no están soportadas para su utilización, lo que implica que pueden o no estar en próxima versiones del producto.

Lo ideal para utilizar todos estos métodos y propiedades es hacerlo en el isv.config, mediante un nuevo botón y utilizando el atributo JavaScript del mismo para realizar nuestro código y que este se ejecute al hacer click.

Por ejemplo:

<Grid><MenuBar><Buttons><Button Title="Actualizar" ToolTip="Actualizar" Icon="/_imgs/ico_18_1026.gif" WinParams="" JavaScript="crmGrid.Refresh();" /></Buttons></MenuBar></Grid>

Les paso algunos de los métodos y propiedades que pueden utilizar:


Métodos

crmGrid.Refresh() - Como su nombre lo indica actualiza la grilla.
crmGrid.CancelRefresh() - Cancela la actualización de la grilla.
crmGrid.Reset() -Reinicia la grilla, a diferencia del Refresh no utiliza la cache del control.
crmGrid.Print() - Presenta el contenido de la grilla para ser impreso.
crmGrid.ExportToExcel() -Exporta el contenido de la grilla a Excel.
getSelected('crmGrid') -Obtiene el id (GUID) del elemento seleccionado en la grilla.

Propiedades

crmGrid.PageNumber - Obtiene o establece el número de la página.
document.all['crmGrid'].InnerGrid.NumberOfRecords - Número de registros de la página.
document.all['crmGrid'].InnerGrid.SelectedRecords- Obtiene un array con el id, tipo de objeto y posición en la grilla.
document.all['crmGrid'].InnerGrid.MoreRecords - Retorna falso si estamos posicionados en la última página y true si quedan mas páginas.

Hasta la próxima!!!

Saludos

Como ocultar el asistente de formulario en Microsoft CRM 3.0

Una de las cosas que mas me han pedido en las implementaciones de Microsoft CRM, es la necesidad de ocultar el asistente de formulario que se despliega en algunas de las entidades.

La realidad es que Microsoft CRM no facilita (de una forma sencilla al menos), la manera de realizar esto.

La forma de realizarlo es la siguiente:


  1. En principio debemos exportar la entidad en cuestión, por ejemplo cuenta (account).
  2. Guardamos el xml y lo editamos con el notepad
  3. Buscamos el/ los atributos relatedInformationCollapsed y enablerelatedinformation.
  4. Modificamos los atributos y guardamos los cambios.
  5. Importamos la entidad y la publicamos.

Descripción de los atributos:

relatedInformationCollapsed="true" .Indica si el asistente inicia colapsado (Si el atributo no se encuentra el asistente se abre por defecto desplegado).

enablerelatedinformation="true" .Indica si el asistente esta habilitado, es decir si debe visualizar o no.

Como ultimo comentario les cuento que en la próxima versión de CRM (Microsoft CRM 4.0). Esta personalización ya puede realizar facilmente desde la intefase de personalización de formulario de cada entidad.

Bueno eso es todo. Espero sus comentarios

Saludos


Seguridad en las reglas de Workflow en Microsoft CRM 3.0

Hoy quería comentarles un problema que tuve hace un tiempo con con los Wokflows en Microsoft CRM 3.0.

Es una practica común abrir el Workflow Manager (Administrador de flujos de trabajo) para crear alguna regla de Workflow y hacerlo con el administrador de CRM... y acá empezó mi problema.

El problema básicamente era que tenía una regla sobre la entidad de cuenta creada con una cuenta de usuario con el rol de administrador de CRM. La regla era algo muy sencillo, "Al crear una cuenta enviar un e-mail a la misma dándole la bienvenida como cliente".

Por supuesto active la regla y al crear una cuenta... nada. No se disparaba la regla. Probé reiniciando el servicio de Workflow.. y nada tampoco.

En el visor de eventos encontraba el siguiente error:

Condition {7565170E-646D-DC11-9B9A-001320950F24} failed in step {7265170E-646D-DC11-9B9A-001320950F24} of process instance {6A65170E-646D-DC11-9B9A-001320950F24}. Please view the paused rule in the Microsoft.Crm.Workflow.Monitor for more information about the failure.

Y en el Monitor de flujos de trabajo??.. ni la regla aparecía, mas allá que el error logueado en el visor de eventos indicaba que para obtener mas información lo verifique allí.

Después de varias idas y vueltas encontré el problema. El usuario con el que creé la regla estaba en modo de acceso restringido. Esto era así por que el usuario cumplía el rol de administrador de CRM y no de usuario de la aplicación, y no tenia sentido utilizar una licencia con ese usuario.

La explicación del por que no funciona se basa en que las reglas automáticas (no manuales) se impersonan, es decir, se ejecutan bajo los permisos del usuario que creó la regla.

En este caso como el usuario estaba en modo de acceso restringido no podía realizar las acciones que pretendía la regla de Workflow realizar.

Aprovecho la oportunidad para comentarles algunas otras cosas a tener en cuenta sobre el usuario que crea las reglas de Workflow son:

  • Si el usuario que propietario de la regla pertenece a la unidad de negocios principal, la regla se aplica a la unidad de negocios principal y todas las unidades de negocios que dependen de ella.
  • Se desprende del hito anterior, que para crear reglas que sean disparadas para una unidad de negocio en particular y todas sus "hijas", el Workflow se debe crear con un usuario de dicha unidad de negocios.
  • La cuenta de usuario que crea la regla debe tener privilegios de acceso a nivel de organización sobre Procesos e Instancias de procesos.
  • La cuenta de usuario que crea la regla debe tener privilegios para realizar las acciones que en el Workflow se realizan.
Otro dato importante a tener en cuenta es que al reasignar registros del propietario del Workflow, este no se reasigna.

Como conclusión, verifiquen antes de crear una regla de Workflow, con que cuenta de usuario lo van a realizar!!.

Saludos

Instancias nombradas de SQL Server y Microsoft CRM 3.0

Hola a todos.
Hoy voy a escribir sobre algo que en un principio era una restricción para la implementación de Microsoft CRM 3.0.

Microsoft CRM 3.0 no se puede instalar sobre una instancia nombrada de SQL Server.

La realidad es que ya hace bastante tiempo que esto es soportado por el equipo de desarrollo de CRM, el problema es que el asistente de diagnostico de entorno que verifica los pre requisitos para la instalación, no nos permite comenzar con la instalación si encuentra que la instancia de SQL es nombrada.

El problema se da por que el equipo de desarrollo comenzó a soportar este tipo de instalación una vez liberado el release de Microsoft CRM 3.0, por lo tanto el control de pre instalación sigue verificando que la instancia no sea nombrada.

Me decidí a realizar este post, (aunque no sea una novedad), por el hecho de que todos comentan que esta soportado pero pocos explican como poder instalarlo en este entorno.

Vamos al grano, para poder realizar la instalación lo que debemos hacer es un bypass del asistente del diagnostico de entorno.

Para lograrlo hay que hacer lo siguiente:


1. En el servidor de Microsoft CRM, click Inicio, click Ejecutar, y tipear regedit .
2. Abrir la siguiente clave del registro: HKEY_LOCAL_MACHINE\Software\Microsoft
3. Si la clave de registro MSCRM ya existe, ir al punto 6. Si la clave de registro MSCRM no existe ir al punto 4.
4. Click derecho sobre Microsofr, Nuevo, y hacer click en clave.
5. Tipear MSCRM como nombre de la clave del registro.
6. Click derecho sobre MSCRM, Nuevo, click sobre el calor DWORD.

7. Tipear IgnoreChecks como nombre, presionar ENTER.
8. Click derecho sobre IgnoreChecks, y luego click en modificar.
9. En la caja de texto tipear el valor 1 , click Aceptar.
10. En el asistente de diagnostico de entorno, click en Atras, y luego click en siguiente para volver a iniciar el chequeo del asistente de diagnostico de entorno. Notaremos que el error sigue apareciendo. Sin embargo, el boton de Siguiente ahora estará habilitado. Click Siguiente. Ignorar los mensajes de error.


Bueno eso es todo

Saludos y hasta la próxima!.

Personalizando todas las vistas en Microsoft CRM 3.0

Hola a todos!.
En la entrada de hoy les voy a contar como poder personalizar todas las vistas de Microsoft CRM..., si TODAS.

Para los que están familiarizados con CRM sabrán que existen ciertas entidades que no hay posibilidad de personalizarlas, sin embargo hay un pequeño truco para poder modificar las vistas de esas entidades.


Este tip viene de vieja data, para los que utilizaron la versión 1.2 de CRM les va a sonar, ya que de esta misma forma (o similar) se podía modificar las vistas de las actividades.

Lo que hay que hacer es lo siguiente:


  1. Abrimos el explorador de internet e introducimos la siguiente URL http://crmserver_name/tools/vieweditor/viewManager.aspx?id= (No le des Intro todavía!)

  2. Seguido de "?id=" debemos copiar el GUID de la vista.
  3. Ahora si, modificamos la vista y guardamos los cambios.

  4. Publicamos todas las personalizaciones.

Antes de decirte de donde sacamos el GUID de la vista te recuerdo de debes cambiar en la URL donde dice crmserver_name por el nombre o IP de tu servidor de CRM, claro esta.

Bien ahora si vamos al GUID.
En la tabla SavedQueryBase de la base de datos COMPANY_MSCRM (Company es el nombre de la compañía, varía según cada implementación). Encontramos todos los GUID de todas las vistas que existen en nuestro CRM (Sean de sistema o no).

Lo que queda es sencillo, simplemente se busca el GUID de la vista que queremos modificar y lo copiamos seguido de la URL.

Para facilitarles un poco el trabajo me encargué de subirles en un archivo txt con todos los GUID y la descripción de cada vista. Lo puede bajar de Aqui (ViewsId.txt).

Bueno eso es todo.

Saludos

Cómo ocultar áreas en la entidad Mapa de sitio en Microsoft CRM

Todos conocemos las facilidades que nos brinda Microsoft CRM para realizar distintas modificaciones, visuales y funcionales. En esta entrada me voy a centrar en una en particular... se trata de la entidad Mapa de Sitio (Site Map).
Pero que es el Site Map??.
Site Map es una entidad en CRM la cual nos permite definir la estructura del panel de navegación de nuestra aplicación. Es decir todo lo que se encuentra en el panel ubicado a la izquierda de nuestro CRM.

Para modificar el Site Map, lo que tenemos que hacer es simplemente exportar dicha entidad desde CRM, modificar el xml y volver a importarlo.

La estructura de los elementos del xml esta compuesta por:

SiteMap : Nodo principal
Area: Como su nombre lo indica representa un area.
Group: Representa un sub agrupamiento de los elementos principales (subarea).
SubArea: Elementos principales del panel de navegacion.
Privilege: Controla cuando un elemento principal del panel (SubArea) debe ser mostrado.

Por supuesto cada uno de estos elementos tienen sus atributos, pero no es mi intención definir cada uno de ellos, ni tampoco mostrar que efectos produce su molificación, simplemente me voy a centrar en contarles el elemento Privilege.


No esta de mas decir que para obtener información de la estructura del Site Map, como la de todos sus elementos y atributos no tienen mas que buscarlo en el
SDK.

Bien comencemos entonces...


El elemento Privilege es uno de los mas interesantes por que gracias a el podemos definir si un elemento debe ser mostrado para un usuario (o rol) en particular o no. Cuando nosotros modificamos o creamos un nuevo rol de seguridad y en el definimos que no se tienen permisos sobre una determinada entidad, Microsoft CRM se encarga de "ocultar" los vínculos a esa entidad en el Site Map.

Pero que pasa si queremos ocultar un área por completo?... y esto nos pasa con el área de configuración. Mucha gente me ha consultado de como hacer para que esta área o sección no aparezca en el panel de navegación.

Pues bien lo que tenemos que hacer es utilizar el elemento Privilege, ya que cuando Microsoft CRM detecta que un rol no tiene permisos para visualizar todos los elementos SubArea de una Area, no muestra el área en cuestión.

En el SDK podemos encontrar el siguiente ejemplo:

<SubArea Id="nav_managekb" ResourceId="Homepage_KBManager" Icon="/_imgs/ico_18_126.gif" Url="/cs/home_managekb.aspx" Client="Web"> <Privilege Entity="kbarticle" Privilege="Read,Write,Create" /> lt;/SubArea>

En este caso podemos ver que el elemento Privilege afecta a la SubArea de la Kb del módulo de servicios, en el esta definiendo que el usuario para poder ver este elemento en el panel de navegación requiere de permisos para leer, escribir y crear sobre la entidad kbarticle.

Entonces si nosotros definimos que para poder ver todos los elementos SubArea de area de configuración el usuario .. por ejemplo.. debe tener permisos de creación de usuarios (los cuales generalmente tiene el administrador de la aplicación).. el área de configuración no se visualizará para quienes no lo posean.

Les dejo el codigo de como quedaría...

<Area Id="Settings" ResourceId="Area_Settings" Icon="/_imgs/settings_24x24.gif"> <Group Id="Settings"> <SubArea Id="nav_settings" ResourceId="Homepage_Settings" Icon="/_imgs/area/18_settings.gif" Url="/tools/home_tools.aspx" Client="Web" >
<Privilege Entity="systemuser" Privilege="Create" />
</SubArea> <SubArea Id="nav_syscust" ResourceId="Homepage_SystemCustomization" Icon="/_imgs/area/18_syscust.gif" Url="/tools/systemcustomization/systemcustomization.aspx" Client="Web" >
<Privilege Entity="systemuser" Privilege="Create" />
</SubArea> </Area>

Eso es todo, no duden en dejar sus comentarios o dudas sobre el artículo.

Saludos

Personalizando la entidad lista de precios y productos de la lista de precios (PriceList - ProductPriceList) 2da Parte

Continuando con la entrada anterior les voy a contar como hacer para poder crear un nuevo atributo en la entidad "Lista de precios" (PriceLevel).

Como les comenté anteriormente si intenta crear un nuevo campo se van a encontrar con el siguiente mensaje de error.


El problema es que cuando Microsoft CRM intenta crear el nuevo atributo en la base de datos no encuentra la tabla de extensión correspondiente a la entidad.

Para poder solucionar esto vamos a hacer lo siguiente:


  1. Entramos a Managmet Studio de SQL 2005 y buscamos la base de de datos de CRM (compañía_MSCRM).

  2. Creamos una nueva tabla la cual vamos a llamar "PriceLevelExtensionBase" (Sin comillas).

  3. A esta tabla le vamos a crear un único atributo de nombre "productpricelevelid" del tipo de dato uniqueidentifier, al cual lo vamos establecer como clave primaria de la tabla (Primary Key).

  4. Guardamos todos los cambios.


Bien!.. una ver hecho esto ya tenemos la tabla de extensión de nuestra entidad lista de precios... pero... como le indicamos a CRM que esa tabla es la tabla de extensión??.

Bueno.. para eso hacemos lo siguiente:

  1. Entramos a Managmet Studio de SQL 2005 pero esta vez vamos a la base metadata.

  2. Entramos a la tabla Entity y buscamos la fila correspondiente a PriceList.
  3. Buscamos la columna ExtensionTableName y la modificamos con el valor "PriceLevelExtensionBase".
  4. Guardamos todo.


Una vez terminado volvemos al CRM a intentar crear nuevamente nuestro nuevo atributo... a ver que pasa esta vez... :)

Ahí lo tienen un nuevo atributo en la lista de precios!!!..

Una vez terminado de personalizar el formulario les recomiendo que vuelvan a la tabla Entity y modifiquen nuevamente el atributo IsCustomEntity en 0. (Sólo ese).

Algunas cosas a tener en cuenta:

  1. Recuerden que esta práctica no esta soportada por Microsoft!!
  2. Tengan cuidado cuando tengan que exportar e importar la personalizacion en un nuevo entorno.
  3. Este mismo procedimiento se puede realizar también para la entidad Productos de la lista de precios (ProductPriceLevel).
  4. Esta práctica NO funciona para todas las entidades. Solo les puedo decir que lo prueben en cada caso.
  5. No esta de mas decir que hagan esto en un ambiente de prueba.

Finalmente solo me queda decir que funciona y bien. Pero como siempre tengan en cuenta que al no estar soportado nadie les asegura que ante la aplicaron de un parche o cambio de versión esto deje de funcionar. (He instalado el Rollup 1 sobre una implementación con esta práctica y no sufrió cambios).

Bueno eso es todo espero que les sea de utilidad.

Hasta la próxima!

Personalizando la entidad lista de precios y productos de la lista de precios (PriceList - ProductPriceList) 1ra Parte


Como muchos ya saben Microsoft CRM 3.0 permite modificar las distintas entidades del sistema. Ya sea modificando o creando vistas, campos del formulario, etc.

Hace ya un tiempo me surgió la necesidad de agregar un campo en la entidad lista de precios (PriceLevel).


Como simpre abrí el CRM ,me fui a personalizacion, busque la entidad lista de precios, abrí el formulario para agregar un nuevo atributo y...... y???.. nada. Nada de nada, no podía modificar ni el nombre de la entidad. Pero si la entidad es personalizable por que no puedo modificar nada???.

Buena pregunta..., y no tengo respuesta, pero lo que si se es como solucionarlo.

Antes que nada les aclaro que esta customización que les explico NO esta en lo mas mínimo soportada por Microsoft, así que toda la responsabilidad de lo que pueda pasar queda en sus manos..je.


Para resolver esto lo que hay que hacer es lo siguiente


1) Ir a la base de datos y abrir la base de datos de metadata.
2) Abrir la tabla "Entity".
3) Buscar la fila que corresponde a la entidad PriceLevel y modificar el atributo "IsCustomEntity" y "IsCustomizable" con el valor 1.

Al volver a la personalización de la entidad.. Voilà!!!


Ahora puedo modificar el formulario de la entidad cambiando las vistas, campos, agregando javascript, etc.

y agregar un nuevo atributo??...mmm. se van encontrar con un lindo error cuando CRM intente crearlo, pero no se desesperen tiene solución y se las voy a explicar en la próxima entrada!!.

Saludos y hasta entonces... :P

El comienzo...

Les doy la bienvenida a todos a mi Blog!!.
Antes que nada me gustaría presentarme y contarles un poco del motivo de este blog.
Soy de Argentina y hace un poco menos de 4 años comencé a conocer Microsoft CRM y a trabajar con él.

Desde la versión 1.0 (prefiero olvidarla) hasta hoy, realice varias implementaciones del producto, viviendo distintas experiencias, alguna buenas y otras no tanto.
Actualmente en lo que ocupo la mayor parte del tiempo es en desarrollar nuevos módulos, integraciones con distintos ERP y personalizaciones sobre CRM.
El propósito principal de este blog es poder compartir experiencias del producto con los distintos usuarios, consultores y toda aquella persona que tenga interes en la aplicación o simplemente curiosidad.

De antemano le doy las gracias a todos los que se interesen en mi blog!!..