TYPO3 naar Drupal migratie: Een praktische gids voor ontwikkelaars
TYPO3 naar Drupal: Een praktische gids voor developers
Als je ooit naar een TYPO3 backend hebt gestaard en dacht "er moet toch een betere manier zijn", geloof me, je bent zeker niet alleen. TYPO3 heeft zijn kracht – dat zal ik niet ontkennen. Het is meer dan twintig jaar het CMS favoriete geweest voor talloze Europese ondernemingen en overheidswebsites. Maar laten we eerlijk zijn, het developerland is enorm veranderd. Veel organisaties ontdekken dat Drupal een modernere opzet biedt, een sterker community, en een gemakkelijker pad naar headless/decoupled architecturen.
Ik ben de afgelopen jaren flink betrokken geweest bij een aantal TYPO3-naar-Drupal migraties, en het was een behoorlijk avontuur om echte content modellen uit elkaar te rafelen. Ze zijn meestal een rommelig geheel. Deze gids is wat ik zelf had willen ontvangen voordat ik mijn eerste migratie aanpakte. Ik zal alle technische details behandelen, de essentiële planningspunten, en die lastige valkuilen die je project kunnen vertraging opleveren als je niet uitkijkt.
Inhoudsopgave
- Waarom organisaties TYPO3 verlaten
- TYPO3 vs Drupal: Een eerlijke vergelijking
- Pre-migratie audit en planning
- Content modellering: TYPO3 naar Drupal mapping
- Migratietools en technische aanpak
- TYPO3 TypoScript en Extensions afhandelen
- URL-structuur en SEO-behoud
- Headless worden na migratie
- Tijdlijn, kosten en personeelsramingen
- Post-migratie checklist
- Veelgestelde vragen

