SlideShare a Scribd company logo
Integrating MVC into
legacy
There is hope yet
The State of Your App
● What does your app look like?
● Using other frameworks?
● Partially converted to Coldbox?
● What are your goals?
Reasons to migrate to a modern framework
● Code organization
● Devs are all using the same organization and patterns
● Consolidated functionality like logging, caching, tier
detection
● Regular updates
● Makes your dev shop more attractive to prospective
employees
Gotcha’s
● You still have to write code
● Not a silver bullet
● Don’t try a full 100% rewrite
● Baby steps are better than trying everything new at once
● Refactor refactor refactor
● The pilot system (write a throwaway test)
Install ColdBox
● Environment (tier) detection
● Can use legacy checks for environment
● It’s ok for the ColdBox config to reference old application
variables
● It’s also possible to find/replace legacy code to use
ColdBox settings!
Application.cfm -> Application.cfc
● Watch out for transcendent variables scope
○ Use onRequest() if needed
function onRequest( targetPage ) {
variables.mySetting = “myValue”;
include arguments.targetPage;
}
Add in ColdBox bootstrap
● ColdBox is always loaded
○ onApplicationStart()
● You get to decide what requests will be
processed by ColdBox
○ onRequestStart()
Create a Layout
● Convert your main layout
● Reuse as much as possible via includes
● This will let you start converting views
Start plugging in ColdBox aspects
● Proactively convert legacy:
○ Logging -> LogBox
○ Caching -> CacheBox
○ CFC creation -> Wirebox
● This can happen outside of ColdBox!
Pick a site area to start
● Maybe something simple like login
● Move .cfm pages into a view
○ Implicit view dispatch
○ Swap out build links calls
Handle external URLs
● Just change them and have people update
bookmarks
● Put in URL rewrites at the web server level
● Put in routing in your Application.cfc to
re-route to ColdBox
Shorten your feedback loop
● When you have a part of the app working, test it and RELEASE IT!
● Don’t try to save up and do a huge chunk. You’ll never finish!
● Use this as an opportunity to do script conversion, etc but don’t get
bogged down
● Employ group code reviews to discuss conventions and stay on the
same page
● Make sure you update your product owner so they know about your
progress!
Legacy/ColdBox App Demo
● https://github.com/bdw429s/coldbox-legacy-app-demo
● Clone repo and start server
● Each page tells you how it works
● Half of the demo site runs legacy .cfm files
● Half of the demo site runs ColdBox handlers

More Related Content

What's hot (20)

PDF
Job Queue Presentation - OSSCamp 2014
OSSCube
 
PPTX
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
COMAQA.BY
 
PDF
ReactJS or Angular
boyney123
 
PPTX
Grails Plugin
guligala
 
PDF
Improving user experience with real user measurements
Samar Panda
 
PDF
React vs angular
500Tech
 
PDF
Angular 2 vs React. What to chose in 2017?
TechMagic
 
PDF
Mobile WebDriver Selendroid
Michael Palotas
 
ODP
Synthetic web performance testing with Selenium
Andriy Samilyak
 
ODP
PHP South Coast - Don't code bake, an introduction to CakePHP 3
David Yell
 
PPTX
Building reliable applications with React, C#, and Azure
Maurice De Beijer [MVP]
 
PPTX
LiveCycle Scripting & Validations
xrum
 
PDF
Soap ui oracle_brm_automated_performance_tests
Madhu Mohan
 
PPTX
Building large and scalable mission critical applications with React
Maurice De Beijer [MVP]
 
PDF
Sandstone HPC: A Domain General Gateway for New Users
Zebula Sampedro
 
PPTX
Angular Illumination
Bryan Arbelo
 
PDF
Stencil the time for vanilla web components has arrived
Gil Fink
 
PPTX
Professional tools and workflows for theme development
Marius Cristea
 
PPTX
Airflow 101
SaarBergerbest
 
PPTX
ASP.NET Core - Phillosophies, Processes and Tooling
💻 Spencer Schneidenbach
 
Job Queue Presentation - OSSCamp 2014
OSSCube
 
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...
COMAQA.BY
 
