Tu instancia de TYPO3 registra hoy su renderizado de página número 10.000. Observas los logs de Apache desplazarse, ves multiplicarse las advertencias de extensiones y te das cuenta de que la conversación sobre migración que has ido postergando acaba de volverse urgente. Tras acompañar a seis equipos empresariales en actualizaciones de versiones de TYPO3 y tres migraciones completas de plataforma, he aprendido que las migraciones fluidas comparten un rasgo: comienzan con una lista de verificación antes de que nadie toque producción. ¿La diferencia entre un cambio de tres semanas y un estancamiento de seis meses? Un plan previo al vuelo que mapea cada extensión, audita cada tipo de contenido y pone a prueba tus redirecciones antes de que cambie el DNS. Aquí está la lista de verificación exacta que usamos -- la que mantiene intactos tus rankings SEO y honesto tu calendario de despliegue.

Esta es la lista de verificación que desearía que alguien me hubiera entregado antes de mi primera migración de TYPO3. No es teórica. Cada elemento existe porque he visto qué ocurre cuando lo omites.

Tabla de Contenidos

TYPO3 Migration Checklist: A Developer's Step-by-Step Guide

Evalúa tu instalación actual de TYPO3

Antes de tocar nada, necesitas entender exactamente con qué estás trabajando. Esto suena obvio. No lo es. He llegado a proyectos donde el equipo ni siquiera sabía qué versión de TYPO3 estaban ejecutando en producción.

Auditoría de versión y entorno

Empieza aquí:

# Check your TYPO3 version
php typo3/sysext/core/bin/typo3 --version

# Or check via the backend: Help > About TYPO3

Documenta lo siguiente:

  • Versión de TYPO3 (mayor y menor -- p. ej., TYPO3 v11.5.38 LTS)
  • Versión de PHP en ejecución en el servidor
  • Tipo y versión de la base de datos (MySQL, MariaDB, PostgreSQL)
  • Servidor web (Apache, Nginx)
  • Instalación basada en Composer o clásica -- esto importa enormemente
  • Número de sitios/dominios en la instalación (las configuraciones multisitio añaden complejidad)
  • Número total de páginas y elementos de contenido en el árbol de páginas

Mapeo de usuarios y permisos

El sistema de permisos de usuarios y grupos del backend de TYPO3 es notoriamente granular. Exporta tus tablas be_users y be_groups y documenta:

  • Cuántos usuarios de backend existen
  • Qué permisos personalizados están configurados
  • Qué usuarios tienen acceso de administrador
  • Cualquier anulación personalizada de TSconfig

Si estás migrando a un CMS diferente, necesitarás mapear estos roles al modelo de permisos del nuevo sistema. Si estás actualizando versiones de TYPO3, es posible que algunas configuraciones de permisos necesiten actualizarse.

Complejidad de TypoScript y configuración

Realiza una auditoría rápida de tu configuración de TypoScript:

# Count your TypoScript files
find . -name '*.typoscript' -o -name '*.ts' | wc -l

# Check for setup.txt and constants.txt (legacy format)
find . -name 'setup.txt' -o -name 'constants.txt' | wc -l

Si tienes cientos de archivos TypoScript con configuraciones profundamente anidadas, espera que la migración tome más tiempo. He visto instalaciones de TYPO3 con más de 10.000 líneas de TypoScript que habían evolucionado durante 15 años. Eso no es un proyecto de fin de semana.

Define tu estrategia de migración

Fundamentalmente existen tres tipos de migraciones de TYPO3, y necesitas decidir cuál estás haciendo antes de cualquier otra cosa.

Tipo de migración Cuándo elegirla Complejidad Cronograma típico
Actualización de versión de TYPO3 (p. ej., v10 → v12) Quieres mantenerte en TYPO3 Media-Alta 4-12 semanas
TYPO3 a CMS headless (p. ej., Contentful, Strapi, Sanity) Quieres flexibilidad moderna en el frontend Alta 8-20 semanas
TYPO3 a otro CMS tradicional (p. ej., WordPress, Drupal) Quieres un CMS monolítico diferente Media 6-16 semanas
TYPO3 a TYPO3 headless (usando EXT:headless) Quieres backend de TYPO3 con frontend moderno Media 6-14 semanas

Actualización dentro de TYPO3

Si te quedas en TYPO3, la ruta de actualización oficial requiere pasar por cada versión LTS. No puedes saltar directamente de v8 a v12. Bueno, puedes intentarlo. No lo hagas.

