Seu servidor de staging termina a reconstrução do cache TYPO3 — quarenta e três segundos para uma mudança de conteúdo que deveria levar dois. Seu desenvolvedor frontend atualiza o navegador, vê a atualização e murmura algo sobre TypoScript que você provavelmente não deveria repetir na reunião de standup. Essa cena acontece diariamente em empresas em toda a Europa, onde TYPO3 alimentou portais governamentais e sites corporativos por duas décadas. O CMS ainda funciona, tecnicamente. Mas a arquitetura orientada a componentes do Drupal, seu kit de ferramentas headless e uma base de contribuidores dez vezes maior tornam a conversa sobre migração inevitável. A questão não é se migrar — é como migrar 8.000 páginas, preservar vinte anos de equity de URL e manter seus editores de conteúdo sãos durante a transição. Executamos esse plano seis vezes nos últimos dezoito meses, e a diferença entre uma migração limpa e um desastre depende de quatro decisões que você tomará na primeira semana.

Tenho me envolvido profundamente em algumas migrações TYPO3-para-Drupal nos últimos anos, e tem sido uma jornada bem interessante desvendando modelos de conteúdo do mundo real. Eles geralmente são uma bagunça complicada. Este guia é o que eu gostaria que alguém me tivesse entregue antes de minha primeira migração. Vou cobrir todos os detalhes técnicos e minuciosos, os obrigatórios do planejamento e aquelas armadilhas incômodas que podem sabotar sua linha do tempo se você não estiver atento.

Sumário

TYPO3 to Drupal Migration: A Practical Developer's Guide

Por que as Organizações Deixam TYPO3

Sejamos diretos: TYPO3 não é um CMS ruim. É tremendamente flexível, lida com setups multi-site e multi-idioma nativamente, ostentando um número impressionante de fãs, especialmente na região DACH. Então, por que as pessoas abandonam?

Ouço praticamente as mesmas razões toda vez:

Disponibilidade de desenvolvedores. Fora da Europa Central, encontrar desenvolvedores TYPO3 é tão difícil quanto encontrar uma agulha em um palheiro. Drupal, por outro lado, reclama aproximadamente 1,3 milhão de desenvolvedores globalmente, de acordo com o relatório da comunidade 2024 de Drupal.org. TYPO3? Não muito. Se seus desenvolvedores TYPO3 sênior decidirem partir, preencher essas vagas poderia levar uma eternidade.

Momentum do ecossistema. Com o lançamento do Drupal 11 no final de 2024, houve enormes avanços na UI admin, um novo sistema de receitas e capacidades incríveis orientadas a API. Claro, TYPO3 v13 é sólido, mas a taxa de inovação no Drupal, particularmente em torno de setups headless, é notavelmente mais rápida.

Arquitetura headless/desacoplada. Planejando servir conteúdo para um frontend Next.js ou Astro brilhante? O JSON:API e os plugins GraphQL do Drupal são profissionais experientes. TYPO3 tem sua própria extensão headless, mas é menos madura com suporte menor.

Custo total de propriedade. Hospedar TYPO3 geralmente afeta a carteira mais pesadamente. Sua infraestrutura especializada significa que você pode acabar gastando mais. A infraestrutura do Drupal funciona praticamente em qualquer lugar, desde Pantheon até Acquia, até mesmo uma pilha LAMP simples a mantém funcionando bem.

TYPO3 vs Drupal: Uma Comparação Honesta

Antes de se atirar de cabeça em um movimento, certifique-se de que Drupal realmente resolverá suas dores. Aqui está o resumo a partir de 2026:

