Architektura E-commerce

Migracja z Akeneo CE do UnoPIM - przewodnik krok po kroku

Michał Sobczak
9 min
Migracja z Akeneo CE do UnoPIM - przewodnik krok po kroku

Rozmawiałem ostatnio z kilkoma firmami, które siedzą na Akeneo Community Edition i zadają to samo pytanie: "no dobra, ale kiedy to faktycznie stanie się problemem?".

Uczciwa odpowiedź jest taka, że nikt nie wyłączy Ci serwera z dnia na dzień. Akeneo CE technicznie działa. Na GitHubie wciąż pojawiają się release'y. Ale pytanie nie brzmi "czy to działa dziś", tylko "czy chcę budować na tym kolejne 3-5 lat, wiedząc że producent de facto odwrócił się od tego produktu i skupił całą energię na płatnym SaaS".

Jeśli odpowiedź brzmi "nie" - ten artykuł jest dla Ciebie. Rozkładam migrację do UnoPIM na konkretne etapy, z tym co faktycznie sprawia trudność, a nie tylko happy path z dokumentacji.

Zanim zaczniesz: co musisz wiedzieć o różnicach architektonicznych

Akeneo CE i UnoPIM rozwiązują ten sam problem - zarządzanie informacją produktową - ale robią to inaczej pod spodem. Kilka rzeczy, które mają znaczenie dla migracji:

Framework. Akeneo to Symfony, UnoPIM to Laravel. Dla migracji danych to nie ma większego znaczenia. Dla przepisywania integracji - ogromne, bo API obu systemów wygląda inaczej.

Infrastruktura. Akeneo wymaga Elasticsearch do wyszukiwania i indeksowania produktów. UnoPIM nie ma tego wymagania - działa na standardowym stosie MySQL + Redis. Jeśli Twój hosting był dostosowany pod Akeneo, po migracji możesz go uprościć i prawdopodobnie obniżyć koszt.

Struktura danych. Obydwa systemy mają koncept rodzin produktów (product families) i grup atrybutów. Mapowanie jest zazwyczaj 1:1 dla standardowych struktur. Problemy pojawiają się przy bardzo złożonych typach atrybutów enterprise, które Akeneo oferuje w wyższych planach - ale jeśli siedzisz na CE, to tych i tak nie masz.

Etap 1: Audyt tego co masz w Akeneo

Nie zaczynaj eksportu danych zanim nie masz pełnego obrazu struktury. To najczęstszy błąd - ktoś robi dump CSV i dopiero przy imporcie odkrywa, że ma 47 typów atrybutów, z których połowa jest duplikatem z różnych okresów życia katalogu.

Co inwentaryzujesz:

  • Rodziny produktów - ile ich masz, czy się pokrywają, czy są aktywnie używane. W starszych wdrożeniach Akeneo zdarzają się rodziny tworzone pod konkretne projekty, które od lat nie mają żadnych produktów.

  • Atrybuty i grupy atrybutów - typy, wymagalność, przypisanie do rodzin. Sprawdź czy nie masz atrybutów globalnych, które powinny być lokalne albo odwrotnie.

  • Kanały i locale - dla ilu języków i rynków masz dane. To bezpośrednio wpływa na złożoność migracji.

  • Kompletność danych - jaki procent produktów ma wypełnione wymagane atrybuty. Migracja nie "naprawia" niekompletnych danych - przenosi je w tym samym stanie.

Dobrym narzędziem do audytu jest natywny eksport Akeneo do CSV - eksportujesz rodziny i atrybuty osobno, zanim tkniesz produkty. To daje ci pełny obraz bez 40GB pliku z całym katalogiem.

Etap 2: Mapowanie struktury do UnoPIM

To jest etap, który zajmuje najwięcej czasu i gdzie popełnia się największe błędy. Nie chodzi o techniczne mapowanie pole-do-pola, tylko o decyzje projektowe.

Kilka rzeczy, które warto przemyśleć zanim zaczniesz konfigurować UnoPIM:

Czy przepisujesz 1:1, czy porządkujesz przy okazji? Migracja to dobry moment żeby wyczyścić legacy bałagan - połączyć zduplikowane rodziny, ujednolicić nazewnictwo atrybutów, usunąć te których nikt nie używa. Tylko że to wydłuża projekt. Jeśli zależy Ci na czasie, zrób najpierw migrację 1:1, porządkowanie zostaw na po.