La ruta recomendada a partir de 2026:

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

TYPO3 v13 LTS fue lanzado a finales de 2024 y es la versión de soporte a largo plazo actual. TYPO3 v12 LTS recibirá actualizaciones de seguridad hasta abril de 2026 a través del programa Extended Long Term Support (ELTS).

Migración fuera de TYPO3

Si te estás moviendo a una arquitectura headless -- y honestamente, para muchos equipos esto tiene mucho sentido -- querrás evaluar tus opciones de framework frontend. Hemos realizado un trabajo extenso con Next.js y Astro como capas frontend emparejadas con plataformas CMS headless.

La pregunta clave es: ¿tu modelo de contenido justifica la complejidad de TYPO3? Si estás gestionando un sitio de marketing con 200 páginas, TYPO3 probablemente es excesivo. Si estás gestionando un portal empresarial multilingüe con flujos de trabajo complejos, el trabajo de modelado de contenido durante la migración será significativo independientemente de a dónde vayas.

Auditoría de contenido y mapeo de datos

Aquí es donde las migraciones viven o mueren. El contenido.

Exportación y análisis de la base de datos

TYPO3 almacena contenido principalmente en estas tablas:

  • pages -- la estructura del árbol de páginas
  • tt_content -- elementos de contenido
  • sys_file y sys_file_reference -- activos multimedia (FAL)
  • sys_category -- categorías
  • tx_news_domain_model_news -- si estás usando la extensión de noticias

Exporta tu contenido y obtén números reales:

-- Count pages by type
SELECT doktype, COUNT(*) as count 
FROM pages 
WHERE deleted = 0 
GROUP BY doktype;

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

-- Count file references
SELECT COUNT(*) FROM sys_file WHERE missing = 0;

Mapeo de tipos de contenido

Crea una hoja de cálculo que mapee cada tipo de contenido de TYPO3 (CType) a su equivalente en el sistema de destino. Tipos de contenido comunes de TYPO3 que encontrarás:

  • text, textmedia, textpic -- contenido de texto estándar
  • image -- galerías de imágenes
  • table -- tablas de datos
  • bullets -- listas
  • uploads -- listas de archivos
  • html -- HTML sin procesar (estos siempre son divertidos durante la migración)
  • list -- contenido de plugins (aquí es donde se complica)
  • Tipos de contenido personalizados de extensiones

El CType list es el complicado. Representa contenido de plugins -- listados de noticias, formularios, funcionalidad personalizada -- y cada uno requiere atención individual.

Contenido multilingüe

TYPO3 gestiona las traducciones a través del modo conectado (donde las traducciones están vinculadas a un registro de idioma predeterminado) o el modo libre. Verifica qué enfoque usa tu sitio:

-- Check translation setup
SELECT sys_language_uid, COUNT(*) 
FROM pages 
WHERE deleted = 0 
GROUP BY sys_language_uid;

Si tienes 8 idiomas con traducciones en modo conectado, el mapeo de datos de migración acaba de volverse 8 veces más complejo. Planifica en consecuencia.

TYPO3 Migration Checklist: A Developer's Step-by-Step Guide - architecture

Preparación de la infraestructura técnica

Requisitos del servidor

Si estás actualizando a TYPO3 v13, estos son los requisitos mínimos a partir de 2026:

  • PHP 8.2 o superior (se recomienda 8.3)
  • MySQL 8.0+ o MariaDB 10.4+ o PostgreSQL 12+
  • Límite mínimo de memoria PHP de 256 MB (se recomiendan 512 MB)
  • Composer 2.7+

Entorno de staging

Nunca -- y no puedo enfatizar esto suficientemente -- nunca ejecutes una migración directamente en producción. Configura:

  1. Un entorno de staging que refleje producción
  2. Una copia separada de la base de datos
  3. Configuraciones idénticas de PHP y servidor
  4. Acceso al almacenamiento de archivos (o una copia de fileadmin)
# Clone your database to 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/

Estrategia de respaldo

Antes de que comience cualquier trabajo de migración:

  • Volcado completo de la base de datos con marcas de tiempo
  • Respaldo completo del sistema de archivos incluyendo fileadmin, typo3conf y cualquier directorio de extensiones personalizadas
  • Documenta tu configuración de LocalConfiguration.php y AdditionalConfiguration.php
  • Exporta tus plantillas TypoScript

