Conector de NetSuite avanzado en Jitterbit Design Studio
Introducción
Esta página cubre consejos de solución de problemas, guías y funcionalidades avanzadas relacionadas con las integraciones de NetSuite.
Solución de problemas y guías
Esta sección describe problemas y soluciones a problemas comunes experimentados con integraciones de NetSuite y proporciona información sobre cambios en NetSuite que pueden afectar su integración.
URL WSDL específica de la cuenta de NetSuite
Durante la configuración de un punto final de NetSuite, debe proporcionar una URL WSDL específica de la cuenta en el campo URL de descarga de WSDL. Esta sección muestra cómo obtener esta URL encontrando el dominio específico de la cuenta de NetSuite y luego utilizando el dominio específico de la cuenta en la URL WSDL.
Encontrar el dominio específico de la cuenta de NetSuite
Estos pasos deben ser realizados por un Administrador de NetSuite u otro usuario con el permiso de Configurar Empresa:
-
Inicie sesión en la instancia de NetSuite.
-
Vaya a Configuración > Empresa > Información de la Empresa (o busque Información de la Empresa).
-
En la página de Información de la Empresa, vaya a la subpestaña URLs de la Empresa. El dominio específico de la cuenta se encuentra bajo el encabezado SuiteTalk (Servicios Web SOAP y REST):

