Skip to content

Migrate eShopLegacyMVC from .NET Framework 4.7.2 to Java 21 / Spring Boot 3.5#3

Open
devin-ai-integration[bot] wants to merge 9 commits into
mainfrom
devin/1779333027-java-spring-boot-migration
Open

Migrate eShopLegacyMVC from .NET Framework 4.7.2 to Java 21 / Spring Boot 3.5#3
devin-ai-integration[bot] wants to merge 9 commits into
mainfrom
devin/1779333027-java-spring-boot-migration

Conversation

@devin-ai-integration
Copy link
Copy Markdown

@devin-ai-integration devin-ai-integration Bot commented May 21, 2026

Summary

Complete migration of the eShopLegacyMVC catalog application from ASP.NET MVC (.NET Framework 4.7.2) to Java 21 / Spring Boot 3.5.0, as planned on the .NET Migration Jira board (Epics NM-13 through NM-21, Stories NM-22 through NM-50).

What changed

A new Spring Boot project at eShopLegacyMVCSolution/src/eShopLegacyMVC-SpringBoot/ implementing the full catalog application:

Epic Scope Key Files
0 - Scaffold Maven project, config, logging, static assets pom.xml, application*.yml, logback-spring.xml
1 - Entities CatalogItem, CatalogBrand, CatalogType JPA entities model/*.java
2 - Data Access Spring Data JPA repos, Flyway migrations, HiLo generator repository/*.java, db/migration/*.sql
3 - Services ICatalogService + real/mock implementations service/*.java, config/CatalogConfig.java
4 - Shared Lib Jackson serialization replacing BinaryFormatter util/Serializing.java, dto/BrandDTO.java
5 - Controllers CatalogController, PicController, REST APIs + Thymeleaf views controller/*.java, templates/**/*.html
6 - Cross-cutting Request logging filter, session listener, security config, error handling, Actuator observability config/*.java
7 - Testing 36 tests: unit (service layer), controller (MockMvc), API contract, serialization src/test/**/*.java
8 - Deployment Multi-stage Dockerfile, README, RUNBOOK.md Dockerfile, README.md, RUNBOOK.md

Technology mapping

.NET Java/Spring
ASP.NET MVC 5 Spring MVC + Thymeleaf
Entity Framework 6 Spring Data JPA + Hibernate
Autofac DI Spring IoC + @Profile/@ConditionalOnProperty
log4net SLF4J + Logback
BinaryFormatter Jackson ObjectMapper
Application Insights Spring Boot Actuator + Micrometer
SQL Server (same DB) Same SQL Server via mssql-jdbc + Flyway

Orchestration

This migration was executed via parallel child Devin sessions in 3 waves:

  • Wave 1 (parallel): Epics 1-3, Epic 4, Story 6.3
  • Wave 2 (parallel): Stories 5.1-5.3, Stories 5.4-5.5
  • Wave 3 (parallel): Epics 6.1+6.2, Epic 7, Epic 8

Review & Testing Checklist for Human

  • Run with mock profilecd eShopLegacyMVCSolution/src/eShopLegacyMVC-SpringBoot && mvn spring-boot:run -Dspring-boot.run.profiles=mock → verify catalog UI at http://localhost:8080/catalog shows 12 products with pagination
  • Verify CRUD operations — Create, edit, detail, delete flows on the catalog UI work correctly with mock data
  • Verify REST APIscurl http://localhost:8080/api/brands returns 5 brands JSON; curl http://localhost:8080/api/files returns BrandDTOs
  • Verify actuatorcurl http://localhost:8080/actuator/health returns UP with catalog service details
  • Run with SQL Server — If SQL Server is available, test with dev profile to verify Flyway migrations and real data access layer

Test plan

  1. mvn clean compile — verify build (Java 21 required)
  2. mvn test — verify all 36 tests pass
  3. mvn spring-boot:run -Dspring-boot.run.profiles=mock — test full UI flow
  4. docker build -t eshop-catalog . && docker run -p 8080:8080 -e APP_USE_MOCK_DATA=true eshop-catalog — test Docker deployment

Notes

  • The original .NET application is untouched — this is an additive migration
  • The Spring Boot app targets the same SQL Server database schema, so it can be deployed alongside the .NET app for blue-green cutover (see RUNBOOK.md)
  • All 36 tests pass (0 failures, 0 errors, 0 skipped)
  • The mock profile allows running without a database by using in-memory data

Link to Devin session: https://partner-workshops.devinenterprise.com/sessions/12458d33f65e4683b5fda8ec391bc624

Requested by: @mbatchelor81


Open in Devin Review

- Story 0.1: Maven project with Java 21, Spring Boot 3.5.0, all dependencies
  (spring-boot-starter-web, data-jpa, thymeleaf, validation, security,
   actuator, flyway-sqlserver, mssql-jdbc, jackson, testcontainers)
- Story 0.2: application.yml with datasource, JPA, Flyway, app properties
  + dev/prod/mock profile configurations
- Story 0.3: logback-spring.xml ported from log4net config
  (rolling file appender, 10MB max, 5 backups, console for dev)
- Story 0.4: Static assets copied (Content/CSS, Scripts/JS, fonts, Pics)

Jira: NM-22, NM-23, NM-24, NM-25
@devin-ai-integration
Copy link
Copy Markdown
Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant