diff --git a/ui/ui-frontend/projects/referential/src/app/rule/rule-create/rule-create.component.html b/ui/ui-frontend/projects/referential/src/app/rule/rule-create/rule-create.component.html
index 33e2cac16743b2c5ac7fc38b27afbfb184b303a8..51fd402e7e70aa10c43d4122691a3b14376feea4 100644
--- a/ui/ui-frontend/projects/referential/src/app/rule/rule-create/rule-create.component.html
+++ b/ui/ui-frontend/projects/referential/src/app/rule/rule-create/rule-create.component.html
@@ -59,7 +59,11 @@
           </div>
 
           <div class="col-12 form-control">
-            <vitamui-common-textarea formControlName="ruleDescription" placeholder="Description" [rows]="1">
+            <vitamui-common-textarea formControlName="ruleDescription" required placeholder="Description" [rows]="1">
+              <ng-container *ngIf="form.get('ruleDescription')?.touched">
+                <vitamui-common-input-error *ngIf="!!form.get('ruleDescription')?.errors?.required"
+                  i18n="Required field error hint@@formErrorRequiredField">Champ requis</vitamui-common-input-error>
+              </ng-container>
             </vitamui-common-textarea>
           </div>
 
diff --git a/ui/ui-frontend/projects/referential/src/app/rule/rule-create/rule-create.component.spec.ts b/ui/ui-frontend/projects/referential/src/app/rule/rule-create/rule-create.component.spec.ts
index e0c9e72455b7027308b436a3d98b140b31b022e8..7225bdeecaa6669b14a701d23177cd252f0303b3 100644
--- a/ui/ui-frontend/projects/referential/src/app/rule/rule-create/rule-create.component.spec.ts
+++ b/ui/ui-frontend/projects/referential/src/app/rule/rule-create/rule-create.component.spec.ts
@@ -184,6 +184,9 @@ describe('RuleCreateComponent', () => {
           expect(setControlValue('ruleDuration', '').invalid).toBeTruthy('empty ruleDuration invalid');
           expect(setControlValue('ruleDuration', '10').valid).toBeTruthy('ruleDuration valid');
 
+          expect(setControlValue('ruleDescription', '').invalid).toBeTruthy('empty ruleDescription invalid');
+          expect(setControlValue('ruleDescription', 'azerty').valid).toBeTruthy('ruleDescription valid');
+
           expect(setControlValue('ruleMeasurement', '').invalid).toBeTruthy('empty ruleMeasurement invalid');
           expect(setControlValue('ruleMeasurement', RULE_MEASUREMENTS[0].key).valid).toBeTruthy('ruleMeasurement valid');
         });
diff --git a/ui/ui-frontend/projects/referential/src/app/rule/rule-create/rule-create.component.ts b/ui/ui-frontend/projects/referential/src/app/rule/rule-create/rule-create.component.ts
index 6a1235dffb6c8994fc8c721dbc852fd28b6dd4ea..77b42cac889b662d74eb35e68735454dcd6a8921 100644
--- a/ui/ui-frontend/projects/referential/src/app/rule/rule-create/rule-create.component.ts
+++ b/ui/ui-frontend/projects/referential/src/app/rule/rule-create/rule-create.component.ts
@@ -88,7 +88,7 @@ export class RuleCreateComponent implements OnInit, OnDestroy {
       ruleId: [null, [Validators.required, this.ruleCreateValidator.ruleIdPattern()], this.ruleCreateValidator.uniqueRuleId()],
       ruleType: [null, Validators.required],
       ruleValue: [null, Validators.required],
-      ruleDescription: [null],
+      ruleDescription: [null, Validators.required],
       ruleDuration: [null, Validators.required],
       ruleMeasurement: [null, Validators.required]
     });
diff --git a/ui/ui-frontend/projects/referential/src/app/rule/rule-preview/rule-information-tab/rule-information-tab.component.html b/ui/ui-frontend/projects/referential/src/app/rule/rule-preview/rule-information-tab/rule-information-tab.component.html
index 7066b0bface74406c94232da83e076d35d6a0e29..7ba036963d1e7c3715b24f9a989b0c0cbdc961ef 100644
--- a/ui/ui-frontend/projects/referential/src/app/rule/rule-preview/rule-information-tab/rule-information-tab.component.html
+++ b/ui/ui-frontend/projects/referential/src/app/rule/rule-preview/rule-information-tab/rule-information-tab.component.html
@@ -45,7 +45,11 @@
     </div>
 
     <div class="col-12 form-control">
-      <vitamui-common-textarea formControlName="ruleDescription" placeholder="Description" [rows]="2">
+      <vitamui-common-textarea formControlName="ruleDescription" required="required" placeholder="Description" [rows]="2">
+        <ng-container *ngIf="form.get('ruleDescription')?.touched">
+          <vitamui-common-input-error *ngIf="!!form.get('ruleDescription')?.errors?.required"
+            i18n="Required field error hint@@formErrorRequiredField">Champ requis</vitamui-common-input-error>
+        </ng-container>
       </vitamui-common-textarea>
     </div>
   </div>
diff --git a/ui/ui-frontend/projects/referential/src/app/rule/rule-preview/rule-information-tab/rule-information-tab.component.ts b/ui/ui-frontend/projects/referential/src/app/rule/rule-preview/rule-information-tab/rule-information-tab.component.ts
index 18c472610d7cb85d5bb244378194ad1c136a76bb..b12c5d4cdeb2d02dbb51ed572b6b78a9f87dcaaa 100644
--- a/ui/ui-frontend/projects/referential/src/app/rule/rule-preview/rule-information-tab/rule-information-tab.component.ts
+++ b/ui/ui-frontend/projects/referential/src/app/rule/rule-preview/rule-information-tab/rule-information-tab.component.ts
@@ -98,7 +98,7 @@ export class RuleInformationTabComponent {
     this.form = this.formBuilder.group({
       ruleType: [null, Validators.required],
       ruleValue: [null, Validators.required],
-      ruleDescription: [null],
+      ruleDescription: [null, Validators.required],
       ruleDuration: [null, Validators.required],
       ruleMeasurement: [null, Validators.required]
     });