Para más información, consulte URLs para Dominios Específicos de la Cuenta.
Construyendo la URL WSDL
Una vez que haya obtenido el dominio específico de la cuenta, utilícelo para construir la URL WSDL:
https://abcdef123456.suitetalk.api.netsuite.com/wsdl/v2025_1_0/netsuite.wsdlhttps://abcdef123456.suitetalk.api.netsuite.com/wsdl/v2024_2_0/netsuite.wsdlhttps://abcdef123456.suitetalk.api.netsuite.com/wsdl/v2024_1_0/netsuite.wsdlhttps://abcdef123456.suitetalk.api.netsuite.com/wsdl/v2023_2_0/netsuite.wsdlhttps://abcdef123456.suitetalk.api.netsuite.com/wsdl/v2023_1_0/netsuite.wsdlhttps://abcdef123456.suitetalk.api.netsuite.com/wsdl/v2022_2_0/netsuite.wsdl
Durante la configuración de un punto final de NetSuite, ingresa esta URL WSDL específica de la cuenta en el campo URL de descarga de WSDL.
La información sobre qué versiones de agente de Jitterbit son requeridas para su uso con las versiones de WSDL mencionadas se proporciona en Requisitos previos en la página del punto final del conector de NetSuite.
Cambiar la versión de WSDL
Actualizar periódicamente la versión de WSDL utilizada por tu punto final de NetSuite para asegurarte de estar utilizando siempre una versión completamente soportada es una buena práctica recomendada. Los pasos a continuación describen la mejor manera de realizar el cambio, asegurando una actualización sin problemas.
-
Crea un nuevo punto final.
-
Para cada operación de NetSuite, intercambia el antiguo punto final por el nuevo.
-
Actualiza la función.
-
Actualiza las transformaciones.
-
Repite los pasos 2 a 4 para cada operación de NetSuite.
Nota
Aunque es posible simplemente editar la URL de WSDL de un punto final existente y reconfigurar las actividades existentes, esta es una práctica desaconsejada. En tal escenario, no se reportan errores de validez y es posible desplegar el proyecto, sobrescribiendo inadvertidamente operaciones exitosas con aquellas que fallan en tiempo de ejecución debido a las discrepancias de WSDL dentro de los esquemas.
Error del centro de datos de NetSuite
Debido a cambios realizados por NetSuite, algunos formatos de URL de WSDL que anteriormente eran aceptados ya no son aceptados, incluyendo URLs de WSDL genéricas y URLs específicas de centros de datos. Jitterbit recomienda utilizar siempre una URL de WSDL específica de la cuenta.
Un punto final de NetSuite puede haber sido probado con éxito anteriormente, pero ahora falla con este error:
Error del conector: Error al obtener la URL del centro de datos.
Causado por: org.jitterbit.integration.server.engine.connector.exception.NetSuiteWebServiceRuntimeException: FaultString:
En esta cuenta, debes usar dominios específicos de la cuenta con este punto final de servicios web SOAP. Puedes usar la operación SOAP getDataCenterUrls para obtener el dominio correcto. O, ve a Configuración > Empresa > Información de la empresa en la interfaz de usuario de NetSuite. Tus dominios están listados en la pestaña de URLs de la empresa.
En algunas circunstancias, puede aparecer este error:
No está solicitando el centro de datos correcto para su empresa.
Estos errores pueden resultar del uso de una URL de descarga de WSDL incorrecta en la configuración de una conexión de NetSuite. Debido a los cambios realizados por NetSuite, algunos formatos de URL de WSDL que anteriormente eran aceptados ya no son válidos, incluyendo URLs de WSDL genéricas y URLs específicas de centros de datos. Por ejemplo:
- URL de WSDL genérica:
https://webservices.netsuite.com/wsdl/v2025_1_0/netsuite.wsdl - URL de WSDL específica de centro de datos:
https://webservices.na3.netsuite.com/wsdl/v2025_1_0/netsuite.wsdl
Para resolver, cambie la URL de WSDL para usar un dominio específico de la cuenta:
- URL de WSDL específica de la cuenta:
https://abcdef123456.suitetalk.api.netsuite.com/wsdl/v2025_1_0/netsuite.wsdl
Para obtener instrucciones sobre cómo encontrar el dominio específico de la cuenta de NetSuite y luego usar el dominio específico de la cuenta en la URL de WSDL, consulte URL de WSDL específica de la cuenta de NetSuite.
Autenticación de dos factores de NetSuite (TFA o 2FA)
Aquellos que utilizan la autenticación de dos factores de NetSuite (TFA o 2FA) no deben usar el tipo de autenticación de inicio de sesión único (SSO) al configurar su punto final de NetSuite en Jitterbit. Hacerlo puede causar que su punto final de NetSuite falle. En su lugar, se recomienda que estos usuarios habiliten la autenticación basada en tokens (TBA) en su cuenta de NetSuite y configuren su punto final de NetSuite en Jitterbit en consecuencia.
Nota
El tipo de autenticación SSO está siendo eliminado por NetSuite, y ahora se recomienda que todos los usuarios utilicen TBA.
URL de WSDL de sandbox de NetSuite
A partir de enero de 2018, NetSuite utiliza la misma URL tanto para su dominio de producción como para el de sandbox. Para las versiones 9.2 y superiores de Design Studio y Agent, no se requiere ninguna acción para los usuarios de Jitterbit con puntos finales de NetSuite existentes configurados para el dominio de sandbox, siempre que el sandbox se haya actualizado desde este cambio.
El número de cuenta de NetSuite ahora se utiliza para determinar si la cuenta está en producción o en sandbox. Por ejemplo, el ID de cuenta puede tener el sufijo _SB1, _SB2, etc. Dado que NetSuite ya no utiliza una URL de sandbox separada, y el sandbox ahora se indica mediante el ID de cuenta, la casilla de verificación de Sandbox se ha eliminado en las versiones 9.2 y superiores de Design Studio.
Si su sandbox de NetSuite no se ha actualizado desde que se implementaron estos cambios en NetSuite, es posible que necesite utilizar una URL WSDL específica para sandbox.
Consejo
Se puede encontrar más información en la documentación de NetSuite Sobre las cuentas de sandbox en el dominio de NetSuite.
Error de permisos para TBA
Si recibe un error INSUFFICIENT_PERMISSION al ejecutar operaciones utilizando un punto final de NetSuite configurado con autenticación basada en tokens (TBA), es posible que necesite usar un rol diferente para generar los tokens de acceso o agregar permisos al rol que está utilizando actualmente. En este caso, la prueba del punto final parece exitosa, pero al momento de ejecutar la operación ocurre la excepción.
Para resolverlo, al generar tokens de acceso, asegúrese de generarlos en un rol de Acceso Completo o Administrador o asegúrese de que se permitan los permisos apropiados para el rol.
Consejo
Instrucciones detalladas están disponibles en la documentación de NetSuite Introducción a la autenticación basada en tokens.
Error inesperado para TBA
Si recibe un error UNEXPECTED_ERROR al probar la conexión a un punto final de NetSuite configurado con autenticación basada en tokens (TBA), se recomienda verificar que está utilizando la URL WSDL correcta. El error contendrá el siguiente texto:
FaultString: Ha ocurrido un error inesperado. El soporte técnico ha sido alertado sobre este problema.
Este error puede ocurrir por varias razones; sin embargo, se sabe que este error resulta de tener una URL WSDL incorrecta al usar Agentes que son de la versión 9.2 a 9.5. En Agentes de la versión 9.6 y superiores, el texto del mensaje de error describe más precisamente el problema.
Gobernanza de concurrencia de NetSuite
El 18 de agosto de 2017, NetSuite introdujo "Gobernanza de Concurrencia" en su versión 2017.2. Si utilizas servicios web y/o RESTlets, aprende más sobre cómo esto podría afectar tu integración en gobernanza de concurrencia de NetSuite 2017.2.
Limitaciones de búsqueda guardada de NetSuite
Al usar la búsqueda guardada de NetSuite, si intentas buscar en objetos que tienen más de 1,000 búsquedas guardadas, puede parecer en Jitterbit Studio como si no hubiera búsquedas guardadas disponibles en el objeto. En este caso, el menú desplegable de búsqueda guardada en Jitterbit Studio no se llenará con ninguna búsqueda guardada. Esto se debe a un límite de 1,000 registros impuesto por NetSuite en las solicitudes de API.
Confirmación de la limitación
Para confirmar que el problema es con la limitación de NetSuite, puedes revisar el Registro de Uso de Servicios Web dentro de tu instancia de NetSuite. Para un error de este tipo, el registro tendrá una entrada similar a la siguiente:
<platformCore:code>MAX_RCRDS_EXCEEDED</platformCore:code>
<platformCore:message>Se ha excedido el número máximo ( 1000 ) de registros permitidos para una operación de LECTURA.</platformCore:message>
Solución alternativa a la limitación
Como solución alternativa, se recomienda limpiar las búsquedas guardadas de NetSuite que ya no se están utilizando para reducir el número de búsquedas guardadas a menos de 1,000. Después de reducir el número de búsquedas, podrás seleccionar una búsqueda guardada del menú desplegable en Jitterbit Studio.
Una alternativa a reducir el número de búsquedas guardadas es ejecutar la búsqueda guardada a través de SOAP, haciendo referencia a la búsqueda guardada por ID. Ten en cuenta que esta alternativa no utiliza el conector de NetSuite y puede resultar en problemas al migrar entornos.
Funcionalidad avanzada
Esta sección proporciona información sobre las características en Jitterbit que te permiten aprovechar más tu integración con NetSuite.
Uso de funciones de NetSuite
Las funciones específicas de NetSuite disponibles en Constructor de Fórmulas bajo Funciones > Funciones de Conector se enumeran a continuación. Para obtener más información sobre cómo usar estas funciones, consulta Funciones de conector.
NetSuiteGetSelectValue: Recupera los valores de la lista de selección para un campo de NetSuite.NetSuiteGetServerTime: Obtiene la hora del servidor de NetSuite.NetSuiteLogin: Obtiene la sesión de NetSuite.
Uso de la configuración asincrónica
Por defecto, las llamadas a la API de NetSuite se ejecutan de manera sincrónica; es decir, después de que se realiza una solicitud, la conexión se mantiene abierta. Si algunas solicitudes agotan el tiempo de espera durante una consulta sincrónica, es posible que desees activar la configuración asincrónica. Con esta configuración, después de que se envía la solicitud, Jitterbit consultará periódicamente para ver si esa solicitud ha finalizado. Esto es más útil con grandes cantidades de datos.
Para activar la opción asincrónica, establece $jitterbit.netsuite.async=true en un script que esté, por ejemplo, al principio de la operación o dentro de la cadena de operaciones (consulta Creando un script). Para información adicional, consulta la documentación de NetSuite sobre Procesamiento de Solicitudes Sincrónicas versus Asincrónicas.
Pasando valores nulos a campos personalizados
Una limitación de la API de NetSuite es que no puedes pasar valores NULL o en blanco (cadena vacía) a campos personalizados en NetSuite.
Según la documentación de NetSuite sobre CustomFieldList, los campos personalizados se pueden establecer en NULL enviando el campo en la nullFieldList de NetSuite.
En Design Studio, no verás nullFieldList como un campo u opción.
En su lugar, puedes pasar valores NULL o en blanco (cadena vacía) a campos personalizados mapeando el campo de origen tanto a los campos externalId como name de un campo de destino.
Uso de segmentos personalizados de NetSuite
Se admiten segmentos personalizados en objetos estándar y personalizados de NetSuite para las actividades del Conector de NetSuite Crear, Actualizar, ObtenerLista, Upsert y Buscar utilizando un punto final de NetSuite con un WSDL de NetSuite que sea versión 2016.2 o superior. Debe estar utilizando la versión 9.4 o superior tanto de Design Studio como de Agents para usar esta función.
Al configurar cualquiera de los tipos de actividad mencionados anteriormente, verá cada segmento personalizado mostrado en la estructura de respuesta o solicitud de NetSuite:

