case study

How Uplab transformed a faulty platform intoan ISO-compliant solution for strategic alliances

The alliance management dashboard on a laptop, charting partners by type, deliverables by status and goal achievement, beside an ISO certification badge

Domain:

Industrial alliances

Collaboration:

2018 - now

Country:

Canada

Team size:

10

challenge:

Our client, a professor of Strategy and Innovation, has been teaching and researching strategic alliances for many years. To put it simply, a strategic alliance is a business partnership between two or more companies that work together to achieve shared objectives.

For example, companies in the pharmaceutical industry can partner to develop a vaccine and distribute it across various countries, or companies in the government technology sector can team up with their peers abroad to gain access to new technologies and R&D initiatives.

According to our client, one of the major hurdles in such alliances is the difficulty sharing vast amounts of data and tracking processes, especially when multiple stakeholders are involved. That’s why he developed his own approach to improving alliance management and found a way to incorporate it into alliance management software.

He decided to start small and hired a development team to build an early version of this platform or an MVP. But they failed to provide a market-ready solution, so he turned to Uplab for help.

A house, an office block and a factory linked by dotted lines to a shared platform, all pointing at one common goal

project evolution:

Our project started with the system audit, which uncovered a multitude of bugs and security vulnerabilities in the software. We performed refactoring and gradual application reengineering and finally went live with the upgraded platform. The improved alliance management application comes with advanced dashboards, custom reports, document management, and other features, enabling alliance leaders to conveniently organize, manage, and expand their alliance ecosystem all in one place.

To ensure that the platform complied with information security management requirements, which were necessary for their enterprise clients, our experts did everything needed to obtain ISO 27001 certification. We also expanded our team to 10 software engineers to facilitate the further scaling of the product.

The upgraded platform’s navigation — dashboard, reports, calendar, contacts, documents, opportunities, evaluations, contracts and partners — beside the dashboard screen

Want to know the whole story?

Keep reading

Project highlights

  • Gradually replaced outdated Meteor with GraphQL, TypeScript, React, and Node.js

  • Split bulky monolith into 60+ domain-based modules

  • Reduced the regression bugs from 20% to less than 1%

  • Established automated end-to-end testing processes

  • Launched a boot camp to train developers in core project technologies

  • Scaled the project team from two to 10 software developers

  • Obtained ISO 27001 certification

  • Established a knowledge base to ease the developers’ efforts

part 1.

Overcoming tech obstacles for the successful launch

conditions:

  • After checking the system thoroughly, we found a bunch of problems with the application. It had repeating bugs, and issues with performance, scalability, and security such as XSS vulnerabilities and source code privacy issues.
  • Because we had a limited budget and time, re-engineering this software from scratch was not an option, so we started thinking of solutions to address the obstacles before going live.
  • But most importantly, we noticed that the technology being used didn’t match up with what the business needed.

Splitting the bulky monolith into domain-based modules

The application had a monolithic architecture where all the different modules are tightly coupled together and share the same codebase, making it difficult to maintain and scale.

To reduce dependencies and improve scalability, we applied a Domain Driven Design (DDD) approach which promotes the use of bounded contexts, which are isolated domains within a larger system.

We broke down the monolith into 60+ smaller, domain-based modules of different types (UI / Service / Entity). This way, we made the app more maintainable, scalable, and understandable for developers.

The calendar, payments and partner widgets pulled apart into separate floating cards

Minimizing the impact of Meteor.js to adapt technology to business requirements

Meteor, the initial technology choice for the project, was not suitable for our enterprise-level application. For several reasons.
  1. First, Meteor might be okay for proof-of-concept work, but it doesn’t scale well leading to performance issues.

  2. Second, isomorphic apps have potential problems with security because they share a lot of code between the client and server. You have to be extra careful not to accidentally give away API keys or passwords to the client. Maintaining and debugging such universal code is also very difficult – there is a high potential for making mistakes and doing things the “wrong” way.

  3. Third, the use of Minimongo, which is a smaller version of MongoDB on the client side, forced us to use the same data structures as those stored in the database. And because our application needed to combine and analyze data from various sources, using the same data structures was highly problematic.

  4. Finally, initially released in 2012, Meteor is considered “dead” in the developer community, and not without a reason. Many Meteor packages have become abandoned, and Meteor’s development has slowed down in recent years. And this leads us to the next problem – finding developers with expertise in Meteor is a big challenge.

Because we couldn’t just ditch Meteor and rebuild the application from scratch, we chose to minimize its impact, gradually replacing it with modern tech piece by piece.

Here is what we did exactly:

  • Separated the isomorphic code into distinct client and server code, while defining explicit shared constants.

  • Reduced our reliance on the Meteor ecosystem by replacing a significant number of Atmosphere dependencies with npm packages.

  • Integrated GraphQL between the client and server to replace the Meteor DDP protocol, resulting in a self-documenting and self-validating API.

  • Eliminated redundant Redux state management and opted to keep the local states within the React components and API data cache in the Apollo Client cache.

  • To enhance performance, we removed the Meteor publications and subscriptions mechanism entirely.

We minimized the impact of Meteor by limiting its responsibilities to bundling the app, managing user accounts, and establishing the MongoDB connection.

As a result of this work, the front end was entirely free of Meteor, and the back-end business layer operated without Meteor’s involvement.

Dealing with performance issues and establishing continuous testing

The faulty application not only prevented us from adding new features, but its existing features also failed to function properly. The effort required to fix bugs far surpassed that of developing new functionality.

To build new features, we had to eliminate deficiencies first, so we implemented numerous performance improvements.

