B2B platform stabilization, modernization & ERP integration

Intro:

Client: Grena Ltd. (UK)
Industry: Medical device manufacturing, B2B distribution
Scope: Application engineering, infrastructure modernization, platform stabilization, ERP integration, ongoing feature development

Background:

Grena Customer Portal is a B2B platform used by international distributors of disposable surgical instruments, serving clients across the UK, Netherlands, Japan, Serbia, Portugal and Central-Eastern Europe. It runs on a heavily customized WordPress/WooCommerce stack with deep, real-time integration with the client’s ERP – Microsoft Dynamics 365 Business Central. Orders, quotes, customer records, price lists and inventory levels flow continuously between the two systems.

When we took over the platform, it was operationally critical to the business, but engineering ownership had effectively lapsed. The original developer was no longer available, and the system had outgrown the configuration it was originally written for.

Challenge:

The client reached out because making changes to the platform had become slow and risky. A short audit confirmed that the visible symptoms – fragile deployments, email deliverability failures, unexplained ERP sync breakdowns – were the tip of a much deeper problem. The codebase was scattered across more than ten custom WordPress plugins, with no documentation, no tests and no clear branching strategy. There was no separation between application configuration and operational data.

Releases were manual. There was no CI/CD, no production error monitoring, and no environment parity between development and production. Infrastructure ran on outdated system software; an earlier in-place upgrade attempt had broken the platform and was rolled back. The Business Central integration silently failed on edge cases, occasionally resulting in lost orders with no notification.

Objectives:

Take over engineering ownership and restore the ability to deploy changes safely.

Modernize the application stack and infrastructure without rewriting from scratch.

Refactor the codebase to remove legacy assumptions and make it maintainable by any engineering team.

Bring the Business Central integration to a state where it is observable, predictable and resilient to schema changes.

Prepare the architecture for multi-tenant expansion to support additional brands within the client’s group.

Continue delivering operational tasks, features and improvements throughout.

Solution:

We took on full engineering ownership of the platform – codebase, infrastructure, releases, incidents and technology roadmap – and worked as an embedded team within the client’s business and operations workflow.

We started by stabilizing the immediate operational risks. Together with the client’s IT team, we stood up a dedicated 1:1 development environment so that infrastructure work could be tested ahead of time, and carried out the migration of the operating system and PHP runtime to current, supported versions – in a controlled, phased rollout. Missing PHP modules and a misconfigured database driver that had been silently breaking PDF generation and parts of the ERP integration for months were diagnosed and fixed. Scheduled task ownership was moved to a proper service account, eliminating an entire category of silent failures.

From there, the engagement ran on several parallel tracks, sequenced so that each one made the next safer and cheaper.

Key actions

  • Building the safety net first – CI/CD via GitHub Actions across all repositories, with safe deployments to both environments; introduction of a maintenance mode mechanism allowing production deployments during business hours with IP whitelisting for the team; full restoration of dev-production environment parity.
  • Removing single-developer dependency – systematic refactoring to decouple the codebase from assumptions tied to the previous development setup; migration of configuration into the admin panel; replacement of embedded accounts with neutral, client-owned service accounts.
  • Building production observability – a custom mail logger recording every transactional email with sender, recipient, content and delivery status, where previously no record existed at all; an order sync log with manual retry capability; a health monitor running periodic checks across all integration points.
  • Hardening the ERP integration – field-level validation and controlled truncation to Business Central limits, preventing silent order loss on edge cases; connection error caching to prevent transient database outages from triggering reconnection cascades; concurrency controls for scheduled tasks; per-cycle order sync limits to prevent queue buildup.
  • Preparing for multi-tenant expansion – abstracting hardcoded ERP table identifiers, company names and web service endpoints out of the codebase; building automatic detection and caching of GUID differences between Business Central tenants; making the architecture capable of supporting additional brands on the same engine with independent databases, pricing and business logic.
  • Navigating a live ERP migration – when Microsoft removed SOAP endpoints in a major Business Central release in favor of REST/OData V4, the platform was adapted to the new version without stopping production; key integrations were migrated from discontinued codeunits to alternative page endpoints, and a full REST transition path was planned and estimated.
  • Continuous feature delivery – new reporting, warranty logic, feedback system improvements, regional shipping rules and more – shipped in parallel with modernization work, so the business never had to choose between stability and growth.

How we worked:

Day-to-day, we operated as the platform’s engineering team rather than as an external supplier. An engineer was embedded in the client’s product workflow through daily Slack communication and regular weekly status calls with the project manager. Meetings with top management also took place – less frequently, driven by milestone reviews or strategic decisions. We owned production incidents end to end – from alert through diagnosis to preventive action. Decisions about the platform’s technical direction sat with us, in dialogue with the business.

In the event of security incidents, we supported the client’s IT team in coordinating the response, diagnostics and implementation of remediation measures, including credential rotation, encryption improvements, connection limits and closure of remaining access paths.

Outcome:

Across the engagement, the platform’s technical and operational position moved decisively in the right direction.

  • OS, PHP and ERP – All upgraded to current supported versions, migrated in-flight with minimum downtime
  • 0 → 100% Releases automated, across all repositories
  • 0 → full Production observability (mail log, order sync log, health monitor) where none existed before
  • Multi-tenant-ready Architecture prepared for additional brands on the same engine
  • Minutes → seconds For several recurring ERP sync operations, after query and concurrency work

New features continue to ship at a predictable pace. ERP integration edge cases – the kind that previously cost the business individual orders – are now caught at the validation layer or logged loudly when they occur.

The application remains the same product the business depends on – now running on a stack that is current, observable, automatically deployed, multi-tenant-ready, and considerably less fragile than before.