Je staging server voltooit de TYPO3 cache rebuild — drieënveertig seconden voor een content change die twee seconden zou moeten duren. Je frontend dev vernieuwt de browser, ziet de update, en mompelt iets over TypoScript dat je waarschijnlijk niet in standup zou moeten herhalen. Deze scene speelt zich dagelijks af in bedrijven in heel Europa, waar TYPO3 twee decennia lang government portals en corporate sites heeft aangedreven. Het CMS werkt nog steeds, technisch gezien. Maar de component-first architectuur van Drupal, de headless toolkit, en een contributorbase die tien keer groter is maken het migratiegesprek onvermijdelijk. De vraag is niet of je moet verhuizen — het is hoe je 8.000 pagina's verplaatst, twintig jaar URL equity bewaart, en je content editors sane houdt tijdens de overgang. We hebben dit scenario zes keer in de afgelopen achttien maanden gedraaid, en het verschil tussen een schone migratie en een ramp wordt bepaald door vier beslissingen die je in de eerste week neemt.

Ik ben de afgelopen jaren tot mijn nek toe in TYPO3-naar-Drupal migraties beland, en het was best een reis om echte content models uit te rafelen. Ze zijn meestal een warboelpje. Deze gids is wat ik had willen hebben voordat ik mijn eerste migratie deed. Ik zal alle technische details, planningsactiviteiten en die vervelende mijnen die je timeline kunnen saboteren als je niet oppast, behandelen.

Inhoudsopgave

TYPO3 naar Drupal Migratie: Een praktische gids voor ontwikkelaars

Waarom organisaties TYPO3 verlaten

Laten we eerlijk zijn: TYPO3 is geen slechte CMS. Het is enorm flexibel, verwerkt multi-site en multi-language setups ingeboren, en heeft een toegewijde fanbase, vooral in de DACH-regio. Dus waarom springen mensen schip?

Ik hoor vrijwel altijd dezelfde redenen:

Beschikbaarheid van ontwikkelaars. Buiten Centraal-Europa is het vinden van TYPO3-ontwikkelaars ongeveer even moeilijk als het vinden van een speld in een hooiberg. Drupal daarentegen heeft volgens Drupal.org's 2024 community report ongeveer 1,3 miljoen ontwikkelaars wereldwijd. TYPO3? Niet zo veel. Als je senior TYPO3-devs besluiten hun koffers te pakken, kan het vullen van die plaatsen eeuwig duren.

Ecosysteemmomentum. Met de release van Drupal 11 aan het einde van 2024 waren er enorme stappen in admin UI, een nieuw recipes system, en geweldige API-first mogelijkheden. Zeker, TYPO3 v13 is solide, maar het innovatietempo in Drupal, vooral rond headless setups, is merkbaar sneller.

Headless/decoupled architectuur. Plan je content te serveren aan een mooie Next.js of Astro frontend? De JSON:API en GraphQL plugins van Drupal zijn doorgewinterde professionals. TYPO3 heeft zijn eigen headless extension, maar die is minder volwassen met kleinere steun.

Totale eigendomskosten. TYPO3 hosten kost meestal meer. De gespecialiseerde infrastructuur betekent dat je meer uit je portemonnee kunt halen. Drupal's contented vrijwel overal van Pantheon tot Acquia, zelfs een basis LAMP-stack houdt het spinnend.

TYPO3 vs Drupal: Een eerlijke vergelijking

Voordat je kopje-onder gaat in een verhuizing, zorg ervoor dat Drupal werkelijk je pijnpunten gaat oplossen. Hier is de situatie per 2026:

Functie TYPO3 v13 Drupal 11
Content Modeling Flexibel maar leunt op TCA Entity/Field system met field management UI
Multi-language Uitstekende native ondersteuning Gelijk 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
Templating Fluid templates + TypoScript Twig templates
Extension/Module Ecosysteem ~1.800 extensies op TER ~50.000+ modules op Drupal.org
Admin UI Sterk, maar gedateerd (krijgt facelift in v13) Strak 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-vereiste PHP 8.2+ PHP 8.3+
Typische agentuurtarief €100-180/uur (DACH-regio) $80-200/uur (globaal)

