Replatform / refactor
Upgrade runtimes and dependencies or move to managed Azure services while preserving core behavior.
Deliver a running modernized application and show that required behavior still works.
GitHub Copilot Modernization CLI
Use GitHub Copilot and Azure to modernize an existing application or reshape its architecture. Deliver a running upgrade or a complete rebuilt application.
A Java or .NET app can take either route. Discovery may recommend a smaller refactor.
These tools support the upgrade tracks. For a rebuild, follow the plugin setup guide; you do not need the Modernization CLI.
modernize CLI belowgh auth loginTwo demos follow legacy applications through modernization and deployment to Azure. Open a speaker guide alongside the site for setup, live commands, talking points, and troubleshooting. Each demo runs for 55 minutes; complete provisioning before presenting.
Upgrade Spring Boot 2.7 and Java 8 to Spring Boot 3.x and Java 25, migrate Oracle data to Azure PostgreSQL, and deploy to Container Apps. Start with an assessment.
Modernize ASP.NET MVC 5 and .NET Framework 4.8 to .NET 10 on Container Apps, migrate SQL Express to Azure SQL, and add AI image enrichment. Run the presenter tools on Windows.
Bring a real customer-owned application. Assess, modernize, and deploy your workload to Azure with the Modernization CLI. Start your application upgrade. The three sample tracks below are optional practice, not substitutes for customer delivery. For deeper architecture changes, choose rearchitect / rebuild.
Set up GitHub Copilot Modernization CLI, Docker, Azure CLI, Terraform, and GitHub CLI. Initialise the PhotoAlbum submodule. You can also deploy the legacy app to an Azure VM.
Run modernize assess on PhotoAlbum.
Identify Spring Boot 2→3 blockers, Oracle JDBC issues, and cloud-readiness gaps.
Upgrade PhotoAlbum from Spring Boot 2.7 and Java 8 to Spring Boot 3.x and Java 25. Replace Oracle with PostgreSQL and Azure Blob Storage. Migrate javax to jakarta and update the SQL dialect.
Build a PhotoAlbum container image, push it to Azure Container Registry, and deploy it to Azure Container Apps with Terraform. Provision PostgreSQL Flexible Server and Blob Storage.
Move PhotoAlbum data from Oracle to Azure Database for PostgreSQL Flexible Server and check that the rows match and the app works after cutover.
Add monitoring with the Application Insights Java agent. Manage secrets with Azure Key Vault and Managed Identity.
Generate captions, alt text, and tags for each uploaded photo with Azure OpenAI
gpt-4.1-mini (vision).
Use Managed Identity to authenticate.
Set up GitHub Copilot Modernization CLI, Docker, Azure CLI, Terraform, and GitHub CLI. Initialise the ContosoUniversity submodule. You can also deploy the legacy app to a Windows VM.
Run modernize assess on ContosoUniversity.
Identify MSMQ, System.Web, and cloud-readiness blockers before changing code.
Upgrade ContosoUniversity from .NET Framework 4.8 and ASP.NET MVC 5 to .NET 10 and ASP.NET Core. Replace MSMQ with Azure Service Bus and add Blob Storage. Remove System.Web and convert to SDK-style csproj.
Build a ContosoUniversity container image, push it to Azure Container Registry, and deploy it to Azure Container Apps with Terraform. Provision Azure SQL, Service Bus, and Blob Storage.
Move ContosoUniversity data from LocalDB or SQL Express to Azure SQL Database, then verify the deployed app reads the migrated rows.
Add monitoring with the Application Insights SDK. Manage secrets with Azure Key Vault and Managed Identity.
Suggest course descriptions, learning objectives, and accessible alt text in the Course Create/Edit flow
with Azure OpenAI gpt-4.1-mini (vision).
Use Managed Identity to authenticate.
Install the .NET 10 SDK and check that GitHub Copilot Modernization CLI, Docker, Azure CLI, and Terraform work. Initialise the eShopOnWeb submodule.
Run modernize assess on eShopOnWeb.
Check all 5 projects for Swashbuckle removal, target framework (TFM) blockers, and EF Core 10 changes.
Upgrade all 5 projects to net10.0 via
Directory.Packages.props. Replace Swashbuckle
with Microsoft.AspNetCore.OpenApi and Scalar.
Fix EF Core 10 and Blazor WASM breaking changes.
Use Azure Service Bus for order events and Azure Blob Storage for product images. Update Dockerfiles to .NET 10 base images. Deploy Web and PublicApi to Azure Container Apps with Terraform.
Apply EF Core migrations for both CatalogContext
and AppIdentityDbContext against Azure SQL.
Check the seed data and test the end-to-end order flow.
Trace requests across Web and PublicApi with Application Insights. Use Azure Key Vault and Managed Identity to avoid plaintext secrets.
Generate product descriptions, tags, and accessible alt text in the catalog admin with Azure OpenAI
gpt-4.1-mini (vision).
Use Managed Identity to authenticate.
Follow the prompts from discovery to Azure deployment. Review the package, choose direct, Matt Pocock, or Spec Kit delivery, then rebuild, review, and secure the complete app. Allow two days and choose an app small enough to finish and validate. Discovery may favor a smaller refactor.
Choose an app small enough to rebuild completely. Define required functionality, desired changes, and decision owners. Gather evidence before selecting the target stack.
Recover functional specs, choose an Azure architecture, plan infrastructure, and estimate costs. One planning workflow produces all nine artifacts.
Check the documented behavior, alternatives, architecture, costs, diagrams, and migration assumptions. Request specific corrections and save the reviewed version.
Switch to Opus 5.5. Choose direct implementation, Matt Pocock skills, or Spec Kit. Check the build/test baseline and prepare only your workflow's required spec, tickets, or tasks.
Implement all required workflows on Opus 5.5 and test the complete app. Matt's implementation path uses up to two concurrent subagents.
Run /review and exercise every required workflow. Implement missing behavior, add regression checks, and review the fixes.
Implement approved frontend improvements and verify layout, color, and realistic states. Preserve working behavior; avoid changes without a demonstrated need. Skip only when the app has no UI.
Run /security-review over the complete rebuilt app, including frontend changes. Fix confirmed findings, rerun regression checks, and re-review before deployment.
Run locally, deploy with the provided target-specific infrastructure, and validate the Azure endpoint, integrations, and telemetry. Hand off recovery and cleanup responsibilities.
Facilitation notes, expected outputs, and common problems for each challenge. Toggle with Shift+C.
Plan the two days, guide required decisions, and keep planning separate from delivery. Help teams that are blocked or ahead of schedule.
Check the evidence for each milestone. Distinguish a reviewed plan, a complete working app, and an Azure deployment from partial results.
Check the environment, Oracle Docker RAM requirements (4 GB), submodules, and modernize CLI installation.
Expected assessment findings for Spring Boot 2 to 3 blockers, Oracle JDBC, and BLOB columns, with debrief questions and talking points.
Guidance on pom.xml changes, javax to jakarta migration, the PostgreSQL dialect, and the Azure Blob SDK. Includes common student errors and how to address them.
Terraform checklist for PostgreSQL Flexible Server, Blob Storage, and Container Apps. Naming conventions and common Terraform pitfalls.
Oracle and PostgreSQL differences, the Ora2Pg workflow, troubleshooting,
and a reference implementation with an ora2pg.conf template.
A Dockerfile snippet for the Application Insights Java agent and setup steps for Key Vault and Managed Identity.
Terraform examples for Azure OpenAI and RBAC, azure-ai-openai
snippets, common problems, and a working end-to-end implementation in
Coach/Solutions/java/.
Check setup and confirm that the modernize CLI is on PATH. Understand the expected .NET Framework 4.8 build failure on Linux/macOS.
Expected findings for MSMQ, System.Web, packages.config, Global.asax, Web.config, and local file storage, with debrief questions.
Convert to SDK-style csproj, remove System.Web, move Global.asax startup to Program.cs, replace MSMQ with Service Bus and local file storage with Blob Storage, and adopt EF Core. Includes common problems.
Terraform checklist for Azure SQL, Service Bus, Blob Storage, and Container Apps. Naming conventions and common Terraform pitfalls.
DMS setup, policy exemptions, SQL authentication caveats for the target database, and help with common migration problems.
Application Insights SDK setup and guidance on Key Vault and Managed Identity for the .NET track.
Terraform examples for Azure OpenAI and RBAC, Azure.AI.OpenAI
snippets, common problems, and a working end-to-end implementation in
Coach/Solutions/dotnet/.
Check the environment, .NET 10 SDK, and submodule pin
(NimblePros/eShopOnWeb @ a34eda5),
then discuss the difference between global.json and
Directory.Packages.props.
Expected findings for the critical Swashbuckle blocker, target framework (TFM) updates, and dependent package changes. Includes Central Package Management risks and debrief questions.
A suggested modernize plan goal, a version table for Directory.Packages.props,
a snippet for replacing Swashbuckle with OpenAPI and Scalar, and common problems.
Guidance on Docker build context, the Service Bus singleton pattern, and Blob SAS URLs. Includes a Terraform checklist for Container Apps, SQL, Storage, and Service Bus.
Reference dotnet ef database update commands
for both DbContexts, expected seed row counts, and common Azure SQL firewall problems.
Application Insights setup, Terraform snippets for Key Vault and Managed Identity,
an explanation of the DefaultAzureCredential chain,
and role propagation wait times.
Terraform examples for Azure OpenAI and RBAC, a CatalogItemAiService
implementation with graceful degradation, common problems, and an optional Blazor Web App migration.