How we ensured seamless data synchronization for a leading Maritime software provider




2017- 2021


Development, Refactoring


Italy, UK

About the project

SpecTec is a leading Maritime software provider. For 30 years the
company has developed AMOS software (Asset Management
Operating System) for the Maritime, Oil Gas, and Defence
industries. SpecTec has 13 offices in 11 countries and counts over
1,200 clients worldwide.

The SpecTec company wanted to adopt AMOS functionality to
real-life tasks of fieldwork employees, such as technicians,
engineers, and warehouse workers who operate in areas without
an Internet connection.

Project scope

The SpecTec team needed our development team to ensure that the application was fully functional online and offline, using data transfer between mobile devices used in field operations and local databases.

The client also wanted IntelliSoft developers to participate in the development of the following projects:

  • AMOS Maintenance App that allows liners, ships, and vessels regular maintainance and check ups
  • AMOS Inventory App for carrying out all stock control processes
  • Quality Management System that stores regulations signed by
    Virgin voyages captains
  • Web Approvals for reducing the time required to process approvals

Solutions we provided

Remote Database Synchronization

The Remote Database contains all data entered by the user, and all data copied from the AMOS Business Suite database.

Maintenance App

The SpecTec Maintenance App enables managers to regularly maintain and check on liners, ships, and vessels. AMOS does scheduling automatically, based on counters or time.

For example, you need to maintain your car engine once a year or every 10k km.

  • After entering the data from your odometer into the system, the work order will be created automatically. The same functionality also works for vessels and their “components.
  • Technicians receive assigned tasks to their mobile devices, report on the progress, and access a library of technical documentation the job requires.
  • If the technician needs new spare parts, the module also has a reference to the Inventory module to find the required part in-stock inventory or pre-order it.

Inventory App

The Inventory app allows carrying out all stock control processes directly in storerooms. With complete scan-to-go
barcode and QR support, AMOS Inventory App allows the user to register stock in/ out, transfer stock, receive goods,
and print labels all from one Android device.
  • Users can track critical stock items on board a vessel and create new
    orders for the next purchase beforehand.
  • Users can move parts between locations, accept deliveries, track
    what part was used/broken/scraped/etc.
  • The inventory database provides a personal ID and address for each
    inventory part in the warehouse.
  • The user taps its ID to the mobile device and quickly finds the required
  • The app also shows the number of available details left across all
    warehouses and their locations in every warehouse.
  • The same functionality is available for both new and used

Quality Management System

The system allows cruise lines to manage, control, and
issue company policies and procedures, which can
be easily accessed on any device from anywhere.

The entire document history is always available, from first draft to final version, with all revisions accurately recorded. Key regulatory publications are always close at hand, helping companies to remain compliant as documents are distributed and consulted.

Web-based Purchase Order approval

Usually, it takes 2-3 days to process approvals for new purchase orders. StecTec PO’s approval web solution eliminates this bottleneck
in inventory supply by enabling POs approval daily on mobile.

The buyer initiates the process using ABS or EMS application
based on a variety of parameters to be visible to the remote user,

  • Order type/number
  • Order details and line items inc. quantity
  • Supplier Info
  • Unit price and cost code
  • Associated vessel

The designated approver receives an email notification directing them to the approval solution. The user can either:

  • Review the orders, line items, and priority of goods and services
  • Review detailed breakdown costs and if budget is available for the purchase
  • Approve, reject, or comment on the PO

Barcode scanner

Allows users to scan barcodes using a smartphone or tablet device as a data-collecting tool.

How we did it

To help the SpecTec team face challenges, IntelliSoft software developers did the following tasks:

Architecture refactoring

When we joined the project and dug into the details, we found that Spectec’s software uses complex architecture with a middle layer called BFF. That layer was responsible for synchronization between CouchDB and SQL Server.

While the general idea was good for what they wanted to achieve, the synchronization logic and layer implementation had several critical problems. This approach led to a prolonged sync performance and high latency – once the office manager changes the data in the central (SQL) database, data would arrive in the device from 5-10 minutes to a 1+ hour in some cases.

Moreover, because of inefficient data models used for CouchDB, there was a significant data transfer overhead, which made things even worse.

We found other significant issues on the application side of Inventory App implementation:
The initial data synchronization could take up to several hours
Data searches were prolonged
The application could not handle extensive databases, giving freezes and crashes.

