# 4.3. Update field types

> For the complete documentation index, see [llms.txt](https://doc.ibexa.co/en/5.0/llms.txt).

You need to adapt your custom field types to the new field type architecture.

## `eZ\Publish\SPI\FieldType\FieldType` interface

The `eZ\Publish\SPI\FieldType\FieldType` interface is now an abstract class. You need to replace `implements FieldType` in your field type code with `extends FieldType`.

## Deprecated `getName` method

The deprecated method `getName` from the `eZ\Publish\SPI\FieldType\FieldType` interface has been changed. Now it accepts two additional parameters: `FieldDefinition $fieldDefinition` and `string $languageCode`.

In your code you need to change the `getName` signature to `function getName(Value $value, FieldDefinition $fieldDefinition, string $languageCode): string;`.

## `eZ\Publish\SPI\FieldType\Nameable` interface

The `eZ\Publish\SPI\FieldType\Nameable` interface has been removed. In your code you need to remove implementations of `Nameable` and replace them with `eZ\Publish\SPI\FieldType\FieldType::getName`.

## Deprecated tags

You need to replace deprecated tags in service configuration:

| Deprecated tag                                     | Current tag                                            |
| -------------------------------------------------- | ------------------------------------------------------ |
| ezpublish.fieldType.parameterProvider              | ezplatform.field_type.parameter_provider               |
| ezpublish.fieldType.externalStorageHandler         | ezplatform.field_type.external_storage_handler         |
| ezpublish.fieldType.externalStorageHandler.gateway | ezplatform.field_type.external_storage_handler.gateway |
| ezpublish.fieldType                                | ezplatform.field_type                                  |
| ezpublish.fieldType.indexable                      | ezplatform.field_type.indexable                        |
| ezpublish.storageEngine.legacy.converter           | ezplatform.field_type.legacy_storage.converter         |
| ez.fieldFormMapper.definition                      | ezplatform.field_type.form_mapper.definition           |
| ez.fieldFormMapper.value                           | ezplatform.field_type.form_mapper.value                |

## Moved classes

You need to replace importing the following classes:

| Previous location                                                         | Current location                                                            |
| ------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| EzSystems\\RepositoryForms\\Data\\Content\\FieldData                      | EzSystems\\EzPlatformContentForms\\Data\\Content\\FieldData                 |
| EzSystems\\RepositoryForms\\Data\\FieldDefinitionData                     | EzSystems\\EzPlatformAdminUi\\Form\\Data\\FieldDefinitionData               |
| EzSystems\\RepositoryForms\\FieldType\\FieldDefinitionFormMapperInterface | EzSystems\\EzPlatformAdminUi\\FieldType\\FieldDefinitionFormMapperInterface |
| EzSystems\\RepositoryForms\\FieldType\\FieldValueFormMapperInterface      | EzSystems\\EzPlatformContentForms\\FieldType\\FieldValueFormMapperInterface |

## Extending field type templates

If you extended templates for `ezobjectrelationlist_field`, `ezimageasset_field`, or `ezobjectrelation_field` fields using `{% extends "@EzPublishCore/content_fields.html.twig" %}`, you now need to extend `EzSystemsPlatformHttpCache` instead, if you wish to make use of cache: `{% extends "@EzSystemsPlatformHttpCache/content_fields.html.twig" %}`.
