From ddfeb01a3dbc6a49f60b09455038a293d582b30c Mon Sep 17 00:00:00 2001
From: ml bonhomme <bonhomme@teklia.com>
Date: Fri, 15 Mar 2024 10:55:53 +0000
Subject: [PATCH] Remove ProcessMode Repository

---
 arkindex/documents/fixtures/data.json         | 1171 ++++++++---------
 .../management/commands/build_fixtures.py     |   31 +-
 .../tests/tasks/test_corpus_delete.py         |    5 +-
 arkindex/documents/tests/tasks/test_export.py |    3 +-
 .../documents/tests/test_retrieve_elements.py |   12 +-
 arkindex/images/tests/test_image_api.py       |   14 +-
 arkindex/ponos/api.py                         |    9 +-
 arkindex/ponos/tests/test_api.py              |   98 --
 arkindex/ponos/tests/test_artifacts_api.py    |   72 +-
 arkindex/process/api.py                       |   19 +-
 arkindex/process/builder.py                   |   11 -
 arkindex/process/migrations/0003_initial.py   |   22 +-
 .../0030_remove_repository_processes.py       |   48 +
 ..._corpus_check_and_remove_revision_field.py |   21 +
 arkindex/process/models.py                    |    9 +-
 arkindex/process/serializers/imports.py       |    5 -
 arkindex/process/serializers/training.py      |    2 +-
 arkindex/process/serializers/workers.py       |   32 +-
 .../process/tests/test_corpus_worker_runs.py  |    4 +-
 arkindex/process/tests/test_create_process.py |   19 +-
 arkindex/process/tests/test_datafile_api.py   |    2 +-
 .../tests/test_docker_worker_version.py       |   11 +-
 arkindex/process/tests/test_managers.py       |    4 -
 .../process/tests/test_process_datasets.py    |   11 +-
 .../process/tests/test_process_elements.py    |   19 +-
 arkindex/process/tests/test_processes.py      |  115 +-
 arkindex/process/tests/test_repos.py          |   56 +-
 arkindex/process/tests/test_templates.py      |   32 +-
 .../process/tests/test_user_workerruns.py     |    4 +-
 arkindex/process/tests/test_workeractivity.py |    8 +-
 arkindex/process/tests/test_workerruns.py     |  115 +-
 arkindex/process/tests/test_workers.py        |  150 +--
 arkindex/project/mixins.py                    |   17 +-
 arkindex/project/tests/test_acl_mixin.py      |   15 +-
 arkindex/project/triggers.py                  |   11 +-
 .../process_elements_filter_ml_class.sql      |    1 -
 .../process_elements_filter_type.sql          |    1 -
 .../process_elements_top_level.sql            |    1 -
 .../process_elements_with_image.sql           |    1 -
 arkindex/training/tests/test_datasets_api.py  |    4 +-
 40 files changed, 834 insertions(+), 1351 deletions(-)
 create mode 100644 arkindex/process/migrations/0030_remove_repository_processes.py
 create mode 100644 arkindex/process/migrations/0031_process_corpus_check_and_remove_revision_field.py