Recurso TYPO3 v13 Drupal 11
Modelagem de Conteúdo Flexível, mas depende de TCA Sistema Entity/Field com UI de gerenciamento de campos
Multi-idioma Suporte nativo estelar Suporte nativo igualmente estelar
Multi-site Multi-site padrão com árvores de conteúdo Possível, frequentemente melhor com Domain Access ou instalações separadas
Headless/API Tem uma extensão headless JSON:API principal, GraphQL contrib
Templating Apresenta templates Fluid + TypoScript Executa em templates Twig
Extensão/Ecossistema de Módulo ~1.800 extensões em TER ~50.000+ módulos em Drupal.org
Admin UI Forte, mas desatualizada (recebendo um lifting em v13) Elegante e moderna em Drupal 11
Comunidade de Desenvolvedores ~500 colaboradores ativos 8.000+ colaboradores ativos
Opções de Hospedagem Auto-hospedado ou especialista Auto-hospedado, Pantheon, Acquia, Platform.sh, Lagoon
Requisito de PHP PHP 8.2+ PHP 8.3+
Taxa de Agência Típica €100-180/hr (região DACH) $80-200/hr (global)

O modelo de árvore de página do TYPO3 é uma joia rara. Editores apegados a gerenciar hierarquias de página elaboradas em TYPO3 podem achar o estilo do Drupal — a combinação de tipos de conteúdo e taxonomia — requer um pouco de ajuste. Agende algum treinamento do editor para facilitar essa transição.

Auditoria Pré-Migração e Planejamento

Esta etapa determina o destino da maioria das migrações. Tudo está no planejamento, não nos tempos técnicos.

Inventário de Conteúdo

Comece auditando tudo em sua configuração TYPO3:

  • Páginas: Remova essa árvore de página, documentando cada doktype (tipo de página) que você tem em jogo.
  • Elementos de conteúdo: Cada CType (tipo de conteúdo) precisa de atenção — seja texto, texto com imagem, HTML ou coisas personalizadas via mask ou content_defender.
  • Extensões: Anote cada extensão que você tem. Descubra se existe um equivalente Drupal.
  • Referências de arquivo: O FAL (File Abstraction Layer) do TYPO3 lida com mídia. Mapeie-os para spots de mídia do Drupal.
  • Usuários do backend e permissões: Os intrincados grupos de usuários do backend TYPO3 com acesso em nível de página e campo devem ser cuidadosamente traduzidos para funções e permissões do Drupal.

Aqui está uma consulta SQL útil para um resumo de elemento de conteúdo do seu banco de dados TYPO3:

SELECT CType, COUNT(*) as count 
FROM tt_content 
WHERE deleted = 0 AND hidden = 0 
GROUP BY CType 
ORDER BY count DESC;

Com isso, você obtém uma visão rápida dos tipos de conteúdo com os quais está enredado. Em um caso, descobri uma instância TYPO3 ostentando 40+ tipos de elemento de conteúdo personalizados, onde apenas uma dúzia estava sendo usada ativamente. Não traga peso morto.

O que Manter, O que Descartar

Aqui está sua chance de limpar a casa. Use uma ferramenta de auditoria de conteúdo como Screaming Frog ou Sitebulb para descobrir:

  • Páginas sem tráfego no último ano
  • Conteúdo duplicado ou quase idêntico
  • Links internos quebrados
  • Arquivos de mídia órfãos

Tipicamente, há um corte de conteúdo de 30-50% em grandes migrações TYPO3. Menos páginas significam migrações mais rápidas.

TYPO3 to Drupal Migration: A Practical Developer's Guide - architecture

Modelagem de Conteúdo: Mapeando TYPO3 para Drupal

Arregace as mangas. Este é o trabalho intelectual pesado. TYPO3 e Drupal lidam com conteúdo de forma muito diferente.

Modelo TYPO3

TYPO3 gira em torno de páginas. Tudo está escondido em uma árvore de página. Elementos de conteúdo (registros em tt_content) se encaixam nas páginas em colunas (colPos). Registros personalizados definidos por meio de modelos Extbase ou TCA ficam em tabelas separadas, mas geralmente são vinculados a partir de páginas.

Modelo Drupal

Drupal se trata de entidades. Você cria tipos de conteúdo (bundles de nó), cada um com campos dedicados. Páginas são apenas uma entre muitas tipos de conteúdo. Taxonomia, parágrafos (usando o módulo Paragraphs) e Layout Builder dominam a composição de conteúdo estruturado.

