SAP BTP platform unifying hail-damage vehicle repair, insurance claims and invoicing: SAP CAP backend on HANA Cloud, 22 SAPUI5 apps over OData V4 in a single launchpad, integrated with SAP ERP and the WinCar estimating system.

The cloud platform of an Italian company specialised in repairing hail damage on vehicle fleets using PDR (paintless dent repair) and in handling the related insurance claims. It covers the full cycle: opening a repair campaign, registering vehicles by VIN, assigning operations to technicians with times and prices, warehouses and transport, claim handling with documents and estimates, through to invoicing into SAP ERP. It consists of a Node.js backend built with the SAP Cloud Application Programming Model (CAP) on SAP HANA Cloud and 22 SAPUI5 applications grouped into a single launchpad. I built the first feasibility mock for the client and, once the project started, became its team lead: I guided three developers for the whole engagement — roughly one year and two months — assigning the work, coordinating with the delivery manager and running the requirement calls with the client myself.
The company worked with a previous application outside the SAP landscape: data collected in the field stayed there and never reached the group's ERP. Different people act on the same vehicle — technicians repairing it on site, supervisors checking progress, back office issuing invoices — and each of them saw only their own slice. Vehicle data moved around as Excel files, insurance claims lived outside the company systems, and whoever prepared the invoices had to reconstruct by hand what had been done, on which vehicle and by whom. There was no traceable path between the work done in the field and the accounting document issued in SAP.
The platform had to fit between systems already in production: the group's SAP ERP, the WinCar body-shop estimating system and a pre-existing integration flow, all reachable only through SAP BTP destination and connectivity services. Functional requirements changed when the platform was already built and already populated with data from the field trials: entities and fields explicitly marked as superseded after requirement changes are still visible in the code. Releases had to stay manageable across three landscapes (development, test, production) from a single codebase. The work was spread across four developers on the same monorepo: without shared conventions on data model, services and naming, 22 applications would have become 22 different dialects.
Multi-Target Application (MTA) monorepo on SAP BTP, Cloud Foundry runtime.
@sap/cds 9): one OData V4 catalog exposing more than 80 entities, plus six application services with custom JavaScript logic (operations, invoicing, reporting, master data, external estimates)..hdbview views for aggregations, HDI synonyms and roles for consumption from SAP Datasphere. SAPUI5 (22 apps, launchpad) technician app (SAP Build Work Zone)
\ /
managed approuter (XSUAA)
|
CAP OData V4 (Node.js)
|
+---------------+----------------+
v v
SAP HANA Cloud (HDI) BTP destinations
~90 CDS entities |
.hdbview views +-----------+-----------+
| v v v
v SAP ERP WinCar iFlow / SMTP
SAP Datasphere (invoicing) (estimates) Google Drive API
(reporting)
The operations model is the heart of the system. A campaign is created with its supervisors and the list of authorised users: nobody else sees that data. Vehicles are loaded from an XLS or CSV list of VINs; the work items come from a catalog the client configures on its own. From there, three rules apply:
Every step leaves a trace: which operation, on which VIN, by whom, when, with what outcome. That is where the per-vehicle history, the handling of blocked vehicles and the reporting aggregates come from.
Both halves of the programme were built: PDR repair — campaigns, vehicles, work items, the site itself — and insurance claim handling, with estimates pulled from WinCar and stored alongside the vehicle. Technicians, supervisors and back office work on the same data model and the same launchpad, inside the SAP landscape instead of the external application they used before. Every technical work item carries its invoice code, SAP order number, the payload that was sent and any error returned: an invoicing issue is reconstructed from the data, not from email threads. HANA views exposed to SAP Datasphere opened reporting beyond the application's own boundary.
The platform was trialled twice with real operators, not in a lab. First on a repair campaign followed for two to three weeks. Then on site: operators used the application for about a week, and for three of those days we were physically there, watching them work and collecting feedback straight from them rather than through a written report. For an application used with gloves on, next to a vehicle waiting to be repaired, that is the only serious way to find out whether it works.
In the PDR stage the vehicle is not chosen: the system draws it from those ready for that operation. This is not an implementation detail. At the same rate it pays to work the least damaged vehicles, and leaving the choice to the operators created friction; the client explicitly asked that nobody could pick their own work. The same idea of impartiality underpins the enforced operation sequence and the per-user permissions: the system decides what can be done now, and explains why.
The first mock — the one that showed the client what could be done — was mine. When the project started I became its team lead and stayed to the end, roughly one year and two months: three developers to coordinate, work to assign, technical conventions to hold together across a monorepo that grew to 22 applications, and the requirement calls with the client run in person.
The client suspended the programme for internal priorities, before the rollout to the full user base: the platform was sized for around a thousand users between operators and supervisors, with campaigns reaching a few thousand vehicles each. At suspension the MTA descriptor was at version 2.0.58 — an incremental release every few days for more than a year.