For example, we added GraphQL data loaders to fix a problem we had with how we were getting data (N+1 query problem). We also added MongoDB aggregations so we could get data from different parts of the system more efficiently.

Finally, we added some functionality to GraphQL so that the system only sends the parts of data that the user needs, which makes it faster.

On top of that, we set up automated QA processes, including continuous regression testing, and integrated ESLint and Prettify – development tools to improve code quality.

As a result, we managed to reduce the regression bugs from 20% to less than 1%, while 95% of bugs were resolved before releasing into production.

The reports list and the monthly calendar view marked with a bug icon, standing for continuous regression testing

Launching a Meteor boot camp to address the skill gap

Although we were gradually minimizing Meteor’s impact on the project, we still needed professionals with experience in Meteor.js and the related tech stack, but finding the right talent was not an easy task. As we’ve already said, Meteor has lost its popularity in the developer community and there were very few developers available in the market who were proficient in the project’s technology stack.

To solve this problem, Uplab established a three-month training course covering key project technologies. It allowed us to train and hire four dedicated Meteor experts.

We also onboarded additional on-demand engineers that would enter the project in case of increased workloads.

The report builder and the opportunities board of the platform beside the Meteor logo
part 2.

The market-ready alliance management software

We spent about a year reviving the alliance management platform. By the time we were ready for the first market release, our team increased from two to ten dedicated experts, including the Head of Development, Team Lead, software engineers, and QA experts.

Our software comes with an advanced dashboard with 25 widgets that can be customized depending on what data the enterprise works with, and a collection of over 50 report templates that can be tailored to meet the specific requirements of a business. If a desired template is not available in the library, our team creates a bespoke report that is tailored to the individual needs of each client.

Also, the business management system supports different access levels and has a Single Sign-On (SSO) feature. In addition to the conventional email and password login, corporate users can enter the software with a single click using the centralized SSO system. This permits them to gain access to the platform based on their access level.

The platform’s sign-in screen with badges for 25+ dashboard widgets and 50+ report templates

Once we launched the alliance management platform to the market, it started attracting customers which brought forth a new set of challenges that needed to be addressed.

These challenges required us to adapt and improve our platform to better meet the evolving needs of our clients.

Abandoning Meteor and adopting TypeScript to improve code quality and facilitate developer onboarding

“Our project did not benefit from Meteor at this stage. The framework demanded a high level of expertise and significant development costs that involved hiring full-stack developers. We finally decided to get rid of Meteor.js.”
  • To substitute Meteor in a cost-efficient way, we made several changes to improve code quality and facilitate the onboarding of new team members. Specifically, we adopted TypeScript and split our codebase into separate Node.js and React projects. By decoupling client and server code, we were able to expand our hiring options beyond just full-stack developers, enabling us to hire front-end and back-end developers separately.

  • We also created a knowledge base to help new hires get up to speed quickly. As a result of these changes, we were able to onboard two junior developers, whereas previously we had a high entry threshold and only considered senior developers.

Obtaining ISO 27001 certification to secure enterprise data

To protect their sensitive data, enterprises opt for software solutions that comply with ISO 27001, a global standard for Information Security Management Systems (ISMS).

As our client’s engineering team, Uplab had to align our development processes with the ISO 27001 standard to ensure information security. This involved conducting a risk assessment to identify and manage current and potential data risks, implementing risk treatment measures, and establishing processes to meet the ISO 27001 requirements.

During the ISO audit, Uplab’s security, management, and development processes, for which our team was fully responsible, received successful approval. Moreover, we managed the implementation of ISO standards across the client’s company and appointed an information security manager for this task.

This demonstrates our ability to manage confidential third-party information and establishes us as a trusted partner for enterprise businesses.

The ISO 27001 Information Security Management certification seal

Developing a public API for integrating internal business systems

Prior to using our client’s SaaS platform, many large companies have already implemented various software systems and tools internally. To enable seamless integration between these systems and our client’s business management platform, we developed a public API.

This API allows companies to synchronize all their operations, both internally and with external software providers.

An API cog wired up to the surrounding internal business systems

Making product development manageable at scale

We’re currently in the growth stage, working on the product that’s being used by different organizations. To make our development process more manageable, we divided it into several streams ‒ development of the main product, creation of custom reports for each company, and building of APIs and integrations.

When individual team members focus on designated sub-projects, our product development process becomes much more efficient.

results:

  • Over 20 global enterprise customers
  • Scalable platform
  • Reliable team
  • Fine-tuned SDLC

We completely overhauled our client’s buggy MVP and transformed it into an enterprise-grade ISO-certified alliance management platform. Today, over 20 international enterprises rely on it to collaborate with their strategic partners.

Uplab is fully responsible for product development, serving as our client’s own product engineering team. We’ve expanded from just two full-stack developers to a group of 10 dedicated experts.

Our solution is highly scalable, easily maintainable, and capable of adapting quickly to changing market needs.

We have a streamlined SDLC with automated testing and DevOps, manageable team configurations, and comprehensive documentation for the seamless onboarding of new team members.

Uplab is the best development company I have worked with…

As we have been working together for 5 years now our relationship is very strong and Uplab is a trusted partner responsible for the development of our solution. Uplab is the best development company I have worked with. We highly recommend them.

Louis Rinfret

Louis Rinfret

Founder & Executive, Enterprise SaaS Company

A partner dashboard in the finished platform, showing activity, payments and action items for one partner company, with an ISO certification badge

Read more stories

Rebuild your software with Uplab

If you’ve got a poorly-built product or outdated software that needs revamping, just let us know! We can help you redesign your system, replace outdated tech with modern frameworks, and gradually update your codebase.