O Mapeamento

Aqui está uma tabela de mapeamento típica que uso como minha bússola:

Conceito TYPO3 Equivalente Drupal
Page (doktype: standard) Node (content type: Page)
Page (doktype: shortcut) Redirecionamento de URL
Page (doktype: link) Node com campo de link ou redirecionamento
Content element (CType: text) Tipo Paragraph ou campo Body
Content element (CType: image) Referência de entidade de mídia
Content element (CType: textpic) Tipo Paragraph com texto + mídia
Content element (CType: gridelements) Seção de Layout Builder
Referência de arquivo FAL Entidade de mídia
sys_category Termo Taxonomy
fe_users Entidade de usuário Drupal
be_users Entidade de usuário Drupal com função de admin
Template TypoScript Template Twig
Plugin Extbase Módulo Drupal personalizado
Elementos de conteúdo Mask/DCE Tipos Paragraph

A maior mudança? Mover elementos de conteúdo para Parágrafos. TYPO3 empilha elementos de conteúdo em colunas de página, o que mapeia bem para o módulo Paragraphs do Drupal. Editores empilham páginas a partir de tipos de parágrafo reutilizáveis — é surpreendentemente perfeito.

Ferramentas de Migração e Abordagem Técnica

A Migrate API do Drupal é excelente. Mas atenção, ela não possui um plugin de fonte TYPO3 nativo. Você terá que criar alguns plugins de fonte personalizados para puxar do banco de dados TYPO3.

Abordagem 1: Migração Direta de Banco de Dados

Plugue a Migrate API do Drupal diretamente no banco de dados MySQL/MariaDB TYPO3:

// Exemplo de plugin de fonte de migração para páginas TYPO3
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) {
    // Carrega elementos de conteúdo associados
    $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);
  }
}

Gosto dessa abordagem. É sobre ter controle total e permite lidar com as peculiaridades do TYPO3 (como exclusões suaves e sobreposições de espaço de trabalho) em seu código.

Abordagem 2: Exportar/Importar via JSON ou XML

Algumas equipes optam por exportar conteúdo TYPO3 em formatos estruturados (digamos, por meio de extensões TYPO3 personalizadas ou comandos CLI) e depois importá-los para o Drupal. Claro, adiciona outra camada, mas é útil se você estiver preocupado em manter conexões diretas de banco de dados durante a migração.

Abordagem 3: Híbrida com Revisão Manual

Tem um site menor (menos de 500 páginas)? Fazer uma migração de dados estruturados automaticamente enquanto cria manualmente páginas-chave pode funcionar muito bem. Pode parecer rudimentar, mas quando o conteúdo está entrelaçado com lógica de renderização específica do TYPO3, a migração automatizada frequentemente resulta em disparates.

Lidando com TypoScript TYPO3 e Extensões

TypoScript

Vamos ir direto ao ponto: TypoScript não migra. É uma linguagem de configuração específica do TYPO3, sem contrapartida real em outro lugar. Seu trabalho é documentar o que cada template TypoScript faz em termos leigos e depois reconstruí-lo como templates Twig e configuração Drupal. É doloroso, mas necessário.

Extensões

Aqui está uma comparação útil de extensões TYPO3 comuns e seus equivalentes Drupal:

Extensão TYPO3 Equivalente Drupal
news Tipo de Conteúdo Principal + Views
powermail Módulo Webform
solr (ext:solr) Search API + Solr
realurl / routing Pathauto + roteamento principal
gridelements Layout Builder ou Paragraphs
mask Paragraphs
tt_address Tipo de conteúdo personalizado ou CiviCRM
ke_search Search API
femanager Módulo de Usuário + personalizado
cal/events Tipo de conteúdo personalizado + Views

Extensões Extbase personalizadas precisam ser reescritas como módulos Drupal. Sem atalhos — certifique-se de orçar para isso.

