Legacy System Modernization For an Environmental Company

How migrating from no longer supported VB6 to Java provided an environmental company with an app that seamlessly handles multiple customer requests at a time.


Customers turned to us with the following problems:

  • They needed a convenient way to build complex queries in the database.
  • There were some performance problems with the client’s site. The system was running slowly in the case of multiple requests.
  • Customers needed to restrict access to the application using a White IP List where access would be allowed only to certain IP addresses.
  • There was a need to synchronize data with other databases.
  • It was necessary to construct graphs based on the processed data (e.g., “Number of bags per hour,” “Number of shipments per hour,” etc.).
  • Customers needed improvement of TimeSlot overview and scheduling. It was necessary to develop an electronic schedule (organizer) enabling the reserving of time for unloading and servicing of trucks with bottles.
  • They needed the ability to obtain additional user data from LDAP.


The problem was solved in the following way:

  • To enable easy construction of complex queries in the database, we suggested and implemented the use of Querydsl.
  • We optimized and used cache data to solve the performance problem and improve the operation speed when there are multiple requests.
  • To restrict access to the application, we implemented Interceptor for requests intercepting and filtering (White IP List and Whitelist for paths).
  • We implemented a file manager based on Qdrive.
  • To construct graphs on the basis of processed data, we used an additional module of chart.js.
  • We developed a data model and implemented basic logic for CRUD operations in accordance with business requirements (frontend and backend sides).
  • We developed Time Slots Overview – an electronic schedule (organizer) to reserve the unloading time of the machine with bottles, featuring marking of fields “reserved time” / “available for reservation time” / “unavailable for reservation time” by different colors. The mechanism takes into account the overlap of reserved periods, and automatically suggests the nearest free time, if the time the customer has chosen for reservation is already taken. After reservation, the customer can view its details at any time.
  • We created jobs or scheduling tasks for processing the scheduled data.
  • We developed a variety of services for the system, for example, MailService – a shared service to send e-mails.

Key features

863EE18C-16F5-4BF0-9497-AC6F5E7F756ACreated with sketchtool.

Access by roles

BF1114CA-E6CF-4CA4-8C85-97CB04C49AD6Created with sketchtool.

Sending e-mails

8F2F501A-7B89-481B-9AFA-5D4AB2C4F56ECreated with sketchtool.

History of the entities’ changes

2ED4FC93-2EF5-4057-8F42-342D2B7F65E8Created with sketchtool.

Report generation

48959FD2-71F5-4426-9CB7-BDFC9A73AF25Created with sketchtool.

Display of the data in graphs

59AEFC42-BBBD-4625-8413-A807018D733BCreated with sketchtool.

Receiving and sending data to external terminals and databases

383D9CFC-B314-4A78-B295-397526F573FBCreated with sketchtool.

Imitation of logging in as a different user for the administrator

815080EB-9671-4AEE-AC66-00627C883386Created with sketchtool.

Tasks that process data in manual or automated mode



Do you have a similar project idea?

Anna Vasilevskaya
Anna Vasilevskaya Account Executive

Get in touch

Drop us a line about your project at contact@instinctools.com or via the contact form below, and we will contact you soon.