diff --git a/src/app/metamodel/reducers/attribute.reducer.ts b/src/app/metamodel/reducers/attribute.reducer.ts
index 370b61f6caa5837b216ba65612156a48fa01418d..535acbbbb2271ce74aa564d030d63e7f5b44c929 100644
--- a/src/app/metamodel/reducers/attribute.reducer.ts
+++ b/src/app/metamodel/reducers/attribute.reducer.ts
@@ -18,7 +18,8 @@ export function reducer(state: State = initialState, action: actions.Actions): S
         case actions.LOAD_ATTRIBUTE_SEARCH_META:
             return {
                 ...state,
-                attributeSearchMetaIsLoading: true
+                attributeSearchMetaIsLoading: true,
+                attributeSearchMetaIsLoaded: false
             };
 
         case actions.LOAD_ATTRIBUTE_SEARCH_META_SUCCESS:
diff --git a/src/app/search/components/criteria/criteria-by-family.component.html b/src/app/search/components/criteria/criteria-by-family.component.html
index b23601abb4105e1f376d720e12469a7108ef9485..8f59c8821e3456ea1d5533d74472eadd96702ce9 100644
--- a/src/app/search/components/criteria/criteria-by-family.component.html
+++ b/src/app/search/components/criteria/criteria-by-family.component.html
@@ -1,71 +1,71 @@
 <div *ngFor="let attribute of getAttributeByFamily(criteriaFamily.id)">
     <div [ngSwitch]="attribute.search_type">
-        <div *ngSwitchCase="'fd'">
+        <div *ngSwitchCase="'field'">
             <app-field class="criteria" [id]="attribute.id" [operator]="attribute.operator"
                 [label]="attribute.form_label" [placeholder]="attribute.placeholder_min"
-                [attributeType]="attribute.type" [criterion]="getCriterion(attribute.id)" (add)="add($event)">
+                [attributeType]="attribute.type" [criterion]="getCriterion(attribute.id)" (add)="add($event)" (delete)="delete($event)">
             </app-field>
         </div>
-        <div *ngSwitchCase="'bw'">
+        <div *ngSwitchCase="'between'">
             <app-between class="criteria" [id]="attribute.id" [label]="attribute.form_label"
                 [placeholderMin]="attribute.placeholder_min" [placeholderMax]="attribute.placeholder_max"
-                [criterion]="getCriterion(attribute.id)" (add)="add($event)">
+                [criterion]="getCriterion(attribute.id)" (add)="add($event)" (delete)="delete($event)">
             </app-between>
         </div>
-        <div *ngSwitchCase="'se'">
+        <div *ngSwitchCase="'select'">
             <app-select class="criteria" [id]="attribute.id" [operator]="attribute.operator"
                 [label]="attribute.form_label" [options]="getOptions(attribute.id)"
-                [criterion]="getCriterion(attribute.id)" (add)="add($event)">
+                [criterion]="getCriterion(attribute.id)" (add)="add($event)" (delete)="delete($event)">
             </app-select>
         </div>
-        <div *ngSwitchCase="'ms'">
+        <div *ngSwitchCase="'select-multiple'">
             <app-select-multiple class="criteria" [id]="attribute.id" [operator]="attribute.operator"
                 [label]="attribute.form_label" [options]="getOptions(attribute.id)"
-                [criterion]="getCriterion(attribute.id)" (add)="add($event)">
+                [criterion]="getCriterion(attribute.id)" (add)="add($event)" (delete)="delete($event)">
             </app-select-multiple>
         </div>
-        <div *ngSwitchCase="'dl'">
+        <div *ngSwitchCase="'datalist'">
             <app-datalist class="criteria" [id]="attribute.id" [operator]="attribute.operator"
                 [label]="attribute.form_label" [placeholder]="attribute.placeholder_min"
-                [options]="getOptions(attribute.id)" [criterion]="getCriterion(attribute.id)" (add)="add($event)">
+                [options]="getOptions(attribute.id)" [criterion]="getCriterion(attribute.id)" (add)="add($event)" (delete)="delete($event)">
             </app-datalist>
         </div>
-        <div *ngSwitchCase="'rd'">
+        <div *ngSwitchCase="'radio'">
             <app-radio class="criteria" [id]="attribute.id" [operator]="attribute.operator"
                 [label]="attribute.form_label" [options]="getOptions(attribute.id)"
-                [criterion]="getCriterion(attribute.id)" (add)="add($event)">
+                [criterion]="getCriterion(attribute.id)" (add)="add($event)" (delete)="delete($event)">
             </app-radio>
         </div>
-        <div *ngSwitchCase="'cb'">
+        <div *ngSwitchCase="'checkbox'">
             <app-checkbox class="criteria" [id]="attribute.id" [operator]="attribute.operator"
                 [label]="attribute.form_label" [options]="getOptions(attribute.id)"
-                [criterion]="getCriterion(attribute.id)" (add)="add($event)">
+                [criterion]="getCriterion(attribute.id)" (add)="add($event)" (delete)="delete($event)">
             </app-checkbox>
         </div>
-        <div *ngSwitchCase="'dt'">
+        <div *ngSwitchCase="'date'">
             <app-date class="criteria" [id]="attribute.id" [operator]="attribute.operator"
                 [label]="attribute.form_label" [placeholder]="attribute.placeholder_min"
-                [criterion]="getCriterion(attribute.id)" (add)="add($event)">
+                [criterion]="getCriterion(attribute.id)" (add)="add($event)" (delete)="delete($event)">
             </app-date>
         </div>
-        <div *ngSwitchCase="'bd'">
+        <div *ngSwitchCase="'between-date'">
             <app-between-date class="criteria" [id]="attribute.id" [operator]="attribute.operator"
-                [label]="attribute.form_label" [criterion]="getCriterion(attribute.id)" (add)="add($event)">
+                [label]="attribute.form_label" [criterion]="getCriterion(attribute.id)" (add)="add($event)" (delete)="delete($event)">
             </app-between-date>
         </div>
-        <div *ngSwitchCase="'tm'">
+        <div *ngSwitchCase="'time'">
             <app-time class="criteria" [id]="attribute.id" [label]="attribute.form_label"
-                [operator]="attribute.operator" [criterion]="getCriterion(attribute.id)" (add)="add($event)">
+                [operator]="attribute.operator" [criterion]="getCriterion(attribute.id)" (add)="add($event)" (delete)="delete($event)">
             </app-time>
         </div>
-        <div *ngSwitchCase="'ts'">
-            <app-datetime class="criteria" [id]="attribute.id" [label]="attribute.form_label"
-                [criterion]="getCriterion(attribute.id)" (add)="add($event)">
+        <div *ngSwitchCase="'date-time'">
+            <app-datetime class="criteria" [id]="attribute.id" [label]="attribute.form_label" [operator]="attribute.operator"
+                [criterion]="getCriterion(attribute.id)" (add)="add($event)" (delete)="delete($event)">
             </app-datetime>
         </div>
-        <div *ngSwitchCase="'js'">
+        <div *ngSwitchCase="'json'">
             <app-json class="criteria" [id]="attribute.id" [label]="attribute.form_label"
-                [criterion]="getCriterion(attribute.id)" (add)="add($event)">
+                [criterion]="getCriterion(attribute.id)" (add)="add($event)" (delete)="delete($event)">
             </app-json>
         </div>
         <div *ngSwitchDefault>