Almacena estos respaldos en un lugar completamente separado del entorno de migración. Yo mantengo al menos tres copias.

Inventario de extensiones e integraciones

Las extensiones de TYPO3 son probablemente la mayor fuente de dolores de cabeza en las migraciones. Así es como manejarlas.

Lista de todas las extensiones instaladas

# Composer-based installation
composer show | grep typo3

# Or check the PackageStates.php
cat typo3conf/PackageStates.php

Categoriza cada extensión

Para cada extensión, determina:

Categoría Acción requerida Ejemplo
Extensión del sistema central Generalmente gestionada por el asistente de actualización fluid_styled_content, form
Extensión TER mantenida Verifica compatibilidad con la versión de destino news, powermail, solr
Extensión TER abandonada Encuentra reemplazo o solución personalizada Varias
Extensión de sitio personalizada Necesita migración/reescritura manual Tu site_package
Extensión comercial Contacta al proveedor para ruta de migración in2publish, varias

Rutas comunes de migración de extensiones

Algunas extensiones que veo en casi todas las migraciones de TYPO3:

  • EXT:news (Georg Ringer) -- Verifica compatibilidad de versión; v11+ funciona con TYPO3 v12/v13
  • EXT:powermail -- Extensión popular de formularios; las alternativas incluyen EXT:form (núcleo)
  • EXT:realurl -- Obsoleta desde TYPO3 v9; reemplazada por enrutamiento del núcleo
  • EXT:tt_address -- Generalmente actualización directa
  • EXT:gridelements o EXT:flux -- Estas extensiones de maquetación causan más problemas durante las actualizaciones. Si estás migrando fuera de TYPO3, espera un trabajo significativo para extraer contenido de las estructuras de cuadrícula.

Plan de preservación SEO

Omitir esta sección le ha costado a empresas millones en tráfico orgánico. No seas ese equipo.

Mapeo de URLs

  1. Rastrea todo tu sitio actual con Screaming Frog, Sitebulb o Ahrefs
  2. Exporta todas las URLs (espera miles para sitios grandes de TYPO3)
  3. Crea un documento completo de mapeo de URLs 1:1
  4. Identifica tus 100 páginas principales por tráfico orgánico (revisa Google Search Console)
  5. Prioriza la precisión de redirección para las páginas de alto tráfico

Implementación de redirecciones

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

Para redirecciones a gran escala, usa una solución de gestión de redirecciones en lugar de abarrotar miles de reglas en .htaccess. Si estás migrando a una pila moderna, la mayoría de los frameworks y plataformas de alojamiento (Vercel, Netlify) tienen archivos de configuración de redirecciones.

Migración de metadatos

TYPO3 almacena metadatos SEO en la tabla pages (desde que EXT:seo se convirtió en extensión del núcleo en v9):

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

Asegúrate de exportar y mapear todo esto. Perder tus meta descripciones en 500 páginas es un desastre evitable.

La fase de ejecución de la migración

Para actualizaciones de versión de TYPO3

Sigue esta secuencia para cada paso de versión:

  1. Actualiza las dependencias de Composer a la siguiente versión LTS
  2. Ejecuta el Asistente de Actualización en la herramienta de instalación (Admin Tools > Upgrade)
  3. Ejecuta el analizador de base de datos para actualizar el esquema
  4. Revisa el registro de deprecaciones en busca de problemas
  5. Actualiza las extensiones a versiones compatibles
  6. Corrige las deprecaciones y cambios importantes de TypoScript
  7. Prueba exhaustivamente antes de pasar al siguiente paso de versión
# 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

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

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

Para migraciones de plataforma

Si estás migrando a una arquitectura CMS headless, la fase de ejecución tiene un aspecto diferente:

  1. Configura el nuevo CMS y define los modelos de contenido
  2. Construye scripts de migración para transformar los datos de TYPO3
  3. Migra el contenido por lotes -- comienza con los tipos de contenido más simples
  4. Gestiona los activos multimedia -- descarga desde fileadmin y sube al nuevo almacenamiento de activos
  5. Construye el frontend con tu framework elegido
  6. Implementa las redirecciones antes de la puesta en marcha
  7. Cambio de DNS y monitoreo

Para la transformación real de datos, generalmente escribo scripts en Python o Node.js que leen de la base de datos de TYPO3 y envían contenido al nuevo CMS mediante API:

import mysql.connector
import requests

