Synchronizacja między systemem WMS a ERP to podstawa niezawodnej logistyki, ale tradycyjne integracje bezpośrednie prowadzą do utraconej dokumentacji, błędów stanu magazynowego i blokad procesów. Wzorzec Transactional Outbox z kolejką FIFO gwarantuje bezpieczeństwo danych, automatyczne nadrabianie zaległości po awarii oraz pełną niezawodność komunikacji między systemami.
Jak zintegrować system magazynowy z ERP bez utraty danych
Synchronizacja między systemem WMS a ERP to podstawowa część operacji logistycznej, ale tradycyjne integracje bezpośrednie prowadzą do utraconej dokumentacji, błędów stanu magazynowego i blokad procesów. Nowoczesne rozwiązanie oparte na wzorcu Transactional Outbox z kolejką FIFO gwarantuje bezpieczeństwo danych, automatyczne nadrabianie zaległości po awarii oraz pełną niezawodność komunikacji między systemami.
- Wzorzec Transactional Outbox i kolejka FIFO. Dokumenty zapisywane są do wewnętrznej kolejki w tej samej transakcji SQL co operacja magazynowa - gwarantuje to spójność danych i eliminuje ryzyko utraty dokumentów nawet podczas awarii API.
- Obsługa błędów z automatyczną adaptacją. System różnicuje poszczególne kody HTTP (200, 400, 401, 409, 500) i podejmuje odpowiednie działania - od ponowienia próby, poprzez przeniesienie do kolejki błędów, aż do przejścia w tryb awaryjny.
- Tryb normalny i awaryjny integracji. Przejścia między trybami odbywają się automatycznie na podstawie health-check endpointu - gdy API nie reaguje, magazynierzy mogą kontynuować pracę, a dokumenty czekają w kolejce.
- Zabezpieczenie przed duplikatami dokumentów. Każdy dokument wysyłany jest z unikalnym kluczem idempotentności w nagłówku HTTP, co eliminuje problem duplikatów będący częstą przyczyną rozbieżności między WMS a ERP.
- Dead Letter Queue do ręcznego zarządzania błędami. Dokumenty z błędami walidacji trafiają do specjalnej kolejki wymagającej interwencji administratora, ale nie blokują wysyłki pozostałych dokumentów.
- Automatyczne nadrabianie zaległości po awarii. Gdy ERP wraca do normalności, integrator wznawia wysyłkę dokumentów w chronologicznym porządku bez ingerencji operatora.
- Monitorowanie i diagnostyka integracji. Administrator ma dostęp do widoku liczby dokumentów w każdym statusie, pełnych logów wysyłania oraz gotowych zapytań SQL do diagnostyki problemów.