diff --git a/src/app/search/components/criteria/criteria-by-family.component.ts b/src/app/search/components/criteria/criteria-by-family.component.ts
index 21ea9fb3ea792e59cdbb5ace1b82c4305a8b6f8f..23fdd077b06e5c04c64d5d2c16e8f28d5a3bef86 100644
--- a/src/app/search/components/criteria/criteria-by-family.component.ts
+++ b/src/app/search/components/criteria/criteria-by-family.component.ts
@@ -33,4 +33,8 @@ export class CriteriaByFamilyComponent {
     add(criterion: Criterion): void {
         this.addCriterion.emit(criterion);
     }
+
+    delete(id: number): void {
+        this.deleteCriterion.emit(id);
+    }
 }
diff --git a/src/app/search/components/criteria/criteria-tabs.component.html b/src/app/search/components/criteria/criteria-tabs.component.html
index b3d89a1aef7095f5f4f2fefa099d91669115e706..4e3e8e7ae3ebbe0881d548fdc84f6ba996cbd9ab 100644
--- a/src/app/search/components/criteria/criteria-tabs.component.html
+++ b/src/app/search/components/criteria/criteria-tabs.component.html
@@ -2,9 +2,12 @@
     <div class="border rounded my-2">
         <p class="border-bottom bg-light text-primary py-4 pl-4">{{ criteriaFamilyList[0].label }}</p>
         <div class="px-3">
-            <app-criteria-by-family [criteriaFamily]="criteriaFamilyList[0]"
-                [datasetAttributeList]="datasetAttributeList" [criteriaList]="criteriaList"
-                (addCriterion)="add($event)">
+            <app-criteria-by-family
+                [criteriaFamily]="criteriaFamilyList[0]"
+                [datasetAttributeList]="datasetAttributeList"
+                [criteriaList]="criteriaList"
+                (addCriterion)="add($event)"
+                (deleteCriterion)="delCriterion($event)">
             </app-criteria-by-family>
         </div>
     </div>
@@ -22,8 +25,12 @@
                     <span *ngIf="!ag.isOpen"><i class="fas fa-chevron-down"></i></span>
                 </div>
             </button>
-            <app-criteria-by-family [criteriaFamily]="family" [datasetAttributeList]="datasetAttributeList"
-                [criteriaList]="criteriaList" (addCriterion)="add($event)">
+            <app-criteria-by-family 
+                [criteriaFamily]="family"
+                [datasetAttributeList]="datasetAttributeList"
+                [criteriaList]="criteriaList"
+                (addCriterion)="add($event)"
+                (deleteCriterion)="delCriterion($event)">
             </app-criteria-by-family>
         </accordion-group>
     </ng-container>
