SoporteIniciar sesión
Contáctenos
Actualizaciones de los servicios web de Microsoft Dynamics AX 2012 (3.2.93a)

Actualizaciones de los servicios web de Microsoft Dynamics AX 2012 (3.2.93a)

June 14, 2016 · Michael Bock · Integración Microsoft Dynamics

Me alegra anunciar una actualización importante de nuestra compatibilidad con los servicios web de Microsoft Dynamics AX. Afecta sobre todo a Microsoft Dynamics AX 2012 R1, R2 y R3 (pero también incluye algunos cambios para Microsoft Dynamics AX 2009).

En los últimos 6-8 meses hemos trabajado intensamente en nuestra compatibilidad con Microsoft Dynamics AX 2012, centrándonos en particular en los servicios web de Microsoft Dynamics AX 2012. Nos comprometemos a dar soporte a todas las versiones de Microsoft Dynamics AX, así que para nosotros es natural seguir invirtiendo en mejorar nuestra compatibilidad con estos sistemas. La actualización reúne una serie de cambios introducidos a lo largo del tiempo y el resultado global es que ahora resulta mucho más fácil y rápido implementar una integración con Microsoft Dynamics AX 2012.

Sigue leyendo para tener una visión completa de los cambios:

Compatibilidad con dimensiones predeterminadas y campos de dimensión (servicios web de Microsoft Dynamics AX 2009)

En Microsoft Dynamics AX 2009, las dimensiones predeterminadas deben enviarse como una lista de elementos, por ejemplo al usar el servicio web Customer para crear un cliente nuevo en Microsoft Dynamics AX. Hemos añadido compatibilidad general para esto permitiendo enviar una lista de campos como un array de cadenas a Microsoft Dynamics AX. En MyRapidi puedes crear una lista de dos maneras: con un Gather Transfer o con la función SPLIT (mucho más sencilla).
Aquí tienes un ejemplo:

##SPLIT('AAA|BBB|CCC','|')

Esta función crea una lista de tres elementos/cadenas que puede mapearse al campo Dimension del servicio web Customer de Microsoft Dynamics AX 2009. Establecerá AAA como primera dimensión, BBB como siguiente dimensión y CCC como tercera dimensión. Si tu configuración de dimensiones en Microsoft Dynamics AX tiene más o menos dimensiones, adapta simplemente la fórmula. También puedes obtener los valores de las dimensiones de campos del registro de origen, indicando esos campos (entre comillas dobles) en la fórmula.

Esta funcionalidad está disponible desde la versión 3.2.91n del RapidiConnector.

Compatibilidad con dimensiones predeterminadas y campos de dimensión (servicios web de Microsoft Dynamics AX 2012)

En Microsoft Dynamics  AX 2012 la estructura de dimensiones es más flexible: admite varias dimensiones ya nombradas y te permite establecer solo unas pocas si lo prefieres. La estructura que exige el servicio web de Microsoft Dynamics AX debe incluir el nombre y el valor de cada dimensión, y puedes establecer un número variable de dimensiones. De nuevo hemos optado por simplificarlo en MyRapidi dejándote indicar una lista. La lista debe contener un número par de elementos e incluir tanto el nombre como el valor de cada dimensión que quieras establecer.
Aquí tienes un ejemplo:

 ##SPLIT('CostCenter|OU_3567|Department|OU_2310','|')

Si usas esto como origen y lo mapeas al campo DefaultDimension del servicio web Customer de Microsoft Dynamics AX 2012, establecerás la dimensión CostCenter en OU_3567 y la dimensión Department se establecerá en OU_2310. En el layout verás el tipo «valueset» para los campos de tipo DimensionValueSet.

Esta funcionalidad está disponible desde la versión 3.2.92z del RapidiConnector. 

Mejoras relacionadas con Read Design (servicios web de Microsoft Dynamics AX 2012)

Ya puedes hacer Read Design sobre el SalesQuotationService estándar. Había un problema con el nombre del servicio, pero ahora se lee correctamente durante el Read Design y funciona en los Transfers. Añadido en la versión 3.2.91r del RapidiConnector.

Ahora leemos la SOAP Action y el Target Namespace del WSDL y usamos esa información al componer las llamadas al servicio web. Antes componíamos esa información a partir del nombre del servicio. Esto nos permite dar soporte a distintos servicios web de Microsoft Dynamics AX, incluidos servicios web personalizados que no usan el namespace estándar (esto se añadió en la versión 3.2.91s del RapidiConnector).

Después mejoramos el proceso de Read Design para la SOAP Action, ya que el enfoque anterior no siempre funcionaba (se publicó una corrección en la versión 3.2.92q).

En la versión 3.2.92z mejoramos la detección de servicios web de Microsoft Dynamics AX 2012: ahora también buscamos servicios web publicados con el namespace tempuri.org, además del namespace estándar de Microsoft Dynamics.

Y por último, tras más depuración, hemos encontrado una forma mejor de extraer esa información del WSDL, y es la que se introduce en la versión 3.2.93a del RapidiConnector.

Compatibilidad con más servicios web estándar y personalizados

En el WSDL de los distintos servicios web publicados en Microsoft Dynamics AX no se ve qué campo es realmente la clave principal o única de ese servicio web. Como necesitamos esa información, por ejemplo al actualizar registros, la establecemos manualmente en el código. Esto significa que, si quieres usar un servicio web nuevo (personalizado), puede que tengas que contactar con nuestro soporte para que se configure. Últimamente hemos añadido compatibilidad con los siguientes WebServices:

