diff --git a/src/app/indexingModel/controllers/IndexingModelController.php b/src/app/indexingModel/controllers/IndexingModelController.php
index 22f5905299ee3a259b0825880a2c31904596b674..b02573a3473f628fb7502d67690bf77dd2ec0317 100644
--- a/src/app/indexingModel/controllers/IndexingModelController.php
+++ b/src/app/indexingModel/controllers/IndexingModelController.php
@@ -42,11 +42,24 @@ class IndexingModelController
 
         if (!$showDisabled) {
             $where[] = 'enabled = TRUE';
-        } else if (!ServiceModel::hasService(['id' => 'admin_indexing_models', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) {
+        } elseif (!ServiceModel::hasService(['id' => 'admin_indexing_models', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) {
             $where[] = 'enabled = TRUE';
         }
 
         $models = IndexingModelModel::get(['where' => $where, 'data' => [$GLOBALS['id'], 'false']]);
+
+        foreach ($models as $key => $value) {
+            $models[$key]['used'] = false;
+            $resources = ResModel::get([
+                'select'    => [1],
+                'where'     => ['model_id = ?'],
+                'data'      => [$value['model_id']]
+            ]);
+            if (!empty($resources)) {
+                $models[$key]['used'] = true;
+            }
+        }
+
         return $response->withJson(['indexingModels' => $models]);
     }
 
@@ -142,7 +155,6 @@ class IndexingModelController
                 }
             }
             $body['fields'] = $arrayTmp;
-
         }
 
         if (ServiceModel::hasService(['id' => 'admin_indexing_models', 'userId' => $GLOBALS['userId'], 'location' => 'apps', 'type' => 'admin'])) {
@@ -253,7 +265,6 @@ class IndexingModelController
         if (!empty($childrenModels)) {
             // Update children models of master
             foreach ($childrenModels as $child) {
-
                 $childFields = IndexingModelFieldModel::get(['select' => ['identifier', 'mandatory', 'default_value', 'unit'], 'where' => ['model_id = ?'], 'data' => [$child['id']]]);
                 foreach ($childFields as $key => $value) {
                     $childFields[$key]['default_value'] = json_decode($value['default_value'], true);
diff --git a/src/frontend/app/administration/indexingModel/indexing-models-administration.component.ts b/src/frontend/app/administration/indexingModel/indexing-models-administration.component.ts
index dea00aa29c18600615659d5a20a57d862e32474a..067f7ffc83928ba939bbc150bcb5f54322ec0243 100644
--- a/src/frontend/app/administration/indexingModel/indexing-models-administration.component.ts
+++ b/src/frontend/app/administration/indexingModel/indexing-models-administration.component.ts
@@ -12,6 +12,7 @@ import { tap, finalize, catchError, filter, exhaustMap, map } from 'rxjs/operato
 import { of } from 'rxjs';
 import { ConfirmComponent } from '../../../plugins/modal/confirm.component';
 import { MatDialogRef, MatDialog } from '@angular/material/dialog';
+import { AlertComponent } from '../../../plugins/modal/alert.component';
 
 declare function $j(selector: any): any;
 
@@ -85,28 +86,31 @@ export class IndexingModelsAdministrationComponent implements OnInit {
 
     delete(indexingModel: any) {
 
-        this.dialogRef = this.dialog.open(ConfirmComponent, { autoFocus: false, disableClose: true, data: { title: this.lang.delete, msg: this.lang.confirmAction } });
-
-        this.dialogRef.afterClosed().pipe(
-            filter((data: string) => data === 'ok'),
-            exhaustMap(() => this.http.delete('../../rest/indexingModels/' + indexingModel.id)),
-            tap(() => {
-                for (let i in this.indexingModels) {
-                    if (this.indexingModels[i].id == indexingModel.id) {
-                        this.indexingModels.splice(Number(i), 1);
+        if (!indexingModel.used) {
+            this.dialogRef = this.dialog.open(ConfirmComponent, { autoFocus: false, disableClose: true, data: { title: this.lang.delete, msg: this.lang.confirmAction } });
+
+            this.dialogRef.afterClosed().pipe(
+                filter((data: string) => data === 'ok'),
+                exhaustMap(() => this.http.delete('../../rest/indexingModels/' + indexingModel.id)),
+                tap(() => {
+                    for (let i in this.indexingModels) {
+                        if (this.indexingModels[i].id == indexingModel.id) {
+                            this.indexingModels.splice(Number(i), 1);
+                        }
                     }
-                }
-                this.dataSource = new MatTableDataSource(this.indexingModels);
-                this.dataSource.paginator = this.paginator;
-                this.dataSource.sort = this.sort;
-                this.notify.success(this.lang.indexingModelDeleted);
-            }),
-            catchError((err: any) => {
-                this.notify.handleErrors(err);
-                return of(false);
-            })
-        ).subscribe();
-
+                    this.dataSource = new MatTableDataSource(this.indexingModels);
+                    this.dataSource.paginator = this.paginator;
+                    this.dataSource.sort = this.sort;
+                    this.notify.success(this.lang.indexingModelDeleted);
+                }),
+                catchError((err: any) => {
+                    this.notify.handleErrors(err);
+                    return of(false);
+                })
+            ).subscribe();
+        } else {
+            this.dialog.open(AlertComponent, { autoFocus: false, disableClose: true, data: { title: indexingModel.label, msg: this.lang.canNotDeleteIndexingModel } });
+        }
     }
 
     disableIndexingModel(indexingModel: any) {
diff --git a/src/frontend/lang/lang-en.ts b/src/frontend/lang/lang-en.ts
index 0728fea2292f2ac746113fe6e52f88f47afd83ca..4d2c0f739b7645089f8305454a7b935e0b998988 100755
--- a/src/frontend/lang/lang-en.ts
+++ b/src/frontend/lang/lang-en.ts
@@ -1141,4 +1141,5 @@ export const LANG_EN = {
     "notInAuthorizedEntities" : "is not in one of the <b>authorized entities</b>.",
     "indexingModelDisabled" : "Indexing model disabled",
     "indexingModelEnabled" : "Indexing model enabled",
+    "canNotDeleteIndexingModel" : "This indexing model can not be deleted because at least one mail used it",
 };
diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts
index 70ec5e445599fc65118ca26de00848fc73e3f8b2..776ef1f59e2f1312542ad98913416b1b20fa8d19 100755
--- a/src/frontend/lang/lang-fr.ts
+++ b/src/frontend/lang/lang-fr.ts
@@ -1178,4 +1178,5 @@ export const LANG_FR = {
     "notInAuthorizedEntities" : "ne fait pas parti des <b>entités traitantes autorisées</b>.",
     "indexingModelDisabled" : "Modèle d'enregistrement désactivé",
     "indexingModelEnabled" : "Modèle d'enregistrement activé",
+    "canNotDeleteIndexingModel" : "Ce modèle ne peut pas être supprimé car il a été utilisé pour enregistrer au moins un courrier",
 };
diff --git a/src/frontend/lang/lang-nl.ts b/src/frontend/lang/lang-nl.ts
index 1619d14ec510b3932e0f5db3a9b230a9a5ed0011..d27f2b96ac79fbdff2b12acf160ff83a36c432ae 100755
--- a/src/frontend/lang/lang-nl.ts
+++ b/src/frontend/lang/lang-nl.ts
@@ -1167,4 +1167,5 @@ export const LANG_NL = {
     "notInAuthorizedEntities" : "is not in one of the <b>authorized entities</b>.", //_TO_TRANSLATE
     "indexingModelDisabled" : "Indexing model disabled", //_TO_TRANSLATE
     "indexingModelEnabled" : "Indexing model enabled", //_TO_TRANSLATE
+    "canNotDeleteIndexingModel" : "This indexing model can not be deleted because at least one mail used it", //_TO_TRANSLATE
 };