diff --git a/src/main/resources/db/migration/V7_0__NewDatabaseStructure.sql b/src/main/resources/db/migration/V7_0__NewDatabaseStructure.sql
index c1732c9e94860337218e6af917b1b523980a3d63..3f9f7c0c6138e67d8975bbd6e07dbed724d392ca 100644
--- a/src/main/resources/db/migration/V7_0__NewDatabaseStructure.sql
+++ b/src/main/resources/db/migration/V7_0__NewDatabaseStructure.sql
@@ -1,8 +1,3 @@
-UPDATE experiment
-SET algorithms =
-    (
-        SELECT SUBSTR(algorithms, 2, LENGTH(algorithms) - 2)
-    );
 
 UPDATE experiment
 SET workflowstatus = 'error'
@@ -26,10 +21,16 @@ DROP COLUMN hasservererror,
 DROP COLUMN validations,
 DROP COLUMN model_slug;
 
-ALTER TABLE experiment
-RENAME algorithms TO algorithm;
-ALTER TABLE experiment
-ALTER COLUMN algorithm TYPE json USING algorithm::json;
+ALTER TABLE experiment RENAME algorithms TO algorithm;
+UPDATE experiment SET algorithm = (algorithm::json ->> 0);
+
+UPDATE experiment SET result = result::json #>>'{0,result}' WHERE (algorithm::json->>'type') <> 'workflow';
+UPDATE experiment SET result = (SELECT jsonb_agg(value -> 'result') FROM jsonb_array_elements(result::jsonb)) WHERE (algorithm::json->>'type') = 'workflow';
+UPDATE experiment SET result = (SELECT jsonb_agg(d.data) FROM jsonb_array_elements(result::jsonb) t, json_array_elements(t.value::json) d(data)) WHERE (algorithm::json->>'type') = 'workflow';
+
+ALTER TABLE experiment ADD COLUMN algorithmId text;
+UPDATE experiment SET algorithmId = (algorithm::json ->> 'name');
+
 ALTER TABLE experiment
 RENAME createdby_username TO created_by_username;
 ALTER TABLE experiment
@@ -39,14 +40,6 @@ RENAME resultsviewed TO viewed;
 ALTER TABLE experiment
 RENAME workflowstatus TO status;
 
-ALTER TABLE experiment
-ADD COLUMN algorithmId text;
-
-UPDATE experiment
-SET algorithmId = (algorithm ->> 'name');
-
-ALTER TABLE experiment
-ALTER COLUMN algorithm TYPE text;
 ALTER TABLE experiment
 ADD COLUMN updated timestamp without time zone;