A QUICK SUMMARY – FOR THE BUSY ONES
TABLE OF CONTENTS
Imagine a company that has been using a web application for their customer relationship management (CRM) system for many years. The application was developed a decade ago using outdated technologies and has become cumbersome to maintain and difficult to scale. Users have been complaining about its slow response times and lack of modern features.
Time to modernize, don’t you think? In that case, modernizing the app would save time and money for the company, as well as improve user experience, finally increasing the conversion rate.
Sometimes small but crucial changes are enough.
For many companies, modernization doesn’t mean replacing but updating the current system.
It’s often understood as:
What’s crucial, modernization has to provide value to your organization. So don’t follow the hype - analyze. First, check out if you have one of the problems modernization solves.
Companies decide to modernize their apps to:
Need a more vivid explanation?
Many large enterprises still rely on legacy mainframe systems to run critical applications. To modernize these systems, they may:
On the other hand, companies often have older mobile applications that were developed using outdated frameworks or technologies. To modernize such apps, they may:
That’s a lot of steps to take. The process seems intimidating. But is it really?
As reports state, the biggest barrier is resistance to change. It’s often caused by the lack of skilled resources. Resistance to change is also one of the most common challenges during the modernization process. Other barriers are connected to difficulty with determining the right approach, budget, and time constraints.
If you also struggle to start, you have three paths to take:
FIRST: Don’t modernize. But don’t choose that path if you see value in modernizing.
SECOND: Modernize in-house. You can do the modernization with your own team - to do that successfully, read on to prepare for the potential challenges.
THIRD: Use the help of an external partner. You can use the help of the app modernization services provider. According to the previously mentioned report, 30% of modernizations are done completely by external partners, and 39% - by in-house staff led by external partners. SO nothing to be ashamed of. To find the best partner, check rankings or talk to our team - maybe we’ll be the perfect fit for your case.
Time to analyze eight most common challenges connected to legacy app modernization.
Legacy applications often have intricate architectures and interdependencies. Untangling these complex structures to modernize the app can be time-consuming and error-prone.
Coping with the complexity and dependencies challenge during legacy app modernization requires a systematic and careful approach.
Let’s analyze a legacy ERP system modernization as an example.
Imagine a company that has been using a legacy Enterprise Resource Planning (ERP) system for many years to manage various business processes like finance, inventory, and human resources. The ERP system was developed using multiple technologies, including a mix of Java, COBOL, and proprietary databases. The application's architecture is tightly coupled, with complex dependencies among different modules.
1. Comprehensive assessment:
The first step is to conduct a comprehensive assessment of the existing ERP system. This assessment involves analyzing the application's codebase, architecture, data structures, and interdependencies among modules. The goal is to gain a clear understanding of the system's complexities and potential challenges.
2. Identify critical dependencies:
Identify the critical dependencies that need to be addressed during modernization. Understand which modules are most interconnected and may have the highest impact on other components when changed.
3. Prioritize modules for modernization:
Based on the assessment and identified dependencies, prioritize the modules that need modernization. Consider factors such as business importance, technical feasibility, and the potential for reducing overall complexity.
4. Breakdown monolithic architecture:
To reduce complexity, consider breaking down the monolithic architecture of the ERP system into more manageable microservices. This will allow independent development and deployment of individual components, reducing the impact of changes and making the system more adaptable.
5. Refactor and clean up code:
Perform code refactoring and clean up to improve the codebase's readability, maintainability, and understandability. Eliminate redundant code and standardize coding practices to reduce complexity.
6. Introduce integration layers:
Introduce integration layers or APIs to handle interactions between different modules. This allows modules to communicate in a standardized manner, reducing tight coupling and simplifying future changes.
7. Adopt modern technologies:
When modernizing, consider using more up-to-date technologies and frameworks that offer better support for modularity and flexibility. Migrating to a modern programming language or database system can simplify development and maintenance.
8. Test rigorously:
Develop a comprehensive testing strategy to ensure that the modernized modules work correctly, both in isolation and when interacting with other components. Use automated testing to catch potential regressions and ensure system stability.
9. Incremental modernization:
Consider adopting an incremental modernization approach, where you modernize one module at a time, ensuring each module functions correctly before moving on to the next. This helps mitigate the risk of system-wide failures during the modernization process.
10. Document changes and dependencies:
Thoroughly document the changes made during modernization, including updated dependencies, interfaces, and integration points. This documentation will be invaluable for future maintenance and troubleshooting.
Finding developers with expertise in both the legacy technologies and modern technologies required for modernization can be a challenge. Approach it by a combination of hiring new talent and upskilling existing employees.
Let’s take a look at the example of a company from an edtech industry that wants to modernize their legacy Learning Management System (LMS).
A company offers an online Learning Management System (LMS) to educational institutions. Over time, their legacy LMS has become outdated, leading to performance issues and limited functionality. They decide to modernize their LMS to stay competitive in the market and provide a better user experience for students and educators. However, their development team faces a skill gap, lacking expertise in modern technologies and app modernization.
Here's how they cope with this challenge:
1. Training and upskilling:
The company invests in comprehensive training programs for their development team. They enroll team members in workshops covering modern technologies like cloud computing, microservices, and the latest frameworks used in LMS development. As team members gain new skills, they apply them to the modernization project.
2. Hiring new talent:
To complement their existing team's skill set, the company hires experienced developers with expertise in LMS development and modernization. These new team members bring valuable insights and industry best practices, contributing to the success of the modernization effort.
3. Cross-functional collaboration:
The company fosters cross-functional collaboration among team members. Experienced developers partner with junior members during the modernization process. They engage in pair programming sessions, enabling junior developers to learn from their more experienced colleagues.
4. Mentorship and pair programming:
They pair junior developers with senior mentors. The mentors provide guidance, share best practices, and review code, accelerating the learning curve for the junior developers and enhancing the team's collective expertise.
5. External consultants or contractors:
To address specific modernization challenges, the company collaborates with external consultants specializing in LMS development and modernization. These consultants work closely with the team, offering guidance on critical aspects of the modernization project.
6. Proof of Concept (POC) projects:
To build confidence and experience, the company initiates small-scale Proof of Concept projects. They experiment with modernization techniques and assess the feasibility of different approaches. The insights gained from POCs inform their larger modernization strategy.
7. Vendor collaboration:
The company engages with technology vendors who offer modernization tools and services tailored to the edtech domain. Vendors provide specialized training and workshops, enriching the team's understanding of edtech-specific modernization challenges.
8. Documentation and knowledge sharing:
Throughout the modernization project, the development team diligently documents their progress, challenges faced, and lessons learned. This documentation becomes a valuable resource for future projects and for onboarding new team members.
9. Gradual modernization:
The company adopts a gradual modernization approach, starting with less complex components of their LMS, such as user interfaces. They progressively move on to more intricate functionalities. This approach allows the team to learn and gain confidence as they advance.
Some legacy applications may be tied to specific hardware or infrastructure that complicates the modernization process.
Coping with the challenge of legacy hardware and infrastructure during modernization requires careful planning and consideration of various approaches. Let's explore how to address this challenge through an example of a company modernizing an old Point-of-Sale (POS) System.
A retail company has been using a legacy point-of-sale (POS) system for many years. The system is tightly integrated with specific hardware, such as barcode scanners, receipt printers, and cash drawers. The current POS software is outdated, lacks modern features, and is difficult to maintain. However, replacing the hardware is not immediately feasible due to budget constraints.
1. Identify critical hardware dependencies:
The first step is to identify critical hardware dependencies that the existing POS software relies on. The company needs to determine which hardware components are crucial for the system's core functionality.
2. Evaluate compatibility and upgrades:
Next, they evaluate the compatibility of the existing POS software with modern hardware alternatives. They check if there are newer versions of barcode scanners, receipt printers, or cash drawers that are compatible with the legacy software. Upgrading some hardware components might be possible without a complete overhaul.
3. Consider middleware integration:
To bridge the gap between the legacy software and modern hardware, they consider using middleware or adapter solutions. Middleware can act as a mediator, enabling communication between the old POS system and new hardware. This approach allows the legacy system to continue functioning while gradually integrating modern devices.
4. API integration and web services:
The company explores the possibility of adding API integrations or web services to the existing POS system. This approach enables the legacy software to interact with modern web-based applications, facilitating integration with newer hardware and functionalities.
5. Implement software emulation:
In cases where the existing POS software is highly dependent on proprietary or obsolete hardware, software emulation can be a viable solution. Software emulation mimics the behavior of the hardware, allowing the legacy application to run on modern, more readily available hardware.
6. Gradual modernization:
The company chooses a gradual modernization approach, where parts of the legacy POS system are incrementally replaced with modern solutions. They start by updating the user interface and backend functionalities while maintaining compatibility with existing hardware. As budget constraints ease, hardware upgrades can be pursued.
7. Cloud-based solutions:
They decide to move certain components of the POS system to the cloud. Cloud-based solutions can reduce hardware dependencies and provide more flexibility in terms of hardware choices.
8. Plan for long-term replacement:
Although addressing hardware dependencies in the short term is essential, the company creates a long-term plan for eventually replacing the legacy hardware as budget and resources allow. This plan aligns with the overall modernization strategy.
Modernization can potentially disrupt business operations, especially during the transition phase, leading to downtime or temporary loss of functionality.
Coping with the risk of business disruption during modernization in the fintech industry requires careful planning, testing, and communication to ensure a smooth transition.
Let's explore how a fintech company that was looking to modernize their mobile payment app could address this challenge through an example:
A fintech company operates a mobile payment app that allows users to make transactions, transfer money, and manage their finances. The app has grown in popularity, but it's running on an outdated technology stack, leading to occasional service outages and performance issues. The fintech company decides to modernize the app to improve reliability, security, and user experience. However, they are concerned about the potential risk of business disruption during the transition.
1. Comprehensive risk assessment:
The fintech company conducts a thorough risk assessment, identifying potential points of disruption in the modernization process. They assess possible scenarios that could lead to downtime, payment processing errors, or data integrity issues.
2. Create a staging environment:
To mitigate the risk, the fintech company creates a staging environment that replicates the production environment of the mobile payment app. The staging environment allows them to test the modernized app and its functionalities in a controlled setting without affecting the live app.
3. Pilot program with limited user base:
Before rolling out the modernized app to all users, the fintech company runs a pilot program with a limited user base. They select a subset of users who opt-in to try out the new version of the app. This approach allows them to gather feedback, identify potential issues, and make necessary adjustments before a full-scale deployment.
4. Incremental rollout:
Instead of deploying the modernized app to all users at once, the fintech company opts for an incremental rollout. They release the new version of the app in stages, targeting specific geographic regions or user segments. This approach helps minimize the impact of any unforeseen issues and allows the fintech company to address problems swiftly.
5. Monitor and test in real-time:
During the transition, the fintech company closely monitors the performance of the modernized app in real-time. They use monitoring tools to track key metrics such as response times, error rates, and user engagement. Additionally, they continuously test the app's functionality and integrations to ensure that everything works as expected.
6. Provide customer support and communication:
The fintech company provides dedicated customer support to assist users during the transition. They establish a support hotline or chat system to address any issues or questions users might have. Moreover, they communicate proactively with users, informing them about the upcoming changes and potential temporary disruptions.
7. Contingency plan:
The fintech company develops a contingency plan to handle any unexpected issues that may arise during the modernization process. This plan outlines steps to revert to the previous version of the app quickly if needed, minimizing any extended periods of disruption.
The cost of modernization projects can be substantial, and organizations might face budget constraints when allocating resources to upgrade legacy applications.
Coping with the challenge of cost and budget constraints during application modernization in the healthcare industry requires careful financial planning, prioritization, and innovative approaches to optimize resources.
Let's explore how a healthcare organization could address this challenge through an example of modernizing their Electronic Health Records (EHR) System.
A mid-sized healthcare facility currently uses an outdated and cumbersome Electronic Health Records (EHR) system. The healthcare facility recognizes the need to modernize the EHR system to improve patient care, streamline workflows, and enhance data security. However, they are constrained by budget limitations and must find cost-effective ways to proceed with the modernization.
1. Conduct a cost-benefit analysis:
The healthcare facility begins by conducting a detailed cost-benefit analysis of the EHR modernization. They assess the potential benefits of the modernization, such as improved efficiency, reduced errors, and better patient outcomes, against the associated costs, including software licenses, hardware upgrades, and training expenses.
2. Prioritize modernization components:
Based on the cost-benefit analysis, the healthcare facility identifies and prioritizes the key components of the EHR system that require modernization the most. They focus on areas that directly impact patient care, regulatory compliance, and data security, and postpone non-critical updates to a later phase.
3. Explore open-source solutions:
To minimize licensing costs, the healthcare facility explores the possibility of using open-source EHR software. Open-source solutions often have a lower upfront cost and can be customized to meet specific healthcare facility requirements. However, they may require more in-house expertise for implementation and maintenance.
4. Cloud-based deployment:
The healthcare facility considers a cloud-based deployment model for the modernized EHR system. Cloud solutions can reduce upfront infrastructure costs, as they often operate on a pay-as-you-go basis. Additionally, cloud providers handle maintenance and updates, further reducing operational expenses.
5. Partner with technology vendors:
The healthcare facility partners with technology vendors that offer flexible pricing models, such as subscription-based plans or installment payments. This arrangement allows them to spread the modernization costs over time, easing the burden on their budget.
6. Implement modular modernization:
Instead of a complete overhaul, the healthcare facility implements a modular modernization approach. They divide the modernization project into smaller, manageable phases, focusing on one module or functionality at a time. This staged approach enables them to budget and allocate resources more efficiently.
7. Invest in training and change management:
To maximize the benefits of the modernized EHR system, the healthcare facility invests in comprehensive training for staff members. Proper training ensures that healthcare professionals can effectively use the new system, minimizing the risk of operational inefficiencies and costly errors.
8. Leverage existing infrastructure:
The healthcare facility leverages existing infrastructure wherever possible to reduce costs. They assess whether certain hardware components can be repurposed or upgraded rather than replaced entirely, as long as they meet the modernization requirements.
Modernizing an application requires time and effort, which can be challenging when there are strict deadlines for delivering new features or updates.
Coping with the challenge of time constraints during application modernization requires a strategic approach that balances the need for modernization with the urgency of delivering critical services.
Let's explore how a healthcare organization could address this challenge through an example of modernizing a Hospital Information System (HIS).
A large healthcare organization operates a legacy Hospital Information System (HIS) that manages patient records, medical billing, and appointment scheduling. The system is becoming increasingly outdated and poses security risks. However, the healthcare organization faces strict regulatory deadlines for meeting compliance requirements and delivering critical patient care services.
1. Prioritize modernization efforts:
The healthcare organization conducts a thorough assessment of the HIS and identifies the most critical areas that require modernization. They prioritize updates based on factors such as security vulnerabilities, compliance needs, and the impact on patient care. By focusing on the most critical aspects first, they can begin the modernization process while addressing immediate concerns.
2. Adopt an Agile approach:
To accommodate time constraints, the healthcare organization adopts an agile development methodology for the modernization project. The agile approach allows for incremental development and frequent iterations, enabling them to deliver new features and updates in smaller, manageable phases.
3. Engage in collaboration and communication:
The modernization project involves close collaboration and communication among various stakeholders, including IT teams, healthcare professionals, compliance officers, and administrators. Regular meetings, feedback sessions, and status updates ensure that everyone is on the same page, and any potential roadblocks are addressed promptly.
4. Consider cloud solutions:
To expedite the modernization process, the healthcare organization explores the possibility of adopting cloud-based solutions. Cloud-based HIS platforms often offer pre-built modules and functionalities, reducing the development time required for certain features. Additionally, cloud solutions can be scaled more easily to meet growing demands.
5. Leverage external expertise:
The healthcare organization may consider partnering with external technology vendors or consultants who specialize in HIS modernization. External expertise can accelerate the process by providing specialized knowledge, best practices, and tools that have been tested in similar healthcare environments.
6. Use pre-built components and APIs:
Where possible, the healthcare organization leverages pre-built components, APIs, and third-party integrations to speed up development. Using well-established solutions allows them to focus on customizing and adapting these components to their specific needs, rather than building everything from scratch.
7. Conduct user training concurrently:
As the modernization progresses, the healthcare organization conducts user training concurrently. This ensures that healthcare professionals and staff are familiar with the updated HIS functionalities, even before the full deployment. Training sessions can be tailored to fit the incremental releases and allow users to gradually adapt to the changes.
During the modernization process, security vulnerabilities might be introduced if not properly addressed, putting sensitive data at risk.
Coping with the challenge of security concerns during application modernization in the fintech industry requires a comprehensive and proactive approach to identify and mitigate potential vulnerabilities.
Let's explore how a fintech company could address this challenge through an example of modernizing a mobile banking app.
A fintech company operates a mobile banking app that allows users to manage their finances, transfer funds, and perform various transactions. The app has been in use for several years and is due for modernization to enhance security features and user experience. However, the fintech company is concerned about the potential introduction of security vulnerabilities during the modernization process.
1. Conduct a security audit:
Before embarking on the modernization project, the fintech company conducts a thorough security audit of the existing mobile banking app. This audit identifies potential security weaknesses, vulnerabilities, and areas that require improvement. The findings serve as a baseline to guide security measures during the modernization.
2. Implement secure development practices:
Throughout the modernization process, the fintech company ensures the adoption of secure development practices. This includes adhering to secure coding standards, conducting code reviews, and performing static and dynamic code analysis to identify and fix security flaws.
3. Utilize security frameworks and libraries:
The fintech company leverages well-established security frameworks and libraries during the modernization process. These frameworks, such as OWASP (Open Web Application Security Project) libraries, help address common security issues and provide a solid foundation for secure development.
4. Integrate security testing:
Incorporating security testing into the development lifecycle is crucial. The fintech company conducts regular security testing, including penetration testing, to identify and address vulnerabilities in the modernized mobile banking app. This helps ensure that security considerations are an integral part of the development process.
5. Enforce access controls and authentication:
The modernized mobile banking app implements robust access controls and authentication mechanisms. This includes multi-factor authentication, strong password policies, and session management to prevent unauthorized access and protect user accounts.
6. Encrypt data at rest and in transit:
To safeguard sensitive data, the fintech company ensures that data is encrypted both at rest and in transit. Encryption ensures that even if data is compromised, it remains unreadable and secure.
7. Regular security updates and patching:
After deployment, the fintech company remains vigilant about security by providing regular security updates and patching any identified vulnerabilities promptly. They monitor security news and industry alerts to address emerging threats effectively.
8. Ongoing security training and awareness:
The fintech company invests in continuous security training and awareness programs for their development teams and employees. Educating staff about the latest security best practices helps create a security-conscious culture throughout the organization.
The modernized application must seamlessly integrate with other existing systems and third-party applications, which can be challenging due to differences in technologies and interfaces.
Coping with the challenge of compatibility issues during application modernization in the education industry requires careful planning, standardization, and the use of integration technologies to ensure smooth interoperability.
Let's explore how an educational institution modernizing their Learning Management System (LMS) could address this challenge.
An educational institution currently uses a legacy Learning Management System (LMS) that has limited features and lacks compatibility with other systems and tools used in the institution. The institution decides to modernize the LMS to provide an enhanced learning experience for students and educators. However, they face compatibility challenges with existing systems and third-party applications used in the institution.
1. Conduct a system inventory and analysis:
The educational institution starts by conducting a comprehensive inventory and analysis of existing systems and applications used across the institution. This includes other educational software, student information systems, gradebooks, and third-party tools integrated into the learning environment.
2. Identify integration points:
Based on the system inventory, the institution identifies critical integration points where the modernized LMS needs to seamlessly interact with other systems and applications. These integration points could involve data exchange, user authentication, or content sharing.
3. Adopt standardized data formats and APIs:
To ensure compatibility and smooth integration, the institution adopts standardized data formats and APIs (Application Programming Interfaces) that facilitate communication between different systems. Using industry-standard formats and APIs helps overcome technology differences and streamlines integration efforts.
4. Implement middleware or integration platform:
The institution considers implementing middleware or an integration platform to bridge the gap between the modernized LMS and other systems. Middleware can act as a mediator, translating data and requests between different systems, ensuring seamless data flow.
5. Collaborate with third-party vendors:
If third-party applications used in the institution present compatibility challenges, the educational institution collaborates with vendors to find solutions. This may involve custom API development, data mapping, or exploring alternative integration methods provided by the vendors.
6. Conduct pilot testing and user feedback:
Before fully deploying the modernized LMS, the institution conducts pilot testing with a selected group of users. This allows them to identify any integration issues or incompatibilities early on and gather valuable user feedback for improvements.
7. Provide user training and support:
During the transition to the modernized LMS, the institution provides comprehensive user training and ongoing support to educators, students, and staff. Proper training ensures that users understand the new system and its integration with other applications.
8. Monitor and optimize integration performance:
After deployment, the educational institution continuously monitors the integration performance and data flow between the modernized LMS and other systems. They identify and address any performance bottlenecks or compatibility issues to optimize the integration's efficiency.
Application modernization in the context of fintech legacy systems comes with its unique set of challenges. These challenges often stem from the complex nature of financial services, the critical importance of data security and compliance, and the need for high reliability and performance. Here are some key challenges:
Data security and privacy
Ensuring that modernized systems adhere to stringent data security standards, like PCI-DSS for payment processing, is crucial. Protecting sensitive financial data during and after the transition is a major challenge.
Fintech operates in a highly regulated environment. Any modernization effort must ensure continued compliance with existing regulations (like GDPR, SOX, etc.) and be adaptable to new regulations.
System complexity and integration
Legacy systems in fintech are often complex, with many interdependencies. Modernizing these systems without disrupting existing integrations and operations is challenging.
Downtime and service continuity
Minimizing downtime during the modernization process is essential to maintain service continuity, as fintech services are expected to be available 24/7.
Legacy data migration
Migrating data from legacy systems to modern platforms is a significant challenge, especially considering the volume, variety, and sensitivity of financial data.
Improving the user experience while maintaining familiarity for existing users and ensuring that new systems are user-friendly and accessible.
Technical skill gaps
Modernizing legacy systems often requires skills in newer technologies that existing teams might not possess, leading to a need for training or hiring new talent.
Cultural and organizational change
Managing the cultural and organizational changes that come with modernizing systems, including training employees and modifying business processes.
Modernizing legacy systems in hospitals presents a unique set of challenges, primarily due to the critical nature of healthcare services, the sensitivity of patient data, and the need for uninterrupted service delivery. Here are some of the key challenges:
Data security and privacy
Ensuring robust data security and privacy is paramount, especially given the sensitive nature of health records. Compliance with regulations like HIPAA in the U.S. is a significant challenge during modernization.
Many hospital legacy systems lack interoperability. Modernization needs to ensure that new systems can communicate with each other and with existing legacy systems, facilitating seamless data exchange.
Minimizing downtime is crucial as healthcare services are essential and often life-critical. Ensuring service continuity during the transition is a major challenge.
Migrating patient data from legacy systems to new platforms is challenging, particularly in ensuring data integrity and accuracy.
Healthcare is a highly regulated industry. Modernized systems must comply with various healthcare standards and regulations, which can vary by region.
User training and adaptation
Healthcare professionals accustomed to legacy systems may require significant training on new systems. Ensuring smooth adaptation to modernized systems is a challenge.
Vendor lock-in risks
Avoiding vendor lock-in with new systems, ensuring that the hospital isn’t overly reliant on a single vendor for critical systems.
Integration with emerging technologies
Integrating modern systems with emerging technologies like telemedicine, AI, and IoT devices, which are becoming increasingly important in healthcare.
The team should be proficient in programming languages relevant to the legacy application and the technologies chosen for modernization.
Familiarity with modern frameworks and libraries suitable for the modernization process is necessary to improve application performance and maintainability.
Understanding the existing application's architecture and being skilled in designing scalable, maintainable, and secure architectures for modernization.
Expertise in database management and optimization to handle data migration and ensure data integrity during modernization.
Security expertise: Ensuring that security concerns are addressed throughout the modernization process, including securing data, user authentication, and protection against vulnerabilities.
Capabilities in integrating the modernized application with other systems and developing APIs to facilitate smooth data exchange.
Proficiency in automated testing to identify issues early in the development process and maintain the application's reliability.
Familiarity with cloud platforms and services, as modernizing legacy apps may involve migrating to cloud environments.
Experience with version control systems to manage code changes and collaboration effectively.
Specialized knowledge of the legacy system's technologies, codebase, and dependencies, as well as how to migrate and update them.
To be successful with your modernization and avoid problems related to challenges mentioned above, you need to carefully plan the process.
Every year, Brainhub helps 750,000+ founders, leaders and software engineers make smart tech decisions. We earn that trust by openly sharing our insights based on practical software engineering experience.
Software development enthusiast with 6 years of professional experience in the tech industry.
Popular this month
Get smarter in engineering and leadership in less than 60 seconds.
Join 300+ founders and engineering leaders, and get a weekly newsletter that takes our CEO 5-6 hours to prepare.
previous article in this collection
It's the first one.
next article in this collection
It's the last one.