Odoo 20 jest już dostępne, w wersji Community i Enterprise. Zanim zaproponowaliśmy je komukolwiek, postawiliśmy je na czystych serwerach, obie edycje, natywnie i w Dockerze, przenieśliśmy do niego dane z Odoo 19, przenieśliśmy własne moduły i wydrukowaliśmy prawdziwe dokumenty. To nie jest przegląd nowości. To opis tego, co naprawdę się zmienia dla firmy, która wdraża Odoo 20 albo na nie przechodzi, czego jeszcze nie ma, i lista kontrolna przed przełączeniem.

Najpierw serwer

Odoo 20 działa na Ubuntu 24.04. Potrzebuje Pythona 3.12 lub nowszego, a bez niego po prostu się nie uruchomi. Oczekuje PostgreSQL 16; na starszym Odoo tylko wypisuje ostrzeżenie, ale na tym nie prowadzi się firmy. Na Ubuntu 22.04 oficjalna paczka nawet się nie instaluje: Python jest za stary, serwer bazy danych to 14 i brakuje wymaganych pakietów. Serwer z 22.04, na którym dziś działa Odoo 19, nie dostanie więc 20 przez doinstalowanie paczki. Zaplanujcie nowy serwer z 24.04 i przejście na niego.

Jedna cicha zmiana pomaga bezpieczeństwu: domyślnie Odoo 20 nasłuchuje tylko na lokalnym adresie własnej maszyny, więc musi stać za serwerem WWW, na przykład nginx, i tak zresztą powinno działać. Instalacja, która łączyła się z Odoo bezpośrednio na jego porcie albo uruchamiała je w kontenerze, musi ustawić adres nasłuchu świadomie.

Klucze API mają teraz zakres i termin ważności

To zmiana, która najłatwiej psuje coś po cichu. W Odoo 20 klucz API używany przez integrację musi mieć zakres RPC. Klucze założone w Odoo 19 nie mają zakresu i sprawdziliśmy, że Odoo 20 taki klucz odrzuca. Nowy klucz domyślnie wygasa po 30 dniach (do wyboru jest dzień, miesiąc albo rok; "nigdy" tylko dla administratora). Integracja, która w dniu uruchomienia działa bez zarzutu, może przestać miesiąc później, a nikt nie będzie pamiętał dlaczego.

Dwie rzeczy dla osoby, która opiekuje się integracjami. Klasyczny interfejs XML-RPC w 20 nadal działa, ale każde wywołanie zapisuje w logu ostrzeżenie o wycofaniu, a Odoo zapowiedziało jego usunięcie w Odoo 22. Do tego wersja Enterprise dokłada drugi rodzaj klucza, dla własnego serwera MCP, który nie działa dla RPC. Trzymajcie je osobno.

Własne moduły wymagają prawdziwego przeniesienia

Odoo 20 zastępuje dwa dotychczasowe modele uprawnień, prawa dostępu i reguły rekordów, jednym modelem dostępu. Własny moduł, który nadal ma stare pliki uprawnień, na 20 w ogóle się nie zainstaluje. Odoo dostarcza konwertery, które przepisują większość tego automatycznie, i przeniesione przez nas moduły zainstalowały się na 20 z zachowanymi regułami rekordów, ale każdy własny moduł i tak trzeba przenieść i zainstalować na testowej bazie 20 przed przejściem.

Sprawdźcie też listę aplikacji. Walidacja NIP (VAT) i IBAN trafiła do modułu podstawowego, wydania zbiorcze do Magazynu, schemat organizacyjny do Pracowników. Lista życzeń i porównywarka produktów w sklepie zniknęły bez następcy. Usługi w terenie (Field Service) przebudowano na Planowaniu, z innym modelem danych, więc firma, która z nich korzysta, powinna potraktować tę część jako osobny projekt.