ReactJS or Angular
boyney123
 
Grails Plugin
guligala
 
Improving user experience with real user measurements
Samar Panda
 
React vs angular
500Tech
 
Angular 2 vs React. What to chose in 2017?
TechMagic
 
Mobile WebDriver Selendroid
Michael Palotas
 
Synthetic web performance testing with Selenium
Andriy Samilyak
 
PHP South Coast - Don't code bake, an introduction to CakePHP 3
David Yell
 
Building reliable applications with React, C#, and Azure
Maurice De Beijer [MVP]
 
LiveCycle Scripting & Validations
xrum
 
Soap ui oracle_brm_automated_performance_tests
Madhu Mohan
 
Building large and scalable mission critical applications with React
Maurice De Beijer [MVP]
 
Sandstone HPC: A Domain General Gateway for New Users
Zebula Sampedro
 
Angular Illumination
Bryan Arbelo
 
Stencil the time for vanilla web components has arrived
Gil Fink
 
Professional tools and workflows for theme development
Marius Cristea
 
Airflow 101
SaarBergerbest
 
ASP.NET Core - Phillosophies, Processes and Tooling
💻 Spencer Schneidenbach
 

Similar to Itb2018 integrating mvc into legacy (20)

PDF
Brad Wood integrating mvc into legacy
Ortus Solutions, Corp
 
PDF
Intro to ColdBox MVC at Japan CFUG
Ortus Solutions, Corp
 
PDF
ITB2016 Converting Legacy Apps into Modern MVC
Ortus Solutions, Corp
 
PDF
CBDW2014 - This is ColdBox 4
Ortus Solutions, Corp
 
PDF
ITB 2023 Real World ColdBox App Architecture - Nolan Erck.pdf
Ortus Solutions, Corp
 
PDF
Take your CFML Legacy Apps to Modernization
Ortus Solutions, Corp
 
PDF
ColdBox Hierarchical MVC for ColdFusion/CFML
Ortus Solutions, Corp
 
PDF
CFWheels - Pragmatic, Beautiful Code
indiver
 
PPTX
ColdFusion Fw1 (FrameWork1) introduction
SaravanaMuthu Jayaraj
 
PDF
ITB2016 Intro To ColdBox MVC
Ortus Solutions, Corp
 
PDF
ITB 2023 Modernizing the App A tale from the trenches- David Paul Belanger.pdf
Ortus Solutions, Corp
 
PDF
Power of Simplicity in FW/1
Masha Edelen
 
PDF
Revamp your monolith with Hierarchical MVC at CFSummit 2018
Ortus Solutions, Corp
 
PDF
Into The Box 2018 Ortus Keynote
Ortus Solutions, Corp
 
PDF
Building a custom cms with django
Yann Malet
 
PDF
Cold box hierarchical mvc
Ortus Solutions, Corp
 
PDF
Isset Presentation @ EECI2009
Isset Internet Professionals
 
PDF
Architecting for scalability in cf
Ted Steinmann
 
PDF
Cisco webex zend con2010 presentation
Enterprise PHP Center
 
PDF
Cisco webex zend con2010 presentation
Enterprise PHP Center
 
Brad Wood integrating mvc into legacy
Ortus Solutions, Corp
 
Intro to ColdBox MVC at Japan CFUG
Ortus Solutions, Corp
 
ITB2016 Converting Legacy Apps into Modern MVC
Ortus Solutions, Corp
 
CBDW2014 - This is ColdBox 4
Ortus Solutions, Corp
 
ITB 2023 Real World ColdBox App Architecture - Nolan Erck.pdf
Ortus Solutions, Corp
 
Take your CFML Legacy Apps to Modernization
Ortus Solutions, Corp
 
ColdBox Hierarchical MVC for ColdFusion/CFML
Ortus Solutions, Corp
 
CFWheels - Pragmatic, Beautiful Code
indiver
 
ColdFusion Fw1 (FrameWork1) introduction
SaravanaMuthu Jayaraj
 
ITB2016 Intro To ColdBox MVC
Ortus Solutions, Corp
 
ITB 2023 Modernizing the App A tale from the trenches- David Paul Belanger.pdf
Ortus Solutions, Corp
 
