Blog

The legacy hell

Skaylink brings legacy applications to life by integrating modern components, new APIs, and a modern UI to improve efficiency and user experience.
23. July 2024
Picture of Skaylink
Skaylink

We all know those clunky, outdated systems that refuse to die. Not only are they a physical burden, they’re also a productivity black hole. Every hour spent wrestling with their quirks is an hour stolen from innovation and growth.

Short-term fix

Harvest the low hanging fruits: Focus on modernizing key components one at a time. Upgrade databases, implement APIs, and automate manual processes. These small wins will make a big difference in day-to-day operations. Here’s an example of what Skaylink does for our customers:

Assessing the current state

For one of our customers, the culprit was a time tracking solution built years ago by an external company. It still worked quite well, but because it had never been updated, the UI was out of date. This resulted in a lower level of acceptance by new users. In addition, the software was a client-server application without web interface. It was impossible to provide external users with access to the time tracking software without giving them VPN access or installing the client on their devices. We could have gone with an RDP-based solution, but that wouldn’t have fixed the ugly UI.

Moreover, the data center hosting this application was scheduled to close. This meant that cloud migration for both the application and the database was an additional challenge. The customer’s cloud governance required authentication via Entra ID, which was not provided by the application in its current state.

Making a plan

Skaylink took a closer look at the options for modernizing the application. There were some well-documented internal interfaces that could be accessed through .Net. The decision was made to create both an API and a UI. With these two approaches we’ve solved the problem of the outdated UI and also allowed external users to use the application with Entra ID (Azure Active Directory) authentication. A serverless implementation was not an option for this application because of its heavy reliance on COM objects. So we decided to use an instance of IIS to host the API. We needed virtual machines to run the application anyway, so we decided to put it all together.

We used Terraform to deploy the required infrastructure with an APU and an instance in Azure. Because infrastructure as code (IaC) makes things easy, we also deployed a development stage that allowed us and the customer to test further changes to this application.

Adding an API

Adding an API to an existing application opens up a world of possibilities. It enables seamless communication with other software systems, enhances interoperability, and facilitates data exchange. With an API, an application can easily sync with project management tools, payroll systems, and more, streamlining workflows and improving efficiency.

For the time tracking application, we created a REST API based on .Net 6 and C#. This API provides all endpoints needed to create, read, update and delete time entries in the software. It uses the internal COM interfaces to transport the input from the API to the software itself.

While implementing the API we also created a suitable PowerShell module to test the API. This module can also be used for automation.

Implementing a new UI

To achieve the objective of having a modern web-based UI, we created one based on the API endpoints using VueJS 3. A visually appealing and user-friendly UI is critical to the adoption of a software application. By revamping the UI of the time tracking application, we have not only improved its aesthetics, but also the usability and user experience. Create a stunning new UI that users will love by incorporating modern design principles, intuitive navigation, and responsive layouts.

Streamlining the time tracking processes

With the API integrated and a new UI, it was time to address the time tracking processes. We identified repetitive tasks and bottlenecks in the current workflow and leveraged the capabilities of the API to automate these processes. From time entry and project allocation to reporting and analysis, we’ve made every aspect of time tracking more efficient and intuitive for users.

Testing and iteration

When modernizing an application, it’s important to perform thorough testing to ensure that everything works as designed. User feedback was gathered and incorporated into the next sprint. Continuous improvement is key to delivering a modernization project that meets the evolving needs of your organization.

Conclusion

Modernizing an outdated time tracking application is a strategic investment that pays off in terms of improved efficiency, productivity, and user satisfaction. By adding an API and implementing a beautiful new UI, you can transform your time tracking processes and empower your team to work smarter, not harder. Harness the power of modernization and unlock the full potential of your workloads.