Odoo Integration, Construction Operations[Launched]

Operaciones de Construcción en Odoo

Operaciones de Construcción en Odoo preview

Arquitectura del sistema //

Odoo 19Odoo OnlinePythonXML-RPCAsana APIGoogle DriveCallRail APIRingCentral APIGmail OAuthContact Form 7

1. Contexto Del Proyecto

El cliente es una empresa canadiense de construcción que vende y ejecuta proyectos largos de garajes y obras: desde el primer lead y estimate hasta permits, demolition, construction, invoices, final meeting y warranty documents

Odoo ya estaba elegido como sistema objetivo, pero la operación real seguía repartida entre Asana, Google Drive, Google Sheets, Gmail, telefonía, formularios web y hojas manuales. El objetivo era llevar ese flujo a un sistema controlado sin desarrollo custom pesado y sin mover al cliente a un servidor separado

Mi rol fue de integration architect y hands-on implementer: entender los procesos existentes, diseñar la arquitectura en Odoo 19 Enterprise, migrar el historial operativo, conservar el contexto del equipo y lanzar un baseline funcional rápido

2. Situación Inicial

El CRM estaba fragmentado por canales: los leads llegaban desde ads, formularios web, llamadas, email y Asana, pero no caían en una pipeline limpia
Asana se había convertido en el sistema operativo: ventas, proyectos activos de construcción, tareas, comentarios, fechas, adjuntos y etapas vivían fuera de Odoo
Google Drive contenía el contexto crítico: drawings, work orders, invoices, dashboards, spreadsheets y carpetas de clientes se usaban a diario, pero no estaban conectados de forma nativa con registros de Odoo
Los proyectos tenían ciclos largos: cada proyecto pasaba por 10-15 etapas, así que el equipo necesitaba stages claros, deadlines, dependencies y planificación Gantt
Los estimates vivían en Excel/Sheets: precios, packages, concrete pads, insulation, drywall, optional items y GST tenían que entrar en el flujo comercial
Las limitaciones de plataforma importaban: el cliente decidió quedarse en Odoo Online, así que las integraciones debían diseñarse con cuidado, sin Odoo.sh y sin server bridge salvo aprobación explícita

3. Alcance

Configurar Odoo 19 Enterprise como sistema central para CRM, Sales, Projects, Documents y Gantt
Migrar la sales pipeline de Asana a Odoo CRM sin perder etapas, historial ni contexto de origen
Sincronizar active construction projects, tareas, deadlines y stage architecture desde Asana hacia Odoo Projects
Migrar comments, authorship, attachments y contexto histórico desde Asana hacia Odoo chatter
Recrear la estructura de Google Drive en Odoo Documents y enlazar archivos clave con proyectos y tareas
Pasar algunos spreadsheet workflows a Odoo Documents / live spreadsheets donde tenía sentido operativo
Configurar un baseline de lead intake desde website forms, CallRail, RingCentral, Gmail y Odoo CRM
Lanzar un sales-to-project flow donde un deal firmado crea un proyecto operativo

4. Solución

System Setup & CRM Architecture

Audité el setup de Odoo 19 Enterprise, Asana workspace, Google Drive structure, pipelines activas y flujos en hojas de cálculo
Construí un XML-RPC integration bridge para migraciones controladas y repetibles
Añadí campos de dedupe: `x_asana_gid` en `crm.lead` y `project.task`, más campos ID separados para imported comments, attachments, CallRail y RingCentral events
Limpié y sincronicé CRM stages con la sales pipeline real, moviendo o eliminando rogue stages
El proceso de importación fue incremental, así que los scripts podían ejecutarse varias veces sin duplicados ni overwrite de datos vivos

Asana to Odoo Project Migration

