PHPackages                             webcoast/dce-to-contentblocks - 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. webcoast/dce-to-contentblocks

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

webcoast/dce-to-contentblocks
=============================

Migration tool to convert DCE elements to content-blocks

51.0k↓50%3[3 PRs](https://github.com/webcoast-dk/dce-to-contentblocks/pulls)PHP

Since Jun 2Pushed 11mo agoCompare

[ Source](https://github.com/webcoast-dk/dce-to-contentblocks)[ Packagist](https://packagist.org/packages/webcoast/dce-to-contentblocks)[ RSS](/packages/webcoast-dce-to-contentblocks/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

DCE to Content Blocks migration
===============================

[](#dce-to-content-blocks-migration)

This TYPO3 extension helps you migrate your DCE elements on TYPO3 v13 to TYPO3 CMS Content Blocks, the official TYPO3 extension to define Content Types.

Installation
------------

[](#installation)

```
composer require webcoast/dce-to-contentblocks
```

Migration
---------

[](#migration)

```
vendor/bin/typo3 dce:migrate
```

Run this command and select the DCE you would like to migrate and in which extension to save the content block.

Upgrade Wizard
--------------

[](#upgrade-wizard)

Write custom RecordDataMigrators to migrate existing DCE elements to the newly created content blocks.

```
#[AutoconfigureTag('webcoast.dce_to_contentblocks.record_data_migrator')]
#[SourceContentType('dce_dceuid...')] // TODO: set source content type
#[SourceContentType('dce_dceuid...')] // One migrator can have multipe source content types
class ...Migrator extends RecordDataMigrator
{
    protected string $targetContentType = '...'; // TODO: set target content type

    public function migrate(array $flexFormData, array $record): array
    {
        // TODO: return associative array for DataHandler
    }
}
```

### Migrate File Reference

[](#migrate-file-reference)

```
$images = [];
foreach($flexFormData['images'] as $image) {
    if ($image instanceof FileReference) {
        $images[] = $this->updateFileReference($image, 'new_image_field');
    } else if ($image instanceof File) {
        $images[] = $this->addFileReference($image, 'tt_content', 'new_image_field', $record['uid'], $record['pid'], $record['sys_language_uid']);
    }
}
return [
    'new_image_field' => implode(',', $images),
];
```

### Migrate Inline Records

[](#migrate-inline-records)

```
$inlineRecords = [];
$sorting = 8;
foreach ($flexFormData['inline_field'] ?? [] as $link) {
    $inlineRecords[] = $this->addReference('new_inline_table', [
        'title' => $link['title'] ?? '', // e.g.
        'foreign_table_parent_uid' => $record['uid'],
        'sorting' => $sorting,
        'sys_language_uid' => $record['sys_language_uid'],
        'pid' => $record['pid'],
    ]);
    $sorting = $sorting * 2;
}
return [
    'new_inline_field' => implode(',', $inlineRecords),
];
```

###  Health Score

22

—

LowBetter than 22% of packages

Maintenance37

Infrequent updates — may be unmaintained

Popularity25

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity14

Early-stage or recently created project

 Bus Factor1

Top contributor holds 96.6% 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.

### Community

Maintainers

![](https://www.gravatar.com/avatar/40136e31ed1adbb309036dc82652bc7185f763ea98e8de9bc588e3f2a2bde6fc?d=identicon)[webcoast](/maintainers/webcoast)

---

Top Contributors

[![thommyhh](https://avatars.githubusercontent.com/u/13288620?v=4)](https://github.com/thommyhh "thommyhh (28 commits)")[![florianleimer](https://avatars.githubusercontent.com/u/44466890?v=4)](https://github.com/florianleimer "florianleimer (1 commits)")

### Embed Badge

![Health badge](/badges/webcoast-dce-to-contentblocks/health.svg)

```
[![Health](https://phpackages.com/badges/webcoast-dce-to-contentblocks/health.svg)](https://phpackages.com/packages/webcoast-dce-to-contentblocks)
```

###  Alternatives

[spaze/csp-config

Build Content Security Policy from a config file

143.3k](/packages/spaze-csp-config)

PHPackages © 2026

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