Case study · Long-term product development
ERP Platform for CMS Australasia
A business-critical platform supporting hundreds of employees
CMS Australasia relies on a custom ERP platform to manage much of its day-to-day operation — from employee records and timesheets to purchase orders, invoicing, project budgets, reporting and financial analysis.
I have been working with the company since 2015, developing and modernising the platform as its processes, team and technical requirements have evolved.
The challenge
The platform brings together a wide range of business processes, user roles and financial workflows in a single system used by several hundred employees.
Over the years, it has had to grow without disrupting daily operations. New functionality needed to coexist with legacy code, established workflows and integrations with external systems. This made maintainability, data integrity and gradual modernisation just as important as delivering new features.
My role
I have worked on the platform as a Senior Full-Stack Developer since 2015. My work combines the long-term development and modernisation of the existing ERP with building major new parts of the platform.
I work closely with Chris, the project manager, whose contribution goes well beyond conventional project management. He approaches the platform as a whole, provides exceptionally detailed functional requirements and often contributes valuable ideas around architecture and user experience.
Building on that product and business context, I am responsible for shaping the final technical solution. This includes designing the application and database architecture, deciding how new functionality should integrate with the existing platform, and implementing it across the backend and frontend.
My responsibilities also cover integrations, testing, deployment, performance optimisation, UX improvements and long-term maintenance.
Major systems built from the ground up
Alongside maintaining and modernising the existing ERP, I built several major parts of the platform from the ground up.
Based on functional requirements provided by the project manager, I designed the technical architecture, data model and integration with the wider ERP, then implemented and deployed each solution.
Automated reporting
I built a system for automatically generating and distributing scheduled reports. It brings together data from across the ERP and delivers the right information to selected recipients without requiring reports to be prepared manually.
Audit logging
I designed and implemented a central audit logging system that records changes to important business data. It provides visibility into what changed, when it changed and who made the change.
Current RMS integration
I built the integration between the ERP and Current RMS, enabling information to flow between the two platforms and reducing the need to maintain the same data manually in separate systems.
PDF generation
I replaced the previous PDF generation solution with a new system built around WeasyPrint. The migration provided a more flexible and maintainable way to generate business documents from HTML and CSS templates.
Queued email delivery
I designed and introduced a central queued email delivery system used across the ERP. Moving email processing into background jobs improved reliability and prevented larger email operations from slowing down user-facing requests.
Employee management
I built a comprehensive employee module covering personal and employment details, terms of engagement, emergency contacts and reminders prompting employees to review and update their information.
Timesheets
I designed and developed the timesheet module used to record working time and connect it with employees, projects and the platform’s wider reporting and financial workflows.
Gradual platform modernisation
Rather than attempting a risky full rewrite, we have modernised the system incrementally while keeping it operational.
This has included extracting functionality from the legacy CakePHP monolith into REST APIs, upgrading PHP and CakePHP applications, moving development and production services to Docker, and migrating the database from MySQL 5.7 to MySQL 8.4.
Access control, UX and performance
The platform includes granular access control, combining organisation-wide roles with permissions assigned at the project level.
An internal business system used every day needs to be efficient, not merely functional. I have delivered extensive UX and performance improvements across the platform, simplifying common workflows and making complex areas easier to navigate.
Summary
The ERP remains a central part of CMS Australasia’s daily operation and continues to evolve alongside the business. This long-term collaboration has given me deep knowledge of both the platform and the processes behind it. It is also a strong example of how I approach established business software: understand the real workflow, improve it without unnecessary disruption and modernise the technology in manageable steps.