diff --git a/src/app/features/deposit/components/routables/deposit-detail/deposit-detail.routable.html b/src/app/features/deposit/components/routables/deposit-detail/deposit-detail.routable.html
index 798aa0783ebaab82ea9bfb675f21a0051aa38832..defb14f37ae2fa18fd0e75f87dc0295449149815 100644
--- a/src/app/features/deposit/components/routables/deposit-detail/deposit-detail.routable.html
+++ b/src/app/features/deposit/components/routables/deposit-detail/deposit-detail.routable.html
@@ -1,3 +1,9 @@
+<div *ngIf="!(isLoadingObs| async) && !(isLoadingDataFileObs | async) && !canSubmit(listDataFileObs | async)"
+     class="alert"
+>
+  {{message| translate}}
+</div>
+
 <div class="button-toolbar">
   <button *ngIf="(currentObs| async)?.status === statusEnum.INPROGRESS ||
                  (currentObs| async)?.status === statusEnum.INERROR"
@@ -18,7 +24,7 @@
   </button>
   <button *ngIf="(currentObs| async)?.status === statusEnum.INPROGRESS
                  && formPresentational?.isValidWhenDisable
-                 && (listDataFileObs | async)  | allDataFileReady"
+                 && canSubmit(listDataFileObs | async)"
           mat-flat-button
           color="primary"
           [disabled]="!(currentObs| async)"
diff --git a/src/app/features/deposit/components/routables/deposit-detail/deposit-detail.routable.scss b/src/app/features/deposit/components/routables/deposit-detail/deposit-detail.routable.scss
new file mode 100644
index 0000000000000000000000000000000000000000..cb0fa67a6b8ceae52acd892d4a7dd273ace6e5b4
--- /dev/null
+++ b/src/app/features/deposit/components/routables/deposit-detail/deposit-detail.routable.scss
@@ -0,0 +1,30 @@
+@import "../../../../../../sass/abstracts/variables";
+@import "../../../../../../sass/abstracts/mixins";
+@import "../../../../../shared/components/routables/shared-abstract-detail/shared-abstract-detail.routable.scss";
+
+.alert {
+  background-color: $warning;
+  color: $white;
+  font-weight: bold;
+  text-align: center;
+  margin: -25px -25px 15px;
+  padding: 5px;
+  box-shadow: 0 5px 20px 0 rgba(0, 0, 0, 0.05);
+  animation: appear 1s;
+}
+
+
+@-webkit-keyframes appear {
+  0% {
+    -webkit-transform: scaleY(0);
+    height: 0;
+    padding: 0;
+    opacity: 0;
+    display: none;
+    -webkit-animation-play-state: paused;
+  }
+  100% {
+    -webkit-transform: scaleY(1);
+    opacity: 1;
+  }
+}
diff --git a/src/app/features/deposit/components/routables/deposit-detail/deposit-detail.routable.ts b/src/app/features/deposit/components/routables/deposit-detail/deposit-detail.routable.ts
index 4701c717f27e615f03b1c0b7e5b1af7dbb4c63d0..3107f22fa073a911da9cecd573c0e95f9d315dfa 100644
--- a/src/app/features/deposit/components/routables/deposit-detail/deposit-detail.routable.ts
+++ b/src/app/features/deposit/components/routables/deposit-detail/deposit-detail.routable.ts
@@ -6,7 +6,10 @@ import {
 } from "@angular/core";
 import {MatDialog} from "@angular/material";
 import {ActivatedRoute} from "@angular/router";
