1. Огляд проєкту
Клієнт — будівельна компанія в Канаді, яка продає та веде довгі construction-проєкти: від першого ліда і estimate до permits, demolition, construction, invoices, final meeting і warranty documents
До старту Odoo вже була обрана як цільова система, але реальна операційка жила в Asana, Google Drive, Google Sheets, Gmail, телефонії, формах сайту й ручних таблицях. Завдання було зібрати це в одну керовану систему без важкого кастому і без переїзду на окремий сервер
Моя роль була integration architect та hands-on implementer: розібрати поточні процеси, спроєктувати Odoo 19 Enterprise architecture, мігрувати історію, зберегти контекст роботи команди й запустити базову операційну модель у короткий термін
2. З чим прийшов клієнт
•CRM була розірвана між каналами: ліди приходили з реклами, форм сайту, телефонії, email і Asana, але не збирались в одну чисту pipeline-логіку
•Asana була фактично операційною системою: продажі, активні будівельні проєкти, задачі, коментарі, дедлайни, вкладення й стадії жили поза Odoo
•Google Drive тримав важливий контекст: drawings, work orders, invoices, dashboards, spreadsheets і client folders були потрібні команді щодня, але не були нативно пов'язані з Odoo records
•Будівельні проєкти мали довгі цикли: кожен проєкт проходив 10-15 етапів, і менеджерам потрібні були зрозумілі stage-и, deadlines, dependencies та Gantt
•Оцінки й пропозиції жили в Excel/Sheets: ціни, packages, concrete pads, insulation, drywall, optional items і GST треба було перенести в sales process
•Платформні обмеження були частиною задачі: клієнт вирішив лишатися на Odoo Online, тому інтеграції треба було робити обережно, без Odoo.sh, без серверного bridge там, де це не було погоджено
3. Поставлені завдання
•Налаштувати Odoo 19 Enterprise як центральну систему для CRM, Sales, Projects, Documents і Gantt
•Перенести sales pipeline з Asana в Odoo CRM без втрати стадій, історії та прив'язки до джерел
•Синхронізувати active construction projects, задачі, deadlines і stage architecture з Asana в Odoo Projects
•Перенести comments, authorship, attachments і історичний контекст з Asana в Odoo chatter
•Відтворити Google Drive document structure в Odoo Documents і прив'язати ключові файли до проєктів та задач
•Перевести частину spreadsheet-процесів у Odoo Documents / live spreadsheets, де це було технічно виправдано
•Налаштувати базовий шлях lead intake: site forms, CallRail, RingCentral, Gmail і Odoo CRM
•Запустити sales-to-project flow: коли угода доходить до signed stage, Odoo створює project і переносить операційку в execution layer
4. Рішення та хід роботи
System Setup & CRM Architecture
•Проведено аудит Odoo 19 Enterprise setup, Asana workspace, Google Drive structure, active pipelines і ручних таблиць
•Побудовано XML-RPC integration bridge для контрольованої міграції та повторюваних імпортів
•Створено custom fields для dedupe: `x_asana_gid` на `crm.lead` і `project.task`, окремі ID-поля для imported comments, attachments, CallRail і RingCentral events
•CRM stages очищено та синхронізовано з реальною sales pipeline, а rogue stages перенесено або прибрано
•Імпорт зроблено інкрементальним: скрипти могли запускатися повторно, не створюючи дублікати й не перезаписуючи живі дані
Asana to Odoo Project Migration
•Повністю витягнуто 21 Asana board і перенесено 1,253 tasks у `project.task`
•Оригінальні Asana sections динамічно мігрували в `project.task.type`, щоб Odoo stage-и відповідали мові команди, а не абстрактній дефолтній схемі
•Для 7 активних construction projects виставлено власний порядок стадій, бо різні проєкти мали різну операційну логіку
•30 унікальних project stages синхронізовано 1:1 з Asana, зайві Odoo stages прибрано
•Дати задач і дедлайни приведено до Gantt-ready формату, а там, де можливо, додано залежності між етапами
Comments, Attachments & Historical Context
•Перенесено 497 Asana comments в Odoo chatter зі збереженням авторства, дати створення та читабельного HTML-body
•Завантажено 437 physical attachments і прив'язано їх до відповідних task threads через `ir.attachment`
•Для видалених або недоступних Asana users додано fallback logic, щоб історія не ламалась і не перетворювалась на безіменні system messages
•Реалізовано HTTP 429 exponential backoff, щоб обійти rate limits Odoo/Asana без втрати даних і ручного перезапуску процесу
Documents, Drive & Construction Files
•Відтворено Google Drive hierarchy всередині Odoo Documents: project folders, work orders, drawings, invoices, dashboards і coordination materials
•Імпортовані файли не просто лежали в системі, а були пов'язані з конкретними projects/tasks, щоб команда могла працювати з ними в операційному контексті
•Частину Excel/Sheets-документів протестовано на conversion flow у live spreadsheets, щоб залишити знайомий табличний формат там, де він справді корисний
•Для drawings, estimates і фінансових документів налаштовано логіку пошуку та прив'язки до потрібних будівельних карток
Lead Intake, Calls & Website Forms
•CallRail API перевірено і підключено до Odoo: дзвінки створюють нові CRM leads або доповнюють існуючі записи за телефоном
•RingCentral call log інтегровано як базовий CRM intake layer з dedupe через call ID
•Website forms на Contact Form 7 підключено до Odoo CRM через email alias, щоб заявки з сайту одразу створювали lead
•Gmail OAuth налаштовано та протестовано для ключових поштових акаунтів, outbound email працював через корпоративну адресу
•Історичний email backfill і глибокий phone-event timeline свідомо винесено в майбутній upgrade scope через обмеження Odoo Online і рішення клієнта
Sales, Estimates & Project Automation
•Підготовлено products/services для estimate flow: garage package, concrete pad, insulation, drywall, permits та optional items
•Податкову логіку налаштовано під Alberta GST 5%, без PST
•Спроєктовано quotation flow, де менеджер може збирати комерційну пропозицію з операційних позицій, а не копіювати дані між таблицями
•Додано automated action: коли угода переходить у signed/confirmed стан, Odoo створює project і переводить продаж у execution layer
5. Що отримав клієнт
•Єдина Odoo-система для CRM, Sales, Projects, Documents, Gantt і базового communication intake
•21 Asana board, 1,253 tasks, 497 comments і 437 attachments перенесені в Odoo без руйнування історичного контексту
•Sales pipeline, active projects і construction stages більше не живуть окремо в Asana
•Команда отримала project workflow з реальними будівельними етапами, deadlines, dependencies і Gantt-візуалізацією
•Документи з Google Drive стали доступні всередині Odoo там, де відбувається робота: на задачах, проєктах і операційних картках
•Дзвінки, site forms і email intake отримали базовий шлях у CRM без ручного перенесення даних
•Архітектура залишилась сумісною з Odoo Online, без зайвого кастому і без примусового апгрейду платформи
6. Технічний результат
Цей кейс був про дисципліновану інтеграцію, а не про написання великого кастомного модуля. Найважливішим було не просто імпортувати дані, а зберегти структуру, авторство, історію, залежності й щоденну логіку роботи будівельної команди
В результаті Odoo стала не ще одним інструментом поруч з Asana і Drive, а центральним операційним місцем, де продаж переходить у проєкт, проєкт тримає документи й задачі, а нові звернення з сайту та телефонії одразу потрапляють у CRM