Estrutura de URL e Preservação de SEO

Mess isso, e você perde tráfego orgânico. Tenho visto organizações perderem até 40% de seu tráfego de busca após a migração devido a redirecionamentos mal tratados.

Passos

  1. Exporte todas as URLs de TYPO3. Use uma ferramenta CLI ou um rastreador para cada URL indexada.
  2. Mapeie estas para URLs Drupal. Use Pathauto do Drupal para geração de alias de URL, ficando perto das URLs existentes.
  3. Crie redirecionamentos para tudo o que mudar. Implante o módulo Redirect em Drupal. Para montanhas de redirecionamentos, importe via CSV.
  4. Trate prefixos de idioma. TYPO3 usa /de/, /en/, /fr/ - certifique-se de que as configurações de idioma do Drupal reflitam isso.
  5. Envie sitemaps atualizados para Google Search Console imediatamente.
# Exemplo de formato CSV de importação de redirecionamento para módulo Redirect do Drupal
source,redirect,status_code,language
/alte-seite,/new-page,301,de
/old-page/subpage,/new-page/subpage,301,en
/kontakt,/contact,301,de

Dica profissional: Mantenha a instância TYPO3 antiga em vigor, embora apenas de leitura, por um mínimo de três meses após a migração. Você descobrirá URLs perdidas.

Tornando-se Headless Após a Migração

Drupal brilha em seu caminho para um frontend desacoplado. Com Drupal 11, o módulo JSON:API é sólido como uma rocha, e o ecossistema Drupal headless está prosperando.

Se você está ponderando uma abordagem headless — e em 2026, para a maioria dos sites orientados por conteúdo, vale a pena considerar — exploramos isso em profundidade em /solutions/headless-cms-development.

Emparelhando frontends populares com Drupal:

A beleza de primeiro migrar para Drupal é lançar com o frontend Twig padrão do Drupal. Mais tarde, você pode mudar para um desacoplado. Não tente ambos os movimentos de uma vez — isso é pedir caos do projeto.

Estimativas de Timeline, Custo e Pessoal

Números reais de projetos dos quais participei, ou tenho dados precisos (anos recentes):

Tamanho do Site Páginas Timeline Faixa de Orçamento Time
Pequeno <500 páginas 2-3 meses $30.000-60.000 2-3 desenvolvedores
Médio 500-5.000 páginas 4-6 meses $60.000-150.000 3-5 desenvolvedores
Grande 5.000-50.000 páginas 6-12 meses $150.000-400.000 5-8 desenvolvedores
Enterprise 50.000+ páginas 12-18 meses $400.000-1.000.000+ 8-15 desenvolvedores

Isso inclui tudo, desde descoberta, modelagem de conteúdo, migração, tema de frontend, QA e treinamento do editor. Manutenção contínua não está coberta aqui.

O grande fator de custo não é apenas a contagem de páginas — é complexidade. Um site de 2.000 páginas com 30 tipos de conteúdo personalizados e 4 idiomas custará mais do que um site simples de 10.000 páginas.

Considerando especificidades para seu caso? Confira /pricing ou entre em contato diretamente.

Checklist Pós-Migração

Não pule essa lista. Confie em mim.

  • Verifique todos os redirecionamentos. Certifique-se de que sejam 301s.
  • Atualize o Google Search Console com seu novo sitemap.
  • Teste todos os formulários: contato, boletim informativo, login.
  • Garanta precisão de conteúdo multi-idioma para cada idioma.
  • Migre arquivos de mídia com precisão com texto alternativo e metadados.
  • Verifique as permissões do editor para cada função.
  • Capture métricas de desempenho (Core Web Vitals).
  • Verifique o rastreamento de análises (eventos GA4, objetivos).
  • Configure e teste CDN/cache.
  • Ative cabeçalhos de segurança (CSP, HSTS).
  • Teste sistemas de backup e recuperação de desastre.
  • Conclua o treinamento do editor e forneça documentação.
  • Mantenha a instância TYPO3 antiga disponível em modo somente leitura.

