A non-profit government organization turned to us with a request to automate license sales by using cutting-edge technologies. One of the project’s challenges was to automatically synchronize data with the Legacy business process management system that the organization had used for at least 10 years.
The company specializes in license sales and renewals. Licenses are issued at the client’s request after certain data is provided.
In its early stages, the company serviced all license applications by phone or regular mail, using an obsolete system.
The main task of the project was to automate the payment process and the issuance of licenses to platform users. At the same time, the existing business processes had to be integrated with the site for real-time information exchange.
As part of the project development, the client received the following services:
- Analysis of the existing infrastructure and development of a technology solution for data exchange
- Application development
- Application integration development
- Integration testing with real-time data
The products of the project include:
- Web portal for licensing
- Backoffice UI with reports
- Data exchange integration
- Infrastructure +CI/CD
The development of new software along with the use of existing enterprise solutions often requires following certain processes that are already automated in the system.
It is necessary to understand exactly how data will be used by the integrated system, and how it will be converted and returned.
In our case, part of the well-established system was already automated. This meant we needed to analyze the system’s operation, including its interface and the user’s interaction with the application. We also had to search for dependent reports.
It was necessary to organize data exchange between the databases of two applications, ensuring two outcomes:
- Guaranteed data delivery to another side, even when it is offline.
- Data update on the other side within a few seconds.
These tasks were somewhat complex due to the inability to test real data, as well as a high degree of uncertainty in the analysis of stored data.
The greatest difficulties were caused by two factors:
- Lack of access to the application code forced us to plan integration based on the analysis of data changes by working with the system, and this led to the fact that…
- Not all cases and data representations were taken into account, and the integration had to be modified several times.
Considering the need to perform joint testing of two applications, a project-specific infrastructure, including the client’s server software, was created. At the end of the work, a full cycle of the client’s business processes was tested, with active data synchronization of the two systems.
The Gitlab CI/CD system was applied to improve the processes associated with code delivery.
When developing a general project solution, the structure of the entire project and how users interact with it must be analyzed. This allows for the proper distribution of features throughout the system, and prevents duplication and/or unsatisfactory user experience.
Comprehensive development includes all the activities of planning and creating a solution that allows the integration of all necessary systems, within the framework of achieving project objectives.
Work on such projects is carried out according to the waterfall scheme: The structure and the interface of the project are first determined, followed by development and release.
Identification of Affected Business Processes
An integrated application ensures the execution of the customer’s current business processes and preserves a well-established workflow, while modification of the system leads to changes in the users’ interaction.
The application developed by the Clever team entailed a list of documents and artifacts of an integrated business solution. In particular, the automation of funds acceptance and license issuance took place within the framework of this project.
Once the affected processes were identified, it was necessary to describe them in the clearest manner, in order to prepare the customer and its staff for changes.
The following artifacts were required:
- Business Process Map. The map shows how the company worked before the introduction of changes, and how it will work after changes are made, helping to analyze the affected processes and their dependence on the customer and the solution.
- Engagement Plan. After determining the direction and the endpoint of transformations, a list of individuals or groups to be involved in the implementation and subsequent operation of the solution must be compiled.
- User’s Manuals Update. To ensure that all involved project participants are ready to work, the essence of the changes and role responsibilities must first be described. It is advisable to back up this information with screenshots of the interface and explanations.
- Implementation Requirements. It is very important to identify and agree upon the basic requirements for software implementation. The possibilities of stopping, restarting, and reversing changes in the system must be described from a technical point of view.
Wireframes with 44 layouts were developed. They comply with the required functionality, including:
- Integration with the payment system,
- Portal and Personal Cabinet UI,
- Back Office UI with reporting features.
Website requirements were developed based on the results of Wireframe development. Functional and nonfunctional rules, integrations, and the logic of their work were described in detail.
Requirements for the data exchange module and the integrated system were developed independently. They encompass the following:
- Data Schemes with explanation of Data Types
- Use Cases for the system
In addition to data exchange schemes and change tracking agreements, a general data workaround was developed, taking into account:
- Import Data (Initial Sync)
- Failure Strategy
This allowed for a safe and transparent launch of the working version, with live data in operation.
Analysis of the Existing Infrastructure and Development of a Technology Solution for Data Exchange
When trying to integrate with third-party software, it is necessary to perform a number of simple steps to determine the technical feasibility of integration and acceptable use cases, taking into account the existing restrictions and prescriptions in the system.
If the system is being actively developed or systematically supported, there are often knowledgeable people who can make any necessary clarifications.
If no one is available to clarify, it may be necessary to perform an analysis by means of reverse engineering of the software and its database.
One of the first tasks to be solved when analyzing an existing environment and beginning integration is to understand which test environments are needed to perform a secure debugging of data exchange.
As part of the study, an environment identical to the real one was set up. It became the platform for subsequent development and debugging of the exchange and related business processes.
To make sure the test environment worked just like the production environment, a series of tests were carried out by the customer’s department staff members.
Data Point and Exchange Requirements
Once we had a test environment that was identical to the public one, we began to investigate how the current solution is used, and what data it stores and changes when interacting with users.
As a result of the investigation, we established requirements for the exchange module, including:
- Development Requirements
- Data Scheme for all Exchange Functions,
- Exchange Data Storage and Import/Export requesting,
- Synchronization Access Rights and Credentials,
- Synchronization Scheduling,
- Failure Mitigation Strategy.
Technical stack development of the project involves deciding on the technical feasibility of the project and determining the method of achieving the objectives of the project in technical terms.
When forming the technical stack of the project, it was necessary to take into account:
- The number and the purpose of project environments
- The structure of the environments and their connections
- The types of hostings and their cost
- Additional parts of the system and their structure
- Methods for migrating code and data between environments
- The availability of a CI/CD platform
It is also worth taking into account the availability of resources and their levels, as well as the experience of the teams involved in the project.
In our case, the set for providing one environment contained:
- MSSQL, RDP server
- MongoDB Server
- Front and Control Panel ANT DESIGN + React JS
- Node JS server
While working on an application, developers often change the system. Edits are made dozens of times per day.
We needed a way to find out whether the system would work well after corrections. When working with one server, code can be updated and results revealed within a few seconds. But when working with 3 environments, with 4 systems in each environment, updating them manually becomes a labor-intensive process.
Using an automated system to update code and databases can minimize the time of code deployment.
The applied CI/CD system allowed us to fully automate code delivery using a user-friendly interface.
Application testing and launch
Since the endpoint of using our application was integration with live data, we had to know how data would be affected during the launch process, or during any related activities in the development lifecycle.
After sanity checks, while testing applications in development and production environments, we experienced several rollbacks. Further analysis pointed to additional issues, mostly related to differences between user environments, that needed to be resolved. Since users constantly remained in the system, it was extremely challenging for us to run imports and checks.
A testing system was developed to make sure the user environment continued to work normally and its functionality would not be affected.
The testing system included:
- Client’s application testing
- Developed user and backoffice interface
- Data Import testing
- Exchange testing and monitoring
- Overall Cycle Testing
All these activities were united into a Deployment Plan with a series of tests and scheduled actions.
Finally, after passing all the checks, the system was launched.
As a result of the entire complex of work on the project, the client received:
- Automation of payment and licensing
- Real-Time Exchange, with identical data in the applications
- Scheduled application launch
- CI/CD system and monitoring tools