🔹 1. Przegląd Projektu
Klient to firma produkcyjno-handlowa działająca w obszarze eko-opakowań, magazynów, marketplace'ów, sprzedaży B2B/B2C oraz operacji wewnętrznych w Odoo. System był już centrum biznesu, ale po latach ręcznych zmian, modułów zewnętrznych, importów i poprawek robionych na żywo przez Studio stał się trudnym do opanowania węzłem operacyjnym
Właściciel nie potrzebował kolejnej drobnej naprawy Odoo. Potrzebował jednego systemu, który łączy działy, pracowników, magazyn, produkcję, sprzedaż, pocztę, CRM, marketplace'y, e-commerce i operacje końcowe w jeden kontrolowany przepływ
Moja rola była rolą rescue engineera: wejść w chaotyczny obszar ERP, rozplątać dług techniczny i procesowy oraz odbudować model operacyjny end-to-end — od przyjęcia surowca do sprzedaży gotowego produktu
🔹 2. Z Czym Przyszedł Klient
•Dług infrastrukturalny: Odoo działało na Hetznerze z zestawem modułów customowych i zewnętrznych, z których część nie była gotowa do przejścia na Odoo 19
•Katalog bez jasnego modelu: produkty były pomieszane między szablonami, wariantami, zestawami, opakowaniami, EAN, SKU z BaseLinkera i logiką magazynową. Część rekordów powstała po nieudanych importach jako osobne duplikaty
•Zanieczyszczona baza kontaktów: duplikaty, puste rekordy, wpisy testowe, różne formaty danych bankowych, regionów i kontaktów
•Magazyn i produkcja bez struktury kontrolnej: BoM, surowce, kody kreskowe, pomieszczenia magazynowe i druk etykiet istniały, ale wymagały stabilizacji i normalizacji
•CRM i poczta nie dawały pełnej kontroli: wiadomości gubiły się w Discuss albo w ręcznym procesie, follow-upy robili managerowie ręcznie, a zapytania sprzedażowe nie miały stabilnej ścieżki do oferty
•Ryzyka bezpieczeństwa i jakości: podczas audytu znalazłem historyczną podatność w mechanizmie Followers: zewnętrzny kontakt został błędnie dopisany do wewnętrznych dyskusji i przez długi czas otrzymywał kopie korespondencji operacyjnej. W systemie działały też niekontrolowane scheduled actions / cron jobs oraz automatyzacje bez jasnego właściciela biznesowego
🔹 3. Zakres Prac
•Przenieść Odoo z Hetznera na Odoo.sh / Odoo Cloud i dostosować system do Odoo 19
•Zrobić audyt modułów customowych, zostawić potrzebne elementy, usunąć niekompatybilne części oraz ustabilizować PBX i UI po aktualizacji
•Oczyścić bazę kontaktów, leadów, danych bankowych i regionów
•Znormalizować katalog produktów i nomenklaturę produkcyjną: szablony, warianty, SKU, EAN, opakowania, zdjęcia, wagę, wymiary, surowce i mapping BaseLinker
•Skonfigurować logikę magazynową: BoM, surowce RAW, kody kreskowe, pomieszczenia magazynowe, etykiety i strukturę gotową do produkcji
•Skonfigurować kontrolę obecności i dyscyplinę operacyjną: biuro miało trackować czas pracy w Odoo, a magazyn i produkcja pracować przez skanowanie kodów kreskowych
•Zbudować automatyzację poczty i CRM: AI routing, kwalifikację leadów, reguły deterministyczne, follow-upy i sales draft flow
•Przygotować e-commerce, portal B2B/B2C, integracje Shopify / Allegro / delivery oraz tracking layer
•Zreintegrować uporządkowany katalog, logikę magazynową i dane produktowe z marketplace'ami oraz sklepem internetowym
🔹 4. Rozwiązanie I Przebieg Prac
Infrastructure & Odoo 19 Migration
•Przeprowadzono audyt starego środowiska Hetzner i folderu modułów Odoo
•ERP przeniesiono na Odoo.sh / Odoo Cloud, a bazę zaktualizowano do Odoo 19
•Dostosowano kod customowy i zapytania ORM do nowej wersji core
•Przeniesiono i dostosowano zestaw kluczowych modułów customowych i zewnętrznych dla telefonii, HR, zakupów, procesów wewnętrznych i rozszerzeń serwisowych Odoo
•Niekompatybilne moduły telefoniczne i OCA usunięto z docelowej architektury, żeby nowa instalacja Odoo 19 nie odziedziczyła zbędnego długu technicznego
Product Catalog Recovery
•Przeprowadzono audyt aktualnego stanu katalogu: produkty, warianty, opakowania, zestawy, surowce, SKU, EAN, zdjęcia, ceny, wymiary i mapping BaseLinker były pomieszane bez jednej spójnej logiki
•Na podstawie analizy technicznej i data-driven research przygotowano kilka wariantów przebudowy katalogu, wraz z ryzykami i skutkami dla magazynu, marketplace'ów, e-commerce i produkcji
•Po zatwierdzeniu modelu stworzono naming convention dla wszystkiego, co może mieć nazwę: produktów, szablonów, wariantów, opakowań, zestawów, surowców, SKU, logiki EAN, zdjęć i atrybutów
•Katalog przebudowano z chaotycznej masy rekordów w kontrolowaną hierarchię product template → product variant, gdzie każdy sellable SKU miał jasną rolę, nazwę, opakowanie, EAN, wagę, wymiary i połączenie z BaseLinkerem
•Nazwy produktów zostały przepisane nie tylko pod logikę księgowo-magazynową, ale też pod zachowanie klientów w wyszukiwarce: data-driven research pomógł dopasować nazwy i metadane do realnych zapytań, co wsparło wzrost sprzedaży po aktualizacji sklepu i marketplace'ów
•Bałagan po importach rozebrano w kontekście: wykryto falę 719 źle utworzonych produktów/szablonów, oddzielono rekordy faktycznie używane w sprzedaży lub magazynie, a niewykorzystany szum bezpiecznie zarchiwizowano bez utraty danych operacyjnych
•Efektem był katalog, który da się utrzymywać: SKU, nazwy, atrybuty, zdjęcia, metadane, mapping BaseLinker i logika magazynowa przestały ze sobą kolidować i stały się stabilną bazą synchronizacji sklepu oraz marketplace'ów
Warehouse, BoM & Barcode Logic
•Surowce przeniesiono do struktury RAW
•Utworzono BoM dla gotowych produktów i zestawów
•Stany magazynowe powiązano z konkretnymi pomieszczeniami magazynowymi
•Naprawiono druk etykiet po migracji do Odoo 19: raporty przeniesiono na poziom product.product, poprawiono szablony QWeb, nazwy plików druku, barcode fields i variant attributes
•Wykryto i odizolowano 11 konfliktów EAN, a 8 potwierdzonych par EAN przeniesiono przez pipeline backup / plan / rollback / verify
CRM, Contacts & Database Hygiene
•Usunięto 1380 duplikatów kontaktów, 34 rekordy testowe i 59 pustych kart
•Znormalizowano IBAN, BIC/SWIFT i adresy banków dla 10 banków
•Ustandaryzowano województwa i lokalizację dla 11 języków
•Przygotowano cold leads i customowe listy do lead generation, CRM outreach oraz dalszego sales enrichment
•Usunięto szum CRM z automatycznie tworzonych leadów: wiadomości od istniejących kontaktów miały trafiać do historii komunikacji tego kontaktu, a nie tworzyć nową kartę leada za każdym razem
Mail Routing, AI Qualification & Sales Automation
•Zaprojektowano i wdrożono MelonRing AISMR — moduł Odoo do inbound email routing, AI qualification, reguł deterministycznych i audit trail •Skonfigurowano logikę routingu: nowe zapytania biznesowe tworzą crm.lead z kategorią, odpowiedzialnym, tagami, priorytetem i summary, a maile od istniejących kontaktów są podpinane do istniejącego rekordu i nie mnożą duplikatów leadów
•Wdrożono reguły Poka-yoke przeciw masowym wysyłkom bezpośrednio przez lokalny SMTP
•Zamknięto historyczny wyciek przez mail.followers: wyczyszczono błędne subskrypcje, zablokowano dodawanie zewnętrznych kontaktów do wrażliwych obiektów wewnętrznych i przeniesiono tę zasadę do jawnego zachowania systemu
•Przeprowadzono rewizję scheduled actions / cron jobs: usunięto zbędne lub nieświadomie aktywne zadania tła, które dublowały standardową logikę, przeliczały dane albo tworzyły nieprzewidywalne obciążenie bez właściciela biznesowego
•Infrastrukturę pocztową przeniesiono na SendGrid, zweryfikowano SPF/DKIM i obniżono bounce rate z ~15% do poniżej 1%
•Zbudowano sales automation layer: qualification states, draft-input snapshots, partner/product/qty/pricing candidates oraz manager review przed quotation generation
E-commerce & Integrations
•Skonfigurowano Shopify sync, trasy magazynowe, lokacje tranzytowe i automatyczną konwersję zamówień
•Technicznie przygotowano integracje FedEx PL, DHL i InPost do obliczania dostawy i generowania etykiet
•Przygotowano Odoo E-commerce i portal B2B jako alternatywę dla Shopify
•Dodano customowy Odoo theme layer i MelonRing Meta Pixel tracking dla Odoo Website Sale
•Przygotowano Allegro Odoo Sync do importu zamówień przez Allegro REST API
•Po normalizacji produktów, surowców, SKU, EAN, zdjęć, wagi i wymiarów zaktualizowane dane zreintegrowano z marketplace'ami i sklepem internetowym
🔹 5. Stack Techniczny
•ERP Core: Odoo 19, Odoo.sh / Odoo Cloud, Python, XML/QWeb, ORM
•Data & Integration: XML-RPC, BaseLinker API, Shopify integration, Allegro REST API, CSV pipelines
•CRM & AI: Odoo CRM, mail.thread, crm.lead, OpenAI-style AI qualification architecture, deterministic rule engine
•Sales & E-commerce: Odoo Sales, Website Sale, B2B/B2C portal, quotation draft workflow, Meta Pixel
•Warehouse & Manufacturing: Inventory, Barcode, MRP, BoM, product.product, product.template, product dimensions, label reports
•Communication: Zadarma PBX, SendGrid SMTP, IMAP/SMTP routing, SPF/DKIM, mail followers cleanup
🔹 6. Wyniki I Wartość Dla Biznesu
•ERP ustabilizowane po migracji: Odoo przeniesiono z Hetznera na Odoo.sh, zaktualizowano do Odoo 19 i oczyszczono z niekompatybilnych modułów
•Operacje spięte w jeden przepływ: właściciel dostał techniczną bazę łączącą działy, pracowników, magazyn, produkcję, sprzedaż, CRM, pocztę i integracje w jeden system — od surowca do sprzedaży gotowego produktu
•Katalog stał się zarządzalny: około 400 szablonów i wariantów przeniesiono do czystej hierarchii, a BaseLinker/Odoo SKU mapping stał się kontrolowany, bez ślepego importu
•Zaktualizowane dane wróciły do sprzedaży: znormalizowany katalog, logika magazynowa, zdjęcia, SKU, EAN, waga i wymiary zostały zreintegrowane z marketplace'ami oraz sklepem internetowym
•Baza została oczyszczona: usunięto 1380 duplikatów kontaktów, 34 rekordy testowe i 59 pustych kart, a dane i regiony znormalizowano
•Magazyn dostał podstawę automatyzacji: BoM, surowce RAW, kody kreskowe, pomieszczenia magazynowe i etykiety przeniesiono do stabilniejszego modelu
•Reputacja pocztowa została zabezpieczona: SendGrid + SPF/DKIM obniżyły bounce rate z ~15% do poniżej 1%
•CRM dostał warstwę automatyzacji: inbound email routing, AI qualification, follow-up automation i sales draft flow z manager review
•Ryzyka operacyjne zostały obniżone: znaleziono i zamknięto historyczny wyciek przez Followers, zablokowano ryzykowne masowe wysyłki, wyczyszczono zbędne scheduled actions / cron jobs i usunięto krytyczne błędy QWeb/PBX/Owl 2 po migracji
🔹 7. Status
Launched / Technically Ready. System jest technicznie ustabilizowany, a kluczowe moduły i integracje przygotowane. Część efektu biznesowego zależy od wdrożenia reguł po stronie zespołu: pracy w CRM, skanowania magazynu, testów usług kurierskich i dyscypliny pracy w Odoo zamiast powrotu do ręcznych procesów