diff --git a/arkindex/documents/consumers.py b/arkindex/documents/consumers.py
index 49723dc9b13d20afb1ab5517cb87937c62e08004..72ac063a385ef4e5ce92187dc55b64b0b8c67e7f 100644
--- a/arkindex/documents/consumers.py
+++ b/arkindex/documents/consumers.py
@@ -3,7 +3,6 @@ from channels.consumer import SyncConsumer
 from django.db.models import Q
 from django.db.models.deletion import Collector
 from django.db.models.signals import pre_delete
-from arkindex_common.enums import MetaType
 from arkindex.project.tools import disconnect_signal
 from arkindex.project.triggers import reindex_start
 from arkindex.dataimport.models import Event, Revision
@@ -130,8 +129,6 @@ class MLResultsConsumer(SyncConsumer):
         # Metadata are not considered ML results so we need to keep them: update them to unlink entities.
         logger.info('Updating element metadata')
         MetaData.objects.filter(element__in=elements).update(entity_id=None)
-        # TODO: Remove MetaType.Entity entirely
-        MetaData.objects.filter(element__in=elements, type=MetaType.Entity).update(type=MetaType.Text)
 
         # We removed transcriptions earlier, which implies removing the links with entities.
         # All is left is to remove 'lonely' entities.
diff --git a/arkindex/documents/migrations/0031_remove_entity_metatype.py b/arkindex/documents/migrations/0031_remove_entity_metatype.py
new file mode 100644
index 0000000000000000000000000000000000000000..fbb648b4d7c871fc6b4923cd62e971b05a4a989e
--- /dev/null
+++ b/arkindex/documents/migrations/0031_remove_entity_metatype.py
@@ -0,0 +1,50 @@
+# Generated by Django 2.2 on 2019-12-13 10:28
+
+from django.db import migrations
+from arkindex_common.enums import EntityType
+from enum import Enum
+
+
+def remove_entity_metatype(apps, schema_editor):
+    MetaData = apps.get_model('documents', 'MetaData')
+    if not MetaData.objects.exists():
+        return
+
+    class OldMetaType(Enum):
+        Text = 'text'
+        HTML = 'html'
+        Date = 'date'
+        Location = 'location'
+        Reference = 'reference'
+        Entity = 'entity'
+
+    # Don't try this at home
+    MetaData._meta.fields[2].enum = OldMetaType
+
+    MetaData.objects.filter(type=OldMetaType.Entity, entity__type=EntityType.Location).update(type=OldMetaType.Location)
+    MetaData.objects.filter(type=OldMetaType.Entity, entity__type=EntityType.Date).update(type=OldMetaType.Date)
+    MetaData.objects.filter(type=OldMetaType.Entity).update(type=OldMetaType.Text)
+
+
+def add_entity_metatype(apps, schema_editor):
+    MetaData = apps.get_model('documents', 'MetaData')
+    if not MetaData.objects.exists():
+        return
+
+    class OldMetaType(Enum):
+        Entity = 'entity'
+
+    # Don't try this at home
+    MetaData._meta.fields[2].enum = OldMetaType
+    MetaData.objects.exclude(entity__isnull=True).update(type=OldMetaType.Entity)
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('documents', '0030_rename_classification_best'),
+    ]
+
+    operations = [
+        migrations.RunPython(remove_entity_metatype, add_entity_metatype),
+    ]
diff --git a/arkindex/documents/serializers/elements.py b/arkindex/documents/serializers/elements.py
index 2535ba99838a4f8cda967c950133a9cb43221235..8a4493fdfe3b61c2d8054b59c5235daa2b9a3fe8 100644
--- a/arkindex/documents/serializers/elements.py
+++ b/arkindex/documents/serializers/elements.py
@@ -229,7 +229,7 @@ class ElementSerializer(ElementSlimSerializer):
 
     def get_metadata(self, obj):
         return MetaDataLightSerializer(
-            list(obj.metadatas.all().filter(entity__isnull=True).exclude(type=MetaType.Entity)),
+            list(obj.metadatas.all().filter(entity__isnull=True)),
             many=True
         ).data
 
