PHPackages                             itx/importer - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. itx/importer

ActiveTypo3-cms-extension[Utility &amp; Helpers](/categories/utility)

itx/importer
============

A TYPO3 extension which contains a failure safe framework for building structured import processes.

2.0.0(1y ago)11.2k↑166.7%GPL-2.0-or-laterPHPPHP &gt;=8.1

Since Aug 8Pushed 1y ago1 watchersCompare

[ Source](https://github.com/itx-informationssysteme/typo3-importer)[ Packagist](https://packagist.org/packages/itx/importer)[ Docs](https://www.itx.de/)[ RSS](/packages/itx-importer/feed)WikiDiscussions main Synced 3w ago

READMEChangelog (5)Dependencies (8)Versions (10)Used By (0)

Importer Extension
==================

[](#importer-extension)

This TYPO3 extension provides a failure tolerant structured import system for TYPO3 CMS. It provides a framework to create import jobs which, can be run in parallel. For every import there is a job queue that will be created by a producer class and consumed by a consumer class. The extension also provides a backend module to view and manage the imports, its jobs, statistics and potential failures.

Usage
-----

[](#usage)

### Running the queue worker

[](#running-the-queue-worker)

To run the queue worker for the importer extension, run the following command:

```
vendor/bin/typo3cms importer:queue-worker

```

This will run a single queue worker process. You can run multiple queue workers in parallel to speed up the import.

To have them run automatically in multiple instances, you can use the following command:

```
vendor/bin/typo3cms importer:queue-worker-manager

```

### Importing data

[](#importing-data)

To create a new import, you need to create 3 files:

1. **Producer class**

    The producer class should inherit from the Itx\\Importer\\Command\\Producer\\AbstractJobProducer class. Inside the producer class you make the api calls to get information about the data you want to import. Finally, you will need to use the generateJobs method to create the jobs that will be processed by the queue worker.
2. **Payload class**

    Use a custom payload class to pass typesafe data to the consumer class. This class doesn't getters and setters.
3. **Consumer class**

    The consumer class will be called by the queue worker and needs to implement the ConsumerInterface. It will receive the payload class as a parameter. Inside the consumer class you can use the data from the payload class to import the data into your database. You don't need to register the consumer, it will be automatically detected.

When all jobs were processed the importer will call the finish method on the producer class. Use this method to clean up temporary files or to delete old records.

You will need to register the producer class as a command in a Service.yaml. The naming will be as follows

```
    importer:producer:

```

Make sure to use the same name as for the producer class importer type name method.

Note: If you use the importer extension in another extension you will need to add the following configuration to your extension's Services.yaml (just below \_defaults):

```
_instanceof:
    Itx\Importer\Consumer\ConsumerInterface:
        tags: [ 'queue_consumer' ]
        lazy: true
    Itx\Importer\Command\Producer\AbstractJobProducer:
        tags: [ 'queue_producer' ]
        lazy: true

```

That's it! You can now set up as many queue workers as you want as well as configure a scheduler task for the producer and the import will be executed automatically.

Race conditions and locking
---------------------------

[](#race-conditions-and-locking)

Because every job could be run in parallel by the runtime, there is a chance that the same records might be tried to be imported multiple times. To prevent that from happening, you can use the `Itx\Importer\Service\LockingService::createLock()` method. This method returns a Lock object, on which you can call the `acquire()` method. Make sure to call it with the `blocking=true` argument. Also make sure to call the `release()` method on the lock object when you are done with it. The lock is autoconfigured to be released when the process ends, but it's good practice to release it manually.

Child jobs
----------

[](#child-jobs)

You can create jobs that are discovered while a job is being processed. This is useful if you have to import hierarchical data.

Statistics
----------

[](#statistics)

To create statistics for your import, you can use the `Itx\Importer\Service\StatisticsService::addStatistic()` method. The method can run in parallel and will automatically aggregate the statistics for you. To have data in different places make sure to use the same table name and record name for the same data. The values will be added together, when called multiple times.

You can see the resulting statistics records in the backend module.

Cleanup
-------

[](#cleanup)

There is a cleanup command that can be used to delete previous imports and their data.

```
vendor/bin/typo3cms importer:cleanup

```

###  Health Score

34

—

LowBetter than 75% of packages

Maintenance42

Moderate activity, may be stable

Popularity20

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 89.5% 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 ~40 days

Recently: every ~58 days

Total

8

Last Release

404d ago

Major Versions

0.9 → 1.0.02024-08-16

0.10 → 1.1.02024-09-25

1.1.0 → 2.0.02024-11-22

2.0.0 → v13.x-dev2024-11-22

v11.x-dev → v12.x-dev2025-05-16

### Community

Maintainers

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

---

Top Contributors

[![benjasper](https://avatars.githubusercontent.com/u/28984253?v=4)](https://github.com/benjasper "benjasper (17 commits)")[![lstitx](https://avatars.githubusercontent.com/u/126770572?v=4)](https://github.com/lstitx "lstitx (1 commits)")[![paeddym](https://avatars.githubusercontent.com/u/128425620?v=4)](https://github.com/paeddym "paeddym (1 commits)")

---

Tags

typo3typo3-extensionTYPO3 CMS

###  Code Quality

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/itx-importer/health.svg)

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

###  Alternatives

[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

101466.4k45](/packages/friendsoftypo3-content-blocks)[wazum/sluggi

TYPO3 extension for URL slug management with inline editing, auto-sync, locking, access control, and redirects

41515.2k](/packages/wazum-sluggi)[netresearch/rte-ckeditor-image

Image support in CKEditor for the TYPO3 ecosystem - by Netresearch

611.0M6](/packages/netresearch-rte-ckeditor-image)[yoast-seo-for-typo3/yoast_seo

Yoast SEO for TYPO3

511.7M9](/packages/yoast-seo-for-typo3-yoast-seo)[t3sbs/t3sbootstrap

Startup extension to use bootstrap 5 classes, components and more out of the box. Example and info: \[www.t3sbootstrap.de\](https://www.t3sbootstrap.de)

2316.0k](/packages/t3sbs-t3sbootstrap)[typo3/cms-base-distribution

TYPO3 CMS Base Distribution

19615.0k70](/packages/typo3-cms-base-distribution)

PHPackages © 2026

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