diff --git a/api/src/engine/connectors/csv/main.connector.ts b/api/src/engine/connectors/csv/main.connector.ts
index bcb8c7ee8ae11d0bb8dea161b198fe83fbc36b5a..41e141d1d3e1ad724493a4d97169ad2cc7be5fb6 100644
--- a/api/src/engine/connectors/csv/main.connector.ts
+++ b/api/src/engine/connectors/csv/main.connector.ts
@@ -10,6 +10,8 @@ import { ListExperiments } from 'src/engine/models/experiment/list-experiments.m
 import { ExperimentEditInput } from 'src/engine/models/experiment/input/experiment-edit.input';
 import { Algorithm } from 'src/engine/models/experiment/algorithm.model';
 import { HttpService } from '@nestjs/axios';
+import { Group } from 'src/engine/models/group.model';
+import { Dictionary } from 'src/common/interfaces/utilities.interface';
 
 export default class CSVService implements IEngineService {
   constructor(
@@ -54,26 +56,76 @@ export default class CSVService implements IEngineService {
 
   async getDomains(): Promise<Domain[]> {
     const path =
-      'https://docs.google.com/spreadsheets/d/e/2PACX-1vSuqAuC9YZkWbY-eU_zh9-lEh7tBUwSj2TGA_flvGkQ3KdA82RZchHICl6zbffl8yZ39IwPtNgk15Wd/pub?gid=0&single=true&output=tsv';
+      'https://docs.google.com/spreadsheets/d/1yjslZQCOMCxkjr4xQ-NmTMNEjhpdmZgijbn83za80Ak/export?format=tsv';
 
     const { data } = await firstValueFrom(this.httpService.get<string>(path));
 
-    console.log(data.split('\n').map((row) => row.split('\t')));
+    const rows = data
+      .split('\r\n')
+      .map((row) => row.split('\t').filter((i) => i))
+      .filter((row) => row.length >= 2);
+
+    rows.shift(); // headers
+
+    const vars = [];
+    const groups: Dictionary<Group> = {};
+    const rootGroup: Group = {
+      id: 'root',
+      groups: [],
+    };
+
+    rows.forEach((row) => {
+      const variable = {
+        id: row[0].toLowerCase(),
+        label: row[0],
+      };
+
+      row.shift();
+
+      vars.push(variable);
+
+      row
+        .filter((group) => !groups[group.toLowerCase()])
+        .forEach((group, i) => {
+          const groupId = group.toLowerCase();
+          if (i === 0) rootGroup.groups.push(groupId);
+          groups[groupId] = {
+            id: groupId,
+            label: group,
+            variables: [],
+            groups: [],
+          };
+        });
+
+      const groupId = row[row.length - 1].toLowerCase();
+
+      groups[groupId].variables = [...groups[groupId].variables, variable.id];
+
+      row
+        .reverse()
+        .map((group) => group.toLowerCase())
+        .forEach((group, i) => {
+          const groupId = group.toLowerCase();
+
+          if (i !== row.length - 1) {
+            const parentId = row[i + 1].toLowerCase();
+            groups[parentId].groups = groups[parentId].groups
+              ? [...new Set([...groups[parentId].groups, groupId])]
+              : [groupId];
+          }
+        });
+    });
+
+    rootGroup.groups = [...new Set(rootGroup.groups)];
 
     return [
       {
         id: 'Dummy',
         label: 'Dummy',
         datasets: [{ id: 'DummyDataset', label: 'DummyDataset' }],
-        groups: [
-          {
-            id: 'DummyGroup',
-            variables: ['DummyVar'],
-            groups: [],
-          },
-        ],
-        rootGroup: { id: 'DummyGroup' },
-        variables: [{ id: 'DummyVar', type: 'string' }],
+        groups: Object.values(groups),
+        rootGroup: rootGroup,
+        variables: vars,
       },
     ];
   }
diff --git a/api/src/engine/connectors/exareme/converters.ts b/api/src/engine/connectors/exareme/converters.ts
index 07fb2b4b0cfa378b1950147be5862307d4ff4ea9..ab840843a6c698c24142eb228343d819584ee8a6 100644
--- a/api/src/engine/connectors/exareme/converters.ts
+++ b/api/src/engine/connectors/exareme/converters.ts
@@ -27,7 +27,9 @@ export const dataToGroup = (data: Hierarchy): Group => {
   return {
     id: data.code,
     label: data.label,
-    groups: data.groups ? data.groups.map(dataToGroup) : [],
+    groups: data.groups
+      ? data.groups.map(dataToGroup).map((group) => group.id)
+      : [],
     variables: data.variables
       ? data.variables.map((data: VariableEntity) => data.code)
       : [],
diff --git a/api/src/engine/models/variable.model.ts b/api/src/engine/models/variable.model.ts
index 8650f48b1044bb07c88964ae36aeb00d0d9a3d1b..bd54afed70a025ce6c5673bf0627a657d77926cb 100644
--- a/api/src/engine/models/variable.model.ts
+++ b/api/src/engine/models/variable.model.ts
@@ -5,8 +5,8 @@ import { Group } from './group.model';
 
 @ObjectType()
 export class Variable extends Entity {
-  @Field()
-  type: string;
+  @Field({ nullable: true })
+  type?: string;
 
   @Field({ nullable: true })
   description?: string;
diff --git a/api/src/schema.gql b/api/src/schema.gql
index c906a1951ce36cba5961ced0c2853ef6ddb2658c..86b31a4d2dcb38a15ab00200462ce2c5bd220d97 100644
--- a/api/src/schema.gql
+++ b/api/src/schema.gql
@@ -11,7 +11,7 @@ type Group {
   id: String!
   label: String
   description: String
-  groups: [Group!]
+  groups: [String!]
 
   """List of variable's ids"""
   variables: [String!]
@@ -20,7 +20,7 @@ type Group {
 type Variable {
   id: String!
   label: String
-  type: String!
+  type: String
   description: String
   enumerations: [Category!]
   groups: [Group!]