PHPackages                             in2code/migration - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. in2code/migration

ActiveTypo3-cms-extension[Database &amp; ORM](/categories/database)

in2code/migration
=================

Framework for any kind of TYPO3 migrations and imports. Also exports and imports content from and to json files.

12.9.0(5mo ago)6277.0k↓15.9%21[1 PRs](https://github.com/in2code-de/migration/pulls)3GPL-2.0-or-laterPHPPHP ^8.1

Since Jul 26Pushed 3mo ago6 watchersCompare

[ Source](https://github.com/in2code-de/migration)[ Packagist](https://packagist.org/packages/in2code/migration)[ Docs](https://github.com/einpraegsam/migration)[ RSS](/packages/in2code-migration/feed)WikiDiscussions 12 Synced 1mo ago

READMEChangelogDependencies (4)Versions (69)Used By (3)

TYPO3 Migration Framework
=========================

[](#typo3-migration-framework)

Description
-----------

[](#description)

This extension (**EXT:migration**) is a helper extension for your TYPO3 updates and migrations based on CLI commands (to prevent timeouts, use a better performance, etc...).

What can this extension do for you:

- [Migration](Documentation/Migration.md) of table values
- [Import](Documentation/Migration.md) tables values from other tables
- [Port: Export](Documentation/Port.md) of whole page branches with all records and files as json
- [Port: Import](Documentation/Port.md) of whole page branches with all records and files from json into an existing table (and gives new identifiers and relations)
- [Page actions](Documentation/Helper.md) (move, copy and delete) from CLI

This framework extension helped us (in2code) in some really large projects to migrate some stuff - e.g.:

- old backendlayouts to new backendlayouts
- tt\_news to tx\_news
- templatevoila to backendlayouts and gridelements
- mailform to powermail or mailform to form
- individual stuff to different individual stuff

**Note**: This extension is not a ready-to-use extension for your (e.g.) tt\_news to tx\_news migration. In my eyes it's nearly not possible to build a one-solves-all migrator extension that automatically fits all needs of your installation. Because TYPO3 instances can be build in such different ways an individual configuration is often needed.

**Note2**: If you want to use this extension for your migrations, you need a basic understanding of the database structure of your TYPO3 instance. Because you have to set up the migrators and importers by yourself (e.g. you have to know that tt\_news.title will be migrated to tx\_news\_domain\_model\_news.title for your news migration, etc...).

Some naming conventions:

- **Import** means here: Import stuff from an old to a new table (like from tt\_news to tx\_news\_domain\_model\_news)
- **Migrate** means here: Migrate existing records in an existing table (like in tt\_content from TemplaVoila to Gridelements)

Introduction
------------

[](#introduction)

### Possible roadmap for TYPO3 update and migration projects

[](#possible-roadmap-for-typo3-update-and-migration-projects)

If your migration comes along with a TYPO3 update (like from 6.2 to 9.5 or so), you should go this way:

- Update
    - Start with an empty database and a new TYPO3 9.5 and build your functions in it with some testpages
    - Add additional functions that are needed to your small test instance (like news, powermail, own content elements, etc...)
    - Of course I would recommend to store the complete configuration (TypoScript, TSConfig etc...) in an extension (sitepackage)
- Preperation
    - Import your old database into the new instance
    - Make a db compare (I would recommend the package **typo3\_console** for this to do this from CLI)
    - Make your update wizard steps (I would also recommend the package **typo3\_console** for this to do this from CLI)
- Migration
    - Dump your new database
    - Add an extension (e.g. key `migration_extend`) with a composer.json and require `in2code/migration` in it
    - Install this extension (e.g. in require\_dev section)
    - Start with adding your own Migrators and Importers to your extension (Add a configuration file to your extension)
    - And then have fun with migrating, rolling back database, update your scripts, migrate again, and so on
- Finish
    - If you are finished and have a good result, you simply can remove both extensions
    - See also

Example CLI commands
--------------------

[](#example-cli-commands)

```
# Example migration
./vendor/bin/typo3 migration:migrate --configuration EXT:migration_extend/Configuration/Migration.php

# Example export into json file
./vendor/bin/typo3 migration:export 123 > /home/user/export.json

# Example import from json file
./vendor/bin/typo3 migration:import /home/user/export.json 123

```

See documenation for a detailed description of all CLI commands

Documenation
------------

[](#documenation)

- [Migration and Import](Documentation/Migration.md)
- [Port (Import and Export)](Documentation/Port.md)
- [Helpers](Documentation/Helper.md)

Breaking changes
----------------

[](#breaking-changes)

- Update to 7.6.0: This is only a small breaking change because constructors in extended with a configuration array now. If you are using own propertyHelpers and you overwrote \_\_construct(), you have also to pass the new variable now.

Early Access Programm for TYPO3 14 support
------------------------------------------

[](#early-access-programm-for-typo3-14-support)

ℹ️ **TYPO3 14 compatibility**

> See [EAP page (DE)](https://www.in2code.de/agentur/typo3-extensions/early-access-programm/) or [EAP page (EN)](https://www.in2code.de/en/agency/typo3-extensions/early-access-program/) for more information how to get access to a TYPO3 14 version

Changelog
---------

[](#changelog)

VersionDateStateDescription12.9.02025-11-25FeatureShow classname in importer/migrator logs for better debugging, harden FlexFormGeneratorPropertyHelper against null values12.8.52025-09-14BugfixSupport anchor links for imports again, sys\_file\_metadata is also imported on root now12.8.42025-08-04BugfixAllow 0 as relation value in FlexForms when importing (for keepNotMatchingIdentifiers=false)12.8.32025-07-23BugfixUse correct orderings in export.json file: Default language before localized records12.8.22025-06-27BugfixFix page relations with sections for imports12.8.12025-06-16BugfixUse correct page translations when exporting12.7.02025-06-10FeatureAllow manipulating of values while runtime with Queue class12.6.02025-05-17FeatureAdd new message type "warning" to migration log, allow imports to PID 0 now any pages, suppress errors when parsing invalid HTML with ReplaceCssClassesInHtmlStringPropertyHelper12.5.12025-05-06BugfixShow class name if there is a misconfiguration in migrator/importer classes, Don't add empty lines when using ReplaceCssClassesInHtmlStringPropertyHelper class12.5.02025-04-30FeatureFilter by type of message in migration12.4.02025-04-29FeatureImport: Allow to load assets from an online source12.3.12025-04-29BugfixMerge duplicate occurrences of the function createFolderIfNotExists() to one place, and make it really public12.3.02025-04-28FeatureNew events for file import manipulation, make createFolderIfNotExists() public, prevent exception when importing MM tables, code cleanup12.2.02025-04-02FeatureRespect also \_migrated=1 for Migrators now12.1.02025-04-02FeatureAdd new (Property)Helper class for updating file relations, resolve EXT:path correct for imports12.0.02025-04-01TaskSupport TYPO3 13 (+12) and drop support for TYPO3 1111.2.12024-06-06BugfixFix column name for FlexForm configuration in Port.php, don't add mm-entries with zero-values to prevent garbage and duplication-errors in mysql11.2.02024-06-06FeatureExtend default configuration with newer news plugins, container and powermail\_cond settings, prevent duplicate mm table entries, support sections in links now, prevent some missing array key errors11.1.02024-06-06Tasksys\_file\_metadata records should also be importend and exported, move "beforeEvent" really before import data is generated, prevent some missing array key errors, prevent array to string conversion message11.0.12024-01-31BugfixFix some smaller issues (e.g. missing array keys, etc...)11.0.02024-01-10TaskSupport TYPO3 12 and 11, some bugfixes10.0.02023-03-17TaskSome smaller PHP 8 related fixes, first code cleanup for TYPO3 12 (e.g. ObjectUtility::getObjectManager() was removed)9.0.02022-09-08FeatureAdd property helpers for gridelements to container migration8.0.12022-05-10BugfixSmall fix in the import class for merging arrays with excluding tables8.0.02022-04-17FeatureSupport TYPO3 11 and drop older versions7.8.02022-04-17FeatureAdd an additional command for complex datahandler stuff on CLI7.7.02022-01-21FeatureAdd helper classes to FlexFormGeneratorPropertyHelper for even more power7.6.12021-11-25BugfixReplace property helper should also handle array values7.6.0 (!!!)2021-10-29FeatureMake configuration available in propertyHelper classes7.5.02021-10-11FeatureImport: Make the old identifiers available after importing7.4.02021-07-05FeaturePort: Support inline relations with a parent relation now7.3.02021-03-17TaskFix command description, add extension key to composer.json, add autodeployment7.2.02020-09-14FeatureMake FileHelper::indexFile a public function7.1.02020-08-21TaskSmall bugfix for writeFileFromBase64Code and add a message when adding slugs7.0.02020-05-04TaskUpdate dependencies for TYPO3 9 and 106.7.02020-02-18FeaturePort: Add configuration of EXT:news and in2faq, keep identifiers feature6.6.02020-02-13FeaturePort: Support relations like "tt\_content\_123,pages\_234" now6.5.22020-02-12BugfixFix regression from 6.5.16.5.12020-02-12BugfixMigration: Don't use deleted=0 if there is no deleted field6.5.02020-02-11FeatureAllow usage of {propertiesOld} when using an importer now6.4.02020-02-03FeatureAllow manipulation of values while runtime for importers and migrators6.3.02020-01-31TaskPort: Don't stop if file is missing, Fixes in FileHelper class6.2.02019-12-19FeatureMigration: SlugPropertyHelper creates unique slugs in site now6.1.02019-12-05FeaturePort: Import can now handle huge files (&gt; 6GB) in fileadmin (if not embedded)6.0.02019-11-12FeaturePort with file URI instead of embedding, absolute config path is supported now5.4.02019-11-06FeatureSmall features: Handle defect links, port config for powermail, etc...5.3.02019-10-11TaskPort: Support links to records, some bugfixes, some cleanup5.2.02019-10-02FeatureExport: Attach also files that simply linked in RTE + add localized records5.1.02019-10-02FeatureBugfix with missing tags, toggle file includes, added SlugPropertyHelper5.0.02019-10-01FeaturePort and Migration is now based on an extend-extension with a configuration file4.0.12019-09-16BugfixRestore deleted ArrayUtility class4.0.02019-09-13TaskComplete rewrite for TYPO3 9 with symfony tasks and doctrine, etc...3.1.02019-03-19FeatureUpdate RTE images, Export now with files from links3.0.02019-02-08TaskAdd a working import and export command controller2.0.02018-09-07TaskUse extkey migration, add ImportExportCommandController, some improvements1.1.12018-09-07TaskAdd Changelog1.1.02017-07-28TaskAdd DataHandler and Help CommandControllers1.0.02017-07-26TaskInitial releaseFuture Todos
------------

[](#future-todos)

- Migration: Log errors to file
- Migration: Throw error if given key is not defined
- New: Show and remove unused files as CommandController

###  Health Score

62

—

FairBetter than 99% of packages

Maintenance75

Regular maintenance activity

Popularity45

Moderate usage in the ecosystem

Community28

Small or concentrated contributor base

Maturity86

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 93.2% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~46 days

Recently: every ~31 days

Total

67

Last Release

175d ago

Major Versions

11.3.0 → 12.2.02025-04-23

11.3.1 → 12.5.02025-04-30

11.3.2 → 12.7.02025-06-10

11.3.3 → 12.8.12025-06-16

11.x-dev → 12.8.32025-07-23

PHP version history (2 changes)11.0.0PHP ^7.4 || ^8.0

12.0.0PHP ^8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/c7b0e95a86a09cd1d3f7a0089ae701ccbe840ae9d794def4ef1829ceae48d061?d=identicon)[in2code](/maintainers/in2code)

---

Top Contributors

[![einpraegsam](https://avatars.githubusercontent.com/u/89055?v=4)](https://github.com/einpraegsam "einpraegsam (289 commits)")[![sebastianstein](https://avatars.githubusercontent.com/u/25500519?v=4)](https://github.com/sebastianstein "sebastianstein (4 commits)")[![spoonerWeb](https://avatars.githubusercontent.com/u/1793083?v=4)](https://github.com/spoonerWeb "spoonerWeb (4 commits)")[![featdd](https://avatars.githubusercontent.com/u/5744734?v=4)](https://github.com/featdd "featdd (3 commits)")[![devmes](https://avatars.githubusercontent.com/u/20454675?v=4)](https://github.com/devmes "devmes (2 commits)")[![kszymukowicz](https://avatars.githubusercontent.com/u/1453553?v=4)](https://github.com/kszymukowicz "kszymukowicz (1 commits)")[![mxsteini](https://avatars.githubusercontent.com/u/939861?v=4)](https://github.com/mxsteini "mxsteini (1 commits)")[![sbusemann](https://avatars.githubusercontent.com/u/3660954?v=4)](https://github.com/sbusemann "sbusemann (1 commits)")[![GregorDevelopment](https://avatars.githubusercontent.com/u/23658605?v=4)](https://github.com/GregorDevelopment "GregorDevelopment (1 commits)")[![dahaupt](https://avatars.githubusercontent.com/u/15915048?v=4)](https://github.com/dahaupt "dahaupt (1 commits)")[![dkd-friedrich](https://avatars.githubusercontent.com/u/9529685?v=4)](https://github.com/dkd-friedrich "dkd-friedrich (1 commits)")[![astehlik](https://avatars.githubusercontent.com/u/956513?v=4)](https://github.com/astehlik "astehlik (1 commits)")[![jonakieling](https://avatars.githubusercontent.com/u/876839?v=4)](https://github.com/jonakieling "jonakieling (1 commits)")

---

Tags

boilerplateimportmigrationtypo3migrationimport newstypo3GridelementsTemplaVoila

###  Code Quality

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/in2code-migration/health.svg)

```
[![Health](https://phpackages.com/badges/in2code-migration/health.svg)](https://phpackages.com/packages/in2code-migration)
```

###  Alternatives

[a9f/typo3-fractor

TYPO3 extension for the File Read-Analyse-Change Tool. Allows modifying XML files

17213.8k36](/packages/a9f-typo3-fractor)[kmi/db-sync-tool

Python script to synchronize a database from and to client systems.

323.5k](/packages/kmi-db-sync-tool)[topshelfcraft/walk

A Craft-aware array\_walk() method, plus some super-convenient console commands, to easily call Craft service methods on a collection of elements or values.

221.5k](/packages/topshelfcraft-walk)[stefanfroemken/mysqlreport

Analyze and profile your TYPO3 databases queries

1314.9k](/packages/stefanfroemken-mysqlreport)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