Power of Simplicity in FW/1
Masha Edelen
 
Revamp your monolith with Hierarchical MVC at CFSummit 2018
Ortus Solutions, Corp
 
Into The Box 2018 Ortus Keynote
Ortus Solutions, Corp
 
Building a custom cms with django
Yann Malet
 
Cold box hierarchical mvc
Ortus Solutions, Corp
 
Isset Presentation @ EECI2009
Isset Internet Professionals
 
Architecting for scalability in cf
Ted Steinmann
 
Cisco webex zend con2010 presentation
Enterprise PHP Center
 
Cisco webex zend con2010 presentation
Enterprise PHP Center
 
Ad

More from Ortus Solutions, Corp (20)

PDF
June Webinar: BoxLang-Dynamic-AWS-Lambda
Ortus Solutions, Corp
 
PDF
BoxLang-Dynamic-AWS-Lambda by Luis Majano.pdf
Ortus Solutions, Corp
 
PDF
What's-New-with-BoxLang-Brad Wood.pptx.pdf
Ortus Solutions, Corp
 
PDF
Getting Started with BoxLang - CFCamp 2025.pdf
Ortus Solutions, Corp
 
PDF
CFCamp2025 - Keynote Day 1 led by Luis Majano.pdf
Ortus Solutions, Corp
 
PDF
What's New with BoxLang Led by Brad Wood.pdf
Ortus Solutions, Corp
 
PDF
Vector Databases and the BoxLangCFML Developer.pdf
Ortus Solutions, Corp
 
PDF
Using cbSSO in a ColdBox App Led by Jacob Beers.pdf
Ortus Solutions, Corp
 
PDF
Use JSON to Slash Your Database Performance.pdf
Ortus Solutions, Corp
 
PDF
Portable CI wGitLab and Github led by Gavin Pickin.pdf
Ortus Solutions, Corp
 
PDF
Tame the Mesh An intro to cross-platform tracing and troubleshooting.pdf
Ortus Solutions, Corp
 
PDF
Supercharging CommandBox with Let's Encrypt.pdf
Ortus Solutions, Corp
 
PDF
Spice up your site with cool animations using GSAP..pdf
Ortus Solutions, Corp
 
PDF
Passkeys and cbSecurity Led by Eric Peterson.pdf
Ortus Solutions, Corp
 
PDF
Legacy Code Nightmares , Hellscapes, and Lessons Learned.pdf
Ortus Solutions, Corp
 
PDF
Integrating the OpenAI API in Your Coldfusion Apps.pdf
Ortus Solutions, Corp
 
PDF
Hidden Gems in FusionReactor for BoxLang, ACF, and Lucee Users.pdf
Ortus Solutions, Corp
 
PDF
Geting-started with BoxLang Led By Raymon Camden.pdf
Ortus Solutions, Corp
 
PDF
From Zero to CRUD with ORM - Led by Annette Liskey.pdf
Ortus Solutions, Corp
 
PDF
Customize your Runtime Creating your first BoxLang Module.pdf
Ortus Solutions, Corp
 
June Webinar: BoxLang-Dynamic-AWS-Lambda
Ortus Solutions, Corp
 
BoxLang-Dynamic-AWS-Lambda by Luis Majano.pdf
Ortus Solutions, Corp
 
What's-New-with-BoxLang-Brad Wood.pptx.pdf
Ortus Solutions, Corp
 
Getting Started with BoxLang - CFCamp 2025.pdf
Ortus Solutions, Corp
 
CFCamp2025 - Keynote Day 1 led by Luis Majano.pdf
Ortus Solutions, Corp
 
What's New with BoxLang Led by Brad Wood.pdf
Ortus Solutions, Corp
 
Vector Databases and the BoxLangCFML Developer.pdf
Ortus Solutions, Corp
 
Using cbSSO in a ColdBox App Led by Jacob Beers.pdf
Ortus Solutions, Corp
 
Use JSON to Slash Your Database Performance.pdf
Ortus Solutions, Corp
 
Portable CI wGitLab and Github led by Gavin Pickin.pdf
Ortus Solutions, Corp
 