Typy atrybutów. UnoPIM obsługuje: text, textarea, number, boolean, select, multiselect, date, datetime, image, gallery, file, price. Jeśli masz w Akeneo niestandardowe typy (np. metric z jednostką), musisz zdecydować jak je reprezentować w UnoPIM - zazwyczaj number + osobny select z jednostką.

Walidacje. Akeneo CE pozwala definiować walidacje na poziomie atrybutu (regex, min/max, wymagalność per kanał). UnoPIM ma analogiczne mechanizmy, ale konfiguruje się je inaczej. Nie zakładaj że przeniosą się automatycznie.

Etap 3: Eksport z Akeneo

Masz dwie ścieżki: CSV lub API. Która lepsza zależy od wielkości katalogu i tego jak bardzo zależy Ci na precyzji.

CSV jest prostszy do wdrożenia i wystarczy dla większości migracji. Akeneo generuje pliki CSV z pełną strukturą produktów, atrybutów i asocjacji. Słabość: media (zdjęcia, pliki) nie są w CSV - musisz je obsłużyć osobno przez eksport pakietu mediów albo bezpośredni dostęp do storage.

API Akeneo (REST) daje pełną kontrolę i lepiej radzi sobie z asocjacjami między produktami oraz mediami. Wymaga napisania skryptu importowego, ale przy katalogu powyżej 10 000 SKU i kilku kanałach warto zainwestować ten czas.

Niezależnie od ścieżki, eksportuj w tej kolejności:

  1. Atrybuty i opcje atrybutów (select values)

  2. Rodziny produktów

  3. Kategorie

  4. Produkty proste

  5. Produkty z wariantami (product models w Akeneo)

  6. Media

  7. Asocjacje między produktami

Kolejność ma znaczenie - przy imporcie UnoPIM musi znać rodziny zanim zaimportujesz produkty do tych rodzin.

Etap 4: Import do UnoPIM i walidacja

UnoPIM przyjmuje import przez panel administracyjny (CSV) lub API. Przy pierwszym imporcie prawie zawsze jest kilka błędów - to normalne, nie panikuj.

Najczęstsze problemy przy imporcie:

Encoding. Jeśli masz w katalogu polskie znaki i eksportujesz z Akeneo do CSV, upewnij się że plik jest w UTF-8 bez BOM. Windows lubi dodawać BOM, który psuje pierwszą kolumnę.

Opcje selectów. UnoPIM wymaga żeby opcje atrybutów select istniały zanim zaimportujesz produkty z tymi wartościami. Jeśli importujesz w złej kolejności, dostaniesz błędy walidacji przy produktach.

Media. Zdjęcia importujesz osobno - albo przez URL (UnoPIM pobiera je sam) albo przez bezpośredni upload. Przy dużych katalogach import przez URL jest wygodniejszy, ale wymaga żeby stary serwer Akeneo był jeszcze dostępny podczas migracji.

Po pierwszym imporcie uruchamiam zawsze ten sam checklist walidacyjny:

  • Liczba produktów w UnoPIM = liczba produktów w Akeneo

  • Losowa próbka 20-50 produktów - porównanie ręczne pole po polu

  • Produkty z wariantami - czy warianty są poprawnie powiązane z produktem głównym

  • Media - czy zdjęcia główne i galeria są poprawnie przypisane

  • Kanały - czy dane dla każdego języka i kanału są obecne

Etap 5: Przepięcie integracji

To jest etap, który najbardziej boli - szczególnie jeśli masz starą integrację Akeneo z PrestaShop lub innym sklepem pisaną przez kogoś, kto już dawno nie jest dostępny.

