Summary

Industry: HR Tech, Finance, Project Management.
Location: UK-headquartered, with 4 R&D offices in Eastern Europe.
Project duration: 2014-2017 – early development/MVP; 2018-2022 – rebuilding the solution into an ecosystem with microservice architecture.
Size of the project team: 9 experts
Software product: An HR ecosystem.
Expertise delivered: Web development services, custom software development, software support, maintenance, brand-new features implementation, discovery phase, and design.

Don't have time to read?

Book a free meeting with our experts to discover how we can help you.

Book a Meeting

Challenge

SPD Technology is a 600-strong custom software development company that was founded in 2006. Within 8 years following the company’s founding, the number of its employees had increased from the initial 7 to 90 people, making it hard to manage the performance and monitor the statuses and progress of each individual employee. The first attempt to create an automated solution that would replace spreadsheets took place in 2014.

We created a basic software called TimeTracker that provided only the essential functions, including a user profile, a project profile, and a time-tracking capability.

However, in 2018 the number of SPD Technology’s employees exceeded 300 experts, with some of them working in parallel on multiple projects with different budgets. It became obvious that a more powerful solution was required.

SPD Labs, our product development team, took over the legacy monolithic solution TimeTracker and reworked it into a new one, SPD Portal. The goal was to redesign the architecture, create a new UX/UI, and, eventually, build a new corporate HR ecosystem, bringing maximum transparency and traceability to the organization. We needed to ensure the tool’s scalability and allow for future growth by implementing a microservice architecture.

SPD Portal is an HR ecosystem with microservice architecture that includes such modules as the Users, Projects, Working Time Tracking, Financial Reports, Career Path and Competency Matrix, Calendar, Company Hierarchy, Company News Feed, Reminders and email Notifications.

The user can access all the company’s internal resources through the SPD Portal main page, on which they are represented by widgets view. Therefore, the user can gain access to all the important links in a single place, as well as add custom links.

The solution provides flexible role and permission management functionality that can be easily adjusted from the application’s UI without having to change the code.

As of February 2023, SPD Portal is used in all internal processes of SPD Technology, serving the needs of a company with 610 employees and 100+ projects.

TimeTracker Interface

Solution

The project scope included the discovery phase, design, and web development services.

The main reason for developing the new corporate HR System was that it was vital to the needs of the Finance department. The initial version allowed the users to edit the information they had entered in forms previously. Initially, the system didn’t store any history of changes. Any user could edit their data anytime, making it impossible to figure out what exactly happened in case their financial statements did not converge. As a result, the same reports generated on different days could contain different numbers, and one couldn’t find out the reason for this.

Besides, it was necessary to enable the solution to provide detailed statistics on each employee, have a company-wide calendar for the tracking and requesting of changes in the users’ day statuses (Sick Leave, Vacation, etc), track work time, send personal notifications by email, and generate reports.

Implementing this functionality aimed to allow SPD Technology to become a more people-oriented company, as well as enable our Finance department to correctly calculate salaries. Additionally, the new solution was intended to enable our HR experts to predict employee burnout based on the reported overtime. From the client’s perspective, the SPD Portal was supposed to provide the most transparent monitoring of each expert, who is working remotely.

The basic legacy solution was developed in 2018 and supported by 1 software developer. This developer worked with Knockout.js, a standalone JavaScript implementation of the Model–View–ViewModel pattern with templates. We decided to switch to a different technology, and assembled a completely new project team. The only tech documentation we had were some code-related notes.

The size and composition of the project team has varied during its project’s different stages. At the start of the project’s second iteration, the project team included two back-end Java developers, a front-end Angular developer, a Quality Assurance expert, and a Project Manager, who was also acting as a Business Analyst and Product Manager. Currently (February of 2023), the team consists of 9 experts (Product Manager, three front-end developers, four back-end developers, and a Quality Assurance expert).

During the development process, we used Agile practices and the SCRUM framework. We carefully considered the addition of each new feature and leveraged hypothesis validation to make sure we are making the right decision.

As the internal communication in the project team is organized in accordance with the Agile practices, it includes daily meetings, refinement sessions, retrospectives, client demos, UAT sessions and early feedback collection/analysis.

We’ve used user acceptance testing (UAT) practice, and both our development team and the company’s client departments are testing new features in a special environment. With all the feedback collected and changes implemented, each feature goes into production.

For effective communication in this project we use such tools as Jira, Confluence, Slack, GitLab, Google Docs, Google Chat, draw.io, Miro, and Figma.

To define what’s important and decide what to do next, we conduct regular backlog refinement and prioritization sessions with our client departments. These departments decide what kinds of functionality they need in order to improve their business processes and add related requests to the backlog, so that the development team can review and assess them. After that, the development team provides the technical requirements, as well as the time and cost estimates. As we receive approval for the changes or new features from the company’s Management, we add new corresponding tasks for the development team.