SalesQuotationTable, tabla con QuotationId (versión 3.2.91r)
InventTrans, tabla con InventTransId (versión 3.2.91y)
ConfigTable, tabla con el campo de identificador ConfigId (versión 3.2.92e)
smmBusRel, tabla con el campo de identificador BusRelAccount (versión 3.2.92w)
ContactPerson, tabla con el campo de identificador ContactPersonId (versión 3.2.92w)
smmOpportunityTable, tabla con el campo de identificador OpportunityId (versión 3.2.92w)
smmLeadTable con el campo de identificador LeadId (versión 3.2.92z)

Esta no es una lista completa de lo que admitimos, así que prueba con tu servicio web: si obtienes un error del tipo «IdFieldName not found for entity...», contacta con nuestro soporte.

Estamos trabajando en una solución mejor para esto, por ejemplo tomar esa información de la configuración del transfer si es posible. Te mantendremos informado.

Varias correcciones en el formato de los datos y en el orden de envío de los subelementos

Hemos hecho varias mejoras para generar los datos en el formato y el orden correctos, incluso si indicas los subelementos (o subtablas) en MyRapidi en un orden distinto. Los servicios web de Microsoft Dynamics AX son muy estrictos con el orden en que envías los campos y los elementos, y los mensajes de error que devuelven Microsoft Dynamics AX o IIS suelen ser bastante inútiles (algo sobre problemas con el esquema, o simplemente que el servidor no pudo procesar la solicitud por un error interno...). Eso puede complicar mucho averiguar qué está fallando.

Al crear entidades nuevas, ahora enviamos siempre los subelementos (subtablas) en el orden correcto (según el WSDL) a Microsoft Dynamics AX.

Ahora añadimos el ServiceName delante del nombre de la tabla para que ese nombre sea único. Es importante para que varios servicios web puedan coexistir aunque tengan subelementos con los mismos nombres (como DirParty o ContactPerson). El nombre del servicio se añade también al campo de comentario del layout, de modo que al hacer el mapeo sea fácil ver a qué servicio pertenece cada tabla (subtabla).

Hemos corregido un problema por el que nuestra función de tracing podía fallar si el valor de un campo date o datetime estaba vacío.

También hemos corregido un problema al escribir campos datetime: el formato tenía que incluir una «Z» al final.

Hemos corregido un error relacionado con los campos Decimal. El mensaje de error era: «createField: unknown type AxdType_Decimal». Ahora resolvemos el tipo correcto al hacer Read Design, así que ese error ya no aparece. Corregido en la versión 3.2.92w.

Todavía queda pendiente una mejora en la compatibilidad con distintos tipos de campo en los servicios web de Microsoft Dynamics AX 2012. Por ahora no admitimos los campos AxdEntityKey_. Si necesitas establecer un valor en un campo de este tipo, escríbenos y trabajaremos para darle soporte.

Mejor prueba de la conexión (botón Test de la ficha Connection) y mejor gestión y mejores mensajes de error

Para Microsoft Dynamics AX 2012, al probar la conexión ya no solo intentamos conectar con el servidor IIS, sino que además llamamos realmente a un servicio web, por ejemplo al pulsar el botón Test de la ficha Connection. Así nos aseguramos de que Test Connection revele de verdad cualquier problema con las llamadas a los servicios web publicados en el servidor.

Test Connection llama a la operación read de GenericDocumentService para intentar leer los Customer Groups de Microsoft Dynamics AX. Esto funciona siempre que hayas publicado la operación Read de GenericDocumentService.

Al mismo tiempo hemos revisado la gestión de los posibles errores de esta prueba y hemos intentado mejorar los mensajes de error, incluyendo sugerencias de posibles soluciones al problema concreto.

Entre otras cosas, ahora comprobamos específicamente si se ha indicado una ruta incorrecta en el parámetro «Server Connect» y ofrecemos mejor gestión y mejor mensaje para esa situación (antes esto podía dar un SocketReadError).

Ahora damos un mensaje de error mejor si el servidor IIS no está en marcha (antes salía un error SocketConnectToServer que hablaba del servidor central, etc.).

Estas mejoras se introdujeron en la versión 3.2.92z.

Usar DBLookup al leer desde Microsoft Dynamics AX (base de datos SQL)

Cuando usabas una función DBLookup para leer de la base de datos de Microsoft Dynamics AX (base de datos SQL), utilizábamos nuestro gestor MS-SQL genérico para resolver la búsqueda en la base SQL. Funcionaba, pero también provocaba una fuga de memoria en el RapidiConnector. Ya está corregido: ahora usamos correctamente el gestor de Microsoft Dynamics AX para el DBLookup.

Esto también implica que el DBLookup aplicará automáticamente un filtro en el campo DATAAREA (con la empresa configurada en la Connection de Microsoft Dynamics AX). Normalmente es lo ideal, pero en algunos casos puede que necesites consultar datos de otra empresa: entonces basta con indicar un filtro sobre DATAAREA en el DBLookup y sobrescribirá el filtro general.

Corregido en la versión 3.2.92h del RapidiConnector.

¿Qué versión deberías usar entonces?

En general, para tener la mejor compatibilidad con los servicios web de Microsoft Dynamics AX deberías actualizar a la versión 3.2.93a del RapidiConnector y a la versión 3.2.92z o posterior en el servicio central.

Por favor, contacta con nuestro soporte para organizarlo.

Gracias por leer y, si tienes alguna pregunta, dínoslo.

Michael

Conoce a nuestro equipo de Customer Success: ¡reserva tu hora ahora!

Compruebe si encaja con su entorno

Díganos qué sistemas utiliza y le diremos con franqueza si Rapidi es la herramienta adecuada.