The project client is one of the largest international tobacco companies with production facilities in Russia.
Due to geopolitical changes, a foreign vendor ceased technical support for our client's critical production management system. The vendor's departure not only deprived the company of updates but also made it impossible to replace failed hardware modules.Any failure threatened a complete shutdown of the production line and multi-million dollar losses – and a team of ICL Services engineers was quickly brought in to prevent a production collapse.
Key Challenges
- Survey the production system
- Restore and describe the system architecture
- Obtain source code, restore source code from builds for which source code is not available
- Configure the build and deployment of the system in the test environment
- Debug the system update in the production environment
- Prepare the support team for further bug fixes and implementation of enhancements and change requests
Implemented our solution
Stage 1. Reverse Engineering and Solution Structure Recovery
The team consisted of two experienced developers and a project manager. Tasks were divided among the system's components, meaning one worked with the database, while the other focused on restoring the system application itself and data exchange.
The specialists performed a reverse analysis of the delivered/deployed components to recover:
- the modular structure of the solution
- the connections between components of the client-server architecture
- the data exchange/integration configuration
Stage 2. Obtaining the source code/assembly recovery and rebuilding the project
We recovered the assembly and dependencies (libraries, configurations, versions) to ensure the project builds reliably.
We prepared the basis for further changes: the repository structure, build rules, and instructions. One of the challenging aspects was that the system uses proprietary foreign software for some interfaces. For the first stage, the team was able to disable these elements and configure the build so that the system would still build with these elements in the interface.
Stage 3. Stabilization: Bug Fixes and Managed Releases
Once the rebuild was implemented, the team was able to move on to what was most valuable to the customer – experts were able to make changes to the source code and deploy new versions to the production environment.
In the current stage, to test the approach, a modification to the application was taken into development. This change was successfully developed and implemented in the production version of the system.
Stage 4. Transfer to Support and the First Year of Support
In the final stage of the project, the team transitioned to direct application support, created a support flow chart, and prepared instructions. During the first year of support, long-standing interface defects that had been detrimental to the user experience and complicated the application were corrected (for example, checkboxes in one window had reverse logic), and changes were made to the system at the customer's request, improving the quality of the solution.
Products and technologies
- .NET 4
- Windows Forms, Syncfusion UI Component Suite
- Windows OS, Microsoft SQL Server
Results
- The source code and project structure have been restored to a manageable form.
- The ability to build the project with changes to the source code and prepare a release has been restored.
- Documentation on the architecture, modules, and dependencies has been developed for use in future support.
- Dependence on the foreign vendor has been reduced to 0% for ongoing operation and upgrades.
- Vendor dependency and the risk of production downtime have been reduced.
- All barriers to error correction have been removed.