Technical Solution

The full tech stack for this project included:

  • Java
  • Spring MVC
  • Spring Boot
  • Spring Security
  • JPA/Hibernate
  • PostgreSQL
  • MySQL
  • Docker
  • Git
  • OAuth2
  • Vanilla JS
  • HTML 5
  • CSS 3
  • Angular
  • React
  • Nginx
  • CQRS
  • Event Sourcing
  • REST

Among the key challenges our team has dealt with are:

  • Ensuring the seamless transition from the legacy TimeTracker web app to the present-day SPD Portal. We’ve performed the transition gradually, in three stages: synchronization of both the versions, parallel functioning, and a complete switch to the new version.
  • Transitioning the solution from the monolith to the microservice architecture to enable scaling and addition of new, more sophisticated functions.
  • Storing large amounts of historical data to meet the initial requirement by the Finance Department that the system prevent any untraceable user-made changes in it.
  • Integrating the SPD Portal with G-Suite and introducing two-factor authentication to improve security, as a requirement by the IT Department.

To deal with the main business problem of registering all changes in the system, we decided to store all the financial-related information as events that leverage the Event Sourcing methodology. Now, every user action is recorded as a separate event with a date, including any changes in the time field of the task, any edits in the description field, or the addition or deletion of entire tasks. All of this information is stored in the historical database, and our team is able to restore the state of the system at any given moment in time.

Both the financial-related events and personal settings of the user accounts are stored in a relational database. The legacy solution was entirely based in the Cloud and used Amazon Web Services, while The SPD Portal is stored on our servers, as per a requirement by our IT Department. Both the options work equally well for the solution because we use Docker to pack programs and projects into containers that can be deployed anywhere.

Currently, we have more than 2 million events in the database and the system does not have any performance or security issues. To achieve the required performance, we’ve developed an in-memory database. The database works as RAM for the application, downloading all the required information and events from the major database as the user starts the app.

The next step was adding a reporting system based on this accurate historical data, as the first independent microservice in this ecosystem. The reporting microservice can extract and process the event-related information thanks to CQRS.

The second added microservice Track Time saves all the information from both the versions of the system into the database as events. It had a new user interface, and finally bridged the gap between the app’s legacy version and the SPD Portal.

We’ve integrated our SPD Portal solution with G-Suite. All information about the events is instantly updated in G-Suite automatically, eliminating any manual work and any possibility of human error. Synchronization with Jira has allowed the user to track the activities by using the Jira interface. The solution’s other noteworthy third-party integrations include JIRA, Leapsome, Microsoft Outlook calendar, and Azure.

At the very beginning of the development process, we used the Akka toolkit. Luckily, our team quickly realized that it is not the best option. Switching to Spring was the right decision, as this framework was perfectly suited for achieving our business goals and dealing with the technical challenges.

For 4 years, our legacy solution used Cloudinary to store photos of employees. As the number of employees increased, SPD Technology decided to use Cloud storage for this purpose. Cloudinary has a capability for detecting the face on the photo and focusing the picture accordingly. We collaborated with our Machine Learning team to build a service of our own for this purpose.

Our project team has managed to build a custom open API for SPD Technology’s needs, and we already have multiple projects that use it.

Result

Even before the release, during the active development phase, the SPD Portal brought significant advantages to the organization. More specifically, the solution helped SPD Technology’s Finance department precisely calculate the salaries of the employees, working on different projects with separate budgets. In the context of the software development process, SPD Portal allowed our Project Managers to compare the estimated timelines with the actual performance of our development teams and create even more precise and more detailed plans.

The SPD Portal has proven to be especially effective for remote work, which has become a standard for companies in 2020 after the advent of the Covid-19 pandemic. This solution has helped our company adjust to the remote workflow faster than we had expected.

The SPD Portal was released in August 2022. The solution can be easily adapted to the needs of any organization with similar business processes and bring instant value to their HR and Finance departments. The microservice approach ensures scalability and seamless data migration in case one needs to integrate some of the solution’s modules into an existing system.

“The SPD Portal is a proven success for SPD Technology. I am a big believer that this product can be easily adapted by any company with similar processes and can bring instant value to this organization’s HR and Finance departments. The microservice approach allows scalability and seamless data migration in case you decide to integrate certain modules of the SPD Portal into your existing system.“
— Anna Duma, Product Manager at SPD Technology

“SPD Portal saves a significant amount of time for the HR department by automating numerous areas like reporting, managing the corporate Calendar issues, and tracking of their working timer. This solution conveniently serves as a single data source for all company’s departments. I use data and metrics from the SPD Portal for all the possible needs I have in my position.”
— Yevheniia Polonska, Lead HR Operations & Analytics Expert at SPD Technology

Ready to speed up your Software Development?

Explore the solutions we offer to see how we can assist you!

Schedule a Call