diff --git a/arkindex/documents/tei.py b/arkindex/documents/tei.py
index 0da96c338e1f218848a614489c0cb3f86945f670..65f0ba82daa44f8f9df34f24cbd15fc238b85451 100644
--- a/arkindex/documents/tei.py
+++ b/arkindex/documents/tei.py
@@ -94,7 +94,7 @@ class TeiParser(BaseTeiParser):
             for index, xmlmeta in enumerate(metadatas):
                 # Handle entities
                 entity = None
-                if xmlmeta.type == MetaType.Entity and xmlmeta.entity_type is not None:
+                if xmlmeta.entity_type is not None:
                     source, _ = DataSource.objects.get_or_create(
                         type=MLToolType.NER,
                         slug='TEI',
diff --git a/arkindex/documents/tests/consumers/test_ml_results_consumer.py b/arkindex/documents/tests/consumers/test_ml_results_consumer.py
index 6e38dedce4e4625365c7dc2840c75038f050e5b4..afa98755d1be8de6bf362c6d455defe4c6998df7 100644
--- a/arkindex/documents/tests/consumers/test_ml_results_consumer.py
+++ b/arkindex/documents/tests/consumers/test_ml_results_consumer.py
@@ -36,7 +36,7 @@ class TestMLResultsConsumer(FixtureTestCase):
             source=source,
         )
         cls.page1.metadatas.create(
-            type=MetaType.Entity,
+            type=MetaType.Text,
             name='something',
             value='Some entity 1',
             entity=entity1,
@@ -64,7 +64,7 @@ class TestMLResultsConsumer(FixtureTestCase):
             source=source,
         )
         cls.page2.metadatas.create(
-            type=MetaType.Entity,
+            type=MetaType.Text,
             name='something',
             value='Some entity 2',
             entity=entity2,
@@ -104,7 +104,7 @@ class TestMLResultsConsumer(FixtureTestCase):
         self.assertEqual(self.page1.metadatas.count(), 2)
         self.assertEqual(self.page2.metadatas.count(), 2)
 
-        with self.assertNumQueries(17):
+        with self.assertNumQueries(16):
             MLResultsConsumer({}).ml_results_delete({'corpus_id': str(self.corpus.id)})
 
         for queryset in querysets:
@@ -144,7 +144,7 @@ class TestMLResultsConsumer(FixtureTestCase):
         for queryset in folder2_querysets:
             self.assertTrue(queryset.exists())
 
-        with self.assertNumQueries(18):
+        with self.assertNumQueries(17):
             MLResultsConsumer({}).ml_results_delete({'element_id': str(self.folder1.id)})
 
         for queryset in folder1_querysets:
@@ -158,7 +158,7 @@ class TestMLResultsConsumer(FixtureTestCase):
         self.assertEqual(metadata.type, MetaType.Text)
         self.assertIsNone(metadata.entity)
         metadata = self.page2.metadatas.get(value='Some entity 2')
-        self.assertEqual(metadata.type, MetaType.Entity)
+        self.assertEqual(metadata.type, MetaType.Text)
         self.assertIsNotNone(metadata.entity)
 
         get_layer_mock().send.assert_called_once_with('reindex', {
diff --git a/arkindex/documents/tests/consumers/test_reindex_consumer.py b/arkindex/documents/tests/consumers/test_reindex_consumer.py
index 44c41b98c9dad9788f23cf803ff4311776c37dd8..6274f332c2ed5f8801e146c541aef00f156e6caa 100644
--- a/arkindex/documents/tests/consumers/test_reindex_consumer.py
+++ b/arkindex/documents/tests/consumers/test_reindex_consumer.py
@@ -16,7 +16,7 @@ class TestReindexConsumer(FixtureTestCase):
 
         cls.folder = cls.corpus.elements.get(name='Volume 1')
         cls.folder.metadatas.create(
-            type=MetaType.Entity,
+            type=MetaType.Text,
             name='something',
             value='Some entity',
             entity=cls.corpus.entities.create(
diff --git a/arkindex/documents/tests/test_entities.py b/arkindex/documents/tests/test_entities.py
index 9bf10b6497309a437c9e9ce28e1de3539d8cef96..bd8d6ab61230131cf32476d1c77280a9dd4993c9 100644
--- a/arkindex/documents/tests/test_entities.py
+++ b/arkindex/documents/tests/test_entities.py
@@ -70,7 +70,7 @@ class TestSaveEntities(FixtureTestCase):
         with self.assertRaises(ValidationError):
             MetaData.objects.create(
                 name='test 1',
-                type=MetaType.Entity,
+                type=MetaType.Text,
                 value='Blah',
                 element=element,
                 entity=self.parent,
diff --git a/arkindex/documents/tests/test_entities_api.py b/arkindex/documents/tests/test_entities_api.py
index 2ee4d7ba680a09921409cffa725f8eaf97836d20..13415c146cfd9c69aa7b4928d9068892e87fcb86 100644
--- a/arkindex/documents/tests/test_entities_api.py
+++ b/arkindex/documents/tests/test_entities_api.py
@@ -50,7 +50,7 @@ class TestEntitiesAPI(FixtureAPITestCase):
         )
         self.metadata = self.page.metadatas.create(
             name='test 1',
-            type=MetaType.Entity,
+            type=MetaType.Text,
             value='Blah',
             element=self.page,
             entity=self.entity,
@@ -485,7 +485,7 @@ class TestEntitiesAPI(FixtureAPITestCase):
         """
         List an element's entities sorted depending on their origin (metadata or transcriptions)
         """
-        md = self.page.metadatas.create(name='some_metadata', type=MetaType.Entity, value='something')
+        md = self.page.metadatas.create(name='some_metadata', type=MetaType.Location, value='something')
         md.entity = self.entity_bis
         md.save()
         with self.assertNumQueries(10):
diff --git a/arkindex/documents/tests/test_tei.py b/arkindex/documents/tests/test_tei.py
index bb2a02bf9270da7b4816526df062c2c4999cff6a..da6c3c7fca906e7bc2624527cd0d6d0e02a95c45 100644
--- a/arkindex/documents/tests/test_tei.py
+++ b/arkindex/documents/tests/test_tei.py
@@ -79,7 +79,7 @@ class TestTeiElement(FixtureTestCase):
             {
                 'name': 'location',
                 'index': 0,
-                'type': MetaType.Entity,
+                'type': MetaType.Location,
                 'value': 'Mars',
                 'entity__name': 'Mars',
                 'entity__type': EntityType.Location,
@@ -87,7 +87,7 @@ class TestTeiElement(FixtureTestCase):
             {
                 'name': 'person',
                 'index': 1,
-                'type': MetaType.Entity,
+                'type': MetaType.Text,
                 'value': 'The Chosen One',
                 'entity__name': 'The Chosen One',
                 'entity__type': EntityType.Person,
@@ -120,7 +120,7 @@ class TestTeiElement(FixtureTestCase):
                 {
                     'name': 'person',
                     'index': 0,
-                    'type': MetaType.Entity,
+                    'type': MetaType.Text,
                     'value': 'Someone',
                     'entity__name': 'Someone',
                     'entity__type': EntityType.Person,
@@ -128,7 +128,7 @@ class TestTeiElement(FixtureTestCase):
                 {
                     'name': 'place',
                     'index': 0,
-                    'type': MetaType.Entity,
+                    'type': MetaType.Location,
                     'value': 'Somewhere',
                     'entity__name': 'Somewhere',
                     'entity__type': EntityType.Location,
@@ -147,7 +147,7 @@ class TestTeiElement(FixtureTestCase):
                 {
                     'name': 'person',
                     'index': 0,
-                    'type': MetaType.Entity,
+                    'type': MetaType.Text,
                     'value': 'Someone else',
                     'entity__name': 'Someone else',
                     'entity__type': EntityType.Person,
@@ -155,7 +155,7 @@ class TestTeiElement(FixtureTestCase):
                 {
                     'name': 'subject',
                     'index': 0,
-                    'type': MetaType.Entity,
+                    'type': MetaType.Text,
                     'value': 'Something',
                     'entity__name': 'Something',
                     'entity__type': EntityType.Subject,