Project summary: our team had several major tasks. The first task was to develop the solution which allows performing the initial import and following data synchronization from the currently used JDE ERP system to the new eCommerce platform – Magento.
The business model of the customer company assumes that its clients receive different, distinct prices for goods and services. So, our second task was to display prices in a targeted way – own set of prices for each client. Therefore, our solution should also provide an API to get pricing information for each specific client.
The architecture solution includes the following software modules:
- FTP to Staging DB import component
- Data from JDE is uploaded to FTP in form of files with fixed length fields.
- A separate file is created for each customer. Customer ID is specified in file name.
- This module reads files and uploads data to Staging DB.
- Pricing REST API
- This component allows you to get information about prices for a specific customer (and if necessary – for specific SKUs).
- Magento import component
- Synchronizes Staging DB and Magento according to the schedule.
- Synchronization is performed by the incremental method.
Stack: Java SE 8, Mule 4.2 Community Edition.
Infrastructure: Git, Anypoint Studio, Jira, Elasticsearch, Logstash, Kibana.
Frameworks: Spring 5.
Test Automation libraries: MUnit.
DB: MS SQL 2016.
The diagram showing relations in Magento-import-component
The process of importing new records from the DB into Magento is launched daily at a certain time. Initially, the component sends a request with a list of new item numbers to find out which of them should be updated and which should be created. After receiving a reply the process is divided into 2 subprocesses: products update and creation.
- Fixed project duration.
- The decomposition at all levels of the project was done by the JazzTeam engineers based on the business requirements specified in the BRD (Business Requirements Document) which did not contain technical details.
- Mule CE (Community Edition version) was used, additionally, we handled limitations associated with:
- absence of software modules (connectors) from EE version (Encrypted Properties, Transform Message component).
- CE version has a limited set of available Input Stream implementations that creates performance issues in some situations.
- CE has open bugs that were closed in EE version of Mule.
- The team has effectively completed assigned duties, performed its functions.
- All iterations were successful in accordance with estimations and milestones.
The company’s achievements on the project:
- The team has successfully completed the task by implementing an intermediate integration layer, which made it possible to constantly synchronize data between JDE and Magento.
- We actively participated in the stage of integration requirements clarification (file formats, data volumes), suggested ideas for implementation.
- Taking into account our rich Mule expertise, we were able to foresee many potential bottlenecks, complex situations, were taking them into account and immediately “closing” them during the development.
- The team managed to bypass all the limitations imposed by the Community Edition version of the runtime environment and to achieve all the set goals.
- The team has completed the full development life cycle, beginning with the clarification of requirements and system design and ending with the preparation of a complete package of accompanying documentation, support and delivery of the project to the customer.
- The solution has been documented according to SOP (Standard Operating Procedures).
What we did on the project, our responsibilities:
- Configuration of infrastructure and working environment.
- Installation and setting of necessary software.
- Design and creation of StagingDB tables.
- Direct development of all three components.
- Solution documenting.
- Performance of various types of testing by the development team.
- Identification and discussion of requirements directly with the customer.