To solve these issues, we re-developed a large part of the middle layer from scratch, implementing the new internal architecture, allowing us to track all data changes effectively and perform near-real-time two-way updates for the data.

We made all the data synchronization code asynchronous to reach the best performance and created the synchronization tasks scheduler, which tracks and processes DB updates while ensuring data integrity and optimal resource consumption. We applied a similar approach on the application side.

Re-implementation of data access layer

When we joined the project, Inventory App was in the beta stage, and the Maintenance App was in the initial development stage. To improve the situation we observed in the Inventory App, we re-implemented the data access layer.

We created the in-memory index structures, allowing us to perform the most common search scenarios instantly. The concept of “virtual data” was introduced – the data changed on the application side but not yet persisted into the central database. The “virtual data” effectively solved possible data update conflicts between multiple users.

In addition, we added the Observable support to a new data access layer, which allowed UI to listen for data changes in PouchDB and immediately refresh data on the current screen.

After the success of the Maintenance App, we ported all improvements back to the InventoryApp, which fixed most of the complaints of beta users.

Offline data synchronization

We integrated Apache CouchDB, selected by the SpecTec team, a single-node database that enables data flow between server clusters, mobile phones, and web browsers. The CouchDB Replication Protocol is a protocol for synchronizing JSON documents over HTTP.

We used PouchDB, a web-based open-source JavaScript database, to store data locally. At the same time, offline, then synchronize it with CouchDB and compatible servers when the application is back online, keeping the user’s data in sync.

The data synchronization flow works like this:

  • The system receives data from the server, processes it, and saves it to Apache CouchDB for data replication.
  • CouchDB compares the source and the destination database during replication to determine which documents differ between the original and the destination database.
  • Then, the JavaScript library emulates CouchDB, NoSQL and PouchDB and saves data to CouchDB.
  • Next, the mobile client inside the mobile application is connected to the local database for synchronization, while the central database supports online synchronization.

The replicated data from the central database is fully available in a mobile application so that field workers can edit it from the engine room and report the work offline.

The system stores new data in the local database and replicates it to the central database whenever a network connection appears. Due to vessel specifics, there is (almost) no Internet there.

We also used this logic for Task Planner functionality to enable the system to gradually update data via CouchDB and SQL server, which increased the overall AMOS software performance.

QMS Real-time data update

When the government issues a new regulation, it must be agreed on and signed by the ship captains, who will further implement those regulations. The ship crew also needs those documents to be at hand to ensure regulations compliance.

The quality management system that stores safeguard practices and documented regulations was developed by third-party IT suppliers. The key area where SpecTec needed our help was the system performance.

Initially, the SpecTec team wanted to apply CouchDB and PouchDB for the web-based application, but it was too complex and didn’t work. The system also had issues with data synchronization and how data is shown to users.

IntelliSoft developers provided consultancy services to improve app productivity and suggested best practices to optimize the system for real-time data updates.

Website development for Web Approvals

The Order approval functionality was initially available only via the AMOS desktop app. The client needed the web application for this functionality built from scratch and integrated with the SQL AMOS database.

We developed the responsive website for Web Approvals leveraging Ionic 4. IntelliSoft team was responsible for both front-end and back-end and further integration with SQL database.


Barcode scanner integration

The Barcode scanner is the primary data input for the Inventory module. To add info and location of the new or used part, the user needs to scan the barcode, add location, the amount, and the warehouse address to the local database. The system provides each part with a personal ID for a more streamlined search across all warehouses.

Initially, the client used the device camera for the barcode scanner functionality, but it performed poorly in field conditions.

To improve the Barcode scanning functionality, we suggested using Honeywell’s batch scan functionality, field-proven algorithms, high performance, wide scanning range, and high image accuracy.

Mobile label printing support

We added the support of Zebra-compatible BlueTooth printers to the InventoryApp. After receiving a delivery package, a warehouse employee can quickly print labels for received parts. We implemented the ZPL-based templates, which allow the user to print labels in any format he wants, including optional logo, service information, etc.


Tech stack we used

Ionic 3
Pouch Database
Couch Database
Honeywell SDK
SQL Server
.NET Core

Tech Stack

Solution Architect
Full Stack Developers

Our results

We optimized existing architecture and ensured successful offline and online data synchronization for Inventory and Maintenance applications.

Thanks to offline and online modes, AMOS by SpecTec increases the productivity and efficiency of marine workers no matter the working conditions – whether they are in the engine room, on deck, or in the office, at sea, in a storm, or on land.