Una vez que la actividad se utilice en una transformación, podrá mapear desde o hacia cualquiera de esos segmentos personalizados, tal como lo hace con otros campos. Los segmentos personalizados se encuentran bajo un nodo llamado customFieldList que está presente dentro de su respectivo nodo de objeto.

Nota
Si sus segmentos personalizados no se están mostrando, verifique que la cuenta de usuario de NetSuite que se está utilizando en su punto final de NetSuite tenga los permisos apropiados para interactuar con el segmento personalizado y el objeto asociado.
Limitación
En una búsqueda avanzada de NetSuite, no se admiten segmentos personalizados del tipo Lista/Registro según lo definido en NetSuite. Sin embargo, tenga en cuenta que el tipo Selección Múltiple es compatible en una búsqueda avanzada de NetSuite. Para determinar qué tipo se está utilizando, verifique el Tipo definido dentro de NetSuite en su Segmento Personalizado:

Esta limitación no se aplica a otros tipos de actividades de NetSuite; es decir, tanto los tipos List/Record como Multiple Select son compatibles dentro de Create, Update, GetList, Upsert, Basic search, Expanded search y Saved search.
Usando la búsqueda de transacciones de NetSuite por estado
Al buscar transacciones de NetSuite basadas en un estado específico, necesitarás especificar el valor de filtro de búsqueda correcto que corresponda con el estado deseado. Puedes determinar el valor de filtro de búsqueda correspondiente como se indica en la tabla a continuación.
Por ejemplo, si deseas que los criterios de búsqueda limiten los registros de Cumplimiento de Artículos a solo aquellos donde el Estado de Envío = Enviado, en lugar de usar el enum para Enviado (_shipped), en realidad necesitarías usar un valor de ItemShip:C como se indica en la tabla a continuación. Traducciones similares se aplican a una variedad de objetos de NetSuite.

