How it works
How it works
We record real user journeys, replay them against both systems in a deterministic sandbox, and block cutover until responses, database writes and outgoing API calls match — with an evidence report showing exactly what was verified.
We record real user journeys, replay them against both systems in a deterministic sandbox, and block cutover until responses, database writes and outgoing API calls match — with an evidence report showing exactly what was verified.
Visual migration workflow
PHP → MigrateForge Engine → Java Spring Boot → Verification.
-
PHP
The running application and the journeys you record.
-
MigrateForge Engine
Local-first. Understand, record, migrate, and compare.
-
Java Spring Boot
The Java 21 application built to stand in for the PHP system.
-
Verification
Replay until responses, database writes, and outgoing calls match.
Evidence comparison
Side-by-side old and new application results, with matching responses and database changes.
Recorded journey · illustrative
3 / 3 match
-
Response
MATCHHTTP 200 · same JSON body
-
Database write
MATCHSame row update
-
Outgoing call
MATCHSame outbound payload
Migration report preview
Size, risks, an indicative wave plan, and a price range. No source code. No model call.
Free migration report
InvoicePlane · 12 November 2026
HIGH · medium
Preview
InvoicePlane
CodeIgniter 3.4.0. The report did not detect a PHP version.
PHP files
391
PHP lines
55,136
Routes
142
Tables
41
Risks counted
- raw SQL / database logic 77
- dynamic includes 21
- external APIs 16
- session / auth patterns 12
Indicative waves
- Wave 1 7,908 lines
- Wave 2 7,973 lines
- Wave 3 4,812 lines
- Wave 4 7,815 lines
- Wave 5 7,776 lines
- Wave 6 7,765 lines
Showing 6 of 10. Indicative, not the migrated set.
Preview
InvoicePlane
Files
391
Lines
55,136
Routes
142
Tables
41
Top risks
- raw SQL / database logic 77
- dynamic includes 21
- external APIs 16
Price range
$3,000–$4,200
Assessment · ₹2.5–3.5 lakh
$17.1k–$21.0k
Migration · ₹14.3–17.6 lakh
-
01 Understand
We read the PHP application as a system: the entry points, the data it writes, and the messages it sends. The aim is a map of the behaviour worth recording. A line count is how the work is priced later, not a measure of whether the move is safe.
-
02 Record
We record journeys from people using the PHP application. A journey keeps the response, the database changes, and the messages that were sent. A path invented in a workshop is not a recorded journey.
-
03 Migrate
We produce a Java Spring Boot application that is meant to stand in for the PHP system on the journeys we recorded. Generated code is an intermediate. It is not the evidence.
-
04 Prove
We replay the recorded journeys against both systems in a deterministic sandbox. Responses, database writes, and outgoing API calls are compared. The evidence report shows what was verified. Cutover stays blocked until they match.
What match means
- Responses. What the user received.
- Database writes. The rows that changed.
- Outgoing messages. The API calls the system sent.
On every recorded user journey, the Java system produces the same responses, the same database changes, and the same messages sent as the PHP system.
What the report leaves out
Behaviour that was never recorded is outside that claim. A line count prices the work later; it is not the evidence.