diff --git a/package.json b/package.json
index 27ce6dd707f07813be06cbb59d406d96124c9fae..b9bcf5d9a97ebf550cca4a8d7e0a25b7ec0d5887 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "webapp",
-  "version": "2.6.12",
+  "version": "2.6.13",
   "license": "GNU Affero General Public License v3.0",
   "scripts": {
     "ng": "ng",
diff --git a/src/app/dataset-detail/components/dataset-table/dataset-table.component.html b/src/app/dataset-detail/components/dataset-table/dataset-table.component.html
index 54a66f3f429a84c5c138488d33d1c82004761bf1..f316dfa2c05672e75614ef1652d4873868c81719 100644
--- a/src/app/dataset-detail/components/dataset-table/dataset-table.component.html
+++ b/src/app/dataset-detail/components/dataset-table/dataset-table.component.html
@@ -6,10 +6,10 @@
     (keydown.enter)="sortBy(key)" [tabindex]="isDisplayed ? 0 : -1" [attr.role]="'columnheader'">
     <span class="sort-icons">
       <span class="icon">
-        <i class="fas fa-sort-up" [ngClass]="{'icon-red': sortValue === key && sortOrder === 'desc'}"></i>
+        <i class="fas fa-sort-up" [ngClass]="{'icon-red': sortValue.includes(key) && sortOrder === 'desc'}"></i>
       </span>
       <span class="icon">
-        <i class="fas fa-sort-down" [ngClass]="{'icon-red': sortValue === key && sortOrder === 'asc'}"></i>
+        <i class="fas fa-sort-down" [ngClass]="{'icon-red': sortValue.includes(key) && sortOrder === 'asc'}"></i>
       </span>
     </span>
     <span class="column-title" [ngClass]="{'active': sortValue === key}">{{ key }}</span>
diff --git a/src/app/dataset-detail/components/dataset-table/dataset-table.component.ts b/src/app/dataset-detail/components/dataset-table/dataset-table.component.ts
index 9fb3bd1c2b81656db665885270d9cd5bf8713cf9..c0580dfefb55ec7db9840d0ccf00dd415241fd2b 100644
--- a/src/app/dataset-detail/components/dataset-table/dataset-table.component.ts
+++ b/src/app/dataset-detail/components/dataset-table/dataset-table.component.ts
@@ -96,8 +96,9 @@ export class DatasetTableComponent implements OnInit, OnDestroy {
   }
 
   sortBy(key: string) {
+    const keyType = this._datasetDetailService.getKeyType(key);
     // Set the new sort value in the service
-    this._datasetDetailService.sortBy(key);
+    this._datasetDetailService.sortBy(keyType);
     //  Retrieve date sorted with the new value
     this._datasetDetailService.retrieveDatasetData().subscribe(() => {
       this.tableWidthModified.emit(true);
@@ -124,8 +125,9 @@ export class DatasetTableComponent implements OnInit, OnDestroy {
     return this._datasetDetailService.datasetData;
   }
 
-  get sortValue() {
-    return this._datasetDetailService.sortValue;
+  get sortValue(): String {
+    var sortValue: String = this._datasetDetailService.sortValue;
+    return sortValue ? sortValue:'' ;
   }
 
   get sortOrder() {
diff --git a/src/app/dataset-detail/services/dataset-detail.service.ts b/src/app/dataset-detail/services/dataset-detail.service.ts
index 06d828f5f9f052da3101b10227b254a3467ae5f4..684d5d713c14adf3b763d3a71988aa5ebb0a92a9 100644
--- a/src/app/dataset-detail/services/dataset-detail.service.ts
+++ b/src/app/dataset-detail/services/dataset-detail.service.ts
@@ -272,11 +272,22 @@ export class DatasetDetailService {
     }
   }
 
+  getKeyType(key: string) {
+    return  key+'_'+ eval(`this._dataset.fields.types.${key}`);
+  }
+
   orderProperties(data: any, orderedProperties: string[]) {
     const newDataPropertiesOrder = {};
     orderedProperties.forEach((field) => {
-      newDataPropertiesOrder[field] = data.properties[field] ? data.properties[field] : '';
+      // Adds type to field. First time, the field with type is used, and attributed to field without type
+      // force _json detection since the fieldtype is not listed. (used for complex data)
+      var fieldtype = field + '_' + eval(`this._dataset.fields.types.${field}`);
+      newDataPropertiesOrder[field] = data.properties[fieldtype] ? data.properties[fieldtype] :
+          data.properties[field] ? data.properties[field] : data.properties[`${field}_json`] ?
+          data.properties[`${field}_json`] : '';
     });
+
+
     data.properties = newDataPropertiesOrder;
   }
 
diff --git a/src/app/elasticsearch/services/elasticsearch.service.ts b/src/app/elasticsearch/services/elasticsearch.service.ts
index 3445f0ac8d3d1250cff23b0b1ecbe6f695466efb..62e429c3b47074225407b9d59f87b87d07a31aeb 100644
--- a/src/app/elasticsearch/services/elasticsearch.service.ts
+++ b/src/app/elasticsearch/services/elasticsearch.service.ts
@@ -135,7 +135,10 @@ export class ElasticsearchService {
     if (options.sortOptions.value !== null) {
       const sort = {};
       const key = `data-fr.properties.${options.sortOptions.value}.sort`;
-      sort[key] = options.sortOptions.order;
+      sort[key] = {
+        order: options.sortOptions.order,
+        unmapped_type: 'string'
+      };
       body['sort'] = [sort];
     }
 
diff --git a/src/app/shared/models/data.model.ts b/src/app/shared/models/data.model.ts
index f2342e4f8960a0773c56b27292689d13be5bf481..a6a2b9fb32f30ebac980413e5348e6187676efbe 100644
--- a/src/app/shared/models/data.model.ts
+++ b/src/app/shared/models/data.model.ts
@@ -20,7 +20,7 @@ export class Data implements IData {
       this.geometry = data.geometry;
       this.type = data.type;
       this.properties = data.properties;
-      this.id = data.properties.gid;
+      this.id = data.properties.gid ? data.properties.gid:data.properties.gid_int;
     }
   }
 }