Back to projects

GMAO PARC

Two Java batch jobs that update the fleet maintenance software on their own.

Context
Work-study at AREA (APRR group)
Period
2025 – 2026
Role
Apprentice in the business software team
Team
With my company tutor
  • Java
  • JDBC
  • PostgreSQL
  • REST API
  • Maven
  • Log4j
  • Azure DevOps

Context

The GMAO PARC is the software used to manage all the vehicles and machines of the group. It plans and tracks their maintenance: tractors, salt spreaders, mowers and so on. It runs on CARL Source and exchanges data with the HR tool and the finance tools.

Two updates were still done by hand. People who had left the company had to be deactivated one by one. This was a security and GDPR issue. And when a machine moved to another site its cost centre code often stayed the same. Maintenance was then billed to the wrong department.

  1. HR systemEmployees and contract end dates
  2. GMAOCARL Source, vehicles and machines
  3. Finance toolsMaintenance budgets
Simplified view of the data flows around the GMAO.

What I did

  • An equipment job in Java and JDBC. It looks for machines whose cost centre is different from their site’s and fixes them in one transaction.
  • A people job that uses the CARL Source REST API. It gets everyone whose contract has ended and switches them to inactive.
  • A common base shared by both jobs: database access, logs, error file and an e-mail report at the end of each run. Passwords and settings are in external files and not in the code.
  • Delivery as fat JARs built with Maven. The code is on Azure DevOps and the jobs were tested on the pre-production servers.

The bug that taught me the most

In testing some people were never deactivated. The job read the API results page by page. But every person I deactivated left the list. Everything shifted and the next page skipped people.

The fix was to always read the first page again until the API returns nothing. The list gets smaller as the job works.

  1. Get a tokenLogin to the CARL Source API
  2. Read the first pagePeople whose contract has ended
  3. Deactivate themThey leave the list

Back to the first page until it is empty, then an e-mail report is sent.

How the people job works after the fix.

Result

The two updates no longer need anyone. I also studied the whole HR integration flow to prepare the arrival of new subsidiaries after the group reorganisation in January 2026. The code is ready for CARL Source version 7.