Je TYPO3-instantie verwerkt zijn 10.000ste pagina render vandaag. Je bekijkt de Apache logs scrollen, ziet extensiewaarschuwingen zich vermenigvuldigen, en realiseert je dat het migratiegesprek dat je hebt uitgesteld net urgent is geworden. Na zes bedrijfsteams door TYPO3-versie-upgrades en drie volledige platformwijzigingen te hebben geleid, heb ik geleerd dat soepele migraties één kenmerk delen: ze beginnen met een checklist voordat iemand production aanraakt. Het verschil tussen een drie-weken cutover en een zes-maanden stilstand? Een pre-flight plan dat elke extensie in kaart brengt, elk inhoudstype controleert, en je redirects stress-test voordat de DNS omschakelt. Hier is de exacte checklist die we gebruiken — die ene die je SEO-rankings intact houdt en je deploymentschema eerlijk blijft.

Dit is de checklist die ik wilde hebben voordat iemand me handen gaf voor mijn eerste TYPO3-migratie. Het is niet theoretisch. Elk item hier bestaat omdat ik heb gezien wat er gebeurt als je het overslaat.

Inhoudsopgave

TYPO3 Migratiechecklist: Een stap-voor-stap gids voor ontwikkelaars

Beoordeel je huidige TYPO3-installatie

Voordat je iets aanraakt, moet je precies begrijpen waarmee je werkt. Dit klinkt voor de hand liggend. Dat is het niet. Ik ben in projecten binnengekomen waar het team niet eens wist welke TYPO3-versie ze in productie draaiden.

Versie- en omgevingsaudit

Begin hier:

# Controleer je TYPO3-versie
php typo3/sysext/core/bin/typo3 --version

# Of controleer via de backend: Help > About TYPO3

Documenteer het volgende:

  • TYPO3-versie (major en minor — bijv. TYPO3 v11.5.38 LTS)
  • PHP-versie die op de server draait
  • Databasetype en -versie (MySQL, MariaDB, PostgreSQL)
  • Webserver (Apache, Nginx)
  • Composer-gebaseerde of klassieke installatie — dit is enorm belangrijk
  • Aantal sites/domeinen in de installatie (multi-site setups voegen complexiteit toe)
  • Totaal aantal pagina's en content-elementen in de pageboom

Gebruiker- en permissiemapping

TYPO3's backend gebruiker- en groeppermisissysteem is notoir granulaire. Exporteer je be_users en be_groups tabellen en documenteer:

  • Hoeveel backend-gebruikers bestaan
  • Welke aangepaste permissions zijn geconfigureerd
  • Welke gebruikers admin-toegang hebben
  • Aangepaste TSconfig overschrijvingen

Als je naar een ander CMS migreert, zul je deze rollen moeten mappen naar het permissionmodel van het nieuwe systeem. Als je TYPO3-versies upgradet, moeten sommige permissieconfiguraties mogelijk worden bijgewerkt.

TypoScript- en configuratiecomplexiteit

Voer een snelle audit uit van je TypoScript-installatie:

# Tel je TypoScript-bestanden
find . -name '*.typoscript' -o -name '*.ts' | wc -l

# Controleer op setup.txt en constants.txt (legacy format)
find . -name 'setup.txt' -o -name 'constants.txt' | wc -l

Als je honderden TypoScript-bestanden hebt met diep geneste configuraties, duurt de migratie langer. Ik heb TYPO3-installaties gezien met 10.000+ regels TypoScript die over 15 jaar zijn geëvolueerd. Dat is geen weekendproject.

Bepaal je migratieStrategie

Er zijn fundamenteel drie soorten TYPO3-migraties, en je moet bepalen welke je doet voordat iets anders gebeurt.

