App developers accessing Apps from Tablet

City of Perth Parking

City of Perth Parking

Industry : Other
Client : City of Perth Parking
Services Used: Custom software development

About City of Perth

City of Perth Parking (CPP) is one of the top parking facility providers in Australia. It is a well known leader in public parking in Western Australia with over 35 car park facilities and 20,000 off-street and on-street combined parking bays available for motorists.

CPP offers a range of services including parking infrastructure consultancy to assist business owners, as well as service and property management for property owners.


CPP was looking for a software development company to provide support for its Car Park Activity Management System (CPAMS) and Datapark System.

They needed to integrate the two systems so to help process the number of available parking bays at their facilities and display this information on their website.

Below is a technical breakdown on the systems they use.

CPAMS & HANSEN Integration

The CPAMS system uses Virtuoso, a database engine and middleware, that delivers generated XML files between Hansen & CPAMS Windows-based machines using a tree-based folder structure for incoming/outgoing messages.

HANSEN consumes and outputs XML files from a disk. It writes a file to the disk when it responds to a CPAMS Service Request or sends a Work Order to raise a job in CPAMS. Virtuoso is used to facilitate this communication to allow Hansen and CPAMS to integrate.

Datapark (Bay Availability & Vehicle Count Integration)

The Virtuoso Client Service is the Java client application wrapped as a .NET service to run headless or autonomously in a Windows environment.

This service takes a Virtuoso server username and password to log in and pulls configuration data specific to how the user (CPAMS, HANSEN and Datapark) has been set up. Based on how the user is configured, it can automatically place messages on a channel queue or pull messages out.

With information from CPAMS and HANSEN, CPP needed Datapark to display information about the vehicle count and parking bay availability at their facilities.


There are two data flows between Virtuoso components - CPAMS & HANSEN Integration and Bay Availability & Vehicle Count Integration.

Below is how we used Virtuoso to integrate the two systems so the required information can flow between them and be displayed as required:

  • On the CPAMS and HANSEN system, when the XML data feeds through HTTPS to the Virtuoso server, the files will be transferred and placed on one of three channels.
  • The Virtuoso user at the other end consumes and pulls the XML files off the queue and saves it to a disk.
  • In the Datapark system, the XML data is sent from one or more Virtuoso clients up to the server via HTTPS.
  • Messages in this queue are then converted to a JDBC SQL Update statement via a ‘dispatcher’ function.
  • The converted messages are subsequently applied to a MySQL server.

We’ve configured the City of Perth Parking website to fetch this data, which it uses to update the count of available car park bays.


Lateral set up multiple channels in the Virtuoso server which creates multiple queues in the underlying ActiveMQ subsystem. These channels facilitate unidirectional or bidirectional communication between source and destination to ensure the data feed is flowing through without congestion.

These channels are owned and operated by three different users in the CoP Virtuoso environment (CPAMS, Hansen and Datapark).

With our integration using Virtuoso, we managed to create a system where the data can flow without disruption between the users so CPP can accurately display their car park bays availability in real-time. 
If you are looking for a complex integration solution for your business, get in touch with our team today!

Back to Project PageEnquire now
Go to Top of the page