Early warning system modernization with strong geospatial components

Case study of the modernization project of Early Warning Network, Australia.


This project was delivered as part of a project contract assignment with Early Warning Network, Australia. We have been contracted to deliver a lift-and-shift cloud migration of the company's Geographic Notification Information System (GNIS) from a monolithic architecture to Microsoft Azure and then conduct and implement a cloud integration project, through which we have established an understanding of sub-components of the system, compared and aligned the Microsoft Azure system offerings with current state of the architectures, created improvement plans and work packages and delivered the agreed outcome within a given time-frame and budget.

As part of the Phase 1 - lift-and-shift - migration we have encountered several difficulties with Azure cloud migration tools due to several non-conventional features implemented in the system - for instance custom-made columns in SQL server database. Owing to these reasons the lift-and-shift migration was mainly implemented with manual/semi-automated means rather using the Azure automated migration tool-sets. After implementing several test migration routines the actual production-based work has been successfully delivered on the first official attempt.

The Phase 2 work package consisted several sub-packages and detailed investigations. Since the related CI/CD delivery routine of the system was not operating anymore we established the work with a detailed review of source control and build systems, compared the business requirements and resources with Azure DevOps offerings and designed and implemented a simple yet effective CI/CD system that can be easily operated by a very small team of developers.

After successfully establishing the core development procedures of the newly migrated system, setting up source control and cloud desktops for development work we identified 3 major group of components of the established system that can be migrated/integrated into the Azure cloud offering services. These improvements are as follows:

  1. Review of incorporated, .NET-based web and console applications. It has been established that all of these components are not required to run on monolithic server environment henceforth migration to Azure WebApps were the chosen architecture. Prior to this activity all packages were reviewed for third-party components in terms of current/active support and registered security advisories and they were all replaced/upgraded as required. Furthermore, all components were rebuilt using .NET Framework 4.8 in order to modernize the underlying framework and utilize the new features as required.
  2. A new DLL package has been added to the build system of each components, containing Azure SDK related libraries thus providing a single point of library for Azure integration - henceforth ensuring the easy upgradability of the SDK. When the basic structure of the newly prepared application suit has been completed a set of wrapper logic has been added in order to migrate the old, database-based logging system to Microsoft AppInsight.
  3. The system incorporated a satellite image download sub-packages that was downloading selected cloud formation images from the Bureau of Meteorology (Australia) repository. These images were previously stored on the web-server's hard drive - with Azure WebApps this could have only been achieved with attaching a shared network drive to the WebApps. However, following the recommendations of Microsoft Azure Well Architected Framework it has been decided to use blob storage for image management within the applications. In order to achieve this we delivered several code reviews, code fixes, improvements and unit/integration tests. Furthermore - the previously authored multi-thread download system was unfortunately not functioning correctly causing excessive race-conditions within the given application - as part of our code development work we have re-written this and made sure that the actual thread number of the background processing can be set from environment variable rather being hard-coded.

As a result of this successful migration exercise the organization was able to hire a full-time developer who can only focus on reviewing and correcting the existing code-base and being able to deploy the newly delivered fixes and features to staging and production environment several times a day - or as its required.


Early Warning Network Microsoft Azure Bureau of Meteorology