Tame the Mesh An intro to cross-platform tracing and troubleshooting.pdf
Ortus Solutions, Corp
 
Supercharging CommandBox with Let's Encrypt.pdf
Ortus Solutions, Corp
 
Spice up your site with cool animations using GSAP..pdf
Ortus Solutions, Corp
 
Passkeys and cbSecurity Led by Eric Peterson.pdf
Ortus Solutions, Corp
 
Legacy Code Nightmares , Hellscapes, and Lessons Learned.pdf
Ortus Solutions, Corp
 
Integrating the OpenAI API in Your Coldfusion Apps.pdf
Ortus Solutions, Corp
 
Hidden Gems in FusionReactor for BoxLang, ACF, and Lucee Users.pdf
Ortus Solutions, Corp
 
Geting-started with BoxLang Led By Raymon Camden.pdf
Ortus Solutions, Corp
 
From Zero to CRUD with ORM - Led by Annette Liskey.pdf
Ortus Solutions, Corp
 
Customize your Runtime Creating your first BoxLang Module.pdf
Ortus Solutions, Corp
 
Ad

Recently uploaded (20)

PDF
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
PDF
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
PDF
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PDF
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
PPTX
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
PPTX
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
PDF
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
PDF
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PPTX
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
LOOPS in C Programming Language - Technology
RishabhDwivedi43
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
Agentforce World Tour Toronto '25 - Supercharge MuleSoft Development with Mod...
Alexandra N. Martinez
 
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
UPDF - AI PDF Editor & Converter Key Features
DealFuel
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 

Itb2018 integrating mvc into legacy

  • 2. The State of Your App ● What does your app look like? ● Using other frameworks? ● Partially converted to Coldbox? ● What are your goals?
  • 3. Reasons to migrate to a modern framework ● Code organization ● Devs are all using the same organization and patterns ● Consolidated functionality like logging, caching, tier detection ● Regular updates ● Makes your dev shop more attractive to prospective employees
  • 4. Gotcha’s ● You still have to write code ● Not a silver bullet ● Don’t try a full 100% rewrite ● Baby steps are better than trying everything new at once ● Refactor refactor refactor ● The pilot system (write a throwaway test)
  • 5. Install ColdBox ● Environment (tier) detection ● Can use legacy checks for environment ● It’s ok for the ColdBox config to reference old application variables ● It’s also possible to find/replace legacy code to use ColdBox settings!
  • 6. Application.cfm -> Application.cfc ● Watch out for transcendent variables scope ○ Use onRequest() if needed function onRequest( targetPage ) { variables.mySetting = “myValue”; include arguments.targetPage; }
  • 7. Add in ColdBox bootstrap ● ColdBox is always loaded ○ onApplicationStart() ● You get to decide what requests will be processed by ColdBox ○ onRequestStart()
  • 8. Create a Layout ● Convert your main layout ● Reuse as much as possible via includes ● This will let you start converting views
  • 9. Start plugging in ColdBox aspects ● Proactively convert legacy: ○ Logging -> LogBox ○ Caching -> CacheBox ○ CFC creation -> Wirebox ● This can happen outside of ColdBox!
  • 10. Pick a site area to start ● Maybe something simple like login ● Move .cfm pages into a view ○ Implicit view dispatch ○ Swap out build links calls
  • 11. Handle external URLs ● Just change them and have people update bookmarks ● Put in URL rewrites at the web server level ● Put in routing in your Application.cfc to re-route to ColdBox
  • 12. Shorten your feedback loop ● When you have a part of the app working, test it and RELEASE IT! ● Don’t try to save up and do a huge chunk. You’ll never finish! ● Use this as an opportunity to do script conversion, etc but don’t get bogged down ● Employ group code reviews to discuss conventions and stay on the same page ● Make sure you update your product owner so they know about your progress!
  • 13. Legacy/ColdBox App Demo ● https://github.com/bdw429s/coldbox-legacy-app-demo ● Clone repo and start server ● Each page tells you how it works ● Half of the demo site runs legacy .cfm files ● Half of the demo site runs ColdBox handlers