Waarom organisaties TYPO3 verlaten
Laten we duidelijk zijn: TYPO3 is geen slecht CMS. Het is enorm flexibel, werkt inherent met multi-site en meertalige opstellingen, en boast een trouwe schare fans vooral in de DACH-regio. Dus waarom stappen mensen over?
Ik hoor telkens dezelfde redenen:
Beschikbaarheid van developers. Buiten Centraal-Europa is het vinden van TYPO3-developers zo moeilijk als het zoeken naar een speld in een hooiberg. Drupal daarentegen claimt ongeveer 1,3 miljoen developers wereldwijd, volgens het community rapport van 2024 op Drupal.org. TYPO3? Niet echt. Als je senior TYPO3-developers besluiten hun biezen te pakken, kan het invullen van die posities eeuwen duren.
Ecosysteem momentum. Met de release van Drupal 11 eind 2024 waren er enorme stappen voorwaarts in de admin-UI, een nieuw receptensysteem, en geweldige API-first mogelijkheden. TYPO3 v13 is zeker solide, maar het innovatietempo in Drupal, vooral rond headless setups, is aanmerkelijk sneller.
Headless/decoupled architectuur. Van plan om content aan een fleurige Next.js of Astro frontend te serveren? Drupal's JSON:API en GraphQL plugins zijn volwassen. TYPO3 heeft zijn eigen headless extension, maar die is minder volgroeid en minder ondersteund.
Total cost of ownership. Het hosten van TYPO3 raakt doorgaans je portemonnee harder. De gespecialiseerde infrastructuur betekent dat je flink kunt uitgeven. Drupal voelt zich prettig op vrijwel alles van Pantheon tot Acquia, zelfs een basale LAMP-stack doet het prima.
TYPO3 vs Drupal: Een eerlijke vergelijking
Zorg ervoor dat Drupal echt je pijnpunten gaat oplossen voordat je kopje-onder gaat. Hier de stand van zaken per 2025:
| Feature | TYPO3 v13 | Drupal 11 |
|---|---|---|
| Content modellering | Flexibel maar leunt op TCA | Entity/Field systeem met field management UI |
| Meertaligheid | Uitstekende native ondersteuning | Evenzo uitstekende native ondersteuning |
| Multi-site | Standaard multi-site met content trees | Mogelijk, vaak beter met Domain Access of aparte installs |
| Headless/API | Heeft een headless extension | JSON:API core, GraphQL contrib |
| Templates | Fluid templates + TypoScript | Draait op Twig templates |
| Extension/Module ecosysteem | ~1.800 extensions op TER | ~50.000+ modules op Drupal.org |
| Admin UI | Sterk, maar gedateerd (krijgt facelift in v13) | Elegant en modern in Drupal 11 |
| Developer community | ~500 actieve contributors | 8.000+ actieve contributors |
| Hosting opties | Self-hosted of specialist | Self-hosted, Pantheon, Acquia, Platform.sh, Lagoon |
| PHP requirement | PHP 8.2+ | PHP 8.3+ |
| Typisch tarief bureau | €100-180/uur (DACH-regio) | $80-200/uur (wereldwijd) |
TYPO3's page tree model is een zeldzaam juweel. Editors die verslaafd zijn aan het beheren van uitgebreide page-hiërarchieën in TYPO3 zouden Drupal's stijl – een combinatie van content types en taxonomy – misschien moeilijk vinden. Plan wat editor training in om die overgang soepel te laten verlopen.
Pre-migratie audit en planning
Deze fase bepaalt het lot van de meeste migraties. Het zit volledig in de planning, niet in de technische timings.
Content inventaris
Begin met het auditen van alles in je TYPO3 setup:
- Pagina's: Pak die page tree uit, documenteer elke
doktype(paginatype) die je gebruikt. - Content elementen: Elk
CType(content type) verdient aandacht – of het nu text, text met afbeelding, HTML is, of custom viamaskofcontent_defender. - Extensions: Noteer elke extension die je hebt. Onderzoek of er een Drupal equivalent is.
- Bestandsreferenties: TYPO3's FAL (File Abstraction Layer) behandelt media. Map deze naar Drupal's media spots.
- Backend users en permissions: TYPO3's ingewikkelde backend user groups met page en field-level toegang moeten netjes worden vertaald naar Drupal roles en permissions.
Hier is een handige SQL-query voor een overzicht van content elementen uit je TYPO3 database:
SELECT CType, COUNT(*) as count
FROM tt_content
WHERE deleted = 0 AND hidden = 0
GROUP BY CType
ORDER BY count DESC;
Hiermee krijg je snel inzicht in welke content types je gebruikt. In één geval vond ik een TYPO3 instance met meer dan 40 custom content element types, waarvan slechts een dozijn werkelijk gebruikt werden. Sleep geen dood gewicht mee.
Wat behouden, wat wegdoen
Dit is je kans om je huis schoon te maken. Gebruik een content audit tool zoals Screaming Frog of Sitebulb om uit te zoeken:
- Pagina's die geen traffic hebben gehad in het afgelopen jaar
- Duplicate of haast identieke content
- Broken internal links
- Verweesde mediabestanden
Typisch is er in grote TYPO3 migraties een 30-50% content afknotting. Minder pagina's betekenen snellere migraties.

