Actualización de Microsoft Dynamics CRM 3.0 SDK

Microsoft acaba de liberar la versión 3.0.5 del SDK de Microsoft Dynamics CRM. Esta versión corrige errores de versiones anteriores del CRM y añade nuevos ejemplos y documentación. Entre las principales novedades encontramos:


La información de referencia para programación de la Guía de Programación del Servidor contiene por fin información detallada sobre todos los atributos y todas las entidades del CRM, ahorrándonos el tener que usar el Visor de Metadatos (http://crmserver/sdk/list.aspx). Además se ha añadido información sobre otra gran fuente de dolores de cabeza con las personalizaciones, las enumeraciones de statuscode y statecode y la relación existente entre ellos para cada entidad. Según se informa en la noticia, se han actualizado cerca de 4000 referencias en el SDK, todo un gran trabajo.


Nuevos ejemplos de programación, tanto para el lado cliente como para el lado servidor. Como por ejemplo, trabajar con campos lookup, convertir un objeto dynamic entity a un objeto de una clase concreta del CRM, cómo averiguar el ID de un registro, etc.


Mejora del apéndice sobre roles de seguridad y privilegios, añadiendo también un montón de información sobre todos los privilegios necesarios para los mensajes del método execute del Servicio Web.


Un ejemplo de cómo llamar a servicios web desde código de lado cliente utilizando AJAX. Para mi uno de los mejores


Bueno, no os digo más, probadlo.

Sincronizando datos de Microsoft Dynamics CRM con otras aplicaciones

Hoy vamos a hablar de Microsoft CRM Synchronization Tool, un nuevo ejemplo de la gran y activa comunidad que está surgiendo en torno a Microsoft Dynamics CRM. Se trata de una herramienta de sincronización de datos, creada por Justin Santa Barbara, que nos permitirá tener servidores web remotos (o aplicaciones) que utilicen los datos de Microsoft Dynamics CRM para lectura/escritura manteniendo la sincronización de los datos. Y todo ello mediante métodos soportados, sin comprometer las futuras actualizaciones de nuestro despliegue de CRM.


¿Cómo funciona?


La herramienta se basa en las vistas filtradas para obtener los datos de Microsoft Dynamics CRM 3.0 y en los servicios web para introducir las modificaciones de los datos al CRM. Microsoft CRM Synchronization Tool se encarga de crear una BBDD con tablas que tengan una estructura similar a las vistas filtradas de las entidades que queremos utilizar en la sincronización. Una vez creadas, la herramienta se encarga de comprobar los cambios en los datos las vistas para trasladarlos a las tablas, y viceversa, trasladar los cambios de las tablas al CRM mediante los servicios web.


Con esto conseguimos tener una BBDD con tablas sincronizadas con el CRM, pero aún falta algo, falta la posibilidad de que la aplicación se encuentre en un lugar remoto y que no se pueda asegurar una conexión de red de forma continua. Por ejemplo un servidor CRM en nuestras oficinas, y un servidor web en hosting externo que tiene un aplicación web que necesitamos que utilice datos del CRM. Para esto, la herramienta utiliza una característica de replicación de SQL Server, concretamente Merge Replication, que permite tener sincronizadas las tablas de dos BBDDs. Con esto conseguimos tener una BBDD en el servidor web que utilice datos del CRM, y se sincronice con el CRM cuando se encuentre disponible la conexión entre ambos servidores. En este pdf podéis encontrar un esquema sobre el funcionamiento de Microsoft CRM Synchronization Tool.


Pero la cosa no acaba ahí, también es posible limitar los registro que se utilizan de Microsoft CRM para evitar transmitir por la red datos innecesarios. Podemos, por ejemplo, hacer que las consultas de los usuarios en la web se carguen al CRM sin que sea necesario sincronizarlas de vuelta, es decir, sincronizando en un solo sentido.


En resumen…


La idea es sencilla, pero elegante y eficaz, con lo cual resulta una gran solución para establecer un mecanismo de sincronización de datos en Microsoft Dynamics CRM y otras aplicaciones. Sin embargo, aún no está madura y le falta la documentación, pero en cuanto se avance en su desarrollo seguro que será un “must-have” para Microsoft Dynamics CRM.


Podéis encontrar el código fuente de la herramienta en C# y un pdf aclaratorio de su funcionamiento en CRM SandBox y el blog de Justin Santa Barbara


Hasta la próxima,


Marco Amoedo Martínez

Informe sobre Microsoft Dynamics de Forrester Research

Forrester Research, una conocida firma de investigación de mercados y tendencias tecnológicas, publicó hace un par de meses un informe sobre Microsoft Dynamics y su estrategia. En él se revisan los objetivos de Green Project, y las estrategias de versionado en olas.


 


Aunque no aporta grandes novedades, es de lectura recomendada, ya que nos hace meditar un poco sobre los puntos clave de Microsoft Dynamics, y sus posibilidades y objetivos a largo plazo.


 


Prestad especial atención a los comentarios de los analistas de Forrester sobre la estrategia de mejora de la usabilidad con roles, y la mejora que Microsoft esta llevando a cabo en la experiencia de usuario. También destacar los comentarios sobre las funcionalidades CRM de otros productos de Dynamics, y la estrategia de presentar Dynamics CRM como un producto bien diferenciado en previsión de un futuro.


 


Y sobre todo, aunque no leáis el resto del informe (que sólo tiene 6 páginas), leer las conclusiones. Muy interesante la recomendación final sobre los puntos clave para  decidirse por Microsoft Dynamics en una empresa, aunque creo que es una excesiva simplificación y debería incluirse alguno más. Y sin desperdicio las conclusiones finales que, en resumen, vienen a decir que: Microsoft tiene muy buenas oportunidades de triunfar en este sector, pero que tendrá que lidiar con la complejidad de sincronizar las versiones de sus familias de productos para conseguir el objetivo final, ya que si no podría llegar con retraso con respecto a sus competidores SAP y Oracle.


 


Os dejo el informe de Forrester en la sección de archivos, aunque esta disponible para la descarga desde Microsoft Downloads. También echadle un vistazo a esta imagen sacada del informe, que ayuda a poner en orden las claves de Green Project.


 


Saludos,


Marco Amoedo Martínez



Informe: http://geeks.ms/files/494/download.aspx


SharePoint CRM List Web Part, solución del problema de instalación

A estas alturas la mayoría ya conoceréis la existencia del CRM List Web Part para Sharepoint. Personalmente creo que es una grandísima herramienta, ya que permite integrar gran parte de la información de Microsoft Dynamics CRM en los sitios de SharePoint, facilitando la colaboración y el trabajo diario a los usuarios.


Por poner un ejemplo, imaginad un sitio de SharePoint de soporte técnico en el que queramos almacenar una librería de documentación técnica, un foro para el personal técnico, y publicar noticias relacionadas con el servicio técnico. Vamos un lugar de colaboración y comunicación entre el equipo técnico, es fácil de conseguir con SharePoint ¿no? Pero, no sería más cómodo para un técnico de servicio, y mucho más productivo, poder ver la lista de casos sin resolver que tiene asignada directamente en la portada del sitio de SharePoint, sin tener que mantener otro navegador abierto con el CRM, y además poder abrir el caso con solo hacer click sobre él en la lista. Pues esta es una de la múltiples posibilidades que nos abre el CRM List Web Part, y que combinadas con otros Web Parts como el de Reporting Services, pueden permitirnos crear sitios web SharePoint que tengan toda la información necesaria para el trabajo diario de algunos roles de personal sin necesidad de conocer el funcionamiento completo del CRM.


El Problemas de Instalación


Bueno, y ahora viene la justificación del título de este post. Seguro que a más de uno le ha pasado que al intentar instalar esta herramienta se encuentra con un curioso error diciendo que no tenemos una versión válida de SharePoint. A mí también me pasó. La causa, una “cagada” en la comprobación de la versión que hace que el instalador sólo detecte como válida la versión Inglesa.


A la espera de que solucionen este problema en el instalador, os voy a dar un pequeño rodeo, o “workarround” que si no está en inglés igual no funciona, para solucionar el problema.


La Solución


En resumen, lo que tendremos que hacer es instalar manualmente el Web Part en nuestro SharePoint no inglés. Para ello necesitamos extraer del instalador el .cab que contiene el Web Part y utilizar un comando de administración de Sharepoint para instalarlo en nuestro servidor.




  • Paso 1, conseguir el .cab: En la documentación encontramos este comando, Msiexec /i listwebpart.msi EXTRACTCABONLY=1 TARGETDIR=<path to install location>, pero de nuevo el problema está en que debe ejecutarse en un servidor con Sharepoint en inglés. Pero no os preocupéis, ya lo he hecho yo en un Virtual PC, así que bajaros el archivo con el .cab de Microsoft CRM List Web Part.


  • Paso 2, instalar el .cab en el servidor: Debemos de ejecutar este comando en el servidor de SharePoint donde queramos instalar el Web Part, «C:Archivos de programaArchivos comunesMicrosoft Sharedweb server extensions60BINstsadm» -o addwppack -filename MicrosoftCRMListWebPart.cab -globalinstall.


  • Paso 3, configurar el Web Part: Seleccionar “editar página compartida” en el sitio SharePoint en el que queráis añadir el Web Part , pulsad añadir elementos web, y en la galería del servidor virtual encontrareis el CRM Web Part. Una vez añadido sólo hay que configurarlo, indicando entre otras cosas la dirección del servidor de CRM (ie: http://servidorcrm:5555), pero la configuración es bastante intuitiva y no muy compleja. En este enlace tenéis más explicaciones sobre la configuración del Web Part, y sobre como conectar varias instancias para mostrar listas de registros relacionados (ie: un web part con cuentas, y otro con los casos de la cuenta seleccionada en el anterior).

Conclusión


Una magnifica utilidad que Microsoft nos da, una vez más, para Dynamics CRM 3.0, aún a pesar de la pequeña “cagada” con la instalación. Si no lo habéis probado, no sé a que estáis esperando, por que de verdad que os va a gustar.


Como recomendación final, si necesitáis hacer un despliegue más complejo que CRM y SharePoint en el mismo servidor, leeros la documentación del Web Part por que hay que configurar unas cuantas cosillas más.


Saludos,


Marco Amoedo Martínez

Más sacudidas de la primera ola – Dynamics AX 4.0 RTM

Ya hace meses que comenzaron las sacudidas de la primera ola de Green Project con Microsoft Dynamics CRM 3.0 y un “desconocido” en nuestro mercado Dynamics GP 9.0, es hora de otra «sacudida», Microsoft Dynamics AX 4.0.


 


El 9 de Junio Microsoft liberó Dynamics AX 4.0 RTM, dando disponibilidad general para el acceso a esta solución ERP. Esta versión se encuentra dentro de la primera ola de aplicaciones de Green Project, el proyecto de futuro de Microsoft Dynamics, y cumple con lo requisitos para ello. Se han incluido servicios web, integración total con Office y Sharepoint, experiencia de usuario mejorada, feeds RSS, Business Inteligence con SQL Reporting Services 2005 y un montón de cosas más.


 


Entre las nuevas funcionalidades más destacables están cosas como el soporte RFID, que posibilitará una mayor automatización de la cadena de suministro. Un nuevo conector para BizTalk 2006, que permitirá mayores facilidades de integración. El AIF (Application Integration Framework) para integrar procesos entre compañías utilizando XML. Una arquitectura orientada a servicios con un modelo de objetos con metadatos, que permite extender y adaptar la aplicación para adecuarse a cualquier entorno.


 


Sólo hay un pero, las versiones localizadas y adaptadas a otros mercados saldrán para finales de año. Así que tendremos que esperar un poquito más para poder tener Dynamics AX 4.0 en español.


 


Ahora falta que se cumpla una promesa, el conector de Axapta 4.0 para CRM 3.0, al igual que el existente para GP 9.0, que permitirá sincronización on-line entre ambas soluciones. Algo que anunció Satya  Nadella en su blog hace un tiempo, y que también debería cumplirse para la siguiente versión de Dynamics NAV 5.0.


 


Si queréis saber más sobre esta noticia podéis consultar el blog de Satya, donde además teneis disponible un podcast con entrevistas a partcipantes del TAP (Technology Adoption Program) de AX 4.0. Y la nota de prensa de Microsoft sobre el lanzamiento.


 


Como veis Microsoft está haciendo una apuesta muy fuerte por el mercado de software empresarial con Microsoft Dynamics. ¿Qué os parece?


 


Saludos,


Marco Amoedo Martínez

Como conseguir una actualización segura de CRM 1.2 a 3.0

Esta es una pregunta que estoy viendo muy a menudo por lo foros, y es de suponer que la gente de soporte de Microsoft Dynamics también, porque a principios de Junio se ha publicado el Microsoft CRM 3.0 Upgrade Advisor Wizard. Una herramienta que diagnostica una instalación de Microsoft CRM 1.2 y genera un informe indicando si nuestra instalación está preparada para actualizarse. Además, está disponible en castellano entre otros idiomas.


No la he probado todavía, pero se supone que en caso de encontrar algún problema la herramienta nos avisará y nos dará algunas pistas para solucionarlo. Si no, siempre nos quedarán los foros. En cualquier caso, esto es otra muestra más del gran esfuerzo que Microsoft Dynamics está haciendo con esta solución CRM.


En estos procesos de actualización de versiones es cuando toma sentido la recomendación: “Usar personalizaciones soportadas”, que luego intentamos actualizar y pasa lo que pasa.


¿Alguna experiencia traumática con actualizaciones? Dejad vuestros comentarios.


Saludos,


Marco Amoedo Martínez

Pruebas de rendimiento de Microsoft Dynamics CRM

Hace un mes os hable de un nuevo toolkit de Microsoft Dynamics para hacer pruebas de rendimiento de Microsoft Dynamics CRM 3.0, el Microsoft CRM Performance and Stress Toolkit. Como ya vimos esta era una herramienta muy potente y que nos permitiría establecer métricas de rendimiento sobre una implementación de la herramienta CRM.


Como primer ejemplo de lo que se puede conseguir con este toolkit, en CRM Sandbox han publicado un informe sobre unas pruebas de rendimiento de Microsoft Dynamics CRM. Os adelanto que los resultados son muy buenos. Se trata de unas pruebas que simularon a unos 2000 usuarios concurrentes, haciendo una operación aproximadamente cada 8 minutos sobre un conjunto de datos de 80Gb (8.5 millones de filas). Vamos una prueba de carga “heavy”, como dicen los ingleses, y que supera con creces a lo que se puede considerar un despliegue de tamaño medio.


Eso sí, hay unas pequeñas trampas, la polémica ya está servida. El hardware estaba compuesto principalmente por dos pedazo de servidores con 4 procesadores Xeon de última generación y 32Gb de RAM, es decir, unos pedazo de bichos. Otro truco, y para mí lo más interesante del informe, son una serie de optimizaciones sobre los índices de la BBDD de Microsoft Dynamics CRM. Os recomiendo que le echéis un vistazo a estas optimizaciones, no tienen desperdicio. Y finalmente tampoco había definida ninguna regla de workflow en el entorno de prueba, a mi me hubiese gustado ver como se comportaba lanzando un montón de procesos de workflow, pero bueno, cuando convenza a alguien para que me preste unos servidores así lo probaré.


Venga, echadle un vistazo vosotros mismos y me comentáis vuestras opiniones.


Hasta la próxima,


Marco Amoedo Martínez


 

Nueva demo de Microsoft Dynamics CRM

Microsoft Dynamics ha publicado una nueva demostración de CRM 3.0 que será de gran ayuda a todos los que tengan que demostrarle a alguien las maravillas y posibilidades de este producto. La demo se publica en formato de imagen de Virtual PC 2004, consiste en una máquina virtual corriendo Windows 2003 con Microsoft Dynamics CRM 3.0 y todo lo necesario ya instalado.


Esta demo está pensada, en principio, para marketing y venta de la herramienta, pero hará las delicias de todos aquellos a los que nos gusta curiosear las capacidades de este magnífico software. Podremos ver en funcionamiento cosas tan interesantes como la integración con Sharepoint, la creación de un portal web de servicio al cliente integrado con Microsoft Dynamics CRM, data mining, ejemplos de la potencia del workflow, y un montón de mejoras más que podréis descubrir en los 3Gb y pico que ocupa.


Sin duda, es una gran herramienta de Marketing a la hora de convencer a un cliente de las ventajas y beneficios de Microsoft Dynamics CRM 3.0, sobre todo si queremos mostrarle todas las posibilidades de la herramienta. Pero también es una gran ayuda para profundizar más en la parte técnica, “destripando” las personalizaciones y viendo su funcionamiento.


Esta demo de Microsoft Dynamics CRM 3.0 ha sido fruto de un montón de sugerencias hechas por partners de Microsoft en el sitio Microsoft CRM VPC Feedback, donde si queréis podéis dejar también vuestras sugerencias para futuras versiones de la demo. De nuevo, una gran muestra del magnífico trabajo “comunitario” que Microsoft Dynamics está haciendo con esta herramienta.


Podéis consultar un pdf en el blog de Ben Vollmer que explica más en detalle todas las novedades y mejoras a la imagen de VPC. La demo de Microsoft Dynamics CRM 3.0 está disponible en el centro de descargas de Microsoft. ¿A que estáis esperando?


Marco Amoedo Martínez


Microsoft Dynamics CRM 3.0 Imagen VPC

Visor del log de trazas en Microsoft Dynamics CRM 3.0

Lo prometido es deuda. En el post anterior, sobre depuración de errores en Microsoft Dynamics CRM, mencioné la existencia de una herramienta para facilitar este trabajo. Y aunque no es la única de este tipo, si es un buen ejemplo del magnífico universo de herramientas que están surgiendo entorno a Microsoft Dynamics CRM.


El programa en cuestión se llama CRM Trace Log Viewer, y siguiendo el enlace llegareis al blog de Michael Hoehne (autor de esta herramienta) en donde podréis encontrar, además del zip con la herramienta, más información sobre su utilización. No sé a que estáis esperando para descargarlo.


Es un software muy claro y fácil de usar, que nos permite visualizar cualquier fichero de log de trazas de Microsoft CRM de una forma muy sencilla. Además incluye funcionalidades que nos facilitan nuestro trabajo diario, como visualizar trazas de forma remota, filtrar trazas por usuario y niveles de log, e incluso la posibilidad de habilitar el registro de trazas sin tener que tocar el registro de Windows a mano.


En resumen, este es un gran ejemplo de la gran comunidad y las magníficas herramientas que se están creando entorno a Microsoft Dynamics CRM. Os recomiendo que probéis esta herramienta, aunque no sea para depurar problemas en el CRM, porque os ayudará a entender un poquito más el funcionamiento de este potente software. Eso sí, tened en cuenta que activar las trazas supone una carga adicional al servidor, y que es mejor que lo probéis en un servidor que no esté en producción.


Saludos,


Marco Amoedo Martínez


PD: Estoy considerando sortear un jamón, o unos centollos de la ría con un vino albariño, al que deje el comentario más gracioso (o por lo menos deje alguno). ¿Qué os parece? Eso sí, primero tendremos que buscar un patrocinador.

Depuración de errores en Microsoft Dynamics CRM 3.0

Una de las primeras cosas que necesitamos saber en cuanto empezamos a programar o a utilizar un nuevo entorno es como depurar los errores. Desde los típicos, y en algunos casos muy útiles, mensajes por pantalla “pasé por aquí”. Hasta cosas más sofisticadas y eficaces como break points y depuradores, librerías para crear logs…etc. Pero, hagamos como lo hagamos, esto siempre es necesario. Así que Dynamics CRM no iba a ser menos, y no sólo a base de mensajes por pantalla eh!


 


Microsoft CRM 3.0 incluye una serie de métodos de depuración bastante familiares para los desarrolladores de aplicaciones en .NET, y bastante potentes como para poder resolvernos algún error enigmático de la aplicación. El primero de ellos, ya sé que no es propiamente del CRM, es utilizar el entorno de depuración de Visual Studio que para eso está.


 


Cuando desarrollemos aplicaciones que llamen a los Servicios Web de Microsoft Dynamics CRM 3.0 acordaros siempre de encerrar la llamada en un bloque try catch. Y siempre, independientemente de otras excepciones que necesitéis capturar, poner una sentencia catch específica para SoapException. Ahí os va un ejemplo. Consultar el blog de Rodrigo Corral (que es un fiera en estos temas) para saber más cosas sobre el manejo de excepciones, y buenas prácticas sobre esto.


 


try {
  
//hacer algo con CRM service
}

catch (System.Web.Services.Protocols.SoapException e) {
   Log(«Detail = » + e.Detail.InnerText + «rnException: » + e.ToString());
}


 


Vale, este primer método no es propio del CRM. Bueno, pues vamos a ver un segundo método que tampoco lo es. A estas alturas ya sabemos que el cliente web de CRM está construido sobre .NET, por lo tanto es una aplicación ASP.NET. Ya sabéis por donde voy ¿no? Pues claro, como toda aplicación web ASP.NET podemos activar el modo de depuración, para que en vez de mostrarnos ese mensajito tan frustrante de: “Ha ocurrido un error. Contacte con el Administrado del Sistema”, nos dé una excepción de verdad, de las de toda la vida con su traza y todo. Para hacer esto, sólo tenéis que modificar la línea del web.config de la aplicación web del CRM donde aparece DevErrors, poniéndole el valor a On .


 


<add key=«DevErrors« value=«Off«/>


 


Eso sí, por favor acordaros de no dejar esto activado una vez el entorno esté en producción.


 


Bueno y ahora sí un método propio del CRM, los archivos de trazas. Como toda gran aplicación que se precie Microsoft Dynamics CRM 3.0 ha sido diseñado incluyendo en su código sentencias para realizar logs de trazas que pueden ser de gran utilidad. Por ejemplo para encontrar más detalles sobre los fallos de nuestros assemblies de WorkFlow o Call-Outs, o sobre extraños comportamientos en el CRM, o simplemente por que nos pica la curiosidad por saber más del funcionamiento de Dynamics CRM.


 


Para activar las trazas tenemos que añadir o modificar una serie de valores en el registro de Windows de nuestro Servidor CRM bajo la clave 


 


 HKEY_LOCAL_MACHINESoftwareMicrosoftMSCRM


 


 





























Nombre


Tipo


Valor


TraceEnabled


dword    


1 (0 para inhabilitarlo)


TraceDirectory


string


Path completo a un directorio EXISTENTE donde almacenar los archivos de trazas. ¡El CRM no lo crea!


TraceCategories 


 


 


 


 


 


 


string


 


 


 


 


 


 


«*:Verbose» (sin las comillas).
En vez de verbose puede especificar niveles más restrictivos para contener el tamño del archivo: Info, Warning, Error.


En vez de * se pueden indicar que partes del sistema nos interesa logear: Application, SchedulingEngine, etc, y subcategorías de estas. Consultar el artículo relacionado para más información


TraceCallStack


dword


1 (para incluir la pila de llamadas)


TraceRefresh


dword


1


 


Podeis encontrar más información sobre la activación de logs de trazas y su configuración en el artículo de la Knowledge Base “How to enable tracing in Microsoft Dynamics CRM 3.0. Incluso hay información sobre como activar estas trazas para clientes Outlook, muy útil si tenemos que depurar estos clientes.


 


Una vez habilitado, Los componentes de Dynamics CRM empezarán a escribir los logs en ficheros de trazas en el directorio indicado. Un fichero para la aplicación web, otro para el servicio de workflow, y otro para los servicios web.


 


Para los alumnos aventajados, el fichero más curioso de todos es el de los servicios web. En el podréis comprobar cómo Dynamics CRM utiliza los servicios web “privados”, vamos todos los demás servicios web que tiene a parte de CRMService y MetadataService. Así queda totalmente demostrado que los propio clientes de Dynamics CRM utilizan los servicios web para comunicarse con el servidor. Aunque esto servicios no sean los mismo que los que tenemos disponibles a través del SDK. Podéis curiosear en la carpeta MSCRMServices la cantidad de archivos .asmx que hay.


 


Bueno y para finalizar, deciros que tampoco hay que olvidar echar un vistazo al registro de eventos del sistema. Por que Microsoft Dynamics CRM 3.0 también muestra bajo el log de Aplicación mucha información importante sobre errores. Por ejemplo el Exchange Router informa ahí de los motivos por los que no promociona un determinado mail al CRM.


 


Sólo deciros una cosilla más. Los ficheros de log de las trazas son un auténtico coñazo de ver “a pelo”. Pero en el próximo post os enseñaré una herramientilla que nos viene de perlas para ver estos ficheros de forma comprensible por humanos, e incluso en remoto.


 


Bueno, el que haya leído hasta aquí es que de verdad está interesado en Microsoft Dynamics CRM. Así que tiene todo el permiso del mundo para comentarme sus opiniones sobre este artículo, sobre el blog, sobre el CRM, y hasta sobre el tiempo si no se os ocurre otra cosa.


 


Saludos, y hasta la próxima


 


Marco Amoedo Martínez