-import {DepositDataFile} from "@app/features/deposit/models/deposit-data-file.model";
+import {
+  DepositDataFile,
+  DepositDataFileStateEnum,
+} from "@app/features/deposit/models/deposit-data-file.model";
 import {DepositExtended} from "@app/features/deposit/models/deposits-extended.model";
 import {DepositDataFileAction} from "@app/features/deposit/stores/data-file/deposit-data-file.action";
 import {
@@ -37,6 +40,8 @@ import {Observable} from "rxjs";
 import {tap} from "rxjs/internal/operators/tap";
 import {take} from "rxjs/operators";
 import {
+  isEmptyArray,
+  isNullOrUndefined,
   StoreUtil,
   TRANSLATE,
 } from "solidify-frontend";
@@ -44,11 +49,12 @@ import {
 @Component({
   selector: "dlcm-deposit-detail-routable",
   templateUrl: "./deposit-detail.routable.html",
-  styleUrls: ["../../../../../shared/components/routables/shared-abstract-detail/shared-abstract-detail.routable.scss"],
+  styleUrls: ["./deposit-detail.routable.scss"],
   changeDetection: ChangeDetectionStrategy.OnPush,
 })
 export class DepositDetailRoutable extends SharedAbstractDetailRoutable<DepositExtended, DepositStateModel> implements OnInit {
   @Select((state: LocalStateModel) => StoreUtil.isLoadingState(state.deposit.deposit_person)) isLoadingPersonObs: Observable<boolean>;
+  @Select((state: LocalStateModel) => StoreUtil.isLoadingState(state.deposit.deposit_dataFile)) isLoadingDataFileObs: Observable<boolean>;
   @Select((state: LocalStateModel) => state.shared.shared_language.list) languagesObs: Observable<Language[]>;
   @Select((state: LocalStateModel) => state.shared.shared_license.list) licensesObs: Observable<License[]>;
   @Select((state: LocalStateModel) => state.shared.shared_submissionPolicy.list) submissionPoliciesObs: Observable<SubmissionPolicy[]>;
@@ -61,6 +67,8 @@ export class DepositDetailRoutable extends SharedAbstractDetailRoutable<DepositE
   @ViewChild("formPresentational", {static: false})
   readonly formPresentational: DepositFormPresentational;
 
+  message: string;
+
   readonly KEY_PARAM_NAME: string = "title";
   readonly KEY_DELETE_BUTTON: string = TRANSLATE("deposit.delete");
   readonly KEY_EDIT_BUTTON: string = TRANSLATE("deposit.edit");
@@ -80,6 +88,22 @@ export class DepositDetailRoutable extends SharedAbstractDetailRoutable<DepositE
     this.store.dispatch(new SharedOrgUnitAction.GetAll());
   }
 
+  canSubmit(list: DepositDataFile[]): boolean {
+    if (isNullOrUndefined(list) || isEmptyArray(list)) {
+      this.message = TRANSLATE("deposit.error.noFile");
+      return false;
+    }
+
+    const result = !list.some(d => {
+      if (d.status === DepositDataFileStateEnum.IN_ERROR) {
+        this.message = TRANSLATE("deposit.error.fileInError");
+        return true;
+      }
+      return false;
+    });
+    return result;
+  }
+
   getSubResourceWithParentId(id: string): void {
     this.store.dispatch(new DepositDataFileAction.GetAll(id));
     this.store.dispatch(new DepositPersonAction.GetAll(id));
diff --git a/src/app/shared/components/routables/shared-abstract-detail/shared-abstract-detail.routable.scss b/src/app/shared/components/routables/shared-abstract-detail/shared-abstract-detail.routable.scss
index f80d1a940ac6454dbd1ffc3286868e7c1b43125c..8f4a2c8eb3061e663a0d8e59901cb886f4db260d 100644
--- a/src/app/shared/components/routables/shared-abstract-detail/shared-abstract-detail.routable.scss
+++ b/src/app/shared/components/routables/shared-abstract-detail/shared-abstract-detail.routable.scss
@@ -1,4 +1,5 @@
 @import "../../../../../sass/abstracts/variables";
+@import "../../../../../sass/abstracts/mixins";
 @import "../shared-abstract-resource/shared-abstract-resource.routable";
 
 .tab-content {
diff --git a/src/app/shared/pipes/all-data-file-ready.pipe.ts b/src/app/shared/pipes/all-data-file-ready.pipe.ts
deleted file mode 100644
index a339a655dfa3d43d2884fe5c4b3a569b92421ba6..0000000000000000000000000000000000000000
--- a/src/app/shared/pipes/all-data-file-ready.pipe.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import {
-  Pipe,
-  PipeTransform,
-} from "@angular/core";
-import {
-  DepositDataFile,
-  DepositDataFileStateEnum,
-} from "@deposit/models/deposit-data-file.model";
-import {SharedAbstractPipe} from "@shared/pipes/shared-abstract/shared-abstract.pipe";
-
-@Pipe({
-  name: "allDataFileReady",
-})
-export class AllDataFileReadyPipe extends SharedAbstractPipe implements PipeTransform {
-  transform(list: DepositDataFile[]): boolean {
-    if (list === undefined || list === null) {
-      return false;
-    }
-    if (list.length === 0) {
-      return false;
-    }
-    Array.from(list).forEach(d => {
-      if (d.status === DepositDataFileStateEnum.READY) {
-        return false;
-      }
-    });
-    return true;
-  }
-}
diff --git a/src/app/shared/shared.module.ts b/src/app/shared/shared.module.ts
index 6c6688810c8bde1674d455a8ec8345b10124a3d6..d3bdd89335e9f148a3f1bf537c6e613bf18f8c5b 100644
--- a/src/app/shared/shared.module.ts
+++ b/src/app/shared/shared.module.ts
@@ -26,7 +26,6 @@ import {library} from "@fortawesome/fontawesome-svg-core";
 import {fas} from "@fortawesome/free-solid-svg-icons";
 import {TranslateModule} from "@ngx-translate/core";
 import {NgxsModule} from "@ngxs/store";
-import {AllDataFileReadyPipe} from "@shared/pipes/all-data-file-ready.pipe";
 import {TableModule} from "primeng/table";
 import {SolidifyFrontendModule} from "solidify-frontend";
 import {SharedBreadcrumbPresentational} from "./components/presentationals/shared-breadcrumb/shared-breadcrumb.presentational";
@@ -43,10 +42,10 @@ const presentationals = [
   SharedMultiSelectPresentational,
   SharedMultiSelectDefaultValuePresentational,
   SharedFieldErrorPresentational,
-  SharedErrorPresentational,
+  SharedErrorPresentational
 ];
 const directives = [SharedValidationDirective];
-const pipes = [FileSizePipe, AllDataFileReadyPipe];
+const pipes = [FileSizePipe];
 const modules = [
   CommonModule,
   FormsModule,
diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json
index f9a515540b800121c2c063b1ef423c3db6f2baf5..3b48f2fc3ba2c2a7d4c2650b2d2e2459cff058f3 100644
--- a/src/assets/i18n/de.json
+++ b/src/assets/i18n/de.json
@@ -673,6 +673,10 @@
       "datafiles": "Data Files",
       "details": "Details"
     },
+    "error": {
+      "fileInError": "The data file has an Error",
+      "noFile": "You have to upload a file to submit the deposit"
+    },
     "table": {
       "header": {
         "creation": {
diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json
index f9a515540b800121c2c063b1ef423c3db6f2baf5..3b48f2fc3ba2c2a7d4c2650b2d2e2459cff058f3 100644
--- a/src/assets/i18n/en.json
+++ b/src/assets/i18n/en.json
@@ -673,6 +673,10 @@
       "datafiles": "Data Files",
       "details": "Details"
     },
+    "error": {
+      "fileInError": "The data file has an Error",
+      "noFile": "You have to upload a file to submit the deposit"
+    },
     "table": {
       "header": {
         "creation": {
diff --git a/src/assets/i18n/fr.json b/src/assets/i18n/fr.json
index c71436bfbeeb342175b6f453210fd1e91fdb7294..33e7bfcd44a9de0102b39f5b790c4d57a5e9b4a4 100644
--- a/src/assets/i18n/fr.json
+++ b/src/assets/i18n/fr.json
@@ -673,6 +673,10 @@
       "datafiles": "Fichiers",
       "details": "Détails"
     },
+    "error": {
+      "fileInError": "Le fichier de données contient une erreur",
+      "noFile": "Vous devez télécharger un fichier pour pouvoir soumettre le dépôt"
+    },
     "table": {
       "header": {
         "creation": {