1. Kontekst Projektu
Klient to kanadyjska firma budowlana prowadząca długie projekty garażowe i construction: od pierwszego leada i wyceny po permits, demolition, construction, faktury, final meeting i warranty documents
Odoo było już wybrane jako system docelowy, ale realna operacyjka nadal była rozproszona między Asaną, Google Drive, Google Sheets, Gmailem, telefonią, formularzami na stronie i ręcznymi arkuszami. Zadaniem było zebrać ten proces w jeden kontrolowany system bez ciężkiego custom developmentu i bez przenoszenia klienta na osobny serwer
Moja rola obejmowała integration architecture i hands-on implementation: zrozumieć obecny proces, zaprojektować architekturę Odoo 19 Enterprise, przenieść historię pracy, zachować kontekst zespołu i szybko uruchomić praktyczny baseline
2. Stan Początkowy
•CRM był rozbity między kanałami: leady przychodziły z reklam, formularzy strony, telefonów, maili i Asany, ale nie trafiały do jednej czystej pipeline
•Asana stała się systemem operacyjnym: sprzedaż, aktywne projekty budowlane, taski, komentarze, terminy, załączniki i etapy żyły poza Odoo
•Google Drive trzymał kluczowy kontekst: drawings, work orders, invoices, dashboards, spreadsheets i foldery klientów były używane codziennie, ale nie były natywnie połączone z rekordami Odoo
•Projekty budowlane miały długi cykl: każdy projekt przechodził przez 10-15 etapów, więc zespół potrzebował stage-y, deadlines, dependencies i widoku Gantt
•Wyceny żyły w Excel/Sheets: ceny, packages, concrete pads, insulation, drywall, optional items i GST trzeba było przenieść do procesu sprzedaży
•Ograniczenia platformy były częścią zadania: klient zdecydował się pozostać na Odoo Online, więc integracje musiały być zaprojektowane ostrożnie, bez Odoo.sh i bez server bridge tam, gdzie nie było na to zgody
3. Zakres
•Skonfigurować Odoo 19 Enterprise jako centralny system dla CRM, Sales, Projects, Documents i Gantt
•Przenieść sales pipeline z Asany do Odoo CRM bez utraty etapów, historii i kontekstu źródeł
•Zsynchronizować active construction projects, taski, deadlines i stage architecture z Asany do Odoo Projects
•Przenieść comments, authorship, attachments i historyczny kontekst z Asany do Odoo chatter
•Odtworzyć strukturę Google Drive w Odoo Documents i połączyć kluczowe pliki z projektami oraz taskami
•Przenieść wybrane spreadsheet workflows do Odoo Documents / live spreadsheets tam, gdzie miało to praktyczny sens
•Ustawić bazowy lead intake z website forms, CallRail, RingCentral, Gmail i Odoo CRM
•Uruchomić sales-to-project flow, w którym podpisana sprzedaż tworzy projekt operacyjny
4. Rozwiązanie
System Setup & CRM Architecture
•Przeprowadziłem audyt Odoo 19 Enterprise, Asana workspace, Google Drive structure, aktywnych pipeline i arkuszy
•Zbudowałem XML-RPC integration bridge do kontrolowanej i powtarzalnej migracji
•Dodałem pola dedupe: `x_asana_gid` na `crm.lead` i `project.task`, plus osobne pola ID dla imported comments, attachments, CallRail i RingCentral events
•Wyczyściłem i zsynchronizowałem CRM stages z realnym sales pipeline, a zbędne lub przypadkowe stage-e przeniosłem albo usunąłem
•Import był inkrementalny, więc skrypty można było uruchamiać ponownie bez duplikatów i bez nadpisywania żywych danych
Asana to Odoo Project Migration
•Pobrano 21 Asana boards i przeniesiono 1,253 tasks do `project.task`
•Oryginalne sekcje Asany dynamicznie zamieniono na `project.task.type`, dzięki czemu Odoo mówiło językiem zespołu, a nie generycznym workflow
•Dla 7 aktywnych construction projects ustawiono indywidualny porządek etapów, bo każdy projekt miał własną logikę operacyjną
•30 unikalnych project stages zsynchronizowano 1:1 z Asaną, a zbędne domyślne stage-e Odoo usunięto
•Daty i deadlines zostały znormalizowane pod Gantt, z dependencies dodanymi tam, gdzie było to możliwe
Comments, Attachments & Historical Context
•497 Asana comments przeniesiono do Odoo chatter z zachowaniem autorstwa, daty i czytelnego HTML-body
•437 physical attachments pobrano i połączono z właściwymi task threads przez `ir.attachment`
•Dodano fallback logic dla usuniętych lub niedostępnych Asana users, żeby historia nie zamieniła się w anonimowe system messages
•Wdrożono HTTP 429 exponential backoff, żeby omijać rate limits Odoo/Asana bez utraty danych i ręcznego pilnowania procesu
Documents, Drive & Construction Files
•Odtworzono Google Drive hierarchy wewnątrz Odoo Documents: project folders, work orders, drawings, invoices, dashboards i coordination materials
•Importowane pliki zostały połączone z konkretnymi projects/tasks, czyli były dostępne dokładnie tam, gdzie zespół pracował
•Wybrane Excel/Sheets files przetestowano pod conversion flow do live spreadsheets, zostawiając tabelaryczny format tylko tam, gdzie naprawdę pomagał
•Dla drawings, estimates i dokumentów finansowych przygotowano logikę dopasowania do właściwych rekordów budowlanych
Lead Intake, Calls & Website Forms
•CallRail API zostało sprawdzone i podłączone do Odoo: calls tworzą nowe CRM leads albo uzupełniają istniejące po numerze telefonu
•RingCentral call log podłączono jako bazowy CRM intake layer z dedupe po call ID
•Formularze Contact Form 7 połączono z Odoo CRM przez email alias, żeby zgłoszenia ze strony od razu tworzyły lead
•Gmail OAuth skonfigurowano i przetestowano dla kluczowych skrzynek, z outbound email przez firmowy sender
•Historyczny email backfill i głębszy phone-event timeline zostały zostawione na future upgrade ze względu na ograniczenia Odoo Online i decyzje klienta
Sales, Estimates & Project Automation
•Przygotowano products/services dla estimate flow: garage package, concrete pad, insulation, drywall, permits i optional items
•Podatki ustawiono pod Alberta GST 5%, bez PST
•Zaprojektowano quotation flow, w którym manager składa ofertę z operacyjnych pozycji zamiast kopiować dane między arkuszami
•Dodano automated action: gdy deal trafia do signed/confirmed state, Odoo tworzy project i przenosi sprzedaż do execution layer
5. Efekt
•Jeden system Odoo dla CRM, Sales, Projects, Documents, Gantt i bazowego communication intake
•21 Asana boards, 1,253 tasks, 497 comments i 437 attachments przeniesione do Odoo bez utraty historycznego kontekstu
•Sales pipeline, aktywne projekty i construction stages nie żyją już osobno w Asanie
•Zespół dostał project workflow z realnymi etapami budowlanymi, deadlines, dependencies i widokiem Gantt
•Dokumenty z Google Drive stały się dostępne wewnątrz Odoo tam, gdzie faktycznie odbywa się praca
•Calls, website forms i email intake dostały bazową ścieżkę do CRM bez ręcznego przepisywania
•Architektura pozostała zgodna z Odoo Online, bez zbędnego custom code i bez wymuszonej migracji platformy
6. Rezultat Techniczny
Ten case był o zdyscyplinowanej integracji, nie o budowie dużego custom modułu. Najważniejsze było nie samo importowanie danych, ale zachowanie struktury, autorstwa, historii, zależności i codziennej logiki zespołu budowlanego
Odoo stało się nie kolejnym narzędziem obok Asany i Drive, ale miejscem operacyjnym, gdzie sprzedaż przechodzi w projekt, projekt trzyma dokumenty i taski, a nowe zgłoszenia ze strony i telefonii trafiają prosto do CRM