Migratietype Wanneer kiezen Complexiteit Typische tijdlijn
TYPO3-versie-upgrade (bijv. v10 → v12) Je wilt op TYPO3 blijven Gemiddeld-Hoog 4-12 weken
TYPO3 naar headless CMS (bijv. Contentful, Strapi, Sanity) Je wilt moderne frontend flexibiliteit Hoog 8-20 weken
TYPO3 naar ander traditioneel CMS (bijv. WordPress, Drupal) Je wilt een ander monolithisch CMS Gemiddeld 6-16 weken
TYPO3 naar headless TYPO3 (met EXT:headless) Je wilt TYPO3 backend met moderne frontend Gemiddeld 6-14 weken

TYPO3 upgraden

Als je op TYPO3 blijft, vereist het officiële upgradepath het doorlopen van elke LTS-versie. Je kunt niet rechtstreeks van v8 naar v12 gaan. Nou, je kunt het proberen. Doe dat niet.

Het aanbevolen pad vanaf 2026:

  • v8 LTS → v9 LTS → v10 LTS → v11 LTS → v12 LTS → v13 LTS

TYPO3 v13 LTS werd eind 2024 uitgebracht en is de huidige long-term support versie. TYPO3 v12 LTS ontvangt beveiligingsupdates tot april 2026 via het Extended Long Term Support (ELTS) programma.

Van TYPO3 migreren

Als je naar een headless architectuur gaat — en eerlijk gezegd, voor veel teams is dit logisch — zul je je frontend frameworkopties willen evalueren. We hebben uitgebreid werk verricht met Next.js en Astro als frontend-lagen gekoppeld aan headless CMS-platforms.

De sleutelvragan is: rechtvaardigt je inhoudsmodel de complexiteit van TYPO3? Als je een marketingsite met 200 pagina's draait, is TYPO3 waarschijnlijk overkill. Als je een multi-language enterprise portal met complexe workflows draait, zal het content modeling werk tijdens migratie ongeacht waar je heengaat aanzienlijk zijn.

Content Audit en Data Mapping

Hier leven of sterven migraties. Content.

Database Export en Analyse

TYPO3 slaat content voornamelijk op in deze tabellen:

  • pages — de pageboomstructuur
  • tt_content — content elementen
  • sys_file en sys_file_reference — media assets (FAL)
  • sys_category — categorieën
  • tx_news_domain_model_news — als je de news extension gebruikt

Exporteer je content en krijg echte nummers:

-- Tel pagina's per type
SELECT doktype, COUNT(*) as count 
FROM pages 
WHERE deleted = 0 
GROUP BY doktype;

-- Tel content elementen per type
SELECT CType, COUNT(*) as count 
FROM tt_content 
WHERE deleted = 0 AND hidden = 0 
GROUP BY CType 
ORDER BY count DESC;

-- Tel bestandsverwijzingen
SELECT COUNT(*) FROM sys_file WHERE missing = 0;

Content Type Mapping

Maak een spreadsheet die elk TYPO3-inhoudstype (CType) aan zijn equivalent in het doelsysteem toewijst. Veelvoorkomende TYPO3-content types die je tegenkomt:

  • text, textmedia, textpic — standaard text content
  • image — image galleries
  • table — data tabellen
  • bullets — lijsten
  • uploads — bestandslijsten
  • html — raw HTML (dit is altijd leuk tijdens migratie)
  • list — plugin content (dit wordt ingewikkeld)
  • Aangepaste content types van extensies

De list CType is de lastige. Het vertegenwoordigt plugin content — nieuws lijsten, formulieren, aangepaste functionaliteit — en elk ervan heeft individuele aandacht nodig.

Multi-Language Content

TYPO3 handelt vertalingen via connected mode (waarbij vertalingen aan een standaard taalrecord zijn gekoppeld) of free mode. Controleer welke aanpak je site gebruikt:

-- Controleer vertaalsetup
SELECT sys_language_uid, COUNT(*) 
FROM pages 
WHERE deleted = 0 
GROUP BY sys_language_uid;

Als je 8 talen hebt met connected mode vertalingen, is je migratiedatamapping net 8x complexer geworden. Plan dienovereenkomstig.

