Configuraciones
El grupo Configuraciones del menú reúne lo que vale para toda la instalación. Esta página cubre cuatro pantallas: Parámetros, Workers, Licencia y Danger Zone. Las demás del grupo tienen páginas propias — Variables y Conexiones Externas y Programadores.
Parámetros — /settings

Nueve pestañas, cada una con un tema cerrado. Todo lo que es contraseña o clave se graba cifrado y nunca se vuelve a mostrar — esos campos abren en blanco con la nota “deje en blanco para mantener”. La excepción es cambiar la dirección: cambiar el host del SMTP o del LDAP, la URL del Webhook o la Base URL de la IA sin volver a escribir la contraseña (o clave) correspondiente borra la guardada. Un secreto nunca sigue solo hacia una dirección nueva.
Configuraciones
Lo básico de operación de la instalación.
| Campo | Qué define |
|---|---|
| URL Base del Sistema | Dirección pública del CMS. Entra en los ejemplos de integración y en los endpoints WSDL. En blanco, el CMS usa la dirección por la que fue accedido |
| Idioma | Idioma por defecto de la interfaz — portugués, inglés o español |
| Timezone del Sistema | Cómo se muestran fechas y horas en toda la aplicación |
| Autenticación de dos factores (2FA) | Activa la exigencia de segundo factor en el login |
Apagar el 2FA aquí hace que ningún usuario pase por la etapa de segundo factor, ni siquiera los que ya lo configuraron. Los datos de configuración de cada uno se preservan: volver a encenderlo restaura todo, sin que nadie tenga que registrar de nuevo su autenticador.
Cambiar el timezone se aplica de inmediato en la interfaz; el backend necesita que se reinicie la API para acompañar.
Apariencia

