Właśnie zaktualizowaliśmy dużą firmę produkcyjną z Odoo 19 Enterprise do Odoo 20. Księgowość, magazyn, produkcja, zakupy, sprzedaż, kadry, strona internetowa i zestaw integracji, wszystko w jednej bazie, na której firma pracuje każdego dnia. Przeniesienie danych było mniejszą częścią tej pracy. Większą było dopilnowanie, żeby pierwszego ranka na Odoo 20 każda osoba w firmie mogła robić dokładnie to, co poprzedniego wieczoru, i nic ponad to, czego robić nie powinna.
Tak stawiamy sprawę przy każdej aktualizacji: Odoo przenosi Wasze dane, my przenosimy Wasz system. Wasze moduły, Wasze ustawienia i sposób, w jaki pracują Wasi ludzie, z dowodem, że wszystko działa tak samo.
Co obejmowała ta aktualizacja
- 55 własnych modułów przeniesionych na Odoo 20 i zainstalowanych na bazie testowej, zanim ruszyło cokolwiek innego.
- Około 670 tysięcy wierszy w mniej więcej 600 modelach danych, przeniesionych i porównanych z oryginałem model po modelu.
- Około 20 tysięcy załączonych plików, od skanów dokumentów po rysunki techniczne, przeniesionych i sprawdzonych.
- Każde konto użytkownika sprawdzone na nowej wersji od nowa: co dana osoba widzi, co może zmienić i co może wydrukować.
Żadna z tych liczb nie wynika z wrażenia, że poszło dobrze. Każda jest wynikiem porównania starego systemu z nowym.
Dwie drogi dla danych
Bazę na nową wersję główną można przenieść na dwa rzetelne sposoby i wybieramy ten, który pasuje do sytuacji.
Oficjalna usługa aktualizacji Odoo. Gdy obejmuje Wasze wersje, a subskrypcja Enterprise daje do niej prawo, bazę przekształca usługa samego Odoo. To droga, którą Odoo utrzymuje, i tam, gdzie ma zastosowanie, z niej korzystamy.
Przeniesienie pełnej historii do nowej bazy. Gdy oficjalnej drogi nie ma, dane i tak muszą przejść: w Community, w wersji, której oficjalna usługa jeszcze nie obsługuje, albo gdy firma chce zacząć nową wersję na czystej bazie, bez lat zaległych ustawień. Wtedy stawiamy świeże Odoo 20 i przenosimy do niego całą historię, nie tylko dane podstawowe: zapisy księgowe razem z rozliczeniami, numerację dokumentów, która biegnie dalej od miejsca, w którym stanęła, magazyn z wyceną, zlecenia produkcyjne, historię rozmów przy każdym rekordzie, załączone pliki i konta użytkowników z ich dotychczasowymi hasłami. Pierwszego ranka nikt nie musi zmieniać hasła, a następna faktura dostaje następny numer.
Tak czy inaczej, dane to dopiero początek.
Czego nie robi usługa aktualizacji
Usługa aktualizacji przekształca bazę danych. Nie wie, jak Wasza firma z niej korzysta. Pięć rzeczy leży poza nią, a w prawdziwym systemie to one decydują, czy aktualizacja się uda:
- Własne moduły. Każdy moduł napisany dla Waszej firmy trzeba przenieść na nową wersję i zainstalować na bazie testowej. Odoo 20 zmienia model uprawnień, więc moduł, który bez problemu instalował się na 19, na 20 może nie zainstalować się wcale.
- Zmiany ze Studio i dostosowania w bazie. Pola, widoki i automatyzacje wyklikane przez lata żyją w bazie, a nie w żadnym module. Trzeba je odnaleźć, przenieść i sprawdzić.
- Środowisko testowe obok produkcji. Nowa wersja działa na kopii prawdziwych danych, a stara pracuje dalej, więc ludzie mogą ją wypróbować bez ryzyka.
- Dowód, że nowy system zachowuje się jak stary. Te same uprawnienia dla każdego użytkownika, te same ustawienia, te same menu, te same raporty.
- Plan uruchomienia z drogą powrotu. Przećwiczone przełączenie, znany czas trwania i stary system w gotowości, dopóki nowy się nie sprawdzi.
Testy jako prawdziwi użytkownicy, nie jako administrator
Najcenniejsza lekcja z tej aktualizacji: kontrola danych może przejść, a ekran i tak się nie otworzy. Liczby wierszy się zgadzały, salda się zgadzały, a mimo to część ekranów nie otwierała się zwykłemu użytkownikowi. Administratorowi wszystko działało, bo administrator omija większość reguł, którym podlegają zwykli użytkownicy.
Dlatego testujemy tak, jak ludzie pracują. Dla każdego użytkownika logujemy się jako ta osoba, na starej i na nowej wersji, i porównujemy, co dostaje: rekordy na każdej liście, menu, raporty, które może wydrukować, operacje, które może wykonać. Każda różnica zostaje wyjaśniona albo poprawiona przed uruchomieniem.
Tak wyszła największa zmiana w Odoo 20 dla każdej firmy z ograniczonymi rolami. W 20 uprawnienia nadane przez kilka grup się sumują. Handlowiec, który należał też do grupy magazynowej, nagle widział i mógł edytować wszystkie zamówienia sprzedaży w firmie, a nie tylko swoje. Nic się nie zepsuło, żaden błąd się nie pojawił, a porównanie danych nigdy by tego nie pokazało. Test na koncie tego handlowca pokazał to od razu, a nowy system daje teraz każdej osobie dokładnie takie uprawnienia, jakie miała na 19.
Drobne konwencje, prawdziwe skutki
Część różnic kryje się w konwencjach, a nie w funkcjach. Dwa przykłady z tej aktualizacji:
- Daty kursów walut. Kursy zapisane w 19 trzymały się jednej konwencji dat, a Odoo 20 odczytuje je według innej. Przeniesione bez zmian sprawiłyby, że faktura w walucie obcej wzięłaby kurs z poprzedniego dnia roboczego, a dla VAT liczy się kurs z właściwego dnia. Wyrównaliśmy kursy, więc każda faktura przelicza się dokładnie tak jak wcześniej.
- Ciągłość numeracji. Faktury, zamówienia, wydania i zlecenia produkcyjne mają każde własną numerację. Każda biegnie dalej od ostatniego numeru użytego w 19, bez luk i bez powtórzeń.
Stary system działa obok nowego
Żeby udowodnić ciągłość, trzeba mieć do czego porównać. W czasie tej aktualizacji stara wersja działała obok nowej, na tej samej kopii danych, więc każde pytanie miało zmierzoną odpowiedź: czy ta osoba widzi te same zamówienia, czy ten raport daje te same sumy, czy ten cennik zwraca tę samą cenę. Gdy odpowiedź brzmiała nie, ustalaliśmy dlaczego, zanim ktokolwiek inny to zauważył.
Wynik: nowy system zgodny ze starym dla każdego sprawdzonego użytkownika, z tymi samymi rekordami, tymi samymi menu i tymi samymi dozwolonymi operacjami. Tam, gdzie Odoo 20 ma wbudowany sposób na zachowanie z 19, użyliśmy go, a własny kod pisaliśmy tylko tam, gdzie 20 nie ma odpowiednika.
Uruchomienie z drogą powrotu
Ostateczne przeniesienie nigdy nie jest pierwszą próbą. Całe przeniesienie przećwiczyliśmy na świeżych kopiach produkcji, aż przechodziło czysto i znaliśmy jego czas trwania. Produkcja zostaje nietknięta do chwili przełączenia, a po nim stary system czeka jako droga powrotu. Zadania cykliczne i wychodzące integracje włączamy świadomie, gdy nowy system jest potwierdzony, żeby nic nie wysłało wiadomości ani dokumentu dwa razy.
Lista kontrolna przed aktualizacją Odoo do nowej wersji
- Wybierzcie drogę dla danych: oficjalna usługa aktualizacji, jeśli obejmuje Wasze wersje i subskrypcję, a w przeciwnym razie przeniesienie pełnej historii.
- Spiszcie każdy własny moduł i każdą zmianę ze Studio. Przenieście je i zainstalujcie na bazie testowej.
- Uruchomcie nową wersję na kopii prawdziwych danych, obok starej.
- Porównajcie dane model po modelu, razem z saldami, magazynem i numeracją dokumentów.
- Zalogujcie się jako prawdziwi użytkownicy na obu wersjach i porównajcie uprawnienia, menu, raporty i ustawienia.
- Sprawdźcie konwencje, które zmieniły się między wersjami, na przykład daty kursów walut.
- Przećwiczcie przełączenie, zmierzcie jego czas i zostawcie stary system jako drogę powrotu.
O tym, co zmienia się w samym Odoo 20 (wymagania serwera, klucze API, nowy model uprawnień, drukowanie), piszemy w tekście Odoo 20: co naprawdę się zmienia, zanim przejdziecie.
FAQ
Odoo zaproponuje aktualizację. Po co mi coś jeszcze?
Usługa aktualizacji Odoo przekształca Waszą bazę i jeśli obejmuje Wasz przypadek, jest właściwym narzędziem dla danych. Nie przenosi jednak Waszych własnych modułów, nie sprawdza zmian ze Studio, nie stawia środowiska testowego, nie udowadnia, że każdy użytkownik zachowuje te same uprawnienia, i nie planuje przełączenia. To właśnie ta część sprawia, że ludzie, którzy codziennie pracują w systemie, aktualizacji w ogóle nie odczuwają.
Czy bazę Community da się przenieść na nową wersję główną?
Tak. Usługa aktualizacji Odoo jest częścią subskrypcji Enterprise. Baza Community przechodzi przez skrypty aktualizacji społeczności, jeśli istnieją dla danej wersji, albo, jak przy przejściu z 19 na 20, przez przeniesienie pełnej historii do nowej bazy. W obu przypadkach jest potem porównywana z oryginałem w ten sam sposób.
Czy ludzie będą potrzebować nowych haseł albo stracą historię?
Nie. Użytkownicy zachowują swoje hasła, a rekordy swoją historię rozmów, załączniki i numerację. Pierwszy ranek na nowej wersji powinien wyglądać jak każdy inny.
Cała droga aktualizacji, od pierwszej oceny po końcowe porównanie, jest częścią Zoxron MCP, więc agent AI może przejść ją z Wami na Waszym własnym serwerze. Jeśli wolicie, żeby zrobiono to za Was, porozmawiajmy.
