Skip to content
Happen Softwarewww.happen.software · sales@happen.software
All case studies

Case study · Manufacturing · Rescue & rebuild

Rescuing a system the business had outgrown

An international manufacturer's purchase and travel requisitions ran on an in-house system whose original developer had moved on, on a framework that was out of support. We took it over, kept it running, audited it end to end against live data, and rebuilt it. Today every purchase and trip runs through the new system, with budget controls, notifications, and live dashboards that show finance exactly where things stand.

  • Since 2024 · 2 years
  • 39,000+

    Historical requests migrated with their full approval history

  • 4,900+

    Purchase requests and trips a quarter taken over by the rebuild: 3,693 and 1,229 in the old system's last full quarter

  • 8 → 1

    Conflicting budget calculations replaced by a single engine behind every screen

  • 13

    In-depth reports, from budget versus actual to month end, alongside three live dashboards

At a glance

Client
International security manufacturer
Users
Requesters, buyers, the travel desk, approvers, and finance
Engagement
Took over and supported from late 2024; rebuilt and live in 2026
Status
Live, with the full history migrated from the old system
Integrations
Microsoft Dynamics Business Central, Active Directory, email and push
Visibility
13 reports, 3 live dashboards, and 30 notification types
Scale
188 cost centres and approval chains of up to 10 people

01The situation

Our client's purchasing and travel requests ran on a system built in-house several years earlier. Its original developer had moved on, it ran on an out-of-support framework, and it had almost no automated tests. In its last full quarter it handled 3,693 purchase requests and 1,229 trips.

We took it over in late 2024, stabilised it, and finished its half-built ERP integration. Rather than keep patching it, we audited it end to end, rebuilt it alongside the old one, and moved the business across with its full history.

  1. 01

    Budget figures that disagreed

    The old system calculated budgets eight different ways with different answers, so finance had to track budgets in Excel alongside it.

  2. 02

    Requests in a black box

    Requesters were never told the outcome, and stuck requests showed a greyed-out button with no explanation.

  3. 03

    Unsupported and fragile

    An out-of-support framework, no automated tests, and nobody left who knew how it all fitted together.

02What changes

  • UpdatesLegacy system: Requesters were never told what happened to their request.Rebuild: Every stage lands in the in-app inbox, with email and push for the updates each person chooses.
  • BudgetsLegacy system: Eight calculations that disagreed, so budgets were tracked in Excel alongside.Rebuild: One budget overview, with one calculation behind every screen, report, and dashboard.
  • Spending controlLegacy system: Spending caps switched on and off by hand, with no second approver.Rebuild: Funds released in stages, each approved by a second person, and cost centres that can be frozen.
  • Stuck requestsLegacy system: A greyed-out approve button and no explanation.Rebuild: My Work says exactly what's blocking a request and who to chase, and blocked requests raise an alert.
  • Month startLegacy system: Monthly budgets kept in Excel, outside the system.Rebuild: Each cost centre's budgets pasted straight in from Excel at the start of the month.
  • Month endLegacy system: Late signatures could spend next month's budget.Rebuild: Approvals lock on the last evening; open requests are carried over or cancelled, and a month-end report closes the period.

03How it works

A purchase request, end to end

  1. 1

    Request

    A requester, or a buyer on their behalf, captures the lines. Each line shows its price against the item's set rate.

  2. 2

    Prepare & approve

    Procurement assigns the cost centre and buyer and reviews anything above a value threshold. Approvers then sign in order within the cost centre's price bands; delegates can sign for them, and nobody can approve their own request.

  3. 3

    Funds check

    The final signature checks the budget in the same step, so nothing is approved without the money to pay for it.

  4. 4

    Post

    Approved purchases post straight to the ERP's requisition worksheet, and the requester is told.

  5. 5

    Stay informed

    Every step notifies the people involved. Approvers get reminders and a weekday 07:00 summary, and a blocked request or failed posting raises an alert.

  6. 6

    Close the month

    On the last evening, approvals lock. Open requests are carried over or cancelled, the month-end report closes the period, and next month's budgets are pasted in from Excel.

04What we built

  • Audit before code

    We documented the legacy system against a copy of live data: 164 capabilities rated working, defective, unreachable, or dead, and a recommendation to keep, fix, merge, or retire each one, with the open business questions settled with the client.

  • One workflow for purchases & travel

    Price-banded approvals per cost centre, delegation, and segregation of duties. On shared trips, each cost centre approves its own share.

  • Budget controls

    One calculation replaces eight. Funds are checked at the final signature, every release, transfer, and adjustment needs a second approver, and a cost centre can be frozen so it approves nothing.

  • Month start & month end

    Month-start budgets pasted straight from Excel. At month end, approvals lock on the last evening, open requests are explicitly carried over or cancelled, and a month-end report closes the period.

  • Notifications & alerts

    30 notification types across inbox, email, and push, with each person choosing how they hear. Approval reminders, a weekday summary, and alerts when a request is blocked or a posting fails.

  • Live dashboards

    Budget Health flags cost centres over budget or nearly spent, the Workflow Monitor shows who is holding things up and how long work has waited, and Supplier Insights tracks spend concentration.

  • In-depth reporting

    13 Excel reports: outstanding work, approval decisions, exceptions, orders placed, purchase and travel registers, supplier and travel spend, budget versus actual, cost-centre statements, budget changes, approvers, and month end.

  • Posted straight to the ERP

    Suppliers and items come from Business Central, currencies are checked against it, and approved purchases post to its requisition worksheet line by line; if a response is lost, it's reconciled before anything is sent again.

05What each team gets

  • Requesters

    • A short form limited to their own cost centres
    • Copy a previous request instead of starting again
    • The outcome of every step, as it happens
  • Buyers & travel desk

    • Requests raised on someone's behalf, properly recorded
    • A list of overdue approvers to chase
    • Several approved trips posted at once
  • Approvers

    • One work queue with a quick Decide button
    • Reminders and a weekday summary of what's waiting
    • Signatures that survive minor edits
  • Finance

    • Month-start budgets pasted straight from Excel
    • Budget Health and budget-versus-actual, live
    • A month-end lock, carry-over, and month-end report

06How we delivered

  1. Late 2024

    Take over

    Took over the code from its original developer, stabilised it, and finished and shipped its Business Central integration.

  2. 2026

    Audit

    Specified the whole system from its code and live data, settled the open questions with the client, and decided what to keep, fix, merge, or retire.

  3. 2026

    Rebuild

    Rebuilt on a modern stack with an in-app user manual, in parallel with the old system.

  4. 2026

    Live

    The full history migrated after rehearsed imports, then the business cut over from the old system.

07Built to last

  • A specification-first rebuild, grounded in live data and the client's answers to the open business questions.
  • Funds checked in the same transaction as the final approval, so two approvals can't overspend a budget at once.
  • Explicit handling when approvers change while requests are in flight.
  • An append-only workflow history recording who acted, and on whose behalf.
  • Security tightened throughout: shared credentials retired, sign-in moved to Active Directory, and permissions enforced on the server, not just hidden in the UI.
  • About 300 automated unit, UI, and browser tests, and an in-app user manual with screenshots captured from the real app.
  • .NET
  • Angular
  • PostgreSQL
  • Microsoft Dynamics Business Central
  • Active Directory
  • Firebase
  • Docker
  • GitHub Actions

Stuck with a system your team works around?

We'll audit what you have, tell you honestly whether to fix or rebuild, and plan a migration that doesn't stop the business. Book a free 30-minute call with one of our engineers.

sales@happen.software · www.happen.software/contact

Keep reading

Related case studies

All case studies