TYPO3's page tree model is een zeldzaam juweeltje. Editors die verslaafd zijn aan het beheren van ingewikkelde page-hiërarchieën in TYPO3 kunnen Drupal's stijl — de combinatie van content types en taxonomy — een beetje aanpassingsvermogen vereisen. Plan een editortraining in om die overgang te vergemakkelijken.

Pre-migratieaudit en planning

Deze fase bepaalt het lot van de meeste migraties. Het zit in de planning, niet in de technische tijden.

Content Inventory

Begin met het auditen van alles in je TYPO3-setup:

  • Pagina's: Haal die page tree eruit, documenteer elke doktype (paginatype) die je gebruikt.
  • Content elementen: Elke CType (content type) verdient aandacht — of het nu tekst, tekst met afbeelding, HTML, of aangepaste dingen via mask of content_defender is.
  • Extensies: Noteer elke extensie die je hebt. Ontdek of er een Drupal-equivalent is.
  • Bestandsreferenties: TYPO3's FAL (File Abstraction Layer) houdt zich bezig met media. Map deze naar Drupal's media spots.
  • Backend-gebruikers en machtigingen: TYPO3's ingewikkelde backend-gebruikersgroepen met pagina- en veldniveautoegang moeten netjes worden vertaald naar Drupal-rollen en machtigingen.

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 een snel inzicht in de content types waarmee je te maken hebt. In één geval ontdekte ik een TYPO3-instantie met meer dan 40 aangepaste content element types, waarvan alleen een dozijn actief werd gebruikt. Sleep niet dood gewicht mee.

Wat te houden, wat weg te gooien

Hier is je kans om op te ruimen. Gebruik een content audit tool zoals Screaming Frog of Sitebulb om erachter te komen:

  • Pagina's zonder verkeer in het afgelopen jaar
  • Dubbele of bijna identieke content
  • Verbroken interne links
  • Verweesde mediabestanden

Typisch is er een 30-50% content cut in grote TYPO3-migraties. Minder pagina's betekenen snellere migraties.

TYPO3 naar Drupal Migratie: Een praktische gids voor ontwikkelaars - architectuur

Content Modeling: TYPO3 naar Drupal mappen

Rol je mouwen op. Dit is het zware intellectuele werk. TYPO3 en Drupal gaan met content heel anders om.

TYPO3's Model

TYPO3 draait rond pagina's. Alles zit 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 aparte tabellen maar zijn meestal gekoppeld aan pagina's.

Drupal's Model

Drupal gaat helemaal op over entities. Je maakt content types (node bundles) aan, elk met toegewijde velden. Pagina's zijn maar één van veel content types. Taxonomy, paragraphs (met behulp van 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 field of redirect
Content element (CType: text) Paragraph type of Body field
Content element (CType: image) Media entity reference
Content element (CType: textpic) Paragraph type met tekst + 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 naar Paragraphs verplaatsen. TYPO3 stapelt content elementen in page kolommen, wat goed overeenkomt met Drupal's Paragraphs module. Editors stapelen pagina's uit herbruikbare paragraph types — het is verrassend naadloos.

Migratietools en technische aanpak

Drupal's Migrate API rockt. Maar let op, het ontbreekt aan een native TYPO3 source plugin. Je zult een paar aangepaste source plugins moeten maken om uit TYPO3's database te trekken.

Aanpak 1: Directe databasemigratie

Praat Drupal's Migrate API direct naar je TYPO3 MySQL/MariaDB database:

// Voorbeeld migrate source plugin voor TYPO3 pagina's
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 erom volledige controle te hebben en stelt je in staat om TYPO3's bijzonderheden (zoals soft-deletes en workspace overlays) in je codebase af te handelen.

Aanpak 2: Exporteren/Importeren via JSON of XML

Some teams kiezen ervoor om TYPO3 content te exporteren naar gestructureerde formaten (bijvoorbeeld via aangepaste TYPO3 extensies of CLI commands) en deze vervolgens in Drupal te importeren. Zeker, het voegt nog een laag toe, maar het is handig als je terughoudend bent ten aanzien van het onderhouden van directe databaseverbindingen tijdens migratie.