TYPO3 Migratiechecklist: Een stap-voor-stap gids voor ontwikkelaars - architectuur

Technische infrastructuurvoorbereiding

Serververeisten

Als je upgradet naar TYPO3 v13, zijn dit de minimumvereisten vanaf 2026:

  • PHP 8.2 of hoger (8.3 aanbevolen)
  • MySQL 8.0+ of MariaDB 10.4+ of PostgreSQL 12+
  • 256MB PHP memory limit minimum (512MB aanbevolen)
  • Composer 2.7+

Staging Environment

Nooit — en ik kan dit niet genoeg benadrukken — voer nooit een migratie rechtstreeks uit op production. Stel in:

  1. Een staging environment dat production weerspiegelt
  2. Een aparte databasekopie
  3. Identieke PHP- en serverconfiguraties
  4. File storage toegang (of een kopie van fileadmin)
# Clone je database naar staging
mysqldump -u root -p production_db | mysql -u root -p staging_db

# Rsync fileadmin
rsync -avz production:/var/www/html/fileadmin/ staging:/var/www/html/fileadmin/

Backup Strategie

Voordat migratiewerk begint:

  • Volledige database dump met timestamps
  • Compleet bestandssysteem backup inclusief fileadmin, typo3conf, en eventuele aangepaste extension directories
  • Documenteer je LocalConfiguration.php en AdditionalConfiguration.php instellingen
  • Exporteer je TypoScript templates

Bewaar deze backups ergens helemaal gescheiden van de migratieomgeving. Ik hou minstens drie kopieën.

Extension en integratie-inventaris

TYPO3 extensions zijn waarschijnlijk de grootste bron van migratiekwellingen. Hier is hoe je ze aanpakt.

Geïnstalleerde Extensions Opsommen

# Composer-gebaseerde installatie
composer show | grep typo3

# Of controleer de PackageStates.php
cat typo3conf/PackageStates.php

Categoriseer elke Extension

Voor elke extension bepaal je:

Categorie Actie vereist Voorbeeld
Core systeemextension Meestal afgehandeld door upgrade wizard fluid_styled_content, form
Onderhouden TER extension Controleer compatibiliteit met doelversie news, powermail, solr
Verlaten TER extension Vind vervanging of aangepaste oplossing Verschillende
Aangepaste site extension Heeft handmatige migratie/herschrijving nodig Je site_package
Commerciële extension Neem contact op met vendor voor migratiepad in2publish, diverse

Veelvoorkomende Extension Migratiepadden

Sommige extensions die ik in bijna elke TYPO3-migratie zie:

  • EXT:news (Georg Ringer) — Controleer versiecompatibiliteit; v11+ werkt met TYPO3 v12/v13
  • EXT:powermail — Populaire formulierextension; alternatieven omvatten EXT:form (core)
  • EXT:realurl — Verouderd sinds TYPO3 v9; vervangen door core routing
  • EXT:tt_address — Meestal rechttoe rechtaan upgrade
  • EXT:gridelements of EXT:flux — Deze layout extensions geven de meeste pijn tijdens upgrades. Als je van TYPO3 migreert, verwacht aanzienlijk werk inhoud uit gridstructuren te extraheren.

SEO-behoudplan

Dit onderdeel overslaan heeft bedrijven miljoenen organisch traffic gekost. Wees niet dat team.

URL Mapping

  1. Crawl je hele huidige site met Screaming Frog, Sitebulb, of Ahrefs
  2. Exporteer alle URLs (verwacht duizenden voor grote TYPO3 sites)
  3. Maak een compleet 1:1 URL mapping document
  4. Identificeer je top 100 pagina's op basis van organisch verkeer (controleer Google Search Console)
  5. Prioritiseer redirect nauwkeurigheid voor high-traffic pagina's

Redirect Implementatie

