Modernizing ERP management system

Custom software development, modernizing and optimizing legacy project of a major food processing company.

  • .NET
  • Angular
  • PostgreSQL
  • Redis
  • ASP.NET Core

Industry: food
Category: ERP software, custom software development
Years: 2013 – ongoing


Project background

The client is a large food manufacturer encompassing the entire food processing cycle. Software is one of the crucial elements for the company’s efficient workflow that has made it possible for the client to achieve a successful operation.

The client’s company benefits from its own internal, custom ERP system where its employees manage every detail of an extensive line of products.

The original system was brought into operation over 30 years ago. It received regular maintenance and feature updates during the years of operation. However, its COBOL-based core remained unchanged. The core gradually became incompatible with emerging technologies; this incompatibility created long-term challenges on system upgrades for the client.

Collaboration with IT Craft started when the client requested new functionality needed to manage food ingredients. The IT Craft team delivered the required functionality implementing it as a stand-alone project that exchanged data with the rest of the system.

But to cover more of its client’s business needs, the system required multiple feature upgrades as well as new functionality. Those upgrades were only possible with re-creation of the system core on a new technological stack.


By the time our IT Craft team took over the project, the system had already gone past the point of no-return: it could no longer support the client’s growing business requirements.

However, the client could not wait until a new system would be ready, tested, and adopted by employees. The IT Craft team and client decided on a stepwise transfer of functionality from the old to new system with both systems working in parallel as long as required.

The following challenges affect directly project complexity:


    COBOL was designed specifically for IBM mainframes. Modern languages do not support COBOL approaches and best practices. Thus developers could not make a copy of source code and reproduce it on a new platform. Instead, IT Craft developers had to study the source code and design a new architecture.

  • Lack of documentation

    Another downside of COBOL is its self-documentation feature. It is very convenient when quickly figuring out what the source code does then provide hot fixes. However, it turned out that no description process was available, thus adding to the entire scope of modernization work.

  • Requirements and changes

    IT Craft developers transfer functionality to a new platform and add new features based on stakeholders’ recommendations. Because no person knows the entire process—employees can describe only their daily routine—the team must refine requirements and implement them accurately to maintain existing workflows.

  • No downtime tolerated

    The client’s business cannot stop for even a minute without facing huge losses. The team introduces new source code, accurately ensuring continued functionality always remains available for the client’s employees. New releases are possible only within strict timeframes when workload is minimal.

  • System compatibility

    No new functions are compatible with the old system. Because of this, developers can only add more functions in the new system. When introducing a new part of source code, the developers must ensure users keep working in the “right” system so no data gets lost after its input.

  • Technical debt

    After so many years of constant updates and changes, the system had accumulated a large volume of unused subprograms, failed features, and system errors. Employees formed specific habits on how to manage those. Developers must keep both system errors and employees’ habits in mind to ensure the new system would behave as per employees’ expectations after an update.


The old functionality remains in production until the new functionality is tested, approved, and the team thoroughly checks that it creates no churn. The team especially focuses on data security, system performance, and zero downtime.

Main solutions for technological challenges include:

  • Transition to a new tech stack
  • Data integrity
  • Chain of responsibility
  • Decomposition and requirements management
  • Technological enhancements
  • Infrastructure updates

Engineering wins

Regular system support and project progress have become possible with systematic transition from COBOL to .NET.

Modernization has made it possible to:

  • streamline workflow
  • get rid of old errors
  • automate processes covering new activities, e.g., billing, warehouse, etc.

There have been several engineering wins on the project. Here are only a few:

  • Minimal interventions to new source code

    The team provides only slight updates and improvements to the SPAs it has already deployed.

  • New functionality

    The old COBOL remains intact. All new functionality is deployed for the new .NET-based system. This makes enhanced UX possible. System improvements can be delivered.

  • Synchronization of two systems

    The team has synchronized data processing for both systems working in parallel in the same database. In addition, data locks ensure users do not wipe out each other’s edits in the system when working with certain data.

  • System optimization

    Apart from simplified maintenance, the new system is the key to further process automation and decreased costs. With the transfer to new infrastructure, the team has reduced IT costs by 50%, improved development productivity by 26%, increased system performance by 15%, and more.

  • Continuous monitoring of system health

    The team uses utilities to administer builds, tests, etc. Another utility software logs all user activities in the system saving developers’ time on investigations. There is also software that aggregates all server metrics and makes it possible to set up alerts on certain events ensuring no emergencies remain unnoticed.


  • 1

    Project Manager

  • 6

    full-stack developers

  • 2

    Quality assurance engineers


  • PostgreSQL logo
  • Fullstack logo
  • NHibarnate logo
  • Angular logo
  • Dapper logo
  • Win services for long-running processes