Część reguł danych zmieniła się tak, że odczuje to każdy import. Kontakt jest teraz firmą tylko wtedy, gdy ma NIP, więc firmy zaimportowane bez niego trafiają jako osoby. Pola kont bankowych mają nowe nazwy, a jednostka miary na pozycjach zakupu i ruchach magazynowych przeszła do nowego pola.

PDF: ten sam silnik, na razie nie zmieniać

Faktury i dokumenty dostawy nadal drukuje wkhtmltopdf, teraz jako osobny moduł. Potrzebna jest wersja z łatanym Qt: zwykła wersja z dystrybucji Linuksa wydrukowała naszą fakturę bez nagłówka i stopki firmy, bez żadnego błędu. Odoo potrzebuje też co najmniej dwóch procesów roboczych (workerów), żeby w ogóle drukować.

Odoo 20 dokłada opcjonalny nowy silnik PDF. Wydrukowaliśmy dziesięć prawdziwych dokumentów oboma silnikami. W nowym księga główna wyszła na dwóch stronach zamiast sześciu, po cichu gubiąc większość wierszy; sumy na fakturze nachodziły na tekst; pliki były kilka razy większe. Jego autorzy sami nazywają go wczesną alfą, a dokument, który po cichu gubi pozycje księgowe, jest gorszy niż żaden. Na razie zostańcie przy wkhtmltopdf.

Nie ma jeszcze oficjalnego obrazu Docker

W chwili pisania na Docker Hub nie ma oficjalnego obrazu Odoo 20. Jeśli uruchamiacie Odoo w kontenerach, obraz budujecie sami z oficjalnej paczki Odoo (dla Enterprise z paczki pobranej w ramach własnej subskrypcji), ustawiacie adres nasłuchu i używacie PostgreSQL 16. Funkcje AI w Enterprise potrzebują też w bazie rozszerzenia wektorowego.

Enterprise ma własny serwer MCP

Odoo 20 Enterprise ma wbudowany serwer MCP. Instaluje się razem z funkcjami AI, gdy baza ma rozszerzenie wektorowe, i daje agentowi AI pięć narzędzi tylko do odczytu: podgląd modeli i pól, wyszukiwanie rekordów i odczyt zestawień, zawsze w granicach uprawnień użytkownika, którego klucza używa. Loguje się kluczem z własnym zakresem albo przez OAuth. To sposób, żeby agent czytał Wasze dane. Instalacja, kopie zapasowe, przenoszenie i aktualizacja Odoo, na którym działa, to inne zadanie.

Aktualizacja bazy 19 w miejscu: jeszcze nie

Dla Community społecznościowe skrypty aktualizacji nie mają jeszcze opublikowanej wersji dla Odoo 20. Dla Enterprise własna usługa aktualizacji Odoo w dniach naszych testów zwracała błędy i nie widzieliśmy jeszcze, żeby przeniosła bazę 19 do 20 od początku do końca. Wolimy powiedzieć "jeszcze nie" niż zgadywać, więc aktualizacji 19 do 20 w miejscu dziś nie oferujemy.

Dziś działa nowa baza Odoo 20. Najpierw ją skonfigurujcie: kraj, plan kont, podatki i języki, bo dane wgrane przed planem kont zostają z pustymi kontami. Potem przenieście dane firmy, porównajcie obie bazy obok siebie, liczby i treść, we wszystkich językach, i wyjaśnijcie każdy brak przed przełączeniem. System na Odoo 19 zostaje nietknięty jako droga powrotu. Ogólne zasady z wpisu Aktualizacje Odoo bez paniki nadal obowiązują: najpierw próba, a przełączenie na żywo ma być tą nudną częścią.

Najpierw zrobiliśmy to na własnym ERP

Własny ERP przenieśliśmy właśnie tak: nowa baza Odoo 20 na nowym serwerze, dane przeniesione i porównane, stary system zostawiony jako droga powrotu. Dwie lekcje nie mieściły się w żadnej liście kontrolnej, którą mieliśmy wcześniej.

