diff --git a/DLCM-Access/src/main/java/ch/dlcm/controller/access/SearchController.java b/DLCM-Access/src/main/java/ch/dlcm/controller/access/SearchController.java
index b6f2e33460d738bac2cfcc88c25352ae2b017639..f1a8ba0e7268837c008d2e99ff41db3cd6cd1b25 100644
--- a/DLCM-Access/src/main/java/ch/dlcm/controller/access/SearchController.java
+++ b/DLCM-Access/src/main/java/ch/dlcm/controller/access/SearchController.java
@@ -270,13 +270,17 @@ public abstract class SearchController extends AccessIndexResourceReadOnlyContro
       /*
        * DIP already exists
        */
-      return new ResponseEntity<>("DIP already exists", HttpStatus.BAD_REQUEST);
+      final DisseminationInfoPackage dip = dipList.get(0);
+      if (dip.getOrders().size() != 1) {
+        return new ResponseEntity<>("Exactly one order should be associated to the DIP " + dip.getResId(), HttpStatus.INTERNAL_SERVER_ERROR);
+      }
+      return new ResponseEntity<>(dip.getOrders().get(0).getResId(), HttpStatus.ACCEPTED);
     }
   }
 
   @Override
   public HttpEntity<RestCollection<ArchiveMetadata>> search(@RequestParam(required = false) String query, Pageable pageable) {
-    // transform sort parameters from the portail to the corresponding name in the index
+    // transform sort parameters from the portal to the corresponding name in the index
     if (!pageable.getSort().isEmpty() && pageable.getSort().isSorted()) {
       pageable = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), this.adaptSortProperties(pageable.getSort()));
     }
@@ -288,7 +292,7 @@ public abstract class SearchController extends AccessIndexResourceReadOnlyContro
   public HttpEntity<RestCollection<ArchiveMetadata>> searchPost(
           @RequestBody(required = false) List<SearchCondition> searchConditions,
           Pageable pageable) {
-    // transform sort parameters from the portail to the corresponding name in the index
+    // transform sort parameters from the portal to the corresponding name in the index
     if (!pageable.getSort().isEmpty() && pageable.getSort().isSorted()) {
       pageable = PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), this.adaptSortProperties(pageable.getSort()));
     }
diff --git a/DLCM-Access/src/main/java/ch/dlcm/repository/DisseminationInfoPackageRepository.java b/DLCM-Access/src/main/java/ch/dlcm/repository/DisseminationInfoPackageRepository.java
index 1ea45599aaf37f56f7b29952b9890bd6fccd8702..eeecf0016eb363a6e3ac3e8a853f069f9a3db51f 100644
--- a/DLCM-Access/src/main/java/ch/dlcm/repository/DisseminationInfoPackageRepository.java
+++ b/DLCM-Access/src/main/java/ch/dlcm/repository/DisseminationInfoPackageRepository.java
@@ -42,18 +42,37 @@ public interface DisseminationInfoPackageRepository extends SolidifyRepository<D
 
   List<DisseminationInfoPackage> findByInfoName(String name);
 
-  @Query("SELECT COALESCE(SUM(df.fileSize), 0) FROM DipDataFile df WHERE df.infoPackage.resId = :dipId")
+  @Query("SELECT COALESCE(SUM(df.fileSize), 0) "
+          + "FROM DipDataFile df "
+          + "WHERE df.infoPackage.resId = :dipId")
   long getSize(String dipId);
 
-  @Query("SELECT COUNT(DISTINCT d.resId) FROM DisseminationInfoPackage d JOIN d.orders o WHERE o.queryType = 'SIMPLE' AND o.status = 'READY'")
+  @Query("SELECT COUNT(DISTINCT d.resId) "
+          + "FROM DisseminationInfoPackage d "
+          + "JOIN d.orders o "
+          + "WHERE o.queryType = 'SIMPLE' "
+          + "AND o.status = 'READY'")
   int countDIPOfCompletedOrders();
 
-  @Query("SELECT dip FROM DisseminationInfoPackage dip JOIN dip.aips aip WHERE aip.resId = :aipId")
+  @Query("SELECT dip "
+          + "FROM DisseminationInfoPackage dip "
+          + "JOIN dip.aips aip "
+          + "WHERE aip.resId = :aipId")
   Page<DisseminationInfoPackage> findDipContainingAip(String aipId, Pageable pageable);
 
-  @Query("SELECT dip FROM DisseminationInfoPackage dip JOIN dip.orders order WHERE order.resId = :orderId")
+  @Query("SELECT dip "
+          + "FROM DisseminationInfoPackage dip "
+          + "JOIN dip.orders order "
+          + "WHERE order.resId = :orderId")
   List<DisseminationInfoPackage> findByOrderId(String orderId);
 
-  @Query("SELECT dip FROM DisseminationInfoPackage dip JOIN dip.orders order JOIN dip.aips aip JOIN order.subsetItems si WHERE aip.resId = :aipId AND order.disseminationPolicyId = :disseminationPolicyId and si IS NULL")
+  @Query("SELECT dip "
+          + "FROM DisseminationInfoPackage dip "
+          + "JOIN dip.orders order "
+          + "JOIN dip.aips aip "
+          + "LEFT JOIN order.subsetItems si "
+          + "WHERE aip.resId = :aipId "
+          + "AND order.disseminationPolicyId = :disseminationPolicyId "
+          + "AND si IS NULL")
   List<DisseminationInfoPackage> findByFullDisseminationPolicyIdAndAipId(String disseminationPolicyId, String aipId);
 }