Se extrajeron 21 Asana boards y se migraron 1,253 tasks a `project.task`
Las secciones originales de Asana se convirtieron dinámicamente en `project.task.type`, manteniendo los stages de Odoo alineados con el lenguaje real del equipo
Para 7 active construction projects se configuró un orden de etapas propio, porque cada proyecto tenía una lógica operativa diferente
30 project stages únicos quedaron sincronizados 1:1 con Asana, eliminando stages default innecesarios de Odoo
Las fechas y deadlines de tareas se normalizaron para Gantt, añadiendo dependencies donde era posible

Comments, Attachments & Historical Context

Migré 497 Asana comments a Odoo chatter conservando autoría, fecha y HTML-body legible
Descargué 437 physical attachments y los vinculé a los task threads correctos mediante `ir.attachment`
Añadí fallback logic para Asana users eliminados o no disponibles, evitando que la historia terminara como system messages anónimos
Implementé HTTP 429 exponential backoff para superar rate limits de Odoo/Asana sin pérdida de datos ni vigilancia manual

Documents, Drive & Construction Files

Recreé la Google Drive hierarchy dentro de Odoo Documents: project folders, work orders, drawings, invoices, dashboards y coordination materials
Los archivos importados quedaron vinculados a projects/tasks concretos, disponibles en el contexto operativo donde el equipo los necesitaba
Probé la conversión de ciertos Excel/Sheets files hacia live spreadsheets, manteniendo el formato tabular solo donde aportaba valor real
Para drawings, estimates y documentos financieros preparé lógica de matching con los registros de construcción correctos

Lead Intake, Calls & Website Forms

Verifiqué y conecté CallRail API con Odoo: las llamadas crean nuevos CRM leads o enriquecen leads existentes por teléfono
Integré RingCentral call logs como baseline CRM intake layer con dedupe por call ID
Conecté formularios Contact Form 7 con Odoo CRM mediante email alias, para que solicitudes del sitio creen leads inmediatamente
Configuré y probé Gmail OAuth para buzones clave, con outbound email funcionando desde el remitente corporativo
El historical email backfill y el phone-event timeline más profundo quedaron para un future upgrade por limitaciones de Odoo Online y decisiones de alcance del cliente

Sales, Estimates & Project Automation

Preparé products/services para estimate flow: garage package, concrete pad, insulation, drywall, permits y optional items
Configuré impuestos para Alberta GST 5%, sin PST
Diseñé un quotation flow donde managers construyen ofertas desde items operativos en vez de copiar datos entre hojas
Añadí una automated action: cuando un deal llega a signed/confirmed state, Odoo crea un project y mueve la venta al execution layer

5. Resultado

Un solo sistema Odoo para CRM, Sales, Projects, Documents, Gantt y baseline communication intake
21 Asana boards, 1,253 tasks, 497 comments y 437 attachments migrados a Odoo sin romper el contexto histórico
Sales pipeline, active projects y construction stages ya no viven separados en Asana
El equipo recibió un project workflow con etapas reales de construcción, deadlines, dependencies y vista Gantt
Los documentos de Google Drive quedaron disponibles dentro de Odoo donde ocurre el trabajo: tareas, proyectos y registros operativos
Calls, website forms y email intake recibieron una ruta base hacia CRM sin copiado manual
La arquitectura se mantuvo compatible con Odoo Online, sin custom code innecesario ni migración forzada de plataforma

6. Resultado Técnico

Este caso trató de integración disciplinada, no de construir un gran módulo custom. El reto real no era solo importar datos, sino conservar estructura, autoría, historia, dependencias y la lógica diaria de un equipo de construcción

Odoo dejó de ser otra herramienta al lado de Asana y Drive. Pasó a ser el lugar operativo donde ventas se convierten en proyectos, los proyectos contienen documentos y tareas, y las nuevas solicitudes desde web y telefonía llegan directamente al CRM

¿Tienes un problema parecido que ya toca resolver?

Los sistemas fiables no salen de hablar bonito. Veamos cómo la ingeniería quirúrgica puede devolver ritmo a tu producto