Wherever an external system connects, there is a field for its identifier; the application never assigns it and never uses it in calculations. There is no off-the-shelf connector for any specific ERP.
All business logic resides in the core. The UI and interface are thin layers on top. Therefore, the same rules apply whether a booking is made via the portal, the internal screen, or the interface.
An ERP system asks for time slots and bookings. A yard device reports what it sees and asks what to do. These are two conversations with different counterparts, and they use separate keys.
A rejection is not an error. It arrives as a successful response with a reason, not as an error code. An exhausted quota is not an invalid request.
Order import is repeatable. The document number from the external system is the key; the same document updates the existing record instead of creating a duplicate.
A license plate reader reports what it read and receives a decision in return: admit, wait, or reject, each with a reason in plain text. The decision is made just like at the gate: the license plate is used to find the booking.
License plate reader, barrier, display board, scale, and terminal can be connected via a dedicated interface. It has not yet been tested against real hardware; the first integration will happen at a pilot site as a dedicated project, together with the hardware vendor.
Portal, login, registration, the driver page, and text messages to the driver are available in German, English, French, Swedish, Polish, Romanian, Lithuanian, Czech, Hungarian, Bulgarian, and Slovak. The selection reflects long-distance transport into Germany; French and Swedish were added with the first target markets. The internal screens are available in German, English, French, and Swedish.
These points belong in the discussion, not swept under the rug.
Web application in IIS, one Windows service, one database. On Linux, the web application and service run as systemd units behind nginx. The configuration resides next to the application and is not overwritten during deployment. Updates: replace files, restart application and service.
They test the business logic against SQL Server, the free trials against PostgreSQL, deliberately not against an in-memory substitute: the lock that prevents duplicate bookings does not exist there at all. The interface flows have been walked through manually.
We walk through the process on our test system with your docks, operating hours, and restrictions, plus status, roadmap, and the pilot offer.