Aanpak 3: Hybride met handmatige review

Heb je een kleinere site (minder dan 500 pagina's)? Het automatisch doen van een gestructureerde data migratie terwijl je sleutellandingspagina's met de hand maakt kan prima uitpakken. Het lijkt wellicht primitief, maar wanneer content verweven is met TYPO3-specifieke rendering logica, resulteert geautomatiseerde migratie vaak in onzin.

TYPO3 TypoScript en extensies afhandelen

TypoScript

Laten we ter zake komen: TypoScript migreert niet. Het is een TYPO3-specifieke config taal, zonder echt equivalent elders. Je taak is om te documenteren wat elk TypoScript template doet in eenvoudige termen en het vervolgens op te bouwen als Twig-templates en Drupal-config. Het is lastig maar nodig.

Extensies

Hier is een handy vergelijking van veel voorkomende TYPO3 extensies en hun Drupal-equivalenten:

TYPO3 Extensie 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 extensies moeten herschreven worden als Drupal modules. Geen shortcuts — zorg ervoor dat je het budget instelt.

URL-structuur en SEO-behoud

Verpest dit, en je verliest organic traffic. Ik heb organisaties zien verliezen tot 40% van hun zoekverkeer na migratie vanwege slecht afgehandelde redirects.

Stappen

  1. Exporteer alle URL's uit TYPO3. Gebruik een CLI tool of crawler voor elke geïndexeerde URL.
  2. Map deze naar Drupal URL's. Gebruik Drupal's Pathauto voor URL alias generatie, blijf dicht bij bestaande URL's.
  3. Maak redirects voor alles wat verandert. Deploy de Redirect module in Drupal. Voor bergen redirects, importeer via CSV.
  4. Zorg voor language prefixes. TYPO3 gebruikt /de/, /en/, /fr/ - zorg dat Drupal's language settings dit spiegelen.
  5. Dien bijgewerkte sitemaps in bij Google Search Console meteen.
# Voorbeeld redirect import CSV format voor 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 het oude TYPO3-exemplaar live, zij het read-only, voor minstens drie maanden na migratie. Je zult gemiste URL's vinden.

Headless gaan na migratie

Drupal blinkt uit met zijn pad naar een decoupled frontend. Met Drupal 11 is de JSON:API module stevig als een rots, en het headless Drupal ecosysteem bloeit.

Als je denkt over een headless aanpak — en in 2026 is dat voor de meeste content-driven sites het overwegen waard — hebben we hier uitvoerig over nagedacht op /solutions/headless-cms-development.

Populaire frontends met Drupal koppelen:

De schoonheid van eerst naar Drupal migreren is dat je met Drupal's default Twig frontend lanceert. Later kun je naar een decoupled variant overschakelen. Probeer niet beide moves tegelijk — dat is om projectchaos vragen.

Tijdlijn, kosten en personeelsschattingen

Echte nummers uit projecten waar ik onderdeel van was, of waarvoor ik accurate gegevens heb (recent jaren):

Sitegrote Pagina's Tijdlijn Budgetbereik Team
Klein <500 pagina's 2-3 maanden €25.000-50.000 2-3 developers
Medium 500-5.000 pagina's 4-6 maanden €50.000-125.000 3-5 developers
Groot 5.000-50.000 pagina's 6-12 maanden €125.000-330.000 5-8 developers
Enterprise 50.000+ pagina's 12-18 maanden €330.000-830.000+ 8-15 developers

Dit omvat alles van discovery, content modeling, migratie, frontend theming, QA en editor training. Lopend onderhoud is hier niet opgenomen.

De grote kostenfactor is niet alleen paginatelling — het is complexiteit. Een 2.000-pagina site met 30 aangepaste content types en 4 talen zal meer kosten dan een simpele 10.000-pagina site.

Specifieke details voor je geval in gedachte? Bekijk /pricing of neem direct contact op.

Post-migratiechecklist

Sla deze checklist niet over. Vertrouw me.

  • Verifieer alle redirects. Zorg dat het 301s zijn.
  • Update Google Search Console met je nieuwe sitemap.
  • Test alle formulieren: contact, newsletter, login.
  • Zorg voor nauwkeurigheid van multi-language content voor elke taal.
  • Migreer mediabestanden accurate met alt text en metadata.
  • Check editor permissions voor elke rol.
  • Leg prestatiemetreken 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.
  • Compleet editor training en lever documentatie af.
  • Houd het oude TYPO3-exemplaar beschikbaar in read-only mode.

Veelgestelde vragen

Hoe lang duurt een TYPO3 naar Drupal migratie doorgaans?
Voor middelgrote sites (500-5.000 pagina's) is het ongeveer 4-6 maanden van start tot launch. De eerste maand? Zuiver discovery en content modeling. Migratiescripting betekent meestal 6-8 weken werk. QA en editor training? Rekenen op nog een maand. Is het een complexe multi-language, multi-site setup met aangepaste extensies, dan kijk je naar 9-12 maanden.

Kan ik TYPO3 content automatisch migreren, of is het handmatig?
Gestructureerde content zoals pagina's, news records, of categorieën? Absoluut een geautomatiseerde job met Drupal's Migrate API. Maar TYPO3's ingewikkelde rendering logic content kan wat handmatige aandacht nodig hebben. De meeste migraties? Ongeveer 70-80% automatisch, 20-30% handmatig.

Verlies ik mijn Google-rankings tijdens de migratie?
Niet als je nauwgezet bent met je redirects. Zet die 301s neer voor URL-wijzigingen, hou je URL-structuur zoveel mogelijk vast, dien die bijgewerkte sitemaps meteen in. Je zal waarschijnlijk een dip zien, zeg 2-6 weken. Maar een rebound is typisch — sites herbouwen doorgaans naar pre-migratie niveaus in 4-8 weken en zien vaak verbetering in drie maanden vanwege betere performance.

Is Drupal moeilijker te leren dan TYPO3 voor content editors?
Anders, niet moeilijker. Zij gewend aan TYPO3's page tree model hebben misschien tijd nodig met Drupal's entity-centric aanpak. De Paragraphs module biedt inderdaad een enigszins gelijkaardig content-building ervaring. Zorg voor ongeveer 2-3 dagen training voor editors en geef hen content type- en workflow-specifieke documentatie.

Wat gebeurt er met mijn TYPO3 extensies tijdens migratie?
Elke extensie verdient individuele beoordeling. Veel hebben directe Drupal-equivalenten (bijv. powermail → Webform, ext:news → custom content type + Views, ext:solr → Search API + Solr). Aangepaste Extbase extensies? Ze zullen volledig herschreven moeten worden als Drupal modules. Er is geen converter — je moet aanpassen.

Zou ik headless gaan wanneer ik van TYPO3 naar Drupal migreer?
Het hangt van je doelen en tijdlijn af. Is je verhuizing ingegeven door developer- of onderhoudbaarheid, begin simpel met Drupal's Twig theming, ga later headless. Maar if your frontend team loves React of iets vergelijkaars, en je hunker naar moderne delivery architectuur, overweeg dan headless van dag één in te plannen. Onthoud alleen: het doen van beide migraties en frontend changes tegelijk? Dat is hogerisicoterrein.

Hoe zorg ik dat multi-language content correct wordt gemigreerd?
TYPO3's language setup (sys_language_uid, l10n_parent) werkt goed met Drupal's Content Translation module. De truc? Nailing language-to-language mapping in je scripts en ervoor zorgen dat fallback aansluit op je verwachtingen. Let op gedeeltelijk vertaalde content — TYPO3's language overlay modes (free, connected, strict) hebben geen precieze Drupal equivalenten. Redactionele besluiten over onvolledige vertalingen kunnen nodig zijn.

Wat is de ROI van migreren van TYPO3 naar Drupal?
Waar zit de ROI? Voornamelijk in het snijden van developer expenses en het versnellen van feature rollout. Historisch zien de teams waar ik gids heb gegeven ongeveer een 20-40% cut in development costs in jaar één, voornamelijk dankzij gemakkelijker talentwerving en een groter module pool dat custom development vermindert. Initialemigratiekosten kunnen stevig zijn, maar de meeste zouden binnen 18-24 maanden break-even moeten bereiken.