Cambiando el puerto web de CRM con Deployment Configuration Tool
Cambiar el puerto web donde se accede al Dynamics CRM, requiere de algo más que solo ir al IIS manager y cambiar el número de puerto. Recientemente realizando una integración de los Web Services de Dynamics y PHP con SOAP, tuve que cambiar el # de puerto, con lo cual el SDK quedo inaccesible, presentando el siguiente error:
HTTP Error: cURL ERROR: 7 couldn’t connect to host url: http//<myserver>:80/MSCrmServices
/2007/CrmService.asmx
Finalmente encontré una herramienta de Microsoft que permite realizar los cambios necesarios solucionando el problema: Microsoft Dynamics CRM Deployment Configuration Tool. Las siguientes notas técnicas explican donde bajar la herramienta y como se utiliza:
support.microsoft.com/kb/947423/
support.microsoft.com/kb/949079/
Microsoft Dynamics Sure Step 2010
Ya está disponible el Dynamics Sure Step 2010. Se puede bajar del sitio de Partnersource, pero es necesario tener una cuenta de Partner.
Internet Facing Deployment
Internet Facing Deployment (IFD) permite a los usuarios de Dynamics CRM, mediante autenticación basada en “Forms”, accesar la aplicación en Internet. La autenticación “default” de Dynamics CRM es “Integrated Windows Authentication”, y funciona también en Internet Explorer.
La autenticación default, tiene la ventaja de ser transparente a los usuarios de la red, en computadoras que pertenezcan al dominio en el que está instalado el CRM. En C# podemos utilizar esta autenticación, tomando la información del cache de credenciales:
private System.Net.NetworkCredential credentials;
credentials = (System.Net.NetworkCredential)System.Net.CredentialCache.DefaultCredentials;
Esto es posible porque el usuario se encuentra autenticado en “Active Directory”.
Para accesar el CRM, fuera de la red, digamos desde Internet, es necesario utilizar “Forms Authentication”, entonces necesitamos del IFD. IFD es utilizado por los proveedores de Dynamics CRM en hosting, pero si usted tiene el CRM dentro de la red de oficina, y desea publicar su CRM en internet, deberá hacer la configuración manual de IFD, así cómo tomar en cuenta otras consideraciones de seguridad (certificado digital, firewall…etc…)
La autenticación basada en Forms, requiere que el usuario proporcione nombre de usuario y clave, en C# podemos encontrar el código requerido para este caso de la siguiente manera:
private System.Net.NetworkCredential credentials;
credentials = new System.Net.NetworkCredential(username, password, domain);
Aquí puede encontrar la documentación de los escenarios de IFD para Dynamics 4, así cómo la aplicación IFD Configuration Tool, requerida para la configuración de IFD.
Dar más vida a su Laptop
Recientemente, pensaba en comprar una nueva Laptop. La que tengo actualmente no está mal, pero se me acabó el espacio en el disco duro (SATA 160 GB), y no tenía suficiente memoría (1.5 GB) para correr más de una maquina virtual con Microsoft Virtual PC, o crear efectos digitales de video en Adobe After Effects (Como por ejemplo la intro que hice del sitio en youtube). En fin, me decidí por realizar un típico upgrade de memoria y disco duro, por menos de $200. Para empezar, le instalé un disco duro Seagate de 500 GB y 4GB de memoria marca Crucial, que conseguí en AMAZON:
| Y aunque mi laptop no reconoce los 4 GB por problemas de BIOS, quedó en 3.4G. El Disco duro Seagate tiene un jumper para configurarlo con interfaz SATA 1.5 o 3.0. |
El resultado final, mayor velocidad, más del doble del espacio en disco duro, y ya puedo trabajar tranquilamente con dos máquinas virtuales con 1 GB de RAM asignados a cada una.
CRM WebService Error: Only one usage of each socket address (protocol/network address/port) is normally permitted
Este error se presenta cuando se hacen aplicaciones que utilizan los WebServices de Dynamics CRM, y en realidad es un error que puede ocurrir con aplicaciones que utilizan WebServices en general, en situaciones que se requiere carga masiva de datos.
Esto hace que los settings por defecto IIS no sean suficientes, y tendremos el mensaje “Only one usage of each socket address (protocol/network address/port) is normally permitted (typically under load).”
Esto sucede en cargas grandes de datos, al abrir y cerrar conexiones. Al cerrar la conexión, la misma entra en un estado de espera de 240 segundos (TIME_WAIT).
El problema ocurre porque por default, se usan los puertos 1024 a 5000, lo que da 3976 puertos para utilizar. Al estar realizando múltiples inserciones por segundo (lo cual significa múltiples llamados a los webservices, y cierres de conexión por segundo, los puertos se acaban rápidamente.
Pasos para solucionar el problema:
Esto requiere cambiar (o adicionar) 2 llaves en el registry. Como es usual se recomienda precaución al modificar el registry. Realice este procedimiento bajo su propia responsabilidad.
1. Incremente el rango de puertos, hasta un valor máximo de 65534. (Puede buscar otro valor de ajuste para su caso en particular).
o Use Regedit, y edite HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\MaxUserPort (si la llave no existe, haga una nueva como DWORD )
o Ajuste el valor como DECIMAL a 65534, u otro valor de ajuste que considere conveniente para su caso.
2. Reduzca el TIME_WAIT de las conexiones, para que los puertos sean reciclados más pronto:
o Use Regedit, y editar HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\TCPTimedWaitDelay (si no existe, crearla como DWORD )
o Ajuste el valor a 30 cómo decimal.
Referencia de Entidades y Campos Dynamics CRM 4
Cuándo estamos programando JavaScript para los eventos OnLoad, OnChange, o los WebServices, se hace necesario tener a mano una lista con los nombres de entidades y sus respectivos campos. Esto se hace difícil si tenemos que estarvisitando la sección de Settings / Customization, pues se pierde mucho tiempo.
La solución, utilizar este link provisto por el Dynamics
http://servidor:puerto/sdk/list.aspx
Ese link muestra un listado de todos las entidades, y se puede ir al detalle, donde se muestran los atributos, sus respectivos tipos y relaciones.
Color de Campos “Read Only”
Al deshabilitar un campo en Dynamics CRM desde la propiedad Read Only en Personalización de formularios, el formato de la hoja de estilo (css) cambia el color de los campos o controles deshabilitados a gris palido. Si fuese necesario modificar el color para hacer el campo más visible o agradable tenemos dos opciones:
1. Modificar la hoja de estilo de controles que se encuentra en la carpeta /_forms/controls/controls.css.aspx (que de paso es una modificación no “soportada”).
2. Utilizar JavaScript en el evento OnLoad para deshabiliar el control y cambiar suspropiedades de formato, en lugar de utilizar la propiedad Read Only de personalización.
Ejemplo caso 1, hoja de estilo, cambiar los códigos de color a algo más visible, experimentando con los valores de color: (los colores mostrados en los valores numéricos son los colores actuales en la hoja de estilo):
INPUT.ms-crm-ReadOnly,
TEXTAREA.ms-crm-ReadOnly,
DIV.ms-crm-ReadOnly,
SPAN.ms-crm-ReadOnly
{
background-color: #EAF3FF;
color: #000000;
border-color: #C5C5C5;
}
Ejemplo caso 2, con JavaScript, deshabilitando el campo (sin utilizar la propiedad Read Only en personalización) y luego modificando sus propiedades:
crmForm.all.<NombreCampo>.Disabled = true; //Deshabilita el campo <NombreCampo>
crmForm.all.<NombreCampo>.style.textColor= “#000000″;
crmForm.all.<NombreCampo>.style.borderColor= “#ff0000“;
crmForm.all.<NombreCampo>.style.backgroundColor = “#c0c0c0“;
Los códigos del ejemplo son para referencia, por lo que deberá seleccionar colores que se ajusten al gusto del cliente, y esta herramienta le puede ayudar, solo copie el valor HEX generado:
Qué es un CRM “On Premise” y qué es “On Demand”
Los conceptos de CRM On Premise and CRM On Demand no son nuevos, pero igual no está de más una rápida explicación sobre él significado de ambos términos, pues sos dos estrategias diferentes, que pueden impactar positiva o negativamente en nuestros ambientes de TI y de negocio.
Al inicio de un proyecto de CRM, posiblemente será un buen momento para revisar cómo está todo en casa, pues los proyectos de CRM tienen la particularidad de sacar a la luz muchas cosas que no estan bién a nivel técnico de TI y de negocios.
On Premise: Lo que hace la mayoría de las empresas en América Latina (y el mundo). Contratan a un proveedor de soluciones de software, idealmente certificado y con experiencia en la aplicación a adquirir, que se encarga de la instalación e implementación del software de CRM, pues no siempre se cuenta con personal experimentado para arrancar el proyecto.
El software es adquirido en su totalidad, licencia de servidor, de cliente, y contrato de mantenimiento de software/servicios, más: licencias de sistema operativo de servidor, licencias de base de datos, hardware para los nuevos servidores, sean propios o alquilados (hey…a nadie le sobran servidores para los proyectos de software…). La empresa dueña del flamante CRM, será la responsable de actualizar, respaldar y gestionar todo lo relacionado al CRM.
On Demand: Aquí no compramos nada, hacemos uso del software cómo un servicio, a ver, algo así: este més hay que pagar el recibo del agua, la electricidad, Internet, salarios, y también… el CRM. Nota: Si no paga su recibo mensual de CRM…adivinó…tampoco tendrá acceso al mismo, al menos no normalmente. Ya en serio, en este modelo, su empresa contrata un servicio por cuotas mensuales o anuales a un tercero, que brindará toda la plataforma de software, hardware y administración de TI para que usted haga uso del CRM mediante acceso por Internet. Ventaja, usted no tiene que comprar, mantener y gestionar software/ hardware.
Los upgrades o actualizaciones son “gratis” pues forman parte del servicio. Sus datos reciden en un servidor propiedad de la empresa que ofrece el servicio, y que probablemente (?) contará con personal, condiciones de seguridad y disponibilidad que no se pueden replicar a bajo costo en su propia empresa. Baste decir que dichos proveedores de servicios (al menos en Estados Unidos) , cumplen con normas muy estrictas, y utilizan impresionantes DataCenters. (Ese tema da para otro post).
En este modelo es sumamente importante contar con buen ancho de banda para Internet, y de ser posible contar con dos enlaces a proveedores distintos, para tener acceso Multi-Wan, pues si se cae la conectividad a Internet, no se puede usar la aplicación. Por otro lado, su aplicacción se puede acceder desde cualquier lugar del mundo, vía Internet Explorer o FireFox (verifique con su proveedor los navegadores soportados…)
Algunos CRM ON Premise, con los que he trabajado:
• Microsoft Dynamics CRM
• Pivotal ePower
• SugarCRM
• Numara FootPrints (no es un CRM, pero permite crear funcionalidad similar.)
• SalesLogix
Y algunos CRM On Demand:
• SalesForce
• SalesNet
• NetSuite
• Microsoft Dynamics CRM (si, lo notó, también Microsoft tiene ambos mundos…)
• SugarCRM
• Numara FootPrints
Probablemente notó que algunos fabricantes tienen disponibles ambos mundos, así que el tema de cual modelo debe escoger, depende de la estrategia de TI y presupuesto, entre otras variables.
Hoy en día comparar aplicaciones de CRM es algo cada vez más difícil, las diferencias son borrosas, pues todos tienen más o menos los mismos módulos (Ventas, Mercadeo y Servicio) y funcionalidades similares, idiomas, y tecnologías subyacentes.
Por ejemplo Numara Footprints corre en MySQL, en Oracle y Microsoft SQL Server. Otros como Pivotal corren en Oracle y Microsoft SQL Server. Todos corren en Internet Explorer, algunos en FireFox..etc…
Definitivamente, es necesaria una evaluación financiera (acorde al tamaño y naturaleza de su empresa), por lo que montar unas tablitas en Excel no está de más.
Una mirada al Dynamics CRM 4.0 SDK
Algunas veces no ponemos atención a los archivos que contiene el SDK de Dynamics, pero dando una buena mirada a los folders, encontraremos muchos ejemplos útiles de código para el servidor y para el cliente, así como para crear funcionalidad adicional para los Workflows. Si el Workflow no puede hacer lo que usted quiere, ayúdelo construyendo un Custom Assembly. Este SDK se baja del sitio de downloads de Microsoft, y a la fecha está disponible en idioma Inglés y Japonés (Domo Arigato…Mr. Gates)
Esta es una lista de los contenidos de los archivos del SDK:
|
|
|
|
Bin\Microsoft.Crm.Sdk.dll |
Tipos y métodos para desarrollar plug-ins y workflows |
|
Bin\Microsoft.Crm.SdkTypeProxy.dll |
Tipos y m étodos para desarrollar plug-ins y workflows |
|
Bin\msidcrl40.dll |
Tipos y métodos requeridos para autenticación en Windows Live |
| Client\ | Ejemplos de código JavaScript para programación de cliente, como eventos OnLoad y OnChange |
| Server\ | Ejemplos de código para programación del lado del server, en C# y VB, bastantes ejemplos. |
|
Tools\ |
Aquí está el pluggindeveloper y el plugginregistration, para la creación de Custom Assemblys que podemos utilizar en los Workflows. |
|
Walkthroughs\ |
El código ejemplo que se utiliza con el SDK Help |
| WSDL\ | Este archivo se utiliza con el Microsoft Dynamics CRM Online. |
| CrmSdk4.chm | Archivo de ayuda para el SDK, el que realmente nos interesa pues contiene toda la documentación del SDK |
| LicenseTerms.doc | Los típicos téminos de Licencia de Microsoft. |
| SDKReadme.htm | Archivo que describe la información aquí expuesta. |
| CRM4 UX Design Guide.pdf | Guía para construir interfaces gráficas, que sean consistentes con el diseño de Microsoft Dynamics CRM 4.0, asi nuestras páginas se verán iguales a las del CRM. |