# Connect to 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 and push to new CMS
    payload = {
        "title": page["title"],
        "slug": page["slug"],
        "seoTitle": page["seo_title"] or page["title"],
        "description": page["og_description"] or page["description"]
    }
    # POST to your new 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}")

Pruebas y aseguramiento de calidad

Lista de verificación de pruebas automatizadas

  • Todas las páginas devuelven códigos de estado 200
  • Sin enlaces internos rotos
  • Todas las imágenes cargan correctamente
  • Los formularios se envían correctamente
  • La funcionalidad de búsqueda funciona
  • El cambio multilingüe funciona
  • Las redirecciones desde las URLs antiguas funcionan correctamente
  • Las URLs canónicas son correctas
  • Los sitemaps XML son válidos y accesibles
  • El robots.txt está configurado correctamente
  • Los certificados SSL son válidos
  • Los tiempos de carga de página son aceptables (menos de 3 segundos)

Pruebas de regresión visual

Usa herramientas como Percy, BackstopJS o Playwright para la comparación visual:

# BackstopJS example
npx backstop init
# Configure scenarios in backstop.json
npx backstop reference  # Capture current site
npx backstop test       # Compare after migration

Benchmarks de rendimiento

Mide antes y después. Tu migración debería mejorar el rendimiento, no degradarlo.

Métrica Objetivo pre-migración Objetivo post-migración
TTFB < 800ms < 200ms
LCP < 2.5s < 1.5s
CLS < 0.1 < 0.05
FID/INP < 200ms < 100ms
Puntuación PageSpeed 50-70 90+

Si estás pasando de TYPO3 renderizado en servidor a un frontend estático o renderizado en el edge, deberías ver mejoras drásticas en estos números.

Monitoreo post-migración

La migración no termina cuando cambias el DNS. Monitorea estos elementos durante al menos 30 días:

  1. Google Search Console -- Observa los errores de rastreo, problemas de cobertura y problemas de indexación. Espera cierta fluctuación en las primeras dos semanas.
  2. Analytics -- Compara los patrones de tráfico semana a semana con las líneas base previas a la migración.
  3. Errores 404 -- Configura el registro de errores 404 y añade redirecciones para cualquier URL que hayas omitido.
  4. Core Web Vitals -- Monitorea datos de usuarios reales a través de CrUX o tu plataforma de analytics.
  5. Logs del servidor -- Observa patrones de error inusuales.

Configura alertas para caídas de tráfico superiores al 20% en cualquier página que estuviera previamente entre tus 50 principales.

Errores comunes en migraciones de TYPO3

Estos son errores que he visto (y a veces cometido) en docenas de migraciones:

1. Ignorar los registros eliminados de forma suave. TYPO3 usa indicadores deleted=1 en lugar de eliminar realmente los registros. Tus scripts de migración necesitan filtrarlos, o importarás miles de registros que fueron eliminados hace años.

2. Olvidar los espacios de trabajo. Si el sitio usa espacios de trabajo de TYPO3 para flujos de trabajo editoriales, es posible que tengas contenido en borrador mezclado en tu exportación. Filtra siempre por t3ver_wsid = 0 para obtener solo el contenido publicado.

3. Subestimar el contenido RTE. La salida del editor de texto enriquecido de TYPO3 puede contener etiquetas personalizadas, etiquetas <link> con sintaxis específica de TYPO3 y URIs t3://. Necesitas analizar y convertir todos estos.

4. Romper las referencias de archivos. La Capa de Abstracción de Archivos (FAL) de TYPO3 usa sys_file_reference para conectar archivos al contenido. No es un simple "campo de imagen en el registro de contenido" -- es una tabla de relaciones. Tus scripts de migración necesitan seguir estas referencias.

5. No probar con volúmenes reales de contenido. Tu script de migración funciona perfectamente con 10 páginas de prueba. Falla catastróficamente con 15.000 páginas y 50.000 elementos de contenido. Prueba siempre a escala.

Si estás planificando una migración y quieres evitar estos errores, hemos guiado a varios equipos empresariales a través de migraciones de TYPO3 -- no dudes en contactarnos y podemos hablar sobre tu situación específica.

Preguntas frecuentes

¿Cuánto tiempo suele durar una migración de TYPO3? Depende en gran medida de la complejidad de tu instalación. Una actualización directa de TYPO3 v11 a v13 para un sitio de un solo idioma con extensiones estándar podría llevar 4-6 semanas. Una migración completa de plataforma de un sitio TYPO3 empresarial multilingüe con extensiones personalizadas puede fácilmente llevar 3-6 meses. La fase de auditoría de contenido por sí sola puede llevar 2-4 semanas para sitios grandes.