UnoPIM wystawia REST API z własną strukturą endpointów. Nie jest to kompatybilne z API Akeneo - musisz napisać nowy konektor po stronie sklepu. Jeśli korzystasz z PrestaShop, jest tu dobra wiadomość: istnieje oficjalny konektor UnoPIM dla PrestaShop, który obsługuje podstawową synchronizację produktów, kategorii i atrybutów. To solidny punkt startowy - w praktyce większość wdrożeń wymaga jego rozbudowy pod specyficzne wymagania sklepu (mapowanie niestandardowych pól, harmonogramy synchronizacji, obsługa wariantów), ale nie zaczynasz od zera. W praktyce co to oznacza:

  • Nowy moduł/plugin po stronie PrestaShop lub Bagisto, który czyta dane z UnoPIM API zamiast z Akeneo API

  • Mapowanie pól UnoPIM na pola sklepu (nazwy endpointów i struktura JSON są inne)

  • Przepisanie logiki synchronizacji (triggery, harmonogramy, obsługa błędów)

Dobrą praktyką jest uruchomienie UnoPIM równolegle z Akeneo przez 2-4 tygodnie. Dane są synchronizowane do obu systemów, nowy konektor sklepu jest testowany na środowisku stagingowym. Dopiero po potwierdzeniu że wszystko działa - przełączasz produkcję i wyłączasz Akeneo.

Gdzie najczęściej coś idzie nie tak

Trzy rzeczy, które widzę najczęściej jako źródło opóźnień:

Niedoszacowanie liczby atrybutów. "Mamy około 50 atrybutów" - słyszę to często. Po audycie wychodzi 180, z czego 40 to duplikaty z różnych etapów życia katalogu. Audyt zawsze zajmuje dłużej niż się wydaje.

Media bez struktury. Zdjęcia w Akeneo CE mogą być przechowywane w różnych lokalizacjach zależnie od wersji i konfiguracji. Przy migracji okazuje się że część mediów jest na lokalnym dysku, część na S3, część w ogóle nie jest osiągalna. To blokuje import.

Integracje z ERP pisane pod Akeneo. Jeśli Twój ERP wysyła dane bezpośrednio do Akeneo przez customowy skrypt - ten skrypt trzeba przepisać pod UnoPIM API. Często okazuje się że nikt nie ma dokumentacji tego skryptu i trzeba go odkryć od nowa.

Ile to realnie trwa i kosztuje

Dla katalogu 1000-10 000 SKU, jednego języka, integracji z jednym sklepem i ERP - realny czas to 5-7 tygodni. Z czego:

  • Tydzień 1-2: audyt Akeneo, projekt struktury w UnoPIM

  • Tydzień 3-4: konfiguracja UnoPIM, import danych, walidacja

  • Tydzień 5-6: nowy konektor sklepu, testy na stagingu

  • Tydzień 7: równoległa praca obu systemów, testy produkcyjne, przełączenie

Większy katalog, więcej języków, więcej kanałów - mnożysz odpowiednio. Migracja z rozbudowanym ERP i kilkoma marketplace'ami może spokojnie zająć 3 miesiące.

Jeśli chcesz zobaczyć jak wygląda koszt w porównaniu do zostania na Akeneo CE lub przejścia na płatny plan - mam do tego interaktywny kalkulator TCO na stronie usługi.

Czy to ma sens dla Twojej firmy?

Migracja ma sens jeśli:

  • Planujesz nowe integracje lub kanały w ciągu najbliższych 12 miesięcy - i nie chcesz budować tego na platformie bez aktywnego rozwoju

  • Twój koszt utrzymania infrastruktury Akeneo (Elasticsearch, devops) jest odczuwalny

  • Chcesz skorzystać z AI features UnoPIM (32 komendy, własny klucz LLM) - w Akeneo CE tego nie ma

Migracja nie ma sensu jeśli:

  • Twój katalog jest stabilny, integracje działają, nie planujesz nic nowego - wtedy CE spokojnie pociągnie jeszcze kilka lat

  • Masz wewnętrzny zespół Symfony, który zna Akeneo na wylot - zmiana platformy to dla nich koszt nauki

Masz konkretny katalog i zastanawiasz się czy migracja ma sens? Napisz - pierwsza rozmowa jest bezpłatna i nie kończy się ofertą jeśli nie ma sensu. Kontakt →

Powrót do bloga
Udostępnij ten wpis na swoim social media!
Chcesz nawiązać współpracę?
Wyślij zapytanie

Designed by Jagoda Szerement

Copyright © 2026 Web Berserker Michał Sobczak | All Rights Reserved