diff --git a/src/app/mapping/mapping.component.html b/src/app/mapping/mapping.component.html
index b6983e1cf1a5f8f97521ca56b11833a12a20e972..7f3ae0967fc066b184c2e024bc720fdbc9e6d713 100644
--- a/src/app/mapping/mapping.component.html
+++ b/src/app/mapping/mapping.component.html
@@ -1,60 +1,75 @@
-<div class="card-row">
-    <div class="card-col">
-        <nb-card size="giant" [nbSpinner]="loading" nbSpinnerStatus="primary" nbSpinnerSize="large"
-            nbSpinnerMessage="Loading...">
-            <nb-card-header>Dataset metadata</nb-card-header>
-            <nb-card-body>
-                <div></div>
-                <ng-container *ngFor="let dataset of datasetModel; let index = index;trackBy:trackByIndex;">
-                    <nb-form-field>
-                        <div class="row">
+<form #form="ngForm">
+    <div class="card-row">
+        <div class="card-col">
+            <nb-card size="giant" [nbSpinner]="loading" nbSpinnerStatus="primary" nbSpinnerSize="large"
+                nbSpinnerMessage="Loading...">
+                <nb-card-header>Dataset metadata</nb-card-header>
+                <nb-card-body>
 
-                            <div class="col-4">
+                    <ng-container *ngFor="let dataset of datasetModel; let index = index;trackBy:trackByIndex;">
+                        <nb-form-field>
+                            <div class="row">
 
-                                <nb-form-field>
-                                    <input *ngIf=" dataset.identifier !== 'dct:hasVersion' && dataset.identifier !== 'dct:title'" nbInput fullWidth type="text" value="{{dataset.identifier}} " disabled />
-                                    <input *ngIf=" dataset.identifier === 'dct:hasVersion' || dataset.identifier === 'dct:title' " nbInput fullWidth type="text" value="{{dataset.identifier}} *" disabled  />
-                                    <button nbSuffix nbTooltip="{{dataset.name}}: {{dataset.usageNote}}"
-                                        nbTooltipStatus="info" nbButton status="basic" ghost>
-                                        <nb-icon [icon]=" 'question-mark-circle-outline' " pack="eva">
-                                        </nb-icon>
-                                    </button>
-                                </nb-form-field>
+                                <div class="col-4">
 
-                            </div>
-                            <div class="col-8">
+                                    <nb-form-field>
+                                        <input
+                                            *ngIf=" dataset.identifier !== 'dct:hasVersion' && dataset.identifier !== 'dct:title'"
+                                            nbInput fullWidth type="text" value="{{dataset.identifier}} " disabled />
+                                        <input
+                                            *ngIf=" dataset.identifier === 'dct:hasVersion' || dataset.identifier === 'dct:title' "
+                                            nbInput fullWidth type="text" value="{{dataset.identifier}} *" disabled />
+                                        <button nbSuffix nbTooltip="{{dataset.name}}: {{dataset.usageNote}}"
+                                            nbTooltipStatus="info" nbButton status="basic" ghost>
+                                            <nb-icon [icon]=" 'question-mark-circle-outline' " pack="eva">
+                                            </nb-icon>
+                                        </button>
+                                    </nb-form-field>
+
+                                </div>
+                                <div class="col-8">
 
-                                <nb-form-field>
-                                    <input  *ngIf="dataset.identifier === 'dct:hasVersion' || dataset.identifier === 'dct:title' " required #autoInput #{{dataset.identifier}}="ngModel" fullWidth id="{{dataset.identifier}}" name="{{dataset.identifier}}"
-                                        nbInput (input)="onChange()" placeholder="Enter value" [nbAutocomplete]="auto"
-                                        [(ngModel)]="selectedPaths[index]" (focus)="reset()"  autocomplete="false"/>
-                                        <div *ngIf="dataset.identifier.invalid && (dataset.identifier.dirty || dataset.identifier.touched)">champ obligatoire</div>
-                                        <input  *ngIf=" dataset.identifier !== 'dct:hasVersion' && dataset.identifier !== 'dct:title'"  #autoInput #{{dataset.identifier}} fullWidth id="{{dataset.identifier}}"
-                                        nbInput (input)="onChange()" placeholder="Enter value" [nbAutocomplete]="auto"
-                                        [(ngModel)]="selectedPaths[index]" (focus)="reset()" autocomplete="false"/>
-                                        
+                                    <nb-form-field>
+                                        <input
+                                            *ngIf="dataset.identifier === 'dct:hasVersion' || dataset.identifier === 'dct:title' "
+                                            required #autoInput #{{dataset.identifier}}="ngModel" fullWidth
+                                            id="{{dataset.identifier}}" name="{{dataset.identifier}}" nbInput
+                                            (input)="onChange()" placeholder="Enter value" [nbAutocomplete]="auto"
+                                            [(ngModel)]="selectedPaths[index]" (focus)="reset()" autocomplete="false" />
+                                        <div
+                                            *ngIf="dataset.identifier.invalid && (dataset.identifier.dirty || dataset.identifier.touched)">
+                                            champ obligatoire</div>
+                                        <input
+                                            *ngIf=" dataset.identifier !== 'dct:hasVersion' && dataset.identifier !== 'dct:title'"
+                                            #autoInput #{{dataset.identifier}} fullWidth id="{{dataset.identifier}}"
+                                            nbInput (input)="onChange()" placeholder="Enter value"
+                                            [nbAutocomplete]="auto" [(ngModel)]="selectedPaths[index]" (focus)="reset()"
+                                            autocomplete="false" />
 