El rostro de la instalación — es aquí donde el CMS deja de parecer un producto genérico.
| Área | Campos |
|---|---|
| Tema | Tema por defecto (claro, oscuro o seguir el sistema operativo) y el bloqueo del cambio por el usuario |
| Identidad | Nombre de la empresa, apodo de la planta y logotipo |
| Pantalla de Login | Fondo: por defecto, color sólido o imagen |
El tema por defecto vale para quien todavía no eligió uno. Marcando bloquear cambio por el usuario, el botón de alternar tema desaparece de la barra superior y todos usan el tema definido aquí.
El apodo de la planta, cuando se completa, sustituye “Config. de Integración” como nombre del grupo de registros en el menú lateral — útil en instalaciones multi-planta, donde el menú pasa a decir “Planta São Paulo”.
El logotipo aparece en la barra lateral, en la pantalla de login y en el Cockpit.
Sin color ni imagen elegidos, el fondo por defecto de la pantalla de login dibuja la escena industrial de la marca — degradado azul marino, malla técnica y la silueta de una fábrica en línea. La vista previa junto a los campos es el mismo componente que usa el login, así que no promete un fondo distinto del que se mostrará; y resuelve el tema como lo hace el login, por el tema por defecto de la instalación y no por la preferencia de quien está editando la pantalla.
Servidor SMTP usado por las Alertas y por los envíos hechos desde las pantallas (token por correo, PDF de mensaje): host, puerto, usuario, contraseña, remitente y Exigir conexión cifrada (TLS).
El cifrado sigue al puerto, y la línea debajo del interruptor dice qué hará el envío:
| Puerto | Interruptor activo | Interruptor inactivo |
|---|---|---|
| 465 | TLS desde el primer byte (SSL implícito) | Igual — el 465 siempre usa TLS |
| 587, 25 o 2525 | Empieza en texto y pasa a TLS (STARTTLS); falla si el servidor no ofrece TLS | STARTTLS si el servidor lo ofrece; si no, envía sin cifrar |
| Otro | TLS desde el primer byte | Sin exigencia de TLS |
En el 587 el interruptor no significa SSL implícito. Hasta el 2026-09-29 lo significaba, y el
envío fallaba con wrong version number en el log de la API: el servidor respondía en texto a un
handshake TLS.
Las configuraciones de SMTP guardadas aquí tienen precedencia sobre las variables de entorno. Es esta pantalla la que realmente configura el envío de alertas por correo — configurar solo en el entorno no basta.
LDAP
Autenticación vía Active Directory u OpenLDAP, como alternativa al login local.
| Campo | Rol |
|---|---|
| Habilitar | Activa la validación en el directorio |
| Host / Puerto / SSL | Dirección del directorio (ldaps:// cuando SSL) |
| Bind DN y contraseña | Usuario de servicio que hace la búsqueda |
| Base DN | Dónde buscar |
| Filtro de búsqueda | Use {{login}} como marcador — (sAMAccountName={{login}}) en AD, (uid={{login}}) en OpenLDAP |
| Timeout | Límite de la consulta, en ms |
Habilitar LDAP no convierte a nadie automáticamente. La validación en el directorio vale para los usuarios cuyo origen de autenticación está marcado como LDAP en el registro — ver Seguridad. Eso permite migrar de a poco y mantener un usuario local de emergencia.
El botón Probar conexión hace el bind de servicio y dice si funcionó, antes de que cualquier usuario intente entrar.
Herramientas
Catálogo de las Herramientas del sistema: cada pantalla del CMS corresponde a una Herramienta, y es ella la que los Perfiles de Acceso liberan o no. La pestaña muestra nombre, descripción y endpoint de cada una, con conteo de activas e inactivas.
Es una pestaña de mantenimiento: las Herramientas las crea el propio sistema en cada versión. Se toca aquí cuando hay que retirar una pantalla para todos, o verificar qué Herramienta exige una ruta.
Desactivar una Herramienta hace desaparecer la pantalla para todos los perfiles, incluido el de administrador. Si la intención es restringirla a un grupo, el lugar es el Perfil de Acceso, no aquí.
Webhook
Endpoint que recibe las alertas marcadas para envío externo — típicamente una automatización (n8n, Power Automate) que dispara WhatsApp, Teams o SMS.
| Campo | Rol |
|---|---|
| Habilitar | Activa el envío |
| URL del Webhook | Endpoint que recibe el JSON de la alerta |
| Usuario / Contraseña (Basic Auth) | Opcional, enviados en la llamada |
El botón Probar Webhook dispara una llamada real. El formato del payload está en Alertas.
IA

Proveedor usado por todos los recursos de IA del producto, y la llave de encendido de cada uno.
| Campo | Rol |
|---|---|
| Habilitar | La llave maestra. Apagada, ningún recurso de IA funciona |
| Proveedor | Anthropic, OpenAI o uno compatible con la API de OpenAI |
| Modelo | Nombre del modelo |
| Clave de API | Cifrada, nunca se vuelve a mostrar. Opcional en servidores locales |
| Base URL | Solo en el proveedor compatible: Ollama (http://localhost:11434/v1), Groq, OpenRouter… |
El tercer proveedor existe para quien no puede mandar nada afuera: apuntando la Base URL a un Ollama en su red, la generación corre íntegramente dentro de la empresa. En ese modo el campo Modelo es obligatorio y la clave suele ser prescindible.
El botón Probar conexión confirma proveedor, modelo y clave antes de que alguien dependa de ellos.
Recursos
Debajo del proveedor, cada recurso de IA tiene su propia llave. Apagar uno no afecta a los demás; con la llave maestra apagada, ninguno funciona. Todos nacen encendidos en una actualización — apagar en silencio lo que el cliente ya usa costaría más de lo que ahorra — y la llave maestra nace apagada en una instalación nueva, para que nadie hable con un proveedor externo sin que alguien lo haya decidido.
| Recurso | Qué hace | Dónde aparece |
|---|---|---|
| Transformer por IA | Genera el script de transformación a partir de ejemplos y un prompt | Transformadores, en el editor |
| Diagnóstico de error | Sugiere la causa probable de un error de entrega | Mensajes, en un intento con error |
| Asistente de Integración | Descubre el contrato de una API y arma Interfaz, Recolección y Entrega | Aplicaciones |
| Integración entre Aplicaciones | Genera el script que une el formato de una Aplicación con el de otra | Transformadores |
| Agente de IA | Llave madre de las dos pestañas de pago. Exige el módulo Agente en la licencia | Asistente de IA |
| ↳ Investigar | Investiga la instalación y entrega un informe con evidencia. Solo lectura | Pestaña Investigar |
| ↳ Configurar | Propone la integración lista para aprobación | Pestaña Configurar |
| Pregunte al CMS | Responde sobre el producto leyendo el manual incorporado, citando la página | Pestaña Preguntar |
| Plan de Prueba por IA | Propone escenarios de prueba a partir de las Definiciones, del contrato observado y de los Errores de Negocio. Los escenarios nacen desactivados | Planes de Prueba |
| Descripción de tool MCP por IA | Sugiere la descripción que el agente lee para decidir cuándo llamar a la tool. Solo vale después de que la persona la revisa y guarda | Recolección y Entrega, en el popup de la tool MCP |
| Servidor MCP | Deja que una IA externa lea y configure el CMS | Servidor MCP |
| Servidor MCP de integraciones | Expone las Entregas y Recolecciones marcadas como tools que un agente de IA llama | Servidor MCP de integraciones |
Los dos servidores MCP son la excepción: no consumen el proveedor configurado aquí — quien paga el modelo del otro lado es quien se conecta. En esos casos la llave es control de acceso, no de costo. Apagar el de configuración hace que los tokens dejen de ser aceptados, y el rechazo ocurre después de la validación del token, para que quien llama sin credencial no descubra que el servidor existe. Apagar el de integraciones saca del aire la dirección de todas las Aplicaciones a la vez, sin desmarcar ninguna Definición.
Cuando todos los recursos están apagados, el icono del Asistente de IA desaparece de la cabecera: un botón que abre un panel vacío contradice a quien apagó todo.
Guardia del Agente de Integración
Última llave de la pestaña, y la única apagada por defecto. Con ella encendida, un alerta disparado hace que el agente investigue solo y deje el informe listo para quien recibió el alerta — gastando su clave de IA sin que nadie haga clic. Exige el módulo Agente, y el diagnóstico corre con el permiso de quien recibe el alerta. Detalles en Asistente de IA.
SDK SAP
Instala el SAP NW RFC SDK usado por los conectores SAP. SAP licencia la biblioteca y no viene
con el CMS: el cliente descarga la suya en el SAP Support Portal y envía el .zip aquí — el CMS
valida el paquete, guarda los archivos y reinicia los conectores por su cuenta.
La pestaña solo aparece para administradores: enviar o quitar la SDK instala o retira una biblioteca nativa que los conectores ejecutan, y eso no es tarea delegable por Herramienta.
La pestaña muestra la versión detectada (ej.: 7.50 PL18), la arquitectura, quién la instaló,
cuándo, y el estado de cada conector. Mientras no haya SDK, los tipos de conexión SAP aparecen
deshabilitados en Conexiones Externas — visibles, con el motivo y un acceso directo que abre esta
pestaña.
Paso a paso, la variante correcta para descargar y lo que rechaza la validación: SDK de SAP.
Help Desk
Las herramientas de atención donde el CMS abre un ticket cuando se dispara una alerta — ServiceNow, Jira Service Management, Freshservice, Zendesk, GLPI, InvGate y aviso en SAP PM. Aquí se activa la herramienta (URL, autenticación y la Interfaz que usa), se prueba la conexión y se registra el modelo de cuerpo del ticket. La pestaña solo aparece con la Herramienta Help Desk en el perfil.
El paso a paso completo, con los destinos y el vínculo con la alerta: Help Desk.
Wallboard — /settings/cockpit
Los tokens que dejan que una TV de planta abra el Cockpit sin login, con alcance por Aplicación y revocación individual. Quien ya tiene sesión en el CMS no necesita token alguno.
Workers — /settings/workers

Lo que el Panel de Interfaces muestra por Interfaz, esta pantalla lo muestra por job: es la cola interna que el CMS usa para procesar mensajes, vista desde adentro.
El período usa el mismo selector de Mensajes: abre en Hoy y, con un atajo como Últimos 15 minutos, la ventana avanza junto con la actualización automática de la pantalla.
Los cinco números de arriba responden la pregunta operativa más común: ¿se está acumulando?
| Indicador | Qué significa | Viene de |
|---|---|---|
| En espera | Mensajes todavía no procesados | La tabla de mensajes |
| En ejecución | Jobs que los workers están procesando ahora | La cola |
| Procesadas | Total de mensajes entregados con éxito | La tabla de mensajes |
| Fallados | Jobs que agotaron los intentos y se detuvieron | La cola |
| Atrasados | Jobs programados para el futuro — reintento con espera | La cola |
Fallados cuenta jobs, no mensajes en error. Un mensaje que falló en la entrega y volvió a la cola aparece en Mensajes con Error; aquí solo entra el job que se dio por vencido. Los dos números son distintos a propósito, y que no coincidan es lo esperado.
Las cuatro pestañas abren la lista detrás de cada número. Ejecuciones es la más usada en el día a día: una fila por intento, con Aplicación, Interfaz, Definición, estado HTTP, duración, resultado y el detalle del error cuando lo hubo.
En la pestaña Fallados, cada fila trae la razón del fallo y dos botones: reprocesar y quitar de la cola — individualmente o en lote, para el conjunto seleccionado.
Quitar un job de la cola no cancela el mensaje: desaparece el trabajo pendiente, no el registro. Para sacar el mensaje del flujo de verdad, usa Cancelar Mensaje.
A diferencia de las pantallas de Informes, aquí los cinco indicadores ignoran los filtros: son el estado en vivo de la cola entera, actualizado cada pocos segundos. Los filtros de Aplicación, Interfaz, Definición y período recortan las listas de las pestañas. Es a propósito — la pregunta “¿se está acumulando?” es sobre el sistema, no sobre el recorte que estás mirando.
Licencia — /settings/license

Identificación de esta instalación y validez del contrato: cliente, CNPJ, edición, fecha de validez, soporte hasta, días restantes y observaciones.
La pantalla también muestra el ID de la instalación — el código que XMII Consulting pide para
emitir la clave. Una clave nueva se instala pegando el texto recibido (empieza con CMS1.) y haciendo
clic en instalar.
| Situación | Significa |
|---|---|
| Licencia activa | Todo en orden |
| Vence pronto | Aviso arriba en las pantallas, con los días restantes. Empieza 30 días antes |
| Licencia vencida | El sistema se reinicia solo cada 30 minutos, hasta 10 veces |
| Bloqueada | Se acabaron los 10 reinicios: el CMS deja de responder |
| Sin licencia instalada | Instalación aún no licenciada; el sistema funciona normalmente |
| Licencia inválida | La clave instalada no es de esta instalación |
Qué pasa cuando la licencia vence
A partir del vencimiento, la licencia pasa a tener consecuencia operativa. Sin eso “vencida” era un aviso que se aprendía a ignorar, y el contrato no tenía efecto alguno.
La escalada tiene dos escalones:
- Reinicios. Cada 30 minutos de ejecución, el CMS termina el proceso y Docker lo vuelve a levantar. Son 30 minutos de vida del proceso, no de reloj — así cada vuelta da siempre la misma ventana para instalar la clave. El contador aparece en la pantalla y en el correo de aviso.
- Bloqueo. Después de 10 reinicios, el estado pasa a Bloqueada y el CMS rechaza todo: recepción de mensajes, recolección y entrega incluidas.
En el estado bloqueado, tres cosas siguen en pie — sin ellas no habría forma de salir del bloqueo desde el propio producto: el login, la pantalla de Licencia (consultar el estado e instalar la clave nueva) y la lectura de la Configuración, que alimenta la marca y el idioma de la pantalla de login.
El contador queda grabado en la base, no en memoria — el propio reinicio borraría la cuenta y la escalada nunca saldría del primer escalón. Instalar una clave nueva lo reinicia todo, porque graba otro registro.
Sin licencia y licencia inválida quedan fuera de la escalada, a propósito: castigar a una instalación recién creada, que todavía va a pedir su clave, sería autolesión.
El aviso de la parte superior de las pantallas tiene tres pesos visuales — vence pronto, vencida y bloqueada no pueden parecer lo mismo — y dice qué le va a pasar al sistema y cuándo, en vez de solo pedir que se hable con el proveedor.
Danger Zone — /settings/danger-zone

Operaciones que afectan mucho de una vez. Tres pestañas.
Bloqueo / Desbloqueo de Interfaces
Las Interfaces agrupadas por Aplicación, con conteo de activas y bloqueadas, filtro por tipo (Recolección / Entrega) y selección múltiple.
| Acción | Alcance |
|---|---|
| Bloquear / Desbloquear Todas | Todas las interfaces de una Aplicación |
| Bloquear / Desbloquear Seleccionadas | Solo las marcadas, incluso de aplicaciones distintas |
Las dos piden confirmación escrita. Bloquear en masa es la maniobra estándar antes de una ventana de mantenimiento del sistema destino: los mensajes siguen entrando y quedan en la cola, sin volverse errores.
Mensajes No Procesados
La lista completa de mensajes pendientes, con los mismos filtros de la pantalla de Mensajes, y dos acciones en lote: reprocesar y cancelar.
El reprocesamiento masivo no funciona con “todos los mensajes del filtro” seleccionados — los mensajes se reencolan uno a uno. Limpie la selección y reprocese por página.
La cancelación pide confirmación escrita y no borra nada: los mensajes quedan con estado Cancelada, salen de la cola de procesamiento y siguen en el historial. Es la salida para un lote que nunca debió entrar — una prueba, una carga duplicada — sin perder el rastro de que existió.
Marcando “todos los mensajes del filtro”, la cancelación ocurre en el servidor, sin que el navegador enumere ids — es lo que permite cancelar decenas de miles de mensajes de una vez. El filtro respeta siempre las Interfaces permitidas del usuario.
Importar / Exportar
Lleva la configuración de un ambiente a otro — de desarrollo a producción, de una planta a otra, o como respaldo antes de un cambio grande.
Solo los administradores ven esta sección: el import graba Perfiles y Parámetros, y el export descifra los secretos de todas las Aplicaciones. Migrar un ambiente es acto de quien administra la instalación entera.

Exportar genera un ZIP con un JSON por dominio seleccionado. Dominios disponibles:
| Aplicaciones | Interfaces |
| Definiciones de Entrega | Definiciones de Recolección |
| Errores de Negocio | Configuraciones de Alertas |
| Transformadores | Parámetros |
| Perfiles de Acceso | API Keys |
| Credenciales | Claves de Cifrado |
| Conexiones Externas | Programadores |
| Motivos de Parada | Variables |
| Perfiles del OPC Simulator | Perfiles del Modbus Simulator |
| Perfiles del PI Simulator |
Los campos sensibles (contraseñas, claves, tokens) están protegidos por una contraseña de archivo, informada en la exportación y exigida en la importación.
Importar acepta el mismo ZIP (hasta 200 MB descomprimido), en dos modos:
| Modo | Qué hace |
|---|---|
| Fusionar | Actualiza lo que existe y crea lo que falta. Nada se borra |
| Sustituir | Borra los datos actuales de los dominios elegidos y los recrea desde cero. No se puede deshacer |
Sustituir exige justificación y confirmación escrita, y queda registrado en el log de auditoría.
Sin la contraseña correcta, los campos sensibles de los ítems importados no se restauran — los demás datos entran normalmente. El resultado es una configuración completa con credenciales vacías, que falla en la primera ejecución. La pantalla lo avisa, pero vale la pena verificarlo después de importar.
El resultado de la importación viene detallado por dominio: creados, actualizados, saltados, errores y avisos.
Las Definiciones de Entrega llevan consigo el Transformador por Aplicación productora de cada una, por la sigla de la Aplicación y el nombre del Transformador. Si alguno de los dos no existe en el destino, esa fila se salta, con aviso en el resultado — sin el Transformador, no significaría nada.
Una lista dentro de un ítem — los reenvíos de una Definición, los Transformadores por productora de una Entrega, los permisos de un Perfil de Acceso, los escenarios de un Plan de Prueba — que no viene en el archivo deja como está lo que existe en el destino. Es el caso de la exportación hecha antes de que la lista existiera: antes, la ausencia se leía como lista vacía, y la importación borraba en el destino lo que el archivo nunca supo que existía. Una lista que viene vacía sigue valiendo, y vacía la del destino.
Las Interfaces creadas por importación ya entran en el programador en funcionamiento — no hace falta reiniciar la API. Un programador que ya existía y estaba apagado no se vuelve a encender por la importación: quien detuvo una interfaz a mano no la ve volver sola.