Capstone: Modernising One App, Start to Finish
Lesson 5, the capstone — Four lessons, four separate skills: spotting the debt, understanding OData V2 to V4, choosing Fiori Elements vs freestyle, reading a readiness check. Here's how they combine into one real modernisation pass, start to finish.
Prerequisites
- Lesson 4: Reading a UI5/Fiori readiness check
Four lessons, four separate skills — spotting deprecated-library risk, understanding what OData V2 to V4 actually changes, choosing Fiori Elements vs freestyle, and reading a readiness check’s severity distribution. None of them is the point in isolation. The point is running all four, in order, on one real app. This capstone is where they combine.
The pipeline, one picture
Walking through one illustrative pass
Picture a freestyle app still on OData V2, built years ago as a simple “browse purchase orders, open one, see the detail” screen — no unusual interactions, nothing custom beyond a standard list and detail view.
- Assess. A readiness check flags it: OData V2 (High),
minUI5Versionseveral releases behind current (Medium), no deprecated-library hits (nothing Critical here — this one’s earlier debt, not the worst kind). - Decide. “Browse a collection, open one, see the detail” is the textbook List Report + Object Page shape from Lesson 3 — an LROP app. No custom interaction forces freestyle here.
- Migrate. The backend gets a CDS-based OData V4 service with the right
@UIannotations; the old freestyle controllers and their V2getData()/getObject()calls are retired entirely, not rewritten in place — the Fiori Elements app is generated fresh against the V4 service. - Verify. UI5 linter comes back clean, the functional test confirms the same business behaviour, and it renders correctly under Horizon — the exact failure mode from Lesson 1 that started this whole journey.
That’s the difference between “migrating” an app and rebuilding it as a Fiori Elements app from a clean V4 service: for a standard List-Report-shaped app, the rebuild is very often less total effort than trying to painstakingly rebind fragile freestyle controller code.
Try it yourself — the actual capstone
Pick one real app from your own landscape. Run it through all four boxes, on paper if you don’t have tooling in front of you right now: what does an honest assessment find, what floorplan (or freestyle) does it actually need, what has to change to reach V4, and what would “verified” concretely look like for this specific app? If you can answer all four without hesitating, you’ve run a real modernisation decision — not just read about one.
You’ve finished Fiori & UI5 Modernisation
From a deprecated-library debt problem hiding in plain sight, through what OData V2 to V4 actually changes, to picking Fiori Elements or freestyle on a real heuristic, to reading a readiness check the same disciplined way you’d read an ABAP one — you now have a repeatable process for your front-end estate, not just a list of new terms.
Where to go next:
- Apply the same clean-core discipline to the ABAP layer underneath these apps: the ABAP Cloud & Modern Dev journey.
- See how this fits the full migration picture: S/4HANA Migration & Clean Core.
- Run Agent A7 against your own UI5 estate: a free readiness scan.
Key takeaways
- Assess, decide, migrate, verify — the same four steps, run per app, turn four lessons into one repeatable modernisation process.
- A standard “browse, then detail” app is very often cheaper to rebuild as Fiori Elements against a fresh V4 service than to painstakingly rebind in place.
- “Verified” means UI5-linter-clean, functionally tested, and rendering correctly under the current theme — all three, not just the one that’s easiest to check.