diff --git a/src/main/java/cz/muni/ics/kypo/training/adaptive/service/api/SandboxServiceApi.java b/src/main/java/cz/muni/ics/kypo/training/adaptive/service/api/SandboxServiceApi.java
index 9d444cc775b53bcd39986733e0db0120aa0706e2..bcbda0e9f20ebbff63c6467db503e01c13dc3aa4 100644
--- a/src/main/java/cz/muni/ics/kypo/training/adaptive/service/api/SandboxServiceApi.java
+++ b/src/main/java/cz/muni/ics/kypo/training/adaptive/service/api/SandboxServiceApi.java
@@ -1,5 +1,6 @@
 package cz.muni.ics.kypo.training.adaptive.service.api;
 
+import com.querydsl.core.Tuple;
 import cz.muni.ics.kypo.training.adaptive.dto.responses.LockedPoolInfo;
 import cz.muni.ics.kypo.training.adaptive.dto.responses.PoolInfoDTO;
 import cz.muni.ics.kypo.training.adaptive.dto.responses.SandboxDefinitionInfo;
@@ -7,6 +8,7 @@ import cz.muni.ics.kypo.training.adaptive.dto.responses.SandboxInfo;
 import cz.muni.ics.kypo.training.adaptive.exceptions.CustomWebClientException;
 import cz.muni.ics.kypo.training.adaptive.exceptions.ForbiddenException;
 import cz.muni.ics.kypo.training.adaptive.exceptions.MicroserviceApiException;
+import org.apache.commons.lang3.tuple.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -36,7 +38,7 @@ public class SandboxServiceApi {
     }
 
 
-    public String getAndLockSandboxForTrainingRun(Long poolId) {
+    public Pair<Integer, String> getAndLockSandboxForTrainingRun(Long poolId) {
         try {
             SandboxInfo sandboxInfo = sandboxServiceWebClient
                     .get()
@@ -44,7 +46,7 @@ public class SandboxServiceApi {
                     .retrieve()
                     .bodyToMono(SandboxInfo.class)
                     .block();
-            return sandboxInfo.getId();
+            return Pair.of((sandboxInfo.getAllocationUnitId(), sandboxInfo.getId());
         } catch (CustomWebClientException ex) {
             if (ex.getStatusCode() == HttpStatus.CONFLICT) {
                 throw new ForbiddenException("There is no available sandbox, wait a minute and try again or ask organizer to allocate more sandboxes.");
@@ -102,21 +104,6 @@ public class SandboxServiceApi {
             }
         }
     }
-    public SandboxInfo getAndLockSandbox(Long poolId) {
-        try {
-            return sandboxServiceWebClient
-                    .get()
-                    .uri("/pools/{poolId}/sandboxes/get-and-lock", poolId)
-                    .retrieve()
-                    .bodyToMono(SandboxInfo.class)
-                    .block();
-        } catch (CustomWebClientException ex) {
-            if (ex.getStatusCode() == HttpStatus.CONFLICT) {
-                throw new ForbiddenException("There is no available sandbox, wait a minute and try again or ask organizer to allocate more sandboxes.");
-            }
-            throw new MicroserviceApiException("Error when calling OpenStack Sandbox Service API to get unlocked sandbox from pool (ID: " + poolId + ").", ex);
-        }
-    }
 
     /**
      * Gets sandbox definition id.
diff --git a/src/main/java/cz/muni/ics/kypo/training/adaptive/service/training/TrainingRunService.java b/src/main/java/cz/muni/ics/kypo/training/adaptive/service/training/TrainingRunService.java
index b99c404ec4ce84cc1dcff4bc6840b6535d7be716..c47ae1efe42567f29e77d7bdc793db67a00bef6b 100644
--- a/src/main/java/cz/muni/ics/kypo/training/adaptive/service/training/TrainingRunService.java
+++ b/src/main/java/cz/muni/ics/kypo/training/adaptive/service/training/TrainingRunService.java
@@ -27,6 +27,7 @@ import cz.muni.ics.kypo.training.adaptive.service.api.SandboxServiceApi;
 import cz.muni.ics.kypo.training.adaptive.service.api.SmartAssistantServiceApi;
 import cz.muni.ics.kypo.training.adaptive.service.api.UserManagementServiceApi;
 import cz.muni.ics.kypo.training.adaptive.service.audit.AuditEventsService;
+import org.apache.commons.lang3.tuple.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -604,10 +605,9 @@ public class TrainingRunService {
      * @throws MicroserviceApiException error calling OpenStack Sandbox Service API
      */
     public TrainingRun assignSandbox(TrainingRun trainingRun, long poolId) {
-        String sandboxInstanceRef = this.sandboxServiceApi.getAndLockSandboxForTrainingRun(poolId);
-        Integer sandboxInstanceAllocationId = this.sandboxServiceApi.getAndLockSandbox(poolId).getAllocationUnitId();
-        trainingRun.setSandboxInstanceRefId(sandboxInstanceRef);
-        trainingRun.setSandboxInstanceAllocationId(sandboxInstanceAllocationId);
+        Pair<Integer, String> sandboxRefAndId = this.sandboxServiceApi.getAndLockSandboxForTrainingRun(poolId);
+        trainingRun.setSandboxInstanceRefId(sandboxRefAndId.getRight());
+        trainingRun.setSandboxInstanceAllocationId(sandboxRefAndId.getLeft());
         return trainingRunRepository.save(trainingRun);
     }