Fork me on GitHub


The Common Service provides essential functionality to deal with Locations, LocationGroups and TransportUnits. For a simple example, it offers an API to move a TransportUnit from a Location A to a Location B. Besides that, also other secondary resources exist, like TransportUnitTypes or rule sets to define what type of TransportUnit can be put on what type of Location.


Build status License Docker pulls Join the chat at


The module depends on CORE dependencies and one additional optional COMMON dependency that is only used in the enterprise version and offers an additional API for the UI.


Build a runnable fat jar with the execution of all unit and in-memory database integration tests, but without a required RabbitMQ server to run:

$ ./mvnw package

To also build and run with RabbitMQ support call:

$ ./mvnw package,TEST

This requires a RabbitMQ server running locally with default settings.


Run On Command Line

After the binary has been built it can be started from command line. By default, no other infrastructure services are required to run this service.

Run in standalone mode:

$ java -jar target/openwms-common-service-exec.jar

To load some sample data, add another profile DEMO:

$ java -jar target/openwms-common-service-exec.jar

In a distributed environment the service configuration is fetched from the central Configuration Service. This behavior can be enabled by activating the Spring Profile DISTRIBUTED. Additionally, it makes sense to enable asynchronous communication that requires a running RabbitMQ instance - just add another profile ASYNCHRONOUS. If the latter is not applied all asynchronous AMQP endpoints are disabled and the service does not send any events nor does it receive application events from remote services. The AMQP protocol with the RabbitMQ is currently the only supported message broker. But switching to others, like HiveMQ (MQTT) or Apacha Kafka is not rocket science.

$ java -jar target/openwms-common-service-exec.jar,ASYNCHRONOUS

This requires a RabbitMQ server running locally with default settings.

With these profiles applied the Configuration Service is tried to be discovered at service startup. The service fails to start if no instance of the configuration service is available after a configured amount of retries.

Run as Docker Container

Instead of building the software from the sources and run it as Java program on the JVM it can also be fetched as a Docker image from Docker Hub and started as a Docker container.

$ docker run openwms/org.openwms.common.service:latest