diff --git a/api/src/engine/connectors/exareme/converters.ts b/api/src/engine/connectors/exareme/converters.ts
index 8a23fd5f9ff106c6cc2a0995d48eac079946cd30..61bcce8c639ff26a0d111ef1b28601c546af9da1 100644
--- a/api/src/engine/connectors/exareme/converters.ts
+++ b/api/src/engine/connectors/exareme/converters.ts
@@ -9,14 +9,19 @@ import {
   GroupResult,
   GroupsResult,
 } from 'src/engine/models/result/groups-result.model';
+import { HeatMapResult } from 'src/engine/models/result/heat-map-result.model';
+import { LineChartResult } from 'src/engine/models/result/line-chart-result.model';
 import { RawResult } from 'src/engine/models/result/raw-result.model';
 import { Variable } from 'src/engine/models/variable.model';
 import { Entity } from './interfaces/entity.interface';
 import { ExperimentData } from './interfaces/experiment/experiment.interface';
+import { ResultChartExperiment } from './interfaces/experiment/result-chart-experiment.interface';
 import { ResultExperiment } from './interfaces/experiment/result-experiment.interface';
 import { Hierarchy } from './interfaces/hierarchy.interface';
 import { VariableEntity } from './interfaces/variable-entity.interface';
 import {
+  dataROCToLineResult,
+  dataToHeatmap,
   descriptiveModelToTables,
   descriptiveSingleToTables,
   transformToAlgorithms,
@@ -165,6 +170,8 @@ export const dataToResult = (
   switch (result.type.toLowerCase()) {
     case 'application/json':
       return dataJSONtoResult(result, algo);
+    case 'application/vnd.highcharts+json':
+      return dataHighchartToResult(result as ResultChartExperiment, algo);
     default:
       return dataToRaw(result);
   }
@@ -181,3 +188,17 @@ export const dataJSONtoResult = (
       return [];
   }
 };
+
+export const dataHighchartToResult = (
+  result: ResultChartExperiment,
+  algo: string,
+): Array<typeof ResultUnion> => {
+  switch (result.data.chart.type) {
+    case 'heatmap':
+      return [dataToHeatmap.evaluate(result) as HeatMapResult];
+    case 'area':
+      return [dataROCToLineResult.evaluate(result) as LineChartResult];
+    default:
+      return dataToRaw(result);
+  }
+};
diff --git a/api/src/engine/connectors/exareme/interfaces/experiment/result-chart-experiment.interface.ts b/api/src/engine/connectors/exareme/interfaces/experiment/result-chart-experiment.interface.ts
new file mode 100644
index 0000000000000000000000000000000000000000..ef0ba339600d418e2ed02a484dfebcfc5ab8b32b
--- /dev/null
+++ b/api/src/engine/connectors/exareme/interfaces/experiment/result-chart-experiment.interface.ts
@@ -0,0 +1,9 @@
+export interface ResultChartExperiment {
+  data: {
+    chart: {
+      type: string;
+    };
+    series: unknown;
+  };
+  type: string;
+}
diff --git a/api/src/engine/connectors/exareme/transformations.ts b/api/src/engine/connectors/exareme/transformations.ts
index 55bb054c8cdda588fd6eccfeb08f1700e6e801e4..528ecf498c145440ffcb1dba38288d9536c2a7dd 100644
--- a/api/src/engine/connectors/exareme/transformations.ts
+++ b/api/src/engine/connectors/exareme/transformations.ts
@@ -140,3 +140,57 @@ export const descriptiveSingleToTables = jsonata(`
     ]
 )
 `);
+
+export const dataROCToLineResult = jsonata(`
+({
+    "name": data.title.text,
+    "xAxis": {
+        "label": data.xAxis.title.text
+    },
+    "yAxis": {
+        "label": data.yAxis.title.text
+    },
+    "lines": [
+        {
+            "label": "ROC curve",
+            "x": data.series.data.$[0],
+            "y": data.series.data.$[1],
+            "type": 0
+        }
+    ]
+})
+`);
+
+export const dataToHeatmap = jsonata(`
+(
+    {
+        "name": data.title.text,
+        "xAxis": {
+            "categories": data.xAxis.categories,
+            "label": data.xAxis.label
+        },
+        "yAxis": {
+            "categories": data.yAxis.categories,
+            "label": data.yAxis.label
+        },
+        "matrix": $toMat(data.series.data)
+    }
+)
+`);
+
+dataToHeatmap.registerFunction(
+  'toMat',
+  (a) => {
+    const matrix = [];
+
+    a.forEach(
+      (elem: { y: number | number; x: number | number; value: number }) => {
+        matrix[elem.y] = matrix[elem.y] ?? [];
+        matrix[elem.y][elem.x] = elem.value;
+      },
+    );
+
+    return matrix;
+  },
+  '<a<o>:a<a<n>>',
+);
diff --git a/api/src/engine/models/result/common/result-union.model.ts b/api/src/engine/models/result/common/result-union.model.ts
index 2f56bb4d1f6ef577e9e836972f45dd59ede7fc28..bc4bb4a1472ea131fd8696da73d5c3d227c44a8f 100644
--- a/api/src/engine/models/result/common/result-union.model.ts
+++ b/api/src/engine/models/result/common/result-union.model.ts
@@ -19,10 +19,6 @@ export const ResultUnion = createUnionType({
       return TableResult;
     }
 
-    if (value.rawdata) {
-      return RawResult;
-    }
-
     if (value.groups) {
       return GroupsResult;
     }
@@ -31,10 +27,10 @@ export const ResultUnion = createUnionType({
       return HeatMapResult;
     }
 
-    if (value.x) {
+    if (value.lines) {
       return LineChartResult;
     }
 
-    return null;
+    return RawResult;
   },
 });
diff --git a/api/src/engine/models/result/raw-result.model.ts b/api/src/engine/models/result/raw-result.model.ts
index 853362293bbfe6da230e487f8ea139ba36a16f3b..01528a5fd6dcbffe09d646bf7356ef87f18c200b 100644
--- a/api/src/engine/models/result/raw-result.model.ts
+++ b/api/src/engine/models/result/raw-result.model.ts
@@ -7,6 +7,6 @@ import { Result } from './common/result.model';
 
 @ObjectType()
 export class RawResult extends Result {
-  @Field(() => GraphQLJSON)
-  rawdata: unknown;
+  @Field(() => GraphQLJSON, { nullable: true, defaultValue: '' })
+  rawdata?: unknown;
 }
diff --git a/api/src/schema.gql b/api/src/schema.gql
index d78641fc9b4b7a42638017b86d512fa5c2bd78ff..58bd4703b57987ad9bf65db35a7a1784c7d0cfec 100644
--- a/api/src/schema.gql
+++ b/api/src/schema.gql
@@ -72,7 +72,7 @@ type TableResult {
 }
 
 type RawResult {
-  rawdata: JSON!
+  rawdata: JSON
 }
 
 """