Por qué 4 horas — y no 4 semanas
Si tu Odoo lleva seis meses "casi listo", no tienes un problema de espera. Tienes un problema de diagnóstico. Esta plantilla entrega una lista mínima suficiente de 50 puntos que el CFO y el tech lead de una PYME de Perú, México, Colombia, Argentina o Chile pueden recorrer en 4 horas y obtener una respuesta honesta: rescatar el sistema, optimizarlo o quemarlo y migrar a un Odoo 18 limpio.
Una auditoría forense externa de un consultor toma 30–60 horas-persona y cuesta entre USD 1 500 y USD 5 000 por instalación. Hacerla cada trimestre para cada ERP de PYME sale demasiado caro. El autodiagnóstico resuelve otra cosa: cada tres meses, darle al equipo un indicador de si vale la pena llamar a un experto externo.
En una muestra de 60+ instalaciones de Odoo en LATAM (Perú, México, Chile, Colombia, Argentina entre 2018 y 2026), el 78% de los sistemas eran recuperables — pero solo si los problemas se detectaban antes de que el cierre contable se atrasara 14 días o las facturas empezaran a rechazarse en bloque por SUNAT, SAT, DIAN, ARCA o SII.
El autodiagnóstico es early warning. El PDF del consultor externo es cirugía. No los confundas — y no intentes que uno reemplace al otro.
Las 10 categorías del autodiagnóstico
Los 50 puntos están repartidos en 10 categorías de 4 a 6 ítems. Cada uno recibe una calificación: sí / no / parcial. Mientras más no tenga una categoría, mayor es la prioridad de un focused audit en esa área. La auditoría detallada se reserva para cuando la categoría con más rojos es fiscal o código custom.
#1. Configuración y versión (5 puntos)
- Versión de Odoo: 16.0, 17.0 o 18.0 LTS. Si corres 13–15, estás en stack deprecated sin parches de seguridad.
- Edition Community o Enterprise. El módulo accounting completo en Community solo existe vía módulos de terceros de OCA.
- Developer mode habilitado para los usuarios con el nivel técnico que lo necesita — no más, no menos.
- Número de usuarios activos contrastado con la licencia. Pasarse del límite es exposición a auditoría de Odoo SA.
- Existe un documento de procesos que referencia módulos concretos de Odoo, no un "todo funciona de alguna manera".
#2. Localización fiscal (8 puntos)
La categoría más explosiva. La mayor parte de las multas se origina aquí.
- El módulo
l10n_xxcorrespondiente está instalado (l10n_pe,l10n_mx,l10n_co,l10n_ar,l10n_cl). - La versión del
l10n_xxcoincide con la major version de Odoo. Los parches de OCA l10n-peru suelen llegar con 2–4 semanas de retraso respecto al core upgrade. - Los certificados de firma electrónica están instalados y no expiran en los próximos 90 días.
- Perú:
l10n_pe_ediconfigurado para CPE. ¿GRE (Guía de Remisión Electrónica) cerrada correctamente? - Perú: integración con SIRE (RVIE + RCE) activa. Si no, es multa diferida.
- México: complementos Carta Porte 3.1 y Pagos 2.0 instalados.
- Colombia: nómina electrónica integrada. ¿Hay conector a RADIAN para factoring de facturas?
- Argentina / Chile: webhooks a ARCA (ex-AFIP) y SII activos. Los rechazos de validación se loguean en un lugar consultable.
#3. Código custom (5 puntos)
- Cuántas líneas de código custom en
addons/custom/. Más de 5 000 — o eres un ERP builder, o tienes un problema. - Existen unit tests para los módulos custom. Al menos uno.
- Cada módulo custom tiene un README que explica el por qué, no el qué.
- Cuántos módulos custom duplican funcionalidad nativa (Sale, Inventory, MRP). Ese código se rompe en cada upgrade.
- Quién firmó el último commit en cada módulo custom. ¿Esa persona sigue en la empresa?
#4. Calidad de datos (6 puntos)
- Cuántos duplicados en
res.partnerporvat(GROUP BY vat HAVING COUNT(*) > 1). - Cuántos productos en
product.templatesin BoM activos — crítico en PYMEs manufactureras. - Cuántas líneas contables sin contraparte (
account.move.line WHERE partner_id IS NULL). Cada una rompe el reporte por cliente. - SKU fantasma: productos sin movimiento en los últimos 12 meses.
- El stock total en Odoo coincide con el inventario físico (±2%).
- Los periodos contables del año anterior están cerrados, o quedan abiertos para correcciones post-facto.
#5. Performance (4 puntos)
- Top-10 de queries lentos en
pg_stat_statements. Hay queries que superan los 5 segundos. - Tamaño de la base Postgres: hasta 20 GB es normal, 20–50 GB exige vacuum y cleanup regulares, más de 50 GB exige archivado real.
- Tiempo de respuesta del POS en horas pico: menos de 1 segundo.
- Cuántas veces al día aparecen en los logs
WorkerLost,MemoryErroro 504 Gateway Timeout.
#6. Integraciones (5 puntos)
- Existe un inventario de integraciones activas — Shopify, MercadoLibre, webhooks bancarios, ContPaq, Siigo.
- Cada integración tiene retry con exponential backoff.
- Dónde se almacenan los failed payloads. Si en ningún lado, tienes silent data loss.
- Alguien monitorea errores de integración — Sentry, Datadog o al menos un cron-script manual con notificación a Slack.
- Se probó el disaster recovery de la última integración en los últimos 90 días.
#7. Cron jobs (4 puntos)
- Cuántos registros activos en
ir.cron. - Cuántos tienen
nextcallmás de 7 días en el pasado (zombies). - Cuál es el cron job más pesado por tiempo de ejecución promedio.
- Existe algún cron que se ejecuta cada minuto. ¿Tiene justificación de negocio?
#8. Backups y recuperación (4 puntos)
- Backup diario de DB y filestore se ejecuta de forma automática y verificada.
- El backup vive en una región geográfica distinta — S3/GCS de otra región, no el mismo data center.
- Se probó un restore en los últimos 90 días. RTO medido en segundos, minutos u horas.
- Existe una retention policy documentada. Estándar razonable: 7 daily + 4 weekly + 12 monthly.
#9. Seguridad y accesos (5 puntos)
- Todas las cuentas admin tienen 2FA habilitado.
- No existe una cuenta admin compartida que TI envía por WhatsApp. El audit trail con eso queda inservible y el bus factor cae a 1.
- El acceso al filestore está protegido a nivel de SO (solo el usuario
odoo). - Rate limit activo en rutas de portal y website para frenar brute force.
- Audit log activo para la acción
unlink(eliminación de registros).
#10. Operación y aprendizaje (4 puntos)
- Se entrevistó a 5 usuarios clave: qué workarounds usan fuera de Odoo — Excel sombra, grupos de WhatsApp para estados de pedido.
- Cada proceso tiene owner documentado: una persona, no "el área".
- Existe un incident log de los últimos 90 días con root cause analysis, no "se rompió — se arregló".
- Plan de upgrade a la próxima LTS (Odoo 19) decidido: aprobado, postergado a 2027 o ni siquiera discutido.
Cuándo el autodiagnóstico aplica — y cuándo no
| Condición | Aplica | Por qué |
|---|---|---|
| Odoo on-prem o self-hosted, > 6 meses en producción | Sí | Las patologías se acumulan con el tiempo; en sistemas recientes la mitad de los puntos darán falso positivo verde |
Equipo con tech lead capaz de correr psql y leer logs | Sí | Es un documento técnico, no un managerial summary |
| 4 horas concentradas en una sola sesión | Sí | Estirado a 2 semanas, los primeros y últimos puntos ya viven en realidades distintas |
| Odoo Online (SaaS sin shell) | Parcial | La mitad de los puntos sobre DB, cron y logs no aplica; necesitas un flow alternativo de 25 puntos |
| México con CFDI muy customizado | No | Los detalles de complementos exigen review experto, no un checklist universal |
| Argentina con XML legacy y sin webhooks a ARCA | No | Requieren validaciones puntuales, no 50 universales |
| El único "tech lead" es el contador, sin SQL ni sysadmin | No | El autodiagnóstico genera más ruido que señal; llama directo a un externo |
Errores típicos al recorrer la lista
Error 1. Llenar "a ojo". El equipo pinta puntos verdes sin verificar. Sin psql y sin leer logs, esto deja de ser auditoría y pasa a ser autoengaño.
Error 2. Ignorar los amarillos. Parcial no es OK. Es "toma una hora aparte y resuélvelo" — en 3 meses, el amarillo será rojo.
Error 3. Autodiagnóstico hecho por la misma persona que implementó. Conflicto de interés directo: no va a señalar sus propios defectos. Mínimo, invita un second pair of eyes — otro dev, el contador o el COO.
Error 4. Confiar ciegamente en la localización fiscal. "Las facturas salen" no equivale a "la localización está bien configurada". SUNAT, SAT y DIAN pueden aceptar un XML con warning que se materializa como multa en la revisión anual.
Error 5. Hacerlo una vez. El ERP es un sistema vivo. Si lo recorres una vez, en 90 días la mitad de las respuestas ya están desactualizadas. Cadencia mínima: trimestral. Antes de cada major upgrade: obligatorio.
Caso anónimo: cadena minorista en Lima
Cadena minorista, 9 puntos de venta, Odoo 16 Enterprise con 18 meses en producción. El CFO inicia el autodiagnóstico — 4 horas con el tech lead y el contador senior.
Distribución de resultados sobre 50 puntos: 14 rojos, 11 amarillos, 25 verdes.
"Pensábamos que el problema era performance. Resultó que la performance era un síntoma — el problema real estaba en localización fiscal y backups que nunca habíamos restaurado."
Top-3 hallazgos:
l10n_pe_edino recibió patches desde el día de instalación. Aproximadamente el 8% de las CPE salía con formato de serie incorrecto — SUNAT las aceptaba con warning. En la revisión anual eso se habría convertido en rechazo y multa multi-UIT.- 6 de 11 cron jobs hacían refresh de un cache que ningún código activo consumía. CPU al 30% constante sin que nadie supiera de dónde venía.
- Los backups corrían, pero el restore no se probó ni una vez en 18 meses. En el restore de prueba sobre staging quedó claro que el filestore no se estaba copiando — la empresa, de hecho, no tenía backup de 1.2 TB de facturas y fotos de producto.
Tras 6 semanas de reparación (3 devs × 6 semanas a carga parcial + 2 semanas contables de re-emisión): el cierre mensual bajó de 9 días a 3, la carga del servidor cayó −35%, y los backups se mudaron a S3 en otra región con restore probado (RTO 90 minutos).
ROI: gasto de USD 4 800. Recuperación estimada: USD 18 000+ anuales entre la reducción de tiempos de cierre contable y la eliminación del riesgo de multa por CPE mal emitidas.
Tu siguiente paso: rescatar, auditar o migrar
Después del autodiagnóstico tienes tres caminos.
Camino 1. Rescatar y optimizar. Menos de 10 puntos rojos, concentrados en categorías 4 (datos), 5 (performance) y 8 (backups). El sistema es salvable por el equipo interno en 6–10 semanas. Mira la metodología en rescate de proyecto Odoo.
Camino 2. Auditoría detallada externa. Más de 10 rojos, o los rojos viven en categorías 2 (localización fiscal) y 3 (código custom). Llama a un consultor externo para un forensic review de 5–10 días. Detalles del scope en auditoría Odoo.
Camino 3. Migración o reemplazo. Aproximadamente el 7% de los casos de nuestra muestra: el sistema está tan recargado de deuda técnica que sale más barato empezar con un Odoo 18 o 19 limpio. Esa decisión se toma sobre datos, no emociones. Consulta el marco de decisión de migración antes de cerrar el debate.
psql listos para correr, los emails templates para coordinar el review con el equipo, y un tablero de Notion para trackear progreso. Email-gated, sin spam. Una vez cada dos semanas — newsletter Pulso Odoo LATAM: descargar Audita tu Odoo.Preguntas frecuentes
¿Cuánto tiempo toma realmente recorrer los 50 puntos?
4 horas de trabajo concentrado del tech lead más 1 hora del CFO. Si toma menos, alguien está pintando verdes a ciegas; si toma mucho más, sobra documentación y falta ERP funcionando.
Mejor 25 puntos a profundidad que 50 en superficial — si solo tienes 2 horas, parte por las categorías 2 (fiscal) y 8 (backups).
¿Puedo usarlo solo para mi país?
Sí. Las categorías 1 y 3–10 son universales para toda LATAM. Solo la categoría 2 (localización fiscal) es country-specific — toma los puntos de tu jurisdicción (PE, MX, CO, AR, CL, PY, EC, UY) y descarta el resto.
¿Qué hago si salen más de 10 puntos rojos?
No los arregles todos al mismo tiempo. Prioriza en este orden: primero localización fiscal (riesgo de multa del regulador), después backups (riesgo de pérdida de datos), luego performance y calidad de datos. El ciclo completo de rescate suele tomar 8–12 semanas.
¿Esto reemplaza a una auditoría externa formal?
No. Una auditoría externa entrega 30–60 horas de experto más un PDF de 30–60 páginas con priorización y estimaciones en USD. El autodiagnóstico es early warning — sirve para decidir si vale la pena pagar al externo.
¿Funciona en Odoo Online (SaaS)?
Parcialmente, cerca del 60% de los puntos. Las categorías sobre DB, cron, performance y backups dependen de shell access que Odoo Online no expone. Para Online necesitas un flow alternativo de 25 puntos.
¿Y si el partner de implementación se opone — dice "no hace falta"?
Es red flag por sí mismo. Un partner alineado con el éxito long-term del cliente debería proponer esta verificación. La resistencia indica problemas escondidos.
¿Con qué frecuencia hay que repetirlo?
Trimestral como mínimo. Antes de cada major upgrade: obligatorio. Después de un incident relevante: extraordinario dentro de los 7 días siguientes.
¿Odoo no tiene un reporte estándar que muestre la mitad de estos puntos?
No. Parte de los datos está en Apps → Settings (versión, edition, número de usuarios), pero localización fiscal, cron zombies y calidad de datos exigen SQL directo. La UI de Odoo oculta deliberadamente esos detalles técnicos.