diff --git a/arkindex/documents/fixtures/data.json b/arkindex/documents/fixtures/data.json
index 9e60c75219..15e6fbb2ce 100644
--- a/arkindex/documents/fixtures/data.json
+++ b/arkindex/documents/fixtures/data.json
@@ -1,50 +1,18 @@
 [
 {
     "model": "process.process",
-    "pk": "26050593-712f-4f7a-b15a-4d2132241514",
-    "fields": {
-        "created": "2020-02-02T01:23:45.678Z",
-        "updated": "2020-02-02T01:23:45.678Z",
-        "name": "Process fixture",
-        "creator": 2,
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "mode": "workers",
-        "revision": null,
-        "activity_state": "disabled",
-        "started": null,
-        "finished": null,
-        "farm": "94055f35-9ac9-44a0-ac5d-386e132bea2c",
-        "element": null,
-        "folder_type": null,
-        "element_type": null,
-        "name_contains": null,
-        "ml_class": null,
-        "load_children": false,
-        "generate_thumbnails": false,
-        "chunks": 1,
-        "use_cache": false,
-        "use_gpu": false,
-        "template": null,
-        "bucket_name": null,
-        "prefix": null,
-        "files": []
-    }
-},
-{
-    "model": "process.process",
-    "pk": "3421ba72-b14c-4df0-a504-1e7e90abe4b4",
+    "pk": "76506eee-43ab-4caa-966c-9e8e5d10ef93",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
         "name": null,
         "creator": 1,
         "corpus": null,
-        "mode": "repository",
-        "revision": null,
+        "mode": "local",
         "activity_state": "disabled",
         "started": null,
         "finished": null,
-        "farm": "94055f35-9ac9-44a0-ac5d-386e132bea2c",
+        "farm": null,
         "element": null,
         "folder_type": null,
         "element_type": null,
@@ -63,19 +31,18 @@
 },
 {
     "model": "process.process",
-    "pk": "4a3c1857-7fe7-47ba-9e47-7ce96eefc96f",
+    "pk": "7a6fed8c-ed9c-4714-8036-7048462ce0f2",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "name": null,
+        "name": "Process fixture",
         "creator": 2,
-        "corpus": null,
-        "mode": "local",
-        "revision": null,
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "mode": "workers",
         "activity_state": "disabled",
         "started": null,
         "finished": null,
-        "farm": null,
+        "farm": "395522d1-94a0-407a-b5cb-347fa68ec2c4",
         "element": null,
         "folder_type": null,
         "element_type": null,
@@ -94,15 +61,14 @@
 },
 {
     "model": "process.process",
-    "pk": "be97d04e-0af4-4043-9874-d20f28b30431",
+    "pk": "b6b7dbcb-e134-4274-93fd-9d6d06818c6f",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
         "name": null,
-        "creator": 1,
+        "creator": 2,
         "corpus": null,
         "mode": "local",
-        "revision": null,
         "activity_state": "disabled",
         "started": null,
         "finished": null,
@@ -125,25 +91,25 @@
 },
 {
     "model": "process.repository",
-    "pk": "0e1654c4-20e5-4d4a-99ab-7142040b6e88",
+    "pk": "bcfed350-d5be-4f27-b66a-042be3e6ee64",
     "fields": {
         "url": "http://gitlab/repo"
     }
 },
 {
     "model": "process.repository",
-    "pk": "a091592f-0ea9-4147-be4e-4f580751ac9f",
+    "pk": "e3f470b1-fc46-4bc1-8117-30e1c62962b7",
     "fields": {
         "url": "http://my_repo.fake/workers/worker"
     }
 },
 {
     "model": "process.revision",
-    "pk": "539e2eb4-6180-4d45-bc2f-ddd4bbe08ab1",
+    "pk": "2d087aa1-82ba-4ec5-af14-c19e4213f913",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "repo": "a091592f-0ea9-4147-be4e-4f580751ac9f",
+        "repo": "e3f470b1-fc46-4bc1-8117-30e1c62962b7",
         "hash": "1337",
         "message": "My w0rk3r",
         "author": "Test user"
@@ -151,11 +117,11 @@
 },
 {
     "model": "process.revision",
-    "pk": "d2d52ec9-2d56-4df1-9118-ed884f26cb83",
+    "pk": "7876a435-f3a5-40f8-b30b-f388f22019bf",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "repo": "0e1654c4-20e5-4d4a-99ab-7142040b6e88",
+        "repo": "bcfed350-d5be-4f27-b66a-042be3e6ee64",
         "hash": "42",
         "message": "Salve",
         "author": "Some user"
@@ -163,115 +129,115 @@
 },
 {
     "model": "process.worker",
-    "pk": "5a6c0c92-b9b1-4a69-a8d0-b75841cd0193",
+    "pk": "12b2344f-4871-40ad-aa1b-efaa70b5823f",
     "fields": {
-        "name": "File import",
-        "slug": "file_import",
-        "type": "2c4d9006-9c1f-4a62-944d-a8862aa022b1",
+        "name": "Document layout analyser",
+        "slug": "dla",
+        "type": "e84d4893-ae73-4162-acb6-13d606587644",
         "description": "",
-        "repository": "a091592f-0ea9-4147-be4e-4f580751ac9f",
+        "repository": "e3f470b1-fc46-4bc1-8117-30e1c62962b7",
         "public": false,
         "archived": null
     }
 },
 {
     "model": "process.worker",
-    "pk": "7458bec4-665b-4e2d-862f-7d87bc833481",
+    "pk": "1a18dc1d-49e3-4724-b1e3-cbc8da483610",
     "fields": {
-        "name": "Custom worker",
-        "slug": "custom",
-        "type": "9785b33d-d517-4a91-a4d9-b192e6b042b6",
+        "name": "Worker requiring a GPU",
+        "slug": "worker-gpu",
+        "type": "20d3065e-0ef7-428b-888f-177f59e6ddd0",
         "description": "",
-        "repository": null,
+        "repository": "e3f470b1-fc46-4bc1-8117-30e1c62962b7",
         "public": false,
         "archived": null
     }
 },
 {
     "model": "process.worker",
-    "pk": "89964ea9-97a3-4edf-8568-545ea810342e",
+    "pk": "219444d1-2a84-49f4-94d6-d5c21e36fcb9",
     "fields": {
-        "name": "Document layout analyser",
-        "slug": "dla",
-        "type": "3b3adc81-73f1-4e92-8093-d1dd9431c53f",
+        "name": "Generic worker with a Model",
+        "slug": "generic",
+        "type": "50729501-d9c4-473d-803f-a7cf25f0f9bd",
         "description": "",
-        "repository": "a091592f-0ea9-4147-be4e-4f580751ac9f",
+        "repository": "e3f470b1-fc46-4bc1-8117-30e1c62962b7",
         "public": false,
         "archived": null
     }
 },
 {
     "model": "process.worker",
-    "pk": "c7439e52-9b09-489b-8dc5-13994801e8ac",
+    "pk": "667a82ac-a19a-4e97-9239-35a3026246cb",
     "fields": {
-        "name": "Worker requiring a GPU",
-        "slug": "worker-gpu",
-        "type": "4696efe7-e3dd-4a8c-8346-c99d479c1756",
+        "name": "Custom worker",
+        "slug": "custom",
+        "type": "64a618df-09d0-47eb-b999-02ceb0a114a4",
         "description": "",
-        "repository": "a091592f-0ea9-4147-be4e-4f580751ac9f",
+        "repository": null,
         "public": false,
         "archived": null
     }
 },
 {
     "model": "process.worker",
-    "pk": "c88cf97b-25a1-4074-a88c-8d2b7a82db8c",
+    "pk": "9775f6a1-6238-4943-b245-b69bde621912",
     "fields": {
         "name": "Recognizer",
         "slug": "reco",
-        "type": "999707eb-4c53-469d-8fb6-ec6a80010248",
+        "type": "50729501-d9c4-473d-803f-a7cf25f0f9bd",
         "description": "",
-        "repository": "a091592f-0ea9-4147-be4e-4f580751ac9f",
+        "repository": "e3f470b1-fc46-4bc1-8117-30e1c62962b7",
         "public": false,
         "archived": null
     }
 },
 {
     "model": "process.worker",
-    "pk": "f62b2ea5-7bff-4c38-9bd1-7237543cad36",
+    "pk": "df6dbbb2-0526-46f9-8da2-5ada8f93826a",
     "fields": {
-        "name": "Generic worker with a Model",
-        "slug": "generic",
-        "type": "999707eb-4c53-469d-8fb6-ec6a80010248",
+        "name": "File import",
+        "slug": "file_import",
+        "type": "3a0b2c85-f53f-4ce7-942d-37c08f356880",
         "description": "",
-        "repository": "a091592f-0ea9-4147-be4e-4f580751ac9f",
+        "repository": "e3f470b1-fc46-4bc1-8117-30e1c62962b7",
         "public": false,
         "archived": null
     }
 },
 {
     "model": "process.workertype",
-    "pk": "2c4d9006-9c1f-4a62-944d-a8862aa022b1",
+    "pk": "20d3065e-0ef7-428b-888f-177f59e6ddd0",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "slug": "import",
-        "display_name": "Import"
+        "slug": "worker",
+        "display_name": "Worker requiring a GPU"
     }
 },
 {
     "model": "process.workertype",
-    "pk": "3b3adc81-73f1-4e92-8093-d1dd9431c53f",
+    "pk": "3a0b2c85-f53f-4ce7-942d-37c08f356880",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "slug": "dla",
-        "display_name": "Document Layout Analysis"
+        "slug": "import",
+        "display_name": "Import"
     }
 },
 {
     "model": "process.workertype",
-    "pk": "4696efe7-e3dd-4a8c-8346-c99d479c1756",
+    "pk": "50729501-d9c4-473d-803f-a7cf25f0f9bd",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "slug": "worker",
-        "display_name": "Worker requiring a GPU"
+        "slug": "recognizer",
+        "display_name": "Recognizer"
     }
 },
 {
     "model": "process.workertype",
-    "pk": "9785b33d-d517-4a91-a4d9-b192e6b042b6",
+    "pk": "64a618df-09d0-47eb-b999-02ceb0a114a4",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
@@ -281,28 +247,28 @@
 },
 {
     "model": "process.workertype",
-    "pk": "999707eb-4c53-469d-8fb6-ec6a80010248",
+    "pk": "e84d4893-ae73-4162-acb6-13d606587644",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "slug": "recognizer",
-        "display_name": "Recognizer"
+        "slug": "dla",
+        "display_name": "Document Layout Analysis"
     }
 },
 {
     "model": "process.workerversion",
-    "pk": "06e2171f-b7d6-49dc-90fc-d47784e6e334",
+    "pk": "229fc630-728b-421b-a2de-9618bd8e401f",
     "fields": {
-        "worker": "c88cf97b-25a1-4074-a88c-8d2b7a82db8c",
-        "revision": "539e2eb4-6180-4d45-bc2f-ddd4bbe08ab1",
-        "version": null,
+        "worker": "667a82ac-a19a-4e97-9239-35a3026246cb",
+        "revision": null,
+        "version": 1,
         "configuration": {
-            "test": 42
+            "custom": "value"
         },
-        "state": "available",
+        "state": "created",
         "gpu_usage": "disabled",
         "model_usage": "disabled",
-        "docker_image": "492ea45f-2c2d-4bf3-a461-016204fcfb03",
+        "docker_image": null,
         "docker_image_iid": null,
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z"
@@ -310,67 +276,65 @@
 },
 {
     "model": "process.workerversion",
-    "pk": "23473bff-4362-466e-ba5f-b6843df1fdf3",
+    "pk": "57cd018c-43e2-491e-9684-3b939df52921",
     "fields": {
-        "worker": "7458bec4-665b-4e2d-862f-7d87bc833481",
-        "revision": null,
-        "version": 1,
-        "configuration": {
-            "custom": "value"
-        },
-        "state": "created",
+        "worker": "df6dbbb2-0526-46f9-8da2-5ada8f93826a",
+        "revision": "2d087aa1-82ba-4ec5-af14-c19e4213f913",
+        "version": null,
+        "configuration": {},
+        "state": "available",
         "gpu_usage": "disabled",
         "model_usage": "disabled",
         "docker_image": null,
-        "docker_image_iid": null,
+        "docker_image_iid": "registry.somewhere.com/something:latest",
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z"
     }
 },
 {
     "model": "process.workerversion",
-    "pk": "2aa45507-c5f2-4e1f-bc38-edf50dbf5aae",
+    "pk": "665fdbad-798b-434b-9ab0-95f7522c19d6",
     "fields": {
-        "worker": "f62b2ea5-7bff-4c38-9bd1-7237543cad36",
-        "revision": "539e2eb4-6180-4d45-bc2f-ddd4bbe08ab1",
+        "worker": "1a18dc1d-49e3-4724-b1e3-cbc8da483610",
+        "revision": "2d087aa1-82ba-4ec5-af14-c19e4213f913",
         "version": null,
         "configuration": {
             "test": 42
         },
         "state": "available",
-        "gpu_usage": "disabled",
-        "model_usage": "required",
-        "docker_image": "492ea45f-2c2d-4bf3-a461-016204fcfb03",
-        "docker_image_iid": null,
+        "gpu_usage": "required",
+        "model_usage": "disabled",
+        "docker_image": null,
+        "docker_image_iid": "registry.somewhere.com/something:latest",
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z"
     }
 },
 {
     "model": "process.workerversion",
-    "pk": "66d545f5-4f60-436a-9cc3-517504cce152",
+    "pk": "88c64ea9-46e0-46fa-a65f-37eeaed3ded0",
     "fields": {
-        "worker": "c7439e52-9b09-489b-8dc5-13994801e8ac",
-        "revision": "539e2eb4-6180-4d45-bc2f-ddd4bbe08ab1",
+        "worker": "219444d1-2a84-49f4-94d6-d5c21e36fcb9",
+        "revision": "2d087aa1-82ba-4ec5-af14-c19e4213f913",
         "version": null,
         "configuration": {
             "test": 42
         },
         "state": "available",
-        "gpu_usage": "required",
-        "model_usage": "disabled",
-        "docker_image": "492ea45f-2c2d-4bf3-a461-016204fcfb03",
-        "docker_image_iid": null,
+        "gpu_usage": "disabled",
+        "model_usage": "required",
+        "docker_image": null,
+        "docker_image_iid": "registry.somewhere.com/something:latest",
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z"
     }
 },
 {
     "model": "process.workerversion",
-    "pk": "7e54d670-f1f2-4b96-a38a-ac6a5416ea72",
+    "pk": "928cfe44-77bc-4cb1-84d2-f02006bd61d5",
     "fields": {
-        "worker": "89964ea9-97a3-4edf-8568-545ea810342e",
-        "revision": "539e2eb4-6180-4d45-bc2f-ddd4bbe08ab1",
+        "worker": "12b2344f-4871-40ad-aa1b-efaa70b5823f",
+        "revision": "2d087aa1-82ba-4ec5-af14-c19e4213f913",
         "version": null,
         "configuration": {
             "test": 42
@@ -378,35 +342,37 @@
         "state": "available",
         "gpu_usage": "disabled",
         "model_usage": "disabled",
-        "docker_image": "492ea45f-2c2d-4bf3-a461-016204fcfb03",
-        "docker_image_iid": null,
+        "docker_image": null,
+        "docker_image_iid": "registry.somewhere.com/something:latest",
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z"
     }
 },
 {
     "model": "process.workerversion",
-    "pk": "88a1c9ce-3128-4219-a120-9ea9574316a3",
+    "pk": "f62b2301-0447-4848-9848-a731ad801d60",
     "fields": {
-        "worker": "5a6c0c92-b9b1-4a69-a8d0-b75841cd0193",
-        "revision": "539e2eb4-6180-4d45-bc2f-ddd4bbe08ab1",
+        "worker": "9775f6a1-6238-4943-b245-b69bde621912",
+        "revision": "2d087aa1-82ba-4ec5-af14-c19e4213f913",
         "version": null,
-        "configuration": {},
+        "configuration": {
+            "test": 42
+        },
         "state": "available",
         "gpu_usage": "disabled",
         "model_usage": "disabled",
-        "docker_image": "492ea45f-2c2d-4bf3-a461-016204fcfb03",
-        "docker_image_iid": null,
+        "docker_image": null,
+        "docker_image_iid": "registry.somewhere.com/something:latest",
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z"
     }
 },
 {
     "model": "process.workerrun",
-    "pk": "796a41f5-9797-443d-be13-ea73372e4950",
+    "pk": "14356945-e3a4-4d8b-b9b2-b4bc5e9287cc",
     "fields": {
-        "process": "4a3c1857-7fe7-47ba-9e47-7ce96eefc96f",
-        "version": "23473bff-4362-466e-ba5f-b6843df1fdf3",
+        "process": "76506eee-43ab-4caa-966c-9e8e5d10ef93",
+        "version": "229fc630-728b-421b-a2de-9618bd8e401f",
         "model_version": null,
         "parents": "[]",
         "configuration": null,
@@ -418,14 +384,14 @@
 },
 {
     "model": "process.workerrun",
-    "pk": "9b99e704-47e6-478c-988f-323c636bb91a",
+    "pk": "2f828b7f-c169-4a8e-9555-0b4060e05641",
     "fields": {
-        "process": "26050593-712f-4f7a-b15a-4d2132241514",
-        "version": "7e54d670-f1f2-4b96-a38a-ac6a5416ea72",
+        "process": "7a6fed8c-ed9c-4714-8036-7048462ce0f2",
+        "version": "928cfe44-77bc-4cb1-84d2-f02006bd61d5",
         "model_version": null,
         "parents": "[]",
         "configuration": null,
-        "summary": "Worker Document layout analyser @ 7e54d6",
+        "summary": "Worker Document layout analyser @ 928cfe",
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
         "has_results": false
@@ -433,14 +399,14 @@
 },
 {
     "model": "process.workerrun",
-    "pk": "810d22b3-90bf-44bb-a931-9c20d6b600ca",
+    "pk": "25e12096-d55e-4137-a954-3c344fc244bd",
     "fields": {
-        "process": "26050593-712f-4f7a-b15a-4d2132241514",
-        "version": "06e2171f-b7d6-49dc-90fc-d47784e6e334",
+        "process": "7a6fed8c-ed9c-4714-8036-7048462ce0f2",
+        "version": "f62b2301-0447-4848-9848-a731ad801d60",
         "model_version": null,
-        "parents": "[\"9b99e704-47e6-478c-988f-323c636bb91a\"]",
+        "parents": "[\"2f828b7f-c169-4a8e-9555-0b4060e05641\"]",
         "configuration": null,
-        "summary": "Worker Recognizer @ 06e217",
+        "summary": "Worker Recognizer @ f62b23",
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
         "has_results": false
@@ -448,10 +414,10 @@
 },
 {
     "model": "process.workerrun",
-    "pk": "9c5e8955-084a-4dd4-a816-c74d2ac0ab49",
+    "pk": "c2eb8dbb-584e-460a-8f0d-b6a7dc79f838",
     "fields": {
-        "process": "be97d04e-0af4-4043-9874-d20f28b30431",
-        "version": "23473bff-4362-466e-ba5f-b6843df1fdf3",
+        "process": "b6b7dbcb-e134-4274-93fd-9d6d06818c6f",
+        "version": "229fc630-728b-421b-a2de-9618bd8e401f",
         "model_version": null,
         "parents": "[]",
         "configuration": null,
@@ -463,7 +429,7 @@
 },
 {
     "model": "documents.corpus",
-    "pk": "1204ee59-2b68-4dfb-a083-3df4996c2337",
+    "pk": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
@@ -476,11 +442,11 @@
 },
 {
     "model": "documents.elementtype",
-    "pk": "097f73b9-4ea7-4063-98b0-e17eb698e77a",
+    "pk": "329625fb-1514-492a-9567-e231f7646648",
     "fields": {
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "slug": "text_line",
-        "display_name": "Line",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "slug": "page",
+        "display_name": "Page",
         "folder": false,
         "indexable": false,
         "color": "28b62c"
@@ -488,23 +454,23 @@
 },
 {
     "model": "documents.elementtype",
-    "pk": "60e8c1f1-c04d-49b6-bc6e-70e38e437f36",
+    "pk": "ab1c133b-71d0-4928-b388-7c12345a8416",
     "fields": {
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "slug": "volume",
-        "display_name": "Volume",
-        "folder": true,
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "slug": "text_line",
+        "display_name": "Line",
+        "folder": false,
         "indexable": false,
         "color": "28b62c"
     }
 },
 {
     "model": "documents.elementtype",
-    "pk": "aa7b5e5a-eaa3-49b5-8c7a-826941c9d472",
+    "pk": "c196f23a-6843-48e1-a885-c7cda27e64ca",
     "fields": {
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "slug": "word",
-        "display_name": "Word",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "slug": "act",
+        "display_name": "Act",
         "folder": false,
         "indexable": false,
         "color": "28b62c"
@@ -512,11 +478,11 @@
 },
 {
     "model": "documents.elementtype",
-    "pk": "c6267733-b1ce-4ea3-ac20-3a18c3d66f24",
+    "pk": "d15930a5-ebb8-40aa-968d-8bd2cf504230",
     "fields": {
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "slug": "act",
-        "display_name": "Act",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "slug": "word",
+        "display_name": "Word",
         "folder": false,
         "indexable": false,
         "color": "28b62c"
@@ -524,21 +490,21 @@
 },
 {
     "model": "documents.elementtype",
-    "pk": "f2d75650-9d48-4b6e-b210-dbd595a668d2",
+    "pk": "e28100cb-49a4-4837-a9ae-81a519ebb43f",
     "fields": {
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "slug": "page",
-        "display_name": "Page",
-        "folder": false,
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "slug": "volume",
+        "display_name": "Volume",
+        "folder": true,
         "indexable": false,
         "color": "28b62c"
     }
 },
 {
     "model": "documents.elementtype",
-    "pk": "fb9cf6d3-b31a-449c-a780-2f5db501695f",
+    "pk": "efc85dfd-913e-4979-bb60-d6bf0c7dcd2d",
     "fields": {
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
         "slug": "surface",
         "display_name": "Surface",
         "folder": false,
@@ -548,279 +514,279 @@
 },
 {
     "model": "documents.elementpath",
-    "pk": "13930713-e133-4d00-90fe-7169541b6b8c",
+    "pk": "06ab62e0-e9e7-4353-967d-a798806f7e8a",
     "fields": {
-        "element": "1f20a3a4-33be-43a3-9427-393799aba6d7",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\", \"737db4ff-8119-4e12-be99-968d7fa3be22\"]",
+        "element": "9fc5e0a3-9afb-493e-bf0f-fc2998ba4ba4",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\"]",
         "ordering": 0
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "250c8b60-16ac-49c9-ba2a-ee157d387077",
+    "pk": "156e125d-4550-4a72-a124-3b5e7fe25e77",
     "fields": {
-        "element": "60a6c062-1bbb-4e5f-82e7-37cb77d92419",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\", \"67482d70-765b-4092-b462-2d955fd8a7df\"]",
+        "element": "c8e488da-28d8-467e-a651-7d6f2ad6600d",
+        "path": "[\"2cd80ca1-7d55-4750-8c90-2b693e14a058\"]",
         "ordering": 2
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "2d34a587-68b2-4087-a05e-d92c5bc0b086",
+    "pk": "17526830-1f55-41e1-82c5-6faf34831a0d",
     "fields": {
-        "element": "6452b6c6-3d58-48c2-9032-691095fe8317",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\", \"67482d70-765b-4092-b462-2d955fd8a7df\"]",
-        "ordering": 1
+        "element": "7ea6161f-62f5-4bdf-9412-bbc4d13b3e6f",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\", \"d9744e02-66ef-424e-a71c-88b94b209688\"]",
+        "ordering": 0
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "33cdaa32-f9fe-4d60-91af-6200f90915af",
+    "pk": "210c3ff2-1aac-4b1d-bcff-67a76b2bc4f9",
     "fields": {
-        "element": "737db4ff-8119-4e12-be99-968d7fa3be22",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\"]",
-        "ordering": 2
+        "element": "e7027313-7910-44b4-bdff-28e8d187c0b4",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\"]",
+        "ordering": 5
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "344c8906-d207-48cc-9d5b-5c738758e510",
+    "pk": "21af7d64-10db-43f4-a0dd-386be73314cd",
     "fields": {
-        "element": "66843ee4-559b-4d2d-a9ce-4dd425022159",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\", \"737db4ff-8119-4e12-be99-968d7fa3be22\"]",
+        "element": "2df1881f-d666-43c9-8af7-507b277c4e23",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\", \"02a6f67e-c7d4-4dec-b3a0-9f9ab3f2ee99\"]",
         "ordering": 1
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "36612194-8586-43a3-9114-b3fa5d4c7832",
+    "pk": "262709fc-3d1f-46e2-8ba5-5c63b8d2b96f",
     "fields": {
-        "element": "8349d4ba-fd23-4da6-a99b-76ba2e359b6f",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\"]",
-        "ordering": 5
+        "element": "d9744e02-66ef-424e-a71c-88b94b209688",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\"]",
+        "ordering": 7
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "37f898d5-0a9a-49df-b8f6-40761f18c734",
+    "pk": "32644adb-c33b-47bd-befe-f5d2142d60ee",
     "fields": {
-        "element": "a41e2061-65cf-4c6e-9ea3-48d00d74133d",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\", \"a0373c38-907d-4127-9762-5aada56b7165\"]",
-        "ordering": 1
+        "element": "ec742315-a1e6-4cf2-96c0-abe2b0e0e3fc",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\", \"9fc5e0a3-9afb-493e-bf0f-fc2998ba4ba4\"]",
+        "ordering": 2
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "4450a6b1-88fb-4d11-9c7a-edd03872050d",
+    "pk": "3a86e5d2-3c7c-474f-82b1-60dae09a82b4",
     "fields": {
-        "element": "7f80cd7d-f24f-4691-a139-0ce744ea7577",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\", \"492ea0b0-bcaf-4a46-a15a-29cd08e32d90\"]",
-        "ordering": 0
+        "element": "dc66eac3-a4e9-4c55-a4a8-d239bd79f3f6",
+        "path": "[\"2cd80ca1-7d55-4750-8c90-2b693e14a058\"]",
+        "ordering": 1
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "48d847e6-26be-45e8-92a4-0a6517227172",
+    "pk": "5a8ae44a-8e2c-4eed-a1f1-c7ddcd4a093d",
     "fields": {
-        "element": "8727b32e-6b08-44fd-84ff-54d505fb5a85",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\", \"a0373c38-907d-4127-9762-5aada56b7165\"]",
+        "element": "b8d9cf10-dc77-4a41-90f8-badf9718ebb9",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\", \"f530bd2f-d0ab-4f14-9d98-087486c4b1ab\"]",
         "ordering": 0
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "5bb0b100-e35c-4433-884e-16b3c827dea1",
+    "pk": "650ef880-9d63-4164-8d50-b7dff16ca738",
     "fields": {
-        "element": "e2e0ab90-85c8-457e-920d-479bebb43bf9",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\", \"67482d70-765b-4092-b462-2d955fd8a7df\"]",
-        "ordering": 3
+        "element": "aec1257f-bcbe-41d5-8983-966da539e912",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\", \"e7027313-7910-44b4-bdff-28e8d187c0b4\"]",
+        "ordering": 0
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "60fccadc-2668-45f0-af63-8541f9d8000a",
+    "pk": "666416c1-5aa0-4f57-a21f-b7585b10efd2",
     "fields": {
-        "element": "900dcb10-2146-4571-8735-f508eb5f9986",
-        "path": "[]",
-        "ordering": 0
+        "element": "f75ca797-0067-4711-b899-6ed39b0a6f1a",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\"]",
+        "ordering": 4
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "6b954042-1718-4794-aad4-55c6e2e9e054",
+    "pk": "6f42e63d-d4ba-495b-8e22-e059577c669f",
     "fields": {
-        "element": "7cd8a970-ca3a-479f-b49e-1292b216c1b9",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\", \"492ea0b0-bcaf-4a46-a15a-29cd08e32d90\"]",
-        "ordering": 2
+        "element": "f530bd2f-d0ab-4f14-9d98-087486c4b1ab",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\"]",
+        "ordering": 1
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "6ff93429-322f-486a-bc0f-31f7047ce341",
+    "pk": "72864cf7-e163-47c5-9a40-49a253e8cece",
     "fields": {
-        "element": "c80311e3-4529-45d6-9575-31b362c99925",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\", \"737db4ff-8119-4e12-be99-968d7fa3be22\"]",
-        "ordering": 2
+        "element": "39210eb6-70a9-4660-8a45-5c6957508936",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\"]",
+        "ordering": 3
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "8fd6c9e9-3133-4733-b58b-8a093e49288c",
+    "pk": "733ddae3-62e2-433a-b322-41bb6502ac93",
     "fields": {
-        "element": "f6b8eced-ee41-42d3-812a-a622f1879809",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\", \"8144a0f8-f75b-43fa-ac27-d49d69bc483c\"]",
+        "element": "34cd2540-0a05-4812-add5-f24c08d46f73",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\", \"1d0f7ea6-6455-4a8d-ade2-a853f8ab7e08\"]",
         "ordering": 0
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "98f8328f-77b3-490d-aa4c-97d6f2030e3f",
+    "pk": "79ecb1ed-8036-4e88-a659-605fb3b5c8aa",
     "fields": {
-        "element": "dc79378e-1804-45c8-b23f-a2eeb33734de",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\", \"8349d4ba-fd23-4da6-a99b-76ba2e359b6f\"]",
+        "element": "1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02",
+        "path": "[]",
         "ordering": 0
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "9979cf91-e6da-46e4-976e-386cb9ebbc42",
+    "pk": "7d21ba65-6fc5-47db-995c-b4d8e8520c7c",
     "fields": {
-        "element": "7ac6504c-4088-4e6e-9a48-567f1f7e54c8",
-        "path": "[\"900dcb10-2146-4571-8735-f508eb5f9986\"]",
-        "ordering": 1
+        "element": "9754d5ef-2888-4083-97b0-c9593321d8d1",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\", \"9fc5e0a3-9afb-493e-bf0f-fc2998ba4ba4\"]",
+        "ordering": 3
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "99ac36ba-7c91-4beb-a10b-97d8edffa1d9",
+    "pk": "88d64d5e-3fba-450d-a9a8-5c7424559bbf",
     "fields": {
-        "element": "12e84ea0-004a-43e7-9fcc-85021e2407a9",
-        "path": "[]",
-        "ordering": 0
+        "element": "2039b7b8-15cb-4b1f-a9e6-c681aa20e13a",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\", \"f530bd2f-d0ab-4f14-9d98-087486c4b1ab\"]",
+        "ordering": 2
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "9feb4874-46bf-463a-9bc9-71b13af8bcc0",
+    "pk": "968de6aa-0d1c-47cc-ad94-02c2b59a2d79",
     "fields": {
-        "element": "e38ab791-092f-48eb-bb09-ea95e5a01998",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\", \"492ea0b0-bcaf-4a46-a15a-29cd08e32d90\"]",
-        "ordering": 1
+        "element": "9b478489-dd49-431b-8c51-f78ba7699f30",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\", \"f75ca797-0067-4711-b899-6ed39b0a6f1a\"]",
+        "ordering": 0
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "b447f917-b73c-42b5-9512-1a3af17b3eee",
+    "pk": "9bdf9f6d-b114-443e-86fb-592a0ad362af",
     "fields": {
-        "element": "a0373c38-907d-4127-9762-5aada56b7165",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\"]",
-        "ordering": 4
+        "element": "e9aa6eb2-eb0b-4503-9bbf-c3d27b9cce5f",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\", \"9fc5e0a3-9afb-493e-bf0f-fc2998ba4ba4\"]",
+        "ordering": 1
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "b869ccff-bb9b-4c85-9743-d8930f2d920a",
+    "pk": "9c452d82-87c2-406c-add5-2556559e14f5",
     "fields": {
-        "element": "f8d56f23-51f6-40dd-9482-939a1dd877b3",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\"]",
-        "ordering": 7
+        "element": "d82d4181-3ec4-45c2-b2cc-825d1382274f",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\", \"f75ca797-0067-4711-b899-6ed39b0a6f1a\"]",
+        "ordering": 1
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "b8a8076c-62d4-4f86-a2f0-21187d589279",
+    "pk": "a599aafe-89d3-4589-8c6c-e20bf9f32efa",
     "fields": {
-        "element": "8144a0f8-f75b-43fa-ac27-d49d69bc483c",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\"]",
-        "ordering": 6
+        "element": "02a6f67e-c7d4-4dec-b3a0-9f9ab3f2ee99",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\"]",
+        "ordering": 2
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "be089329-1d86-42cb-85b6-3a2520a334ed",
+    "pk": "b6ddde5c-f6de-433b-b9c3-c9afa288216f",
     "fields": {
-        "element": "492ea0b0-bcaf-4a46-a15a-29cd08e32d90",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\"]",
-        "ordering": 1
+        "element": "1d0f7ea6-6455-4a8d-ade2-a853f8ab7e08",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\"]",
+        "ordering": 6
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "c66e5e45-f39b-42b7-bbf7-55bab78bfe2c",
+    "pk": "c0f23fcf-1c63-4af2-b8b2-af0865b6dd9e",
     "fields": {
-        "element": "72dd24ed-22f5-40a6-bbb4-b4b0abfcd758",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\", \"f8d56f23-51f6-40dd-9482-939a1dd877b3\"]",
-        "ordering": 0
+        "element": "2e8101c4-6fca-49b6-9b7b-41554facfa01",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\", \"02a6f67e-c7d4-4dec-b3a0-9f9ab3f2ee99\"]",
+        "ordering": 2
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "cc4ca9d4-57ac-4b86-aa08-848fb31c15f1",
+    "pk": "c614c8aa-de22-477f-bdb1-ef83ce7ab055",
     "fields": {
-        "element": "43ba23ed-3e59-466d-b48f-35928d3d9a59",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\"]",
-        "ordering": 3
+        "element": "4fed0e6a-9e3f-4e59-9c70-c5e74cc6d73c",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\", \"02a6f67e-c7d4-4dec-b3a0-9f9ab3f2ee99\"]",
+        "ordering": 0
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "d28feecf-d0a3-4bd6-b045-71cae47ccf4f",
+    "pk": "c8bc7413-c96b-4047-8782-87a37cfc520b",
     "fields": {
-        "element": "67482d70-765b-4092-b462-2d955fd8a7df",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\"]",
+        "element": "344f6b5b-b001-4084-950c-1925fdd2eef4",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\", \"9fc5e0a3-9afb-493e-bf0f-fc2998ba4ba4\"]",
         "ordering": 0
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "d840ea1c-695a-4e81-bfb1-ccc2c7746979",
+    "pk": "d06e1ff9-6dd5-4808-a035-bb2a0e7bd428",
     "fields": {
-        "element": "f09bebdb-152e-427c-ae2b-2e296982f342",
-        "path": "[\"900dcb10-2146-4571-8735-f508eb5f9986\"]",
-        "ordering": 2
+        "element": "2cd80ca1-7d55-4750-8c90-2b693e14a058",
+        "path": "[]",
+        "ordering": 0
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "dd98d35b-a3dd-48fa-bec0-1e932f9314ff",
+    "pk": "d14e67c9-f5a9-4c81-ae3d-64599eb166a4",
     "fields": {
-        "element": "2aaa4788-127e-464c-bd8c-cd938796d207",
-        "path": "[\"900dcb10-2146-4571-8735-f508eb5f9986\"]",
+        "element": "b3c0b2bb-f53e-401a-ae19-bc7f2ec31179",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\", \"39210eb6-70a9-4660-8a45-5c6957508936\"]",
         "ordering": 0
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "de39b960-87d6-4805-bd39-93debf36f7b3",
+    "pk": "e3be0287-6213-4588-9407-6407c0de1d72",
     "fields": {
-        "element": "ba400ee3-7247-4c20-bef4-3a49ad9e2e77",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\", \"67482d70-765b-4092-b462-2d955fd8a7df\"]",
+        "element": "9c42123c-b940-4695-b083-5b19392f68a6",
+        "path": "[\"2cd80ca1-7d55-4750-8c90-2b693e14a058\"]",
         "ordering": 0
     }
 },
 {
     "model": "documents.elementpath",
-    "pk": "f0042f9c-66a9-448d-a202-03b55d40d03d",
+    "pk": "f4e4b076-bbfc-4c4e-90d2-060f1c0f3c89",
     "fields": {
-        "element": "9f1c4e10-d94c-4628-a575-5cb0afdd34af",
-        "path": "[\"12e84ea0-004a-43e7-9fcc-85021e2407a9\", \"43ba23ed-3e59-466d-b48f-35928d3d9a59\"]",
-        "ordering": 0
+        "element": "86304b47-3d6a-48dd-a903-d0e09cde91ba",
+        "path": "[\"1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02\", \"f530bd2f-d0ab-4f14-9d98-087486c4b1ab\"]",
+        "ordering": 1
     }
 },
 {
     "model": "documents.element",
-    "pk": "12e84ea0-004a-43e7-9fcc-85021e2407a9",
+    "pk": "02a6f67e-c7d4-4dec-b3a0-9f9ab3f2ee99",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "60e8c1f1-c04d-49b6-bc6e-70e38e437f36",
-        "name": "Volume 1",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "329625fb-1514-492a-9567-e231f7646648",
+        "name": "Volume 1, page 2r",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": null,
-        "polygon": null,
+        "image": "a38b69a3-a4f8-4dfc-a6b9-38ea2e52c713",
+        "polygon": "LINEARRING (0 0, 0 1000, 1000 1000, 1000 0, 0 0)",
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -828,18 +794,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "1f20a3a4-33be-43a3-9427-393799aba6d7",
+    "pk": "1d0f7ea6-6455-4a8d-ade2-a853f8ab7e08",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "aa7b5e5a-eaa3-49b5-8c7a-826941c9d472",
-        "name": "PARIS",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "c196f23a-6843-48e1-a885-c7cda27e64ca",
+        "name": "Act 4",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "68df44c1-ed1f-4f29-870d-de7b4b03b1a5",
-        "polygon": "LINEARRING (100 100, 100 200, 200 200, 200 100, 100 100)",
+        "image": null,
+        "polygon": null,
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -847,18 +813,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "2aaa4788-127e-464c-bd8c-cd938796d207",
+    "pk": "1d4b82fe-f9c5-4012-a9ae-c2ff83c9cc02",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "f2d75650-9d48-4b6e-b210-dbd595a668d2",
-        "name": "Volume 2, page 1r",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "e28100cb-49a4-4837-a9ae-81a519ebb43f",
+        "name": "Volume 1",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "a68c21d7-d24f-44d7-b134-3c50ee6ddba1",
-        "polygon": "LINEARRING (0 0, 0 1000, 1000 1000, 1000 0, 0 0)",
+        "image": null,
+        "polygon": null,
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -866,18 +832,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "43ba23ed-3e59-466d-b48f-35928d3d9a59",
+    "pk": "2039b7b8-15cb-4b1f-a9e6-c681aa20e13a",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "c6267733-b1ce-4ea3-ac20-3a18c3d66f24",
-        "name": "Act 1",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "d15930a5-ebb8-40aa-968d-8bd2cf504230",
+        "name": "DATUM",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": null,
-        "polygon": null,
+        "image": "f5ddf7e0-3dd3-4f4f-ada6-f42de7be869d",
+        "polygon": "LINEARRING (700 700, 700 800, 800 800, 800 700, 700 700)",
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -885,18 +851,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "492ea0b0-bcaf-4a46-a15a-29cd08e32d90",
+    "pk": "2cd80ca1-7d55-4750-8c90-2b693e14a058",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "f2d75650-9d48-4b6e-b210-dbd595a668d2",
-        "name": "Volume 1, page 1v",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "e28100cb-49a4-4837-a9ae-81a519ebb43f",
+        "name": "Volume 2",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "7f006318-b3d2-4cda-b1ab-8ff844c07b35",
-        "polygon": "LINEARRING (0 0, 0 1000, 1000 1000, 1000 0, 0 0)",
+        "image": null,
+        "polygon": null,
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -904,18 +870,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "60a6c062-1bbb-4e5f-82e7-37cb77d92419",
+    "pk": "2df1881f-d666-43c9-8af7-507b277c4e23",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "aa7b5e5a-eaa3-49b5-8c7a-826941c9d472",
-        "name": "DATUM",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "d15930a5-ebb8-40aa-968d-8bd2cf504230",
+        "name": "ROY",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "627a53a6-466c-4114-b826-852ecd328e47",
-        "polygon": "LINEARRING (700 700, 700 800, 800 800, 800 700, 700 700)",
+        "image": "a38b69a3-a4f8-4dfc-a6b9-38ea2e52c713",
+        "polygon": "LINEARRING (400 400, 400 500, 500 500, 500 400, 400 400)",
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -923,18 +889,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "6452b6c6-3d58-48c2-9032-691095fe8317",
+    "pk": "2e8101c4-6fca-49b6-9b7b-41554facfa01",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "aa7b5e5a-eaa3-49b5-8c7a-826941c9d472",
-        "name": "ROY",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "d15930a5-ebb8-40aa-968d-8bd2cf504230",
+        "name": "DATUM",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "627a53a6-466c-4114-b826-852ecd328e47",
-        "polygon": "LINEARRING (400 400, 400 500, 500 500, 500 400, 400 400)",
+        "image": "a38b69a3-a4f8-4dfc-a6b9-38ea2e52c713",
+        "polygon": "LINEARRING (700 700, 700 800, 800 800, 800 700, 700 700)",
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -942,18 +908,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "66843ee4-559b-4d2d-a9ce-4dd425022159",
+    "pk": "344f6b5b-b001-4084-950c-1925fdd2eef4",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "aa7b5e5a-eaa3-49b5-8c7a-826941c9d472",
-        "name": "ROY",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "d15930a5-ebb8-40aa-968d-8bd2cf504230",
+        "name": "PARIS",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "68df44c1-ed1f-4f29-870d-de7b4b03b1a5",
-        "polygon": "LINEARRING (400 400, 400 500, 500 500, 500 400, 400 400)",
+        "image": "f250d3f3-bd56-4a2f-bffc-fc3a33cd1902",
+        "polygon": "LINEARRING (100 100, 100 200, 200 200, 200 100, 100 100)",
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -961,18 +927,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "67482d70-765b-4092-b462-2d955fd8a7df",
+    "pk": "34cd2540-0a05-4812-add5-f24c08d46f73",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "f2d75650-9d48-4b6e-b210-dbd595a668d2",
-        "name": "Volume 1, page 1r",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "efc85dfd-913e-4979-bb60-d6bf0c7dcd2d",
+        "name": "Surface E",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "627a53a6-466c-4114-b826-852ecd328e47",
-        "polygon": "LINEARRING (0 0, 0 1000, 1000 1000, 1000 0, 0 0)",
+        "image": "a38b69a3-a4f8-4dfc-a6b9-38ea2e52c713",
+        "polygon": "LINEARRING (300 300, 300 600, 600 600, 600 300, 300 300)",
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -980,18 +946,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "72dd24ed-22f5-40a6-bbb4-b4b0abfcd758",
+    "pk": "39210eb6-70a9-4660-8a45-5c6957508936",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "fb9cf6d3-b31a-449c-a780-2f5db501695f",
-        "name": "Surface F",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "c196f23a-6843-48e1-a885-c7cda27e64ca",
+        "name": "Act 1",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "68df44c1-ed1f-4f29-870d-de7b4b03b1a5",
-        "polygon": "LINEARRING (600 600, 600 1000, 1000 1000, 1000 600, 600 600)",
+        "image": null,
+        "polygon": null,
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -999,18 +965,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "737db4ff-8119-4e12-be99-968d7fa3be22",
+    "pk": "4fed0e6a-9e3f-4e59-9c70-c5e74cc6d73c",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "f2d75650-9d48-4b6e-b210-dbd595a668d2",
-        "name": "Volume 1, page 2r",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "d15930a5-ebb8-40aa-968d-8bd2cf504230",
+        "name": "PARIS",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "68df44c1-ed1f-4f29-870d-de7b4b03b1a5",
-        "polygon": "LINEARRING (0 0, 0 1000, 1000 1000, 1000 0, 0 0)",
+        "image": "a38b69a3-a4f8-4dfc-a6b9-38ea2e52c713",
+        "polygon": "LINEARRING (100 100, 100 200, 200 200, 200 100, 100 100)",
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -1018,18 +984,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "7ac6504c-4088-4e6e-9a48-567f1f7e54c8",
+    "pk": "7ea6161f-62f5-4bdf-9412-bbc4d13b3e6f",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "f2d75650-9d48-4b6e-b210-dbd595a668d2",
-        "name": "Volume 2, page 1v",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "efc85dfd-913e-4979-bb60-d6bf0c7dcd2d",
+        "name": "Surface F",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "4867c2a1-fadc-4086-842c-c914b678d37d",
-        "polygon": "LINEARRING (0 0, 0 1000, 1000 1000, 1000 0, 0 0)",
+        "image": "a38b69a3-a4f8-4dfc-a6b9-38ea2e52c713",
+        "polygon": "LINEARRING (600 600, 600 1000, 1000 1000, 1000 600, 600 600)",
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -1037,18 +1003,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "7cd8a970-ca3a-479f-b49e-1292b216c1b9",
+    "pk": "86304b47-3d6a-48dd-a903-d0e09cde91ba",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "aa7b5e5a-eaa3-49b5-8c7a-826941c9d472",
-        "name": "DATUM",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "d15930a5-ebb8-40aa-968d-8bd2cf504230",
+        "name": "ROY",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "7f006318-b3d2-4cda-b1ab-8ff844c07b35",
-        "polygon": "LINEARRING (700 700, 700 800, 800 800, 800 700, 700 700)",
+        "image": "f5ddf7e0-3dd3-4f4f-ada6-f42de7be869d",
+        "polygon": "LINEARRING (400 400, 400 500, 500 500, 500 400, 400 400)",
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -1056,18 +1022,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "7f80cd7d-f24f-4691-a139-0ce744ea7577",
+    "pk": "9754d5ef-2888-4083-97b0-c9593321d8d1",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "aa7b5e5a-eaa3-49b5-8c7a-826941c9d472",
-        "name": "PARIS",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "ab1c133b-71d0-4928-b388-7c12345a8416",
+        "name": "Text line",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "7f006318-b3d2-4cda-b1ab-8ff844c07b35",
-        "polygon": "LINEARRING (100 100, 100 200, 200 200, 200 100, 100 100)",
+        "image": "f250d3f3-bd56-4a2f-bffc-fc3a33cd1902",
+        "polygon": "LINEARRING (400 400, 400 500, 500 500, 500 400, 400 400)",
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -1075,18 +1041,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "8144a0f8-f75b-43fa-ac27-d49d69bc483c",
+    "pk": "9b478489-dd49-431b-8c51-f78ba7699f30",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "c6267733-b1ce-4ea3-ac20-3a18c3d66f24",
-        "name": "Act 4",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "efc85dfd-913e-4979-bb60-d6bf0c7dcd2d",
+        "name": "Surface B",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": null,
-        "polygon": null,
+        "image": "f250d3f3-bd56-4a2f-bffc-fc3a33cd1902",
+        "polygon": "LINEARRING (600 600, 600 1000, 1000 1000, 1000 600, 600 600)",
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -1094,18 +1060,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "8349d4ba-fd23-4da6-a99b-76ba2e359b6f",
+    "pk": "9c42123c-b940-4695-b083-5b19392f68a6",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "c6267733-b1ce-4ea3-ac20-3a18c3d66f24",
-        "name": "Act 3",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "329625fb-1514-492a-9567-e231f7646648",
+        "name": "Volume 2, page 1r",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": null,
-        "polygon": null,
+        "image": "468df2f7-e22a-4dba-96d2-9c464ba6c2b0",
+        "polygon": "LINEARRING (0 0, 0 1000, 1000 1000, 1000 0, 0 0)",
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -1113,18 +1079,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "8727b32e-6b08-44fd-84ff-54d505fb5a85",
+    "pk": "9fc5e0a3-9afb-493e-bf0f-fc2998ba4ba4",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "fb9cf6d3-b31a-449c-a780-2f5db501695f",
-        "name": "Surface B",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "329625fb-1514-492a-9567-e231f7646648",
+        "name": "Volume 1, page 1r",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "627a53a6-466c-4114-b826-852ecd328e47",
-        "polygon": "LINEARRING (600 600, 600 1000, 1000 1000, 1000 600, 600 600)",
+        "image": "f250d3f3-bd56-4a2f-bffc-fc3a33cd1902",
+        "polygon": "LINEARRING (0 0, 0 1000, 1000 1000, 1000 0, 0 0)",
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -1132,18 +1098,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "900dcb10-2146-4571-8735-f508eb5f9986",
+    "pk": "aec1257f-bcbe-41d5-8983-966da539e912",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "60e8c1f1-c04d-49b6-bc6e-70e38e437f36",
-        "name": "Volume 2",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "efc85dfd-913e-4979-bb60-d6bf0c7dcd2d",
+        "name": "Surface D",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": null,
-        "polygon": null,
+        "image": "a38b69a3-a4f8-4dfc-a6b9-38ea2e52c713",
+        "polygon": "LINEARRING (0 0, 0 300, 300 300, 300 0, 0 0)",
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -1151,17 +1117,17 @@
 },
 {
     "model": "documents.element",
-    "pk": "9f1c4e10-d94c-4628-a575-5cb0afdd34af",
+    "pk": "b3c0b2bb-f53e-401a-ae19-bc7f2ec31179",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "fb9cf6d3-b31a-449c-a780-2f5db501695f",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "efc85dfd-913e-4979-bb60-d6bf0c7dcd2d",
         "name": "Surface A",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "627a53a6-466c-4114-b826-852ecd328e47",
+        "image": "f250d3f3-bd56-4a2f-bffc-fc3a33cd1902",
         "polygon": "LINEARRING (0 0, 0 600, 600 600, 600 0, 0 0)",
         "rotation_angle": 0,
         "mirrored": false,
@@ -1170,18 +1136,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "a0373c38-907d-4127-9762-5aada56b7165",
+    "pk": "b8d9cf10-dc77-4a41-90f8-badf9718ebb9",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "c6267733-b1ce-4ea3-ac20-3a18c3d66f24",
-        "name": "Act 2",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "d15930a5-ebb8-40aa-968d-8bd2cf504230",
+        "name": "PARIS",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": null,
-        "polygon": null,
+        "image": "f5ddf7e0-3dd3-4f4f-ada6-f42de7be869d",
+        "polygon": "LINEARRING (100 100, 100 200, 200 200, 200 100, 100 100)",
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -1189,17 +1155,17 @@
 },
 {
     "model": "documents.element",
-    "pk": "a41e2061-65cf-4c6e-9ea3-48d00d74133d",
+    "pk": "c8e488da-28d8-467e-a651-7d6f2ad6600d",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "fb9cf6d3-b31a-449c-a780-2f5db501695f",
-        "name": "Surface C",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "329625fb-1514-492a-9567-e231f7646648",
+        "name": "Volume 2, page 2r",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "7f006318-b3d2-4cda-b1ab-8ff844c07b35",
+        "image": "53421855-db25-4abd-aba4-d86710a76d5d",
         "polygon": "LINEARRING (0 0, 0 1000, 1000 1000, 1000 0, 0 0)",
         "rotation_angle": 0,
         "mirrored": false,
@@ -1208,18 +1174,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "ba400ee3-7247-4c20-bef4-3a49ad9e2e77",
+    "pk": "d82d4181-3ec4-45c2-b2cc-825d1382274f",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "aa7b5e5a-eaa3-49b5-8c7a-826941c9d472",
-        "name": "PARIS",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "efc85dfd-913e-4979-bb60-d6bf0c7dcd2d",
+        "name": "Surface C",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "627a53a6-466c-4114-b826-852ecd328e47",
-        "polygon": "LINEARRING (100 100, 100 200, 200 200, 200 100, 100 100)",
+        "image": "f5ddf7e0-3dd3-4f4f-ada6-f42de7be869d",
+        "polygon": "LINEARRING (0 0, 0 1000, 1000 1000, 1000 0, 0 0)",
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -1227,18 +1193,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "c80311e3-4529-45d6-9575-31b362c99925",
+    "pk": "d9744e02-66ef-424e-a71c-88b94b209688",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "aa7b5e5a-eaa3-49b5-8c7a-826941c9d472",
-        "name": "DATUM",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "c196f23a-6843-48e1-a885-c7cda27e64ca",
+        "name": "Act 5",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "68df44c1-ed1f-4f29-870d-de7b4b03b1a5",
-        "polygon": "LINEARRING (700 700, 700 800, 800 800, 800 700, 700 700)",
+        "image": null,
+        "polygon": null,
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -1246,18 +1212,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "dc79378e-1804-45c8-b23f-a2eeb33734de",
+    "pk": "dc66eac3-a4e9-4c55-a4a8-d239bd79f3f6",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "fb9cf6d3-b31a-449c-a780-2f5db501695f",
-        "name": "Surface D",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "329625fb-1514-492a-9567-e231f7646648",
+        "name": "Volume 2, page 1v",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "68df44c1-ed1f-4f29-870d-de7b4b03b1a5",
-        "polygon": "LINEARRING (0 0, 0 300, 300 300, 300 0, 0 0)",
+        "image": "27c0757d-4d15-4f0e-bfc1-ec63bfada9e7",
+        "polygon": "LINEARRING (0 0, 0 1000, 1000 1000, 1000 0, 0 0)",
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -1265,18 +1231,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "e2e0ab90-85c8-457e-920d-479bebb43bf9",
+    "pk": "e7027313-7910-44b4-bdff-28e8d187c0b4",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "097f73b9-4ea7-4063-98b0-e17eb698e77a",
-        "name": "Text line",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "c196f23a-6843-48e1-a885-c7cda27e64ca",
+        "name": "Act 3",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "627a53a6-466c-4114-b826-852ecd328e47",
-        "polygon": "LINEARRING (400 400, 400 500, 500 500, 500 400, 400 400)",
+        "image": null,
+        "polygon": null,
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -1284,17 +1250,17 @@
 },
 {
     "model": "documents.element",
-    "pk": "e38ab791-092f-48eb-bb09-ea95e5a01998",
+    "pk": "e9aa6eb2-eb0b-4503-9bbf-c3d27b9cce5f",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "aa7b5e5a-eaa3-49b5-8c7a-826941c9d472",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "d15930a5-ebb8-40aa-968d-8bd2cf504230",
         "name": "ROY",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "7f006318-b3d2-4cda-b1ab-8ff844c07b35",
+        "image": "f250d3f3-bd56-4a2f-bffc-fc3a33cd1902",
         "polygon": "LINEARRING (400 400, 400 500, 500 500, 500 400, 400 400)",
         "rotation_angle": 0,
         "mirrored": false,
@@ -1303,18 +1269,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "f09bebdb-152e-427c-ae2b-2e296982f342",
+    "pk": "ec742315-a1e6-4cf2-96c0-abe2b0e0e3fc",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "f2d75650-9d48-4b6e-b210-dbd595a668d2",
-        "name": "Volume 2, page 2r",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "d15930a5-ebb8-40aa-968d-8bd2cf504230",
+        "name": "DATUM",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "d7f4c84a-8aae-4c7d-86ce-567c5d4adc6d",
-        "polygon": "LINEARRING (0 0, 0 1000, 1000 1000, 1000 0, 0 0)",
+        "image": "f250d3f3-bd56-4a2f-bffc-fc3a33cd1902",
+        "polygon": "LINEARRING (700 700, 700 800, 800 800, 800 700, 700 700)",
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -1322,18 +1288,18 @@
 },
 {
     "model": "documents.element",
-    "pk": "f6b8eced-ee41-42d3-812a-a622f1879809",
+    "pk": "f530bd2f-d0ab-4f14-9d98-087486c4b1ab",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "fb9cf6d3-b31a-449c-a780-2f5db501695f",
-        "name": "Surface E",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "329625fb-1514-492a-9567-e231f7646648",
+        "name": "Volume 1, page 1v",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
-        "image": "68df44c1-ed1f-4f29-870d-de7b4b03b1a5",
-        "polygon": "LINEARRING (300 300, 300 600, 600 600, 600 300, 300 300)",
+        "image": "f5ddf7e0-3dd3-4f4f-ada6-f42de7be869d",
+        "polygon": "LINEARRING (0 0, 0 1000, 1000 1000, 1000 0, 0 0)",
         "rotation_angle": 0,
         "mirrored": false,
         "confidence": null
@@ -1341,13 +1307,13 @@
 },
 {
     "model": "documents.element",
-    "pk": "f8d56f23-51f6-40dd-9482-939a1dd877b3",
+    "pk": "f75ca797-0067-4711-b899-6ed39b0a6f1a",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "c6267733-b1ce-4ea3-ac20-3a18c3d66f24",
-        "name": "Act 5",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "c196f23a-6843-48e1-a885-c7cda27e64ca",
+        "name": "Act 2",
         "creator": null,
         "worker_version": null,
         "worker_run": null,
@@ -1360,67 +1326,67 @@
 },
 {
     "model": "documents.entitytype",
-    "pk": "4e9c9ca3-03ae-4994-b617-4d78f0854dc0",
+    "pk": "0199d0f3-a2e6-4422-9202-2be9fe6d9dff",
     "fields": {
-        "name": "person",
+        "name": "number",
         "color": "ff0000",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337"
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12"
     }
 },
 {
     "model": "documents.entitytype",
-    "pk": "8c7ad642-50eb-4125-899b-aa3d03024a47",
+    "pk": "2b56b955-e322-4cb3-b66c-9de1ead52ead",
     "fields": {
         "name": "location",
         "color": "ff0000",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337"
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12"
     }
 },
 {
     "model": "documents.entitytype",
-    "pk": "95fcaaf8-6a17-4540-8a76-866a6cad9f1d",
+    "pk": "493a7fd6-4d9b-4a42-bb1c-d4336852cf43",
     "fields": {
-        "name": "number",
+        "name": "organization",
         "color": "ff0000",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337"
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12"
     }
 },
 {
     "model": "documents.entitytype",
-    "pk": "974f88d0-2e4c-4a9e-85b7-2e244c2e883f",
+    "pk": "7051555a-449f-4ebb-a519-f5b65517a520",
     "fields": {
-        "name": "date",
+        "name": "person",
         "color": "ff0000",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337"
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12"
     }
 },
 {
     "model": "documents.entitytype",
-    "pk": "e82c02b6-9b63-483a-a3c0-94fe032d83f8",
+    "pk": "c6cb242c-688d-484f-87d1-42cabd41f67f",
     "fields": {
-        "name": "organization",
+        "name": "date",
         "color": "ff0000",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337"
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12"
     }
 },
 {
     "model": "documents.transcription",
-    "pk": "268de903-300e-4a00-8f10-e2e10ac2a733",
+    "pk": "05882194-0210-441a-a167-f0b58cca0d2e",
     "fields": {
-        "element": "60a6c062-1bbb-4e5f-82e7-37cb77d92419",
-        "worker_version": "06e2171f-b7d6-49dc-90fc-d47784e6e334",
+        "element": "2df1881f-d666-43c9-8af7-507b277c4e23",
+        "worker_version": "f62b2301-0447-4848-9848-a731ad801d60",
         "worker_run": null,
-        "text": "DATUM",
+        "text": "ROY",
         "orientation": "horizontal-lr",
         "confidence": 1.0
     }
 },
 {
     "model": "documents.transcription",
-    "pk": "53d8a708-cd44-40b8-8862-7f663ece1133",
+    "pk": "29dca1b6-8661-4bb5-933f-0b05ac7c30bb",
     "fields": {
-        "element": "e38ab791-092f-48eb-bb09-ea95e5a01998",
-        "worker_version": "06e2171f-b7d6-49dc-90fc-d47784e6e334",
+        "element": "86304b47-3d6a-48dd-a903-d0e09cde91ba",
+        "worker_version": "f62b2301-0447-4848-9848-a731ad801d60",
         "worker_run": null,
         "text": "ROY",
         "orientation": "horizontal-lr",
@@ -1429,10 +1395,10 @@
 },
 {
     "model": "documents.transcription",
-    "pk": "56a95e2d-4262-42da-a435-a5f29c0bc094",
+    "pk": "413a4b08-c496-4925-a440-e9edad4a9dc1",
     "fields": {
-        "element": "ba400ee3-7247-4c20-bef4-3a49ad9e2e77",
-        "worker_version": "06e2171f-b7d6-49dc-90fc-d47784e6e334",
+        "element": "b8d9cf10-dc77-4a41-90f8-badf9718ebb9",
+        "worker_version": "f62b2301-0447-4848-9848-a731ad801d60",
         "worker_run": null,
         "text": "PARIS",
         "orientation": "horizontal-lr",
@@ -1441,22 +1407,22 @@
 },
 {
     "model": "documents.transcription",
-    "pk": "7591f452-3d64-4b43-9789-0f05f2dfd6f8",
+    "pk": "5107512b-9bda-4f59-98e0-a0ff40c76d11",
     "fields": {
-        "element": "6452b6c6-3d58-48c2-9032-691095fe8317",
-        "worker_version": "06e2171f-b7d6-49dc-90fc-d47784e6e334",
+        "element": "ec742315-a1e6-4cf2-96c0-abe2b0e0e3fc",
+        "worker_version": "f62b2301-0447-4848-9848-a731ad801d60",
         "worker_run": null,
-        "text": "ROY",
+        "text": "DATUM",
         "orientation": "horizontal-lr",
         "confidence": 1.0
     }
 },
 {
     "model": "documents.transcription",
-    "pk": "9b348778-35b7-4ed8-8232-4a641d51118d",
+    "pk": "5b4bd0f0-63fa-43d1-970f-a79c44784392",
     "fields": {
-        "element": "7f80cd7d-f24f-4691-a139-0ce744ea7577",
-        "worker_version": "06e2171f-b7d6-49dc-90fc-d47784e6e334",
+        "element": "344f6b5b-b001-4084-950c-1925fdd2eef4",
+        "worker_version": "f62b2301-0447-4848-9848-a731ad801d60",
         "worker_run": null,
         "text": "PARIS",
         "orientation": "horizontal-lr",
@@ -1465,34 +1431,34 @@
 },
 {
     "model": "documents.transcription",
-    "pk": "dd193fa4-103c-43ae-8914-ed24f2487251",
+    "pk": "7e865edb-f16e-4406-a497-682e5a946593",
     "fields": {
-        "element": "7cd8a970-ca3a-479f-b49e-1292b216c1b9",
-        "worker_version": "06e2171f-b7d6-49dc-90fc-d47784e6e334",
+        "element": "9fc5e0a3-9afb-493e-bf0f-fc2998ba4ba4",
+        "worker_version": "f62b2301-0447-4848-9848-a731ad801d60",
         "worker_run": null,
-        "text": "DATUM",
+        "text": "Lorem ipsum dolor sit amet",
         "orientation": "horizontal-lr",
         "confidence": 1.0
     }
 },
 {
     "model": "documents.transcription",
-    "pk": "de4d3e9b-597b-483a-8178-0c78328655bf",
+    "pk": "b3ec03c1-fa36-4347-b3ad-64abf63ce10c",
     "fields": {
-        "element": "66843ee4-559b-4d2d-a9ce-4dd425022159",
-        "worker_version": "06e2171f-b7d6-49dc-90fc-d47784e6e334",
+        "element": "2039b7b8-15cb-4b1f-a9e6-c681aa20e13a",
+        "worker_version": "f62b2301-0447-4848-9848-a731ad801d60",
         "worker_run": null,
-        "text": "ROY",
+        "text": "DATUM",
         "orientation": "horizontal-lr",
         "confidence": 1.0
     }
 },
 {
     "model": "documents.transcription",
-    "pk": "e37e143e-c6b5-4b3f-82ce-37e60fd188c1",
+    "pk": "bf9dddc1-c158-487c-99b4-37e0f7f44759",
     "fields": {
-        "element": "1f20a3a4-33be-43a3-9427-393799aba6d7",
-        "worker_version": "06e2171f-b7d6-49dc-90fc-d47784e6e334",
+        "element": "4fed0e6a-9e3f-4e59-9c70-c5e74cc6d73c",
+        "worker_version": "f62b2301-0447-4848-9848-a731ad801d60",
         "worker_run": null,
         "text": "PARIS",
         "orientation": "horizontal-lr",
@@ -1501,63 +1467,63 @@
 },
 {
     "model": "documents.transcription",
-    "pk": "e41a7db5-5c44-4a14-88e9-92d7769263ca",
+    "pk": "e1978d01-9182-4a42-a76f-7ae776aaaf55",
     "fields": {
-        "element": "c80311e3-4529-45d6-9575-31b362c99925",
-        "worker_version": "06e2171f-b7d6-49dc-90fc-d47784e6e334",
+        "element": "e9aa6eb2-eb0b-4503-9bbf-c3d27b9cce5f",
+        "worker_version": "f62b2301-0447-4848-9848-a731ad801d60",
         "worker_run": null,
-        "text": "DATUM",
+        "text": "ROY",
         "orientation": "horizontal-lr",
         "confidence": 1.0
     }
 },
 {
     "model": "documents.transcription",
-    "pk": "fe88b0e9-117e-4c9b-a761-a8e63f2f095a",
+    "pk": "f5b81d19-ebb7-412d-9deb-455d72aaf829",
     "fields": {
-        "element": "67482d70-765b-4092-b462-2d955fd8a7df",
-        "worker_version": "06e2171f-b7d6-49dc-90fc-d47784e6e334",
+        "element": "2e8101c4-6fca-49b6-9b7b-41554facfa01",
+        "worker_version": "f62b2301-0447-4848-9848-a731ad801d60",
         "worker_run": null,
-        "text": "Lorem ipsum dolor sit amet",
+        "text": "DATUM",
         "orientation": "horizontal-lr",
         "confidence": 1.0
     }
 },
 {
     "model": "documents.allowedmetadata",
-    "pk": "13e9fa71-94a9-4e47-95a4-291597a811ef",
+    "pk": "6437fdd1-97c0-4fff-a325-039d0379bdbe",
     "fields": {
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
         "type": "text",
         "name": "folio"
     }
 },
 {
     "model": "documents.allowedmetadata",
-    "pk": "721a146d-a883-4f73-981a-1d90744d6d13",
+    "pk": "89efa0fd-a187-4177-8de5-f3477dde921f",
     "fields": {
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "date",
-        "name": "date"
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "location",
+        "name": "location"
     }
 },
 {
     "model": "documents.allowedmetadata",
-    "pk": "7b693888-219e-4f24-a930-de812973dc27",
+    "pk": "ab34cc71-a15a-40d9-8cc5-f680adca898b",
     "fields": {
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
-        "type": "location",
-        "name": "location"
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
+        "type": "date",
+        "name": "date"
     }
 },
 {
     "model": "documents.metadata",
-    "pk": "0d46167f-853f-4a07-b780-216a8c400aa3",
+    "pk": "0ba82a45-7667-4673-9258-34bbb9175f10",
     "fields": {
-        "element": "8349d4ba-fd23-4da6-a99b-76ba2e359b6f",
+        "element": "1d0f7ea6-6455-4a8d-ade2-a853f8ab7e08",
         "name": "number",
         "type": "text",
-        "value": "3",
+        "value": "4",
         "entity": null,
         "worker_version": null,
         "worker_run": null
@@ -1565,12 +1531,12 @@
 },
 {
     "model": "documents.metadata",
-    "pk": "2cafc35d-ea3c-48cb-a93c-907d6f0a8643",
+    "pk": "3e7bf01c-c9d6-4322-bd3f-def5438d7384",
     "fields": {
-        "element": "2aaa4788-127e-464c-bd8c-cd938796d207",
-        "name": "folio",
+        "element": "d9744e02-66ef-424e-a71c-88b94b209688",
+        "name": "number",
         "type": "text",
-        "value": "1r",
+        "value": "5",
         "entity": null,
         "worker_version": null,
         "worker_run": null
@@ -1578,12 +1544,12 @@
 },
 {
     "model": "documents.metadata",
-    "pk": "435e31bc-7844-474b-aff4-c3b8fcc6927a",
+    "pk": "52139b43-747a-4ffe-9f5c-cd43e0ad2b39",
     "fields": {
-        "element": "43ba23ed-3e59-466d-b48f-35928d3d9a59",
+        "element": "e7027313-7910-44b4-bdff-28e8d187c0b4",
         "name": "number",
         "type": "text",
-        "value": "1",
+        "value": "3",
         "entity": null,
         "worker_version": null,
         "worker_run": null
@@ -1591,9 +1557,9 @@
 },
 {
     "model": "documents.metadata",
-    "pk": "44548048-3180-4912-9134-10ae87037392",
+    "pk": "62347283-e04f-4401-a8a9-ff402766ac2d",
     "fields": {
-        "element": "737db4ff-8119-4e12-be99-968d7fa3be22",
+        "element": "c8e488da-28d8-467e-a651-7d6f2ad6600d",
         "name": "folio",
         "type": "text",
         "value": "2r",
@@ -1604,12 +1570,12 @@
 },
 {
     "model": "documents.metadata",
-    "pk": "57fb874a-5aa8-4526-9cf8-ad5c10b38d24",
+    "pk": "660e0182-f139-4a4b-b65e-b60b3051ef4c",
     "fields": {
-        "element": "8144a0f8-f75b-43fa-ac27-d49d69bc483c",
-        "name": "number",
+        "element": "9c42123c-b940-4695-b083-5b19392f68a6",
+        "name": "folio",
         "type": "text",
-        "value": "4",
+        "value": "1r",
         "entity": null,
         "worker_version": null,
         "worker_run": null
@@ -1617,12 +1583,12 @@
 },
 {
     "model": "documents.metadata",
-    "pk": "9ea4ce55-d95c-46d2-802e-89f98abe862b",
+    "pk": "af1f94f7-b9a8-4963-9e21-d4a8c34b2627",
     "fields": {
-        "element": "f09bebdb-152e-427c-ae2b-2e296982f342",
-        "name": "folio",
+        "element": "39210eb6-70a9-4660-8a45-5c6957508936",
+        "name": "number",
         "type": "text",
-        "value": "2r",
+        "value": "1",
         "entity": null,
         "worker_version": null,
         "worker_run": null
@@ -1630,12 +1596,12 @@
 },
 {
     "model": "documents.metadata",
-    "pk": "b22d936a-386d-48e3-88e0-6b88da42c982",
+    "pk": "cb325348-d43a-404f-b7f1-06c2230840c5",
     "fields": {
-        "element": "492ea0b0-bcaf-4a46-a15a-29cd08e32d90",
-        "name": "folio",
+        "element": "f75ca797-0067-4711-b899-6ed39b0a6f1a",
+        "name": "number",
         "type": "text",
-        "value": "1v",
+        "value": "2",
         "entity": null,
         "worker_version": null,
         "worker_run": null
@@ -1643,12 +1609,12 @@
 },
 {
     "model": "documents.metadata",
-    "pk": "d58788f8-58a9-488a-bef9-0302705ff942",
+    "pk": "da44df4c-a8ac-4bdc-a10b-ab6939ac76cd",
     "fields": {
-        "element": "f8d56f23-51f6-40dd-9482-939a1dd877b3",
-        "name": "number",
+        "element": "dc66eac3-a4e9-4c55-a4a8-d239bd79f3f6",
+        "name": "folio",
         "type": "text",
-        "value": "5",
+        "value": "1v",
         "entity": null,
         "worker_version": null,
         "worker_run": null
@@ -1656,12 +1622,12 @@
 },
 {
     "model": "documents.metadata",
-    "pk": "de810d60-9a4b-42e3-85c4-7a2174a01213",
+    "pk": "f55c81b9-bc87-4086-8cb1-b3a0eea6d491",
     "fields": {
-        "element": "a0373c38-907d-4127-9762-5aada56b7165",
-        "name": "number",
+        "element": "f530bd2f-d0ab-4f14-9d98-087486c4b1ab",
+        "name": "folio",
         "type": "text",
-        "value": "2",
+        "value": "1v",
         "entity": null,
         "worker_version": null,
         "worker_run": null
@@ -1669,12 +1635,12 @@
 },
 {
     "model": "documents.metadata",
-    "pk": "e4b071a7-41f5-416f-aeee-53ca55d4b640",
+    "pk": "fb0bedec-cc2d-424e-86bf-05239865e3fd",
     "fields": {
-        "element": "67482d70-765b-4092-b462-2d955fd8a7df",
+        "element": "02a6f67e-c7d4-4dec-b3a0-9f9ab3f2ee99",
         "name": "folio",
         "type": "text",
-        "value": "1r",
+        "value": "2r",
         "entity": null,
         "worker_version": null,
         "worker_run": null
@@ -1682,12 +1648,12 @@
 },
 {
     "model": "documents.metadata",
-    "pk": "fec9c649-5fd4-43f7-ab28-3b364b868087",
+    "pk": "fe60529e-30d4-4824-bb87-3534a652da81",
     "fields": {
-        "element": "7ac6504c-4088-4e6e-9a48-567f1f7e54c8",
+        "element": "9fc5e0a3-9afb-493e-bf0f-fc2998ba4ba4",
         "name": "folio",
         "type": "text",
-        "value": "1v",
+        "value": "1r",
         "entity": null,
         "worker_version": null,
         "worker_run": null
@@ -1710,7 +1676,7 @@
 },
 {
     "model": "images.image",
-    "pk": "4867c2a1-fadc-4086-842c-c914b678d37d",
+    "pk": "27c0757d-4d15-4f0e-bfc1-ec63bfada9e7",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
@@ -1724,12 +1690,12 @@
 },
 {
     "model": "images.image",
-    "pk": "627a53a6-466c-4114-b826-852ecd328e47",
+    "pk": "468df2f7-e22a-4dba-96d2-9c464ba6c2b0",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
         "server": 1,
-        "path": "img1",
+        "path": "img4",
         "width": 1000,
         "height": 1000,
         "hash": null,
@@ -1738,12 +1704,12 @@
 },
 {
     "model": "images.image",
-    "pk": "68df44c1-ed1f-4f29-870d-de7b4b03b1a5",
+    "pk": "53421855-db25-4abd-aba4-d86710a76d5d",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
         "server": 1,
-        "path": "img3",
+        "path": "img6",
         "width": 1000,
         "height": 1000,
         "hash": null,
@@ -1752,12 +1718,12 @@
 },
 {
     "model": "images.image",
-    "pk": "7f006318-b3d2-4cda-b1ab-8ff844c07b35",
+    "pk": "a38b69a3-a4f8-4dfc-a6b9-38ea2e52c713",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
         "server": 1,
-        "path": "img2",
+        "path": "img3",
         "width": 1000,
         "height": 1000,
         "hash": null,
@@ -1766,12 +1732,12 @@
 },
 {
     "model": "images.image",
-    "pk": "a68c21d7-d24f-44d7-b134-3c50ee6ddba1",
+    "pk": "f250d3f3-bd56-4a2f-bffc-fc3a33cd1902",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
         "server": 1,
-        "path": "img4",
+        "path": "img1",
         "width": 1000,
         "height": 1000,
         "hash": null,
@@ -1780,12 +1746,12 @@
 },
 {
     "model": "images.image",
-    "pk": "d7f4c84a-8aae-4c7d-86ce-567c5d4adc6d",
+    "pk": "f5ddf7e0-3dd3-4f4f-ada6-f42de7be869d",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
         "server": 1,
-        "path": "img6",
+        "path": "img2",
         "width": 1000,
         "height": 1000,
         "hash": null,
@@ -1794,64 +1760,64 @@
 },
 {
     "model": "users.right",
-    "pk": "053efd1b-d12f-49e5-ae72-54c7008224ec",
+    "pk": "15896320-98f2-48e1-9d36-4cef1e15c119",
     "fields": {
         "user": 2,
         "group": null,
         "content_type": 19,
-        "content_id": "1204ee59-2b68-4dfb-a083-3df4996c2337",
+        "content_id": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
         "level": 100
     }
 },
 {
     "model": "users.right",
-    "pk": "3e267701-586a-45f5-adf3-20bab26fbaae",
+    "pk": "2a7d975d-4f18-41f4-964f-817aeae09582",
     "fields": {
         "user": 2,
         "group": null,
-        "content_type": 34,
-        "content_id": "192deb9f-d37e-4edd-bb9b-2ae35c7ecba5",
-        "level": 100
+        "content_type": 11,
+        "content_id": "395522d1-94a0-407a-b5cb-347fa68ec2c4",
+        "level": 10
     }
 },
 {
     "model": "users.right",
-    "pk": "7c7634a0-2cd6-4d54-9a1b-14b0c0390050",
+    "pk": "7e2ea5d2-2408-49b4-b1b4-2ea0e12da7e4",
     "fields": {
         "user": 2,
         "group": null,
-        "content_type": 11,
-        "content_id": "94055f35-9ac9-44a0-ac5d-386e132bea2c",
-        "level": 10
+        "content_type": 34,
+        "content_id": "8f459bd8-0440-444e-940b-3c14b10bdb0d",
+        "level": 100
     }
 },
 {
     "model": "users.right",
-    "pk": "9f79af1d-f49f-4fd7-8504-2553ceab64db",
+    "pk": "db08fb62-277f-475c-ae92-cfb4a515b146",
     "fields": {
-        "user": 3,
+        "user": 4,
         "group": null,
         "content_type": 34,
-        "content_id": "192deb9f-d37e-4edd-bb9b-2ae35c7ecba5",
-        "level": 50
+        "content_id": "8f459bd8-0440-444e-940b-3c14b10bdb0d",
+        "level": 10
     }
 },
 {
     "model": "users.right",
-    "pk": "f38dad9a-d7b5-43cc-8ec7-e437296a0ca4",
+    "pk": "f61b568e-91d3-4e62-ba79-b5d7b326bc7d",
     "fields": {
-        "user": 4,
+        "user": 3,
         "group": null,
         "content_type": 34,
-        "content_id": "192deb9f-d37e-4edd-bb9b-2ae35c7ecba5",
-        "level": 10
+        "content_id": "8f459bd8-0440-444e-940b-3c14b10bdb0d",
+        "level": 50
     }
 },
 {
     "model": "users.user",
     "pk": 1,
     "fields": {
-        "password": "pbkdf2_sha256$390000$uNaUvBneqUWhzAsyWIWTw0$2Q13vkqIe5EhzX9rxV94tnAAuzYxXL1OMkfD49k8j0U=",
+        "password": "pbkdf2_sha256$390000$n41pgYuMjEMc9yABOJDuv7$szqrPzEEMyrNyvxRF5ekrtgzLra4rnw09jkS/Rlb65M=",
         "last_login": null,
         "email": "root@root.fr",
         "display_name": "Admin",
@@ -1866,7 +1832,7 @@
     "model": "users.user",
     "pk": 2,
     "fields": {
-        "password": "pbkdf2_sha256$390000$c0a4pOThTZIgnvLuFhk0M8$uY0aZIWY33541EueCEsJwiSn9JV4/xMmblh2ZB+iJIQ=",
+        "password": "pbkdf2_sha256$390000$82MV7wfiM1CYxnR3JI9dRw$vavB8EAQRE2Z0REJhhWU7bRyrQqZF5wazXjl1rOrvTY=",
         "last_login": null,
         "email": "user@user.fr",
         "display_name": "Test user",
@@ -1909,7 +1875,7 @@
 },
 {
     "model": "users.group",
-    "pk": "192deb9f-d37e-4edd-bb9b-2ae35c7ecba5",
+    "pk": "8f459bd8-0440-444e-940b-3c14b10bdb0d",
     "fields": {
         "name": "User group",
         "public": false,
@@ -3907,60 +3873,19 @@
 },
 {
     "model": "ponos.farm",
-    "pk": "94055f35-9ac9-44a0-ac5d-386e132bea2c",
+    "pk": "395522d1-94a0-407a-b5cb-347fa68ec2c4",
     "fields": {
         "name": "Wheat farm",
-        "seed": "8cb2c985dcb2dcd344db193307b9049c1fe54d26faba25b417acbb2cdfcc9f41"
-    }
-},
-{
-    "model": "ponos.task",
-    "pk": "1cb97d66-b673-4068-9824-ab8c33fdcb95",
-    "fields": {
-        "run": 0,
-        "depth": 0,
-        "slug": "docker_build",
-        "priority": 10,
-        "state": "completed",
-        "image": "",
-        "shm_size": null,
-        "command": null,
-        "env": "{}",
-        "has_docker_socket": false,
-        "image_artifact": null,
-        "agent": null,
-        "requires_gpu": false,
-        "gpu": null,
-        "process": "3421ba72-b14c-4df0-a504-1e7e90abe4b4",
-        "worker_run": null,
-        "container": null,
-        "created": "2020-02-02T01:23:45.678Z",
-        "updated": "2020-02-02T01:23:45.678Z",
-        "expiry": "2100-12-31T23:59:59.999Z",
-        "extra_files": "{}",
-        "token": "/Mp4N1XhQsWzkPneokooyFdtnCiW4EeQi09Z6nn5LUo=",
-        "parents": []
-    }
-},
-{
-    "model": "ponos.artifact",
-    "pk": "492ea45f-2c2d-4bf3-a461-016204fcfb03",
-    "fields": {
-        "task": "1cb97d66-b673-4068-9824-ab8c33fdcb95",
-        "path": "/path/to/docker_build",
-        "size": 42000,
-        "content_type": "application/octet-stream",
-        "created": "2020-02-02T01:23:45.678Z",
-        "updated": "2020-02-02T01:23:45.678Z"
+        "seed": "444809637bf8b3088a181de520a02151a99477edd051710e90a2d1fcdf860dbb"
     }
 },
 {
     "model": "training.dataset",
-    "pk": "5fb84be2-a906-4bc0-830b-f3a369021a32",
+    "pk": "4a844b36-08bd-4284-918e-5e03d543df13",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
         "creator": 2,
         "task": null,
         "name": "Second Dataset",
@@ -3971,11 +3896,11 @@
 },
 {
     "model": "training.dataset",
-    "pk": "cd5bcbb9-450f-4bdf-9bfc-9640194c2f88",
+    "pk": "630d1cf5-3ba8-4335-b0be-d1be4cb18782",
     "fields": {
         "created": "2020-02-02T01:23:45.678Z",
         "updated": "2020-02-02T01:23:45.678Z",
-        "corpus": "1204ee59-2b68-4dfb-a083-3df4996c2337",
+        "corpus": "f34313ec-45ec-4ac4-92e5-43d7eb045c12",
         "creator": 2,
         "task": null,
         "name": "First Dataset",
diff --git a/arkindex/documents/management/commands/build_fixtures.py b/arkindex/documents/management/commands/build_fixtures.py
index 1e8a5cbab4..b0e5d50103 100644
--- a/arkindex/documents/management/commands/build_fixtures.py
+++ b/arkindex/documents/management/commands/build_fixtures.py
@@ -1,5 +1,4 @@
 #!/usr/bin/env python3
-from datetime import datetime, timezone
 from unittest.mock import patch
 
 from django.contrib.gis.geos import LinearRing
@@ -8,7 +7,7 @@ from django.utils import timezone as DjangoTimeZone
 
 from arkindex.documents.models import Corpus, Element, MetaData, MetaType
 from arkindex.images.models import Image, ImageServer
-from arkindex.ponos.models import Farm, State
+from arkindex.ponos.models import Farm
 from arkindex.process.models import (
     FeatureUsage,
     Process,
@@ -104,23 +103,7 @@ class Command(BaseCommand):
         farm = Farm.objects.create(name="Wheat farm")
         farm.memberships.create(user=user, level=Role.Guest.value)
 
-        # Create a fake docker build with a docker image task
-        build_process = Process.objects.create(
-            farm=farm,
-            creator=superuser,
-            mode=ProcessMode.Repository,
-        )
-        build_task = build_process.tasks.create(
-            run=0,
-            depth=0,
-            slug="docker_build",
-            state=State.Completed,
-            # Use an expiry very far away so that task is never expired
-            expiry=datetime(2100, 12, 31, 23, 59, 59, 999999, timezone.utc),
-        )
-        docker_image = build_task.artifacts.create(size=42_000, path="/path/to/docker_build")
-
-        # Create some workers for the repository with their available version
+        # Create some workers with available versions
         recognizer_worker = WorkerVersion.objects.create(
             worker=worker_repo.workers.create(
                 name="Recognizer",
@@ -131,7 +114,7 @@ class Command(BaseCommand):
             configuration={"test": 42},
             state=WorkerVersionState.Available,
             model_usage=FeatureUsage.Disabled,
-            docker_image=docker_image
+            docker_image_iid="registry.somewhere.com/something:latest"
         )
         dla_worker = WorkerVersion.objects.create(
             worker=worker_repo.workers.create(
@@ -143,7 +126,7 @@ class Command(BaseCommand):
             configuration={"test": 42},
             state=WorkerVersionState.Available,
             model_usage=FeatureUsage.Disabled,
-            docker_image=docker_image
+            docker_image_iid="registry.somewhere.com/something:latest"
         )
 
         WorkerVersion.objects.create(
@@ -156,7 +139,7 @@ class Command(BaseCommand):
             configuration={},
             state=WorkerVersionState.Available,
             model_usage=FeatureUsage.Disabled,
-            docker_image=docker_image,
+            docker_image_iid="registry.somewhere.com/something:latest"
         )
 
         WorkerVersion.objects.create(
@@ -169,7 +152,7 @@ class Command(BaseCommand):
             configuration={"test": 42},
             state=WorkerVersionState.Available,
             model_usage=FeatureUsage.Disabled,
-            docker_image=docker_image,
+            docker_image_iid="registry.somewhere.com/something:latest",
             gpu_usage=FeatureUsage.Required
         )
 
@@ -185,7 +168,7 @@ class Command(BaseCommand):
             state=WorkerVersionState.Available,
             gpu_usage=FeatureUsage.Disabled,
             model_usage=FeatureUsage.Required,
-            docker_image=docker_image
+            docker_image_iid="registry.somewhere.com/something:latest"
         )
 
         # Create a custom worker version that is not linked to a Git repository/revision
diff --git a/arkindex/documents/tests/tasks/test_corpus_delete.py b/arkindex/documents/tests/tasks/test_corpus_delete.py
index de915af8ff..1685f99b41 100644
--- a/arkindex/documents/tests/tasks/test_corpus_delete.py
+++ b/arkindex/documents/tests/tasks/test_corpus_delete.py
@@ -3,7 +3,7 @@ from django.db.models.signals import pre_delete
 from arkindex.documents.models import Corpus, Element, EntityType, MetaType, Transcription
 from arkindex.documents.tasks import corpus_delete
 from arkindex.ponos.models import Farm, State, Task
-from arkindex.process.models import CorpusWorkerVersion, ProcessDataset, ProcessMode, Repository, WorkerVersion
+from arkindex.process.models import CorpusWorkerVersion, Process, ProcessDataset, ProcessMode, Repository, WorkerVersion
 from arkindex.project.tests import FixtureTestCase, force_constraints_immediate
 from arkindex.training.models import Dataset
 
@@ -132,7 +132,7 @@ class TestDeleteCorpus(FixtureTestCase):
             message="oh",
             author="me",
         )
-        cls.process = cls.rev.processes.create(
+        cls.process = Process.objects.create(
             creator=cls.user,
             corpus=cls.corpus2,
             mode=ProcessMode.Files,
@@ -204,7 +204,6 @@ class TestDeleteCorpus(FixtureTestCase):
         self.dataset_process3.refresh_from_db()
 
         self.assertTrue(self.repo.revisions.filter(id=self.rev.id).exists())
-        self.assertEqual(self.process.revision, self.rev)
         self.assertEqual(self.process.files.get(), self.df)
         self.assertTrue(Element.objects.get_descending(self.vol.id).filter(id=self.page.id).exists())
         self.assertTrue(self.corpus2.datasets.filter(id=self.dataset2.id).exists())
diff --git a/arkindex/documents/tests/tasks/test_export.py b/arkindex/documents/tests/tasks/test_export.py
index 3277044330..d04e63a147 100644
--- a/arkindex/documents/tests/tasks/test_export.py
+++ b/arkindex/documents/tests/tasks/test_export.py
@@ -22,7 +22,6 @@ from arkindex.documents.models import (
     TranscriptionEntity,
 )
 from arkindex.images.models import Image, ImageServer
-from arkindex.ponos.models import Artifact
 from arkindex.process.models import Repository, WorkerType, WorkerVersion, WorkerVersionState
 from arkindex.project.tests import FixtureTestCase
 
@@ -65,7 +64,7 @@ class TestExport(FixtureTestCase):
             worker=self.repo.workers.create(slug=str(uuid4()), type=self.worker_type),
             configuration={},
             state=WorkerVersionState.Available,
-            docker_image=Artifact.objects.first(),
+            docker_image_iid="registry.somewhere.com/something:latest",
         )
 
     @override_settings(PUBLIC_HOSTNAME="https://darkindex.lol")
diff --git a/arkindex/documents/tests/test_retrieve_elements.py b/arkindex/documents/tests/test_retrieve_elements.py
index c8062471c5..0d6b8e8e98 100644
--- a/arkindex/documents/tests/test_retrieve_elements.py
+++ b/arkindex/documents/tests/test_retrieve_elements.py
@@ -121,14 +121,14 @@ class TestRetrieveElements(FixtureAPITestCase):
         running the thumbnails generation command on a folder element
         """
         process = Process.objects.create(
-            mode=ProcessMode.Repository,
-            revision=self.worker_version.revision,
+            mode=ProcessMode.Workers,
             creator=self.user,
             generate_thumbnails=True,
             farm=Farm.objects.first(),
+            corpus=self.corpus
         )
         process.run()
-        task = process.tasks.get()
+        task = process.tasks.first()
         task.image = "task_image"
         task.command = "python generate_thumbnails"
 
@@ -154,13 +154,13 @@ class TestRetrieveElements(FixtureAPITestCase):
         can retrieve the thumbnails PUT URL.
         """
         process = Process.objects.create(
-            mode=ProcessMode.Repository,
-            revision=self.worker_version.revision,
+            mode=ProcessMode.Workers,
             creator=self.user,
             farm=Farm.objects.first(),
+            corpus=self.corpus
         )
         process.run()
-        task = process.tasks.get()
+        task = process.tasks.first()
         self.assertTrue(self.vol.type.folder)
         response = self.client.get(
             reverse("api:element-retrieve", kwargs={"pk": str(self.vol.id)}),
diff --git a/arkindex/images/tests/test_image_api.py b/arkindex/images/tests/test_image_api.py
index 89a8355214..c66e1052c3 100644
--- a/arkindex/images/tests/test_image_api.py
+++ b/arkindex/images/tests/test_image_api.py
@@ -8,7 +8,7 @@ from rest_framework import status
 
 from arkindex.images.models import Image, ImageServer
 from arkindex.ponos.models import Farm
-from arkindex.process.models import Process, ProcessMode, Revision
+from arkindex.process.models import Process, ProcessMode
 from arkindex.project.aws import S3FileStatus
 from arkindex.project.tests import FixtureAPITestCase
 from arkindex.users.models import Scope
@@ -608,13 +608,13 @@ class TestImageApi(FixtureAPITestCase):
         IIIF images created by a Ponos task are immediately checked
         """
         process = Process.objects.create(
-            mode=ProcessMode.Repository,
-            revision=Revision.objects.first(),
+            mode=ProcessMode.Workers,
             creator=self.user,
+            corpus=self.corpus,
             farm=Farm.objects.first(),
         )
         process.run()
-        task = process.tasks.get()
+        task = process.tasks.first()
         # The user scope should not be necessary with Ponos task authentication
         self.assertFalse(self.user.user_scopes.filter(scope=Scope.CreateIIIFImage).exists())
 
@@ -655,13 +655,13 @@ class TestImageApi(FixtureAPITestCase):
             height=100,
         )
         process = Process.objects.create(
-            mode=ProcessMode.Repository,
-            revision=Revision.objects.first(),
+            mode=ProcessMode.Workers,
             creator=self.user,
+            corpus=self.corpus,
             farm=Farm.objects.first(),
         )
         process.run()
-        task = process.tasks.get()
+        task = process.tasks.first()
         # The user scope should not be necessary with Ponos task authentication
         self.assertFalse(self.user.user_scopes.filter(scope=Scope.CreateIIIFImage).exists())
 
diff --git a/arkindex/ponos/api.py b/arkindex/ponos/api.py
index 5f4a225572..a7f0864565 100644
--- a/arkindex/ponos/api.py
+++ b/arkindex/ponos/api.py
@@ -52,8 +52,7 @@ class TaskDetailsFromAgent(RetrieveUpdateAPIView):
         "agent__farm",
         "gpu",
         # Used for permission checks
-        "process__corpus",
-        "process__revision__repo",
+        "process__corpus"
     )
     permission_classes = (
         # On all HTTP methods, require either any Ponos agent, an instance admin, the task itself, or guest access to the process' task
@@ -102,7 +101,7 @@ class TaskArtifacts(ListCreateAPIView):
     def task(self):
         task = get_object_or_404(
             # Select the required tables for permissions checking
-            Task.objects.select_related("process__corpus", "process__revision__repo"),
+            Task.objects.select_related("process__corpus"),
             pk=self.kwargs["pk"],
         )
         self.check_object_permissions(self.request, task)
@@ -126,7 +125,7 @@ class TaskArtifactDownload(APIView):
     def get_object(self, pk, path):
         artifact = get_object_or_404(
             # Select the required tables for permissions checking
-            Artifact.objects.select_related("task__process__corpus", "task__process__revision__repo"),
+            Artifact.objects.select_related("task__process__corpus"),
             task_id=pk,
             path=path,
         )
@@ -167,5 +166,5 @@ class TaskUpdate(UpdateAPIView):
     authentication_classes = (TokenAuthentication, SessionAuthentication)
     # Only allow regular users that have admin access to the task's process
     permission_classes = (IsTaskAdmin, )
-    queryset = Task.objects.select_related("process__corpus", "process__revision__repo")
+    queryset = Task.objects.select_related("process__corpus")
     serializer_class = TaskTinySerializer
diff --git a/arkindex/ponos/tests/test_api.py b/arkindex/ponos/tests/test_api.py
index 713836fb26..84d5e3f875 100644
--- a/arkindex/ponos/tests/test_api.py
+++ b/arkindex/ponos/tests/test_api.py
@@ -174,60 +174,6 @@ class TestAPI(FixtureAPITestCase):
                     call("get_object", Params={"Bucket": "ponos", "Key": "somelog"}),
                 )
 
-    @patch("arkindex.project.aws.s3")
-    def test_task_details_process_level_repo(self, s3_mock):
-        s3_mock.Object.return_value.bucket_name = "ponos"
-        s3_mock.Object.return_value.key = "somelog"
-        s3_mock.meta.client.generate_presigned_url.return_value = "http://somewhere"
-
-        self.client.force_login(self.user)
-        self.process.mode = ProcessMode.Repository
-        self.process.corpus = None
-        self.process.revision = self.rev
-        self.process.save()
-        membership = self.rev.repo.memberships.create(user=self.user, level=Role.Guest.value)
-
-        for role in Role:
-            s3_mock.reset_mock()
-            s3_mock.reset_mock()
-            # Recreate the BytesIO each time, because its contents get consumed each time the API is called
-            s3_mock.Object.return_value.get.return_value = {"Body": BytesIO(b"Failed successfully")}
-
-            with self.subTest(role=role):
-                membership.level = role.value
-                membership.save()
-
-                with self.assertNumQueries(4):
-                    resp = self.client.get(reverse("api:task-details", args=[self.task1.id]))
-                    self.assertEqual(resp.status_code, status.HTTP_200_OK)
-
-                self.assertDictEqual(
-                    resp.json(),
-                    {
-                        "id": str(self.task1.id),
-                        "run": 0,
-                        "depth": 0,
-                        "slug": "initialisation",
-                        "state": "unscheduled",
-                        "parents": [],
-                        "logs": "Failed successfully",
-                        "full_log": "http://somewhere",
-                        "extra_files": {},
-                        "agent": None,
-                        "gpu": None,
-                        "shm_size": None,
-                    },
-                )
-
-                self.assertEqual(s3_mock.Object.call_count, 2)
-                self.assertEqual(s3_mock.Object().get.call_count, 1)
-                self.assertEqual(s3_mock.Object().get.call_args, call(Range="bytes=-42"))
-                self.assertEqual(s3_mock.meta.client.generate_presigned_url.call_count, 1)
-                self.assertEqual(
-                    s3_mock.meta.client.generate_presigned_url.call_args,
-                    call("get_object", Params={"Bucket": "ponos", "Key": "somelog"}),
-                )
-
     @patch("arkindex.project.aws.s3")
     def test_task_details(self, s3_mock):
         s3_mock.Object.return_value.bucket_name = "ponos"
@@ -319,28 +265,6 @@ class TestAPI(FixtureAPITestCase):
                     )
                     self.assertEqual(resp.status_code, status.HTTP_403_FORBIDDEN)
 
-    @expectedFailure
-    def test_update_task_requires_process_admin_repo(self):
-        self.process.mode = ProcessMode.Repository
-        self.process.corpus = None
-        self.process.revision = self.rev
-        self.process.creator = self.superuser
-        self.process.save()
-        self.client.force_login(self.user)
-
-        for role in [None, Role.Guest, Role.Contributor]:
-            with self.subTest(role=role):
-                self.rev.repo.memberships.filter(user=self.user).delete()
-                if role:
-                    self.rev.repo.memberships.create(user=self.user, level=role.value)
-
-                with self.assertNumQueries(5):
-                    resp = self.client.put(
-                        reverse("api:task-update", args=[self.task1.id]),
-                        data={"state": State.Stopping.value},
-                    )
-                    self.assertEqual(resp.status_code, status.HTTP_403_FORBIDDEN)
-
     def test_update_running_task_state_stopping(self):
         self.task1.state = State.Running
         self.task1.save()
@@ -500,28 +424,6 @@ class TestAPI(FixtureAPITestCase):
                     )
                     self.assertEqual(resp.status_code, status.HTTP_403_FORBIDDEN)
 
-    @expectedFailure
-    def test_partial_update_task_requires_process_admin_repo(self):
-        self.process.mode = ProcessMode.Repository
-        self.process.corpus = None
-        self.process.revision = self.rev
-        self.process.creator = self.superuser
-        self.process.save()
-        self.client.force_login(self.user)
-
-        for role in [None, Role.Guest, Role.Contributor]:
-            with self.subTest(role=role):
-                self.rev.repo.memberships.filter(user=self.user).delete()
-                if role:
-                    self.rev.repo.memberships.create(user=self.user, level=role.value)
-
-                with self.assertNumQueries(5):
-                    resp = self.client.patch(
-                        reverse("api:task-update", args=[self.task1.id]),
-                        data={"state": State.Stopping.value},
-                    )
-                    self.assertEqual(resp.status_code, status.HTTP_403_FORBIDDEN)
-
     def test_partial_update_running_task_state_stopping(self):
         self.task1.state = State.Running
         self.task1.save()
diff --git a/arkindex/ponos/tests/test_artifacts_api.py b/arkindex/ponos/tests/test_artifacts_api.py
index 5e3266f7ed..7e08fa148e 100644
--- a/arkindex/ponos/tests/test_artifacts_api.py
+++ b/arkindex/ponos/tests/test_artifacts_api.py
@@ -6,7 +6,7 @@ from django.urls import reverse
 from rest_framework import status
 
 from arkindex.documents.models import Corpus
-from arkindex.process.models import Process, ProcessMode, Repository
+from arkindex.process.models import Process, ProcessMode
 from arkindex.project.tests import FixtureAPITestCase
 from arkindex.users.models import Right, Role, User
 
@@ -17,14 +17,6 @@ class TestAPI(FixtureAPITestCase):
     @classmethod
     def setUpTestData(cls):
         super().setUpTestData()
-
-        cls.repo = Repository.objects.first()
-        cls.repository_process = Process.objects.create(
-            mode=ProcessMode.Repository,
-            creator=cls.superuser,
-            revision=cls.repo.revisions.first(),
-        )
-
         # Make corpus private
         cls.corpus.public = False
         cls.corpus.save()
@@ -119,43 +111,6 @@ class TestAPI(FixtureAPITestCase):
                     ],
                 )
 
-    def test_list_process_level_repo(self):
-        self.client.force_login(self.user)
-        membership = self.repo.memberships.create(user=self.user, level=Role.Guest.value)
-
-        for role in Role:
-            with self.subTest(role=role):
-                membership.level = role.value
-                membership.save()
-
-                with self.assertNumQueries(4):
-                    response = self.client.get(reverse("api:task-artifacts", args=[self.task1.id]))
-                    self.assertEqual(response.status_code, status.HTTP_200_OK)
-
-                self.assertListEqual(
-                    response.json(),
-                    [
-                        {
-                            "content_type": "application/json",
-                            "created": self.artifact1.created.isoformat().replace("+00:00", "Z"),
-                            "id": str(self.artifact1.id),
-                            "path": "path/to/file.json",
-                            "s3_put_url": None,
-                            "size": 42,
-                            "updated": self.artifact1.updated.isoformat().replace("+00:00", "Z"),
-                        },
-                        {
-                            "content_type": "text/plain",
-                            "created": self.artifact2.created.isoformat().replace("+00:00", "Z"),
-                            "id": str(self.artifact2.id),
-                            "path": "some/text.txt",
-                            "s3_put_url": None,
-                            "size": 1337,
-                            "updated": self.artifact2.updated.isoformat().replace("+00:00", "Z"),
-                        },
-                    ],
-                )
-
     def test_list_admin(self):
         self.client.force_login(self.superuser)
         with self.assertNumQueries(4):
@@ -423,31 +378,6 @@ class TestAPI(FixtureAPITestCase):
                     )
                 )
 
-    def test_download_process_level_repo(self):
-        self.client.force_login(self.user)
-        membership = self.repo.memberships.create(user=self.user, level=Role.Guest.value)
-
-        task = self.repository_process.tasks.create(run=0, depth=0, slug="a")
-        task.artifacts.create(path="path/to/file.json", content_type="application/json", size=42)
-
-        for role in Role:
-            with self.subTest(role=role):
-                membership.level = role.value
-                membership.save()
-
-                with self.assertNumQueries(3):
-                    response = self.client.get(
-                        reverse("api:task-artifact-download", args=[task.id, "path/to/file.json"]),
-                    )
-                    self.assertEqual(response.status_code, status.HTTP_302_FOUND)
-
-                self.assertTrue(response.has_header("Location"))
-                self.assertTrue(
-                    response["Location"].startswith(
-                        f"http://s3/ponos-artifacts/{task.id}/path/to/file.json"
-                    )
-                )
-
     def test_download_task(self):
         with self.assertNumQueries(2):
             response = self.client.get(
diff --git a/arkindex/process/api.py b/arkindex/process/api.py
index 42cefcecb5..e6f76cf645 100644
--- a/arkindex/process/api.py
+++ b/arkindex/process/api.py
@@ -306,8 +306,6 @@ class ProcessQuerysetMixin(object):
                     # Element and folder types are serialized as their slugs
                     "element_type",
                     "folder_type",
-                    # The revision is serialized with its commit URL, which also requires the repository
-                    "revision__repo",
                 )
                 # Files and tasks are also listed
                 .prefetch_related("files", "tasks__parents")
@@ -441,10 +439,6 @@ class ProcessRetry(ProcessACLMixin, ProcessQuerysetMixin, GenericAPIView):
         elif state == State.Stopping:
             raise ValidationError({"__all__": ["This process is stopping"]})
 
-        if process.mode == ProcessMode.Repository:
-            if not process.revision:
-                raise ValidationError({"__all__": ["Git repository imports must have a revision set"]})
-
     @extend_schema(
         operation_id="RetryProcess",
         tags=["process"],
@@ -701,7 +695,7 @@ class ProcessDatasets(ProcessACLMixin, ListAPIView):
     @cached_property
     def process(self):
         process = get_object_or_404(
-            Process.objects.using("default").select_related("corpus", "revision__repo"),
+            Process.objects.using("default").select_related("corpus"),
             Q(pk=self.kwargs["pk"])
         )
         if not self.process_access_level(process):
@@ -986,7 +980,7 @@ class WorkerTypesList(ListAPIView):
     get=extend_schema(
         description=(
             "List versions for a given worker ID with their revision and associated git references.\n\n"
-            "Requires an **execution** access to the worker or its repository."
+            "Requires an **execution** access to the worker."
         ),
         parameters=[
             OpenApiParameter(
@@ -1001,13 +995,7 @@ class WorkerTypesList(ListAPIView):
         description=dedent("""
             Create a new version for a worker.
 
-            Authentication can be done:
-            * Using a user authentication (via a cookie or token).
             The user must have an administrator access to the worker.
-            * Using a ponos task authentication.
-            The worker must be linked to a repository.
-
-            The `revision_id` parameter must be set for workers linked to a repository only.
         """)
     )
 )
@@ -1030,8 +1018,7 @@ class WorkerVersionList(WorkerACLMixin, ListCreateAPIView):
             raise PermissionDenied(detail="You do not have an execution access to this worker.")
         if (
             self.request.method not in permissions.SAFE_METHODS
-            # Either a task authentication or an admin access is required for creation
-            and not isinstance(self.request.auth, Task)
+            # An admin access is required for creation
             and not self.has_admin_access(worker)
         ):
             raise PermissionDenied(detail="You do not have an admin access to this worker.")
diff --git a/arkindex/process/builder.py b/arkindex/process/builder.py
index 93e918f6aa..8a906063a4 100644
--- a/arkindex/process/builder.py
+++ b/arkindex/process/builder.py
@@ -191,10 +191,6 @@ class ProcessBuilder(object):
         ):
             raise ValidationError("Some model versions are on archived models and cannot be executed.")
 
-    def validate_repository(self) -> None:
-        if self.process.revision is None:
-            raise ValidationError("A revision is required to create an import workflow from GitLab repository")
-
     def validate_s3(self) -> None:
         if not self.process.bucket_name:
             raise ValidationError("Missing S3 bucket name")
@@ -251,13 +247,6 @@ class ProcessBuilder(object):
         )
         self._create_worker_versions_cache([(settings.IMPORTS_WORKER_VERSION, None, None)])
 
-    def build_repository(self):
-        self._build_task(
-            command=f"python -m arkindex_tasks.import_git {self.process.revision.id}",
-            slug="import_git",
-            env=self.base_env,
-        )
-
     def build_iiif(self):
         from arkindex.process.models import WorkerVersion
 
diff --git a/arkindex/process/migrations/0003_initial.py b/arkindex/process/migrations/0003_initial.py
index 3679db1e9a..e8dd2caf21 100644
--- a/arkindex/process/migrations/0003_initial.py
+++ b/arkindex/process/migrations/0003_initial.py
@@ -3,12 +3,18 @@
 import django.db.models.deletion
 from django.conf import settings
 from django.db import migrations, models
+from enumfields import Enum, fields
 
 import arkindex.process.models
 import pgtrigger.compiler
 import pgtrigger.migrations
 
 
+class TmpProcessMode(Enum):
+    Repository = "repository"
+    Local = "local"
+
+
 class Migration(migrations.Migration):
 
     initial = True
@@ -189,15 +195,25 @@ class Migration(migrations.Migration):
         ),
         migrations.AddConstraint(
             model_name="process",
-            constraint=models.CheckConstraint(check=models.Q(models.Q(("mode", arkindex.process.models.ProcessMode["Local"]), _negated=True), ("workflow", None), _connector="OR"), name="local_process_no_workflow", violation_error_message="Local processes cannot be started."),
+            constraint=models.UniqueConstraint(models.F("creator"), condition=models.Q(("mode", arkindex.process.models.ProcessMode["Local"])), name="unique_local_process", violation_error_message="Only one local process is allowed per user."),
         ),
         migrations.AddConstraint(
             model_name="process",
-            constraint=models.CheckConstraint(check=models.Q(("mode__in", (arkindex.process.models.ProcessMode["Local"], arkindex.process.models.ProcessMode["Repository"])), models.Q(("corpus", None), _negated=True), _connector="XOR"), name="check_process_corpus", violation_error_message="Local and repository processes cannot have a corpus, and other modes must have one set."),
+            constraint=models.CheckConstraint(check=models.Q(models.Q(("mode", arkindex.process.models.ProcessMode["Local"]), _negated=True), ("workflow", None), _connector="OR"), name="local_process_no_workflow", violation_error_message="Local processes cannot be started."),
+        ),
+        migrations.AlterField(
+            model_name="process",
+            name="mode",
+            field=fields.EnumField(enum=TmpProcessMode, max_length=30)
         ),
         migrations.AddConstraint(
             model_name="process",
-            constraint=models.UniqueConstraint(models.F("creator"), condition=models.Q(("mode", arkindex.process.models.ProcessMode["Local"])), name="unique_local_process", violation_error_message="Only one local process is allowed per user."),
+            constraint=models.CheckConstraint(check=models.Q(("mode__in", (TmpProcessMode["Local"], TmpProcessMode["Repository"])), models.Q(("corpus", None), _negated=True), _connector="XOR"), name="check_process_corpus", violation_error_message="Local and repository processes cannot have a corpus, and other modes must have one set."),
+        ),
+        migrations.AlterField(
+            model_name="process",
+            name="mode",
+            field=fields.EnumField(enum=arkindex.process.models.ProcessMode, max_length=30)
         ),
         migrations.AlterUniqueTogether(
             name="gitref",
diff --git a/arkindex/process/migrations/0030_remove_repository_processes.py b/arkindex/process/migrations/0030_remove_repository_processes.py
new file mode 100644
index 0000000000..fd7218ed91
--- /dev/null
+++ b/arkindex/process/migrations/0030_remove_repository_processes.py
@@ -0,0 +1,48 @@
+# Generated by Django 4.1.7 on 2024-02-29 13:28
+
+from django.db import migrations
+from enumfields import Enum
+
+
+class TmpProcessMode(Enum):
+    Repository = "repository"
+    Workers = "workers"
+
+
+def migrate_repository_processes(apps, schema):
+    """
+    If there are Repository processes on the instances, update their mode to Workers
+    and attach them to a "Repository processes" corpus
+    """
+    Process = apps.get_model("process", "Process")
+    Process.mode.field.enum = TmpProcessMode
+    # Do not do anything if there are no Repository processes to migrate
+    if not Process.objects.filter(mode=TmpProcessMode.Repository).exists():
+        return
+    # Create a project to which all the old repository process will be linked,
+    # as non-Repository process modes require a link to a corpus
+    Corpus = apps.get_model("documents", "Corpus")
+    archival_corpus, _ = Corpus.objects.get_or_create(
+        name="Repository processes",
+        description="A project created to re-home the migrated Gitlab repository import processes.",
+    )
+    Process.objects.filter(mode=TmpProcessMode.Repository).update(corpus=archival_corpus, mode=TmpProcessMode.Workers)
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ("process", "0029_processdataset_sets"),
+    ]
+
+    operations = [
+        migrations.RemoveConstraint(
+            model_name="process",
+            name="check_process_corpus",
+        ),
+        migrations.RunPython(
+            migrate_repository_processes,
+            reverse_code=migrations.RunPython.noop,
+            elidable=True,
+        ),
+    ]
diff --git a/arkindex/process/migrations/0031_process_corpus_check_and_remove_revision_field.py b/arkindex/process/migrations/0031_process_corpus_check_and_remove_revision_field.py
new file mode 100644
index 0000000000..fd2c5972b4
--- /dev/null
+++ b/arkindex/process/migrations/0031_process_corpus_check_and_remove_revision_field.py
@@ -0,0 +1,21 @@
+from django.db import migrations, models
+
+import arkindex.process.models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ("process", "0030_remove_repository_processes"),
+    ]
+
+    operations = [
+        migrations.AddConstraint(
+            model_name="process",
+            constraint=models.CheckConstraint(check=models.Q(("mode", arkindex.process.models.ProcessMode["Local"]), models.Q(("corpus", None), _negated=True), _connector="XOR"), name="check_process_corpus", violation_error_message="Local processes cannot have a corpus, and other modes must have one set."),
+        ),
+        migrations.RemoveField(
+            model_name="process",
+            name="revision",
+        ),
+    ]
diff --git a/arkindex/process/models.py b/arkindex/process/models.py
index 3acbede35e..75774d7048 100644
--- a/arkindex/process/models.py
+++ b/arkindex/process/models.py
@@ -54,7 +54,6 @@ class ActivityState(Enum):
 
 class ProcessMode(Enum):
     Files = "files"
-    Repository = "repository"
     IIIF = "iiif"
     Workers = "workers"
     Template = "template"
@@ -71,8 +70,6 @@ class Process(IndexableModel):
     mode = EnumField(ProcessMode, max_length=30)
     files = models.ManyToManyField("process.DataFile", related_name="processes")
     datasets = models.ManyToManyField("training.Dataset", related_name="processes", through="process.ProcessDataset")
-    revision = models.ForeignKey(
-        "process.Revision", related_name="processes", on_delete=models.CASCADE, blank=True, null=True)
     versions = models.ManyToManyField("process.WorkerVersion", through="process.WorkerRun", related_name="processes")
     activity_state = EnumField(ActivityState, max_length=32, default=ActivityState.Disabled)
 
@@ -173,11 +170,11 @@ class Process(IndexableModel):
         verbose_name_plural = "processes"
         constraints = [
             models.CheckConstraint(
-                # Either the process mode is local or repository and the process does not have a corpus,
+                # Either the process mode is local and the process does not have a corpus,
                 # or it has another mode and has a corpus set.
-                check=Q(mode__in=(ProcessMode.Local, ProcessMode.Repository)) ^ ~Q(corpus=None),
+                check=Q(mode=ProcessMode.Local) ^ ~Q(corpus=None),
                 name="check_process_corpus",
-                violation_error_message="Local and repository processes cannot have a corpus, and other modes must have one set.",
+                violation_error_message="Local processes cannot have a corpus, and other modes must have one set.",
             ),
             models.UniqueConstraint(
                 "creator",
diff --git a/arkindex/process/serializers/imports.py b/arkindex/process/serializers/imports.py
index a0688da6ca..2dbcb97b1f 100644
--- a/arkindex/process/serializers/imports.py
+++ b/arkindex/process/serializers/imports.py
@@ -18,7 +18,6 @@ from arkindex.process.models import (
     WorkerRun,
     WorkerVersionState,
 )
-from arkindex.process.serializers.git import RevisionSerializer
 from arkindex.project.mixins import ProcessACLMixin
 from arkindex.project.serializer_fields import EnumField, LinearRingField
 from arkindex.project.validators import MaxValueValidator
@@ -78,7 +77,6 @@ class ProcessSerializer(ProcessLightSerializer):
     Serialize a process with its settings
     """
     from arkindex.documents.serializers.elements import ElementSlimSerializer
-    revision = RevisionSerializer(read_only=True)
     element = ElementSlimSerializer(read_only=True)
     element_id = serializers.PrimaryKeyRelatedField(
         queryset=Element.objects.none(),
@@ -119,7 +117,6 @@ class ProcessSerializer(ProcessLightSerializer):
     class Meta(ProcessLightSerializer.Meta):
         fields = ProcessLightSerializer.Meta.fields + (
             "files",
-            "revision",
             "element",
             "element_id",
             "folder_type",
@@ -132,7 +129,6 @@ class ProcessSerializer(ProcessLightSerializer):
         )
         read_only_fields = ProcessLightSerializer.Meta.read_only_fields + (
             "files",
-            "revision",
             "element",
             "folder_type",
             "use_gpu",
@@ -522,7 +518,6 @@ class CreateProcessTemplateSerializer(serializers.ModelSerializer):
     def validate(self, data):
         data = super().validate(data)
         template = self.context["template"]
-        data["revision"] = template.revision
         data["mode"] = ProcessMode.Template
         data["creator"] = self.context["request"].user
         data["corpus"] = template.corpus
diff --git a/arkindex/process/serializers/training.py b/arkindex/process/serializers/training.py
index f56fc916a9..e7c25f1ec7 100644
--- a/arkindex/process/serializers/training.py
+++ b/arkindex/process/serializers/training.py
@@ -66,7 +66,7 @@ class ProcessDatasetSerializer(ProcessACLMixin, serializers.ModelSerializer):
             # Avoid a stale read when adding a dataset right after creating a process
             .using("default")
             # Required for ACL checks
-            .select_related("corpus", "revision__repo")
+            .select_related("corpus")
             # Required to check for a process that has already started
             .annotate(has_tasks=Exists(Task.objects.filter(process=OuterRef("pk"))))
         )
diff --git a/arkindex/process/serializers/workers.py b/arkindex/process/serializers/workers.py
index c72f5190b0..9faef9fcef 100644
--- a/arkindex/process/serializers/workers.py
+++ b/arkindex/process/serializers/workers.py
@@ -6,16 +6,14 @@ from django.core.exceptions import ValidationError as DjangoValidationError
 from django.db import transaction
 from django.db.models import Max, Q
 from rest_framework import serializers
-from rest_framework.exceptions import NotFound, PermissionDenied, ValidationError
+from rest_framework.exceptions import ValidationError
 
 from arkindex.ponos.models import Task
-from arkindex.ponos.utils import get_process_from_task_auth
 from arkindex.process.models import (
     CorpusWorkerVersion,
     FeatureUsage,
     GitRef,
     Process,
-    ProcessMode,
     Repository,
     Revision,
     Worker,
@@ -32,7 +30,6 @@ from arkindex.project.serializer_fields import ArchivedField, EnumField
 from arkindex.training.models import Model
 from arkindex.training.serializers import ModelVersionLightSerializer
 from arkindex.users.models import Role
-from arkindex.users.utils import get_max_level
 
 
 class ExistingWorkerException(Exception):
@@ -89,31 +86,14 @@ class WorkerCreateSerializer(WorkerSerializer):
     def create(self, validated_data):
         """
         Retrieve or create the worker and its type.
-        In case of using Ponos auth, the worker is linked to the process repository
         """
         request = self.context["request"]
-        repository = None
-        if isinstance(request.auth, Task):
-            process = get_process_from_task_auth(request)
-            if process is None or process.mode != ProcessMode.Repository or process.revision_id is None:
-                raise PermissionDenied(
-                    "Workers can only be created on processes of type Repository with a"
-                    " revision while using the Ponos authentication."
-                )
-            repository = process.revision.repo
-
-            access_right = get_max_level(request.user, repository)
-            if not access_right:
-                raise NotFound
-            elif access_right < Role.Admin.value:
-                raise PermissionDenied(detail="You do not have admin access to the repository of this process.")
-
         with transaction.atomic(using="default"):
-            # First ensure no worker exists with the given slug and repository
+            # First ensure no worker exists with the given slug and no repository
             existing_worker = (
                 Worker.objects
                 .using("default")
-                .filter(repository=repository, slug=validated_data["slug"])
+                .filter(repository_id=None, slug=validated_data["slug"])
                 .first()
             )
             if existing_worker:
@@ -129,14 +109,12 @@ class WorkerCreateSerializer(WorkerSerializer):
                 }
             )
             worker = Worker.objects.create(
-                repository=repository,
                 slug=validated_data["slug"],
                 name=validated_data["name"],
                 type=worker_type,
             )
-            if repository is None:
-                # Automatically grant an admin access to the creator of a local worker
-                worker.memberships.create(user=request.user, level=Role.Admin.value)
+            # Automatically grant an admin access to the creator of a local worker
+            worker.memberships.create(user=request.user, level=Role.Admin.value)
             return worker
 
 
diff --git a/arkindex/process/tests/test_corpus_worker_runs.py b/arkindex/process/tests/test_corpus_worker_runs.py
index 2e62a89f37..b170a9d7dd 100644
--- a/arkindex/process/tests/test_corpus_worker_runs.py
+++ b/arkindex/process/tests/test_corpus_worker_runs.py
@@ -142,8 +142,8 @@ class TestCorpusWorkerRuns(FixtureAPITestCase):
                 "worker_version": {
                     "id": str(self.dla_worker_version.id),
                     "configuration": {"test": 42},
-                    "docker_image": str(self.dla_worker_version.docker_image.id),
-                    "docker_image_iid": None,
+                    "docker_image": None,
+                    "docker_image_iid": self.dla_worker_version.docker_image_iid,
                     "docker_image_name": f"my_repo.fake/workers/worker/dla:{self.dla_worker_version.id}",
                     "gpu_usage": "disabled",
                     "model_usage": FeatureUsage.Disabled.value,
diff --git a/arkindex/process/tests/test_create_process.py b/arkindex/process/tests/test_create_process.py
index cfb1f59958..45a92de085 100644
--- a/arkindex/process/tests/test_create_process.py
+++ b/arkindex/process/tests/test_create_process.py
@@ -104,7 +104,6 @@ class TestCreateProcess(FixtureAPITestCase):
             "corpus": str(self.volume.corpus.id),
             "files": [],
             "mode": "workers",
-            "revision": process.revision,
             "folder_type": None,
             "element_type": "page",
             "ml_class_id": None,
@@ -157,7 +156,6 @@ class TestCreateProcess(FixtureAPITestCase):
             "mode": "workers",
             "corpus": str(self.corpus.id),
             "files": [],
-            "revision": process.revision,
             "folder_type": None,
             "element_type": None,
             "template_id": None,
@@ -381,7 +379,6 @@ class TestCreateProcess(FixtureAPITestCase):
             "corpus": str(self.corpus.id),
             "files": [],
             "mode": "workers",
-            "revision": None,
             "folder_type": None,
             "element_type": None,
             "element": None,
@@ -419,7 +416,6 @@ class TestCreateProcess(FixtureAPITestCase):
             "corpus": str(self.volume.corpus.id),
             "files": [],
             "mode": "workers",
-            "revision": process.revision,
             "folder_type": None,
             "element_type": None,
             "element": {
@@ -621,7 +617,7 @@ class TestCreateProcess(FixtureAPITestCase):
 
         reco_task = process_2.tasks.get(slug=run_1.task_slug)
         self.assertEqual(reco_task.command, None)
-        self.assertEqual(reco_task.image, f"my_repo.fake/workers/worker/reco:{self.version_1.id}")
+        self.assertEqual(reco_task.image, self.version_1.docker_image_iid)
         self.assertEqual(reco_task.shm_size, None)
         self.assertEqual(list(reco_task.parents.all()), [init_task])
         self.assertEqual(reco_task.env, {
@@ -634,7 +630,7 @@ class TestCreateProcess(FixtureAPITestCase):
 
         dla_task = process_2.tasks.get(slug=run_2.task_slug)
         self.assertEqual(dla_task.command, None)
-        self.assertEqual(dla_task.image, f"my_repo.fake/workers/worker/dla:{self.version_2.id}")
+        self.assertEqual(dla_task.image, self.version_2.docker_image_iid)
         self.assertEqual(dla_task.shm_size, None)
         self.assertEqual(list(dla_task.parents.all()), [reco_task])
         self.assertEqual(dla_task.env, {
@@ -711,8 +707,7 @@ class TestCreateProcess(FixtureAPITestCase):
 
         worker_task = process_2.tasks.get(slug=run.task_slug)
         self.assertEqual(worker_task.command, None)
-        self.assertEqual(worker_task.image, f"my_repo.fake/workers/worker/reco:{self.version_1.id}")
-        self.assertEqual(worker_task.image_artifact.id, self.version_1.docker_image.id)
+        self.assertEqual(worker_task.image, self.version_1.docker_image_iid)
         self.assertEqual(worker_task.shm_size, None)
         self.assertEqual(worker_task.env, {
             "ARKINDEX_TASK_TOKEN": "67891",
@@ -758,8 +753,7 @@ class TestCreateProcess(FixtureAPITestCase):
 
         worker_task = process_2.tasks.get(slug=run.task_slug)
         self.assertEqual(worker_task.command, None)
-        self.assertEqual(worker_task.image, f"my_repo.fake/workers/worker/worker-gpu:{self.version_3.id}")
-        self.assertEqual(worker_task.image_artifact.id, self.version_3.docker_image.id)
+        self.assertEqual(worker_task.image, self.version_3.docker_image_iid)
         self.assertEqual(worker_task.shm_size, None)
         self.assertEqual(worker_task.env, {
             "TASK_ELEMENTS": "/data/initialisation/elements.json",
@@ -812,8 +806,7 @@ class TestCreateProcess(FixtureAPITestCase):
 
                 worker_task = process.tasks.get(slug=run.task_slug)
                 self.assertEqual(worker_task.command, None)
-                self.assertEqual(worker_task.image, f"my_repo.fake/workers/worker/worker-gpu:{self.version_3.id}")
-                self.assertEqual(worker_task.image_artifact.id, self.version_3.docker_image.id)
+                self.assertEqual(worker_task.image, "registry.somewhere.com/something:latest")
                 self.assertEqual(worker_task.shm_size, None)
                 self.assertEqual(worker_task.env, {
                     "TASK_ELEMENTS": "/data/initialisation/elements.json",
@@ -989,7 +982,6 @@ class TestCreateProcess(FixtureAPITestCase):
             "corpus": str(self.corpus.id),
             "files": [],
             "mode": "workers",
-            "revision": None,
             "folder_type": None,
             "element_type": None,
             "element": None,
@@ -1032,7 +1024,6 @@ class TestCreateProcess(FixtureAPITestCase):
                 "corpus": str(self.corpus.id),
                 "files": [],
                 "mode": mode if mode else "workers",
-                "revision": None,
                 "folder_type": None,
                 "element_type": None,
                 "element": None,
diff --git a/arkindex/process/tests/test_datafile_api.py b/arkindex/process/tests/test_datafile_api.py
index 97b722c588..1b81c34856 100644
--- a/arkindex/process/tests/test_datafile_api.py
+++ b/arkindex/process/tests/test_datafile_api.py
@@ -190,7 +190,7 @@ class TestDataFileApi(FixtureAPITestCase):
         ]
         for process_mode, s3_url in cases:
             process.mode = process_mode
-            if process_mode in [ProcessMode.Local, ProcessMode.Repository]:
+            if process_mode == ProcessMode.Local:
                 process.corpus = None
             else:
                 process.corpus = self.corpus
diff --git a/arkindex/process/tests/test_docker_worker_version.py b/arkindex/process/tests/test_docker_worker_version.py
index 10262ce551..38c872135b 100644
--- a/arkindex/process/tests/test_docker_worker_version.py
+++ b/arkindex/process/tests/test_docker_worker_version.py
@@ -4,7 +4,7 @@ from django.urls import reverse
 from rest_framework import status
 
 from arkindex.ponos.models import Farm
-from arkindex.process.models import FeatureUsage, GitRefType, ProcessMode, Repository, Worker, WorkerType
+from arkindex.process.models import FeatureUsage, GitRefType, Process, ProcessMode, Repository, Worker, WorkerType
 from arkindex.project.tests import FixtureAPITestCase
 from arkindex.users.models import Role, Scope
 
@@ -33,10 +33,11 @@ class TestDockerWorkerVersion(FixtureAPITestCase):
         """
         Ponos task authentication is disabled on that endpoint
         """
-        process = self.rev.processes.create(
-            mode=ProcessMode.Repository,
+        process = Process.objects.create(
+            mode=ProcessMode.Workers,
             creator=self.user,
             farm=Farm.objects.first(),
+            corpus=self.corpus,
         )
         process.run()
         task = process.tasks.get()
@@ -432,8 +433,8 @@ class TestDockerWorkerVersion(FixtureAPITestCase):
         self.assertDictEqual(response.json(), {
             "id": str(self.version.id),
             "configuration": {"test": 42},
-            "docker_image": str(self.version.docker_image_id),
-            "docker_image_iid": None,
+            "docker_image": None,
+            "docker_image_iid": "registry.somewhere.com/something:latest",
             "docker_image_name": self.version.docker_image_name,
             "gpu_usage": FeatureUsage.Disabled.value,
             "model_usage": FeatureUsage.Disabled.value,
diff --git a/arkindex/process/tests/test_managers.py b/arkindex/process/tests/test_managers.py
index 70c192a016..8438449621 100644
--- a/arkindex/process/tests/test_managers.py
+++ b/arkindex/process/tests/test_managers.py
@@ -10,7 +10,6 @@ from arkindex.documents.models import (
     Transcription,
     TranscriptionEntity,
 )
-from arkindex.ponos.models import Artifact
 from arkindex.process.models import CorpusWorkerVersion, ProcessMode, Repository, WorkerRun
 from arkindex.project.tests import FixtureTestCase
 
@@ -21,10 +20,7 @@ class TestManagers(FixtureTestCase):
     def setUpTestData(cls):
         super().setUpTestData()
         cls.repo = Repository.objects.get(url="http://my_repo.fake/workers/worker")
-        cls.revision = cls.repo.revisions.first()
-        cls.artifact = Artifact.objects.get()
         # The fixtures have two worker versions, only one of them is used in existing elements
-
         cls.worker = cls.repo.workers.get(slug="reco")
         cls.worker_version = cls.worker.versions.get()
         cls.worker_configuration = cls.worker.configurations.create(name="test config")
diff --git a/arkindex/process/tests/test_process_datasets.py b/arkindex/process/tests/test_process_datasets.py
index af98d7b253..5f35cff0b9 100644
--- a/arkindex/process/tests/test_process_datasets.py
+++ b/arkindex/process/tests/test_process_datasets.py
@@ -7,7 +7,7 @@ from rest_framework import status
 
 from arkindex.documents.models import Corpus
 from arkindex.ponos.models import Farm
-from arkindex.process.models import Process, ProcessDataset, ProcessMode, Repository
+from arkindex.process.models import Process, ProcessDataset, ProcessMode
 from arkindex.project.tests import FixtureAPITestCase
 from arkindex.training.models import Dataset
 from arkindex.users.models import Role, User
@@ -51,11 +51,6 @@ class TestProcessDatasets(FixtureAPITestCase):
         )
         ProcessDataset.objects.create(process=cls.dataset_process_2, dataset=cls.dataset2, sets=cls.dataset2.sets)
 
-        # For repository process
-        cls.repo = Repository.objects.get(url="http://my_repo.fake/workers/worker")
-        cls.repo.memberships.create(user=cls.test_user, level=Role.Admin.value)
-        cls.rev = cls.repo.revisions.get()
-
     # List process datasets
 
     def test_list_requires_login(self):
@@ -165,7 +160,7 @@ class TestProcessDatasets(FixtureAPITestCase):
                 self.assertEqual(get_max_level_mock.call_args, call(self.test_user, self.private_corpus))
 
     def test_create_process_mode(self):
-        cases = set(ProcessMode) - {ProcessMode.Dataset, ProcessMode.Local, ProcessMode.Repository}
+        cases = set(ProcessMode) - {ProcessMode.Dataset, ProcessMode.Local}
         for mode in cases:
             with self.subTest(mode=mode):
                 self.dataset_process.mode = mode
@@ -716,7 +711,7 @@ class TestProcessDatasets(FixtureAPITestCase):
         self.assertFalse(ProcessDataset.objects.filter(process=self.dataset_process, dataset=new_dataset).exists())
 
     def test_destroy_process_mode(self):
-        cases = set(ProcessMode) - {ProcessMode.Dataset, ProcessMode.Local, ProcessMode.Repository}
+        cases = set(ProcessMode) - {ProcessMode.Dataset, ProcessMode.Local}
         for mode in cases:
             with self.subTest(mode=mode):
                 self.dataset_process.mode = mode
diff --git a/arkindex/process/tests/test_process_elements.py b/arkindex/process/tests/test_process_elements.py
index e437584d2d..ddb62ef3d3 100644
--- a/arkindex/process/tests/test_process_elements.py
+++ b/arkindex/process/tests/test_process_elements.py
@@ -544,9 +544,8 @@ class TestProcessElements(FixtureAPITestCase):
         # Every mode other than Workers never returns elements
         modes = list(ProcessMode)
         modes.remove(ProcessMode.Workers)
-        # Those modes do not have a corpus, causing HTTP 404
+        # Local processes do not have a corpus, causing HTTP 404
         modes.remove(ProcessMode.Local)
-        modes.remove(ProcessMode.Repository)
 
         for mode in modes:
             with self.subTest(mode=mode):
@@ -565,19 +564,17 @@ class TestProcessElements(FixtureAPITestCase):
 
     def test_no_corpus(self):
         """
-        ListProcessElements does not support repositories without a corpus
+        ListProcessElements does not support processes without a corpus
         """
         process = self.superuser.processes.get(corpus=None, mode=ProcessMode.Local)
         self.client.force_login(self.superuser)
 
-        for mode in (ProcessMode.Local, ProcessMode.Repository):
-            with self.subTest(mode=mode):
-                process.mode = mode
-                process.save()
-                with self.assertNumQueries(3):
-                    response = self.client.get(reverse("api:process-elements-list", kwargs={"pk": process.id}))
-                    self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
-                self.assertDictEqual(response.json(), {"detail": "Not found."})
+        process.mode = ProcessMode.Local
+        process.save()
+        with self.assertNumQueries(3):
+            response = self.client.get(reverse("api:process-elements-list", kwargs={"pk": process.id}))
+            self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
+        self.assertDictEqual(response.json(), {"detail": "Not found."})
 
     def test_workers_mode(self):
         # The Workers mode returns some elements
diff --git a/arkindex/process/tests/test_processes.py b/arkindex/process/tests/test_processes.py
index 1af5d37866..8a4d715cd2 100644
--- a/arkindex/process/tests/test_processes.py
+++ b/arkindex/process/tests/test_processes.py
@@ -18,7 +18,6 @@ from arkindex.process.models import (
     Process,
     ProcessDataset,
     ProcessMode,
-    Repository,
     WorkerActivity,
     WorkerActivityState,
     WorkerVersion,
@@ -37,8 +36,6 @@ class TestProcesses(FixtureAPITestCase):
     @classmethod
     def setUpTestData(cls):
         super().setUpTestData()
-        cls.repo = Repository.objects.get(url="http://my_repo.fake/workers/worker")
-        cls.rev = cls.repo.revisions.get()
         cls.dataset1, cls.dataset2 = Dataset.objects.filter(corpus=cls.corpus).order_by("name")
         cls.private_corpus = Corpus.objects.create(name="Private corpus")
         cls.private_dataset = cls.private_corpus.datasets.create(
@@ -87,19 +84,21 @@ class TestProcesses(FixtureAPITestCase):
         cls.private_ml_class = cls.private_corpus.ml_classes.create(name="beignet")
 
         # Contributor access
-        cls.repo.memberships.create(user=cls.user, level=Role.Contributor.value)
-        cls.repository_process = Process.objects.create(
-            mode=ProcessMode.Repository,
+        cls.other_corpus = Corpus.objects.create(name="SEELE")
+        cls.other_corpus.memberships.create(user=cls.user2, level=Role.Contributor.value)
+        cls.workers_process2 = cls.other_corpus.processes.create(
+            mode=ProcessMode.Workers,
             creator=cls.user2,
-            revision=cls.rev,
         )
+
         # Admin access
         cls.elts_process = cls.corpus.processes.create(
             mode=ProcessMode.Workers,
             creator=cls.user2,
         )
+
         cls.processes = Process.objects.filter(
-            id__in=[cls.user_img_process.id, cls.repository_process.id, cls.elts_process.id]
+            id__in=[cls.user_img_process.id, cls.workers_process2.id, cls.elts_process.id]
         )
 
         cls.local_process = Process.objects.get(
@@ -125,7 +124,7 @@ class TestProcesses(FixtureAPITestCase):
         # Order processes by causing updates on them
         self.elts_process.run()
         self.user_img_process.save()
-        self.repository_process.save()
+        self.workers_process2.save()
         # An update on a process task will make it first
         task = self.elts_process.tasks.first()
         task.save()
@@ -143,15 +142,15 @@ class TestProcesses(FixtureAPITestCase):
             "previous": None,
             "results": [
                 {
-                    "id": str(self.repository_process.id),
+                    "id": str(self.workers_process2.id),
                     "name": None,
-                    "mode": "repository",
-                    "corpus": None,
+                    "mode": "workers",
+                    "corpus": str(self.other_corpus.id),
                     "state": "unscheduled",
                     "activity_state": "disabled",
-                    "created": self.repository_process.created.isoformat().replace("+00:00", "Z"),
+                    "created": self.workers_process2.created.isoformat().replace("+00:00", "Z"),
                     "creator": "Process creator",
-                    "updated": self.repository_process.updated.isoformat().replace("+00:00", "Z"),
+                    "updated": self.workers_process2.updated.isoformat().replace("+00:00", "Z"),
                     "started": None,
                     "finished": None,
                     "use_cache": False,
@@ -244,7 +243,7 @@ class TestProcesses(FixtureAPITestCase):
         """
         Filter process that have not been started yet
         """
-        self.repository_process.run()
+        self.workers_process2.run()
         self.elts_process.run()
         self.client.force_login(self.user)
 
@@ -559,8 +558,8 @@ class TestProcesses(FixtureAPITestCase):
 
         self.assertFalse(self.user_img_process.tasks.exists())
         self.assertEqual(self.user_img_process.state, State.Unscheduled)
-        self.assertFalse(self.repository_process.tasks.exists())
-        self.assertEqual(self.repository_process.state, State.Unscheduled)
+        self.assertFalse(self.workers_process2.tasks.exists())
+        self.assertEqual(self.workers_process2.state, State.Unscheduled)
         self.assertFalse(self.elts_process.tasks.exists())
         self.assertEqual(self.elts_process.state, State.Unscheduled)
 
@@ -617,15 +616,15 @@ class TestProcesses(FixtureAPITestCase):
                     "use_cache": False
                 },
                 {
-                    "id": str(self.repository_process.id),
+                    "id": str(self.workers_process2.id),
                     "name": None,
-                    "mode": "repository",
-                    "corpus": None,
+                    "mode": "workers",
+                    "corpus": str(self.other_corpus.id),
                     "state": "unscheduled",
                     "activity_state": "disabled",
-                    "created": self.repository_process.created.isoformat().replace("+00:00", "Z"),
+                    "created": self.workers_process2.created.isoformat().replace("+00:00", "Z"),
                     "creator": "Process creator",
-                    "updated": self.repository_process.updated.isoformat().replace("+00:00", "Z"),
+                    "updated": self.workers_process2.updated.isoformat().replace("+00:00", "Z"),
                     "started": None,
                     "finished": None,
                     "use_cache": False
@@ -694,7 +693,6 @@ class TestProcesses(FixtureAPITestCase):
             "ml_class_id": None,
             "mode": "files",
             "name": None,
-            "revision": None,
             "state": "unscheduled",
             "tasks": [
                 {
@@ -956,19 +954,6 @@ class TestProcesses(FixtureAPITestCase):
         self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
         self.assertDictEqual(response.json(), {"detail": "You do not have a sufficient access level to this process."})
 
-    @expectedFailure
-    def test_partial_update_repository_requires_admin(self):
-        """
-        Edition of a repository import requires to be admin on the repository
-        """
-        self.client.force_login(self.user)
-        response = self.client.patch(
-            reverse("api:process-details", kwargs={"pk": self.repository_process.id}),
-            {"name": "newName"}
-        )
-        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
-        self.assertDictEqual(response.json(), {"detail": "You do not have a sufficient access level to this process."})
-
     def test_partial_update_stop(self):
         """
         A pending or running process can be stopped
@@ -1079,8 +1064,6 @@ class TestProcesses(FixtureAPITestCase):
         # Local processes cannot be accessed by anyone because they have no corpus and no revision,
         # not even instance admins, so they cause a 404 instead of 400
         forbidden_modes.remove(ProcessMode.Local)
-        # Tested separately; this process mode does not have a corpus, which causes other errors.
-        forbidden_modes.remove(ProcessMode.Repository)
 
         for mode in forbidden_modes:
             with self.subTest(mode=mode):
@@ -1107,34 +1090,6 @@ class TestProcesses(FixtureAPITestCase):
                     {"__all__": ["Only processes of mode Workers can be updated"]}
                 )
 
-    def test_update_repository(self):
-        """
-        Trying to update any field other than the `name` field on a Repository process is not allowed
-        """
-        self.client.force_login(self.superuser)
-        process = Process.objects.create(
-            creator=self.user,
-            mode=ProcessMode.Repository,
-            revision=self.rev,
-        )
-        with self.assertNumQueries(5):
-            response = self.client.put(
-                reverse("api:process-details", kwargs={"pk": process.id}),
-                {
-                    "name": "newName",
-                    "template_id": None,
-                    "element_type": "page",
-                    "element_name_contains": "AAA",
-                    "load_children": True,
-                },
-                format="json"
-            )
-            self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
-        self.assertDictEqual(
-            response.json(),
-            {"element_type": ["Object with slug=page does not exist."]},
-        )
-
     def test_update_unscheduled_stop(self):
         """
         An unscheduled process can be stopped
@@ -1307,7 +1262,6 @@ class TestProcesses(FixtureAPITestCase):
                 reverse("api:process-details", kwargs={"pk": process.id}),
                 {
                     "id": str(uuid.uuid4()),
-                    "revision": str(uuid.uuid4()),
                     "element": str(uuid.uuid4()),
                     "workflow": str(uuid.uuid4()),
                     "creator": str(uuid.uuid4()),
@@ -1348,7 +1302,6 @@ class TestProcesses(FixtureAPITestCase):
             "element": None,
             "files": [],
             "mode": "workers",
-            "revision": None,
             "state": "unscheduled",
             "template_id": None,
             "tasks": [],
@@ -1376,9 +1329,6 @@ class TestProcesses(FixtureAPITestCase):
                     creator=self.user,
                     corpus=self.corpus,
                 )
-                if mode == ProcessMode.Repository:
-                    process.corpus = None
-                    process.revision = self.rev
                 process.save()
 
                 response = self.client.patch(
@@ -1409,9 +1359,6 @@ class TestProcesses(FixtureAPITestCase):
                     creator=self.user,
                     corpus=self.corpus,
                 )
-                if mode == ProcessMode.Repository:
-                    process.corpus = None
-                    process.revision = self.rev
                 process.save()
 
                 self.assertEqual(process.name, None)
@@ -1546,7 +1493,6 @@ class TestProcesses(FixtureAPITestCase):
                 reverse("api:process-details", kwargs={"pk": process.id}),
                 {
                     "id": str(uuid.uuid4()),
-                    "revision": str(uuid.uuid4()),
                     "element": str(uuid.uuid4()),
                     "workflow": str(uuid.uuid4()),
                     "creator": str(uuid.uuid4()),
@@ -1584,7 +1530,6 @@ class TestProcesses(FixtureAPITestCase):
             "element": None,
             "files": [],
             "mode": "workers",
-            "revision": None,
             "state": "unscheduled",
             "template_id": None,
             "farm": None,
@@ -1600,22 +1545,6 @@ class TestProcesses(FixtureAPITestCase):
             response = self.client.post(reverse("api:process-retry", kwargs={"pk": self.user_img_process.id}))
             self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
 
-    @expectedFailure
-    def test_retry_repository_process_no_right(self):
-        """
-        A user that is not the creator nor admin cannot restart a process that is not linked to any corpus
-        """
-        self.client.force_login(self.user)
-        self.repository_process.run()
-        self.repository_process.tasks.all().update(state=State.Error)
-        self.assertEqual(self.repository_process.state, State.Error)
-
-        with self.assertNumQueries(9):
-            response = self.client.post(reverse("api:process-retry", kwargs={"pk": self.repository_process.id}))
-            self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
-
-        self.assertDictEqual(response.json(), {"detail": "You do not have an admin access to this process."})
-
     def test_retry_only_final(self):
         self.client.force_login(self.user)
         self.elts_process.run()
@@ -1967,7 +1896,6 @@ class TestProcesses(FixtureAPITestCase):
         self.assertIsNone(process.element)
         self.assertEqual(process.creator, self.user)
         self.assertEqual(process.corpus, self.corpus)
-        self.assertIsNone(process.revision)
 
         worker_run = process.worker_runs.get()
         self.assertEqual(worker_run.version, self.import_worker_version)
@@ -2815,7 +2743,6 @@ class TestProcesses(FixtureAPITestCase):
         })
         self.assertEqual(worker_task.image, run.version.docker_image_iid or run.version.docker_image_name)
         self.assertEqual(worker_task.command, run.version.docker_command)
-        self.assertEqual(worker_task.image_artifact.id, run.version.docker_image_id)
         self.assertEqual(worker_task.extra_files, {
             "model": "https://arkindex.localhost" + reverse("api:model-version-download", kwargs={"pk": run.model_version.id}) + f"?token={run.model_version.build_authentication_token_hash()}"
         })
diff --git a/arkindex/process/tests/test_repos.py b/arkindex/process/tests/test_repos.py
index 607efa3d20..e7f3fdc1fe 100644
--- a/arkindex/process/tests/test_repos.py
+++ b/arkindex/process/tests/test_repos.py
@@ -3,7 +3,7 @@ from rest_framework import status
 from rest_framework.serializers import DateTimeField
 
 from arkindex.ponos.models import Farm
-from arkindex.process.models import ProcessMode, Repository
+from arkindex.process.models import Repository
 from arkindex.project.tests import FixtureTestCase
 from arkindex.users.models import Role, User
 
@@ -109,60 +109,6 @@ class TestRepositories(FixtureTestCase):
             "authorized_users": self.repo_2.memberships.count(),
         })
 
-    def test_repository_retrieve_ponos_task(self):
-        """
-        A Ponos task can retrieve the clone URL for the repository it should work on
-        """
-        process = self.repo_2.revisions.first().processes.create(
-            mode=ProcessMode.Repository,
-            creator=self.user,
-            farm=Farm.objects.first(),
-        )
-        process.run()
-        task = process.tasks.get()
-        self.repo_2.memberships.create(user=self.user, level=Role.Guest.value)
-
-        with self.assertNumQueries(3):
-            response = self.client.get(
-                reverse("api:repository-retrieve", kwargs={"pk": str(self.repo_2.id)}),
-                HTTP_AUTHORIZATION=f"Ponos {task.token}",
-            )
-            self.assertEqual(response.status_code, status.HTTP_200_OK)
-
-        self.assertDictEqual(response.json(), {
-            "id": str(self.repo_2.id),
-            "url": self.repo_2.url,
-            "workers": [],
-            "authorized_users": self.repo_2.memberships.count(),
-        })
-
-    def test_repository_retrieve_ponos_task_not_assigned(self):
-        """
-        A Ponos task cannot retrieve the clone URL of a repository it should not work on
-        """
-        process = self.repo.revisions.first().processes.create(
-            mode=ProcessMode.Repository,
-            creator=self.user,
-            farm=Farm.objects.first(),
-        )
-        process.run()
-        task = process.tasks.get()
-        self.repo_2.memberships.create(user=self.user, level=Role.Guest.value)
-
-        with self.assertNumQueries(3):
-            response = self.client.get(
-                reverse("api:repository-retrieve", kwargs={"pk": str(self.repo_2.id)}),
-                HTTP_AUTHORIZATION=f"Ponos {task.token}",
-            )
-            self.assertEqual(response.status_code, status.HTTP_200_OK)
-
-        self.assertDictEqual(response.json(), {
-            "id": str(self.repo_2.id),
-            "url": self.repo_2.url,
-            "workers": [],
-            "authorized_users": self.repo_2.memberships.count(),
-        })
-
     def test_repository_retrieve_disabled_repo(self):
         self.repo_2.memberships.create(user=self.user, level=Role.Guest.value)
         self.client.force_login(self.user)
diff --git a/arkindex/process/tests/test_templates.py b/arkindex/process/tests/test_templates.py
index 49f8b82e94..770b6d2f96 100644
--- a/arkindex/process/tests/test_templates.py
+++ b/arkindex/process/tests/test_templates.py
@@ -6,14 +6,7 @@ from rest_framework import status
 from rest_framework.reverse import reverse
 
 from arkindex.documents.models import Corpus
-from arkindex.process.models import (
-    Process,
-    ProcessMode,
-    WorkerConfiguration,
-    WorkerRun,
-    WorkerVersion,
-    WorkerVersionState,
-)
+from arkindex.process.models import ProcessMode, WorkerConfiguration, WorkerRun, WorkerVersion, WorkerVersionState
 from arkindex.project.tests import FixtureAPITestCase
 from arkindex.training.models import Model, ModelVersionState
 from arkindex.users.models import Role, User
@@ -177,7 +170,6 @@ class TestTemplates(FixtureAPITestCase):
         for mode in set(ProcessMode) - {ProcessMode.Workers, ProcessMode.Dataset, ProcessMode.Local}:
             with self.subTest(mode=mode):
                 self.process.mode = mode
-                self.process.corpus = None if mode == ProcessMode.Repository else self.corpus
                 self.process.save()
 
                 with self.assertNumQueries(5):
@@ -307,7 +299,7 @@ class TestTemplates(FixtureAPITestCase):
         self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
 
     def test_apply(self):
-        self.assertIsNotNone(self.version_2.docker_image_id)
+        self.assertIsNotNone(self.version_2.docker_image_iid)
         self.client.force_login(self.user)
         with self.assertNumQueries(11):
             response = self.client.post(
@@ -453,7 +445,7 @@ class TestTemplates(FixtureAPITestCase):
 
     def test_apply_unsupported_mode(self):
         self.client.force_login(self.user)
-        for mode in set(ProcessMode) - {ProcessMode.Workers, ProcessMode.Dataset, ProcessMode.Local, ProcessMode.Repository}:
+        for mode in set(ProcessMode) - {ProcessMode.Workers, ProcessMode.Dataset, ProcessMode.Local}:
             with self.subTest(mode=mode):
                 self.process.mode = mode
                 self.process.save()
@@ -490,24 +482,6 @@ class TestTemplates(FixtureAPITestCase):
         local_process.refresh_from_db()
         self.assertEqual(local_process.template, None)
 
-    def test_apply_repository(self):
-        self.client.force_login(self.user)
-        process = Process.objects.filter(mode=ProcessMode.Repository).first()
-
-        with self.assertNumQueries(6):
-            response = self.client.post(
-                reverse("api:apply-process-template", kwargs={"pk": str(self.template.id)}),
-                data=json.dumps({"process_id": str(process.id)}),
-                content_type="application/json",
-            )
-            self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
-
-        self.assertEqual(response.json(), {
-            "process_id": ["Process with this ID does not exist."],
-        })
-        process.refresh_from_db()
-        self.assertEqual(process.template, None)
-
     def test_list_ignores_configuration_filter(self):
         self.client.force_login(self.user)
         with self.assertNumQueries(4):
diff --git a/arkindex/process/tests/test_user_workerruns.py b/arkindex/process/tests/test_user_workerruns.py
index 69c05a1d5b..f3b2884c47 100644
--- a/arkindex/process/tests/test_user_workerruns.py
+++ b/arkindex/process/tests/test_user_workerruns.py
@@ -95,8 +95,8 @@ class TestUserWorkerRuns(FixtureAPITestCase):
                     "test": 42
                 },
                 "created": self.version_1.created.isoformat().replace("+00:00", "Z"),
-                "docker_image": str(self.version_1.docker_image.id),
-                "docker_image_iid": None,
+                "docker_image": None,
+                "docker_image_iid": self.version_1.docker_image_iid,
                 "docker_image_name": f"my_repo.fake/workers/worker/reco:{str(self.version_1.id)}",
                 "gpu_usage": "disabled",
                 "id": str(self.version_1.id),
diff --git a/arkindex/process/tests/test_workeractivity.py b/arkindex/process/tests/test_workeractivity.py
index 4520f37c3a..6ce01a5368 100644
--- a/arkindex/process/tests/test_workeractivity.py
+++ b/arkindex/process/tests/test_workeractivity.py
@@ -13,7 +13,6 @@ from arkindex.process.models import (
     Process,
     ProcessMode,
     Repository,
-    Revision,
     WorkerActivity,
     WorkerActivityState,
     WorkerConfiguration,
@@ -331,11 +330,10 @@ class TestWorkerActivity(FixtureTestCase):
         Unlike the usual HTTP 409, we can raise a HTTP 400 here as the check requires no extra query and can be done
         in the serializer before the UPDATE query that normally updates any WorkerActivity if it exists.
         """
-        rev = Revision.objects.first()
         process2 = Process.objects.create(
-            mode=ProcessMode.Repository,
+            mode=ProcessMode.Workers,
             creator=self.user,
-            revision=rev,
+            corpus=self.corpus,
             farm=Farm.objects.first(),
         )
         process2.run()
@@ -674,7 +672,7 @@ class TestWorkerActivity(FixtureTestCase):
             revision=self.worker_version.revision,
             configuration={},
             state=WorkerVersionState.Available,
-            docker_image=self.worker_version.docker_image
+            docker_image_iid=self.worker_version.docker_image_iid
         )
         # Create runs run_1 > run_2 > run_3
         run_1 = self.process.worker_runs.first()
diff --git a/arkindex/process/tests/test_workerruns.py b/arkindex/process/tests/test_workerruns.py
index d0a6f75d27..cbe72a1c97 100644
--- a/arkindex/process/tests/test_workerruns.py
+++ b/arkindex/process/tests/test_workerruns.py
@@ -8,7 +8,7 @@ from django.urls import reverse
 from rest_framework import status
 from rest_framework.exceptions import ValidationError
 
-from arkindex.ponos.models import Agent, Artifact, Farm, State
+from arkindex.ponos.models import Agent, Farm, State
 from arkindex.process.models import (
     FeatureUsage,
     GitRef,
@@ -37,7 +37,6 @@ class TestWorkerRuns(FixtureAPITestCase):
     @classmethod
     def setUpTestData(cls):
         super().setUpTestData()
-        cls.artifact = Artifact.objects.first()
         cls.local_process = cls.user.processes.get(mode=ProcessMode.Local)
         cls.farm = Farm.objects.first()
         cls.process_1 = cls.corpus.processes.create(
@@ -131,8 +130,8 @@ class TestWorkerRuns(FixtureAPITestCase):
             "worker_version": {
                 "id": str(self.version_1.id),
                 "configuration": {"test": 42},
-                "docker_image": str(self.version_1.docker_image.id),
-                "docker_image_iid": None,
+                "docker_image": None,
+                "docker_image_iid": self.version_1.docker_image_iid,
                 "docker_image_name": f"my_repo.fake/workers/worker/reco:{self.version_1.id}",
                 "gpu_usage": "disabled",
                 "model_usage": FeatureUsage.Disabled.value,
@@ -333,7 +332,7 @@ class TestWorkerRuns(FixtureAPITestCase):
     def test_create_invalid_process_mode(self):
         self.client.force_login(self.user)
 
-        for mode in set(ProcessMode) - {ProcessMode.Workers, ProcessMode.Dataset, ProcessMode.Local, ProcessMode.Repository}:
+        for mode in set(ProcessMode) - {ProcessMode.Workers, ProcessMode.Dataset, ProcessMode.Local}:
             with self.subTest(mode=mode):
                 self.process_2.mode = mode
                 self.process_2.save()
@@ -353,19 +352,13 @@ class TestWorkerRuns(FixtureAPITestCase):
     def test_create_non_corpus_process_mode(self):
         process = self.user.processes.get(mode=ProcessMode.Local)
         self.client.force_login(self.user)
-
-        for mode in {ProcessMode.Local, ProcessMode.Repository}:
-            with self.subTest(mode=mode):
-                process.mode = mode
-                process.save()
-
-                with self.assertNumQueries(3):
-                    response = self.client.post(
-                        reverse("api:worker-run-list", kwargs={"pk": str(process.id)}),
-                        {"worker_version_id": str(self.version_1.id), "parents": []},
-                        format="json",
-                    )
-                    self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
+        with self.assertNumQueries(3):
+            response = self.client.post(
+                reverse("api:worker-run-list", kwargs={"pk": str(process.id)}),
+                {"worker_version_id": str(self.version_1.id), "parents": []},
+                format="json",
+            )
+            self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
 
     def test_create_process_already_started(self):
         process = self.corpus.processes.create(
@@ -414,8 +407,8 @@ class TestWorkerRuns(FixtureAPITestCase):
                     "worker_version": {
                         "id": str(self.version_1.id),
                         "configuration": {"test": 42},
-                        "docker_image": str(self.version_1.docker_image.id),
-                        "docker_image_iid": None,
+                        "docker_image": None,
+                        "docker_image_iid": self.version_1.docker_image_iid,
                         "docker_image_name": f"my_repo.fake/workers/worker/reco:{self.version_1.id}",
                         "gpu_usage": "disabled",
                         "model_usage": FeatureUsage.Disabled.value,
@@ -507,8 +500,8 @@ class TestWorkerRuns(FixtureAPITestCase):
             "worker_version": {
                 "id": str(self.version_1.id),
                 "configuration": {"test": 42},
-                "docker_image": str(self.version_1.docker_image.id),
-                "docker_image_iid": None,
+                "docker_image": None,
+                "docker_image_iid": self.version_1.docker_image_iid,
                 "docker_image_name": f"my_repo.fake/workers/worker/reco:{self.version_1.id}",
                 "gpu_usage": "disabled",
                 "model_usage": FeatureUsage.Disabled.value,
@@ -594,7 +587,7 @@ class TestWorkerRuns(FixtureAPITestCase):
             revision=revision,
             configuration={},
             state=WorkerVersionState.Available,
-            docker_image_id=self.version_1.docker_image_id,
+            docker_image_iid=self.version_1.docker_image_iid,
         )
 
         with self.assertNumQueries(8):
@@ -612,8 +605,8 @@ class TestWorkerRuns(FixtureAPITestCase):
             "worker_version": {
                 "id": str(version.id),
                 "configuration": {},
-                "docker_image": str(self.version_1.docker_image_id),
-                "docker_image_iid": None,
+                "docker_image": None,
+                "docker_image_iid": version.docker_image_iid,
                 "docker_image_name": f"my_repo.fake/workers/worker/reco:{version.id}",
                 "gpu_usage": "disabled",
                 "model_usage": FeatureUsage.Disabled.value,
@@ -689,8 +682,8 @@ class TestWorkerRuns(FixtureAPITestCase):
             "worker_version": {
                 "id": str(self.version_1.id),
                 "configuration": {"test": 42},
-                "docker_image": str(self.version_1.docker_image.id),
-                "docker_image_iid": None,
+                "docker_image": None,
+                "docker_image_iid": self.version_1.docker_image_iid,
                 "docker_image_name": f"my_repo.fake/workers/worker/reco:{self.version_1.id}",
                 "gpu_usage": "disabled",
                 "model_usage": FeatureUsage.Disabled.value,
@@ -749,8 +742,8 @@ class TestWorkerRuns(FixtureAPITestCase):
             "worker_version": {
                 "id": str(self.version_1.id),
                 "configuration": {"test": 42},
-                "docker_image": str(self.version_1.docker_image.id),
-                "docker_image_iid": None,
+                "docker_image": None,
+                "docker_image_iid": self.version_1.docker_image_iid,
                 "docker_image_name": f"my_repo.fake/workers/worker/reco:{self.version_1.id}",
                 "gpu_usage": "disabled",
                 "model_usage": FeatureUsage.Disabled.value,
@@ -913,8 +906,8 @@ class TestWorkerRuns(FixtureAPITestCase):
             "worker_version": {
                 "id": str(self.version_1.id),
                 "configuration": {"test": 42},
-                "docker_image": str(self.version_1.docker_image.id),
-                "docker_image_iid": None,
+                "docker_image": None,
+                "docker_image_iid": self.version_1.docker_image_iid,
                 "docker_image_name": f"my_repo.fake/workers/worker/reco:{self.version_1.id}",
                 "gpu_usage": "disabled",
                 "model_usage": FeatureUsage.Disabled.value,
@@ -983,8 +976,8 @@ class TestWorkerRuns(FixtureAPITestCase):
             "worker_version": {
                 "id": str(self.version_1.id),
                 "configuration": {"test": 42},
-                "docker_image": str(self.version_1.docker_image.id),
-                "docker_image_iid": None,
+                "docker_image": None,
+                "docker_image_iid": self.version_1.docker_image_iid,
                 "docker_image_name": f"my_repo.fake/workers/worker/reco:{self.version_1.id}",
                 "gpu_usage": "disabled",
                 "model_usage": FeatureUsage.Disabled.value,
@@ -1230,8 +1223,8 @@ class TestWorkerRuns(FixtureAPITestCase):
             "worker_version": {
                 "id": str(self.version_1.id),
                 "configuration": {"test": 42},
-                "docker_image": str(self.version_1.docker_image.id),
-                "docker_image_iid": None,
+                "docker_image": None,
+                "docker_image_iid": self.version_1.docker_image_iid,
                 "docker_image_name": f"my_repo.fake/workers/worker/reco:{self.version_1.id}",
                 "gpu_usage": "disabled",
                 "model_usage": FeatureUsage.Disabled.value,
@@ -1292,8 +1285,8 @@ class TestWorkerRuns(FixtureAPITestCase):
             "worker_version": {
                 "id": str(self.version_1.id),
                 "configuration": {"test": 42},
-                "docker_image": str(self.version_1.docker_image.id),
-                "docker_image_iid": None,
+                "docker_image": None,
+                "docker_image_iid": self.version_1.docker_image_iid,
                 "docker_image_name": f"my_repo.fake/workers/worker/reco:{self.version_1.id}",
                 "gpu_usage": "disabled",
                 "model_usage": FeatureUsage.Disabled.value,
@@ -1362,8 +1355,8 @@ class TestWorkerRuns(FixtureAPITestCase):
             "worker_version": {
                 "id": str(self.version_1.id),
                 "configuration": {"test": 42},
-                "docker_image": str(self.version_1.docker_image.id),
-                "docker_image_iid": None,
+                "docker_image": None,
+                "docker_image_iid": self.version_1.docker_image_iid,
                 "docker_image_name": f"my_repo.fake/workers/worker/reco:{self.version_1.id}",
                 "gpu_usage": "disabled",
                 "model_usage": FeatureUsage.Disabled.value,
@@ -1942,8 +1935,8 @@ class TestWorkerRuns(FixtureAPITestCase):
             "worker_version": {
                 "id": str(self.version_1.id),
                 "configuration": {"test": 42},
-                "docker_image": str(self.version_1.docker_image.id),
-                "docker_image_iid": None,
+                "docker_image": None,
+                "docker_image_iid": self.version_1.docker_image_iid,
                 "docker_image_name": f"my_repo.fake/workers/worker/reco:{self.version_1.id}",
                 "gpu_usage": "disabled",
                 "model_usage": FeatureUsage.Disabled.value,
@@ -2175,8 +2168,8 @@ class TestWorkerRuns(FixtureAPITestCase):
             "worker_version": {
                 "id": str(self.version_1.id),
                 "configuration": {"test": 42},
-                "docker_image": str(self.version_1.docker_image.id),
-                "docker_image_iid": None,
+                "docker_image": None,
+                "docker_image_iid": self.version_1.docker_image_iid,
                 "docker_image_name": f"my_repo.fake/workers/worker/reco:{self.version_1.id}",
                 "gpu_usage": "disabled",
                 "model_usage": FeatureUsage.Disabled.value,
@@ -2237,8 +2230,8 @@ class TestWorkerRuns(FixtureAPITestCase):
             "worker_version": {
                 "id": str(self.version_1.id),
                 "configuration": {"test": 42},
-                "docker_image": str(self.version_1.docker_image.id),
-                "docker_image_iid": None,
+                "docker_image": None,
+                "docker_image_iid": self.version_1.docker_image_iid,
                 "docker_image_name": f"my_repo.fake/workers/worker/reco:{self.version_1.id}",
                 "gpu_usage": "disabled",
                 "model_usage": FeatureUsage.Disabled.value,
@@ -2304,8 +2297,8 @@ class TestWorkerRuns(FixtureAPITestCase):
             "worker_version": {
                 "id": str(self.version_1.id),
                 "configuration": {"test": 42},
-                "docker_image": str(self.version_1.docker_image.id),
-                "docker_image_iid": None,
+                "docker_image": None,
+                "docker_image_iid": self.version_1.docker_image_iid,
                 "docker_image_name": f"my_repo.fake/workers/worker/reco:{self.version_1.id}",
                 "gpu_usage": "disabled",
                 "model_usage": FeatureUsage.Disabled.value,
@@ -2867,8 +2860,8 @@ class TestWorkerRuns(FixtureAPITestCase):
             "worker_version": {
                 "id": str(self.version_1.id),
                 "configuration": {"test": 42},
-                "docker_image": str(self.version_1.docker_image.id),
-                "docker_image_iid": None,
+                "docker_image": None,
+                "docker_image_iid": self.version_1.docker_image_iid,
                 "docker_image_name": f"my_repo.fake/workers/worker/reco:{self.version_1.id}",
                 "gpu_usage": "disabled",
                 "model_usage": FeatureUsage.Disabled.value,
@@ -3097,13 +3090,11 @@ class TestWorkerRuns(FixtureAPITestCase):
         })
 
     def test_build_task_no_parent(self):
-        self.version_1.docker_image_id = self.artifact.id
         task, parent_slugs = self.run_1.build_task(self.process_1, ENV.copy(), "import", "/data/import/elements.json")
 
         self.assertEqual(task.slug, f"reco_{str(self.run_1.id)[0:6]}")
-        self.assertEqual(task.image, f"my_repo.fake/workers/worker/reco:{str(self.version_1.id)}")
+        self.assertEqual(task.image, self.version_1.docker_image_iid)
         self.assertEqual(task.command, None)
-        self.assertEqual(task.image_artifact, self.artifact)
         self.assertEqual(task.shm_size, None)
         self.assertEqual(parent_slugs, ["import"])
         self.assertEqual(task.env, {
@@ -3114,13 +3105,11 @@ class TestWorkerRuns(FixtureAPITestCase):
         })
 
     def test_build_task_with_chunk(self):
-        self.version_1.docker_image_id = self.artifact.id
         task, parent_slugs = self.run_1.build_task(self.process_1, ENV.copy(), "import", "/data/import/elements.json", chunk=4)
 
         self.assertEqual(task.slug, f"reco_{str(self.run_1.id)[0:6]}_4")
-        self.assertEqual(task.image, f"my_repo.fake/workers/worker/reco:{str(self.version_1.id)}")
+        self.assertEqual(task.image, self.version_1.docker_image_iid)
         self.assertEqual(task.command, None)
-        self.assertEqual(task.image_artifact, self.artifact)
         self.assertEqual(task.shm_size, None)
         self.assertEqual(parent_slugs, ["import"])
         self.assertEqual(task.env, {
@@ -3142,7 +3131,7 @@ class TestWorkerRuns(FixtureAPITestCase):
             revision=rev_2,
             configuration={"test": "test2"}
         )
-        version_2.docker_image_id = self.artifact.id
+        version_2.docker_image_iid = "evaunit:latest"
         version_2.state = WorkerVersionState.Available
         run_2 = self.process_1.worker_runs.create(
             version=version_2,
@@ -3152,9 +3141,8 @@ class TestWorkerRuns(FixtureAPITestCase):
         task, parent_slugs = run_2.build_task(self.process_1, ENV.copy(), "import", "/data/import/elements.json")
 
         self.assertEqual(task.slug, f"reco_{str(run_2.id)[0:6]}")
-        self.assertEqual(task.image, f"my_repo.fake/workers/worker/reco:{str(version_2.id)}")
+        self.assertEqual(task.image, version_2.docker_image_iid)
         self.assertEqual(task.command, None)
-        self.assertEqual(task.image_artifact, self.artifact)
         self.assertEqual(task.shm_size, None)
         self.assertEqual(parent_slugs, [f"reco_{str(self.run_1.id)[0:6]}"])
         self.assertEqual(task.env, {
@@ -3175,7 +3163,7 @@ class TestWorkerRuns(FixtureAPITestCase):
             revision=rev_2,
             configuration={"test": "test2"}
         )
-        version_2.docker_image_id = self.artifact.id
+        version_2.docker_image_iid = "evaunit:latest"
         version_2.state = WorkerVersionState.Available
         run_2 = self.process_1.worker_runs.create(
             version=version_2,
@@ -3185,9 +3173,8 @@ class TestWorkerRuns(FixtureAPITestCase):
         task, parent_slugs = run_2.build_task(self.process_1, ENV.copy(), "import", "/data/import/elements.json", chunk=4)
 
         self.assertEqual(task.slug, f"reco_{str(run_2.id)[0:6]}_4")
-        self.assertEqual(task.image, f"my_repo.fake/workers/worker/reco:{str(version_2.id)}")
+        self.assertEqual(task.image, version_2.docker_image_iid)
         self.assertEqual(task.command, None)
-        self.assertEqual(task.image_artifact, self.artifact)
         self.assertEqual(task.shm_size, None)
         self.assertEqual(parent_slugs, [f"reco_{str(self.run_1.id)[0:6]}_4"])
         self.assertEqual(task.env, {
@@ -3199,7 +3186,6 @@ class TestWorkerRuns(FixtureAPITestCase):
         })
 
     def test_build_task_shm_size(self):
-        self.version_1.docker_image_id = self.artifact.id
         self.version_1.configuration = {
             "docker": {
                 "shm_size": 505,
@@ -3208,9 +3194,8 @@ class TestWorkerRuns(FixtureAPITestCase):
         task, parent_slugs = self.run_1.build_task(self.process_1, ENV.copy(), "import", "/data/import/elements.json")
 
         self.assertEqual(task.slug, f"reco_{str(self.run_1.id)[0:6]}")
-        self.assertEqual(task.image, f"my_repo.fake/workers/worker/reco:{str(self.version_1.id)}")
+        self.assertEqual(task.image, self.version_1.docker_image_iid)
         self.assertEqual(task.command, None)
-        self.assertEqual(task.image_artifact, self.artifact)
         self.assertEqual(task.shm_size, 505)
         self.assertEqual(parent_slugs, ["import"])
         self.assertEqual(task.env, {
@@ -3231,7 +3216,7 @@ class TestWorkerRuns(FixtureAPITestCase):
             revision=rev_2,
             configuration={"test": "test2"}
         )
-        version_2.docker_image_id = self.artifact.id
+        version_2.docker_image_iid = "evaunit:latest"
         self.assertEqual(version_2.state, WorkerVersionState.Created)
         run_2 = self.process_1.worker_runs.create(
             version=version_2,
diff --git a/arkindex/process/tests/test_workers.py b/arkindex/process/tests/test_workers.py
index 98a2d31ffd..b1a24c423f 100644
--- a/arkindex/process/tests/test_workers.py
+++ b/arkindex/process/tests/test_workers.py
@@ -1,4 +1,3 @@
-import uuid
 from datetime import datetime, timezone
 from unittest.mock import call, patch
 
@@ -11,7 +10,6 @@ from arkindex.process.models import (
     CorpusWorkerVersion,
     FeatureUsage,
     GitRefType,
-    Process,
     ProcessMode,
     Repository,
     Revision,
@@ -68,10 +66,11 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
         )
 
         cls.farm = Farm.objects.first()
-        process = cls.rev.processes.create(
-            mode=ProcessMode.Repository,
+        process = cls.corpus.processes.create(
+            mode=ProcessMode.Workers,
             creator=cls.user,
             farm=cls.farm,
+            name="test_process"
         )
         process.run()
         cls.task = process.tasks.get()
@@ -575,26 +574,6 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
             "type": ["This field is required."]
         })
 
-    def test_worker_create_task_read_only_repository_id(self):
-        """
-        Repository ID is deduced from the authenticated task.
-        """
-        with self.assertNumQueries(8):
-            response = self.client.post(
-                reverse("api:workers-list"),
-                data={
-                    "repository_id": uuid.uuid4(),
-                    "name": "Worker post",
-                    "slug": "worker_post",
-                    "type": self.worker_type_dla.slug
-                },
-                HTTP_AUTHORIZATION=f"Ponos {self.task.token}",
-            )
-            self.assertEqual(response.status_code, status.HTTP_201_CREATED)
-
-        worker = Worker.objects.get(id=response.json()["id"])
-        assert worker.repository_id == self.repo.id
-
     def test_worker_create_user(self):
         """
         A user can create a worker that is not linked to a repository.
@@ -657,65 +636,21 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
         self.assertEqual(get_max_level_mock.call_count, 1)
         self.assertEqual(get_max_level_mock.call_args, call(self.user, self.worker_custom))
 
-    def test_worker_create_task_repository_process(self):
-        """
-        Ponos tasks can create a worker only on a process of Repository type
-        """
-        process = Process.objects.get(mode=ProcessMode.Workers)
-        process.run()
-        task = process.tasks.first()
-
-        with self.assertNumQueries(1):
-            response = self.client.post(
-                reverse("api:workers-list"),
-                data={
-                    "name": "Worker post",
-                    "slug": "worker_post",
-                    "type": self.worker_type_dla.slug
-                },
-                HTTP_AUTHORIZATION=f"Ponos {task.token}",
-            )
-            self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
-
-        self.assertDictEqual(response.json(), {
-            "detail": (
-                "Workers can only be created on processes of type Repository with a"
-                " revision while using the Ponos authentication."
-            )
-        })
-
-    @patch("arkindex.process.serializers.workers.get_max_level", return_value=None)
-    def test_worker_create_task_rights(self, get_max_level_mock):
-        """
-        Ponos tasks are not allowed to create workers when they do not have a right on the repository
-        """
-        with self.assertNumQueries(3):
-            response = self.client.post(
-                reverse("api:workers-list"),
-                data={
-                    "repository_id": str(self.repo.id),
-                    "name": "Worker post",
-                    "slug": "worker_post",
-                    "type": self.worker_type_dla.slug
-                },
-                HTTP_AUTHORIZATION=f"Ponos {self.task.token}",
-            )
-            self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
-
-        self.assertEqual(get_max_level_mock.call_count, 1)
-        self.assertEqual(get_max_level_mock.call_args, call(self.user, self.repo))
-
     def test_worker_create_task_return_existing_worker(self):
         """
         Creation with an existing slug returns the existing worker with a HTTP status 200
         """
-        with self.assertNumQueries(8):
+        test_worker = Worker.objects.create(
+            name="Prog Knife",
+            slug="prog_knife",
+            type=self.worker_reco.type
+        )
+        with self.assertNumQueries(6):
             response = self.client.post(
                 reverse("api:workers-list"),
                 data={
-                    "repository_id": str(self.repo.id),
-                    "name": "Worker Test",
-                    "slug": "reco",
+                    "name": "Progressive Knife",
+                    "slug": "prog_knife",
                     "type": self.worker_type_dla.slug
                 },
                 HTTP_AUTHORIZATION=f"Ponos {self.task.token}",
@@ -723,9 +658,9 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
             self.assertEqual(response.status_code, status.HTTP_200_OK)
 
         data = response.json()
-        self.assertEqual(data["id"], str(self.worker_reco.id))
-        self.assertEqual(data["name"], "Recognizer")
-        self.assertEqual(data["slug"], "reco")
+        self.assertEqual(data["id"], str(test_worker.id))
+        self.assertEqual(data["name"], "Prog Knife")
+        self.assertEqual(data["slug"], "prog_knife")
         self.assertEqual(data["type"], "recognizer")
 
     def test_worker_create_task_new_type(self):
@@ -1249,8 +1184,8 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
         self.assertDictEqual(first_version, {
             "id": str(last_version.id),
             "configuration": {"a": "bc"},
-            "docker_image": str(self.version_1.docker_image.id),
-            "docker_image_iid": None,
+            "docker_image": None,
+            "docker_image_iid": last_version.docker_image_iid,
             "docker_image_name": f"my_repo.fake/workers/worker/reco:{last_version.id}",
             "state": "error",
             "gpu_usage": "disabled",
@@ -2240,8 +2175,8 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
         self.assertDictEqual(data, {
             "id": str(self.version_1.id),
             "configuration": {"test": 42},
-            "docker_image": str(self.version_1.docker_image.id),
-            "docker_image_iid": None,
+            "docker_image": None,
+            "docker_image_iid": self.version_1.docker_image_iid,
             "docker_image_name": f"my_repo.fake/workers/worker/reco:{self.version_1.id}",
             "state": "available",
             "gpu_usage": "disabled",
@@ -2266,8 +2201,8 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
         self.assertDictEqual(data, {
             "id": str(self.version_1.id),
             "configuration": {"test": 42},
-            "docker_image": str(self.version_1.docker_image.id),
-            "docker_image_iid": None,
+            "docker_image": None,
+            "docker_image_iid": self.version_1.docker_image_iid,
             "docker_image_name": f"my_repo.fake/workers/worker/reco:{self.version_1.id}",
             "state": "available",
             "gpu_usage": "disabled",
@@ -2314,16 +2249,16 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
         """
         Only Ponos tasks are allowed to update a worker version
         """
-        docker_image = self.version_1.docker_image
+        docker_image_iid = self.version_1.docker_image_iid
         self.version_1.state = WorkerVersionState.Created
-        self.version_1.docker_image = None
+        self.version_1.docker_image_iid = None
         self.version_1.save()
         self.client.force_login(self.user)
         response = self.client.patch(
             reverse("api:version-retrieve", kwargs={"pk": str(self.version_1.id)}),
             data={
                 "configuration": {"test": "test2"},
-                "docker_image": str(docker_image.id),
+                "docker_image": str(docker_image_iid),
                 "state": "error",
                 "gpu_usage": "disabled",
                 "model_usage": FeatureUsage.Disabled.value,
@@ -2336,16 +2271,14 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
         """
         Update worker version artifact, configuration and state
         """
-        docker_image = self.version_1.docker_image
         self.version_1.state = WorkerVersionState.Created
-        self.version_1.docker_image = None
         self.version_1.save()
 
         response = self.client.patch(
             reverse("api:version-retrieve", kwargs={"pk": str(self.version_1.id)}),
             data={
                 "configuration": {"test": "test2"},
-                "docker_image": str(docker_image.id),
+                "docker_image_iid": "eva:unit-01",
                 "state": "error",
             },
             format="json",
@@ -2356,8 +2289,8 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
         self.assertEqual(data["id"], str(self.version_1.id))
         self.version_1.refresh_from_db()
         self.assertEqual(data["configuration"], {"test": "test2"})
-        self.assertEqual(data["docker_image"], str(docker_image.id))
-        self.assertIsNone(data["docker_image_iid"])
+        self.assertEqual(data["docker_image_iid"], "eva:unit-01")
+        self.assertIsNone(data["docker_image"])
         self.assertEqual(data["state"], "error")
         self.assertEqual(data["gpu_usage"], "disabled")
 
@@ -2422,7 +2355,7 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
 
     def test_update_version_available_requires_docker_image(self):
         self.version_1.state = WorkerVersionState.Created
-        self.version_1.docker_image = None
+        self.version_1.docker_image_iid = None
         self.version_1.save()
 
         response = self.client.patch(
@@ -2447,6 +2380,7 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
         )
         process.run()
         task = process.tasks.first()
+        self.version_1.docker_image_iid = None
         self.version_1.docker_image = task.artifacts.create(
             path="path/to/file.json",
             size=100,
@@ -2546,8 +2480,8 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
                     },
                     "gpu_usage": "disabled",
                     "model_usage": FeatureUsage.Disabled.value,
-                    "docker_image": str(self.version_2.docker_image_id),
-                    "docker_image_iid": None,
+                    "docker_image": None,
+                    "docker_image_iid": self.version_2.docker_image_iid,
                     "docker_image_name": f"my_repo.fake/workers/worker/dla:{self.version_2.id}",
                     "state": "available",
                     "worker": {
@@ -2577,8 +2511,8 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
                     },
                     "gpu_usage": "disabled",
                     "model_usage": FeatureUsage.Disabled.value,
-                    "docker_image": str(self.version_1.docker_image_id),
-                    "docker_image_iid": None,
+                    "docker_image": None,
+                    "docker_image_iid": self.version_1.docker_image_iid,
                     "docker_image_name": f"my_repo.fake/workers/worker/reco:{self.version_1.id}",
                     "state": "available",
                     "worker": {
@@ -2640,8 +2574,8 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
                     },
                     "gpu_usage": "disabled",
                     "model_usage": FeatureUsage.Disabled.value,
-                    "docker_image": str(self.version_2.docker_image_id),
-                    "docker_image_iid": None,
+                    "docker_image": None,
+                    "docker_image_iid": self.version_2.docker_image_iid,
                     "docker_image_name": f"my_repo.fake/workers/worker/dla:{self.version_2.id}",
                     "state": "available",
                     "worker": {
@@ -2671,8 +2605,8 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
                     },
                     "gpu_usage": "disabled",
                     "model_usage": FeatureUsage.Disabled.value,
-                    "docker_image": str(self.version_1.docker_image_id),
-                    "docker_image_iid": None,
+                    "docker_image": None,
+                    "docker_image_iid": self.version_2.docker_image_iid,
                     "docker_image_name": f"my_repo.fake/workers/worker/reco:{self.version_1.id}",
                     "state": "available",
                     "worker": {
@@ -2730,8 +2664,8 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
                     },
                     "gpu_usage": "disabled",
                     "model_usage": FeatureUsage.Disabled.value,
-                    "docker_image": str(self.version_2.docker_image_id),
-                    "docker_image_iid": None,
+                    "docker_image": None,
+                    "docker_image_iid": self.version_2.docker_image_iid,
                     "docker_image_name": f"my_repo.fake/workers/worker/dla:{self.version_2.id}",
                     "state": "available",
                     "worker": {
@@ -2776,8 +2710,8 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
                     },
                     "gpu_usage": "disabled",
                     "model_usage": FeatureUsage.Disabled.value,
-                    "docker_image": str(self.version_1.docker_image_id),
-                    "docker_image_iid": None,
+                    "docker_image": None,
+                    "docker_image_iid": self.version_1.docker_image_iid,
                     "docker_image_name": f"my_repo.fake/workers/worker/reco:{self.version_1.id}",
                     "state": "available",
                     "worker": {
@@ -2841,8 +2775,8 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
                     },
                     "gpu_usage": "disabled",
                     "model_usage": FeatureUsage.Disabled.value,
-                    "docker_image": str(self.version_1.docker_image_id),
-                    "docker_image_iid": None,
+                    "docker_image": None,
+                    "docker_image_iid": self.version_1.docker_image_iid,
                     "docker_image_name": f"my_repo.fake/workers/worker/reco:{self.version_1.id}",
                     "state": "available",
                     "worker": {
diff --git a/arkindex/project/mixins.py b/arkindex/project/mixins.py
index b26f626dd6..99ecfc1c3e 100644
--- a/arkindex/project/mixins.py
+++ b/arkindex/project/mixins.py
@@ -8,7 +8,7 @@ from rest_framework.exceptions import APIException, PermissionDenied
 from rest_framework.serializers import CharField, Serializer
 
 from arkindex.documents.models import Corpus
-from arkindex.process.models import Process, ProcessMode, Repository, Worker
+from arkindex.process.models import Process, Repository, Worker
 from arkindex.training.models import Model
 from arkindex.users.models import Role
 from arkindex.users.utils import filter_rights, get_max_level, has_access
@@ -166,8 +166,7 @@ class ProcessACLMixin(ACLMixin):
     """
     Rights on processes are determined depending on its nature.
     The process creator always has a read access.
-    If the process is attached to a project, the project right apply.
-    If the process is a version build, the repository right apply.
+    If the process is attached to a project, the project rights apply.
     """
 
     @property
@@ -176,19 +175,13 @@ class ProcessACLMixin(ACLMixin):
         return Process.objects.filter(
             Q(creator_id=self.user.id)
             | Q(corpus_id__in=filter_rights(self.user, Corpus, Role.Guest.value).values("id"))
-            | Q(revision__repo_id__in=filter_rights(self.user, Repository, Role.Guest.value).values("id"))
         ).distinct()
 
     def process_access_level(self, process):
+        if not process.corpus_id:
+            return None
         # Return the access level on a single process
-        access_levels = []
-        if process.corpus_id:
-            # On all processes with a corpus, include corpus ACLs
-            access_levels.append(get_max_level(self.user, process.corpus))
-        elif process.mode == ProcessMode.Repository and process.revision_id:
-            # Use repository right in case of a workers docker build
-            access_levels.append(get_max_level(self.user, process.revision.repo))
-        return max(filter(None, access_levels), default=None)
+        return get_max_level(self.user, process.corpus)
 
 
 class SelectionMixin(object):
diff --git a/arkindex/project/tests/test_acl_mixin.py b/arkindex/project/tests/test_acl_mixin.py
index a36975c7b2..64248aaaa4 100644
--- a/arkindex/project/tests/test_acl_mixin.py
+++ b/arkindex/project/tests/test_acl_mixin.py
@@ -5,7 +5,7 @@ from django.contrib.auth.models import AnonymousUser
 from django.contrib.contenttypes.models import ContentType
 
 from arkindex.documents.models import Corpus
-from arkindex.process.models import Process, ProcessMode, Repository, Revision, WorkerType
+from arkindex.process.models import Process, ProcessMode, Repository, WorkerType
 from arkindex.project.mixins import ACLMixin, CorpusACLMixin, ProcessACLMixin, TrainingModelMixin
 from arkindex.project.tests import FixtureTestCase
 from arkindex.training.models import Model
@@ -261,20 +261,9 @@ class TestACLMixin(FixtureTestCase):
         process_1 = Process.objects.filter(mode=ProcessMode.Workers).get()
         process_2 = Process.objects.create(mode=ProcessMode.Local, creator=self.user1)
         process_3 = Process.objects.create(mode=ProcessMode.Workers, creator=self.user2, corpus=self.corpus1)
-        process_4 = Process.objects.create(
-            mode=ProcessMode.Repository,
-            creator=self.user2,
-            revision=self.repo1.revisions.create(hash="42", message="Message", author="User 1")
-        )
         # Non readable processes
         Process.objects.create(mode=ProcessMode.Local, creator=self.user2)
         Process.objects.create(mode=ProcessMode.Workers, creator=self.user2, corpus=self.corpus2)
-        Process.objects.create(
-            mode=ProcessMode.Repository,
-
-            creator=self.user2,
-            revision=Revision.objects.get(message="My w0rk3r")
-        )
 
         with self.assertNumQueries(1):
             readable_process_ids = list(
@@ -282,7 +271,7 @@ class TestACLMixin(FixtureTestCase):
             )
         self.assertCountEqual(
             readable_process_ids,
-            [process_1.id, process_2.id, process_3.id, process_4.id]
+            [process_1.id, process_2.id, process_3.id]
         )
 
     def test_models_access_user(self):
diff --git a/arkindex/project/triggers.py b/arkindex/project/triggers.py
index 2e8bdabf51..67328f7c36 100644
--- a/arkindex/project/triggers.py
+++ b/arkindex/project/triggers.py
@@ -14,14 +14,7 @@ from arkindex.documents.models import Corpus, CorpusExport, Element
 from arkindex.ponos import tasks as ponos_tasks
 from arkindex.ponos.models import State, Task
 from arkindex.process import tasks as process_tasks
-from arkindex.process.models import (
-    Process,
-    ProcessMode,
-    WorkerActivityState,
-    WorkerConfiguration,
-    WorkerRun,
-    WorkerVersion,
-)
+from arkindex.process.models import Process, WorkerActivityState, WorkerConfiguration, WorkerRun, WorkerVersion
 from arkindex.training.models import ModelVersion
 
 
@@ -228,7 +221,7 @@ def notify_process_completion(process: Process):
         State.Error: "with errors",
         State.Stopped: "because it was stopped",
     }
-    if process.mode != ProcessMode.Repository and state in state_msg.keys():
+    if state in state_msg.keys():
         process_name = process.name or str(process.id)
         ponos_tasks.notify_process_completion.delay(
             process=process,
diff --git a/arkindex/sql_validation/process_elements_filter_ml_class.sql b/arkindex/sql_validation/process_elements_filter_ml_class.sql
index 01a2e567dc..b8169c5012 100644
--- a/arkindex/sql_validation/process_elements_filter_ml_class.sql
+++ b/arkindex/sql_validation/process_elements_filter_ml_class.sql
@@ -19,7 +19,6 @@ SELECT "process_process"."id",
        "process_process"."creator_id",
        "process_process"."corpus_id",
        "process_process"."mode",
-       "process_process"."revision_id",
        "process_process"."activity_state",
        "process_process"."started",
        "process_process"."finished",
diff --git a/arkindex/sql_validation/process_elements_filter_type.sql b/arkindex/sql_validation/process_elements_filter_type.sql
index 507cc004cb..a0413952bd 100644
--- a/arkindex/sql_validation/process_elements_filter_type.sql
+++ b/arkindex/sql_validation/process_elements_filter_type.sql
@@ -19,7 +19,6 @@ SELECT "process_process"."id",
        "process_process"."creator_id",
        "process_process"."corpus_id",
        "process_process"."mode",
-       "process_process"."revision_id",
        "process_process"."activity_state",
        "process_process"."started",
        "process_process"."finished",
diff --git a/arkindex/sql_validation/process_elements_top_level.sql b/arkindex/sql_validation/process_elements_top_level.sql
index ce1c0fbfcd..68df166d1a 100644
--- a/arkindex/sql_validation/process_elements_top_level.sql
+++ b/arkindex/sql_validation/process_elements_top_level.sql
@@ -19,7 +19,6 @@ SELECT "process_process"."id",
        "process_process"."creator_id",
        "process_process"."corpus_id",
        "process_process"."mode",
-       "process_process"."revision_id",
        "process_process"."activity_state",
        "process_process"."started",
        "process_process"."finished",
diff --git a/arkindex/sql_validation/process_elements_with_image.sql b/arkindex/sql_validation/process_elements_with_image.sql
index 055baeee3e..ec4b65bf47 100644
--- a/arkindex/sql_validation/process_elements_with_image.sql
+++ b/arkindex/sql_validation/process_elements_with_image.sql
@@ -19,7 +19,6 @@ SELECT "process_process"."id",
        "process_process"."creator_id",
        "process_process"."corpus_id",
        "process_process"."mode",
-       "process_process"."revision_id",
        "process_process"."activity_state",
        "process_process"."started",
        "process_process"."finished",
diff --git a/arkindex/training/tests/test_datasets_api.py b/arkindex/training/tests/test_datasets_api.py
index a97ad190a6..3cba65910c 100644
--- a/arkindex/training/tests/test_datasets_api.py
+++ b/arkindex/training/tests/test_datasets_api.py
@@ -2064,12 +2064,12 @@ class TestDatasetsAPI(FixtureAPITestCase):
                 "set": "train",
                 "previous": (
                     sorted_dataset2_elements[page1_index_2 - 1]
-                    if page1_index_2 - 1 >= 0
+                    if page1_index_2 == 1
                     else None
                 ),
                 "next": (
                     sorted_dataset2_elements[page1_index_2 + 1]
-                    if page1_index_2 + 1 <= 2
+                    if page1_index_2 == 0
                     else None
                 )
             }]
-- 
GitLab