# Voorbeeld .htaccess redirects
RedirectPermanent /old-typo3-path/page.html /new-path/page
RedirectPermanent /index.php?id=123 /about-us

Voor grootschalige redirects, gebruik een redirect management oplossing in plaats van duizenden regels in .htaccess te proppen. Als je naar een moderne stack gaat, hebben de meeste frameworks en hosting platforms (Vercel, Netlify) redirect configuratiebestanden.

Meta Data Migratie

TYPO3 slaat SEO metadata op in de pages tabel (sinds EXT:seo een core extension werd in v9):

  • seo_title
  • og_title, og_description, og_image
  • twitter_title, twitter_description, twitter_image
  • canonical_link
  • no_index, no_follow

Zorg dat je dit alles exporteert en mapped. Je meta beschrijvingen verliezen over 500 pagina's is een voorkoombare ramp.

De migratie-uitvoeringsfase

Voor TYPO3 Versie-upgrades

Volg deze volgorde voor elke versie stap:

  1. Update Composer dependencies naar de volgende LTS-versie
  2. Voer de Upgrade Wizard uit in het Install Tool (Admin Tools > Upgrade)
  3. Voer database analyzer uit om schema bij te werken
  4. Controleer deprecation log op problemen
  5. Update extensions naar compatibele versies
  6. Fix TypoScript verouderkingen en breaking changes
  7. Test grondig voordat je naar de volgende versie stap gaat
# Update TYPO3 core via Composer
composer require typo3/cms-core:^13.4 typo3/cms-backend:^13.4 \
  typo3/cms-frontend:^13.4 --with-all-dependencies

# Voer upgrade wizards uit via CLI
php typo3/sysext/core/bin/typo3 upgrade:run

# Database schema update
php typo3/sysext/core/bin/typo3 database:updateschema

Voor Platform Migraties

Als je naar een headless CMS architectuur migreert, ziet de uitvoeringsfase er anders uit:

  1. Stel het nieuwe CMS in en configureer content modellen
  2. Bouw migratescripts om TYPO3 data te transformeren
  3. Migreer content in batches — begin met de eenvoudigste content types
  4. Verwerk media assets — download van fileadmin en upload naar nieuwe asset storage
  5. Bouw de frontend met je gekozen framework
  6. Implementeer redirects voordat go-live
  7. DNS cutover en monitoring

Voor de daadwerkelijke datatransformatie schrijf ik typisch Python of Node.js scripts die van de TYPO3 database lezen en content naar het nieuwe CMS via API pushen:

import mysql.connector
import requests

# Verbind met TYPO3 database
db = mysql.connector.connect(
    host="localhost",
    user="typo3",
    password="password",
    database="typo3_db"
)

cursor = db.cursor(dictionary=True)
cursor.execute("""
    SELECT uid, title, description, slug, 
           seo_title, og_description 
    FROM pages 
    WHERE deleted = 0 AND hidden = 0 
    AND sys_language_uid = 0
    ORDER BY sorting
""")

for page in cursor.fetchall():
    # Transform en push naar nieuw CMS
    payload = {
        "title": page["title"],
        "slug": page["slug"],
        "seoTitle": page["seo_title"] or page["title"],
        "description": page["og_description"] or page["description"]
    }
    # POST naar je nieuw CMS API
    response = requests.post(
        "https://api.new-cms.com/content",
        json=payload,
        headers={"Authorization": "Bearer YOUR_TOKEN"}
    )
    print(f"Migrated page {page['uid']}: {response.status_code}")

Testen en kwaliteitsborging

Geautomatiseerde Test Checklist

  • Alle pagina's geven 200 status codes terug
  • Geen verbroken interne links
  • Alle afbeeldingen laden correct
  • Formulieren versturen succesvol
  • Zoekfunctionaliteit werkt
  • Multi-language switching werkt
  • Redirects van oude URLs werken correct
  • Canonieke URLs zijn correct
  • XML sitemaps zijn geldig en toegankelijk
  • robots.txt is correct geconfigureerd
  • SSL certificaten zijn geldig
  • Page load times zijn acceptabel (onder 3 seconden)

