Great! :)
Thanks, we'll contact you soon.
Last July, Slack, the well-known instant-messaging platform, released a rebuild of its desktop app to focus on speed and performance. The company claims its new app is 33 percent faster than before and uses 50 percent less memory. Slack's move has definitely put application modernization in the limelight and showcases why legacy system migration to digital transformation is so central for organizations today.
If you read the first article in this series, you'll know that we used feature level testing and test-driven development to re-purpose an old desktop application for our financial services client. One of the challenges of that project were technology limitations. To access the legacy app's development environment, we needed a virtual machine running Windows XP to access Visual Basic 6.
This, coupled with the app needing to integrate with two other newer websites, meant it made sense to rebuild the app. We built a modern web application with Angular 7, ASP.net, and .NET Core, resulting in a much more user-friendly experience.
One of the biggest challenges with this project was re-creating and documenting requirements. We had zero previous requirements for building the web application and no business analyst to assist with the project at the start.
We just had the original source code, one original developer, and a need to migrate over to a modern web application in case something happened to the desktop's development environment. To learn how we overcame these obstacles, you can read the first article.
In this article, we'll outline the most important considerations and best practices we followed while repurposing this legacy app. For example, we'll go over what we learned about technologies, architecture, maintainability, and functionality as we upgraded to a modern app. Also, we'll highlight the soft side of migrating employees to the new application.
For example, we'll tell you more about the best practices we adopted, how we bridged the gap between old and new applications, and how we used a phased approach to provide end users with a smooth transition to the new environment.
Legacy app upgrades are a significant undertaking for an organization in terms of time, costs, and disruption for the users. However, the increased performance, security, and efficiency that you achieve from the migration will make the initial challenges worth it in the end. During this project, we learned many valuable things about technology & architecture, functionality, maintainability, scalability and security.
Client-side technologies like HTML, CSS, and JavaScript work by running scripts within the browser. When a user clicks a webpage, the request is rendered immediately. Most modern applications are client-side because they are faster and more economical.
Although our customer’s legacy app is compatible with current software, it was written in Visual Basic 6 (Microsoft ended support in 2008) and also ran on Windows XP (support ended in 2014), making it a challenge to maintain. One of the primary requirements for the new web application was that it should "talk" with the client's customer facing website and integrate with Salesforce. These integrations were handled with an updated technology stack and revised architecture. The key components were Angular 7 on the frontend, with a web API, .NET Core, and SQL server for the backend.
The goal in building a new web application was to replicate the original functionality of the legacy application without reinventing the wheel. In other words, we didn't want to spend time migrating components that weren’t heavily utilized. One key feature was the ability to open multiple windows or tabs and interact with each one interchangeably. Developing an optimal user experience was also an important factor in this process, so the application had to be cross-browser compatible. We also needed it to work across the various form factors such as phones, tablets, and screen sizes.
Another key factor in our client's decision to migrate to a modern app was the need for stronger maintainability. The workaround for updating the legacy app was using a virtual machine to connect to Windows XP and access Visual Basic 6 (VB6). Since there are very few developers in the world still using VB6, this was an unsustainable situation from a business and technology standpoint. The possibilities of a system failure, not to mention numerous security vulnerabilities, put the client at considerable risk. The new solution had to address these concerns, integrate with existing structures, and provide employees with a seamless user experience.
It goes without saying that our client needed a system that would continue to scale with the business. New web apps naturally attract increased numbers of users and, in this case, the client required a solution that would support the company’s short and long-term business vision.
Using a system like VB6 that's no longer supported, and doesn't have patches, posed a substantial security risk for our client. Legacy apps are notorious entry points for malware to spread throughout a network, and they can cripple an enterprise in no time. By providing our client with an updated, modern web app including the latest security protocols, we gave the client the peace of mind that their environment and data were protected.
We've discussed some of the most important considerations behind legacy system modernization strategies, such as scalability and maintainability. However, there are also a number of additional "fringe benefits" that resulted from migrating our client to a new web application.
One of the effects of working together on a legacy app migration project is that you learn to "sink or swim" together. The success or failure of any migration/deployment project ultimately depends as equally on communication between team members as it does on technical knowledge.
A second effect was a better shared understanding of the business, especially after the first deployment and round of user feedback. This understanding led to increased engagement on the project and "buy-in" to our customer's goals.
Through the process of learning, growing, and overcoming challenges together, our team built a shared sense of trust and camaraderie that made them better -- both professionally and individually.
Another positive outcome of this project was seamless upgrades that will keep this app up-to-date for the foreseeable future.
It's important to note that we didn't implement technology upgrades as soon as they were available, but rather when there was a newly stable version. For example, when we began this project, we started with Angular 6, then upgraded to Angular 7, and will soon upgrade to Angular 8, which was released in May 2019.
Additionally, we began this project with .NET Core 2.0, eventually upgraded to 2.1, then 2.2, and will soon upgrade to 3.1, which was released in December 2019 (skipping version 3.0, released in September 2019).
By upgrading to modern technologies like Angular 7 and HTML5, we can now provide the client with the latest releases, fixes, updates, and patches to ensure full security compliance and protection against malware and other threats.
Our client's upgraded web application can now be deployed easily and seamlessly. With the original desktop version, employees needed to download then install a local installation package, which also required support from an onsite IT team.
Since the modernization is a web app that runs in a browser, our client now has the ability to access their new and improved application from anywhere that has an internet connection. This new 'on-the-go' feature will provide the client with long-term improvements in company performance, efficiency, and cost-savings.
One of the earliest goals of this modernization project was to ensure an easy and seamless transition for our client's end users. As with the technical side of the migration, there were also a number of best practices and considerations that helped ease the burden of employee migration.
One of our primary goals from the inception of this project was to ensure employee onboarding to the new web application went as smooth as possible. We realized that, even in an era of digital transformation, many people resist change within organizations.
One of the ways we hoped to entice employees to migrate to the new app was by thoughtfully implementing features of the desktop app to give it the same feel. For example, we included tabs in the user interface so employees could work with multiple screens without losing their progress.
We understood that as humans we often get used to the status quo and disrupting the status quo can be scary. Thus, we put ourselves in the shoes of the employee when helping them with the migration. We did our best to communicate, interact, and provide guidance throughout the migration process in ways that benefited and assisted the end users the most.
We noticed that users tend to get comfortable with what’s familiar, so our strategy in encouraging migration to the new web app was to try to reuse as much as we could from the original functionality. In other words, we strove to "bridge the gap between the old and new system as much as possible."
We realized that sometimes a new application may not meet the end-user's immediate needs, and as a result, it becomes easy to revert back to what's familiar. Hence, our aim was to try and detect those instances and find ways to encourage early migration over to the new system in ways that felt natural and seamless.
To encourage employee migration, we designed the UI/UX to be similar to the original desktop app and encourage a quick switch over. Our approach here was to integrate the legacy and the new application together closely enough so users would believe they're still using the original system. An example of this was accomplished by using iFrames. We updated the client facing website in such a way that when users clicked into the legacy app they were actually inside of the new application.
When it was time to launch the new application, we had to be strategic and careful. We didn’t want to upset the employees, so we needed to be strategic in how to get them to adopt the new technology without causing any stress. With this in mind, we released certain functionalities to specific departments and conducted beta testing to find the best usage patterns. After several observations, we began blocking some of the functionality in the legacy app to encourage users to migrate over to the new functionality. Our phased approach proved to be a successful method for launching the new web app.
We can build project requirements even if they're not available. We developed a proven methodology of using test cases to build requirements in situations where the requirements are unclear or simply not available due to a lack of knowledge management.
Innovative thinking drives us to overcome seemingly impossible situations. We can mockup a UI/UX on the fly and provide our clients solutions where others give up.
With our well-established Tech2Tech structure, we can easily build, extend, and manage global, distributed, and remote teams.
We have the ability to adopt and adapt cross-team synergies. We can play the role of Business Analyst or Product Owner as needed.
Through our 4Plus1 Program we offer a tried and true framework for off-loading and providing support for enterprise teams (for every four billable engineers on a program, we add one shadow engineer to allocate useful talent and resources).
We provide strategies, best practices, and trainings on how to introduce developers into a new environment and build team chemistry.
We’re uniquely qualified to provide and direct knowledge transfer to new team members.
In the first article of this series, we described our approach to an extensive migration project for our financial services client from a 20-year-old legacy application to a modern, sleek app. Through that process, we developed a unique combination of feature level testing and test-driven development (TDD) to reverse engineer and devise project requirements, which due to time-lapse and staffing change-over, were no longer available.
In this second installment, we've looked at this project from a different angle. We've focused on several important considerations surrounding the rebuilding of the new application, such as technology and architecture, maintainability, and security. We then described the legacy system modernization strategies we implemented to encourage a better migration experience among the employees.
In that section, we described a series of best practices and other learnings that we acquired in order to make this process more user-friendly, seamless, and successful for our client’s end-users.
In the next installment of this series, we'll discuss the tabbing features that were implemented within our client's new web application, so be on the lookout for the next article coming soon!
If you are considering updating your legacy application, contact us today to choose to right approach to modernize your legacy system!
Integrant’s Vision is to transform the software development lifecycle through predictable results.