Architektura integracji z ERP
Dokumenty magazynowe zapisywane są do wewnętrznej kolejki w tej samej transakcji SQL co operacja magazynowa, zanim trafią do REST API systemu ERP.
Transactional Outbox pattern
Transactional Outbox to wzorzec architektoniczny gwarantujący niezawodną wymianę danych między dwoma systemami. Zamiast wysyłać dokument bezpośrednio do API partnera, zapisujemy go najpierw do wewnętrznej tabeli w bazie danych WMS w tej samej transakcji SQL co operacja magazynowa (na przykład zatwierdzenie przyjęcia PZ). To gwarantuje, że albo obydwie operacje się powiodą, albo żadna - eliminując ryzyko sytuacji, w której dokument zostaje zatwierdzony w magazynie, ale nie dotarł do ERP.
Kolejka FIFO w integracji WMS
Kolejka FIFO (First In, First Out) to struktura danych, w której dokumenty przetwarzane są w dokładnie tej samej kolejności, w jakiej trafiły do systemu. Niezależny worker pobiera dokumenty z kolejki sekwencyjnie i wysyła je do REST API. Jeśli API jest tymczasowo niedostępne - dokumenty czekają bezpiecznie w bazie bez ryzyka utraty. Jeśli pojedynczy dokument zostanie odrzucony - trafia do Dead Letter Queue, ale pozostałe dokumenty mogą być wysyłane dalej.
Dead Letter Queue (DLQ) w obsłudze błędów
Dead Letter Queue to specjalna kolejka dla dokumentów, które nie mogą być wysłane do API docelowego z powodu błędów walidacji lub autoryzacji. Zamiast utraty dokumentu, trafia on do DLQ z pełnym opisem przyczyny błędu, gdzie administrator WMS może przeanalizować problem, naprawić źródło i ponownie wysłać dokument. DLQ nie blokuje głównej kolejki - inne dokumenty mogą być wysyłane normalnie.
Health-check endpoint w monitorowaniu API
Health-check endpoint to dedykowany punkt końcowy REST API ERP, który zwraca szybką odpowiedź sygnalizującą dostępność usługi. Integrator WMS automatycznie wysyła żądania do tego endpointu w regularnych interwałach (co 2-5 minut podczas awarii), aby sprawdzić, czy API wróciło do normalności. Na podstawie wyników worker przechodzi między trybem normalnym a awaryjnym.
Klucz idempotentności w zabezpieczeniu duplikatów
Klucz idempotentności (GUID) to unikalny identyfikator wysyłany w nagłówku HTTP każdego dokumentu do API ERP. Jeśli z jakichkolwiek powodów ten sam dokument zostanie wysłany dwukrotnie, REST API powinno rozpoznać duplikat po kluczu i zwrócić 200 bez ponownego zapisu do bazy. Rozwiązanie eliminuje problem duplikatów, który jest częstą przyczyną rozbieżności stanu magazynowego między WMS a ERP.
Maszyna stanów w logice integracji
Maszyna stanów to model logiczny, w którym integrator przechodzi między konkretnymi stanami (normalny, awaryjny, ponawianie) na podstawie zdarzeń takich jak kod HTTP, wynik health-check czy limit prób. Każdy kod HTTP zwrócony przez API ERP ma dedykowany handler decydujący o losie dokumentu, co zapewnia przewidywalność zachowania systemu i ułatwia diagnostykę problemów.
Praktyczne rozwiązanie na przykładzie Symfonii
Synchronizacja między systemem WMS a systemem ERP to fundament niezawodnej logistyki. Jednak wiele firm boryka się z problemami komunikacji między tymi systemami - utraconymi dokumentami, błędami stanu magazynowego czy blokadami w procesach. Pokazujemy, jak rozwiązujemy integrację na przykładzie Studio WMS.net i REST API Symfonii.
Problem integracji - dlaczego to skomplikowane
Tradycyjne podejścia do integracji WMS z ERP często polegają na prostym wysyłaniu dokumentów do API partnera. Brzmi prosto, ale w praktyce pojawia się wiele pułapek. Gdy API jest chwilowo niedostępne - dokument może zostać utracony lub wysłany dwukrotnie. Jeśli pojedynczy dokument zostanie odrzucony ze względu na błąd walidacji - cała kolejka może się zablokować, uniemożliwiając magazynierom pracę. Dodajmy do tego awarie sieci, timeouty i niespodziewane restarty serwera - i okazuje się, że prosty interfejs REST wcale nie gwarantuje niezawodności wymaganej w logistyce.
Obsługa błędów - każdy kod HTTP ma swoją strategię
Nasza implementacja różnicuje obsługę poszczególnych kodów HTTP zwracanych przez API Symfonii.
- Kody 200/201/204 - dokument zaakceptowany, oznaczamy jako przetworzony i przechodzimy do następnego.
- Kody 400/404 - błąd walidacji danych (na przykład brak powiązanego kontrahenta), dokument trafia natychmiast do Dead Letter Queue z pełnym opisem błędu; administrator może go poprawić i ponowić.
- Kod 401 - wygaśnięty token autoryzacji, worker automatycznie próbuje go odnowić i ponawia wysyłkę.
- Kod 409 - konflikt (dokument zablokowany przez operatora w ERP), czekamy i ponawiamy; po limicie prób trafia do DLQ.
- Kod 500 - błąd serwera ERP, sprawdzamy health-check; jeśli API żyje trafiamy do retry, jeśli nie - przejście w tryb awaryjny.
- Błędy sieciowe - timeout, brak połączenia - dokumenty wracają do kolejki, a po przekroczeniu progu błędów integrator przechodzi w tryb awaryjny.
| Kod HTTP | Znaczenie | Działanie systemu |
|---|---|---|
| 200 / 201 / 204 | Dokument zaakceptowany przez API ERP | Oznaczenie jako przetworzony, przejście do następnego dokumentu |
| 400 / 404 | Błąd walidacji danych, np. brak powiązanego kontrahenta | Dokument trafia do Dead Letter Queue z pełnym opisem błędu, administrator poprawia i ponawia |
| 401 | Wygasły token autoryzacji | Worker automatycznie odnawia token i ponawia wysyłkę |
| 409 | Konflikt - dokument zablokowany przez operatora w ERP | System czeka i ponawia próbę, po limicie prób dokument trafia do DLQ |
| 500 | Błąd serwera ERP | Sprawdzenie health-check - retry przy dostępnym API lub przejście w tryb awaryjny |
| Błędy sieciowe | Timeout, brak połączenia | Dokumenty wracają do kolejki, po przekroczeniu progu błędów integrator przechodzi w tryb awaryjny |
Alerty dla administratorów - trzy poziomy powiadomień
System wysyła e-mail do administratorów na trzech poziomach: INFO - dokument przeniesiony do Dead Letter Queue z pełnym opisem błędu do ręcznej poprawy; WARNING - integrator wszedł w tryb awaryjny, z informacją o ostatnim kodzie HTTP i liczbie dokumentów oczekujących w kolejce; OK - integrator wrócił do trybu normalnego, z informacją o czasie trwania awarii i liczbie zaległych dokumentów do nadrobienia. Administrator zawsze wie dokładnie, co się dzieje w integracji i kiedy wymaga interwencji.
Praktyczne zalety rozwiązania
- Zerowe utraty dokumentów - nawet podczas awarii API lub restartu serwera, dokumenty czekają bezpiecznie w kolejce.
- Brak blokad magazynu - przy błędzie API czy podczas awarii, operatorzy WMS mogą kontynuować pracę; dokumenty zostaną wysłane, gdy system wróci do normalności.
- Automatyczne nadrabianie po awarii - gdy ERP wraca do życia, integrator wznawia wysyłkę zaległych dokumentów w chronologicznym porządku.
- Czytelna diagnostyka - każdy dokument w Dead Letter Queue zawiera pełny opis błędu i może być łatwo poprawiony i ponowiony.
- Odporność na błędy sieci - przerwy w połączeniu nie powodują utraty danych; dokumenty są powtarzane z unikalnym kluczem idempotentności.
- Skalowalność - kolejka obsługuje dowolną liczbę dokumentów bez wpływu na wydajność WMS; przetwarzanie odbywa się asynchronicznie w tle.