Visuele Regressie Tests

Gebruik tools zoals Percy, BackstopJS, of Playwright voor visuele vergelijking:

# BackstopJS voorbeeld
npx backstop init
# Configureer scenarios in backstop.json
npx backstop reference  # Capture huidige site
npx backstop test       # Vergelijk na migratie

Performance Benchmarks

Meet voor en na. Je migratie zou ideaal performance verbeteren, niet verslechteren.

Metriek Pre-Migration Doel Post-Migration Doel
TTFB < 800ms < 200ms
LCP < 2.5s < 1.5s
CLS < 0.1 < 0.05
FID/INP < 200ms < 100ms
PageSpeed Score 50-70 90+

Als je van server-rendered TYPO3 naar een static of edge-rendered frontend gaat, zou je dramatische verbeteringen in deze nummers moeten zien.

Monitoring na migratie

De migratie is niet gedaan als je de DNS flipt. Controleer deze gedurende minstens 30 dagen:

  1. Google Search Console — Kijk uit voor crawl fouten, coverage problemen, en indexeringsproblemen. Verwacht enige fluctuatie in de eerste twee weken.
  2. Analytics — Vergelijk verkeerspatronen week-voor-week met pre-migratie baselines.
  3. 404 fouten — Stel logging in voor 404s en voeg redirects toe voor URLs die je hebt gemist.
  4. Core Web Vitals — Controleer real-user data via CrUX of je analytics platform.
  5. Server logs — Kijk uit voor ongebruikelijke error patronen.

Stel alerts in voor verkeersdalingen die meer dan 20% op een pagina die eerder in je top 50 was.

Veelvoorkomende TYPO3-migratievalkuilen

Dit zijn fouten die ik over tientallen migraties heb gezien (en soms gemaakt):

1. Soft-deleted records negeren. TYPO3 gebruikt deleted=1 vlaggen in plaats van records echt te verwijderen. Je migratescripts moeten deze filteren, anders importeer je duizenden records die jaren geleden werden verwijderd.

2. Workspaces vergeten. Als de site TYPO3 workspaces gebruikt voor redactionele workflows, heb je misschien draft content gemengd in je export. Filter altijd voor t3ver_wsid = 0 om alleen live content te krijgen.

3. RTE content onderschatten. TYPO3's rich text editor output kan aangepaste tags, <link> tags met TYPO3-specifieke syntaxis, en t3:// URIs bevatten. Je moet dit alles parsen en converteren.

4. Bestandsverwijzingen verbreken. TYPO3's File Abstraction Layer (FAL) gebruikt sys_file_reference om bestanden aan content te verbinden. Het is geen eenvoudig "image field op het content record" — het is een relatietabel. Je migratescripts moeten deze referenties volgen.

5. Niet testen met echte content volumes. Je migratescript werkt prima met 10 test pagina's. Het faalt catastrofaal met 15.000 pagina's en 50.000 content elementen. Test altijd op schaal.

Als je een migratie plant en deze valkuilen wilt vermijden, hebben we verschillende bedrijfsteams door TYPO3 migraties geleid — voel je vrij om contact op te nemen en we kunnen je specifieke situatie doornemen.

Veelgestelde vragen

Hoe lang duurt een TYPO3 migratie doorgaans? Dat hangt sterk af van de complexiteit van je installatie. Een eenvoudige TYPO3 v11 naar v13 upgrade voor een single-language site met standaard extensions kan 4-6 weken duren. Een volledige platform migratie van een multi-language enterprise TYPO3 site met aangepaste extensions kan gemakkelijk 3-6 maanden duren. De content audit fase alleen kan 2-4 weken duren voor grote sites.