| Estado | SearchFilter |
|---|---|
| Venta en Efectivo: Pago No Aprobado | CashSale:A |
| Venta en Efectivo: No Depositado | CashSale:B |
| Venta en Efectivo: Depositado | CashSale:C |
| Cheque: Anulado | Check:V |
| Cheque: Pago de Factura en Línea Pendiente Aprobación Contable | Check:Z |
| Comisión: Pago Pendiente | Commissn:A |
| Comisión: Sobrepagado | Commissn:O |
| Comisión: Aprobación Contable Pendiente | Commissn:P |
| Comisión: Rechazada por Contabilidad | Commissn:R |
| Comisión: Pagado en Su Totalidad | Commissn:X |
| Cargo de Estado de Cuenta: Abierto | CustChrg:A |
| Cargo de Estado de Cuenta: Pagado en Su Totalidad | CustChrg:B |
| Nota de Crédito: Abierta | CustCred:A |
| Nota de Crédito: Totalmente Aplicada | CustCred:B |
| Depósito de Cliente: No Depositado | CustDep:A |
| Depósito de Cliente: Depositado | CustDep:B |
| Depósito de Cliente: Totalmente Aplicado | CustDep:C |
| Factura: Abierta | CustInvc:A |
| Factura: Pagada en Su Totalidad | CustInvc:B |
| Pago: Pago No Aprobado | CustPymt:A |
| Pago: No Depositado | CustPymt:B |
| Pago: Depositado | CustPymt:C |
| Reembolso al Cliente: Anulado | CustRfnd:V |
| Cotización: Abierta | Estimate:A |
| Cotización: Procesada | Estimate:B |
| Cotización: Cerrada | Estimate:C |
| Cotización: Anulada | Estimate:V |
| Cotización: Expirada | Estimate:X |
| Informe de Gastos: En Progreso | ExpRept:A |
| Informe de Gastos: Aprobación Pendiente del Supervisor | ExpRept:B |
| Informe de Gastos: Aprobación Contable Pendiente | ExpRept:C |
| Informe de Gastos: Rechazado por el Supervisor | ExpRept:D |
| Informe de Gastos: Rechazado por Contabilidad | ExpRept:E |
| Informe de Gastos: Aprobado por Contabilidad | ExpRept:F |
| Informe de Gastos: Aprobado (Anulado) por Contabilidad | ExpRept:G |
| Informe de Gastos: Rechazado (Anulado) por Contabilidad | ExpRept:H |
| Informe de Gastos: Pagado en Su Totalidad | ExpRept:I |
| Conteo de Inventario: Abierto | InvCount:A |
| Conteo de Inventario: Iniciado | InvCount:B |
| Conteo de Inventario: Completado/Pendiente Aprobación | InvCount:C |
| Conteo de Inventario: Aprobado | InvCount:D |
| Cumplimiento de Artículos: Recogido | ItemShip:A |
| Cumplimiento de Artículos: Empacado | ItemShip:B |
| Cumplimiento de Artículos: Enviado | ItemShip:C |
| Diario: Aprobación Pendiente | Journal:A |
| Diario: Aprobado para Publicación | Journal:B |
| Cheque de Pasivo de Nómina: Anulado | LiabPymt:V |
| Oportunidad: En Progreso | Opprtnty:A |
| Oportunidad: Cotización Emitida | Opprtnty:B |
| Oportunidad: Cerrada – Ganada | Opprtnty:C |
| Oportunidad: Cerrada – Perdida | Opprtnty:D |
| Cheque: Indefinido | Paycheck:A |
| Cheque: Cálculo de Impuestos Pendiente | Paycheck:C |
| Cheque: Compromiso Pendiente | Paycheck:D |
| Cheque: Comprometido | Paycheck:F |
| Cheque: Vista | Paycheck:P |
| Cheque: Revertido | Paycheck:R |
| Orden de Compra: Aprobación Pendiente | PurchOrd:A |
| Orden de Compra: Recepción Pendiente | PurchOrd:B |
| Orden de Compra: Rechazada por el Supervisor | PurchOrd:C |
| Orden de Compra: Parcialmente Recibida | PurchOrd:D |
| Orden de Compra: Facturación Pendiente/Parcialmente Recibida | PurchOrd:E |
| Orden de Compra: Factura Pendiente | PurchOrd:F |
| Orden de Compra: Totalmente Facturada | PurchOrd:G |
| Orden de Compra: Cerrada | PurchOrd:H |
| Autorización de Devolución: Aprobación Pendiente | RtnAuth:A |
| Autorización de Devolución: Recepción Pendiente | RtnAuth:B |
| Autorización de Devolución: Cancelada | RtnAuth:C |
| Autorización de Devolución: Parcialmente Recibida | RtnAuth:D |
| Autorización de Devolución: Reembolso Pendiente/Parcialmente Recibida | RtnAuth:E |
| Autorización de Devolución: Reembolso Pendiente | RtnAuth:F |
| Autorización de Devolución: Reembolsada | RtnAuth:G |
| Autorización de Devolución: Cerrada | RtnAuth:H |
| Orden de Venta: Aprobación Pendiente | SalesOrd:A |
| Orden de Venta: Cumplimiento Pendiente | SalesOrd:B |
| Orden de Venta: Cancelada | SalesOrd:C |
| Orden de Venta: Parcialmente Cumplida | SalesOrd:D |
| Orden de Venta: Facturación Pendiente/Parcialmente Cumplida | SalesOrd:E |
| Orden de Venta: Facturación Pendiente | SalesOrd:F |
| Orden de Venta: Facturada | SalesOrd:G |
| Orden de Venta: Cerrada | SalesOrd:H |
| Cheque de Pasivo Fiscal: Anulado | TaxLiab:V |
| Pago de Impuesto sobre Ventas: Anulado | TaxPymt:V |
| Pago de Impuesto sobre Ventas: Pago de Factura en Línea Pendiente Aprobación Contable | TaxPymt:Z |
| Tegata a Pagar: Endosado | TegPybl:E |
| Tegata a Pagar: Emitido | TegPybl:I |
| Tegata a Pagar: Pagado | TegPybl:P |
| Tegata a Cobrar: Recaudado | TegRcvbl:C |
| Tegata a Cobrar: Descontado | TegRcvbl:D |
| Tegata a Cobrar: Endosado | TegRcvbl:E |
| Tegata a Cobrar: En Espera | TegRcvbl:H |
| Orden de Transferencia: Aprobación Pendiente | TrnfrOrd:A |
| Orden de Transferencia: Cumplimiento Pendiente | TrnfrOrd:B |
| Orden de Transferencia: Rechazada | TrnfrOrd:C |
| Orden de Transferencia: Parcialmente Cumplida | TrnfrOrd:D |
| Orden de Transferencia: Recepción Pendiente/Parcialmente Cumplida | TrnfrOrd:E |
| Orden de Transferencia: Recepción Pendiente | TrnfrOrd:F |
| Orden de Transferencia: Recibida | TrnfrOrd:G |
| Orden de Transferencia: Cerrada | TrnfrOrd:H |
| Autorización de Devolución de Proveedor: Aprobación Pendiente | VendAuth:A |
| Autorización de Devolución de Proveedor: Devolución Pendiente | VendAuth:B |
| Autorización de Devolución de Proveedor: Cancelada | VendAuth:C |
| Autorización de Devolución de Proveedor: Parcialmente Devuelta | VendAuth:D |
| Autorización de Devolución de Proveedor: Crédito Pendiente/Parcialmente Devuelta | VendAuth:E |
| Autorización de Devolución de Proveedor: Crédito Pendiente | VendAuth:F |
| Autorización de Devolución de Proveedor: Acreditada | VendAuth:G |
| Autorización de Devolución de Proveedor: Cerrada | VendAuth:H |
| Factura: Abierta | VendBill:A |
| Factura: Pagada en Su Totalidad | VendBill:B |
| Factura: Cancelada | VendBill:C |
| Factura: Aprobación Pendiente | VendBill:D |
| Factura: Rechazada | VendBill:E |
| Pago en Efectivo: Anulado | VendPymt:V |
| Pago en Efectivo: Pago de Factura en Línea Pendiente Aprobación Contable | VendPymt:Z |
| Orden de Trabajo: Construcción Pendiente | WorkOrd:B |
| Orden de Trabajo: Cancelada | WorkOrd:C |
| Orden de Trabajo: En Proceso | WorkOrd:D |
| Orden de Trabajo: Construida | WorkOrd:G |
| Orden de Trabajo: Cerrada | WorkOrd:H |
Source: http://blog.prolecto.com/2013/08/30/netsuite-searchfilter-transaction-internal-status-list/
Patrones de diseño
Los siguientes patrones de diseño pueden ser útiles para integraciones de NetSuite:
-
Capturando cambios de datos con una API de API Manager o un endpoint HTTP
-
Capturando cambios de datos con consultas basadas en marcas de tiempo
-
Vinculando registros de origen o destino usando IDs compartidos
-
Persistiendo datos para procesamiento posterior usando Almacenamiento Temporal
-
Ejecutar las siguientes operaciones condicionalmente utilizando cadenas de operaciones
-
Actualizar múltiples destinos desde un único registro de origen
-
Insertar o actualizar datos de Clarizen con una cadena de operaciones