¿Puedo omitir versiones LTS de TYPO3 durante una actualización? Técnicamente, no deberías. La recomendación oficial es actualizar a través de cada versión LTS de forma secuencial (v8 → v9 → v10 → v11 → v12 → v13) porque cada versión incluye asistentes de actualización que gestionan las migraciones de datos para ese paso específico. Omitir versiones significa que esas migraciones de datos no se ejecutan y terminarás con datos corruptos o huérfanos. Algunas agencias afirman que pueden hacer actualizaciones saltando versiones, pero he visto que esto causa problemas sutiles de datos que surgen meses después.

¿Debería migrar de TYPO3 a WordPress? Depende de tus necesidades. WordPress gestiona bien los sitios de marketing simples, pero si elegiste TYPO3 originalmente por requisitos complejos de múltiples idiomas, permisos granulares o flujos de trabajo empresariales, WordPress podría ser un paso atrás. Considera si un CMS headless emparejado con un framework de frontend moderno podría ser una mejor opción. Hemos escrito sobre enfoques de desarrollo de CMS headless que a menudo tienen más sentido para los equipos que abandonan plataformas CMS empresariales.

¿Qué ocurre con mis rankings SEO durante una migración de TYPO3? Espera cierta fluctuación en los rankings durante 2-6 semanas, incluso con redirecciones perfectas. Google necesita tiempo para volver a rastrear e indexar tu contenido. Para minimizar el impacto: implementa redirecciones 301 para cada URL, mantén tu estructura de contenido lo más cercana posible a la original, envía sitemaps actualizados de inmediato y usa la herramienta de Cambio de Dirección en Google Search Console si estás cambiando de dominio. Los sitios que gestionan correctamente las redirecciones suelen recuperarse en 4-8 semanas.

¿Cómo gestiono las extensiones de TYPO3 que no existen en la plataforma de destino? Primero, determina qué hace realmente la extensión. Muchas extensiones de TYPO3 proporcionan funcionalidad que está integrada en las plataformas modernas (como constructores de formularios, herramientas SEO o gestión de redirecciones). Para la funcionalidad personalizada, necesitarás encontrar un plugin/servicio equivalente o construir características personalizadas. Crea una hoja de cálculo listando cada extensión, su propósito y la estrategia de reemplazo.

¿Vale la pena moverse a TYPO3 headless en lugar de migrar completamente a otra plataforma? La extensión headless de TYPO3 (EXT:headless) es una opción legítima si tu equipo se siente cómodo con el backend de TYPO3 pero quiere un frontend moderno. Expone el contenido de TYPO3 como APIs JSON, permitiéndote construir tu frontend con Next.js, Nuxt o Astro. Este enfoque preserva tu estructura de contenido existente y los flujos de trabajo editoriales mientras moderniza la capa de presentación. Es un buen término medio, aunque significa que aún estás manteniendo un backend de TYPO3.

¿Cuál es el costo de una migración de TYPO3 en 2026? Cifras aproximadas: una actualización de versión de TYPO3 para un sitio de tamaño mediano cuesta entre $15.000 y $50.000. Una migración completa de plataforma a una arquitectura headless oscila entre $40.000 y $150.000 o más, dependiendo del volumen de contenido, el número de idiomas, la funcionalidad personalizada y la complejidad de las integraciones. No son cifras pequeñas, pero compáralas con el costo de mantener una instalación de CMS desactualizada e insegura. Puedes consultar nuestra página de precios para más detalles sobre cómo estructuramos estos proyectos.

¿Necesito reconstruir mis plantillas desde cero? Para actualizaciones de versión de TYPO3, generalmente no del todo -- pero sí necesitarás actualizar las plantillas Fluid para gestionar los ViewHelpers obsoletos y las nuevas APIs. Para migraciones de plataforma, sí, estás construyendo un nuevo frontend. La buena noticia es que los frameworks modernos como Next.js y Astro hacen significativamente más rápido construir frontends de alto rendimiento de lo que era en la era de Fluid/TypoScript. Tu diseño puede mantenerse igual; solo cambia la implementación.

Conclusión clave: Audita tu versión de TYPO3 y el stack de extensiones antes de tocar producción.