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