Po pierwsze, porównanie dowodzi, że kopia jest wierna, a nie że oryginał był poprawny. Błędy, które niezauważone siedziały w danych 19, przeszły dokładnie takie, jakie były: formularz z obowiązkowym pytaniem, na które nie dało się odpowiedzieć, strona rezerwacji, do której przypisana była tylko nieaktywna osoba. Rada jest prosta i ręczna: po przeniesieniu przejdźcie przez publiczne strony i formularze tak, jak zrobiłby to klient, na telefonie i na komputerze.

Po drugie, nie każde ustawienie znaczy w 20 to samo. Najlepszym przykładem jest poczta wychodząca. Odoo 20 potrzebuje domeny aliasów ustawionej na firmie; bez niej maile, które nie mają własnego adresu nadawcy (wiadomości z portalu, formularze na stronie, zamówienia anonimowe), kończą się błędem zamiast wyjść. A zadania cykliczne włączaliśmy z powrotem po jednym, po sprawdzeniu kolejki poczty wychodzącej, a nie wszystkie naraz.

Lista kontrolna przed przejściem na Odoo 20

  • Serwer z Ubuntu 24.04, Pythonem 3.12 i PostgreSQL 16. Nowy serwer, a nie aktualizacja systemu na tym działającym.
  • Enterprise: subskrypcja obejmująca 20 i pobrana w jej ramach paczka.
  • Lista aplikacji sprawdzona pod kątem modułów scalonych lub usuniętych w 20. Usługi w terenie zaplanowane osobno.
  • Każdy własny moduł przeniesiony na nowy model uprawnień i zainstalowany na testowej bazie 20.
  • Spisana każda integracja, z nowym kluczem z zakresem RPC i zapisaną datą wygaśnięcia. Plan odejścia od XML-RPC przed Odoo 22.
  • Kraj, plan kont, podatki i języki ustawione, zanim wgracie jakiekolwiek dane.
  • Przejrzane kontakty bez NIP: w 20 są osobami, nie firmami.
  • Domena aliasów poczty wychodzącej ustawiona na firmie.
  • Drukowanie sprawdzone z łatanym wkhtmltopdf, co najmniej dwoma workerami i wydrukowaną prawdziwą fakturą.
  • Obie bazy porównane i każdy brak wyjaśniony. Publiczne strony i formularze przeklikane na telefonie i na komputerze.
  • Kopie zapasowe działają, a odtworzenie zostało naprawdę sprawdzone, nie tylko zaplanowane. Stary serwer zostaje jako droga powrotu.
  • Zadania cykliczne włączane po jednym.

FAQ

Czy mogę dziś zaktualizować bazę Odoo 19 do Odoo 20?

Jeszcze nie w miejscu. Społecznościowe skrypty aktualizacji dla 20 nie zostały opublikowane, a własna usługa aktualizacji Odoo nie pokazała jeszcze, że przenosi bazę 19 do 20 od początku do końca. Dziś przechodzi się na 20, zakładając nową bazę Odoo 20, przenosząc do niej dane i porównując obie przed przełączeniem.

Czy Odoo 20 działa na Ubuntu 22.04?

Nie. Oficjalna paczka się tam nie instaluje: Odoo 20 potrzebuje Pythona 3.12 i pakietów, których 22.04 nie ma, i oczekuje PostgreSQL 16. Wybierzcie Ubuntu 24.04.

Przechodzić na Odoo 20 teraz czy zostać na 19?

Odoo daje każdej wersji głównej trzy lata standardowego wsparcia; dla 19 to czas do września 2028. Nowy projekt na nowym serwerze może zacząć od 20. Działające 19 ma czas: przejdźcie, gdy Wasze własne moduły i integracje będą przeniesione i sprawdzone, a nie dlatego, że pojawił się nowy numer.

Jeśli chcecie, żeby agent AI przeszedł z Wami tę drogę, na Waszym własnym serwerze, pokazując każdy krok, zanim go wykona, to właśnie robi Zoxron MCP. Jest bezpłatny, a agenta podłączycie na zoxron.com/connect.