Tryb normalny i tryb awaryjny
Przejścia między trybami odbywają się automatycznie na podstawie health-check endpointu, bez ingerencji operatora magazynu.
Wdrożenie - co trzeba przygotować
Wdrożenie rozwiązania wymaga dodania tabeli kolejki do bazy WMS (gotowy schemat SQL z indeksami i procedurami), uruchomienia workera integratora jako usługi Windows na serwerze WMS (gotowy kod C# .NET 8), konfiguracji URL API ERP, adresów e-mail administratorów oraz interwałów retry, a także potwierdzenia z ERP kilku szczegółów technicznych, takich jak obsługa health-check czy format tokenu. Całość zajmuje 4-6 tygodni przy standardowym procesie testowania i wdrażania na środowisku produkcyjnym.
Niezawodna synchronizacja magazynu i finansów
Połączenie systemu magazynowego WMS z ERP to serce logistyki nowoczesnego przedsiębiorstwa. W praktyce jednak tradycyjne podejście - bezpośrednie wysyłanie dokumentów do API partnera - wydaje się proste, ale jest pełne pułapek. Awaria API, timeout sieci czy niespodziewany restart serwera mogą spowodować utratę dokumentów, duplikaty czy blokadę magazynu. Nasze rozwiązanie zapisuje dokumenty najpierw do wewnętrznej kolejki na bazie WMS, a niezależny worker wysyła je bezpiecznie do systemu ERP - awaria API nie zatrzymuje operacji magazynu, a żaden dokument nie zostanie utracony.
Wzorzec Transactional Outbox i niezawodna dostarczalność
Serce naszego rozwiązania to wzorzec Transactional Outbox - technika, która gwarantuje niezawodną dostarczalność. Dokumenty magazynowe, takie jak przyjęcia, wydania z magazynu czy korekty stanów, zapisujemy najpierw w tabeli lokalnej na bazie WMS. Każdy wpis zawiera kompletne dane dokumentu, znacznik czasu i status przetworzenia. Niezależny proces worker działa w tle i pobiera dokumenty z kolejki FIFO, wysyłając je do ERP za pośrednictwem API. Błędy przejściowe (timeout, 500) trafiają do kolejki ponowień z wykładniczym opóźnieniem, a błędy walidacji (400, 422) trafiają do Dead Letter Queue i czekają na ręczną interwencję.
Ochrona przed duplikatami i powiadomienia o błędach
Problem duplikatów pojawia się, gdy połączenie sieciowe przerwie się w połowie wysyłki. Nasza implementacja rozwiązuje to za pomocą kluczy idempotentności - każdy dokument ma unikalny identyfikator i znacznik czasu. ERP akceptuje dokument z takim samym identyfikatorem tylko raz. Jeśli worker prześle go ponownie po przerwaniu połączenia, system ERP wie, że to ponowienie, i odrzuca duplikat bez błędu. Monitoring jest trzystopniowy: pierwszy alert sygnalizuje pierwsze wystąpienie błędu, drugi ostrzega, gdy dokumenty czekają zbyt długo, a trzeci to raport dzienny o liczbie błędów i odsetku udanych wysyłek.
Wdrożenie dla systemów o dużym wolumenie dokumentów
Wiele magazynów przetwarza tysiące dokumentów dziennie - handel elektroniczny, logistyka kontraktowa i dystrybucja generują dziesiątki PZ i WZ w minutę. Rozwiązanie testowaliśmy z wolumenami do 10 tys. dokumentów na godzinę, przy opóźnieniu poniżej 30 sekund. Baza danych przechowuje historię wszystkich wysyłek, co umożliwia audyt i wyjaśnienie rozbieżności między magazynem a systemem finansowym. Integracja z integracją z SAP, Subiektem, enova czy innymi systemami ERP działa na tych samych zasadach - niezależnie od partnera, stany magazynowe w WMS pozostają zsynchronizowane z danymi finansowymi. Elektroniczna wymiana dokumentów (EDI) z kontrahentami działa na tej samej infrastrukturze.
Od małych magazynów po centra logistyczne
Naszych klientów nie obchodzą szczegóły techniczne - obchodzi ich bezpieczeństwo, szybkość i audytowalność każdej sprzeczności między danymi w magazynie a finansami. Od małych magazynów integrujących się z jednym systemem ERP po duże centra logistyczne obsługujące wielu kontrahentów - rozwiązanie skaluje się bez konieczności przepisywania kodu. Pracuje na serwerze WMS, nie wymaga dodatkowej infrastruktury i utrzymuje się automatycznie. Jeśli Twoja firma boryka się z problemami synchronizacji WMS i ERP, sprawdź demo systemu WMS online lub skontaktuj się z nami, aby dobrać najlepsze podejście do Twojej sytuacji.
Konkretny przykład integracji z systemem Streamsoft opisujemy w artykule Streamsoft WMS - integracja z ERP.
Z jakimi systemami ERP współpracuje Studio WMS.net
Studio WMS.net przygotowany jest do współpracy z systemami klasy ERP obecnymi na polskim rynku - między innymi z SAP, enova, WF-Mag oraz Hermes SQL. Wymiana danych odbywa się plikami Excel albo bezpośrednio przez WebService, co pozwala synchronizować kartoteki i dokumenty bez pośrednictwa operatora.
Praca na danych przebiega w trybie rzeczywistym. Dzięki temu obsługę magazynu można oprzeć o dokumenty, listy kontrahentów i kartoteki towarowe przygotowane wcześniej w systemie ERP, zamiast utrzymywać dwa równoległe zbiory danych.