-                                    <nb-autocomplete #auto>
 
-                                        <nb-option *ngFor="let option of filteredOptions | async" [value]="option">
-                                            {{ option }}
-                                        </nb-option>
+                                        <nb-autocomplete #auto>
 
-                                    </nb-autocomplete>
-                                </nb-form-field>
+                                            <nb-option *ngFor="let option of filteredOptions | async" [value]="option">
+                                                {{ option }}
+                                            </nb-option>
+
+                                        </nb-autocomplete>
+                                    </nb-form-field>
+                                </div>
                             </div>
-                        </div>
-                    </nb-form-field>
-                </ng-container>
-            </nb-card-body>
-        </nb-card>
+                        </nb-form-field>
+                    </ng-container>
+
+                </nb-card-body>
+            </nb-card>
+        </div>
     </div>
-</div>
-<div class="row">
-    <div>
-        <button nbButton (click)="mapDataset()">Check mapping</button>
+    <div class="row">
+        <div>
+            <button nbButton (click)="mapDataset()" [disabled]="!form.valid">Check mapping</button>
+        </div>
     </div>
-</div>
+</form>
 <div class="card-row">
     <div class="card-col">
         <nb-card>
@@ -76,7 +91,8 @@
 
                 </nb-list>
                 <div class="row">
-                    <button class="button-center" nbButton status="danger" *ngIf=" !first " (click)="mappedMetadatas.splice(index, 1); prev()">Delete datset<nb-icon icon="trash-2-outline">
+                    <button class="button-center" nbButton status="danger" *ngIf=" !first "
+                        (click)="mappedMetadatas.splice(index, 1); prev()">Delete datset<nb-icon icon="trash-2-outline">
                         </nb-icon></button>
                 </div>
             </nb-card-body>
@@ -93,7 +109,7 @@
                         <button nbButton (click)=" publishDataset()">Publish</button>
                     </div>
                 </div>
-                
+
             </nb-card-footer>
         </nb-card>
     </div>
diff --git a/src/app/publishapi/publishapi.component.html b/src/app/publishapi/publishapi.component.html
index d0a200dc81a1598dee53938408c2a049b8350afb..fcb8a893bd635b56ed9c06ea603aee822f9629d1 100644
--- a/src/app/publishapi/publishapi.component.html
+++ b/src/app/publishapi/publishapi.component.html
@@ -292,7 +292,7 @@
         <h4>Use parameters & launch request</h4>
         <app-datasets [openApi]="openApi"></app-datasets>
         <button class="prev-button" nbButton nbStepperPrevious>prev</button>
-        <button class="next-button" nbButton nbStepperNext (click)="initLabelThree=true">next</button>
+        <button class="next-button" nbButton nbStepperNext [disabled]="!isValid()" (click)="initLabelThree=true">next</button>
       </nb-step>
       <nb-step [label]="labelThree" >
         <ng-template #labelThree>Third step</ng-template>
@@ -301,7 +301,7 @@
           Map your metadata schema with DCAT schema
         </p> 
           <app-mapping *ngIf="initLabelThree" [catalogId]="openApi.info['x-catalog-id']"></app-mapping>
-        <button class="prev-button" nbButton nbStepperPrevious (click)="initLabelThree=false;  resetDataset()">prev</button>
+        <button class="prev-button" nbButton nbStepperPrevious  (click)="initLabelThree=false;  resetDataset()">prev</button>
         <button class="next-button" nbButton disabled nbStepperNext>next</button>
       </nb-step>
       <!--<nb-step [label]="labelFour">
diff --git a/src/app/publishapi/publishapi.component.ts b/src/app/publishapi/publishapi.component.ts
index d8f7340b73aac0b0adb6ae3db74674c008483398..60ce360f9929d6907c9b441d7794cd6c87b45fa5 100644
--- a/src/app/publishapi/publishapi.component.ts
+++ b/src/app/publishapi/publishapi.component.ts
@@ -260,4 +260,12 @@ export class PublishApiComponent implements OnInit {
   resetDataset() {
     this.datasetService.resetDataset();
   }
+
+  isValid(): boolean {
+    if(this.datasetService.itemsDataset.length > 0) {
+      return true;
+    } else {
+      return false;
+    }
+  }
 }