Module description/purpose

The main purpose of the Exchange module is to provide other systems possibility to communicate with UVMS. What defines as another system, are such as when a third-part system needs to have access or communication with UVMS. A common scenario is when a mobile terminal which is installed in a vessel, need to report its position to UVMS. It can be many different types of mobile terminals from different brands. Therefore Exchange module has provided one interface for these third-part systems to integrate with. The third-part system must need to implement the interface Exchange has provided for exchanging information with the UVMS. These middle-wares are called for plugins in the UVMS project. There are different types of plugins and will be described later in this documentation.

One of the main functions is to make it possible to send a position of a vessel to the UVMS. What happens when a vessel sends its position; is a position report will send from the mobile terminal to a specific plugin and from the plugin the position report will transmit to Exchange module. There are occasions where a vessel can be out of range and not able to send a position report. Then all the positions will be saved to the hard driver in the mobile terminal and tries to resend it as soon as the mobile service is available. The communication can be reversed as well, from the UVMS to the mobile terminal. All communication with the third-part system will go through the Exchange module. In this project you can send polls to a mobile terminal via Exchange module. A poll is a command you send to the mobile terminal to execute a certain action. There are three types of polls; manual poll, configuration poll and sampling poll.

  • Manual poll is a command sends to the mobile terminal to request its latest position.
  • Configuration poll is a command send to mobile terminal to update the configuration of a mobile terminal.
  • Sampling poll is a command sends to the mobile terminal to request it to send a set of positions which have been saved in the mobile terminal.

Beside the plugin for communication between a vessel and the UVMS, there are other plugins to support other purposes as well, e.g. an email plugin for sending email to notify a system user when an alarm has been triggered.

Other main functions are the transmission of reports, queries and responses of the Sales and Fishing Activity module.

Nexus artifacts and dependencies

Main moduleDatabase module

Github App:
QA Summary App:
CI location App:
Project Site reports App:
Tattletale report:

Module dependencies

AuditLog all operations which have been executed in all UVMS-modulesAudit
UserAuthentication operations and access managementUser
AssetModule to manage a aircraft, watercraft or vehicleAsset
RulesModule for validation of position reportRules

JMS Queue Dependencies

NameJNDI name exampleDescription
UVMSExchangeEventjava:/jms/queue/UVMSExchangeEventRequest queue to Exchange service module
UVMSExchangejava:/jms/queue/UVMSExchangeResponse queue to Exchange module
UVMSAssetEventjava:/jms/queue/UVMSAuditEventRequest queue to Audit service module
UVMSUserEventjava:/jms/queue/UVMSUserEventRequest queue to User service module
UVMSRulesEventjava:/jms/queue/UVMSRulesEventRequest queue to Rules service module
UVMSAuditEventjava:/jms/queue/UVMSAuditEventRequest queue to Audit service module


NameJNDI name example

Liquibase scripts

Related Repositories

Adding message flows for new modules to Exchange

When the BEL and BRU teams needed to add message flows for the Sales and Fishing Activity modules, we discovered that the code structure for the Movement message flow wasn't extensible enough.

In order to avoid this problem for other modules in the future, we try to create a generic, unified way of working, with reusable services.

The flow is (for now):