diff --git a/api/src/engine/connectors/exareme/converters.ts b/api/src/engine/connectors/exareme/converters.ts
index 60350c188107d6e20540576669e9dc9ef3155eae..cb1c884c6101bec8de814accda529690cb92896f 100644
--- a/api/src/engine/connectors/exareme/converters.ts
+++ b/api/src/engine/connectors/exareme/converters.ts
@@ -1,16 +1,14 @@
 import { Category } from 'src/engine/models/category.model';
+import { ExperimentCreateInput } from 'src/engine/models/experiment/experiment-create.input';
+import { Experiment } from 'src/engine/models/experiment/experiment.model';
 import { Group } from 'src/engine/models/group.model';
+import { TableResult } from 'src/engine/models/result/table-result.model';
 import { Variable } from 'src/engine/models/variable.model';
-import { Hierarchy } from './interfaces/hierarchy.interface';
-import { VariableEntity } from './interfaces/variable-entity.interface';
 import { Entity } from './interfaces/entity.interface';
-import { ExperimentCreateInput } from 'src/engine/models/experiment/experiment-create.input';
+import { Hierarchy } from './interfaces/hierarchy.interface';
 import { TransientDataResult } from './interfaces/transient/transient-data-result.interface';
-import { Experiment } from 'src/engine/models/experiment/experiment.model';
-import { MetaData } from 'src/engine/models/result/common/metadata.model';
-import { TableResult } from 'src/engine/models/result/table-result.model';
-import { Dictionary } from 'src/common/interfaces/utilities.interface';
-import { table } from 'console';
+import { VariableEntity } from './interfaces/variable-entity.interface';
+import { transientToTable } from './transformations';
 
 export const dataToGroup = (data: Hierarchy): Group => {
   return {
@@ -69,66 +67,11 @@ export const experimentInputToData = (data: ExperimentCreateInput) => {
   };
 };
 
-const dictToTable = (dict: Dictionary<string[]>, rows: number): string[][] => {
-  const keys = Object.keys(dict);
-
-  return keys.map((key) => {
-    const row = Array.from(Array(rows).keys())
-      .map((i) => dict[key][i])
-      .map((val) => val ?? '');
-    row.unshift(key);
-    return row;
-  });
-};
-
 export const dataToTransient = (data: TransientDataResult): Experiment => {
-  const result = data.result[0];
-  const tables = Object.keys(result.data.single).map((varKey): TableResult => {
-    const variable = result.data.single[varKey];
-    const domains: MetaData[] = [];
-    const rows: Dictionary<string[]> = {};
-
-    let count = 0;
-
-    Object.keys(variable).map((domainKey) => {
-      domains.push({ name: domainKey, type: 'string' });
-      const data = variable[domainKey];
-
-      [
-        [varKey, 'num_total'],
-        ['datapoints', 'num_datapoints'],
-        ['nulls', 'num_nulls'],
-      ].forEach((keys) => {
-        if (!rows[keys[0]]) rows[keys[0]] = [];
-        rows[keys[0]][count] = data[keys[1]];
-      });
-
-      const properties = variable[domainKey].data;
-
-      Object.keys(properties).forEach((propKey) => {
-        if (!rows[propKey]) rows[propKey] = [];
-        rows[propKey][count] = properties[propKey].toString();
-      });
-
-      count++;
-    });
-
-    return {
-      data: dictToTable(rows, count),
-      metadatas: domains,
-      name: varKey,
-      groupBy: 'single',
-    };
-  });
-
-  const result2 = tables.map((table) => {
-    const nTable = Object.assign({}, table);
-    nTable.groupBy = 'Model';
-    return nTable;
-  });
+  const tabs: TableResult[] = transientToTable.evaluate(data);
 
   return {
     title: data.name,
-    results: tables.concat(result2),
+    results: tabs,
   };
 };
diff --git a/api/src/engine/connectors/exareme/main.connector.ts b/api/src/engine/connectors/exareme/main.connector.ts
index d9a772d3d26fa469b3ee684d4061064767f1a912..75f21b56698ea59dbc65a88b4edf1ea014163e48 100644
--- a/api/src/engine/connectors/exareme/main.connector.ts
+++ b/api/src/engine/connectors/exareme/main.connector.ts
@@ -4,9 +4,9 @@ import { Request } from 'express';
 import { firstValueFrom, map, Observable } from 'rxjs';
 import { IEngineOptions, IEngineService } from 'src/engine/engine.interfaces';
 import { Domain } from 'src/engine/models/domain.model';
-import { Group } from 'src/engine/models/group.model';
 import { ExperimentCreateInput } from 'src/engine/models/experiment/experiment-create.input';
 import { Experiment } from 'src/engine/models/experiment/experiment.model';
+import { Group } from 'src/engine/models/group.model';
 import { Variable } from 'src/engine/models/variable.model';
 import {
   dataToCategory,
@@ -30,151 +30,11 @@ export default class ExaremeService implements IEngineService {
 
     const path = this.options.baseurl + 'experiments/transient';
 
-    const result = {
-      name: 'Descriptive statistics',
-      result: [
-        {
-          data: {
-            single: {
-              'Left inferior temporal gyrus': {
-                ppmi: {
-                  data: {
-                    std: 1.2048783713787277,
-                    min: 7.6335,
-                    mean: 11.38076218487395,
-                  },
-                  num_datapoints: 714,
-                  num_total: 714,
-                  num_nulls: 0,
-                },
-                edsd: {
-                  data: {
-                    std: 1.3274694970555183,
-                    max: 14.593,
-                    min: 5.4301,
-                    mean: 10.647539816933637,
-                  },
-                  num_datapoints: 437,
-                  num_total: 474,
-                  num_nulls: 37,
-                },
-                'desd-synthdata': {
-                  data: {
-                    std: 1.3479276642860987,
-                    max: 14.593,
-                    min: 5.4301,
-                    mean: 10.685619565217392,
-                  },
-                  num_datapoints: 920,
-                  num_total: 1000,
-                  num_nulls: 80,
-                },
-              },
-              'Left posterior insula': {
-                ppmi: {
-                  data: {
-                    std: 0.25046887396228024,
-                    max: 3.0882,
-                    min: 1.7073,
-                    mean: 2.358402521008403,
-                  },
-                  num_datapoints: 714,
-                  num_total: 714,
-                  num_nulls: 0,
-                },
-                edsd: {
-                  data: {
-                    std: 0.2716090949138581,
-                    max: 3.1971,
-                    min: 1.2675,
-                    mean: 2.2726512585812357,
-                  },
-                  num_datapoints: 437,
-                  num_total: 474,
-                  num_nulls: 37,
-                },
-                'desd-synthdata': {
-                  data: {
-                    std: 0.2619310561946756,
-                    max: 3.1971,
-                    min: 1.2675,
-                    mean: 2.27014597826087,
-                  },
-                  num_datapoints: 920,
-                  num_total: 1000,
-                  num_nulls: 80,
-                },
-              },
-            },
-            model: {
-              ppmi: {
-                num_datapoints: 714,
-                data: {
-                  'Left inferior temporal gyrus': {
-                    std: 1.2048783713787277,
-                    max: 15.0815,
-                    min: 7.6335,
-                    mean: 11.38076218487395,
-                  },
-                  'Left posterior insula': {
-                    std: 0.25046887396228024,
-                    max: 3.0882,
-                    min: 1.7073,
-                    mean: 2.358402521008403,
-                  },
-                },
-                num_total: 714,
-                num_nulls: 0,
-              },
-              edsd: {
-                num_datapoints: 437,
-                data: {
-                  'Left inferior temporal gyrus': {
-                    std: 1.3274694970555183,
-                    max: 14.593,
-                    min: 5.4301,
-                    mean: 10.647539816933637,
-                  },
-                  'Left posterior insula': {
-                    std: 0.2716090949138581,
-                    max: 3.1971,
-                    min: 1.2675,
-                    mean: 2.2726512585812357,
-                  },
-                },
-                num_total: 474,
-                num_nulls: 37,
-              },
-              'desd-synthdata': {
-                num_datapoints: 920,
-                data: {
-                  'Left inferior temporal gyrus': {
-                    std: 1.3479276642860987,
-                    max: 14.593,
-                    min: 5.4301,
-                    mean: 10.685619565217392,
-                  },
-                  'Left posterior insula': {
-                    std: 0.2619310561946756,
-                    max: 3.1971,
-                    min: 1.2675,
-                    mean: 2.27014597826087,
-                  },
-                },
-                num_total: 1000,
-                num_nulls: 80,
-              },
-            },
-          },
-        },
-      ],
-    } as TransientDataResult;
-
-    /*= await firstValueFrom(
+    const resultAPI = await firstValueFrom(
       this.httpService.post<TransientDataResult>(path, form),
-    );*/
+    );
 
-    return dataToTransient(result);
+    return dataToTransient(resultAPI.data);
   }
 
   async getDomains(ids: string[]): Promise<Domain[]> {
diff --git a/api/src/engine/connectors/exareme/transformations.ts b/api/src/engine/connectors/exareme/transformations.ts
new file mode 100644
index 0000000000000000000000000000000000000000..4706fa4e6f42692db75e9bce9d9dcf6e618b6c17
--- /dev/null
+++ b/api/src/engine/connectors/exareme/transformations.ts
@@ -0,0 +1,32 @@
+// This file contains all transformation queries for JSONata
+// see : https://docs.jsonata.org/
+
+import * as jsonata from 'jsonata'; // old import style needed because of 'export = jsonata'
+
+export const transientToTable = jsonata(`
+( 
+  $e := function($x) {(
+    ($x != null) ? $x : ''
+  )};
+
+  result.data.[
+    $.single.*@$p#$i.{
+      'groupBy' : 'single',
+      'name': $keys(%)[$i],
+      'metadatas': $keys(*).{
+        'name': $,
+        'type': 'string'
+      },
+      'data' : [
+        [$keys(%)[$i], $p.*.($e(num_total))],
+        ['Datapoints', $p.*.($e(num_datapoints))],
+        ['Nulls', $p.*.($e(num_nulls))],
+        ['std', $p.*.data.($e(std))],
+        ['max', $p.*.data.($e(max))],
+        ['min', $p.*.data.($e(min))],
+        ['mean', $p.*.data.($e(mean))]
+      ]
+    }
+  ]
+)
+`);