Kan ik TYPO3 LTS versies overslaan tijdens een upgrade? Technisch gezien, zou je dat niet moeten. De officiële aanbeveling is om te upgraden via elke LTS-versie achtereenvolgens (v8 → v9 → v10 → v11 → v12 → v13) omdat elke versie upgrade wizards bevat die datamigraties voor die specifieke stap afhandelen. Versies overslaan betekent dat deze datamigraties niet uitvoeren, en je eindt met beschadigde of weesorphanede data. Sommige agencies beweren dat ze skip-versie upgrades kunnen doen, maar ik heb subtiele data problemen gezien die maanden later naar boven kwamen.

Moet ik van TYPO3 naar WordPress migreren? Dat hangt af van je behoeften. WordPress handelt eenvoudige marketingsites goed af, maar als je TYPO3 oorspronkelijk koos vanwege complexe multi-language vereisten, granulaire permissions, of enterprise workflows, is WordPress misschien een stap terug. Overweeg of een headless CMS gekoppeld aan een modern frontend framework misschien beter zou passen. We hebben geschreven over headless CMS development benaderingen die vaak meer zin hebben voor teams die enterprise CMS platforms verlaten.

Wat gebeurt met mijn SEO rankings tijdens een TYPO3 migratie? Verwacht enige rankingfluctuatie voor 2-6 weken, zelfs met perfecte redirects. Google heeft tijd nodig om opnieuw te crawlen en je content opnieuw in te indexeren. Om impact te minimaliseren: implementeer 301 redirects voor elke URL, houd je content structuur zo dicht mogelijk bij het origineel, dien bijgewerkte sitemaps onmiddellijk in, en gebruik het Change of Address tool in Google Search Console als je domeinen verandert. Sites die redirects correct afhandelen herstellen doorgaans binnen 4-8 weken.

Hoe ga ik om met TYPO3 extensions die niet op het doelplatform bestaan? Bepaal eerst wat de extension werkelijk doet. Veel TYPO3 extensions bieden functionaliteit die ingebouwd is in moderne platforms (zoals form builders, SEO tools, of redirect management). Voor aangepaste functionaliteit zul je of een equivalent plugin/service moeten vinden of aangepaste features moeten bouwen. Maak een spreadsheet aan met elke extension, zijn doel, en de vervangingsstrategie.

Is het de moeite waard om naar headless TYPO3 te gaan in plaats van volledig af te migreren? De TYPO3 headless extension (EXT:headless) is een legitieme optie als je team zich comfortabel voelt met TYPO3's backend maar een modern frontend wil. Het bloot TYPO3 content als JSON APIs, laat je je frontend bouwen met Next.js, Nuxt, of Astro. Deze benadering behoudt je bestaande content structuur en redactionele workflows terwijl je de presentatielaag moderniseert. Het is een goed middenweg, hoewel het wel betekent dat je nog steeds een TYPO3 backend onderhoudt.

Wat zijn de kosten van een TYPO3 migratie in 2026? Ballpark getallen: een TYPO3 versie upgrade voor een mid-sized site loopt $15.000-$50.000. Een volledige platform migratie naar een headless architectuur varieert van $40.000-$150.000+ afhankelijk van content volume, aantal talen, aangepaste functionaliteit, en integratiecomplexiteit. Dit zijn geen kleine nummers, maar vergelijk ze met de kosten van het onderhoud van een verouderde, onveilige CMS installatie. Je kunt onze pricing pagina checken voor meer details over hoe we deze projecten structureren.

Moet ik mijn templates helemaal opnieuw opbouwen? Voor TYPO3 versie-upgrades, meestal niet volledig — maar je zult wel Fluid templates moeten updaten om verouderde ViewHelpers en nieuwe APIs af te handelen. Voor platform migraties, ja, je bouwt een nieuwe frontend. Het goede nieuws is dat moderne frameworks zoals Next.js en Astro het significant sneller maken om performante frontends te bouwen dan in de Fluid/TypoScript era. Je design kan hetzelfde blijven; de implementatie verandert gewoon.