Content modellering: TYPO3 naar Drupal mapping
Rol je mouwen op. Dit is het zware intellecutele werk. TYPO3 en Drupal behandelen content heel anders.
TYPO3's model
TYPO3 draait rond pagina's. Alles is opgeborgen in een page tree. Content elementen (records in tt_content) passen op pagina's in kolommen (colPos). Aangepaste records gedefinieerd via Extbase modellen of TCA zitten in afzonderlijke tabellen maar zijn meestal gekoppeld aan pagina's.
Drupal's model
Drupal draait om entities. Je maakt content types (node bundles), elk met toegewijde velden. Pagina's zijn slechts een onder veel content types. Taxonomy, paragraphs (met de Paragraphs module), en Layout Builder beheersen de gestructureerde content compositie.
De mapping
Hier is een typische mapping tabel die ik als kompas gebruik:
| TYPO3 concept | Drupal equivalent |
|---|---|
| Page (doktype: standard) | Node (content type: Page) |
| Page (doktype: shortcut) | URL redirect |
| Page (doktype: link) | Node met link veld of redirect |
| Content element (CType: text) | Paragraph type of Body veld |
| Content element (CType: image) | Media entity reference |
| Content element (CType: textpic) | Paragraph type met text + media |
| Content element (CType: gridelements) | Layout Builder section |
| FAL file reference | Media entity |
| sys_category | Taxonomy term |
| fe_users | Drupal user entity |
| be_users | Drupal user entity met admin role |
| TypoScript template | Twig template |
| Extbase plugin | Custom Drupal module |
| Mask/DCE content elements | Paragraph types |
De grootste verschuiving? Content elementen verplaatsen naar Paragraphs. TYPO3 stapelt content elementen in pagina kolommen, wat goed aansluit bij Drupal's Paragraphs module. Editors stapelen pagina's uit herbruikbare paragraph types – het is verrassend naadloos.
Migratietools en technische aanpak
Drupal's Migrate API is fantastisch. Maar let op, er is geen native TYPO3 source plugin. Je zult wat aangepaste source plugins moeten schrijven om uit TYPO3's database te pullen.
Aanpak 1: Directe database migratie
Koppel Drupal's Migrate API direct aan je TYPO3 MySQL/MariaDB database:
// Example migrate source plugin for TYPO3 pages
namespace Drupal\typo3_migrate\Plugin\migrate\source;
use Drupal\migrate\Plugin\migrate\source\SqlBase;
use Drupal\migrate\Row;
/**
* @MigrateSource(id = "typo3_pages")
*/
class Typo3Pages extends SqlBase {
public function query() {
return $this->select('pages', 'p')
->fields('p', ['uid', 'title', 'slug', 'abstract', 'doktype', 'crdate', 'tstamp'])
->condition('p.deleted', 0)
->condition('p.hidden', 0)
->condition('p.doktype', [1, 4], 'IN');
}
public function fields() {
return [
'uid' => $this->t('Page ID'),
'title' => $this->t('Page title'),
'slug' => $this->t('URL slug'),
'abstract' => $this->t('Abstract/summary'),
];
}
public function getIds() {
return ['uid' => ['type' => 'integer']];
}
public function prepareRow(Row $row) {
// Load associated content elements
$pid = $row->getSourceProperty('uid');
$content = $this->select('tt_content', 'tt')
->fields('tt')
->condition('tt.pid', $pid)
->condition('tt.deleted', 0)
->orderBy('tt.sorting')
->execute()
->fetchAll();
$row->setSourceProperty('content_elements', $content);
return parent::prepareRow($row);
}
}
Ik hou van deze aanpak. Het gaat over volledige controle en stelt je in staat TYPO3's bijzonderheden (zoals soft-deletes en workspace overlays) in je codebase af te handelen.
Aanpak 2: Exporteren/importeren via JSON of XML
Sommige teams kiezen ervoor om TYPO3 content in gestructureerde formaten te exporteren (bijv. via aangepaste TYPO3 extensions of CLI commands) en deze vervolgens in Drupal in te voeren. Zeker, het voegt een laag toe maar is handig als je wary bent voor het onderhouden van directe databaseverbindingen tijdens migratie.
Aanpak 3: Hybride met handmatige review
Heb je een kleinere site (onder de 500 pagina's)? Het automatisch migreren van gestructureerde data terwijl je enkele sleutel landing pages handmatig opmaakt, kan prima werken. Het voelt misschien primitief, maar wanneer content verstrengeld is met TYPO3-specifieke render logic, resulteert geautomatiseerde migratie vaak in rommel.
TYPO3 TypoScript en Extensions afhandelen
TypoScript
Laten we er niet omheen draaien: TypoScript migreert niet. Het is een TYPO3-specifieke config taal, zonder echt equivalent elders. Je taak is documenteren wat elk TypoScript template doet in mensentaal en het vervolgens herbouwen als Twig templates en Drupal config. Het is veeleisend maar onvermijdelijk.
Extensions
Hier is een handig overzicht van gangbare TYPO3 extensions en hun Drupal equivalenten:
| TYPO3 extension | Drupal equivalent |
|---|---|
| news | Core Content Type + Views |
| powermail | Webform module |
| solr (ext:solr) | Search API + Solr |
| realurl / routing | Pathauto + core routing |
| gridelements | Layout Builder of Paragraphs |
| mask | Paragraphs |
| tt_address | Custom content type of CiviCRM |
| ke_search | Search API |
| femanager | User module + custom |
| cal/events | Custom content type + Views |
Aangepaste Extbase extensions moeten als Drupal modules worden herschreven. Er zijn geen snelkoppelingen – je zult deze moeten customizen.
URL-structuur en SEO-behoud
Verpest dit, en je verliest organisch traffic. Ik heb organisaties zien verliezen tot 40% van hun zoektraffic na migratie vanwege slecht afgehandelde redirects.
Stappen
- Exporteer alle URL's uit TYPO3. Gebruik een CLI tool of crawler voor elke geïndexeerde URL.
- Map deze naar Drupal URL's. Gebruik Drupal's Pathauto voor URL-alias generatie, blijf dicht bij bestaande URL's.
- Maak redirects voor alles wat verandert. Voer de Redirect module in Drupal in. Voor grote aantallen redirects, importeer via CSV.
- Behandel taalprefixen. TYPO3 gebruikt
/de/,/en/,/fr/- zorg dat Drupal's taal instellingen dit spiegelen. - Voer bijgewerkte sitemaps in bij Google Search Console meteen.
# Example redirect import CSV format for Drupal's Redirect module
source,redirect,status_code,language
/alte-seite,/new-page,301,de
/old-page/subpage,/new-page/subpage,301,en
/kontakt,/contact,301,de
Pro tip: Houd de oude TYPO3 instance live, zij het read-only, voor minimaal drie maanden na migratie. Je zult gemiste URL's ontdekken.
Headless worden na migratie
Drupal blinkt uit met zijn weg naar een decoupled frontend. Met Drupal 11 is de JSON:API module rotsevast, en het headless Drupal ecosysteem floreert.
Overweeg je een headless aanpak – en in 2025, voor de meeste content-gedreven sites, verdient het overweging – we hebben dit grondig besproken op /solutions/headless-cms-development.
Populaire frontends combineren met Drupal:
- Next.js — De voorkandidaat.
next-drupaldoor Chapter Three maakt het makkelijker. We bespreken dit uitvoerig op /capabilities/nextjs-development. - Astro — Perfect voor content-zware sites die niet te client-intensief zijn. Zie /capabilities/astro-development.
- Nuxt — Mocht Vue jouw speelveld zijn.
De schoonheid van eerst naar Drupal migreren is lanceren met Drupal's standaard Twig frontend. Later kun je naar een decoupled front overstappen. Probeer beide moves tegelijk niet – dat vraagt om projectchaos.
Tijdlijn, kosten en personeelsramingen
Echte nummers uit projecten waar ik bij betrokken was, of accurate data van (2024-2025):
| Site grootte | Pagina's | Tijdlijn | Budget range | Team |
|---|---|---|---|---|
| Klein | <500 pagina's | 2-3 maanden | €30.000-60.000 | 2-3 developers |
| Gemiddeld | 500-5.000 pagina's | 4-6 maanden | €60.000-150.000 | 3-5 developers |
| Groot | 5.000-50.000 pagina's | 6-12 maanden | €150.000-400.000 | 5-8 developers |
| Enterprise | 50.000+ pagina's | 12-18 maanden | €400.000-1.000.000+ | 8-15 developers |
Deze omvatten alles van discovery, content modellering, migratie, frontend theming, QA, en editor training. Lopend onderhoud is niet inbegrepen.
De grote kostenfactor is niet zomaar paginagetal – het is complexiteit. Een 2.000-pagina site met 30 custom content types en 4 talen kost meer dan een simpele 10.000-pagina site.
Zoek je specifieke getallen voor jouw geval? Bekijk /pricing of neem direct contact op.
Post-migratie checklist
Sla deze checklist niet over. Vertrouw me erop.
- Verifieer alle redirects. Zorg dat het 301's zijn.
- Werk Google Search Console bij met je nieuwe sitemap.
- Test alle forms: contact, nieuwsbrief, login.
- Zorg voor nauwkeurigheid meertalige content per taal.
- Migreer mediabestanden correct met alt text en metadata.
- Controleer editor permissions voor elke rol.
- Leg performance metrics vast (Core Web Vitals).
- Verifieer analytics tracking (GA4 events, goals).
- Configureer en test CDN/caching.
- Activeer security headers (CSP, HSTS).
- Test backup en disaster recovery systemen.
- Voltooi editor training en bezorg documentatie.
- Houd de oude TYPO3 instance beschikbaar in read-only modus.
Veelgestelde vragen
Hoe lang duurt een TYPO3 naar Drupal migratie typisch?
Voor mid-size sites (500-5.000 pagina's), duurt het ongeveer 4-6 maanden van start tot launch. De eerste maand? Zuiver discovery en content modellering. Migratie scripting betekent doorgaans 6-8 weken werk. QA en editor training? Reken nog een maand. Mocht het een complexe meertalige, multi-site setup met aangepaste extensions zijn, dan spreken we van 9-12 maanden.
Kan ik TYPO3 content automatisch migreren, of is het handmatig?
Gestructureerde content zoals pagina's, news records, of categorieën? Absoluut geautomatiseerd met Drupal's Migrate API. Maar TYPO3's complexe render logic content heeft misschien wat handmatige verzorging nodig. De meeste migraties? Ongeveer 70-80% automatisch, 20-30% handmatig.
Verlies ik mijn Google rankings tijdens de migratie?
Niet als je hard werkt aan je redirects. Zet 301's voor URL-wijzigingen, hou je URL-structuur zo dicht mogelijk aan elkaar, voer die sitemaps meteen in. Je zult waarschijnlijk een dip zien, zeg 2-6 weken. Maar een opleving is typisch – sites bounsen gewoonlijk terug naar pre-migratie niveaus in 4-8 weken en zien vaak verbeteringen in drie maanden door betere performance.
Is Drupal moeilijker om te leren dan TYPO3 voor content editors?
Ander, niet moeilijker. Degenen gewend aan TYPO3's page tree model hebben misschien tijd nodig voor Drupal's entity-centric aanpak. De Paragraphs module biedt een enigszins gelijkende content-building ervaring. Vergeet niet om ongeveer 2-3 dagen training in te plannen voor editors en bezorg hen documentatie specifiek voor content types en workflows.
Wat gebeurt er met mijn TYPO3 extensions tijdens migratie?
Elke extension verdient individuele beoordeling. Veel hebben directe Drupal equivalenten (bijv. powermail → Webform, ext:news → custom content type + Views, ext:solr → Search API + Solr). Aangepaste Extbase extensions? Die moeten volledig als Drupal modules herschreven worden. Er is geen converter – je zult customizen.
Moet ik headless gaan wanneer ik van TYPO3 naar Drupal migreer?
Hangt af van je doelstellingen en tijdlijn. Mocht je move veroorzaakt zijn door developer of onderhoudsproblemen, begin simpel met Drupal's Twig theming, beoog later headless. Maar mocht je frontend team Next.js of gelijkaardige setup dol zijn, en verlang je naar moderne delivery architectuur, overweeg dan headless van dag één. Onthoud gewoon: beide migraties en frontend changes tegelijk doen? Dat is hoog risicogebied.
Hoe handel ik meertalige content in de migratie af?
TYPO3's taalinstelling (sys_language_uid, l10n_parent) sluit goed aan op Drupal's Content Translation module. De kunst? Taalontaal mapping in je scripts precies krijgen en ervoor zorgen dat fallback aansluit bij je verwachtingen. Pas op voor gedeeltelijk vertaalde content – TYPO3's language overlay modes (free, connected, strict) hebben geen exacte Drupal tegenhangers. Editoriale keuzes rond onvolledige vertalingen zouden nodig kunnen zijn.
Wat is de ROI van migratie van TYPO3 naar Drupal?
Waar zit de ROI? Vooral in het snijden van developer uitgaven en het versnellen van feature rollout. Historisch zien de teams die ik heb begeleid ongeveer een 20-40% kostensne in jaar één, voornamelijk dankzij gemakkelijker talent recruitment en een groter module pool dat minder nood aan custom development veroorzaakt. Initiële migratiekosten kunnen stevig zijn, maar meeste breken even uit binnen 18-24 maanden.