GMAO PARC
Two Java batch jobs that update the fleet maintenance software on their own.
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.
- HR systemEmployees and contract end dates
- People job: deactivates leavers
- GMAOCARL Source, vehicles and machines
- Equipment job: fixes cost centres
- Finance toolsMaintenance budgets
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.
- Get a tokenLogin to the CARL Source API
- Read the first pagePeople whose contract has ended
- Deactivate themThey leave the list
Back to the first page until it is empty, then an e-mail report is sent.
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.