Development of a popular ERP product, customer consulting and system project transformations

Project description

Another project, in which JazzTeam engineers are participating, is an international B2B software platform for inventory and order management. It is intended for distributors and wholesalers, as well as for e-commerce. The basic configuration of the product includes:

  • An adaptable workflow for any order management model.
  • The ability to process and invoice for multiple orders in 8 clicks.
  • An advanced real-time inventory tracking system.
  • Supply chain visibility.
  • Sales forecast tracking.
  • Multicurrency.
  • Online payment processing.
  • Any type of reporting.
  • Integration with major trading systems (Amazon, eBay, Alibaba, etc.).
  • Scalability and customization.
  • Plugin system.

The project includes several subprojects:

  1. Consulting for stakeholders and technical leaders.
  2. Complete CI/CD Implementation.
  3. Migration from .NET to Java.

Technologies

Stack: Java 7/8, Java Servlet & JSP, Apache Tomcat, MySQL, JDOM, REST API, XML/XSLT.
Frameworks: Avalon Framework, XML-RPC, dbPool, JasperReports, MyFaces, JavaMail, PD4ML, PayPal, Gdata, jQuery Mobile.
Architecture: Model-driven development, event-driven architecture, CI/CD.
Testing (integration and load): JUnit+own framework.
Infrastructure: AWS, Bitbucket, Jenkins, Liquibase, CloudWatch.

Project features

The history of the project goes back to the early 2000s. At that time, quite a successful architecture, based on XML modeling of business processes and entities, was designed. This architectural concept withstood the test of time, as well as scaling the product to millions of completed transactions and providing access to hundreds of customers.
JazzTeam engineers joined the project in 2019. By this time, numerous technical debts and shortcomings appeared in the project, which blocked the obvious advantages of the established architecture:

  • a system with a lot of functionality and modules is very difficult to scale;
  • in the absence of automated testing, it is impossible to control the stability of the product;
  • attempts to make changes and develop the product lead to release delays and bugs in the production stage, which negatively affect the reputation of the customer;
  • development and delivery processes are intense and stressful for all participants.

On this project, JazzTeam company acted simultaneously as:

  • the stakeholders consultant — to establish processes and improve product quality;
  • the core workforce in an internationally distributed development team;
  • the provider for guidance and mentoring to the entire development team;
  • the initiator and implementer of closing the following technical debts:
  • abandoning the .NET layer;
  • complete CI/CD implementation;
  • a complete business analysis process implementation;
  • implementation and maintenance of QA Automation on the project;
  • implementation and development of Unit-tests, including Blackbox testing.

Project results

In terms of the incremental evolution of the product’s functionality — JazzTeam engineers have developed and delivered dozens of new epics and user stories. At the same time, a deep refactoring of the existing code was carried out and the coverage of the developed functionality with tests (GUI autotests and unit tests) was provided.

In terms of consulting — partnership relations with the project stakeholders were established, the structure and processes in the development team were reorganized. Also, Agile development principles were implemented and maintained, and a transparent reporting process was provided (incl. financial).

In terms of closing the technical debts — a product version without the .NET layer was implemented. It allowed the team to focus on the Linux platform, thereby significantly reducing the cost of hosting and technical support. Complete CI/CD processes were implemented, which accelerated the frequency of product delivery and improved the quality of delivered functionality.

Company’s achievements on the project

We have implemented a full-fledged QA phase (testing, quality assurance) in the life cycle of the project. Before JazzTeam came in, testing on the project was done spontaneously, with the role of QA performed by the developers themselves and one of the product owners.

JazzTeam representatives analyzed the current quality of product development, the composition and speed of the team and other criteria. Based on our findings, we advised the product owners to add several professional QA and QA Automation engineers from JazzTeam employees to the team. The offer was approved, and after a few months it became obvious how the quality of the product had improved.

The process of requirements analysis and task setting was improved. We have assigned a Business Analyst to the project with expertise in the areas relevant to this project. A business analysis phase was introduced, as well as direct communications between the BA and the product partners. As a result, we got a clear statement of tasks for developers, including DoD (Definition of Done) and Acceptance Criteria. This significantly reduced the functionality development time and improved the quality of the final product.

The task estimation process (estimate) was implemented. We have introduced an analysis of the potential labor costs for each project task, which is mandatory for the developers. It requires them to break down their tasks into subtasks and take into account the risks (see below). The availability of labor cost estimates allows you to streamline the development planning process, and to make planning more transparent to all team members and stakeholders.

A risk analysis also occurs during the estimation of tasks. At the end, we get a reasoned estimate based on risk analysis results. It allows the product owners to see an objective picture of labor costs, take steps to possibly reduce risks and optimize development costs.

An Agile-transformed development process was implemented. We introduced agile development rituals that were missing on the project:

  • Daily stand-ups for a geographically distributed team. By doing this, we raised the level of synchronization between all team members, reduced misunderstandings, and, yes, the guys just began to communicate more and help each other.
  • Retrospectives — once again, an occasion to relax, to tell your experiences, to improve your processes, to emphasize obvious problems.
  • Demonstration — we make a presentation of each feature and show it to the whole team. Because of this, testing became more comfortable for QA engineers, and the documentation is easier to write.
  • Sharing knowledge among the team — lectures/mitaps on technological moments or domain expertise.

To perform automatic builds, regular quality checks and product deliveries, we implemented CI/CD. The project uses partial code generation from templates. The code generator was originally not optimized for automatic building of the project with Maven. The team did a deep refactoring of the project core to exclude manual building.

A framework for writing BlackBox-tests has also been created. These tests are written by the developers themselves and allow them to check the complex chains of actions of the system. While doing this, there is no need to dive deep into the internal structure of the code. Tests run as part of regular project builds: on schedule and on demand.

All new code and most changes to existing code are covered by Unit-tests. Legacy code is regularly refactored so that it can be covered by tests.

Complete and regular coverage of almost all system functionality by GUI-autotests. We have created a framework for quickly writing and supporting a lot of GUI-autotests at minimal cost.

We have redesigned the product’s frontend switching it from the .NET to Javascript. As a result, the project has become detached from Windows hosting.

The UI and usability of the product have been refreshed considerably – the users and stakeholders have been satisfied.

Screenshots







    Contact Us

    Name:

    Email: *

    Message: *

    I agree to Privacy Policy

    What happens next?

    1 Leave your project request. We will contact you and schedule a call.
    2 Signing of the NDA to ensure the project info confidentiality.
    3
    Negotiation of your request and the required services.
    4 Team forming, coordination of workstages.
    5 Contract signing and project start.