diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 01fe96729c27077740037e81f7750cf41e311307..5c12447eb35cec7c707b32df52e42edbf7d63e5c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -17,7 +17,7 @@ build_development:
     - build
   only:
     - development
-    - fusion-table-map-universe
+    - refacto
   script:
     - export TAG=dev
     - export NGINX_PORT=8081
@@ -46,7 +46,7 @@ deploy_development:
   stage: deploy
   only:
     - development
-    - fusion-table-map-universe
+    - refacto
   script:
     - export TAG=dev
     - export NGINX_PORT=8081
diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index 7c4461b1d1d94550fd78f733077af6285bd72bb9..d818dfc9494e09f608ec2fff6f57a64167c1b34a 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -1,12 +1,8 @@
 import { NgModule } from '@angular/core';
-import { Routes, RouterModule, PreloadAllModules } from '@angular/router';
+import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
 import { AppRoutes } from './routes';
 
 export const routes: Routes = [
-  // {
-  //   path: AppRoutes.research.uri,
-  //   loadChildren: './geosource/geosource.module#GeosourceModule',
-  // },
   {
     path: '**',
     redirectTo: AppRoutes.page404.uri,
diff --git a/src/app/app.routing.spec.ts b/src/app/app.routing.spec.ts
deleted file mode 100644
index af5765e1ac58aa6e00486bb722de4c86394a4c45..0000000000000000000000000000000000000000
--- a/src/app/app.routing.spec.ts
+++ /dev/null
@@ -1,151 +0,0 @@
-// import { TestBed, async } from '@angular/core/testing';
-// import { Router, Routes } from '@angular/router';
-// import { RouterTestingModule } from '@angular/router/testing';
-// import { AppComponent } from './app.component';
-// import { FormsModule } from '@angular/forms';
-
-// // importing routes from the different routing files
-// import { routes as AppRoutes } from './app-routing.module';
-// import { routes as GeosourceRoutes } from './geosource/geosource-routing.module';
-// import { routes as CoreRoutes } from './core/core-routing.module';
-// import { routes as EditorialisationRoutes } from './editorialisation/editorialisation-routing.module';
-
-// import { AppRoutes as RouteNames } from './routes';
-
-// // importing components
-// import { CoreComponents } from './core/components';
-// import { GeosourceComponents } from './geosource/components';
-// import { EditorialisationComponents } from './editorialisation/components';
-// import { SharedModule } from './shared/shared.module';
-// import { EditorialisationService, EditorialisationServices } from './editorialisation/services';
-// import { HttpClientModule } from '@angular/common/http';
-// import { GeosourceServices } from './geosource/services';
-// import { PostDetailResolver, PostsListResolver, PostVideoResolver } from './editorialisation/resolvers';
-// import { EditorialisationServiceMock } from './editorialisation/services/editorialisation.service.mock';
-// import { PageResolver } from './editorialisation/resolvers/page.resolver';
-
-// describe('App routing', () => {
-//   const routeNames = RouteNames;
-//   let router: Router;
-//   const routes: Routes = [
-//     ...AppRoutes,
-//     ...GeosourceRoutes,
-//     ...CoreRoutes,
-//     ...EditorialisationRoutes,
-//   ];
-
-//   beforeEach(async(() => {
-//     TestBed.configureTestingModule({
-//       imports: [
-//         FormsModule,
-//         SharedModule,
-//         HttpClientModule,
-//         RouterTestingModule.withRoutes(routes),
-//       ],
-//       declarations: [
-//         AppComponent,
-//         ...CoreComponents,
-//         ...GeosourceComponents,
-//         ...EditorialisationComponents,
-//       ],
-//       providers: [
-//         {
-//           provide: EditorialisationService,
-//           useValue: EditorialisationServiceMock,
-//         },
-//         {
-//           provide: PageResolver,
-//           useValue: { resolve() { } },
-//         },
-//         {
-//           provide: PostDetailResolver,
-//           useValue: { resolve() { } },
-//         },
-//         {
-//           provide: PostsListResolver,
-//           useValue: { resolve() { } },
-//         },
-//         {
-//           provide: PostVideoResolver,
-//           useValue: { resolve() { } },
-//         },
-//         ...GeosourceServices,
-//       ],
-//     }).compileComponents();
-//   }));
-
-//   beforeEach(() => {
-//     router = TestBed.get(Router);
-//     router.initialNavigation();
-//   });
-
-//   // ********* From geosource module ********* //
-
-//   it('navigate to "/recherche" redirects you to /recherche/datasets', (done) => {
-//     router.navigateByUrl('/' + routeNames.research).then(() => {
-//       expect(router.routerState.snapshot.url).toBe('/' + routeNames.research + '/' + routeNames.datasets);
-//       done();
-//     });
-//   });
-
-//   it('navigate to "/recherche/datasets" takes you to /datasets', (done) => {
-//     router.navigateByUrl('/' + routeNames.research + '/' + routeNames.datasets).then(() => {
-//       expect(router.routerState.snapshot.url).toBe('/' + routeNames.research + '/' + routeNames.datasets);
-//       done();
-//     });
-//   });
-
-//   it('navigate to "/recherche/datasets/abcdef" takes you to /recherche/datasets/abcdef', (done) => {
-//     router.navigateByUrl('/' + routeNames.research + '/' + routeNames.datasets + '/abcdef').then(() => {
-//       expect(router.routerState.snapshot.url).toBe(
-//         '/' + routeNames.research + '/' + routeNames.datasets + '/abcdef/' + routeNames.info);
-//       done();
-//     });
-//   });
-
-//   // ********* From core module ********* //
-
-//   it('navigate to "" redirects you to /accueil', (done) => {
-//     router.navigateByUrl('/').then(() => {
-//       expect(router.routerState.snapshot.url).toBe('/' + routeNames.home);
-//       done();
-//     });
-//   });
-
-//   // ********* From editorialisation module ********* //
-
-//   it('navigate to "/accueil" takes you to /accueil', (done) => {
-//     router.navigateByUrl('/' + routeNames.home).then(() => {
-//       expect(router.routerState.snapshot.url).toBe('/' + routeNames.home);
-//       done();
-//     });
-//   });
-
-//   it('navigate to "/demarche" takes you to /demarche', (done) => {
-//     router.navigateByUrl('/' + routeNames.approach).then(() => {
-//       expect(router.routerState.snapshot.url).toBe('/' + routeNames.approach);
-//       done();
-//     });
-//   });
-
-//   it('navigate to "/accessibilite" takes you to /accessibilite', (done) => {
-//     router.navigateByUrl('/' + routeNames.accessibility).then(() => {
-//       expect(router.routerState.snapshot.url).toBe('/' + routeNames.accessibility);
-//       done();
-//     });
-//   });
-
-//   it('navigate to "/plan-du-site" takes you to /plan-du-site', (done) => {
-//     router.navigateByUrl('/' + routeNames.siteMap).then(() => {
-//       expect(router.routerState.snapshot.url).toBe('/' + routeNames.siteMap);
-//       done();
-//     });
-//   });
-
-//   it('navigate to "/mentions-legales" takes you to /mentions-legales', (done) => {
-//     router.navigateByUrl('/' + routeNames.legalNotices).then(() => {
-//       expect(router.routerState.snapshot.url).toBe('/' + routeNames.legalNotices);
-//       done();
-//     });
-//   });
-// });
diff --git a/src/app/core/components/main/header/header.component.ts b/src/app/core/components/main/header/header.component.ts
index aadc9987a2771645fa0f2c5c9ea0a841d410d515..8793e17ac7f7025abe810503c266fad2a4133d70 100644
--- a/src/app/core/components/main/header/header.component.ts
+++ b/src/app/core/components/main/header/header.component.ts
@@ -1,10 +1,9 @@
 import { Component, OnInit } from '@angular/core';
+import { NavigationEnd, Router } from '@angular/router';
+import { Angulartics2Piwik } from 'angulartics2/piwik';
 import { AppRoutes } from '../../../../routes';
-import { DatasetResearchService } from '../../../../geosource/services';
-import { Router, NavigationEnd } from '@angular/router';
 import { UserService } from '../../../../user/services';
 import { AppStateService } from '../../../services';
-import { Angulartics2Piwik } from 'angulartics2/piwik';
 
 @Component({
   selector: 'app-header',
@@ -20,7 +19,6 @@ export class HeaderComponent implements OnInit {
   AppRoutes = AppRoutes;
 
   constructor(
-    private _datasetResearchService: DatasetResearchService,
     private _router: Router,
     private _userService: UserService,
     private _appStateService: AppStateService,
@@ -28,13 +26,6 @@ export class HeaderComponent implements OnInit {
   ) { }
 
   ngOnInit() {
-    this._datasetResearchService.searchChange$.subscribe(() => {
-      // Redirect to results page if this is not the current page
-      if (this._router.url.split('/').pop() !== AppRoutes.research.uri) {
-        this._router.navigate(['/', AppRoutes.research.uri]);
-      }
-    });
-
     this._router.events.subscribe((event) => {
 
       if (event instanceof NavigationEnd) {
diff --git a/src/app/core/components/main/main.component.ts b/src/app/core/components/main/main.component.ts
index 4b4281a025ee4be63aeedf3e00e1c5909dc86017..5a0371556e702a5df1b79e8412810674c70438a9 100644
--- a/src/app/core/components/main/main.component.ts
+++ b/src/app/core/components/main/main.component.ts
@@ -1,8 +1,8 @@
-import { Component, OnInit, OnDestroy } from '@angular/core';
-import { Router, NavigationEnd } from '@angular/router';
-import { AppRoutes } from '../../../routes';
-import { EmailService, AppStateService } from '../../services';
+import { Component, OnDestroy, OnInit } from '@angular/core';
+import { NavigationEnd, Router } from '@angular/router';
 import { Subscription } from 'rxjs';
+import { AppRoutes } from '../../../routes';
+import { AppStateService } from '../../services';
 
 @Component({
   selector: 'app-main',
diff --git a/src/app/core/components/main/side-menu/side-menu.component.html b/src/app/core/components/main/side-menu/side-menu.component.html
index a6758b4053bbabd7ed35f5924e5c089e228f027a..01b343cef6baef2c7a7d942d6d6d9ffbb2e82f03 100644
--- a/src/app/core/components/main/side-menu/side-menu.component.html
+++ b/src/app/core/components/main/side-menu/side-menu.component.html
@@ -20,7 +20,7 @@
       </a>
     </li>
     <li>
-      <a [routerLink]="['/', AppRoutes.research.uri]" routerLinkActive="active-link" [tabIndex]="isOpened ? 0 : -1">
+      <a [routerLink]="['/', AppRoutes.datasets.uri]" routerLinkActive="active-link" [tabIndex]="isOpened ? 0 : -1">
         <div class="icon-item">
           <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 23 23">
             <path class="main" fill-rule="evenodd"
@@ -31,8 +31,7 @@
       </a>
     </li>
     <li *ngIf="APP_CONFIG.theFunctionalitiesInterruptor.partners">
-      <a [routerLink]="['/', AppRoutes.partners.uri]" routerLinkActive="active-link"
-        [tabIndex]="isOpened ? 0 : -1">
+      <a [routerLink]="['/', AppRoutes.partners.uri]" routerLinkActive="active-link" [tabIndex]="isOpened ? 0 : -1">
         <div class="icon-item">
           <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 23 23">
             <g id="picto_x5F_acteur">
diff --git a/src/app/core/components/main/side-menu/side-menu.component.ts b/src/app/core/components/main/side-menu/side-menu.component.ts
index 5e95051f8c11c10585d60ad1d659c55669219d29..2a5c28c66f701c2e0a676106118668919e361e50 100644
--- a/src/app/core/components/main/side-menu/side-menu.component.ts
+++ b/src/app/core/components/main/side-menu/side-menu.component.ts
@@ -1,11 +1,11 @@
-import { Component, OnInit, Input, EventEmitter, Output, OnDestroy } from '@angular/core';
-import { AppRoutes } from '../../../../routes';
-import { Router, NavigationEnd, ActivatedRoute, NavigationStart } from '@angular/router';
+import { Component, Input, OnDestroy, OnInit } from '@angular/core';
+import { NavigationEnd, NavigationStart, Router } from '@angular/router';
+import { Subscription } from 'rxjs';
 import { environment } from '../../../../../environments/environment';
+import { ElasticsearchService } from '../../../../elasticsearch/services/elasticsearch.service';
+import { AppRoutes } from '../../../../routes';
 import { UserService } from '../../../../user/services';
-import { ElasticsearchService } from '../../../../geosource/services';
 import { AppStateService } from '../../../services';
-import { Subscription } from 'rxjs';
 import { APP_CONFIG } from '../../../services/app-config.service';
 
 @Component({
diff --git a/src/app/core/core-routing.module.ts b/src/app/core/core-routing.module.ts
index 8d7648c4b16178335980c085a81cd7b8ca26e031..7374399aad47ecc2211aae684f55a4be7b146e89 100644
--- a/src/app/core/core-routing.module.ts
+++ b/src/app/core/core-routing.module.ts
@@ -1,5 +1,5 @@
 import { NgModule } from '@angular/core';
-import { Routes, RouterModule } from '@angular/router';
+import { RouterModule, Routes } from '@angular/router';
 import { AppRoutes } from '../routes';
 import { ContactComponent } from './components';
 import { PageNotFoundComponent } from './components/page-not-found/page-not-found.component';
@@ -28,6 +28,6 @@ export const routes: Routes = [
 
 @NgModule({
   imports: [RouterModule.forChild(routes)],
-  exports: [RouterModule]
+  exports: [RouterModule],
 })
 export class CoreRoutingModule { }
diff --git a/src/app/core/core.module.ts b/src/app/core/core.module.ts
index 5fd7cc818ed17db1769051e3794c5ca093d9faa5..a717641cf6623edd9dda1348e5b839b6b8c324d6 100644
--- a/src/app/core/core.module.ts
+++ b/src/app/core/core.module.ts
@@ -1,17 +1,17 @@
-import { NgModule, ErrorHandler } from '@angular/core';
 import { CommonModule } from '@angular/common';
-
-import { CoreRoutingModule } from './core-routing.module';
-import { CoreComponents, MainComponent, FeedbackComponent } from './components';
+import { HTTP_INTERCEPTORS } from '@angular/common/http';
+import { ErrorHandler, NgModule } from '@angular/core';
+import { FormsModule, ReactiveFormsModule } from '@angular/forms';
+import { CookieService } from 'ngx-cookie-service';
+import { DatasetsModule } from '../datasets/datasets.module';
 import { SharedModule } from '../shared/shared.module';
+import { CoreComponents, MainComponent } from './components';
+import { CloseMenuDirective } from './components/main/close-menu-directive';
+import { CoreRoutingModule } from './core-routing.module';
 import { ErrorsHandler } from './handlers/errors-handler';
 import { HttpErrorResponseInterceptor } from './interceptors/http-error-response-interceptor';
-import { HTTP_INTERCEPTORS } from '@angular/common/http';
 import { CoreServices } from './services';
-import { ReactiveFormsModule, FormsModule } from '@angular/forms';
-import { GeosourceModule } from '../geosource/geosource.module';
-import { CookieService } from 'ngx-cookie-service';
-import { CloseMenuDirective } from './components/main/close-menu-directive';
+
 
 @NgModule({
   imports: [
@@ -20,7 +20,7 @@ import { CloseMenuDirective } from './components/main/close-menu-directive';
     SharedModule,
     ReactiveFormsModule,
     FormsModule,
-    GeosourceModule.forRoot(),
+    DatasetsModule,
   ],
   declarations: [...CoreComponents, CloseMenuDirective],
   providers: [
diff --git a/src/app/core/interceptors/http-error-response-interceptor.ts b/src/app/core/interceptors/http-error-response-interceptor.ts
index 184be7141118ee30ef724dd5be7b0f3815215c93..e97d4dad4a028f14163cf78d75edf63ba403b9fc 100644
--- a/src/app/core/interceptors/http-error-response-interceptor.ts
+++ b/src/app/core/interceptors/http-error-response-interceptor.ts
@@ -1,13 +1,10 @@
 // http-service-interceptor.ts
+// tslint:disable-next-line: max-line-length
+import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';
 import { Injectable } from '@angular/core';
+import { Router } from '@angular/router';
 import { Observable } from 'rxjs';
-import {
-  HttpInterceptor, HttpRequest, HttpHandler,
-  HttpEvent, HttpResponse, HttpErrorResponse,
-} from '@angular/common/http';
 import { tap } from 'rxjs/operators';
-import { Router } from '@angular/router';
-import { AppRoutes } from '../../routes';
 import { UserService } from '../../user/services';
 
 @Injectable()
diff --git a/src/app/core/services/error.service.spec.ts b/src/app/core/services/error.service.spec.ts
deleted file mode 100644
index 49c1840efe280a0c6a5a31dcd41b15d94a065341..0000000000000000000000000000000000000000
--- a/src/app/core/services/error.service.spec.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import { HttpErrorResponse } from '@angular/common/http';
-import { ErrorService, NotificationService } from '../../core/services';
-import { BehaviorSubject } from 'rxjs';
-import { Notification } from '../models';
-
-describe('ErrorService', () => {
-
-  let errorService: ErrorService;
-  let notificationServiceMock: NotificationService;
-
-  beforeEach(() => {
-    const subject = new BehaviorSubject(null);
-    notificationServiceMock = {
-      get notification$(): BehaviorSubject<Notification> {
-        return subject;
-      },
-      notify(notification: Notification) {
-        subject.next(notification);
-      },
-    } as NotificationService;
-    errorService = new ErrorService(notificationServiceMock);
-  });
-
-  describe('handleError(err, opt)', () => {
-
-    // it('should return the same HTTPERROR', () => {
-    //   // given
-    //   const error = new HttpErrorResponse({
-    //     error: 'User unauthenticated',
-    //     status: 401,
-    //     url: 'https://data.reloaded-dev.alpha.grandlyon.com/fr',
-    //   });
-    //   // when
-    //   const result = errorService.handleError(error, { message: 'Custom message' });
-
-    //   // then
-    //   expect(result).toBe(error);
-    //   expect(result instanceof HttpErrorResponse).toBeTruthy();
-    // });
-
-    it('should transform the error with an friendly error message', () => {
-      // given
-      const friendlyMessage = 'Friendly message';
-      const stack = 'ugly stack';
-      const error = new Error('ugly error message');
-      error.stack = stack;
-
-      // when
-      const result = errorService.handleError(error, { message: friendlyMessage });
-      // then
-      expect(result.message).toBe(friendlyMessage);
-      expect(result['stack']).toBe(stack);
-    });
-  });
-});
diff --git a/src/app/core/services/file-service.ts b/src/app/core/services/file.service.ts
similarity index 93%
rename from src/app/core/services/file-service.ts
rename to src/app/core/services/file.service.ts
index cd4ff1e38e36f233bd9de460dcdfbb05e4d7132c..e76b10ff45dd7274c2b6a17f47a41e81d750a18e 100644
--- a/src/app/core/services/file-service.ts
+++ b/src/app/core/services/file.service.ts
@@ -1,7 +1,7 @@
-import { Injectable } from '@angular/core';
 import { HttpClient } from '@angular/common/http';
+import { Injectable } from '@angular/core';
 import { Observable } from 'rxjs';
-import { map, catchError } from 'rxjs/operators';
+import { catchError } from 'rxjs/operators';
 import { notificationMessages } from '../../../i18n/traductions';
 import { ErrorService } from './error.service';
 
diff --git a/src/app/core/services/index.ts b/src/app/core/services/index.ts
index 020738bf13d0695577233d6f9900ef835a8db6d4..eef3ec75ac6d54cca21ef98c2912183d9a1a27a8 100644
--- a/src/app/core/services/index.ts
+++ b/src/app/core/services/index.ts
@@ -1,17 +1,15 @@
+import { AppConfigService } from './app-config.service';
+import { AppStateService } from './app-state.service';
+import { EmailService } from './email.service';
 import { ErrorService } from './error.service';
-import { NotificationService } from './notification.service';
+import { FileService } from './file.service';
 import { MatomoService } from './matomo.service';
 import { NavigationHistoryService } from './navigation-history.service';
+import { NotificationService } from './notification.service';
 import { StorageService } from './storage.service';
-import { EmailService } from './email.service';
-import { FileService } from './file-service';
-import { AppConfigService } from './app-config.service';
-import { AppStateService } from './app-state.service';
 
-export {
-  ErrorService, NotificationService, MatomoService, NavigationHistoryService, EmailService, FileService,
-  AppConfigService, AppStateService,
-};
+// tslint:disable-next-line: max-line-length
+export { ErrorService, NotificationService, MatomoService, NavigationHistoryService, EmailService, FileService, AppConfigService, AppStateService, };
 
 // tslint:disable-next-line:variable-name
 export const CoreServices = [
diff --git a/src/app/core/services/notification.service.spec.ts b/src/app/core/services/notification.service.spec.ts
deleted file mode 100644
index 8161d8622ca4a7575b42035c1910ae4c81f9376b..0000000000000000000000000000000000000000
--- a/src/app/core/services/notification.service.spec.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import { NotificationService } from '../../core/services';
-import { BehaviorSubject } from 'rxjs';
-import { Notification } from '../models';
-
-describe('NotificationService', () => {
-
-  let notificationService: NotificationService;
-
-  beforeEach(() => {
-    notificationService = new NotificationService();
-  });
-
-  describe('get notification$()', () => {
-
-    it('should return a behaviorSubject<Notification>', () => {
-      // given
-
-      // when
-      const result = notificationService.notification$;
-
-      // then
-      expect(result instanceof BehaviorSubject).toBeTruthy();
-    });
-
-    it('should call next function of the _notification BehaviorSubject', () => {
-      // Given
-      const nextSpy = spyOn(notificationService.notification$, 'next').and.callThrough();
-      const notification = new Notification({ message: 'Error', type: 'error' });
-
-      // When
-      notificationService.notify(notification);
-
-      // Then
-      expect(nextSpy).toHaveBeenCalledWith(notification);
-    });
-  });
-});
diff --git a/src/app/geosource/components/dataset-detail/dataset-data-details/dataset-data-detail-properties/dataset-data-detail-properties.component.html b/src/app/dataset-detail/components/dataset-data-details/dataset-data-detail-properties/dataset-data-detail-properties.component.html
similarity index 100%
rename from src/app/geosource/components/dataset-detail/dataset-data-details/dataset-data-detail-properties/dataset-data-detail-properties.component.html
rename to src/app/dataset-detail/components/dataset-data-details/dataset-data-detail-properties/dataset-data-detail-properties.component.html
diff --git a/src/app/geosource/components/dataset-detail/dataset-data-details/dataset-data-detail-properties/dataset-data-detail-properties.component.scss b/src/app/dataset-detail/components/dataset-data-details/dataset-data-detail-properties/dataset-data-detail-properties.component.scss
similarity index 95%
rename from src/app/geosource/components/dataset-detail/dataset-data-details/dataset-data-detail-properties/dataset-data-detail-properties.component.scss
rename to src/app/dataset-detail/components/dataset-data-details/dataset-data-detail-properties/dataset-data-detail-properties.component.scss
index 04acad21813401a2c0d43a8b09bb32e99145f874..e8589c4ba405f517705fb8d5580ce103e6986de8 100644
--- a/src/app/geosource/components/dataset-detail/dataset-data-details/dataset-data-detail-properties/dataset-data-detail-properties.component.scss
+++ b/src/app/dataset-detail/components/dataset-data-details/dataset-data-detail-properties/dataset-data-detail-properties.component.scss
@@ -1,4 +1,4 @@
-@import "../../../../../../scss/variables";
+@import "../../../../../scss/variables";
 
 .property-value {
   font-size: 0.875rem;
diff --git a/src/app/geosource/components/dataset-detail/dataset-data-details/dataset-data-detail-properties/dataset-data-detail-properties.component.ts b/src/app/dataset-detail/components/dataset-data-details/dataset-data-detail-properties/dataset-data-detail-properties.component.ts
similarity index 100%
rename from src/app/geosource/components/dataset-detail/dataset-data-details/dataset-data-detail-properties/dataset-data-detail-properties.component.ts
rename to src/app/dataset-detail/components/dataset-data-details/dataset-data-detail-properties/dataset-data-detail-properties.component.ts
diff --git a/src/app/geosource/components/dataset-detail/dataset-data-details/dataset-data-details.component.html b/src/app/dataset-detail/components/dataset-data-details/dataset-data-details.component.html
similarity index 100%
rename from src/app/geosource/components/dataset-detail/dataset-data-details/dataset-data-details.component.html
rename to src/app/dataset-detail/components/dataset-data-details/dataset-data-details.component.html
diff --git a/src/app/geosource/components/dataset-detail/dataset-data-details/dataset-data-details.component.scss b/src/app/dataset-detail/components/dataset-data-details/dataset-data-details.component.scss
similarity index 93%
rename from src/app/geosource/components/dataset-detail/dataset-data-details/dataset-data-details.component.scss
rename to src/app/dataset-detail/components/dataset-data-details/dataset-data-details.component.scss
index 619e851af9defe58dbe742bb13aace5de0fc0261..4840767e2ee0b0b71669789ffcbfa473ac07b981 100644
--- a/src/app/geosource/components/dataset-detail/dataset-data-details/dataset-data-details.component.scss
+++ b/src/app/dataset-detail/components/dataset-data-details/dataset-data-details.component.scss
@@ -1,4 +1,4 @@
-@import "../../../../../scss/variables";
+@import "../../../../scss/variables";
 
 $details-header-height: 36px;
 
diff --git a/src/app/geosource/components/dataset-detail/dataset-data-details/dataset-data-details.component.ts b/src/app/dataset-detail/components/dataset-data-details/dataset-data-details.component.ts
similarity index 90%
rename from src/app/geosource/components/dataset-detail/dataset-data-details/dataset-data-details.component.ts
rename to src/app/dataset-detail/components/dataset-data-details/dataset-data-details.component.ts
index d12bf86d81a3904ca008133733f62108b514ae9b..9420f99b0d0c7103eb69ceca620540e582f7ac81 100644
--- a/src/app/geosource/components/dataset-detail/dataset-data-details/dataset-data-details.component.ts
+++ b/src/app/dataset-detail/components/dataset-data-details/dataset-data-details.component.ts
@@ -1,5 +1,5 @@
-import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
-import { DatasetDetailService } from '../../../services';
+import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
+import { DatasetDetailService } from '../../services';
 
 @Component({
   selector: 'app-dataset-data-details',
diff --git a/src/app/geosource/components/dataset-detail/dataset-detail.component.html b/src/app/dataset-detail/components/dataset-detail/dataset-detail.component.html
similarity index 100%
rename from src/app/geosource/components/dataset-detail/dataset-detail.component.html
rename to src/app/dataset-detail/components/dataset-detail/dataset-detail.component.html
diff --git a/src/app/geosource/components/dataset-detail/dataset-detail.component.scss b/src/app/dataset-detail/components/dataset-detail/dataset-detail.component.scss
similarity index 100%
rename from src/app/geosource/components/dataset-detail/dataset-detail.component.scss
rename to src/app/dataset-detail/components/dataset-detail/dataset-detail.component.scss
diff --git a/src/app/geosource/components/dataset-detail/dataset-detail.component.ts b/src/app/dataset-detail/components/dataset-detail/dataset-detail.component.ts
similarity index 93%
rename from src/app/geosource/components/dataset-detail/dataset-detail.component.ts
rename to src/app/dataset-detail/components/dataset-detail/dataset-detail.component.ts
index c40666377e8e484ee500b6c1892e4642d7c158cf..6c91207b24ee9247c7772264bcc7f1d28a76e9b9 100644
--- a/src/app/geosource/components/dataset-detail/dataset-detail.component.ts
+++ b/src/app/dataset-detail/components/dataset-detail/dataset-detail.component.ts
@@ -1,15 +1,14 @@
-import { filter } from 'rxjs/operators';
-import { Component, OnInit, OnDestroy } from '@angular/core';
-import { Metadata } from '../../models';
+import { Component, OnDestroy, OnInit } from '@angular/core';
 import { ActivatedRoute, Router, Scroll } from '@angular/router';
-import { DatasetDetailService } from '../../services';
-import { typesMetadata } from '../../models/metadata.model';
-import { AppRoutes } from '../../../routes';
-import { NotificationService, NavigationHistoryService } from '../../../core/services';
-import { ViewportScroller } from '../../../../../node_modules/@angular/common';
 import { Subscription } from 'rxjs';
-import { IPageHeaderInfo } from '../../../shared/models';
+import { filter } from 'rxjs/operators';
+import { ViewportScroller } from '../../../../../node_modules/@angular/common';
 import { datatsetDataRepresentationType, geosource } from '../../../../i18n/traductions';
+import { NavigationHistoryService } from '../../../core/services';
+import { Metadata, typesMetadata } from '../../../elasticsearch/models';
+import { AppRoutes } from '../../../routes';
+import { IPageHeaderInfo } from '../../../shared/models';
+import { DatasetDetailService } from '../../services';
 
 @Component({
   selector: 'app-dataset-detail',
@@ -31,7 +30,6 @@ export class DatasetDetailComponent implements OnInit, OnDestroy {
     private _route: ActivatedRoute,
     private _datasetDetailService: DatasetDetailService,
     private _router: Router,
-    private _notificationService: NotificationService,
     private _scroller: ViewportScroller,
     private _navigationHistoryService: NavigationHistoryService,
   ) { }
@@ -125,7 +123,7 @@ export class DatasetDetailComponent implements OnInit, OnDestroy {
       if (this.hasTable || this.hasMap) {
         this._router.navigate([
           `/${AppRoutes.datasets.uri}/${this._datasetDetailService.dataset.slug}/${AppRoutes.data.uri}`,
-        // tslint:disable-next-line: align
+          // tslint:disable-next-line: align
         ], { queryParamsHandling: 'preserve' });
       } else {
         this._router.navigate([
@@ -164,7 +162,7 @@ export class DatasetDetailComponent implements OnInit, OnDestroy {
 
     // If url is null then redirect to research page
     if (url == null) {
-      url = `/${AppRoutes.research.uri}`;
+      url = `/${AppRoutes.datasets.uri}`;
     }
 
     this._router.navigateByUrl(url);
diff --git a/src/app/geosource/components/dataset-detail/dataset-info/dataset-info.component.html b/src/app/dataset-detail/components/dataset-info/dataset-info.component.html
similarity index 100%
rename from src/app/geosource/components/dataset-detail/dataset-info/dataset-info.component.html
rename to src/app/dataset-detail/components/dataset-info/dataset-info.component.html
diff --git a/src/app/geosource/components/dataset-detail/dataset-info/dataset-info.component.scss b/src/app/dataset-detail/components/dataset-info/dataset-info.component.scss
similarity index 94%
rename from src/app/geosource/components/dataset-detail/dataset-info/dataset-info.component.scss
rename to src/app/dataset-detail/components/dataset-info/dataset-info.component.scss
index 1a66f88ea07693f27c000ce391d39046f75cedba..2845766f635735dacfc1e768133e304f4b6f80a2 100644
--- a/src/app/geosource/components/dataset-detail/dataset-info/dataset-info.component.scss
+++ b/src/app/dataset-detail/components/dataset-info/dataset-info.component.scss
@@ -1,5 +1,5 @@
-@import "../../../../../scss/variables";
-@import "../../../../../../node_modules/bulma/sass/utilities/_all";
+@import "../../../../scss/variables";
+@import "../../../../../node_modules/bulma/sass/utilities/_all";
 
 span,
 p {
diff --git a/src/app/geosource/components/dataset-detail/dataset-info/dataset-info.component.spec.ts b/src/app/dataset-detail/components/dataset-info/dataset-info.component.spec.ts
similarity index 100%
rename from src/app/geosource/components/dataset-detail/dataset-info/dataset-info.component.spec.ts
rename to src/app/dataset-detail/components/dataset-info/dataset-info.component.spec.ts
diff --git a/src/app/geosource/components/dataset-detail/dataset-info/dataset-info.component.ts b/src/app/dataset-detail/components/dataset-info/dataset-info.component.ts
similarity index 87%
rename from src/app/geosource/components/dataset-detail/dataset-info/dataset-info.component.ts
rename to src/app/dataset-detail/components/dataset-info/dataset-info.component.ts
index cb6cce629293dfd5f110f4d06b944463d56996d1..4bede40021a14c195359e5846a20671e421247f5 100644
--- a/src/app/geosource/components/dataset-detail/dataset-info/dataset-info.component.ts
+++ b/src/app/dataset-detail/components/dataset-info/dataset-info.component.ts
@@ -1,13 +1,9 @@
-import { Component, OnInit, OnDestroy } from '@angular/core';
-import { geosource, datatsetDataRepresentationType, notificationMessages } from '../../../../../i18n/traductions';
-import { Metadata, IMetadataLink } from '../../../models';
-import { typesMetadata, IResponsibleParty } from '../../../models/metadata.model';
-
-import { DatasetDetailService } from '../../../services';
+import { Component, OnDestroy, OnInit } from '@angular/core';
 import { Subscription } from 'rxjs';
-import { AppRoutes } from '../../../../routes';
-import { CMSContent } from '../../../../editorialisation/models';
-import { EditorialisationService } from '../../../../editorialisation/services';
+import { datatsetDataRepresentationType, geosource } from '../../../../i18n/traductions';
+import { IResponsibleParty, Metadata, typesMetadata } from '../../../elasticsearch/models';
+import { AppRoutes } from '../../../routes';
+import { DatasetDetailService } from '../../services';
 
 @Component({
   selector: 'app-dataset-info',
@@ -66,7 +62,7 @@ export class DatasetInfoComponent implements OnInit, OnDestroy {
           maxNorth: `${this.metadata.max_north} nord,`,
           maxWest: `${this.metadata.max_west} ouest`,
         },
-        coordinatesSystem: this.metadata.crs ,
+        coordinatesSystem: this.metadata.crs,
       };
     }
 
diff --git a/src/app/geosource/components/dataset-detail/dataset-map/dataset-map.component.html b/src/app/dataset-detail/components/dataset-map/dataset-map.component.html
similarity index 100%
rename from src/app/geosource/components/dataset-detail/dataset-map/dataset-map.component.html
rename to src/app/dataset-detail/components/dataset-map/dataset-map.component.html
diff --git a/src/app/geosource/components/dataset-detail/dataset-map/dataset-map.component.scss b/src/app/dataset-detail/components/dataset-map/dataset-map.component.scss
similarity index 95%
rename from src/app/geosource/components/dataset-detail/dataset-map/dataset-map.component.scss
rename to src/app/dataset-detail/components/dataset-map/dataset-map.component.scss
index 6390d536d8f08bbf471701f6b97d2bd8d7685312..c488234dd64fa0ceae64a7fe145269190423e661 100644
--- a/src/app/geosource/components/dataset-detail/dataset-map/dataset-map.component.scss
+++ b/src/app/dataset-detail/components/dataset-map/dataset-map.component.scss
@@ -1,4 +1,4 @@
-@import "../../../../../scss/variables";
+@import "../../../../scss/variables";
 
 div {
   height: 100%;
diff --git a/src/app/geosource/components/dataset-detail/dataset-map/dataset-map.component.ts b/src/app/dataset-detail/components/dataset-map/dataset-map.component.ts
similarity index 91%
rename from src/app/geosource/components/dataset-detail/dataset-map/dataset-map.component.ts
rename to src/app/dataset-detail/components/dataset-map/dataset-map.component.ts
index e7270a1b361b19f084a5ebd5b9a9d63a6d93463e..811ca82009f5df30b0dc35a7e1c43998198a9c48 100644
--- a/src/app/geosource/components/dataset-detail/dataset-map/dataset-map.component.ts
+++ b/src/app/dataset-detail/components/dataset-map/dataset-map.component.ts
@@ -1,12 +1,11 @@
-import { Component, OnInit, ViewChild, Input, Output, EventEmitter, OnDestroy, ElementRef } from '@angular/core';
-import { MapService } from '../../../../map/services/map.service';
-import { DatasetDetailService } from '../../../services';
+import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';
 import { Subscription } from 'rxjs';
-import { Metadata, Data } from '../../../models';
-import { MapComponent } from '../../../../map/components';
-import { MapOptions } from '../../../../map/models/map-options';
-import { linkFormats } from '../../../models/metadata.model';
-import { APP_CONFIG } from '../../../../core/services/app-config.service';
+import { APP_CONFIG } from '../../../core/services/app-config.service';
+import { Data, linkFormats, Metadata } from '../../../elasticsearch/models';
+import { MapComponent } from '../../../map/components';
+import { MapOptions } from '../../../map/models/map-options';
+import { MapService } from '../../../map/services/map.service';
+import { DatasetDetailService } from '../../services';
 
 @Component({
   selector: 'app-dataset-map',
diff --git a/src/app/geosource/components/dataset-detail/dataset-resources/dataset-resources.component.html b/src/app/dataset-detail/components/dataset-resources/dataset-resources.component.html
similarity index 100%
rename from src/app/geosource/components/dataset-detail/dataset-resources/dataset-resources.component.html
rename to src/app/dataset-detail/components/dataset-resources/dataset-resources.component.html
diff --git a/src/app/geosource/components/dataset-detail/dataset-resources/dataset-resources.component.scss b/src/app/dataset-detail/components/dataset-resources/dataset-resources.component.scss
similarity index 94%
rename from src/app/geosource/components/dataset-detail/dataset-resources/dataset-resources.component.scss
rename to src/app/dataset-detail/components/dataset-resources/dataset-resources.component.scss
index 8e8591eb14eb03304a073e6b8094c470f3fb73e7..63ae774f78d6f99f29b276aa59f3d7bf6f751489 100644
--- a/src/app/geosource/components/dataset-detail/dataset-resources/dataset-resources.component.scss
+++ b/src/app/dataset-detail/components/dataset-resources/dataset-resources.component.scss
@@ -1,5 +1,5 @@
-@import "../../../../../scss/variables";
-@import "../../../../../../node_modules/bulma/sass/utilities/_all";
+@import "../../../../scss/variables";
+@import "../../../../../node_modules/bulma/sass/utilities/_all";
 
 .resource-container {
   padding: 2rem 1.25rem 1.25rem 1.25rem;
diff --git a/src/app/geosource/components/dataset-detail/dataset-resources/dataset-resources.component.spec.ts b/src/app/dataset-detail/components/dataset-resources/dataset-resources.component.spec.ts
similarity index 100%
rename from src/app/geosource/components/dataset-detail/dataset-resources/dataset-resources.component.spec.ts
rename to src/app/dataset-detail/components/dataset-resources/dataset-resources.component.spec.ts
diff --git a/src/app/geosource/components/dataset-detail/dataset-resources/dataset-resources.component.ts b/src/app/dataset-detail/components/dataset-resources/dataset-resources.component.ts
similarity index 88%
rename from src/app/geosource/components/dataset-detail/dataset-resources/dataset-resources.component.ts
rename to src/app/dataset-detail/components/dataset-resources/dataset-resources.component.ts
index 9dda24eae07911fe394b554cbe3db338c90154bc..b697c2e880497768a1893a2291f596132590a62b 100644
--- a/src/app/geosource/components/dataset-detail/dataset-resources/dataset-resources.component.ts
+++ b/src/app/dataset-detail/components/dataset-resources/dataset-resources.component.ts
@@ -1,11 +1,11 @@
-import { Component, OnInit, OnDestroy } from '@angular/core';
-import { DatasetDetailService, ResourcesService } from '../../../services';
-import { Metadata, Resource } from '../../../models';
-import { Subscription, forkJoin } from 'rxjs';
-import { IMetadataLink } from '../../../models/metadata.model';
-import { NotificationService } from '../../../../core/services';
-import { notificationMessages } from '../../../../../i18n/traductions';
-import { Notification } from '../../../../core/models';
+import { Component, OnDestroy, OnInit } from '@angular/core';
+import { Subscription } from 'rxjs';
+import { notificationMessages } from '../../../../i18n/traductions';
+import { Notification } from '../../../core/models';
+import { NotificationService } from '../../../core/services';
+import { IMetadataLink, Metadata } from '../../../elasticsearch/models';
+import { Resource } from '../../models';
+import { DatasetDetailService, ResourcesService } from '../../services';
 
 @Component({
   selector: 'app-dataset-resources',
diff --git a/src/app/geosource/components/dataset-detail/dataset-resources/icon-format/icon-format.component.html b/src/app/dataset-detail/components/dataset-resources/icon-format/icon-format.component.html
similarity index 100%
rename from src/app/geosource/components/dataset-detail/dataset-resources/icon-format/icon-format.component.html
rename to src/app/dataset-detail/components/dataset-resources/icon-format/icon-format.component.html
diff --git a/src/app/geosource/components/dataset-detail/dataset-resources/icon-format/icon-format.component.scss b/src/app/dataset-detail/components/dataset-resources/icon-format/icon-format.component.scss
similarity index 100%
rename from src/app/geosource/components/dataset-detail/dataset-resources/icon-format/icon-format.component.scss
rename to src/app/dataset-detail/components/dataset-resources/icon-format/icon-format.component.scss
diff --git a/src/app/geosource/components/dataset-detail/dataset-resources/icon-format/icon-format.component.ts b/src/app/dataset-detail/components/dataset-resources/icon-format/icon-format.component.ts
similarity index 100%
rename from src/app/geosource/components/dataset-detail/dataset-resources/icon-format/icon-format.component.ts
rename to src/app/dataset-detail/components/dataset-resources/icon-format/icon-format.component.ts
diff --git a/src/app/geosource/components/dataset-detail/dataset-resources/resource-downloadable/resource-downloadable.component.html b/src/app/dataset-detail/components/dataset-resources/resource-downloadable/resource-downloadable.component.html
similarity index 100%
rename from src/app/geosource/components/dataset-detail/dataset-resources/resource-downloadable/resource-downloadable.component.html
rename to src/app/dataset-detail/components/dataset-resources/resource-downloadable/resource-downloadable.component.html
diff --git a/src/app/geosource/components/dataset-detail/dataset-resources/resource-downloadable/resource-downloadable.component.scss b/src/app/dataset-detail/components/dataset-resources/resource-downloadable/resource-downloadable.component.scss
similarity index 95%
rename from src/app/geosource/components/dataset-detail/dataset-resources/resource-downloadable/resource-downloadable.component.scss
rename to src/app/dataset-detail/components/dataset-resources/resource-downloadable/resource-downloadable.component.scss
index 0e2b726c42b81a1b0b70c0f274532c1ecb694455..60fc87929783c689c1f6eb9c5b5da7382bfbea2b 100644
--- a/src/app/geosource/components/dataset-detail/dataset-resources/resource-downloadable/resource-downloadable.component.scss
+++ b/src/app/dataset-detail/components/dataset-resources/resource-downloadable/resource-downloadable.component.scss
@@ -1,4 +1,4 @@
-@import '../../../../../../scss/variables.scss';
+@import '../../../../../scss/variables.scss';
 
 .resource {
   background-color: white;
diff --git a/src/app/geosource/components/dataset-detail/dataset-resources/resource-downloadable/resource-downloadable.component.ts b/src/app/dataset-detail/components/dataset-resources/resource-downloadable/resource-downloadable.component.ts
similarity index 89%
rename from src/app/geosource/components/dataset-detail/dataset-resources/resource-downloadable/resource-downloadable.component.ts
rename to src/app/dataset-detail/components/dataset-resources/resource-downloadable/resource-downloadable.component.ts
index fa58db23c78f9c1606f84813c1be7841b1e95ee6..0db15fc49f0b7b14115c3dc709312b6fe4ff81a6 100644
--- a/src/app/geosource/components/dataset-detail/dataset-resources/resource-downloadable/resource-downloadable.component.ts
+++ b/src/app/dataset-detail/components/dataset-resources/resource-downloadable/resource-downloadable.component.ts
@@ -1,6 +1,6 @@
-import { Component, OnInit, Input } from '@angular/core';
-import { IMetadataLink } from '../../../../models';
-import { NotificationService, FileService } from '../../../../../core/services';
+import { Component, Input, OnInit } from '@angular/core';
+import { FileService, NotificationService } from '../../../../core/services';
+import { IMetadataLink } from '../../../../elasticsearch/models';
 
 @Component({
   selector: 'app-resource-downloadable',
diff --git a/src/app/geosource/components/dataset-detail/dataset-resources/resources-queryable/resource-queryable/resource-queryable.component.html b/src/app/dataset-detail/components/dataset-resources/resources-queryable/resource-queryable/resource-queryable.component.html
similarity index 100%
rename from src/app/geosource/components/dataset-detail/dataset-resources/resources-queryable/resource-queryable/resource-queryable.component.html
rename to src/app/dataset-detail/components/dataset-resources/resources-queryable/resource-queryable/resource-queryable.component.html
diff --git a/src/app/geosource/components/dataset-detail/dataset-resources/resources-queryable/resource-queryable/resource-queryable.component.scss b/src/app/dataset-detail/components/dataset-resources/resources-queryable/resource-queryable/resource-queryable.component.scss
similarity index 98%
rename from src/app/geosource/components/dataset-detail/dataset-resources/resources-queryable/resource-queryable/resource-queryable.component.scss
rename to src/app/dataset-detail/components/dataset-resources/resources-queryable/resource-queryable/resource-queryable.component.scss
index 1c9d6847d596df202e6a9f0017db436a9fcf3553..c721abd3068313da14f6b65c871974baada5f82e 100644
--- a/src/app/geosource/components/dataset-detail/dataset-resources/resources-queryable/resource-queryable/resource-queryable.component.scss
+++ b/src/app/dataset-detail/components/dataset-resources/resources-queryable/resource-queryable/resource-queryable.component.scss
@@ -1,4 +1,4 @@
-@import '../../../../../../../scss/variables.scss';
+@import '../../../../../../scss/variables.scss';
 
 .resource-item {
   display: grid;
diff --git a/src/app/geosource/components/dataset-detail/dataset-resources/resources-queryable/resource-queryable/resource-queryable.component.ts b/src/app/dataset-detail/components/dataset-resources/resources-queryable/resource-queryable/resource-queryable.component.ts
similarity index 96%
rename from src/app/geosource/components/dataset-detail/dataset-resources/resources-queryable/resource-queryable/resource-queryable.component.ts
rename to src/app/dataset-detail/components/dataset-resources/resources-queryable/resource-queryable/resource-queryable.component.ts
index 75d3923cffc1ed8fa6fe64a9c4d75b2eee8bea86..c68be84728fe8dc8141d7d2b32548471ec8cef9a 100644
--- a/src/app/geosource/components/dataset-detail/dataset-resources/resources-queryable/resource-queryable/resource-queryable.component.ts
+++ b/src/app/dataset-detail/components/dataset-resources/resources-queryable/resource-queryable/resource-queryable.component.ts
@@ -1,14 +1,12 @@
-import { Component, OnInit, Input } from '@angular/core';
-import { SafeHtml, DomSanitizer } from '@angular/platform-browser';
-import { Resource, Metadata } from '../../../../../models';
-import { Format } from '../../../../../models/resource.model';
-import { communeInsee } from '../../../../../../../assets/resources/commune-insee';
-import { DatasetDetailService } from '../../../../../services';
-import { linkFormats } from '../../../../../models/metadata.model';
-import { geosource, notificationMessages } from '../../../../../../../i18n/traductions';
+import { Component, Input, OnInit } from '@angular/core';
+import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
 import { saveAs } from 'file-saver';
-import { NotificationService } from '../../../../../../core/services';
-import { Projection } from '../../../../../models/projection.model';
+import { communeInsee } from '../../../../../../assets/resources/commune-insee';
+import { geosource, notificationMessages } from '../../../../../../i18n/traductions';
+import { NotificationService } from '../../../../../core/services';
+import { linkFormats, Metadata } from '../../../../../elasticsearch/models';
+import { Format, Projection, Resource } from '../../../../models';
+import { DatasetDetailService } from '../../../../services';
 
 @Component({
   selector: 'app-resource-queryable',
diff --git a/src/app/geosource/components/dataset-detail/dataset-resources/resources-queryable/resources-queryable.component.html b/src/app/dataset-detail/components/dataset-resources/resources-queryable/resources-queryable.component.html
similarity index 100%
rename from src/app/geosource/components/dataset-detail/dataset-resources/resources-queryable/resources-queryable.component.html
rename to src/app/dataset-detail/components/dataset-resources/resources-queryable/resources-queryable.component.html
diff --git a/src/app/geosource/components/dataset-detail/dataset-resources/resources-queryable/resources-queryable.component.scss b/src/app/dataset-detail/components/dataset-resources/resources-queryable/resources-queryable.component.scss
similarity index 93%
rename from src/app/geosource/components/dataset-detail/dataset-resources/resources-queryable/resources-queryable.component.scss
rename to src/app/dataset-detail/components/dataset-resources/resources-queryable/resources-queryable.component.scss
index b6e32fcc6e1f017b601eb6fe3f6c7c4d50f56f7a..c10f4a94e3f26256f714e8f114266b847152f332 100644
--- a/src/app/geosource/components/dataset-detail/dataset-resources/resources-queryable/resources-queryable.component.scss
+++ b/src/app/dataset-detail/components/dataset-resources/resources-queryable/resources-queryable.component.scss
@@ -1,4 +1,4 @@
-@import '../../../../../../scss/variables.scss';
+@import '../../../../../scss/variables.scss';
 
 .resources {
   margin: 0;
diff --git a/src/app/geosource/components/dataset-detail/dataset-resources/resources-queryable/resources-queryable.component.ts b/src/app/dataset-detail/components/dataset-resources/resources-queryable/resources-queryable.component.ts
similarity index 74%
rename from src/app/geosource/components/dataset-detail/dataset-resources/resources-queryable/resources-queryable.component.ts
rename to src/app/dataset-detail/components/dataset-resources/resources-queryable/resources-queryable.component.ts
index cf82a39ba296686fbddc0719186433dc0bc28fed..65f882338fd95f5adb6b914d12f61daedf313a89 100644
--- a/src/app/geosource/components/dataset-detail/dataset-resources/resources-queryable/resources-queryable.component.ts
+++ b/src/app/dataset-detail/components/dataset-resources/resources-queryable/resources-queryable.component.ts
@@ -1,8 +1,8 @@
-import { Component, OnInit, Input } from '@angular/core';
-import { Resource, Metadata } from '../../../../models';
-import { ResourcesService } from '../../../../services';
-import { Projection } from '../../../../models/projection.model';
-import { environment } from '../../../../../../environments/environment';
+import { Component, Input, OnInit } from '@angular/core';
+import { environment } from '../../../../../environments/environment';
+import { Metadata } from '../../../../elasticsearch/models';
+import { Projection, Resource } from '../../../models';
+import { ResourcesService } from '../../../services';
 
 @Component({
   selector: 'app-resources-queryable',
diff --git a/src/app/geosource/components/dataset-detail/dataset-table-map/dataset-table-map.component.html b/src/app/dataset-detail/components/dataset-table-map/dataset-table-map.component.html
similarity index 100%
rename from src/app/geosource/components/dataset-detail/dataset-table-map/dataset-table-map.component.html
rename to src/app/dataset-detail/components/dataset-table-map/dataset-table-map.component.html
diff --git a/src/app/geosource/components/dataset-detail/dataset-table-map/dataset-table-map.component.scss b/src/app/dataset-detail/components/dataset-table-map/dataset-table-map.component.scss
similarity index 96%
rename from src/app/geosource/components/dataset-detail/dataset-table-map/dataset-table-map.component.scss
rename to src/app/dataset-detail/components/dataset-table-map/dataset-table-map.component.scss
index 784feda7b84f273c0d22ca099f23fd3ed1f9ed6f..2193eabd37b33f056e7c2fffc93d73df3b2d0598 100644
--- a/src/app/geosource/components/dataset-detail/dataset-table-map/dataset-table-map.component.scss
+++ b/src/app/dataset-detail/components/dataset-table-map/dataset-table-map.component.scss
@@ -1,5 +1,5 @@
-@import "../../../../../scss/variables";
-@import "../../../../../../node_modules/bulma/sass/utilities/_all";
+@import "../../../../scss/variables.scss";
+@import "../../../../../node_modules/bulma/sass/utilities/_all";
 
 .component-wrapper {
   max-width: 100vw;
@@ -76,7 +76,7 @@
   }
 
   .properties-dropdown button {
-    background-image: url('../../../../../assets/img/picto_colonnes.svg');
+    background-image: url('../../../../assets/img/picto_colonnes.svg');
     background-size: 36px 36px;
     background-repeat: no-repeat;
     background-position: center;
@@ -294,14 +294,14 @@
 }
 
 .btn-exit-fullscreen {
-  background-image: url('../../../../../assets/img/picto_fullscreen_off.svg');
+  background-image: url('../../../../assets/img/picto_fullscreen_off.svg');
   background-size: 36px 36px;
   background-repeat: no-repeat;
   background-position: center;
 }
 
 .btn-fullscreen {
-  background-image: url('../../../../../assets/img/picto_fullscreen_on.svg');
+  background-image: url('../../../../assets/img/picto_fullscreen_on.svg');
   background-size: 36px 36px;
   background-repeat: no-repeat;
   background-position: center;
diff --git a/src/app/geosource/components/dataset-detail/dataset-table-map/dataset-table-map.component.ts b/src/app/dataset-detail/components/dataset-table-map/dataset-table-map.component.ts
similarity index 97%
rename from src/app/geosource/components/dataset-detail/dataset-table-map/dataset-table-map.component.ts
rename to src/app/dataset-detail/components/dataset-table-map/dataset-table-map.component.ts
index 0b91d5b531028153d0035845803e9a9a34d46534..d33a0de145d3bc00460b04a0d9b1b6bf625ebafe 100644
--- a/src/app/geosource/components/dataset-detail/dataset-table-map/dataset-table-map.component.ts
+++ b/src/app/dataset-detail/components/dataset-table-map/dataset-table-map.component.ts
@@ -1,9 +1,9 @@
-import { Component, OnInit, ViewChild, OnDestroy, ElementRef, AfterViewInit } from '@angular/core';
-import { DatasetDetailService } from '../../../services';
-import { DatasetMapComponent } from '../dataset-map/dataset-map.component';
+import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';
 import { FormControl } from '@angular/forms';
-import { Data } from '../../../models';
 import { Subscription } from 'rxjs';
+import { Data } from '../../../elasticsearch/models';
+import { DatasetDetailService } from '../../services';
+import { DatasetMapComponent } from '../dataset-map/dataset-map.component';
 
 @Component({
   selector: 'app-dataset-table-map',
diff --git a/src/app/geosource/components/dataset-detail/dataset-table/dataset-table.component.html b/src/app/dataset-detail/components/dataset-table/dataset-table.component.html
similarity index 100%
rename from src/app/geosource/components/dataset-detail/dataset-table/dataset-table.component.html
rename to src/app/dataset-detail/components/dataset-table/dataset-table.component.html
diff --git a/src/app/geosource/components/dataset-detail/dataset-table/dataset-table.component.scss b/src/app/dataset-detail/components/dataset-table/dataset-table.component.scss
similarity index 95%
rename from src/app/geosource/components/dataset-detail/dataset-table/dataset-table.component.scss
rename to src/app/dataset-detail/components/dataset-table/dataset-table.component.scss
index e72c230cf59e0f5f4a89645297b8f5fe9340710e..e4d11fe3a510c710df18e7932e5233e0f7ae7699 100644
--- a/src/app/geosource/components/dataset-detail/dataset-table/dataset-table.component.scss
+++ b/src/app/dataset-detail/components/dataset-table/dataset-table.component.scss
@@ -1,5 +1,5 @@
-@import "../../../../../scss/variables";
-@import "../../../../../../node_modules/bulma/sass/utilities/_all";
+@import "../../../../scss/variables";
+@import "../../../../../node_modules/bulma/sass/utilities/_all";
 
 .data-table {
   display: grid;
diff --git a/src/app/geosource/components/dataset-detail/dataset-table/dataset-table.component.ts b/src/app/dataset-detail/components/dataset-table/dataset-table.component.ts
similarity index 92%
rename from src/app/geosource/components/dataset-detail/dataset-table/dataset-table.component.ts
rename to src/app/dataset-detail/components/dataset-table/dataset-table.component.ts
index a59f4ea300cbda14f13b85ece2f001854fa69a53..9fb3bd1c2b81656db665885270d9cd5bf8713cf9 100644
--- a/src/app/geosource/components/dataset-detail/dataset-table/dataset-table.component.ts
+++ b/src/app/dataset-detail/components/dataset-table/dataset-table.component.ts
@@ -1,12 +1,10 @@
-import {
-  Component, OnInit, ElementRef, QueryList, ViewChildren,
-  OnDestroy, Input, Output, EventEmitter
-} from '@angular/core';
-import { DatasetDetailService } from '../../../services';
-import { Data } from '../../../models';
-import { Subscription } from '../../../../../../node_modules/rxjs';
-import { geosource } from '../../../../../i18n/traductions';
-import { AppRoutes } from '../../../../routes';
+// tslint:disable-next-line: max-line-length
+import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, QueryList, ViewChildren } from '@angular/core';
+import { Subscription } from 'rxjs';
+import { geosource } from '../../../../i18n/traductions';
+import { Data } from '../../../elasticsearch/models';
+import { AppRoutes } from '../../../routes';
+import { DatasetDetailService } from '../../services';
 
 @Component({
   selector: 'app-dataset-table',
diff --git a/src/app/dataset-detail/components/index.ts b/src/app/dataset-detail/components/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f4b4a10c58570833c6c2a299d7370388cae19eb5
--- /dev/null
+++ b/src/app/dataset-detail/components/index.ts
@@ -0,0 +1,33 @@
+// tslint:disable-next-line: max-line-length
+import { DatasetDataDetailPropertiesComponent } from './dataset-data-details/dataset-data-detail-properties/dataset-data-detail-properties.component';
+import { DatasetDataDetailsComponent } from './dataset-data-details/dataset-data-details.component';
+import { DatasetDetailComponent } from './dataset-detail/dataset-detail.component';
+import { DatasetInfoComponent } from './dataset-info/dataset-info.component';
+import { DatasetMapComponent } from './dataset-map/dataset-map.component';
+import { DatasetResourcesComponent } from './dataset-resources/dataset-resources.component';
+import { IconFormatComponent } from './dataset-resources/icon-format/icon-format.component';
+// tslint:disable-next-line:max-line-length
+import { ResourceDownloadableComponent } from './dataset-resources/resource-downloadable/resource-downloadable.component';
+// tslint:disable-next-line:max-line-length
+import { ResourceQueryableComponent } from './dataset-resources/resources-queryable/resource-queryable/resource-queryable.component';
+import { ResourcesQueryableComponent } from './dataset-resources/resources-queryable/resources-queryable.component';
+import { DatasetTableMapComponent } from './dataset-table-map/dataset-table-map.component';
+import { DatasetTableComponent } from './dataset-table/dataset-table.component';
+
+export { DatasetDetailComponent, DatasetResourcesComponent, ResourceQueryableComponent, ResourceDownloadableComponent, DatasetMapComponent, DatasetInfoComponent, DatasetTableMapComponent, DatasetTableComponent, ResourcesQueryableComponent, IconFormatComponent, DatasetDataDetailsComponent, DatasetDataDetailPropertiesComponent };
+
+// tslint:disable-next-line:variable-name
+export const DatasetDetailComponents = [
+  DatasetDetailComponent,
+  DatasetResourcesComponent,
+  ResourceQueryableComponent,
+  ResourceDownloadableComponent,
+  DatasetMapComponent,
+  DatasetInfoComponent,
+  DatasetTableMapComponent,
+  DatasetTableComponent,
+  ResourcesQueryableComponent,
+  IconFormatComponent,
+  DatasetDataDetailsComponent,
+  DatasetDataDetailPropertiesComponent,
+];
diff --git a/src/app/geosource/geosource-routing.module.ts b/src/app/dataset-detail/dataset-detail-routing.module.ts
similarity index 59%
rename from src/app/geosource/geosource-routing.module.ts
rename to src/app/dataset-detail/dataset-detail-routing.module.ts
index b195df07b746f66df14cb486b5c09e2059d54fe9..0485df6dfe8d76b018b63dfd488dbde4d5fbc43e 100644
--- a/src/app/geosource/geosource-routing.module.ts
+++ b/src/app/dataset-detail/dataset-detail-routing.module.ts
@@ -1,39 +1,15 @@
 import { NgModule } from '@angular/core';
-import { Routes, RouterModule } from '@angular/router';
-import {
-  ResultsComponent, DatasetDetailComponent, ResearchComponent, DatasetInfoComponent,
-  DatasetResourcesComponent,
-  DatasetTableMapComponent,
-} from './components';
+import { RouterModule, Routes } from '@angular/router';
 import { AppRoutes } from '../routes';
+// tslint:disable-next-line: max-line-length
+import { DatasetDetailComponent, DatasetInfoComponent, DatasetResourcesComponent, DatasetTableMapComponent } from './components';
 import { DatasetDetailResolver } from './resolvers';
 
 export const routes: Routes = [
-  {
-    path: AppRoutes.research.uri,
-    component: ResearchComponent,
-    data: {
-      title: AppRoutes.research.title,
-    },
-    children: [
-      {
-        path: '',
-        component: ResultsComponent,
-        data: {
-          title: AppRoutes.datasets.title,
-        },
-        pathMatch: 'full',
-      },
-    ],
-  },
   // Some of the parteners already used the english version of this routing so in order to not break again there link
   // we implemented a fallback routes that redirects to the new routing
   {
-    path: 'datasets/:id',
-    redirectTo: `${AppRoutes.datasets.uri}/:id`,
-  },
-  {
-    path: `${AppRoutes.datasets.uri}/:id`,
+    path: '',
     component: DatasetDetailComponent,
     resolve: {
       dataset: DatasetDetailResolver,
@@ -68,4 +44,4 @@ export const routes: Routes = [
   exports: [RouterModule],
   imports: [RouterModule.forChild(routes)],
 })
-export class GeosourceRoutingModule { }
+export class DatasetDetailRoutingModule { }
diff --git a/src/app/dataset-detail/dataset-detail.module.ts b/src/app/dataset-detail/dataset-detail.module.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d635bbeecc3d46e403e92942ca5f68611bbf3d22
--- /dev/null
+++ b/src/app/dataset-detail/dataset-detail.module.ts
@@ -0,0 +1,29 @@
+import { CommonModule } from '@angular/common';
+import { NgModule } from '@angular/core';
+import { FormsModule, ReactiveFormsModule } from '@angular/forms';
+import { InlineSVGModule } from 'ng-inline-svg';
+import { InfiniteScrollModule } from 'ngx-infinite-scroll';
+import { ElasticsearchModule } from '../elasticsearch/elasticsearch.module';
+import { MapModule } from '../map/map.module';
+import { SharedModule } from '../shared/shared.module';
+import { DatasetDetailComponents } from './components';
+import { DatasetDetailRoutingModule } from './dataset-detail-routing.module';
+import { DatasetDetailResolvers } from './resolvers';
+import { DatasetDetailServices } from './services';
+
+@NgModule({
+  declarations: [...DatasetDetailComponents],
+  imports: [
+    CommonModule,
+    DatasetDetailRoutingModule,
+    ElasticsearchModule,
+    FormsModule,
+    ReactiveFormsModule,
+    MapModule,
+    SharedModule,
+    InlineSVGModule.forRoot(),
+    InfiniteScrollModule,
+  ],
+  providers: [...DatasetDetailServices, ...DatasetDetailResolvers],
+})
+export class DatasetDetailModule { }
diff --git a/src/app/geosource/models/dataset-child.model.ts b/src/app/dataset-detail/models/dataset-child.model.ts
similarity index 100%
rename from src/app/geosource/models/dataset-child.model.ts
rename to src/app/dataset-detail/models/dataset-child.model.ts
diff --git a/src/app/dataset-detail/models/index.ts b/src/app/dataset-detail/models/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..60f209105b826f4898ec4825207d09c1ce860459
--- /dev/null
+++ b/src/app/dataset-detail/models/index.ts
@@ -0,0 +1,4 @@
+export { DatasetChild, IDatasetRawChild } from './dataset-child.model';
+export { IProjection, Projection } from './projection.model';
+export { Format, IFormat, IResource, IResourceFormat, Resource } from './resource.model';
+
diff --git a/src/app/geosource/models/projection.model.ts b/src/app/dataset-detail/models/projection.model.ts
similarity index 100%
rename from src/app/geosource/models/projection.model.ts
rename to src/app/dataset-detail/models/projection.model.ts
diff --git a/src/app/geosource/models/resource.model.ts b/src/app/dataset-detail/models/resource.model.ts
similarity index 97%
rename from src/app/geosource/models/resource.model.ts
rename to src/app/dataset-detail/models/resource.model.ts
index 644ca166c23323eb3e5964162b7a0d2bf7ac67b4..4455d79d0628c1e4d6d2fe28e73abc58c37833af 100644
--- a/src/app/geosource/models/resource.model.ts
+++ b/src/app/dataset-detail/models/resource.model.ts
@@ -1,4 +1,4 @@
-import { IMetadataLink } from '.';
+import { IMetadataLink } from "../../elasticsearch/models";
 
 export interface IFormat {
   id: number;
diff --git a/src/app/geosource/resolvers/dataset-detail.resolver.ts b/src/app/dataset-detail/resolvers/dataset-detail.resolver.ts
similarity index 80%
rename from src/app/geosource/resolvers/dataset-detail.resolver.ts
rename to src/app/dataset-detail/resolvers/dataset-detail.resolver.ts
index f372e944aa83683e734407c8ed0eb480140a46f2..00be768c1e42d09de976c13a180724d911439478 100644
--- a/src/app/geosource/resolvers/dataset-detail.resolver.ts
+++ b/src/app/dataset-detail/resolvers/dataset-detail.resolver.ts
@@ -1,9 +1,9 @@
-import { Resolve, ActivatedRouteSnapshot } from '@angular/router';
 import { Injectable } from '@angular/core';
-import { catchError, map } from 'rxjs/operators';
+import { ActivatedRouteSnapshot, Resolve } from '@angular/router';
 import { of } from 'rxjs';
+import { catchError } from 'rxjs/operators';
+import { Dataset } from '../../elasticsearch/models';
 import { DatasetDetailService } from '../services';
-import { Dataset, Metadata, IMetadata } from '../models';
 
 @Injectable()
 export class DatasetDetailResolver implements Resolve<Dataset> {
diff --git a/src/app/geosource/resolvers/index.ts b/src/app/dataset-detail/resolvers/index.ts
similarity index 65%
rename from src/app/geosource/resolvers/index.ts
rename to src/app/dataset-detail/resolvers/index.ts
index af5791ad0a5fd7bdd91eebf12c18b09cac1d0792..c60a08bbd00334bd532317d11b569a6d0f23d542 100644
--- a/src/app/geosource/resolvers/index.ts
+++ b/src/app/dataset-detail/resolvers/index.ts
@@ -1,10 +1,8 @@
 import { DatasetDetailResolver } from './dataset-detail.resolver';
 
-export {
-  DatasetDetailResolver,
-};
+export { DatasetDetailResolver };
 
 // tslint:disable-next-line:variable-name
-export const GeosourceResolvers = [
+export const DatasetDetailResolvers = [
   DatasetDetailResolver,
 ];
diff --git a/src/app/geosource/services/dataset-detail.service.ts b/src/app/dataset-detail/services/dataset-detail.service.ts
similarity index 96%
rename from src/app/geosource/services/dataset-detail.service.ts
rename to src/app/dataset-detail/services/dataset-detail.service.ts
index ba06147f5f5ba90773ee505fefc698e98a81f5ad..56aafcadf6302db7656dbf51390579c6f8697dc4 100644
--- a/src/app/geosource/services/dataset-detail.service.ts
+++ b/src/app/dataset-detail/services/dataset-detail.service.ts
@@ -1,14 +1,12 @@
 import { Injectable } from '@angular/core';
-import { ElasticsearchService } from './elasticsearch.service';
-import {
-  Metadata, Dataset, DatasetChild, Data, IElasticsearchResponse, ElasticsearchOptions,
-  EditorialMetadata,
-} from '../models';
-import { Observable, Subject, of, forkJoin } from 'rxjs';
-import { map, catchError, flatMap, tap, finalize } from 'rxjs/operators';
-import { ErrorService, MatomoService } from '../../core/services';
+import { Observable, of, Subject } from 'rxjs';
+import { catchError, finalize, flatMap, map, tap } from 'rxjs/operators';
 import { notificationMessages } from '../../../i18n/traductions';
-import { IDatasetRawChild } from '../models/dataset-child.model';
+import { ErrorService, MatomoService } from '../../core/services';
+// tslint:disable-next-line: max-line-length
+import { Data, Dataset, EditorialMetadata, ElasticsearchOptions, IElasticsearchResponse, Metadata } from '../../elasticsearch/models';
+import { ElasticsearchService } from '../../elasticsearch/services/elasticsearch.service';
+import { DatasetChild, IDatasetRawChild } from '../models';
 
 @Injectable()
 export class DatasetDetailService {
diff --git a/src/app/dataset-detail/services/index.ts b/src/app/dataset-detail/services/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d72f59e5bb2f52aa61fad2f85abacf37051229de
--- /dev/null
+++ b/src/app/dataset-detail/services/index.ts
@@ -0,0 +1,10 @@
+import { DatasetDetailService } from './dataset-detail.service';
+import { ResourcesService } from './resources.service';
+
+export { DatasetDetailService, ResourcesService };
+
+// tslint:disable-next-line:variable-name
+export const DatasetDetailServices = [
+  DatasetDetailService,
+  ResourcesService,
+];
diff --git a/src/app/geosource/services/resources.service.ts b/src/app/dataset-detail/services/resources.service.ts
similarity index 100%
rename from src/app/geosource/services/resources.service.ts
rename to src/app/dataset-detail/services/resources.service.ts
diff --git a/src/app/geosource/components/filter-list/filter-detail/filter-detail.component.html b/src/app/datasets/components/filter-list/filter-detail/filter-detail.component.html
similarity index 100%
rename from src/app/geosource/components/filter-list/filter-detail/filter-detail.component.html
rename to src/app/datasets/components/filter-list/filter-detail/filter-detail.component.html
diff --git a/src/app/geosource/components/filter-list/filter-detail/filter-detail.component.scss b/src/app/datasets/components/filter-list/filter-detail/filter-detail.component.scss
similarity index 100%
rename from src/app/geosource/components/filter-list/filter-detail/filter-detail.component.scss
rename to src/app/datasets/components/filter-list/filter-detail/filter-detail.component.scss
diff --git a/src/app/geosource/components/filter-list/filter-detail/filter-detail.component.spec.ts b/src/app/datasets/components/filter-list/filter-detail/filter-detail.component.spec.ts
similarity index 100%
rename from src/app/geosource/components/filter-list/filter-detail/filter-detail.component.spec.ts
rename to src/app/datasets/components/filter-list/filter-detail/filter-detail.component.spec.ts
diff --git a/src/app/geosource/components/filter-list/filter-detail/filter-detail.component.ts b/src/app/datasets/components/filter-list/filter-detail/filter-detail.component.ts
similarity index 93%
rename from src/app/geosource/components/filter-list/filter-detail/filter-detail.component.ts
rename to src/app/datasets/components/filter-list/filter-detail/filter-detail.component.ts
index a714cddb3a9de7170192bdc00a3570ccc77d5176..5005ff01bc60295dc53c907538f3825d1fa9ade8 100644
--- a/src/app/geosource/components/filter-list/filter-detail/filter-detail.component.ts
+++ b/src/app/datasets/components/filter-list/filter-detail/filter-detail.component.ts
@@ -1,7 +1,6 @@
+import { Component, Input, OnInit } from '@angular/core';
+import { Aggregation, Filter } from '../../../../elasticsearch/models';
 import { DatasetResearchService } from '../../../services';
-import { Component, OnInit, Input } from '@angular/core';
-import { Filter } from '../../../models';
-import { Aggregation } from '../../../models/filter.model';
 
 @Component({
   selector: 'app-filter-detail',
diff --git a/src/app/geosource/components/filter-list/filter-list.component.html b/src/app/datasets/components/filter-list/filter-list.component.html
similarity index 100%
rename from src/app/geosource/components/filter-list/filter-list.component.html
rename to src/app/datasets/components/filter-list/filter-list.component.html
diff --git a/src/app/geosource/components/filter-list/filter-list.component.scss b/src/app/datasets/components/filter-list/filter-list.component.scss
similarity index 100%
rename from src/app/geosource/components/filter-list/filter-list.component.scss
rename to src/app/datasets/components/filter-list/filter-list.component.scss
diff --git a/src/app/geosource/components/filter-list/filter-list.component.spec.ts b/src/app/datasets/components/filter-list/filter-list.component.spec.ts
similarity index 100%
rename from src/app/geosource/components/filter-list/filter-list.component.spec.ts
rename to src/app/datasets/components/filter-list/filter-list.component.spec.ts
diff --git a/src/app/geosource/components/filter-list/filter-list.component.ts b/src/app/datasets/components/filter-list/filter-list.component.ts
similarity index 88%
rename from src/app/geosource/components/filter-list/filter-list.component.ts
rename to src/app/datasets/components/filter-list/filter-list.component.ts
index c40913b587f4743a5d7ded782d71e1c0b904a7fe..702bdfdf77b5f5eaef9eed397f327978d3ca6391 100644
--- a/src/app/geosource/components/filter-list/filter-list.component.ts
+++ b/src/app/datasets/components/filter-list/filter-list.component.ts
@@ -1,10 +1,8 @@
-import { Component, OnInit, OnDestroy } from '@angular/core';
-import { DatasetResearchService } from '../../services';
+import { Component, OnDestroy, OnInit } from '@angular/core';
 import { Subscription } from 'rxjs';
-import { Filter } from '../../models';
-import { Aggregation, IActiveFiltersTemplate } from '../../models/filter.model';
-import { scopesResearch } from '../../models/scopes-research';
 import { geosource } from '../../../../i18n/traductions';
+import { Aggregation, Filter, IActiveFiltersTemplate, scopesResearch } from '../../../elasticsearch/models';
+import { DatasetResearchService } from '../../services';
 
 @Component({
   selector: 'app-filter-list',
@@ -91,8 +89,8 @@ export class FilterListComponent implements OnInit, OnDestroy {
     const parentKey = (aggregationToRemove.aggregation.parentAggregation) ?
       aggregationToRemove.aggregation.parentAggregation.key : '';
     this._datasetResearchService.updateAggregation(aggregationToRemove.filter.field,
-                                                   aggregationToRemove.aggregation.key, false,
-                                                   parentKey);
+      aggregationToRemove.aggregation.key, false,
+      parentKey);
     this._datasetResearchService.triggerSearchChange();
 
   }
diff --git a/src/app/datasets/components/index.ts b/src/app/datasets/components/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..0c4188fe63396f1a54648e3bbc49f51816aebb7c
--- /dev/null
+++ b/src/app/datasets/components/index.ts
@@ -0,0 +1,23 @@
+import { FilterDetailComponent } from './filter-list/filter-detail/filter-detail.component';
+import { FilterListComponent } from './filter-list/filter-list.component';
+import { ResultDatasetComponent } from './results/result-dataset/result-dataset.component';
+import { ResultPostComponent } from './results/result-post/result-post.component';
+import { ResultsTabScopeComponent } from './results/results-tab-scope/results-tab-scope.component';
+import { ResultsComponent } from './results/results.component';
+// tslint:disable-next-line:max-line-length
+import { SearchBarComponent } from './search-bar/search-bar.component';
+import { SortComponent } from './sort/sort.component';
+
+export { ResultsComponent, SearchBarComponent, SortComponent, FilterListComponent, FilterDetailComponent, ResultDatasetComponent, ResultsTabScopeComponent, ResultPostComponent };
+
+// tslint:disable-next-line:variable-name
+export const DatasetsComponents = [
+  ResultsComponent,
+  SearchBarComponent,
+  SortComponent,
+  FilterListComponent,
+  FilterDetailComponent,
+  ResultDatasetComponent,
+  ResultsTabScopeComponent,
+  ResultPostComponent,
+];
diff --git a/src/app/geosource/components/results/result-dataset/result-dataset.component.html b/src/app/datasets/components/results/result-dataset/result-dataset.component.html
similarity index 100%
rename from src/app/geosource/components/results/result-dataset/result-dataset.component.html
rename to src/app/datasets/components/results/result-dataset/result-dataset.component.html
diff --git a/src/app/geosource/components/results/result-dataset/result-dataset.component.scss b/src/app/datasets/components/results/result-dataset/result-dataset.component.scss
similarity index 100%
rename from src/app/geosource/components/results/result-dataset/result-dataset.component.scss
rename to src/app/datasets/components/results/result-dataset/result-dataset.component.scss
diff --git a/src/app/geosource/components/results/result-dataset/result-dataset.component.spec.ts b/src/app/datasets/components/results/result-dataset/result-dataset.component.spec.ts
similarity index 100%
rename from src/app/geosource/components/results/result-dataset/result-dataset.component.spec.ts
rename to src/app/datasets/components/results/result-dataset/result-dataset.component.spec.ts
diff --git a/src/app/geosource/components/results/result-dataset/result-dataset.component.ts b/src/app/datasets/components/results/result-dataset/result-dataset.component.ts
similarity index 90%
rename from src/app/geosource/components/results/result-dataset/result-dataset.component.ts
rename to src/app/datasets/components/results/result-dataset/result-dataset.component.ts
index 14f9cb607ab71de60ec6eb5647b2f975dc64d564..411f518d3a249af9e7a717bd2f6105eee9665660 100644
--- a/src/app/geosource/components/results/result-dataset/result-dataset.component.ts
+++ b/src/app/datasets/components/results/result-dataset/result-dataset.component.ts
@@ -1,8 +1,7 @@
-import { Component, OnInit, Input } from '@angular/core';
-import { Dataset } from '../../../models';
-import { AppRoutes } from '../../../../routes';
+import { Component, Input, OnInit } from '@angular/core';
 import { geosource } from '../../../../../i18n/traductions';
-import { typesMetadata } from '../../../models/metadata.model';
+import { Dataset, typesMetadata } from '../../../../elasticsearch/models';
+import { AppRoutes } from '../../../../routes';
 
 @Component({
   selector: 'app-result-dataset',
diff --git a/src/app/geosource/components/results/result-post/result-post.component.html b/src/app/datasets/components/results/result-post/result-post.component.html
similarity index 100%
rename from src/app/geosource/components/results/result-post/result-post.component.html
rename to src/app/datasets/components/results/result-post/result-post.component.html
diff --git a/src/app/geosource/components/results/result-post/result-post.component.scss b/src/app/datasets/components/results/result-post/result-post.component.scss
similarity index 100%
rename from src/app/geosource/components/results/result-post/result-post.component.scss
rename to src/app/datasets/components/results/result-post/result-post.component.scss
diff --git a/src/app/geosource/components/results/result-post/result-post.component.ts b/src/app/datasets/components/results/result-post/result-post.component.ts
similarity index 100%
rename from src/app/geosource/components/results/result-post/result-post.component.ts
rename to src/app/datasets/components/results/result-post/result-post.component.ts
diff --git a/src/app/geosource/components/results/results-tab-scope/results-tab-scope.component.html b/src/app/datasets/components/results/results-tab-scope/results-tab-scope.component.html
similarity index 100%
rename from src/app/geosource/components/results/results-tab-scope/results-tab-scope.component.html
rename to src/app/datasets/components/results/results-tab-scope/results-tab-scope.component.html
diff --git a/src/app/geosource/components/results/results-tab-scope/results-tab-scope.component.scss b/src/app/datasets/components/results/results-tab-scope/results-tab-scope.component.scss
similarity index 100%
rename from src/app/geosource/components/results/results-tab-scope/results-tab-scope.component.scss
rename to src/app/datasets/components/results/results-tab-scope/results-tab-scope.component.scss
diff --git a/src/app/geosource/components/results/results-tab-scope/results-tab-scope.component.spec.ts b/src/app/datasets/components/results/results-tab-scope/results-tab-scope.component.spec.ts
similarity index 100%
rename from src/app/geosource/components/results/results-tab-scope/results-tab-scope.component.spec.ts
rename to src/app/datasets/components/results/results-tab-scope/results-tab-scope.component.spec.ts
diff --git a/src/app/geosource/components/results/results-tab-scope/results-tab-scope.component.ts b/src/app/datasets/components/results/results-tab-scope/results-tab-scope.component.ts
similarity index 71%
rename from src/app/geosource/components/results/results-tab-scope/results-tab-scope.component.ts
rename to src/app/datasets/components/results/results-tab-scope/results-tab-scope.component.ts
index a5582a5663c9ac398edd5bddfdaf7f07d3cf84ab..9505a8d2092ab66065276772866eeb54519762ac 100644
--- a/src/app/geosource/components/results/results-tab-scope/results-tab-scope.component.ts
+++ b/src/app/datasets/components/results/results-tab-scope/results-tab-scope.component.ts
@@ -1,6 +1,5 @@
-import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';
-import { scopesResearch } from '../../../models/scopes-research';
-import { IScope } from '../../../models/elasticsearch-options.model';
+import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
+import { IScope, scopesResearch } from '../../../../elasticsearch/models';
 
 @Component({
   selector: 'app-results-tab-scope',
diff --git a/src/app/geosource/components/results/results.component.html b/src/app/datasets/components/results/results.component.html
similarity index 100%
rename from src/app/geosource/components/results/results.component.html
rename to src/app/datasets/components/results/results.component.html
diff --git a/src/app/geosource/components/results/results.component.scss b/src/app/datasets/components/results/results.component.scss
similarity index 100%
rename from src/app/geosource/components/results/results.component.scss
rename to src/app/datasets/components/results/results.component.scss
diff --git a/src/app/geosource/components/results/results.component.spec.ts b/src/app/datasets/components/results/results.component.spec.ts
similarity index 100%
rename from src/app/geosource/components/results/results.component.spec.ts
rename to src/app/datasets/components/results/results.component.spec.ts
diff --git a/src/app/geosource/components/results/results.component.ts b/src/app/datasets/components/results/results.component.ts
similarity index 94%
rename from src/app/geosource/components/results/results.component.ts
rename to src/app/datasets/components/results/results.component.ts
index bf783d22f9f54f65ebcaffbae782a0d7fbe5b730..2cf9ee24b71c1a8da2dc7b1822569e8abcbd08d2 100644
--- a/src/app/geosource/components/results/results.component.ts
+++ b/src/app/datasets/components/results/results.component.ts
@@ -1,16 +1,14 @@
-import { Component, OnInit, OnDestroy } from '@angular/core';
-import { DatasetResearchService } from '../../services';
-import { Dataset, IMetadataLink, SearchSuggestion } from '../../models';
+import { DatePipe, ViewportScroller } from '@angular/common';
+import { Component, OnDestroy, OnInit } from '@angular/core';
 import { Subscription } from 'rxjs';
-import { PaginatorOptions } from '../../../shared/models';
-import { AppRoutes } from '../../../routes';
-import { NotificationService } from '../../../core/services';
 import { Notification } from '../../../core/models';
-import { DatePipe, ViewportScroller } from '@angular/common';
+import { NotificationService } from '../../../core/services';
 import { MatomoService } from '../../../core/services/matomo.service';
 import { CMSContent } from '../../../editorialisation/models';
-import { scopesResearch } from '../../models/scopes-research';
-import { IScope, ICountScope } from '../../models/elasticsearch-options.model';
+import { Dataset, IMetadataLink, IScope, SearchSuggestion } from '../../../elasticsearch/models';
+import { AppRoutes } from '../../../routes';
+import { PaginatorOptions } from '../../../shared/models';
+import { DatasetResearchService } from '../../services';
 
 @Component({
   selector: 'app-results',
diff --git a/src/app/geosource/components/search-bar/search-bar.component.html b/src/app/datasets/components/search-bar/search-bar.component.html
similarity index 100%
rename from src/app/geosource/components/search-bar/search-bar.component.html
rename to src/app/datasets/components/search-bar/search-bar.component.html
diff --git a/src/app/geosource/components/search-bar/search-bar.component.scss b/src/app/datasets/components/search-bar/search-bar.component.scss
similarity index 100%
rename from src/app/geosource/components/search-bar/search-bar.component.scss
rename to src/app/datasets/components/search-bar/search-bar.component.scss
diff --git a/src/app/geosource/components/search-bar/search-bar.component.spec.ts b/src/app/datasets/components/search-bar/search-bar.component.spec.ts
similarity index 91%
rename from src/app/geosource/components/search-bar/search-bar.component.spec.ts
rename to src/app/datasets/components/search-bar/search-bar.component.spec.ts
index 57189c13197f95a2ada32d3d3c686ee6e473df6c..d0cd5e281f8c7668e0b2047f443073517c9f8af2 100644
--- a/src/app/geosource/components/search-bar/search-bar.component.spec.ts
+++ b/src/app/datasets/components/search-bar/search-bar.component.spec.ts
@@ -1,4 +1,4 @@
-import { ElasticsearchService } from '../../services/elasticsearch.service';
+
 import { DatasetResearchService } from '../../services';
 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
 
@@ -8,6 +8,7 @@ import { FormsModule } from '@angular/forms';
 import { HttpClientModule } from '@angular/common/http';
 import { ErrorService, NotificationService } from '../../../core/services';
 import { StorageService } from '../../../core/services/storage.service';
+import { ElasticsearchService } from '../../../elasticsearch/services/elasticsearch.service';
 
 describe('SearchBarComponent', () => {
   let component: SearchBarComponent;
@@ -31,7 +32,7 @@ describe('SearchBarComponent', () => {
         NotificationService,
       ],
     })
-    .compileComponents();
+      .compileComponents();
   }));
 
   beforeEach(() => {
diff --git a/src/app/geosource/components/search-bar/search-bar.component.ts b/src/app/datasets/components/search-bar/search-bar.component.ts
similarity index 95%
rename from src/app/geosource/components/search-bar/search-bar.component.ts
rename to src/app/datasets/components/search-bar/search-bar.component.ts
index d6e6348da49080b7b62446ddcf5aa366e198f094..a9d425b4d63f5c5180185d127c7ed7ebf8b627ab 100644
--- a/src/app/geosource/components/search-bar/search-bar.component.ts
+++ b/src/app/datasets/components/search-bar/search-bar.component.ts
@@ -1,11 +1,10 @@
-import { Component, OnInit, Input, ViewChild, ElementRef } from '@angular/core';
-import { DatasetResearchService } from '../../services';
-import { SearchCompletion } from '../../models';
-import { debounceTime } from 'rxjs/operators';
-import { Subject } from 'rxjs';
 import { ViewportScroller } from '@angular/common';
-import { IScope } from '../../models/elasticsearch-options.model';
+import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';
+import { Subject } from 'rxjs';
+import { debounceTime } from 'rxjs/operators';
 import { geosource } from '../../../../i18n/traductions';
+import { IScope, SearchCompletion } from '../../../elasticsearch/models';
+import { DatasetResearchService } from '../../services';
 
 @Component({
   selector: 'app-search-bar',
diff --git a/src/app/geosource/components/sort/sort.component.html b/src/app/datasets/components/sort/sort.component.html
similarity index 100%
rename from src/app/geosource/components/sort/sort.component.html
rename to src/app/datasets/components/sort/sort.component.html
diff --git a/src/app/geosource/components/sort/sort.component.scss b/src/app/datasets/components/sort/sort.component.scss
similarity index 100%
rename from src/app/geosource/components/sort/sort.component.scss
rename to src/app/datasets/components/sort/sort.component.scss
diff --git a/src/app/geosource/components/sort/sort.component.spec.ts b/src/app/datasets/components/sort/sort.component.spec.ts
similarity index 100%
rename from src/app/geosource/components/sort/sort.component.spec.ts
rename to src/app/datasets/components/sort/sort.component.spec.ts
diff --git a/src/app/geosource/components/sort/sort.component.ts b/src/app/datasets/components/sort/sort.component.ts
similarity index 100%
rename from src/app/geosource/components/sort/sort.component.ts
rename to src/app/datasets/components/sort/sort.component.ts
diff --git a/src/app/datasets/datasets-routing.module.ts b/src/app/datasets/datasets-routing.module.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f464b059b74a8dfaad65b7625b8ac56e042f6135
--- /dev/null
+++ b/src/app/datasets/datasets-routing.module.ts
@@ -0,0 +1,28 @@
+import { NgModule } from '@angular/core';
+import { RouterModule, Routes } from '@angular/router';
+import { AppRoutes } from '../routes';
+import { ResultsComponent } from './components';
+
+export const routes: Routes = [
+  {
+    path: AppRoutes.datasets.uri,
+    component: ResultsComponent,
+    data: {
+      title: AppRoutes.datasets.title,
+    },
+  },
+  {
+    path: 'datasets/:id',
+    redirectTo: `${AppRoutes.datasets.uri}/:id`,
+  },
+  {
+    path: `${AppRoutes.datasets.uri}/:id`,
+    loadChildren: '../dataset-detail/dataset-detail.module#DatasetDetailModule',
+  },
+];
+
+@NgModule({
+  exports: [RouterModule],
+  imports: [RouterModule.forChild(routes)],
+})
+export class DatasetsRoutingModule { }
diff --git a/src/app/datasets/datasets.module.ts b/src/app/datasets/datasets.module.ts
new file mode 100644
index 0000000000000000000000000000000000000000..bbfa95e0aa0f65170f8c18bb8fcf608bf41db675
--- /dev/null
+++ b/src/app/datasets/datasets.module.ts
@@ -0,0 +1,24 @@
+import { CommonModule, DatePipe } from '@angular/common';
+import { NgModule } from '@angular/core';
+import { FormsModule } from '@angular/forms';
+import { ElasticsearchModule } from '../elasticsearch/elasticsearch.module';
+import { SharedModule } from '../shared/shared.module';
+import { DatasetsComponents, SearchBarComponent } from './components';
+import { DatasetsRoutingModule } from './datasets-routing.module';
+import { DatasetsServices } from './services';
+
+@NgModule({
+  declarations: [...DatasetsComponents],
+  exports: [
+    SearchBarComponent,
+  ],
+  imports: [
+    CommonModule,
+    DatasetsRoutingModule,
+    ElasticsearchModule,
+    SharedModule,
+    FormsModule,
+  ],
+  providers: [...DatasetsServices, DatePipe],
+})
+export class DatasetsModule { }
diff --git a/src/app/geosource/services/dataset-research.service.ts b/src/app/datasets/services/dataset-research.service.ts
similarity index 96%
rename from src/app/geosource/services/dataset-research.service.ts
rename to src/app/datasets/services/dataset-research.service.ts
index 31b8e93459344150384f660dff4064226ca5f1eb..2ed96e9948baf4d9ec4febfc110412206888095f 100644
--- a/src/app/geosource/services/dataset-research.service.ts
+++ b/src/app/datasets/services/dataset-research.service.ts
@@ -1,21 +1,16 @@
 import { Injectable } from '@angular/core';
-
+import { Router } from '@angular/router';
+import { Angulartics2Piwik } from 'angulartics2/piwik';
 import { Observable, Subject } from 'rxjs';
-
-import {
-  ISortOption, ElasticsearchOptions, IElasticsearchHit, Dataset, Highlights,
-  SearchCompletion, SearchSuggestion,
-} from '../models';
-import { ElasticsearchService } from './elasticsearch.service';
-import { map, catchError, tap } from 'rxjs/operators';
-import { notificationMessages, geosource } from '../../../i18n/traductions';
+import { catchError, map, tap } from 'rxjs/operators';
+import { geosource, notificationMessages } from '../../../i18n/traductions';
 import { ErrorService } from '../../core/services';
-import { Aggregation, Filter } from '../models/filter.model';
 import { CMSContent } from '../../editorialisation/models';
-import { IScope, ICountScope } from '../models/elasticsearch-options.model';
-import { scopesResearch } from '../models/scopes-research';
 import { IESCMSResponse } from '../../editorialisation/models/cms-content.model';
-import { Angulartics2Piwik } from 'angulartics2/piwik';
+// tslint:disable-next-line: max-line-length
+import { Aggregation, Dataset, ElasticsearchOptions, Filter, Highlights, ICountScope, IElasticsearchHit, IScope, ISortOption, scopesResearch, SearchCompletion, SearchSuggestion } from '../../elasticsearch/models';
+import { ElasticsearchService } from '../../elasticsearch/services/elasticsearch.service';
+import { AppRoutes } from '../../routes';
 
 @Injectable()
 export class DatasetResearchService {
@@ -32,6 +27,7 @@ export class DatasetResearchService {
     private _errorService: ErrorService,
     private _elasticsearchService: ElasticsearchService,
     private angulartics2Piwik: Angulartics2Piwik,
+    private _router: Router,
   ) {
     this._searchChangeSubject = new Subject<any>();
     this._datasetsReloadedSubject = new Subject<any>();
@@ -430,6 +426,9 @@ export class DatasetResearchService {
     this._elasticsearchOptions.searchString = value;
     this._elasticsearchOptions.pageIndex = 0;
     this._elasticsearchOptions.shouldAggregateResultCount = true;
+    if (this._router.url.split('/').pop() !== AppRoutes.datasets.uri) {
+      this._router.navigate(['/', AppRoutes.datasets.uri]);
+    }
     this._searchChangeSubject.next();
   }
 
diff --git a/src/app/datasets/services/index.ts b/src/app/datasets/services/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..181021dcf02a8f9a01c724706e826b94bbae624d
--- /dev/null
+++ b/src/app/datasets/services/index.ts
@@ -0,0 +1,8 @@
+import { DatasetResearchService } from './dataset-research.service';
+
+export { DatasetResearchService };
+
+// tslint:disable-next-line:variable-name
+export const DatasetsServices = [
+  DatasetResearchService,
+];
diff --git a/src/app/editorialisation/components/cms-post-detail/cms-post-detail.component.ts b/src/app/editorialisation/components/cms-post-detail/cms-post-detail.component.ts
index c04ec94d7b611a984a33ab7aad5785762927df71..d06fbe212e88895d78b176ff6863c88e3e7de20e 100644
--- a/src/app/editorialisation/components/cms-post-detail/cms-post-detail.component.ts
+++ b/src/app/editorialisation/components/cms-post-detail/cms-post-detail.component.ts
@@ -1,14 +1,13 @@
+import { DatePipe } from '@angular/common';
 import { Component, OnInit } from '@angular/core';
+import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
 import { ActivatedRoute, Router } from '@angular/router';
-import { SafeHtml, DomSanitizer } from '@angular/platform-browser';
-import { CMSContent } from '../../models/cms-content.model';
-import { IPageHeaderInfo } from '../../../shared/models';
-import { DatePipe } from '@angular/common';
 import { notificationMessages } from '../../../../i18n/traductions';
+import { Metadata, typesMetadata } from '../../../elasticsearch/models';
+import { ElasticsearchService } from '../../../elasticsearch/services/elasticsearch.service';
 import { AppRoutes } from '../../../routes';
-import { ElasticsearchService } from '../../../geosource/services';
-import { Metadata } from '../../../geosource/models';
-import { typesMetadata } from '../../../geosource/models/metadata.model';
+import { IPageHeaderInfo } from '../../../shared/models';
+import { CMSContent } from '../../models/cms-content.model';
 
 @Component({
   selector: 'app-cms-post-detail',
diff --git a/src/app/editorialisation/components/cms-posts-list/cms-drafts-list.component.ts b/src/app/editorialisation/components/cms-posts-list/cms-drafts-list.component.ts
index 9ebb6703b8dedacc071869d551e45caedc3280e2..d18fc6a30077b32a4d7501094c3607623e941d0a 100644
--- a/src/app/editorialisation/components/cms-posts-list/cms-drafts-list.component.ts
+++ b/src/app/editorialisation/components/cms-posts-list/cms-drafts-list.component.ts
@@ -1,7 +1,7 @@
 import { Component, OnInit } from '@angular/core';
-import { ElasticsearchService } from '../../../geosource/services';
 import { AppRoutes } from '../../../routes';
 import { CMSContent, IESCMSResponse } from '../../models/cms-content.model';
+import { ElasticsearchService } from '../../../elasticsearch/services/elasticsearch.service';
 
 @Component({
   selector: 'app-cms-drafts-list',
diff --git a/src/app/editorialisation/components/home/home.component.html b/src/app/editorialisation/components/home/home.component.html
index bdb35223402013fecfa1bedf352d1fd23211da1b..b249bb817dbdcd937c709447507471198a1d22ef 100644
--- a/src/app/editorialisation/components/home/home.component.html
+++ b/src/app/editorialisation/components/home/home.component.html
@@ -15,7 +15,7 @@
     </div>
     <div class="search column is-7-desktop is-8-tablet ">
       <app-search-bar class="app-search-bar"></app-search-bar>
-      <a class="explore-link" [routerLink]="['/', AppRoutes.research.uri]" (click)="trackExploreButtonEvent()">
+      <a class="explore-link" [routerLink]="['/', AppRoutes.datasets.uri]" (click)="trackExploreButtonEvent()">
         <button class="button explore-button" i18n="@@home.explore">Explore</button>
       </a>
     </div>
diff --git a/src/app/editorialisation/components/home/home.component.ts b/src/app/editorialisation/components/home/home.component.ts
index 8991a5659666e2003c8541f4c5ccbb567681b777..b6fd0a3bd67741502e1b358b9a120d4252978c78 100644
--- a/src/app/editorialisation/components/home/home.component.ts
+++ b/src/app/editorialisation/components/home/home.component.ts
@@ -1,15 +1,16 @@
 import { Component, OnInit } from '@angular/core';
-import { CMSContent, IESCMSResponse } from '../../models/cms-content.model';
 import { Router } from '@angular/router';
-import { ElasticsearchService, DatasetResearchService } from '../../../geosource/services';
-import { AppRoutes } from '../../../routes';
-import { scopesResearch } from '../../../geosource/models/scopes-research';
-import { environment } from '../../../../environments/environment';
+import { Angulartics2Piwik } from 'angulartics2/piwik';
 import { forkJoin } from 'rxjs/internal/observable/forkJoin';
-import { NotificationService } from '../../../core/services';
-import { Notification } from '../../../core/models';
+import { environment } from '../../../../environments/environment';
 import { notificationMessages } from '../../../../i18n/traductions';
-import { Angulartics2Piwik } from 'angulartics2/piwik';
+import { Notification } from '../../../core/models';
+import { NotificationService } from '../../../core/services';
+import { DatasetResearchService } from '../../../datasets/services';
+import { scopesResearch } from '../../../elasticsearch/models';
+import { ElasticsearchService } from '../../../elasticsearch/services/elasticsearch.service';
+import { AppRoutes } from '../../../routes';
+import { CMSContent, IESCMSResponse } from '../../models/cms-content.model';
 
 @Component({
   selector: 'app-home',
@@ -99,7 +100,7 @@ export class HomeComponent implements OnInit {
   goToPostsResearch() {
     this._datasetResearchService.resetResearch();
     this._datasetResearchService.scopeReasearch = scopesResearch.post;
-    this._router.navigate(['/', AppRoutes.research.uri]);
+    this._router.navigate(['/', AppRoutes.datasets.uri]);
   }
 
   trackExploreButtonEvent() {
diff --git a/src/app/editorialisation/components/organizations/organizations.component.ts b/src/app/editorialisation/components/organizations/organizations.component.ts
index 793a8fe2fd1600267f71dc4641483fd38c69ff1d..536202a1ad34ab3373a04325a8dfa9b1c326bfeb 100644
--- a/src/app/editorialisation/components/organizations/organizations.component.ts
+++ b/src/app/editorialisation/components/organizations/organizations.component.ts
@@ -1,14 +1,14 @@
 import { Component, OnInit } from '@angular/core';
-import { OrganizationsService } from '../../services/organizations.service';
-import { Organization } from '../../models';
-import { ElasticsearchService, DatasetResearchService } from '../../../geosource/services';
 import { Router } from '@angular/router';
+import { notificationMessages, pageTitles } from '../../../../i18n/traductions';
+import { NotificationService } from '../../../core/services';
+import { DatasetResearchService } from '../../../datasets/services';
+import { Aggregation, scopesResearch } from '../../../elasticsearch/models';
+import { ElasticsearchService } from '../../../elasticsearch/services/elasticsearch.service';
 import { AppRoutes } from '../../../routes';
-import { Aggregation } from '../../../geosource/models/filter.model';
-import { scopesResearch } from '../../../geosource/models/scopes-research';
 import { IPageHeaderInfo } from '../../../shared/models';
-import { pageTitles, notificationMessages } from '../../../../i18n/traductions';
-import { NotificationService } from '../../../core/services';
+import { Organization } from '../../models';
+import { OrganizationsService } from '../../services/organizations.service';
 
 @Component({
   selector: 'app-organizations',
@@ -70,7 +70,7 @@ export class OrganizationsComponent implements OnInit {
     this._datasetResearchService.getResults().subscribe(() => {
       this._datasetResearchService.updateAggregation('metadata-fr.responsibleParty.organisationName', name, true);
       this._datasetResearchService.scopeReasearch = scopesResearch.datasets;
-      this._router.navigate(['/', AppRoutes.research.uri]);
+      this._router.navigate(['/', AppRoutes.datasets.uri]);
     });
   }
 
@@ -80,7 +80,7 @@ export class OrganizationsComponent implements OnInit {
     this._datasetResearchService.getResults().subscribe(() => {
       this._datasetResearchService.updateAggregation('metadata-fr.responsibleParty.organisationName', name, true);
       this._datasetResearchService.scopeReasearch = scopesResearch.services;
-      this._router.navigate(['/', AppRoutes.research.uri]);
+      this._router.navigate(['/', AppRoutes.datasets.uri]);
     });
 
   }
diff --git a/src/app/editorialisation/components/reuse-detail/reuse-detail.component.ts b/src/app/editorialisation/components/reuse-detail/reuse-detail.component.ts
index e6da59e0d60893f564f364d9f02177add5fa6859..5ec7ecf3c712d3bccb1dc1dce48800679af2b0e4 100644
--- a/src/app/editorialisation/components/reuse-detail/reuse-detail.component.ts
+++ b/src/app/editorialisation/components/reuse-detail/reuse-detail.component.ts
@@ -1,14 +1,13 @@
 import { Component, OnInit } from '@angular/core';
-import { IPageHeaderInfo } from '../../../shared/models';
-import { ReusesService } from '../../services';
-import { filter, switchMap, map } from 'rxjs/operators';
-import { ParamMap, ActivatedRoute } from '@angular/router';
-import { IReuse, Reuse } from '../../models';
-import { ElasticsearchService } from '../../../geosource/services';
-import { Metadata, IElasticsearchResponse } from '../../../geosource/models';
-import { typesMetadata } from '../../../geosource/models/metadata.model';
+import { ActivatedRoute, ParamMap } from '@angular/router';
 import { forkJoin } from 'rxjs';
+import { filter, map, switchMap } from 'rxjs/operators';
+import { Metadata, typesMetadata } from '../../../elasticsearch/models';
+import { ElasticsearchService } from '../../../elasticsearch/services/elasticsearch.service';
 import { AppRoutes } from '../../../routes';
+import { IPageHeaderInfo } from '../../../shared/models';
+import { Reuse } from '../../models';
+import { ReusesService } from '../../services';
 
 @Component({
   selector: 'app-reuse-detail',
diff --git a/src/app/editorialisation/components/site-map/site-map.component.html b/src/app/editorialisation/components/site-map/site-map.component.html
index 88414fc48fcd33717cadd70185d42b13c815033b..25442c329c56a1b234efd036890e3bed073c1d79 100644
--- a/src/app/editorialisation/components/site-map/site-map.component.html
+++ b/src/app/editorialisation/components/site-map/site-map.component.html
@@ -6,7 +6,7 @@
       <p class="pages-group-title" i18n="@@sitemap.mainPages">Main pages</p>
       <ul class="pages-list">
         <li><a class="link-1" [routerLink]="['/', AppRoutes.home.uri]" i18n="@@sitemap.home">Home</a></li>
-        <li><a class="link-1" [routerLink]="['/', AppRoutes.research.uri]" i18n="@@sitemap.research">Research</a></li>
+        <li><a class="link-1" [routerLink]="['/', AppRoutes.datasets.uri]" i18n="@@sitemap.research">Research</a></li>
         <li><a class="link-1" [routerLink]="['/', AppRoutes.partners.uri]" i18n="@@sitemap.partners">Partners</a></li>
         <li><a class="link-1" [routerLink]="['/', AppRoutes.approach.uri]" i18n="@@sitemap.approach">Approach</a></li>
         <li><a class="link-1" [routerLink]="['/', AppRoutes.documentation.uri]">Documentation</a></li>
diff --git a/src/app/editorialisation/editorialisation.module.ts b/src/app/editorialisation/editorialisation.module.ts
index e8be70b5032b11442f4b69880cf3a99001f69cb9..08d16c1542ead29e39a9a89ae685d2b53d200af6 100644
--- a/src/app/editorialisation/editorialisation.module.ts
+++ b/src/app/editorialisation/editorialisation.module.ts
@@ -1,18 +1,20 @@
-import { NgModule } from '@angular/core';
 import { CommonModule } from '@angular/common';
-import { EditorialisationRoutingModule } from './editorialisation-routing.module';
+import { NgModule } from '@angular/core';
+import { intersectionObserverPreset, LazyLoadImageModule } from 'ng-lazyload-image';
+import { DatasetsModule } from '../datasets/datasets.module';
+import { ElasticsearchModule } from '../elasticsearch/elasticsearch.module';
+import { SharedModule } from '../shared/shared.module';
 import { EditorialisationComponents } from './components';
-import { EditorialisationServices } from './services';
+import { EditorialisationRoutingModule } from './editorialisation-routing.module';
 import { EditorialisationResolvers } from './resolvers';
-import { SharedModule } from '../shared/shared.module';
-import { GeosourceModule } from '../geosource/geosource.module';
-import { LazyLoadImageModule, intersectionObserverPreset } from 'ng-lazyload-image';
+import { EditorialisationServices } from './services';
 
 @NgModule({
   imports: [
     CommonModule,
+    ElasticsearchModule,
+    DatasetsModule,
     EditorialisationRoutingModule,
-    GeosourceModule.forRoot(),
     SharedModule,
     LazyLoadImageModule.forRoot({
       preset: intersectionObserverPreset,
diff --git a/src/app/editorialisation/services/editorialisation.service.ts b/src/app/editorialisation/services/editorialisation.service.ts
index 18397755647ef1ce10abde024dae509226e8ab2e..2326009f22ee9fa69bdcfffdc77c6e5a4101e862 100644
--- a/src/app/editorialisation/services/editorialisation.service.ts
+++ b/src/app/editorialisation/services/editorialisation.service.ts
@@ -3,13 +3,12 @@ import { Observable } from 'rxjs';
 import { map, catchError } from 'rxjs/operators';
 import { Injectable } from '@angular/core';
 import { environment } from '../../../environments/environment';
-import { HttpClient } from '@angular/common/http';
 import {
   CMSContent, IGhostContentResponse, IESCMSResponse,
 } from '../models/cms-content.model';
 import { ErrorService } from '../../core/services';
 import { notificationMessages } from '../../../i18n/traductions';
-import { ElasticsearchService } from '../../geosource/services';
+import { ElasticsearchService } from '../../elasticsearch/services/elasticsearch.service';
 
 @Injectable()
 export class EditorialisationService {
diff --git a/src/app/elasticsearch/elasticsearch.module.ts b/src/app/elasticsearch/elasticsearch.module.ts
new file mode 100644
index 0000000000000000000000000000000000000000..4a0e63295c6ea6cc43bf1f0b937ab93025c27c03
--- /dev/null
+++ b/src/app/elasticsearch/elasticsearch.module.ts
@@ -0,0 +1,14 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { ElasticsearchService } from './services/elasticsearch.service';
+
+@NgModule({
+  declarations: [],
+  imports: [
+    CommonModule,
+  ],
+  providers: [
+    ElasticsearchService,
+  ],
+})
+export class ElasticsearchModule { }
diff --git a/src/app/geosource/models/data.model.ts b/src/app/elasticsearch/models/data.model.ts
similarity index 100%
rename from src/app/geosource/models/data.model.ts
rename to src/app/elasticsearch/models/data.model.ts
diff --git a/src/app/geosource/models/dataset.model.ts b/src/app/elasticsearch/models/dataset.model.ts
similarity index 93%
rename from src/app/geosource/models/dataset.model.ts
rename to src/app/elasticsearch/models/dataset.model.ts
index 62ab5bee52228780c6d08f6bc15f3c13547ce51b..e5ca390baf025f4982fffd6d925391f7009f7831 100644
--- a/src/app/geosource/models/dataset.model.ts
+++ b/src/app/elasticsearch/models/dataset.model.ts
@@ -1,7 +1,7 @@
-import { IMetadata, Metadata, linkFormats } from './metadata.model';
+import { Data } from './data.model';
+import { EditorialMetadata, IEditorialMetadata } from './editorial-metadata.model';
 import { Highlights } from './highlights.model';
-import { Data, IData } from './data.model';
-import { IEditorialMetadata, EditorialMetadata } from './editorial-metadata.model';
+import { IMetadata, linkFormats, Metadata } from './metadata.model';
 
 export interface IDataset {
   _index?: string;
diff --git a/src/app/geosource/models/editorial-metadata.model.ts b/src/app/elasticsearch/models/editorial-metadata.model.ts
similarity index 100%
rename from src/app/geosource/models/editorial-metadata.model.ts
rename to src/app/elasticsearch/models/editorial-metadata.model.ts
diff --git a/src/app/geosource/models/elasticsearch-options.model.ts b/src/app/elasticsearch/models/elasticsearch-options.model.ts
similarity index 87%
rename from src/app/geosource/models/elasticsearch-options.model.ts
rename to src/app/elasticsearch/models/elasticsearch-options.model.ts
index 6f39e433a44dbe5a2c01e8687c072316cd78fa22..10973ddb0b2a61192df74d736d884775e5ba2ec4 100644
--- a/src/app/geosource/models/elasticsearch-options.model.ts
+++ b/src/app/elasticsearch/models/elasticsearch-options.model.ts
@@ -1,7 +1,7 @@
 import { geosource } from '../../../i18n/traductions';
+import { Filter } from './filter.model';
 import { scopesResearch } from './scopes-research';
 import { ISortOption } from './sort-option.model';
-import { Filter } from './filter.model';
 
 export interface IPostsESOptions {
   type?: string;
@@ -25,31 +25,31 @@ export interface IScope {
 }
 
 export interface IElasticsearchOptions {
-  'pageIndex'?: number;
-  'from'?: number;
-  'pageSize'?: number;
-  'sortOptions'?: ISortOption;
-  'searchString'?: string;
-  'filters'?: Filter[];
-  'shouldAggregateResultCount': boolean;
-  'shouldAggregateFilters': boolean;
-  'scope': IScope;
-  'useCache': boolean;
+  pageIndex?: number;
+  from?: number;
+  pageSize?: number;
+  sortOptions?: ISortOption;
+  searchString?: string;
+  filters?: Filter[];
+  shouldAggregateResultCount: boolean;
+  shouldAggregateFilters: boolean;
+  scope: IScope;
+  useCache: boolean;
 }
 
 export class ElasticsearchOptions {
-  '_pageIndex': number;
-  'from'?: number;
-  '_pageSize': number;
-  '_sortOptions': ISortOption;
-  '_searchString': string;
-  '_filters': Filter[];
-  'shouldAggregateResultCount': boolean;
-  'shouldAggregateFilters': boolean;
-  'fromAutocompletion': boolean;
-  'scope': IScope;
-  'useCache': boolean;
-  'otherLicenceAggregations': string[];
+  _pageIndex: number;
+  from?: number;
+  _pageSize: number;
+  _sortOptions: ISortOption;
+  _searchString: string;
+  _filters: Filter[];
+  shouldAggregateResultCount: boolean;
+  shouldAggregateFilters: boolean;
+  fromAutocompletion: boolean;
+  scope: IScope;
+  useCache: boolean;
+  otherLicenceAggregations: string[];
 
   constructor(data?) {
     this.from = (data && data.from != null) ? data.from : 0;
diff --git a/src/app/geosource/models/elasticsearch-hit.model.ts b/src/app/elasticsearch/models/elasticsearch-response.model.ts
similarity index 51%
rename from src/app/geosource/models/elasticsearch-hit.model.ts
rename to src/app/elasticsearch/models/elasticsearch-response.model.ts
index 43863044e93ff93a2efa6909e1c5540568007d92..52411101458da4120ae164e3799eae0f7d96cd8b 100644
--- a/src/app/geosource/models/elasticsearch-hit.model.ts
+++ b/src/app/elasticsearch/models/elasticsearch-response.model.ts
@@ -1,15 +1,8 @@
-import { IMetadata } from '.';
-import { IData } from './data.model';
-import { IESCMSResponse } from '../../editorialisation/models/cms-content.model';
-
 export interface IElasticsearchHit {
   '_id': string;
   '_index': string;
   '_score': number;
-  '_source': {
-    'metadata-fr': IMetadata;
-    'data-fr': IData;
-  } | IESCMSResponse;
+  '_source': any;
   'uuid': string;
   'slug': string;
   'inner_hits': {
@@ -21,3 +14,14 @@ export interface IElasticsearchHit {
     },
   };
 }
+
+export interface IElasticsearchResponse {
+  'took': number;
+  'hits': {
+    'total': number,
+    'max_score': number,
+    'hits': IElasticsearchHit[],
+  };
+  'suggest': any;
+  'aggregations': any;
+}
diff --git a/src/app/geosource/models/filter.model.ts b/src/app/elasticsearch/models/filter.model.ts
similarity index 100%
rename from src/app/geosource/models/filter.model.ts
rename to src/app/elasticsearch/models/filter.model.ts
diff --git a/src/app/geosource/models/highlights.model.ts b/src/app/elasticsearch/models/highlights.model.ts
similarity index 100%
rename from src/app/geosource/models/highlights.model.ts
rename to src/app/elasticsearch/models/highlights.model.ts
diff --git a/src/app/elasticsearch/models/index.ts b/src/app/elasticsearch/models/index.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d6e7e55c91ef7c3f09a6bcf567cc353c66e59170
--- /dev/null
+++ b/src/app/elasticsearch/models/index.ts
@@ -0,0 +1,15 @@
+export { Data, IData } from './data.model';
+export { Dataset, IDataset, IDatasetFields } from './dataset.model';
+export { EditorialMetadata, IEditorialMetadata } from './editorial-metadata.model';
+// tslint:disable-next-line: max-line-length
+export { ElasticsearchOptions, ICountScope, IElasticsearchOptions, IPostsESOptions, IScope } from './elasticsearch-options.model';
+export { IElasticsearchHit, IElasticsearchResponse } from './elasticsearch-response.model';
+export { Aggregation, Filter, IActiveFiltersTemplate, IFilter } from './filter.model';
+export { Highlights, IHighlights } from './highlights.model';
+// tslint:disable-next-line: max-line-length
+export { IMetadata, IMetadataLink, IParentDataset, IResponsibleParty, linkFormats, Metadata, typesMetadata } from './metadata.model';
+export { scopesResearch } from './scopes-research'; // This is not really a model
+export { SearchCompletion } from './search-completion.model';
+export { ISortOption } from './sort-option.model';
+export { SearchSuggestion } from './suggestion.model';
+
diff --git a/src/app/geosource/models/metadata.model.ts b/src/app/elasticsearch/models/metadata.model.ts
similarity index 99%
rename from src/app/geosource/models/metadata.model.ts
rename to src/app/elasticsearch/models/metadata.model.ts
index a8e68a1788eb29a21b3fb245e8283de3084ffa1b..908463a9fd93587c2aab52e9f7ca9209839d9169 100644
--- a/src/app/geosource/models/metadata.model.ts
+++ b/src/app/elasticsearch/models/metadata.model.ts
@@ -173,7 +173,7 @@ export class Metadata {
       }
       this.keyword = data.keyword;
 
-      const providersToAdd = new Set();
+      const providersToAdd = new Set<string>();
       this.contacts = [];
       if (data.responsibleParty) {
         data.responsibleParty.forEach((party) => {
diff --git a/src/app/geosource/models/scopes-research.ts b/src/app/elasticsearch/models/scopes-research.ts
similarity index 100%
rename from src/app/geosource/models/scopes-research.ts
rename to src/app/elasticsearch/models/scopes-research.ts
diff --git a/src/app/geosource/models/search-completion.model.ts b/src/app/elasticsearch/models/search-completion.model.ts
similarity index 100%
rename from src/app/geosource/models/search-completion.model.ts
rename to src/app/elasticsearch/models/search-completion.model.ts
diff --git a/src/app/geosource/models/sort-option.model.ts b/src/app/elasticsearch/models/sort-option.model.ts
similarity index 100%
rename from src/app/geosource/models/sort-option.model.ts
rename to src/app/elasticsearch/models/sort-option.model.ts
diff --git a/src/app/geosource/models/suggestion.model.ts b/src/app/elasticsearch/models/suggestion.model.ts
similarity index 100%
rename from src/app/geosource/models/suggestion.model.ts
rename to src/app/elasticsearch/models/suggestion.model.ts
diff --git a/src/app/geosource/services/elasticsearch.service.ts b/src/app/elasticsearch/services/elasticsearch.service.ts
similarity index 98%
rename from src/app/geosource/services/elasticsearch.service.ts
rename to src/app/elasticsearch/services/elasticsearch.service.ts
index ff0b2b11021af07717343b16d5404ee086fd383a..b79be4f181a66fb14d4e240a92e761bcb62b4a4e 100644
--- a/src/app/geosource/services/elasticsearch.service.ts
+++ b/src/app/elasticsearch/services/elasticsearch.service.ts
@@ -1,17 +1,12 @@
-import { Injectable } from '@angular/core';
-import {
-  ElasticsearchOptions, IElasticsearchResponse,
-  SearchSuggestion, SearchCompletion, Filter,
-} from '../models';
 import { HttpClient } from '@angular/common/http';
+import { Injectable } from '@angular/core';
 import { Observable } from 'rxjs';
-import { map, catchError } from 'rxjs/operators';
+import { catchError, map } from 'rxjs/operators';
+import { geosource, notificationMessages } from '../../../i18n/traductions';
 import { ErrorService } from '../../core/services';
-import { notificationMessages, geosource } from '../../../i18n/traductions';
-import { IPostsESOptions } from '../models/elasticsearch-options.model';
-import { Aggregation } from '../models/filter.model';
-import { scopesResearch } from '../models/scopes-research';
 import { APP_CONFIG } from '../../core/services/app-config.service';
+// tslint:disable-next-line: max-line-length
+import { Aggregation, ElasticsearchOptions, Filter, IElasticsearchResponse, IPostsESOptions, scopesResearch, SearchCompletion, SearchSuggestion } from '../models';
 
 @Injectable()
 export class ElasticsearchService {
@@ -94,7 +89,7 @@ export class ElasticsearchService {
         },
         collapse: {
           field: 'metadata-fr.geonet:info.uuid.keyword',
-        }
+        },
       },
     }).pipe(
       map((response) => {
diff --git a/src/app/geosource/components/index.ts b/src/app/geosource/components/index.ts
deleted file mode 100644
index d4fb2370bbdac5a21782b33138f389424f85bdae..0000000000000000000000000000000000000000
--- a/src/app/geosource/components/index.ts
+++ /dev/null
@@ -1,74 +0,0 @@
-import { ResultsComponent } from './results/results.component';
-import { DatasetDetailComponent } from './dataset-detail/dataset-detail.component';
-
-import { DatasetResourcesComponent } from './dataset-detail/dataset-resources/dataset-resources.component';
-// tslint:disable-next-line:max-line-length
-import { ResourceQueryableComponent } from './dataset-detail/dataset-resources/resources-queryable/resource-queryable/resource-queryable.component';
-// tslint:disable-next-line:max-line-length
-import { ResourcesQueryableComponent } from './dataset-detail/dataset-resources/resources-queryable/resources-queryable.component';
-// tslint:disable-next-line:max-line-length
-import { ResourceDownloadableComponent } from './dataset-detail/dataset-resources/resource-downloadable/resource-downloadable.component';
-import { DatasetMapComponent } from './dataset-detail/dataset-map/dataset-map.component';
-import { DatasetInfoComponent } from './dataset-detail/dataset-info/dataset-info.component';
-import { DatasetTableComponent } from './dataset-detail/dataset-table/dataset-table.component';
-import { IconFormatComponent } from './dataset-detail/dataset-resources/icon-format/icon-format.component';
-import { SearchBarComponent } from './search-bar/search-bar.component';
-import { ResearchComponent } from './research/research.component';
-import { SortComponent } from './sort/sort.component';
-import { FilterListComponent } from './filter-list/filter-list.component';
-import { FilterDetailComponent } from './filter-list/filter-detail/filter-detail.component';
-import { ResultDatasetComponent } from './results/result-dataset/result-dataset.component';
-import { ResultsTabScopeComponent } from './results/results-tab-scope/results-tab-scope.component';
-import { ResultPostComponent } from './results/result-post/result-post.component';
-import { DatasetTableMapComponent } from './dataset-detail/dataset-table-map/dataset-table-map.component';
-import { DatasetDataDetailsComponent } from './dataset-detail/dataset-data-details/dataset-data-details.component';
-import { DatasetDataDetailPropertiesComponent } from './dataset-detail/dataset-data-details/dataset-data-detail-properties/dataset-data-detail-properties.component';
-
-export {
-  DatasetDetailComponent,
-  DatasetResourcesComponent,
-  ResourceQueryableComponent,
-  ResourceDownloadableComponent,
-  DatasetMapComponent,
-  DatasetInfoComponent,
-  DatasetTableMapComponent,
-  DatasetTableComponent,
-  ResultsComponent,
-  SearchBarComponent,
-  ResearchComponent,
-  SortComponent,
-  FilterListComponent,
-  FilterDetailComponent,
-  ResultDatasetComponent,
-  ResultsTabScopeComponent,
-  ResultPostComponent,
-  ResourcesQueryableComponent,
-  IconFormatComponent,
-  DatasetDataDetailsComponent,
-  DatasetDataDetailPropertiesComponent,
-};
-
-// tslint:disable-next-line:variable-name
-export const GeosourceComponents = [
-  DatasetDetailComponent,
-  DatasetResourcesComponent,
-  ResourceQueryableComponent,
-  ResourceDownloadableComponent,
-  DatasetMapComponent,
-  DatasetInfoComponent,
-  DatasetTableMapComponent,
-  DatasetTableComponent,
-  ResultsComponent,
-  SearchBarComponent,
-  ResearchComponent,
-  SortComponent,
-  FilterListComponent,
-  FilterDetailComponent,
-  ResultDatasetComponent,
-  ResultsTabScopeComponent,
-  ResultPostComponent,
-  ResourcesQueryableComponent,
-  IconFormatComponent,
-  DatasetDataDetailsComponent,
-  DatasetDataDetailPropertiesComponent,
-];
diff --git a/src/app/geosource/components/research/research.component.html b/src/app/geosource/components/research/research.component.html
deleted file mode 100644
index 0680b43f9c6ae05df91c576141f20ed411d07c7d..0000000000000000000000000000000000000000
--- a/src/app/geosource/components/research/research.component.html
+++ /dev/null
@@ -1 +0,0 @@
-<router-outlet></router-outlet>
diff --git a/src/app/geosource/components/research/research.component.scss b/src/app/geosource/components/research/research.component.scss
deleted file mode 100644
index 01e4ffbea964cafb8a918fb48d12f258620a3704..0000000000000000000000000000000000000000
--- a/src/app/geosource/components/research/research.component.scss
+++ /dev/null
@@ -1,9 +0,0 @@
-
-@import "../../../../../node_modules/bulma/sass/utilities/_all";
-
-@media screen and (max-width: $desktop - 1px) {
-  .research-container {
-    margin-left: 1.5rem;
-    margin-right: 1.5rem;
-  }
-}
diff --git a/src/app/geosource/components/research/research.component.spec.ts b/src/app/geosource/components/research/research.component.spec.ts
deleted file mode 100644
index c4ea8abdcb15bd4608fe9939d1b9ae220a75d3ef..0000000000000000000000000000000000000000
--- a/src/app/geosource/components/research/research.component.spec.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { ResearchComponent } from './research.component';
-import { MockComponent } from 'ng2-mock-component';
-import { RouterTestingModule } from '@angular/router/testing';
-import { DatasetResearchService, ElasticsearchService } from '../../services';
-import { HttpClientModule } from '@angular/common/http';
-import { ErrorService, NotificationService } from '../../../core/services';
-import { StorageService } from '../../../core/services/storage.service';
-
-describe('ResearchComponent', () => {
-  let component: ResearchComponent;
-  let fixture: ComponentFixture<ResearchComponent>;
-
-  beforeEach(async(() => {
-    TestBed.configureTestingModule({
-      imports: [
-        RouterTestingModule.withRoutes([]),
-        HttpClientModule,
-      ],
-      declarations: [
-        ResearchComponent,
-        MockComponent({ selector: 'app-results' }),
-      ],
-      providers: [
-        DatasetResearchService,
-        ElasticsearchService,
-        ErrorService,
-        StorageService,
-        NotificationService,
-      ],
-    })
-    .compileComponents();
-  }));
-
-  beforeEach(() => {
-    fixture = TestBed.createComponent(ResearchComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});
diff --git a/src/app/geosource/components/research/research.component.ts b/src/app/geosource/components/research/research.component.ts
deleted file mode 100644
index f0da7a24a1db803c48b02b4576771dad2e77bd95..0000000000000000000000000000000000000000
--- a/src/app/geosource/components/research/research.component.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import { Component, OnInit } from '@angular/core';
-import { DatasetResearchService } from '../../services';
-import { Router } from '@angular/router';
-import { AppRoutes } from '../../../routes';
-
-@Component({
-  selector: 'app-research',
-  templateUrl: './research.component.html',
-  styleUrls: ['./research.component.scss'],
-})
-export class ResearchComponent implements OnInit {
-
-  constructor(
-    private _datasetResearchService: DatasetResearchService,
-    private _router: Router,
-  ) { }
-
-  ngOnInit() {
-    this._datasetResearchService.searchChange$.subscribe(() => {
-      // Redirect to Dataset list if this is not the current page
-      if (this._router.url.split('/').pop() !== AppRoutes.research.uri) {
-        this._router.navigate(['/', AppRoutes.research.uri]);
-      }
-    });
-  }
-
-}
diff --git a/src/app/geosource/geosource.module.ts b/src/app/geosource/geosource.module.ts
deleted file mode 100644
index 569603110d88c38de6cfd9d607bb74060b77da42..0000000000000000000000000000000000000000
--- a/src/app/geosource/geosource.module.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import { NgModule, ModuleWithProviders } from '@angular/core';
-import { CommonModule, DatePipe } from '@angular/common';
-import { FormsModule, ReactiveFormsModule } from '@angular/forms';
-import { GeosourceRoutingModule } from './geosource-routing.module';
-import { GeosourceComponents, SearchBarComponent } from './components';
-import { GeosourceServices, DatasetResearchService } from './services';
-import { SharedModule } from '../shared/shared.module';
-import { MapModule } from '../map/map.module';
-import { InlineSVGModule } from 'ng-inline-svg';
-import { InfiniteScrollModule } from 'ngx-infinite-scroll';
-import { GeosourceResolvers } from './resolvers';
-
-@NgModule({
-  imports: [
-    CommonModule,
-    GeosourceRoutingModule,
-    FormsModule,
-    SharedModule,
-    ReactiveFormsModule,
-    InfiniteScrollModule,
-    MapModule,
-    InlineSVGModule.forRoot(),
-  ],
-  declarations: [...GeosourceComponents],
-  providers: [
-    ...GeosourceServices,
-    DatePipe,
-  ],
-  exports: [
-    SearchBarComponent,
-  ],
-})
-export class GeosourceModule {
-  static forRoot(): ModuleWithProviders {
-    return {
-      ngModule: GeosourceModule,
-      providers: [DatasetResearchService, GeosourceResolvers],
-    };
-  }
-}
diff --git a/src/app/geosource/models/dataset-service.model.ts b/src/app/geosource/models/dataset-service.model.ts
deleted file mode 100644
index dcda6a32c7d7583678224591119e4b059bee4fef..0000000000000000000000000000000000000000
--- a/src/app/geosource/models/dataset-service.model.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export interface DatasetService {
-  key: string;
-  title: string;
-  subtitle: string;
-  description: string;
-  url: string;
-}
diff --git a/src/app/geosource/models/elasticsearch-response.model.ts b/src/app/geosource/models/elasticsearch-response.model.ts
deleted file mode 100644
index b109cd099dbcd98aa50c0f591511eba2f9ea3084..0000000000000000000000000000000000000000
--- a/src/app/geosource/models/elasticsearch-response.model.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { IElasticsearchHit } from '.';
-
-export interface IElasticsearchResponse {
-  'took': number;
-  'hits': {
-    'total': number,
-    'max_score': number,
-    'hits': IElasticsearchHit[],
-  };
-  'suggest': any;
-  'aggregations': any;
-}
diff --git a/src/app/geosource/models/index.ts b/src/app/geosource/models/index.ts
deleted file mode 100644
index 82b7f9402e5641bc3d08b8bea6e3ba06f877b951..0000000000000000000000000000000000000000
--- a/src/app/geosource/models/index.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-export { IMetadata, IMetadataLink, Metadata, IResponsibleParty } from './metadata.model';
-export { IElasticsearchResponse } from './elasticsearch-response.model';
-export { IDataset, Dataset } from './dataset.model';
-export { IElasticsearchHit } from './elasticsearch-hit.model';
-export { ISortOption } from './sort-option.model';
-export { ElasticsearchOptions, IElasticsearchOptions } from './elasticsearch-options.model';
-export { Filter } from './filter.model';
-export { IHighlights, Highlights } from './highlights.model';
-export { SearchCompletion } from './search-completion.model';
-export { SearchSuggestion } from './suggestion.model';
-export { Data } from './data.model';
-export { DatasetChild } from './dataset-child.model';
-export { Resource, IResource } from './resource.model';
-export { IEditorialMetadata, EditorialMetadata } from './editorial-metadata.model';
diff --git a/src/app/geosource/services/dataset-detail.service.spec.ts b/src/app/geosource/services/dataset-detail.service.spec.ts
deleted file mode 100644
index 7c59c1d53e9a37c2e2aeb4c37d9d77e382e6f3bb..0000000000000000000000000000000000000000
--- a/src/app/geosource/services/dataset-detail.service.spec.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-describe('DatasetDetailService', () => {
-
-});
diff --git a/src/app/geosource/services/dataset-research.service.spec.ts b/src/app/geosource/services/dataset-research.service.spec.ts
deleted file mode 100644
index b9e9930ea0c74dfd629e44ab197a7065ddd0de31..0000000000000000000000000000000000000000
--- a/src/app/geosource/services/dataset-research.service.spec.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-describe('DatasetResearchService', () => {
-
-});
diff --git a/src/app/geosource/services/elasticsearch-response-mock.json b/src/app/geosource/services/elasticsearch-response-mock.json
deleted file mode 100644
index 890ce0053f96e89932b6eb6bc68c7b7549b4eeb7..0000000000000000000000000000000000000000
--- a/src/app/geosource/services/elasticsearch-response-mock.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "took": 2,
-  "timed_out": false,
-  "_shards": {
-    "total": 12,
-    "successful": 12,
-    "skipped": 0,
-    "failed": 0
-  },
-  "hits": {
-    "total": 0,
-    "max_score": 0.0,
-    "hits": []
-  },
-  "suggest": {
-    "title": [
-      {
-        "text": "a",
-        "offset": 0,
-        "length": 1,
-        "options": [
-          {
-            "text": "Aire d'accueil des gens du voyage (Métropole de Ly",
-            "_index": "00d2adf.full.v3",
-            "_type": "_doc",
-            "id": "74243c0",
-            "_score": 1.0
-          },
-          {
-            "text": "Altitude d'une courbe de niveau maîtresse (Altimét",
-            "_index": "07504f8.full.v3",
-            "_type": "_doc",
-            "id": "113ca3b",
-            "_score": 1.0
-          }
-        ]
-      }
-    ]
-  }
-}
\ No newline at end of file
diff --git a/src/app/geosource/services/elasticsearch.service.spec.ts b/src/app/geosource/services/elasticsearch.service.spec.ts
deleted file mode 100644
index ec818a417393985ee063279a509e87573f99d24d..0000000000000000000000000000000000000000
--- a/src/app/geosource/services/elasticsearch.service.spec.ts
+++ /dev/null
@@ -1,111 +0,0 @@
-import { ElasticsearchService } from './elasticsearch.service';
-import { HttpClient } from '@angular/common/http';
-import { ErrorService } from '../../core/services';
-import { of, throwError } from 'rxjs';
-import * as json from './elasticsearch-response-mock.json';
-import { SearchCompletion } from '../models';
-import { StorageService } from '../../core/services/storage.service';
-
-function buildAutoCompleteRequest(text) {
-  return {
-    body: {
-      _source: false,
-      suggest: {
-        title: {
-          prefix: text,
-          completion: {
-            field: 'metadata-fr.title.suggest',
-            size: 3,
-            fuzzy: {
-              fuzziness: 2,
-            },
-            skip_: true,
-          },
-        },
-      },
-    },
-  };
-}
-
-const options: SearchCompletion[] = [
-  {
-    text: 'Aire d\'accueil des gens du voyage (Métropole de Ly',
-    _index: '00d2adf.full.v3',
-    id: '74243c0',
-    _score: 1.0,
-  },
-  {
-    text: 'Altitude d\'une courbe de niveau maîtresse (Altimét',
-    _index: '07504f8.full.v3',
-    id: '113ca3b',
-    _score: 1.0,
-  },
-];
-
-describe('ElasticsearchService', () => {
-
-  let service: ElasticsearchService;
-  let httpClientMock: HttpClient;
-  let errorServiceMock: ErrorService;
-  let storageServiceMock: StorageService;
-
-  beforeEach(() => {
-
-    httpClientMock = jasmine.createSpyObj('HttpClient', {
-      request: of(json),
-    });
-
-    storageServiceMock = jasmine.createSpyObj('StorageService', {
-      request: of(json),
-    });
-
-    errorServiceMock = jasmine.createSpyObj('ErrorService', {
-      handleError: (err, options) => { return new Error(options.message); },
-    });
-
-    service = new ElasticsearchService(errorServiceMock, storageServiceMock, httpClientMock);
-  });
-
-  // describe('getAutoComplete(string)', () => {
-
-  //   it('should return an array of SearchCompletion', () => {
-  //     // given
-  //     const text = 'arbre';
-
-  //     // when
-  //     const observable = service.getAutoComplete(text);
-
-  //     // then
-  //     expect(observable).toBeTruthy(); // not oundefined or null
-  //     observable.subscribe((result) => {
-  //       expect(result.length).toBe(2);
-  //       expect(result).toContain(jasmine.objectContaining(options[0]));
-  //       expect(result).toContain(jasmine.objectContaining(options[1]));
-  //     });
-  //     expect(httpClientMock.request).toHaveBeenCalledWith(
-  //       'POST',
-  //       jasmine.any(String),
-  //       buildAutoCompleteRequest(text),
-  //     );
-  //   });
-
-  //   it('should return an error when httpClient return an error', () => {
-  //     // given
-  //     const text = 'arbre';
-  //     const expectedError = new Error('error');
-  //     httpClientMock.request = jasmine.createSpy('request').and.returnValue(throwError(expectedError));
-  //     // when
-  //     const observable = service.getAutoComplete(text);
-
-  //     // then
-  //     observable.subscribe(
-  //       (result) => {
-  //         fail('Should have returned an error');
-  //       },
-  //       (err) => {
-  //         expect(err).toBeTruthy();
-  //       },
-  //     );
-  //   });
-  // });
-});
diff --git a/src/app/geosource/services/index.ts b/src/app/geosource/services/index.ts
deleted file mode 100644
index 83cf1b63254d9c8805e71908c973a25b66770985..0000000000000000000000000000000000000000
--- a/src/app/geosource/services/index.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { DatasetResearchService } from './dataset-research.service';
-import { DatasetDetailService } from './dataset-detail.service';
-import { ElasticsearchService } from './elasticsearch.service';
-import { ResourcesService } from './resources.service';
-
-export { DatasetResearchService, DatasetDetailService,  ElasticsearchService, ResourcesService };
-
-// tslint:disable-next-line:variable-name
-export const GeosourceServices = [
-  // DatasetResearchService,
-  DatasetDetailService,
-  ElasticsearchService,
-  ResourcesService,
-];
diff --git a/src/app/map/components/map.component.ts b/src/app/map/components/map.component.ts
index 2d318b993e1bb553b5ac79e24547f0aecd51eddb..2463188628ba13c735fbd0ac41ee495dd6b6a6ed 100644
--- a/src/app/map/components/map.component.ts
+++ b/src/app/map/components/map.component.ts
@@ -1,12 +1,12 @@
-import { Component, OnInit, OnDestroy, Input } from '@angular/core';
+import { Component, Input, OnDestroy, OnInit } from '@angular/core';
 import * as mapboxgl from 'mapbox-gl';
 import { Subscription } from 'rxjs';
-import { MapService } from '../services/map.service';
-import { settings } from '../settings';
 import { geosource } from '../../../i18n/traductions';
-import { linkFormats } from '../../geosource/models/metadata.model';
-import { GeocoderService } from '../services/geocoder.service';
+import { linkFormats } from '../../elasticsearch/models';
 import { MapOptions } from '../models/map-options';
+import { GeocoderService } from '../services/geocoder.service';
+import { MapService } from '../services/map.service';
+import { settings } from '../settings';
 
 @Component({
   selector: 'app-map',
diff --git a/src/app/routes.ts b/src/app/routes.ts
index 762fe7626d3462282e731b1ab3fd440e02bb791b..b67ad37a54c79c44cb6fa2465ad752086aa758c8 100644
--- a/src/app/routes.ts
+++ b/src/app/routes.ts
@@ -182,13 +182,6 @@ export const AppRoutes = {
       en: 'Drafts',
     },
   },
-  research: {
-    uri: 'recherche',
-    title: {
-      fr: 'Recherche',
-      en: 'Research',
-    },
-  },
   datasets: {
     uri: 'jeux-de-donnees',
     title: {
diff --git a/src/app/user/components/access-management/available-data/available-data.component.ts b/src/app/user/components/access-management/available-data/available-data.component.ts
index 6c0c1db3517b8725d93a40bbb14c1eb20e9ba9bb..1e44d174d6ac56817716991318a686a767fe0e7a 100644
--- a/src/app/user/components/access-management/available-data/available-data.component.ts
+++ b/src/app/user/components/access-management/available-data/available-data.component.ts
@@ -5,9 +5,9 @@ import { IService, IRestrictedAccessDataset, ServiceAccess, Resource, IResource
 import { Notification } from '../../../../core/models';
 import { forkJoin } from 'rxjs';
 import { notificationMessages } from '../../../../../i18n/traductions';
-import { ElasticsearchService } from '../../../../geosource/services';
 import { AppRoutes } from '../../../../routes';
 import { Router } from '@angular/router';
+import { ElasticsearchService } from '../../../../elasticsearch/services/elasticsearch.service';
 
 @Component({
   selector: 'app-available-data',
@@ -296,7 +296,7 @@ export class AvailableDataComponent implements OnInit {
   // because only authenticated users are supposed to access this component
   handle401(err) {
     if (err && err.status === 401) {
-      this._router.navigate(['/', AppRoutes.signin.uri]); 
+      this._router.navigate(['/', AppRoutes.signin.uri]);
     }
   }
 
diff --git a/src/app/user/components/access-management/user-services/user-services.component.ts b/src/app/user/components/access-management/user-services/user-services.component.ts
index 6f4574724fb79d8b68ca8a5a4f97aac221a9761e..1c5d0e5633dc42ff203b0b3890b9e228095a17cb 100644
--- a/src/app/user/components/access-management/user-services/user-services.component.ts
+++ b/src/app/user/components/access-management/user-services/user-services.component.ts
@@ -5,9 +5,9 @@ import { forkJoin } from 'rxjs';
 import { Notification } from '../../../../core/models';
 import { notificationMessages, userServicesStatuses } from '../../../../../i18n/traductions';
 import { UserServicesService } from '../../../services/user-services.service';
-import { ElasticsearchService } from '../../../../geosource/services';
 import { AppRoutes } from '../../../../routes';
 import { Router } from '@angular/router';
+import { ElasticsearchService } from '../../../../elasticsearch/services/elasticsearch.service';
 
 @Component({
   selector: 'app-user-services',
@@ -327,7 +327,7 @@ export class UserServicesComponent implements OnInit {
   // because only authenticated users are supposed to access this component
   handle401(err) {
     if (err && err.status === 401) {
-      this._router.navigate(['/', AppRoutes.signin.uri]); 
+      this._router.navigate(['/', AppRoutes.signin.uri]);
     }
   }
 }
diff --git a/src/assets/config/config.json b/src/assets/config/config.json
index 39d00c9b8404299ec4bc0ecbea072810bf61d1f9..8de457064c92879eaff070b7c3c6658c4e730e36 100644
--- a/src/assets/config/config.json
+++ b/src/assets/config/config.json
@@ -1,6 +1,6 @@
 {
   "backendUrls": {
-    "organizations": "http://localhost:3000/organizations",
+    "organizations": "https://kong-dev.alpha.grandlyon.com/organizations",
     "resources": "http://localhost:3003",
     "changelog": "http://localhost:3007",
     "credits": "https://kong-dev.alpha.grandlyon.com/credits/credits",
diff --git a/src/tsconfig.app.json b/src/tsconfig.app.json
index 39ba8dbacbbe051fdd02481b07af43219296a075..213ce42a1b093feb2da1652105deed78c15a72e5 100644
--- a/src/tsconfig.app.json
+++ b/src/tsconfig.app.json
@@ -10,4 +10,4 @@
     "test.ts",
     "**/*.spec.ts"
   ]
-}
+}
\ No newline at end of file