diff --git a/src/app/search/components/criteria/criteria-tabs.component.ts b/src/app/search/components/criteria/criteria-tabs.component.ts
index 9051314a85260ee6a6a4d48564d8501a309a6073..142185a653eca27f6db182284332f177053d7f3a 100644
--- a/src/app/search/components/criteria/criteria-tabs.component.ts
+++ b/src/app/search/components/criteria/criteria-tabs.component.ts
@@ -14,6 +14,7 @@ export class CriteriaTabsComponent {
     @Input() datasetAttributeList: Attribute[];
     @Input() criteriaList: Criterion[];
     @Output() addCriterion: EventEmitter<Criterion> = new EventEmitter();
+    @Output() deleteCriterion: EventEmitter<number> = new EventEmitter();
 
     getAttributeByFamily(idFamily: number): Attribute[] {
         return this.datasetAttributeList
@@ -23,4 +24,8 @@ export class CriteriaTabsComponent {
     add(criterion: Criterion): void {
         this.addCriterion.emit(criterion);
     }
+
+    delCriterion(id: number): void {
+        this.deleteCriterion.emit(id);
+    }
 }
diff --git a/src/app/search/components/criteria/search-type/between-date.component.html b/src/app/search/components/criteria/search-type/between-date.component.html
index 2970dd73f7cc21e1aed6b80b6285021098d39c48..ae6266d7c58add9e25c2489f54a68f699d17f90f 100644
--- a/src/app/search/components/criteria/search-type/between-date.component.html
+++ b/src/app/search/components/criteria/search-type/between-date.component.html
@@ -6,7 +6,11 @@
             bsDaterangepicker>
     </div>
     <div class="col-2 text-center">
-        <button class="btn btn-outline-success" *ngIf="!field.disabled" [hidden]="!field.value"
-            (click)="addCriterion()"><i class="fas fa-plus-circle"></i></button>
+        <button class="btn btn-outline-success" *ngIf="!field.disabled" [hidden]="!field.value" (click)="addCriterion()">
+            <i class="fas fa-plus fa-fw"></i>
+        </button>
+        <button class="btn btn-outline-danger" *ngIf="field.disabled" (click)="deleteCriterion()">
+            <i class="fa fa-times fa-fw"></i>
+        </button>
     </div>
 </div>
\ No newline at end of file
diff --git a/src/app/search/components/criteria/search-type/between-date.component.ts b/src/app/search/components/criteria/search-type/between-date.component.ts
index c519625061e30c983d57b5187b45704926193cdf..b44a764046e5e73e93f3864f22bcfc356e328b3b 100644
--- a/src/app/search/components/criteria/search-type/between-date.component.ts
+++ b/src/app/search/components/criteria/search-type/between-date.component.ts
@@ -1,7 +1,7 @@
 import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
 import { FormControl } from '@angular/forms';
 
-import { Criterion, BetweenDateCriterion } from '../../../store/model';
+import { Criterion, BetweenCriterion } from '../../../store/model';
 
 @Component({
     selector: 'app-between-date',
@@ -16,23 +16,28 @@ export class BetweenDateComponent {
     set criterion(criterion: Criterion) {
         this.getDefault(criterion);
     }
-    @Output() add: EventEmitter<BetweenDateCriterion> = new EventEmitter();
+    @Output() add: EventEmitter<BetweenCriterion> = new EventEmitter();
+    @Output() delete: EventEmitter<number> = new EventEmitter();
 
     field = new FormControl('');
 
     addCriterion(): void {
         const dateMin = this.getDateString(this.field.value[0]);
         const dateMax = this.getDateString(this.field.value[1]);
-        const fd = new BetweenDateCriterion(this.id, dateMin, dateMax);
+        const fd = new BetweenCriterion(this.id, dateMin, dateMax);
         this.add.emit(fd);
     }
 
+    deleteCriterion() {
+        this.delete.emit(this.id);
+    }
+
     getDefault(criterion: Criterion): void {
         if (!criterion) {
             this.field.setValue('');
             this.field.enable();
         } else {
-            const c = criterion as BetweenDateCriterion;
+            const c = criterion as BetweenCriterion;
             this.field.setValue([new Date(c.min), new Date(c.max)]);
             this.field.disable();
         }
diff --git a/src/app/search/components/criteria/search-type/between.component.html b/src/app/search/components/criteria/search-type/between.component.html
index e494e74353eca3f2642f452caa48d6fdf43c9a8a..c838c741f85dc40185dad0a0d73982eb8f3d10c7 100644
--- a/src/app/search/components/criteria/search-type/between.component.html
+++ b/src/app/search/components/criteria/search-type/between.component.html
@@ -10,6 +10,8 @@
     </div>
     <div class="col-2 text-center">
         <button class="btn btn-outline-success" *ngIf="!fieldMin.disabled" [hidden]="!fieldMin.value && !fieldMax.value"
-            (click)="addCriterion()"><i class="fas fa-plus-circle"></i></button>
+            (click)="addCriterion()"><i class="fas fa-plus fa-fw"></i></button>
+        <button class="btn btn-outline-danger" *ngIf="fieldMin.disabled"
+            (click)="deleteCriterion()"><i class="fa fa-times fa-fw"></i></button>
     </div>
 </div>
\ No newline at end of file
diff --git a/src/app/search/components/criteria/search-type/between.component.ts b/src/app/search/components/criteria/search-type/between.component.ts
index d95e0dc246b04b00aaa6771d8b5040c19585f1fc..87db07aa0a04c2e2fcdfc444be035281010fc69d 100644
--- a/src/app/search/components/criteria/search-type/between.component.ts
+++ b/src/app/search/components/criteria/search-type/between.component.ts
@@ -18,6 +18,7 @@ export class BetweenComponent {
         this.getDefault(criterion);
     }
     @Output() add: EventEmitter<BetweenCriterion> = new EventEmitter();
+    @Output() delete: EventEmitter<number> = new EventEmitter();
 
     fieldMin = new FormControl('');
     fieldMax = new FormControl('');
@@ -27,6 +28,10 @@ export class BetweenComponent {
         this.add.emit(fd);
     }
 
+    deleteCriterion() {
+        this.delete.emit(this.id);
+    }
+
     getDefault(criterion: Criterion): void {
         if (!criterion) {
             this.fieldMin.setValue('');
diff --git a/src/app/search/components/criteria/search-type/checkbox.component.html b/src/app/search/components/criteria/search-type/checkbox.component.html
index 10b9c94ee929cb36e4b3ca51137b85a3d02782ce..c92ec046a7565253c90432ce4348e7c769f599cf 100644
--- a/src/app/search/components/criteria/search-type/checkbox.component.html
+++ b/src/app/search/components/criteria/search-type/checkbox.component.html
@@ -7,7 +7,11 @@
         </div>
     </div>
     <div class="col-2 text-center">
-        <button class="btn btn-outline-success" *ngIf="!checkboxes.disabled" [hidden]="!isChecked()"
-            (click)="addCriterion()"><i class="fas fa-plus-circle"></i></button>
+        <button class="btn btn-outline-success" *ngIf="!checkboxes.disabled" [hidden]="!isChecked()" (click)="addCriterion()">
+            <i class="fas fa-plus fa-fw"></i>
+        </button>
+        <button class="btn btn-outline-danger" *ngIf="checkboxes.disabled" (click)="deleteCriterion()">
+            <i class="fa fa-times fa-fw"></i>
+        </button>
     </div>
 </div>
\ No newline at end of file
diff --git a/src/app/search/components/criteria/search-type/checkbox.component.ts b/src/app/search/components/criteria/search-type/checkbox.component.ts
index 3627cbe84b668cea19bfdbfc38530b130d2db8f9..45a4e30f92ef70649b440f0c334959260a11f890 100644
--- a/src/app/search/components/criteria/search-type/checkbox.component.ts
+++ b/src/app/search/components/criteria/search-type/checkbox.component.ts
@@ -23,6 +23,7 @@ export class CheckboxComponent {
         this.getDefault(criterion);
     }
     @Output() add: EventEmitter<SelectMultipleCriterion> = new EventEmitter();
+    @Output() delete: EventEmitter<number> = new EventEmitter();
 
     checkboxes: FormArray;
     checkboxesFormControls: {value: string, control: FormControl}[];
@@ -39,6 +40,10 @@ export class CheckboxComponent {
         this.add.emit(cb);
     }
 
+    deleteCriterion() {
+        this.delete.emit(this.id);
+    }
+
     setCheckboxes(options: Option[]) {
         this.checkboxesFormControls = [];
         this.checkboxes = new FormArray(options.map((option: Option) => {
diff --git a/src/app/search/components/criteria/search-type/datalist.component.html b/src/app/search/components/criteria/search-type/datalist.component.html
index 2a2d7b067e892bb3111f0376678dd2a23c32980d..85785cf714581700068dc61a82bcb1eb5c75553b 100644
--- a/src/app/search/components/criteria/search-type/datalist.component.html
+++ b/src/app/search/components/criteria/search-type/datalist.component.html
@@ -8,7 +8,11 @@
         </datalist>
     </div>
     <div class="col-2 text-center">
-        <button class="btn btn-outline-success" *ngIf="!field.disabled" [hidden]="!field.value"
-            (click)="addCriterion()"><i class="fas fa-plus-circle"></i></button>
+        <button class="btn btn-outline-success" *ngIf="!field.disabled" [hidden]="!field.value" (click)="addCriterion()">
+            <i class="fas fa-plus fa-fw"></i>
+        </button>
+        <button class="btn btn-outline-danger" *ngIf="field.disabled" (click)="deleteCriterion()">
+            <i class="fa fa-times fa-fw"></i>
+        </button>
     </div>
 </div>
\ No newline at end of file
diff --git a/src/app/search/components/criteria/search-type/datalist.component.ts b/src/app/search/components/criteria/search-type/datalist.component.ts
index 4868a541b534426fc4b38390160458888727d670..2128ddc3f7e76cbef80320033eb01c6a16d29cd0 100644
--- a/src/app/search/components/criteria/search-type/datalist.component.ts
+++ b/src/app/search/components/criteria/search-type/datalist.component.ts
@@ -20,6 +20,7 @@ export class DatalistComponent {
         this.getDefault(criterion);
     }
     @Output() add: EventEmitter<FieldCriterion> = new EventEmitter();
+    @Output() delete: EventEmitter<number> = new EventEmitter();
 
     field = new FormControl('');
 
@@ -28,6 +29,10 @@ export class DatalistComponent {
         this.add.emit(fd);
     }
 
+    deleteCriterion() {
+        this.delete.emit(this.id);
+    }
+
     getDefault(criterion: Criterion): void {
         if (!criterion) {
             this.field.setValue('');
diff --git a/src/app/search/components/criteria/search-type/date.component.html b/src/app/search/components/criteria/search-type/date.component.html
index 36336ae3929e15ecc4edd6490d53d61341c4393d..fd151063560adb65a4b0500f4a0d11a43facba0c 100644
--- a/src/app/search/components/criteria/search-type/date.component.html
+++ b/src/app/search/components/criteria/search-type/date.component.html
@@ -5,7 +5,11 @@
             [bsValue]="field.value" [bsConfig]="{ dateInputFormat: 'YYYY-MM-DD' }" bsDatepicker>
     </div>
     <div class="col-2 text-center">
-        <button class="btn btn-outline-success" *ngIf="!field.disabled" [hidden]="!field.value"
-            (click)="addCriterion()"><i class="fas fa-plus-circle"></i></button>
+        <button class="btn btn-outline-success" *ngIf="!field.disabled" [hidden]="!field.value" (click)="addCriterion()">
+            <i class="fas fa-plus fa-fw"></i>
+        </button>
+        <button class="btn btn-outline-danger" *ngIf="field.disabled" (click)="deleteCriterion()">
+            <i class="fa fa-times fa-fw"></i>
+        </button>
     </div>
 </div>
\ No newline at end of file
diff --git a/src/app/search/components/criteria/search-type/date.component.ts b/src/app/search/components/criteria/search-type/date.component.ts
index c3f343bdde19e7a691ab2ba6bfde318a6904ecd0..62b98e0c4b068fbb13f0a9a4917ccdb9f6f8ad15 100644
--- a/src/app/search/components/criteria/search-type/date.component.ts
+++ b/src/app/search/components/criteria/search-type/date.component.ts
@@ -18,6 +18,7 @@ export class DateComponent {
         this.getDefault(criterion);
     }
     @Output() add: EventEmitter<FieldCriterion> = new EventEmitter();
+    @Output() delete: EventEmitter<number> = new EventEmitter();
 
     field = new FormControl('');
 
@@ -26,6 +27,10 @@ export class DateComponent {
         this.add.emit(fd);
     }
 
+    deleteCriterion() {
+        this.delete.emit(this.id);
+    }
+
     getDefault(criterion: Criterion): void {
         if (!criterion) {
             this.field.setValue('');
diff --git a/src/app/search/components/criteria/search-type/datetime.component.html b/src/app/search/components/criteria/search-type/datetime.component.html
index 7ef7bad6e755168d09360527df309b57c541048c..03bfd315d1f754ccbcd3da54da422a1eaf97361d 100644
--- a/src/app/search/components/criteria/search-type/datetime.component.html
+++ b/src/app/search/components/criteria/search-type/datetime.component.html
@@ -1,9 +1,8 @@
 <div class="form-group row">
     <label class="col-3 col-form-label">{{ label }}</label>
     <div class="col">
-        <input type="text" placeholder="Pick a date..." class="form-control" [formControl]="date"
-            [bsValue]="date.value" [bsConfig]="{ dateInputFormat: 'YYYY-MM-DD' }" (change)="change()"
-            bsDatepicker>
+        <input type="text" placeholder="Pick a date..." class="form-control" [formControl]="date" [bsValue]="date.value"
+            [bsConfig]="{ dateInputFormat: 'YYYY-MM-DD' }" (change)="change()" bsDatepicker>
     </div>
     <div class="col">
         <div class="row">
@@ -21,7 +20,12 @@
         </div>
     </div>
     <div class="col-2 text-center">
-        <button class="btn btn-outline-success" *ngIf="!date.disabled || !hh.disabled || !mm.disabled" [hidden]="!isValidFields"
-            (click)="addCriterion()"><i class="fas fa-plus-circle"></i></button>
+        <button class="btn btn-outline-success" *ngIf="!date.disabled || !hh.disabled || !mm.disabled"
+            [hidden]="!isValidFields" (click)="addCriterion()">
+            <i class="fas fa-plus fa-fw"></i>
+        </button>
+        <button class="btn btn-outline-danger" *ngIf="date.disabled && hh.disabled && mm.disabled" (click)="deleteCriterion()">
+            <i class="fa fa-times fa-fw"></i>
+        </button>
     </div>
 </div>
\ No newline at end of file
diff --git a/src/app/search/components/criteria/search-type/datetime.component.ts b/src/app/search/components/criteria/search-type/datetime.component.ts
index 3d37b18cbfb0a65e00a74ea649ab2d0050aa1ac1..bd5f4c198e7df4de8a4c658cadc1e5daa7a210f3 100644
--- a/src/app/search/components/criteria/search-type/datetime.component.ts
+++ b/src/app/search/components/criteria/search-type/datetime.component.ts
@@ -1,7 +1,7 @@
 import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
 import { FormControl } from '@angular/forms';
 
-import { Criterion, DatetimeCriterion } from '../../../store/model';
+import { Criterion, FieldCriterion } from '../../../store/model';
 
 @Component({
     selector: 'app-datetime',
@@ -11,13 +11,15 @@ import { Criterion, DatetimeCriterion } from '../../../store/model';
 })
 export class DatetimeComponent {
     @Input() id: number;
+    @Input() operator: string;
     @Input() label: string;
     @Input() placeholder: string;
     @Input()
     set criterion(criterion: Criterion) {
         this.getDefault(criterion);
     }
-    @Output() add: EventEmitter<DatetimeCriterion> = new EventEmitter();
+    @Output() add: EventEmitter<FieldCriterion> = new EventEmitter();
+    @Output() delete: EventEmitter<number> = new EventEmitter();
 
     hours: string[] = [];
     minutes: string[] = [];
@@ -34,10 +36,18 @@ export class DatetimeComponent {
     }
 
     addCriterion() {
-        const fd = new DatetimeCriterion(this.id, this.datetime);
+        const month = ('0' + (this.datetime.getMonth() + 1)).slice(-2);
+        const day = ('0' + (this.datetime.getDate())).slice(-2);
+        const date = this.datetime.getFullYear() + '-' + month + '-' + day;
+        const time = this.hh.value + ':' + this.mm.value;
+        const fd = new FieldCriterion(this.id, this.operator, date + ' ' + time);
         this.add.emit(fd);
     }
 
+    deleteCriterion() {
+        this.delete.emit(this.id);
+    }
+
     getDefault(criterion: Criterion): void {
         if (!criterion) {
             this.date.setValue('');
@@ -48,14 +58,14 @@ export class DatetimeComponent {
             this.mm.enable();
             this.isValidFields = false;
         } else {
-            const c = criterion as DatetimeCriterion;
-            const hour = ('0' + (c.value.getHours())).slice(-2);
-            const minute = ('0' + (c.value.getMinutes())).slice(-2);
-            this.date.setValue(c.value);
+            const c = criterion as FieldCriterion;
+            const [d, t] = c.value.split(' ');
+            const [h, m] = t.split(':');
+            this.date.setValue(new Date(d));
             this.date.disable();
-            this.hh.setValue(hour);
+            this.hh.setValue(h);
             this.hh.disable();
-            this.mm.setValue(minute);
+            this.mm.setValue(m);
             this.mm.disable();
             this.isValidFields = true;
         }
diff --git a/src/app/search/components/criteria/search-type/field.component.html b/src/app/search/components/criteria/search-type/field.component.html
index 951c030c5fce0743299de23d2a09563f2aa1f9c1..e0d9d60ddeac191194605f5ea52eb71d5f2ffc2f 100644
--- a/src/app/search/components/criteria/search-type/field.component.html
+++ b/src/app/search/components/criteria/search-type/field.component.html
@@ -5,7 +5,11 @@
             autocomplete="off">
     </div>
     <div class="col-2 text-center">
-        <button class="btn btn-outline-success" *ngIf="!field.disabled" [hidden]="!field.value"
-            (click)="addCriterion()"><i class="fas fa-plus-circle"></i></button>
+        <button class="btn btn-outline-success" *ngIf="!field.disabled" [hidden]="!field.value" (click)="addCriterion()">
+            <i class="fas fa-plus fa-fw"></i>
+        </button>
+        <button class="btn btn-outline-danger" *ngIf="field.disabled" (click)="deleteCriterion()">
+            <i class="fa fa-times fa-fw"></i>
+        </button>
     </div>
 </div>
\ No newline at end of file
diff --git a/src/app/search/components/criteria/search-type/field.component.ts b/src/app/search/components/criteria/search-type/field.component.ts
index 6f3b8f9652e7dbe2e89d0808d59ad242988590f3..74bb66cf9309e83bfd7baa198fc7dbe19258810a 100644
--- a/src/app/search/components/criteria/search-type/field.component.ts
+++ b/src/app/search/components/criteria/search-type/field.component.ts
@@ -19,6 +19,7 @@ export class FieldComponent {
         this.getDefault(criterion);
     }
     @Output() add: EventEmitter<FieldCriterion> = new EventEmitter();
+    @Output() delete: EventEmitter<number> = new EventEmitter();
 
     field = new FormControl('');
 
@@ -27,6 +28,10 @@ export class FieldComponent {
         this.add.emit(fd);
     }
 
+    deleteCriterion() {
+        this.delete.emit(this.id);
+    }
+
     getDefault(criterion: Criterion): void {
         if (!criterion) {
             this.field.setValue('');
diff --git a/src/app/search/components/criteria/search-type/json.component.html b/src/app/search/components/criteria/search-type/json.component.html
index 3d7eb09fc2d78e1438fa80771086eba3adc2dec8..708c3a2c39ebc085fd798ec633ca135be1bff806 100644
--- a/src/app/search/components/criteria/search-type/json.component.html
+++ b/src/app/search/components/criteria/search-type/json.component.html
@@ -26,7 +26,10 @@
         <button class="btn btn-outline-success" *ngIf="!jsonForm.disabled"
             [hidden]="!jsonForm.value.path || !jsonForm.value.operator || !jsonForm.value.value"
             (click)="addCriterion()">
-            <i class="fas fa-plus-circle"></i>
+            <i class="fas fa-plus fa-fw"></i>
+        </button>
+        <button class="btn btn-outline-danger" *ngIf="jsonForm.disabled" (click)="deleteCriterion()">
+            <i class="fa fa-times fa-fw"></i>
         </button>
     </div>
 </div>
\ No newline at end of file
diff --git a/src/app/search/components/criteria/search-type/json.component.ts b/src/app/search/components/criteria/search-type/json.component.ts
index 46c48030fcac31e020e7a62c6267b22b7381c283..bad7a769213d88097bb3d15d46357dfeb1b5bcc1 100644
--- a/src/app/search/components/criteria/search-type/json.component.ts
+++ b/src/app/search/components/criteria/search-type/json.component.ts
@@ -16,6 +16,7 @@ export class JsonComponent {
         this.getDefault(criterion);
     }
     @Output() add: EventEmitter<JsonCriterion> = new EventEmitter();
+    @Output() delete: EventEmitter<number> = new EventEmitter();
 
     jsonForm = new FormGroup({
         path: new FormControl(),
@@ -28,6 +29,10 @@ export class JsonComponent {
         this.add.emit(js);
     }
 
+    deleteCriterion() {
+        this.delete.emit(this.id);
+    }
+
     getDefault(criterion: Criterion): void {
         if (!criterion) {
             this.jsonForm.reset();
diff --git a/src/app/search/components/criteria/search-type/radio.component.html b/src/app/search/components/criteria/search-type/radio.component.html
index ce891487027d2e35846006937ce46c6eda6cac5b..fa47b4c5db1560d9d1461ebd84c0719c75bd1e4f 100644
--- a/src/app/search/components/criteria/search-type/radio.component.html
+++ b/src/app/search/components/criteria/search-type/radio.component.html
@@ -8,7 +8,11 @@
         </div>
     </div>
     <div class="col-2 text-center">
-        <button class="btn btn-outline-success" *ngIf="!radio.disabled" [hidden]="!radio.value"
-            (click)="addCriterion()"><i class="fas fa-plus-circle"></i></button>
+        <button class="btn btn-outline-success" *ngIf="!radio.disabled" [hidden]="!radio.value" (click)="addCriterion()">
+            <i class="fas fa-plus fa-fw"></i>
+        </button>
+        <button class="btn btn-outline-danger" *ngIf="radio.disabled" (click)="deleteCriterion()">
+            <i class="fa fa-times fa-fw"></i>
+        </button>
     </div>
 </div>
\ No newline at end of file
diff --git a/src/app/search/components/criteria/search-type/radio.component.ts b/src/app/search/components/criteria/search-type/radio.component.ts
index 085156e4bb371373283348d06c1999b8e5be2558..0f41461a3489ffddad6b6ea53f2f3e6d2e828fed 100644
--- a/src/app/search/components/criteria/search-type/radio.component.ts
+++ b/src/app/search/components/criteria/search-type/radio.component.ts
@@ -19,6 +19,7 @@ export class RadioComponent {
         this.getDefault(criterion);
     }
     @Output() add: EventEmitter<FieldCriterion> = new EventEmitter();
+    @Output() delete: EventEmitter<number> = new EventEmitter();
 
     radio = new FormControl('');
 
@@ -28,6 +29,10 @@ export class RadioComponent {
         this.add.emit(cb);
     }
 
+    deleteCriterion() {
+        this.delete.emit(this.id);
+    }
+
     getDefault(criterion: Criterion): void {
         if (!criterion) {
             this.radio.setValue('');
diff --git a/src/app/search/components/criteria/search-type/select-multiple.component.html b/src/app/search/components/criteria/search-type/select-multiple.component.html
index a8912596ee5336a5902fca7c1217604e5878fbce..628fc486d4cd902bb0ead407d4e19ccc4f8e5ab2 100644
--- a/src/app/search/components/criteria/search-type/select-multiple.component.html
+++ b/src/app/search/components/criteria/search-type/select-multiple.component.html
@@ -6,7 +6,11 @@
         </ng-select>
     </div>
     <div class="col-2 text-center">
-        <button class="btn btn-outline-success" *ngIf="!ms.disabled" [hidden]="!ms.value" (click)="addCriterion()"><i
-                class="fas fa-plus-circle"></i></button>
+        <button class="btn btn-outline-success" *ngIf="!ms.disabled" [hidden]="!ms.value" (click)="addCriterion()">
+            <i class="fas fa-plus fa-fw"></i>
+        </button>
+        <button class="btn btn-outline-danger" *ngIf="ms.disabled" (click)="deleteCriterion()">
+            <i class="fa fa-times fa-fw"></i>
+        </button>
     </div>
 </div>
\ No newline at end of file
diff --git a/src/app/search/components/criteria/search-type/select-multiple.component.ts b/src/app/search/components/criteria/search-type/select-multiple.component.ts
index be9f8861825d7c9f2c40b641752bc500deb4c73d..2fbc10c86ed2d3830c268902d98c1ef2782fef3d 100644
--- a/src/app/search/components/criteria/search-type/select-multiple.component.ts
+++ b/src/app/search/components/criteria/search-type/select-multiple.component.ts
@@ -19,6 +19,7 @@ export class SelectMultipleComponent {
         this.getDefault(criterion);
     }
     @Output() add: EventEmitter<SelectMultipleCriterion> = new EventEmitter();
+    @Output() delete: EventEmitter<number> = new EventEmitter();
 
     ms = new FormControl();
 
@@ -28,6 +29,10 @@ export class SelectMultipleComponent {
         this.add.emit(ms);
     }
 
+    deleteCriterion() {
+        this.delete.emit(this.id);
+    }
+
     getDefault(criterion: Criterion): void {
         if (!criterion) {
             this.ms.reset();
diff --git a/src/app/search/components/criteria/search-type/select.component.html b/src/app/search/components/criteria/search-type/select.component.html
index 20f4f2c712355681e5201e8e4303b16e06090926..92a18580cb398a22cc7c04cefc92623475f0eabb 100644
--- a/src/app/search/components/criteria/search-type/select.component.html
+++ b/src/app/search/components/criteria/search-type/select.component.html
@@ -6,7 +6,11 @@
         </ng-select>
     </div>
     <div class="col-2 text-center">
-        <button class="btn btn-outline-success" *ngIf="!se.disabled" [hidden]="!se.value" (click)="addCriterion()"><i
-                class="fas fa-plus-circle"></i></button>
+        <button class="btn btn-outline-success" *ngIf="!se.disabled" [hidden]="!se.value" (click)="addCriterion()">
+            <i class="fas fa-plus fa-fw"></i>
+        </button>
+        <button class="btn btn-outline-danger" *ngIf="se.disabled" (click)="deleteCriterion()">
+            <i class="fa fa-times fa-fw"></i>
+        </button>
     </div>
 </div>
\ No newline at end of file
diff --git a/src/app/search/components/criteria/search-type/select.component.ts b/src/app/search/components/criteria/search-type/select.component.ts
index 3a9a8b303a78e63bd6f0256054bb3dc628e8ee94..d4ed6f90d78a9c47347da4613e607abfad5d756e 100644
--- a/src/app/search/components/criteria/search-type/select.component.ts
+++ b/src/app/search/components/criteria/search-type/select.component.ts
@@ -19,6 +19,7 @@ export class SelectComponent {
         this.getDefault(criterion);
     }
     @Output() add: EventEmitter<FieldCriterion> = new EventEmitter();
+    @Output() delete: EventEmitter<number> = new EventEmitter();
 
     se = new FormControl();
 
@@ -28,6 +29,10 @@ export class SelectComponent {
         this.add.emit(se);
     }
 
+    deleteCriterion() {
+        this.delete.emit(this.id);
+    }
+
     getDefault(criterion: Criterion): void {
         if (!criterion) {
             this.se.reset();
diff --git a/src/app/search/components/criteria/search-type/time.component.html b/src/app/search/components/criteria/search-type/time.component.html
index defd946d229bb2c5a43445238b2c437c6c728233..1680a89f4dd826eeb9393a8fbbd5b1872c3a866c 100644
--- a/src/app/search/components/criteria/search-type/time.component.html
+++ b/src/app/search/components/criteria/search-type/time.component.html
@@ -18,7 +18,10 @@
     <div class="col-2 text-center">
         <button class="btn btn-outline-success" *ngIf="!hh.disabled || !mm.disabled" [hidden]="!hh.value || !mm.value"
             (click)="addCriterion()">
-            <i class="fas fa-plus-circle"></i>
+            <i class="fas fa-plus fa-fw"></i>
+        </button>
+        <button class="btn btn-outline-danger" *ngIf="hh.disabled && mm.disabled" (click)="deleteCriterion()">
+            <i class="fa fa-times fa-fw"></i>
         </button>
     </div>
 </div>
\ No newline at end of file
diff --git a/src/app/search/components/criteria/search-type/time.component.ts b/src/app/search/components/criteria/search-type/time.component.ts
index 20b2309ea502be45f134074b68a5aef7d02e19f8..2852b909f9d96eab84eb43dcafece80e27876855 100644
--- a/src/app/search/components/criteria/search-type/time.component.ts
+++ b/src/app/search/components/criteria/search-type/time.component.ts
@@ -18,6 +18,7 @@ export class TimeComponent {
         this.getDefault(criterion);
     }
     @Output() add: EventEmitter<FieldCriterion> = new EventEmitter();
+    @Output() delete: EventEmitter<number> = new EventEmitter();
 
     public hours: string[] = [];
     public minutes: string[] = [];
@@ -35,6 +36,10 @@ export class TimeComponent {
         this.add.emit(time);
     }
 
+    deleteCriterion() {
+        this.delete.emit(this.id);
+    }
+
     getDefault(criterion: Criterion): void {
         if (!criterion) {
             this.hh.reset();
diff --git a/src/app/search/components/result/datatable.component.html b/src/app/search/components/result/datatable.component.html
index f5e70ca652969991fbaee89c8a0ced8474d0c528..defee3d60bc0e9d77628c915ff9331d8affb1b38 100644
--- a/src/app/search/components/result/datatable.component.html
+++ b/src/app/search/components/result/datatable.component.html
@@ -35,32 +35,26 @@
                                                 class="img-fluid">
                                         </button>
                                     </div>
-                                    <div *ngSwitchCase="'ext-link'">
+                                    <div *ngSwitchCase="'link'">
                                         <a [href]="getAttributeUriAction(attribute.name, datum[attribute.label])"
                                             target="_blank">
                                             {{ datum[attribute.name] }}</a>
                                     </div>
-                                    <div *ngSwitchCase="'int-link'">
-                                        <a routerLink="/detail/{{ datasetName }}/{{ datum[attribute.label] }}">
-                                            {{ datum[attribute.label] }}
-                                        </a>
-                                    </div>
-                                    <div *ngSwitchCase="'ext-btn'">
+                                    <div *ngSwitchCase="'btn'">
                                         <a [href]="getAttributeUriAction(attribute.name, datum[attribute.label])"
                                             target="_blank" class="btn btn-outline-primary btn-sm">
                                             {{ datum[attribute.label] }}</a>
                                     </div>
-                                    <div *ngSwitchCase="'int-btn'">
-                                        <a routerLink="/detail/{{ datasetName }}/{{ datum[attribute.label] }}"
-                                            class="btn btn-outline-primary btn-sm">
+                                    <div *ngSwitchCase="'detail-link'">
+                                        <a routerLink="/detail/{{ datasetName }}/{{ datum[attribute.label] }}">
                                             {{ datum[attribute.label] }}
                                         </a>
                                     </div>
-                                    <div *ngSwitchCase="'fancybox'">
-                                        <button class="btn btn-outline-primary btn-sm"
-                                            (click)="openModal('fancybox', attribute.name, datum[attribute.label])">
+                                    <div *ngSwitchCase="'detail-btn'">
+                                        <a routerLink="/detail/{{ datasetName }}/{{ datum[attribute.label] }}"
+                                            class="btn btn-outline-primary btn-sm">
                                             {{ datum[attribute.label] }}
-                                        </button>
+                                        </a>
                                     </div>
                                     <div *ngSwitchCase="'download'">
                                         <a [href]="getAttributeUriAction(attribute.name, datum[attribute.label])"
diff --git a/src/app/search/components/result/modal.component.html b/src/app/search/components/result/modal.component.html
index d0961b9c7e4ac46a4b2efab24889e94ad10f594a..38ff061ce861b7122f60a587ea64e201837a877d 100644
--- a/src/app/search/components/result/modal.component.html
+++ b/src/app/search/components/result/modal.component.html
@@ -14,16 +14,6 @@
                         <img [src]="data.srcImage" class="img-fluid">
                     </div>
                 </div>
-                <div *ngSwitchCase="'fancybox'">
-                    <div class="modal-body">
-                       <!--  <app-detail 
-                            [datasetName]="data.datasetName" 
-                            [objectSelected]="data.objectSelected" 
-                            [searchMeta]="data.searchMeta"
-                            [searchData]="data.searchData">
-                        </app-detail> -->
-                    </div>
-                </div>
                 <div *ngSwitchCase="'json'">
                     <div class="modal-body">
                         <ngx-json-viewer [json]="data.json"></ngx-json-viewer>
diff --git a/src/app/search/components/result/url-display.component.html b/src/app/search/components/result/url-display.component.html
index 3452a11b05ab7d49d6ae180b493628ed138a1638..138297bb16695cace967f7189109474cb6f2456f 100644
--- a/src/app/search/components/result/url-display.component.html
+++ b/src/app/search/components/result/url-display.component.html
@@ -15,7 +15,7 @@
                 </div>
                 <div class="col-2 align-self-center text-center">
                     <button class="btn btn-sm btn-outline-primary" (click)="copyToClipboard()" title="Copy url to clipboard">
-                        <i class="far fa-copy"></i>
+                        COPY
                     </button>
                 </div>
             </div>
diff --git a/src/app/search/components/summary.component.html b/src/app/search/components/summary.component.html
index d2f8d6931e208645c639bb43f83d23f9b1b19560..947a97b8973e597760dd1c71bbe8b0c0027b3f4f 100644
--- a/src/app/search/components/summary.component.html
+++ b/src/app/search/components/summary.component.html
@@ -13,8 +13,6 @@
     </p>
     <ul *ngIf="criteriaList.length > 0" class="pl-5 list-unstyled">
         <li *ngFor="let criterion of criteriaList">
-            <span *ngIf="currentStep === 'criteria'" (click)="delCriterion(criterion.id)" class="pr-2 text-danger"><i
-                    class="fas fa-times"></i></span>
             {{getAttribute(criterion.id).form_label}} {{criterion.printCriterion()}}
         </li>
     </ul>
diff --git a/src/app/search/components/summary.component.ts b/src/app/search/components/summary.component.ts
index a035bcde6c77df5eb41a1eaadff33dd10da75e08..a599b85761c12f836efc5af64951534eb3bf8b7d 100644
--- a/src/app/search/components/summary.component.ts
+++ b/src/app/search/components/summary.component.ts
@@ -17,7 +17,6 @@ export class SummaryComponent {
     @Input() datasetAttributeList: Attribute[];
     @Input() outputList: number[];
     @Input() queryParams: any;
-    @Output() deleteCriterion: EventEmitter<number> = new EventEmitter();
 
     getDataset(): Dataset {
         return this.datasetList.find(dataset => dataset.name === this.datasetName);
@@ -26,8 +25,4 @@ export class SummaryComponent {
     getAttribute(id: number): Attribute {
         return this.datasetAttributeList.find(attribute => attribute.id === id);
     }
-
-    delCriterion(id: number): void {
-        this.deleteCriterion.emit(id);
-    }
 }
diff --git a/src/app/search/containers/criteria.component.html b/src/app/search/containers/criteria.component.html
index 3baf7c2def913e28c6df834e4ae436a6b3440826..a19f6fd386d99bb2c12fa8c4e64a07131da1a8e7 100644
--- a/src/app/search/containers/criteria.component.html
+++ b/src/app/search/containers/criteria.component.html
@@ -10,7 +10,8 @@
             [criteriaFamilyList]="criteriaFamilyList | async"
             [datasetAttributeList]="datasetAttributeList | async"
             [criteriaList]="criteriaList | async"
-            (addCriterion)="addCriterion($event)">
+            (addCriterion)="addCriterion($event)"
+            (deleteCriterion)="deleteCriterion($event)">
         </app-criteria-tabs>
     </div>
     <div class="col-12 col-md-4 pt-2">
@@ -21,8 +22,7 @@
             [criteriaList]="criteriaList | async"
             [datasetAttributeList]="datasetAttributeList | async"
             [outputList]="outputList | async"
-            [queryParams]="queryParams | async"
-            (deleteCriterion)="deleteCriterion($event)">
+            [queryParams]="queryParams | async">
         </app-summary>
     </div>
 </div>
diff --git a/src/app/search/containers/dataset.component.html b/src/app/search/containers/dataset.component.html
index a4cf31c0f58ecde954e39f8040e8f5c024c26124..2d3161c1bf1acb3105b9210d70bdb4fbdd047c73 100644
--- a/src/app/search/containers/dataset.component.html
+++ b/src/app/search/containers/dataset.component.html
@@ -13,7 +13,11 @@
         </app-dataset-tabs>
     </div>
     <div class="col-12 col-md-4 pt-2">
-        <app-summary *ngIf="(datasetName | async) as dname"
+        <div *ngIf="attributeSearchMetaIsLoading | async" class="row justify-content-center mt-5">
+            <i class="fas fa-circle-notch fa-spin fa-3x"></i>
+            <span class="sr-only">Loading...</span>
+        </div>
+        <app-summary *ngIf="attributeSearchMetaIsLoaded | async"
             [datasetName]="datasetName | async"
             [currentStep]="currentStep | async"
             [datasetList]="datasetList | async"
diff --git a/src/app/search/containers/dataset.component.ts b/src/app/search/containers/dataset.component.ts
index 55a2dfdb5fedbe4a3946bd73d8ccd89b45f46c39..85e448d03f94f970b2c2705646b7fff8d2685891 100644
--- a/src/app/search/containers/dataset.component.ts
+++ b/src/app/search/containers/dataset.component.ts
@@ -25,6 +25,8 @@ interface StoreState {
 export class DatasetComponent implements OnInit {
     public datasetSearchMetaIsLoading: Observable<boolean>;
     public datasetSearchMetaIsLoaded: Observable<boolean>;
+    public attributeSearchMetaIsLoading: Observable<boolean>;
+    public attributeSearchMetaIsLoaded: Observable<boolean>;
     public projectList: Observable<Project[]>;
     public datasetList: Observable<Dataset[]>;
     public datasetFamilyList: Observable<Family[]>;
@@ -38,6 +40,8 @@ export class DatasetComponent implements OnInit {
     constructor(private store: Store<StoreState>) {
         this.datasetSearchMetaIsLoading = store.select(metamodelSelector.getDatasetSearchMetaIsLoading);
         this.datasetSearchMetaIsLoaded = store.select(metamodelSelector.getDatasetSearchMetaIsLoaded);
+        this.attributeSearchMetaIsLoading = store.select(metamodelSelector.getAttributeSearchMetaIsLoading);
+        this.attributeSearchMetaIsLoaded = store.select(metamodelSelector.getAttributeSearchMetaIsLoaded);
         this.projectList = store.select(metamodelSelector.getProjectList);
         this.datasetList = store.select(metamodelSelector.getDatasetList);
         this.datasetFamilyList = store.select(metamodelSelector.getDatasetFamilyList);
diff --git a/src/app/search/containers/result.component.ts b/src/app/search/containers/result.component.ts
index 3b8acc7a01785ad8f0ef8cf3609291d4972d6f4f..9c17d53b1f8cce696fa32fb3963ed3bf508d3038 100644
--- a/src/app/search/containers/result.component.ts
+++ b/src/app/search/containers/result.component.ts
@@ -65,7 +65,7 @@ export class ResultComponent implements OnInit {
     }
 
     getSearchMeta(): void {
-        // this.store.dispatch(new searchActions.RetrieveMetaAction());
+        this.store.dispatch(new searchActions.RetrieveMetaAction());
     }
 
     getSearchData(page: number): void {
diff --git a/src/app/search/store/model/between-date-criterion.model.ts b/src/app/search/store/model/between-date-criterion.model.ts
deleted file mode 100644
index 6f6fc925a382838ba58241e03e4d1f4963a32afa..0000000000000000000000000000000000000000
--- a/src/app/search/store/model/between-date-criterion.model.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { Criterion } from './criterion.model';
-
-export class BetweenDateCriterion extends Criterion {
-    min: string;
-    max: string;
-
-    constructor(id: number, min: string, max: string) {
-        super(id);
-        this.min = min;
-        this.max = max;
-    }
-
-    printCriterion(): string {
-        return '∈ [' + this.min + ';' + this.max + ']';
-    }
-
-    getCriterionStr() {
-        return this.id + '::bd::' + this.min + '|' + this.max;
-    }
-}
diff --git a/src/app/search/store/model/checkbox-criterion.model.ts b/src/app/search/store/model/checkbox-criterion.model.ts
deleted file mode 100644
index e5098f9340f726b047bf5b066f8f5a57d31ebc94..0000000000000000000000000000000000000000
--- a/src/app/search/store/model/checkbox-criterion.model.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { Criterion } from './criterion.model';
-import { Option } from '../../../metamodel/model/option.model';
-
-export class CheckboxCriterion extends Criterion {
-    values: Option[];
-    operator: string;
-
-    constructor(id: number, operator: string, values: Option[]) {
-        super(id);
-        this.operator = operator;
-        this.values = values;
-    }
-
-    printCriterion(): string {
-        return '[' + this.values.map(option => option.label).join(',') + ']';
-    }
-
-    getCriterionStr(): string {
-        if (this.operator === 'eq') {
-            return this.id + '::in::' + this.values.map(option => option.value).join('|');
-        } else {
-            return this.values.map(option => this.id + '::' + this.operator + '::' + option.value).join(';');
-        }
-    }
-}
diff --git a/src/app/search/store/model/datetime-criterion.model.ts b/src/app/search/store/model/datetime-criterion.model.ts
deleted file mode 100644
index 3f38736527dce10d01355ceaf5de401c99e1fed5..0000000000000000000000000000000000000000
--- a/src/app/search/store/model/datetime-criterion.model.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import { Criterion } from './criterion.model';
-
-export class DatetimeCriterion extends Criterion {
-    value: Date;
-
-    constructor(id: number, value: Date) {
-        super(id);
-        this.value = value;
-    }
-
-    printCriterion(): string {
-        const month = ('0' + (this.value.getMonth() + 1)).slice(-2);
-        const day = ('0' + (this.value.getDate())).slice(-2);
-        const hour = ('0' + (this.value.getHours())).slice(-2);
-        const minute = ('0' + (this.value.getMinutes())).slice(-2);
-        const date = this.value.getFullYear() + '-' + month + '-' + day;
-        const time = hour + ':' + minute;
-        return date + ' ' + time;
-    }
-
-    getCriterionStr(): string {
-        const month = ('0' + (this.value.getMonth() + 1)).slice(-2);
-        const day = ('0' + (this.value.getDate())).slice(-2);
-        const hour = ('0' + (this.value.getHours())).slice(-2);
-        const minute = ('0' + (this.value.getMinutes())).slice(-2);
-        const date = this.value.getFullYear() + '-' + month + '-' + day;
-        const time = hour + ':' + minute;
-        return this.id + '::eq::' + date + '.' + time;
-    }
-}
diff --git a/src/app/search/store/model/index.ts b/src/app/search/store/model/index.ts
index 3bbc1ece3f61237ae89bbf53b058ea0c25fdc7d3..4141ea63d351d69b952546500af56a04175ed937 100644
--- a/src/app/search/store/model/index.ts
+++ b/src/app/search/store/model/index.ts
@@ -1,10 +1,7 @@
 export * from './criterion.model';
 export * from './between-criterion.model';
-export * from './between-date-criterion.model';
 export * from './field-criterion.model';
-export * from './checkbox-criterion.model';
 export * from './select-multiple-criterion.model';
 export * from './search-meta.model';
-export * from './datetime-criterion.model';
 export * from './search-query-params.model';
 export * from './json-criterion.model';
diff --git a/src/app/search/store/model/select-multiple-criterion.model.ts b/src/app/search/store/model/select-multiple-criterion.model.ts
index 1d4389519d44f2213d5d091d071839ee8c5b738e..4075f7faf22b5a4a9091c2e64b5ed7c1ed295f3f 100644
--- a/src/app/search/store/model/select-multiple-criterion.model.ts
+++ b/src/app/search/store/model/select-multiple-criterion.model.ts
@@ -16,10 +16,6 @@ export class SelectMultipleCriterion extends Criterion {
     }
 
     getCriterionStr(): string {
-        if (this.operator === 'eq') {
-            return this.id + '::in::' + this.options.map(option => option.value).join('|');
-        } else {
-            return this.options.map(option => this.id + '::' + this.operator + '::' + option.value).join(';');
-        }
+        return this.id + '::in::' + this.options.map(option => option.value).join('|');
     }
 }
diff --git a/src/app/search/store/search.effects.ts b/src/app/search/store/search.effects.ts
index c7db3cd574b824367a5c488f6a556ba392be47f5..dec6b203c60bc5f100d6aecc590515a9da683d52 100644
--- a/src/app/search/store/search.effects.ts
+++ b/src/app/search/store/search.effects.ts
@@ -12,7 +12,7 @@ import * as fromRouter from '@ngrx/router-store';
 import * as fromSearch from './search.reducer';
 import * as utils from '../../shared/utils';
 import { SearchService } from './search.service';
-import { BetweenCriterion, BetweenDateCriterion, SearchMeta, FieldCriterion, SelectMultipleCriterion, JsonCriterion } from './model';
+import { BetweenCriterion, SearchMeta, FieldCriterion, SelectMultipleCriterion, JsonCriterion } from './model';
 
 @Injectable()
 export class SearchEffects {
@@ -84,24 +84,24 @@ export class SearchEffects {
                     const params = c.split('::');
                     const attribute = loadAttributeSearchMetaSuccessAction.payload.find(a => a.id === parseInt(params[0], 10));
                     switch (attribute.search_type) {
-                        case 'fd':
-                        case 'se':
-                        case 'dl':
-                        case 'rd':
-                        case 'dt':
+                        case 'field':
+                        case 'select':
+                        case 'datalist':
+                        case 'radio':
+                        case 'date':
+                        case 'date-time':
+                        case 'time':
                             return new FieldCriterion(parseInt(params[0], 10), params[1], params[2]);
-                        case 'bw':
+                        case 'between':
+                        case 'between-date':
                             const bwValues = params[2].split('|');
                             return new BetweenCriterion(parseInt(params[0], 10), bwValues[0], bwValues[1]);
-                        case 'bd':
-                            const bwdValues = params[2].split('|');
-                            return new BetweenDateCriterion(parseInt(params[0], 10), bwdValues[0], bwdValues[1]);
-                        case 'ms':
-                        case 'cb':
+                        case 'select-multiple':
+                        case 'checkbox':
                             const msValues = params[2].split('|');
                             const options = attribute.options.filter(option => msValues.includes(option.value));
                             return new SelectMultipleCriterion(parseInt(params[0], 10), params[1], options);
-                        case 'js':
+                        case 'json':
                             const [path, operator, value] = params[2].split('|');
                             return new JsonCriterion(parseInt(params[0], 10), path, operator, value);
 
@@ -113,8 +113,7 @@ export class SearchEffects {
 
             return [
                 new searchActions.UpdateOutputListAction(defaultOutputList),
-                new searchActions.UpdateCriteriaListAction(defaultCriteriaList),
-                new searchActions.RetrieveMetaAction()
+                new searchActions.UpdateCriteriaListAction(defaultCriteriaList)
             ];
         })
     );