Perguntas Frequentes

Quanto tempo leva uma migração TYPO3 para Drupal?
Para sites de médio porte (500-5.000 páginas), são aproximadamente 4-6 meses do início ao lançamento. O primeiro mês? Puramente descoberta e modelagem de conteúdo. Os scripts de migração geralmente significam 6-8 semanas de trabalho. QA e treinamento do editor? Conte com outro mês. Se é uma configuração complexa multi-idioma, multi-site com extensões personalizadas, você está procurando 9-12 meses.

Posso migrar conteúdo TYPO3 automaticamente, ou é manual?
Conteúdo estruturado como páginas, registros de notícias ou categorias? Absolutamente um trabalho automatizado com a Migrate API do Drupal. Mas a lógica de renderização complexa do TYPO3 conteúdo pode precisar de algum cuidado manual. A maioria das migrações? Cerca de 70-80% automático, 20-30% manual.

Perderei meus rankings no Google durante a migração?
Não se você for diligente com seus redirecionamentos. Defina aqueles 301s para qualquer mudança de URL, prenda-se à sua estrutura de URL o melhor que puder, envie aqueles sitemaps atualizados imediatamente. Você provavelmente verá uma queda, digamos 2-6 semanas. Mas um retorno é típico — os sites geralmente retornam aos níveis pré-migração em 4-8 semanas e frequentemente veem melhorias em três meses devido ao melhor desempenho.

Drupal é mais difícil de aprender do que TYPO3 para editores de conteúdo?
Diferente, não mais difícil. Aqueles acostumados ao modelo de árvore de página do TYPO3 podem precisar de tempo com a abordagem centrada em entidade do Drupal. O módulo Paragraphs oferece uma experiência de construção de conteúdo um tanto semelhante. Lembre-se de orçar cerca de 2-3 dias de treinamento para editores e forneça-lhes documentação específica de tipo de conteúdo e fluxo de trabalho.

O que acontece com minhas extensões TYPO3 durante a migração?
Cada extensão merece uma avaliação individual. Muitas têm equivalentes Drupal diretos (por exemplo, powermail → Webform, ext:news → tipo de conteúdo personalizado + Views, ext:solr → Search API + Solr). Extensões Extbase personalizadas? Elas precisarão de uma reescrita completa como módulos Drupal. Não há conversor — você precisará personalizar.

Devo ir headless ao migrar de TYPO3 para Drupal?
Depende de seus objetivos e cronograma. Se seu movimento é motivado por preocupações com desenvolvedor ou manutenibilidade, comece simples com tematização Twig do Drupal, aponte para headless depois. Mas se sua equipe de frontend ama React ou uma configuração similar, e você deseja uma arquitetura de entrega moderna, considere planejar headless desde o início. Apenas lembre-se: fazer migrações e mudanças de frontend ao mesmo tempo? Esse é um território de alto risco.

Como lidar com conteúdo multi-idioma na migração?
A configuração de idioma TYPO3 (sys_language_uid, l10n_parent) se alinha bem com o módulo Content Translation do Drupal. O truque? Acertar o mapeamento idioma-para-idioma em seus scripts e garantir que o fallback corresponda às suas expectativas. Cuidado com conteúdo parcialmente traduzido — os modos de sobreposição de idioma TYPO3 (livre, conectado, rigoroso) não têm contrapartes precisas em Drupal. Decisões editoriais sobre traduções incompletas podem ser necessárias.

Qual é o ROI de migrar de TYPO3 para Drupal?
Onde está o ROI? Principalmente em cortar despesas de desenvolvedor e acelerar o rollout de recursos. Historicamente, os times que orientei veem um corte de cerca de 20-40% nos custos de desenvolvimento no primeiro ano, principalmente graças à recrutamento de talento mais fácil e a ter um pool de módulos maior que reduz a necessidade de desenvolvimento personalizado. Os custos de migração iniciais podem ser pesados, mas a maioria deveria ficar quites em 18-24 meses.