Merge branch 'DEVELOP' of ssh://git.eclipse.org:29418/openk-usermodules/org.eclipse.openk-usermodules.gridFailureInformation.frontend into SI-264-RabbitMQ-visualisieren
diff --git a/hooks/pre-build.js b/hooks/pre-build.js
index 5ead1e1..52b813e 100644
--- a/hooks/pre-build.js
+++ b/hooks/pre-build.js
@@ -13,7 +13,13 @@
 var fs = require('fs-extra');
 var jsonConcat = require('json-concat');
 
-var localizationSourceFilesDE = ['./i18n/general.de.json', './i18n/components.de.json', './i18n/logout.de.json', './i18n/grid-failure.de.json'];
+var localizationSourceFilesDE = [
+  './i18n/general.de.json',
+  './i18n/components.de.json',
+  './i18n/logout.de.json',
+  './i18n/grid-failure.de.json',
+  './i18n/imported-grid-failure.de.json',
+];
 
 function mergeAndSaveJsonFiles(src, dest) {
   jsonConcat({ src: src, dest: dest }, function(res) {
diff --git a/hooks/pre-start.js b/hooks/pre-start.js
index b3d280a..bcb589c 100644
--- a/hooks/pre-start.js
+++ b/hooks/pre-start.js
@@ -13,7 +13,13 @@
 var fs = require('fs-extra');
 var jsonConcat = require('json-concat');
 
-var localizationSourceFilesDE = ['./i18n/general.de.json', './i18n/components.de.json', './i18n/logout.de.json', './i18n/grid-failure.de.json'];
+var localizationSourceFilesDE = [
+  './i18n/general.de.json',
+  './i18n/components.de.json',
+  './i18n/logout.de.json',
+  './i18n/grid-failure.de.json',
+  './i18n/imported-grid-failure.de.json',
+];
 
 function mergeAndSaveJsonFiles(src, dest) {
   jsonConcat({ src: src, dest: dest }, function(res) {
diff --git a/i18n/imported-grid-failure.de.json b/i18n/imported-grid-failure.de.json
new file mode 100644
index 0000000..bd49a8a
--- /dev/null
+++ b/i18n/imported-grid-failure.de.json
@@ -0,0 +1,10 @@
+{
+  "ImportedGridFailures": {
+    "Title": "Übersicht importierter Meldungen"
+  },
+  "ImportedGridFailure": {
+    "Description": "Beschreibung",
+    "Source": "Quelle",
+    "MessageContent": "Meldungsinhalt"
+  }
+}
diff --git a/i18n/logout.de.json b/i18n/logout.de.json
index 3911c07..3377dfa 100644
--- a/i18n/logout.de.json
+++ b/i18n/logout.de.json
@@ -3,6 +3,7 @@
     "Loggedout": "Sie wurden ausgeloggt ...",
     "PortalNewLogin": "Über das Portal können Sie sich erneut einloggen.",
     "CloseTab": "Browser-Tab schließen",
-    "SubmitLogout": "Wollen Sie sich abmelden?"
+    "SubmitLogout": "Wollen Sie sich abmelden?",
+    "Logout": "Abmelden"
   }
 }
diff --git a/projects/grid-failure-information-app/src/app/app-routing.module.ts b/projects/grid-failure-information-app/src/app/app-routing.module.ts
index b8d1ce6..2271841 100644
--- a/projects/grid-failure-information-app/src/app/app-routing.module.ts
+++ b/projects/grid-failure-information-app/src/app/app-routing.module.ts
@@ -15,10 +15,15 @@
 import { PageNotFoundComponent } from '@grid-failure-information-app/shared/components/page-not-found/pageNotFound.component';
 import { LogoutPageComponent } from '@grid-failure-information-app/pages/logout/logout/logout.component';
 import { LoggedOutPageComponent } from '@grid-failure-information-app/pages/logout/logged-out/logged-out.component';
+import { ImportedGridFailureListComponent } from '@grid-failure-information-app/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.component';
 
 const appRoutes: Routes = [
   { path: '', redirectTo: '/grid-failures', pathMatch: 'full' },
   {
+    path: 'imported-grid-failures',
+    component: ImportedGridFailureListComponent,
+  },
+  {
     path: 'logout',
     component: LogoutPageComponent,
   },
diff --git a/projects/grid-failure-information-app/src/app/app.module.ts b/projects/grid-failure-information-app/src/app/app.module.ts
index 4eb7b68..25c1ec0 100644
--- a/projects/grid-failure-information-app/src/app/app.module.ts
+++ b/projects/grid-failure-information-app/src/app/app.module.ts
@@ -28,6 +28,7 @@
 //Feature Modules
 import { GridFailureModule } from '@grid-failure-information-app/pages/grid-failure/grid-failure.module';
 import { LogoutModule } from '@grid-failure-information-app/pages/logout/logout.module';
+import { ImportedGridFailureModule } from '@grid-failure-information-app/app/pages/imported-grid-failure/imported-grid-failure.module';
 
 // Store
 import { reducers } from '@grid-failure-information-app/shared/store';
@@ -106,6 +107,7 @@
     AppRoutingModule,
     NgbModalModule,
     LogoutModule,
+    ImportedGridFailureModule,
   ],
   providers: [
     AdminGuard,
diff --git a/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-api-client.ts b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-api-client.ts
new file mode 100644
index 0000000..dd6d777
--- /dev/null
+++ b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-api-client.ts
@@ -0,0 +1,30 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+import { Injectable } from '@angular/core';
+import { HttpService, GET, Adapter, DefaultHeaders } from '@grid-failure-information-app/shared/async-services/http';
+import { Observable } from 'rxjs';
+import { ImportData } from '@grid-failure-information-app/shared/models';
+import { ImportedGridFailureService } from '@grid-failure-information-app/app/pages/imported-grid-failure/imported-grid-failure.service';
+
+@Injectable()
+@DefaultHeaders({
+  Accept: 'application/json',
+  'Content-Type': 'application/json',
+})
+export class ImportedGridFailureApiClient extends HttpService {
+  @GET('/import-data')
+  @Adapter(ImportedGridFailureService.gridAdapter)
+  public getImportedGridFailures(): Observable<ImportData[]> {
+    return null;
+  }
+}
diff --git a/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list-column-definition.ts b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list-column-definition.ts
new file mode 100644
index 0000000..52827c6
--- /dev/null
+++ b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list-column-definition.ts
@@ -0,0 +1,32 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+export const IMPORTED_GRID_FAILURE_COLDEF = [
+  {
+    field: 'description',
+    headerName: 'ImportedGridFailure.Description',
+    sortable: true,
+    filter: 'setFilterComponent',
+  },
+  {
+    field: 'source',
+    headerName: 'ImportedGridFailure.Source',
+    sortable: true,
+    filter: 'setFilterComponent',
+  },
+  {
+    field: 'messageContent',
+    headerName: 'ImportedGridFailure.MessageContent',
+    sortable: true,
+    filter: 'setFilterComponent',
+  },
+];
diff --git a/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.component.html b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.component.html
new file mode 100644
index 0000000..5d242ad
--- /dev/null
+++ b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.component.html
@@ -0,0 +1,39 @@
+<!-- /********************************************************************************
+* Copyright (c) 2020 Contributors to the Eclipse Foundation
+*
+* See the NOTICE file(s) distributed with this work for additional
+* information regarding copyright ownership.
+*
+* This program and the accompanying materials are made available under the
+* terms of the Eclipse Public License v. 2.0 which is available at
+* http://www.eclipse.org/legal/epl-2.0.
+*
+* SPDX-License-Identifier: EPL-2.0
+********************************************************************************/ -->
+<app-card-layout>
+  <div header>
+    <div class="d-flex flex-row header">
+      <span>{{ 'ImportedGridFailures.Title' | translate }}</span>
+    </div>
+  </div>
+  <div class="grid-failures-grid-wrapper" body>
+    <ag-grid-angular
+      autoResizeColumns
+      class="ag-theme-balham"
+      [gridOptions]="gridOptions"
+      [columnDefs]="columnDefinition"
+      [rowSelection]="'single'"
+      [frameworkComponents]="frameworkComponents"
+      [rowData]="sandbox.importedGridFailureList$ | async"
+      [overlayNoRowsTemplate]="noRowsTemplate"
+    >
+    </ag-grid-angular>
+    <div class="row justify-content-between">
+      <div>
+        <button type="button" class="btn btn-primary cancel-button" id="cancel-btn" (click)="sandbox.cancel()">
+          {{ 'CancelBtn' | translate }}
+        </button>
+      </div>
+    </div>
+  </div>
+</app-card-layout>
diff --git a/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.component.scss b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.component.scss
new file mode 100644
index 0000000..1363479
--- /dev/null
+++ b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.component.scss
@@ -0,0 +1,24 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+.grid-failures-grid-wrapper {
+  position: relative;
+  height: 100%;
+}
+
+.header {
+  justify-content: space-between;
+}
+
+#cancel-btn {
+  margin: 10px 0 0 16px;
+}
diff --git a/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.component.spec.ts b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.component.spec.ts
new file mode 100644
index 0000000..a37d4f2
--- /dev/null
+++ b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.component.spec.ts
@@ -0,0 +1,34 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+import { ImportedGridFailureListComponent } from '@grid-failure-information-app/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.component';
+import { ImportedGridFailureListSandbox } from '@grid-failure-information-app/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.sandbox';
+
+describe('ImportedGridFailureListComponent ', () => {
+  let component: ImportedGridFailureListComponent;
+  let sandbox: ImportedGridFailureListSandbox;
+
+  beforeEach(() => {
+    sandbox = { loadImportedGridFailures() {} } as any;
+    component = new ImportedGridFailureListComponent(sandbox);
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+
+  it('should call appropriate functions for edit event', () => {
+    const spy: any = spyOn(sandbox, 'loadImportedGridFailures');
+    component.ngOnInit();
+    expect(spy).toHaveBeenCalled();
+  });
+});
diff --git a/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.component.ts b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.component.ts
new file mode 100644
index 0000000..6083df7
--- /dev/null
+++ b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.component.ts
@@ -0,0 +1,36 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+import { Component, OnInit } from '@angular/core';
+import { IMPORTED_GRID_FAILURE_COLDEF } from '@grid-failure-information-app/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list-column-definition';
+import { ImportedGridFailureListSandbox } from '@grid-failure-information-app/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.sandbox';
+import { BaseList } from '@grid-failure-information-app/shared/components/base-components/base.list';
+import { SetFilterComponent } from '@grid-failure-information-app/shared/filters/ag-grid/set-filter/set-filter.component';
+
+@Component({
+  selector: 'app-imported-grid-failure-list',
+  templateUrl: './imported-grid-failure-list.component.html',
+  styleUrls: ['./imported-grid-failure-list.component.scss'],
+})
+export class ImportedGridFailureListComponent extends BaseList implements OnInit {
+  public columnDefinition: any = IMPORTED_GRID_FAILURE_COLDEF;
+  public frameworkComponents: { setFilterComponent: any };
+
+  constructor(public sandbox: ImportedGridFailureListSandbox) {
+    super();
+    this.frameworkComponents = { setFilterComponent: SetFilterComponent };
+  }
+
+  ngOnInit() {
+    this.sandbox.loadImportedGridFailures();
+  }
+}
diff --git a/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.sandbox.spec.ts b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.sandbox.spec.ts
new file mode 100644
index 0000000..30ef446
--- /dev/null
+++ b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.sandbox.spec.ts
@@ -0,0 +1,50 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+import { Router } from '@angular/router';
+import { ImportedGridFailureListSandbox } from '@grid-failure-information-app/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.sandbox';
+import { State } from '@grid-failure-information-app/shared/store';
+import { Store } from '@ngrx/store';
+import { of } from 'rxjs';
+import { ImportData } from '@grid-failure-information-app/shared/models';
+
+describe('ImportedGridFailureListSandbox', () => {
+  let service: ImportedGridFailureListSandbox;
+  let appState: Store<State>;
+  let router: Router;
+  let apiClient: any;
+
+  beforeEach(() => {
+    appState = { dispatch: () => {}, pipe: () => of(true), select: () => of(true) } as any;
+    router = { navigateByUrl() {} } as any;
+    apiClient = { getImportedGridFailures() {} } as any;
+
+    service = new ImportedGridFailureListSandbox(appState, router, apiClient);
+  });
+
+  it('should create ImportedMessagesListSandbox service', () => {
+    expect(service).toBeTruthy();
+  });
+
+  it('should load imported grid failures after calling loadImportedGridFailures()', () => {
+    let spy = spyOn(apiClient, 'getImportedGridFailures').and.returnValue(of(new ImportData()));
+    service.loadImportedGridFailures();
+    expect(service.importedGridFailureList$).toBeDefined();
+    expect(spy).toHaveBeenCalled();
+  });
+
+  it('should navigate to home after click cancel', () => {
+    let spy = spyOn(router, 'navigateByUrl');
+    service.cancel();
+    expect(spy).toHaveBeenCalledWith('/grid-failures');
+  });
+});
diff --git a/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.sandbox.ts b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.sandbox.ts
new file mode 100644
index 0000000..4a22c2b
--- /dev/null
+++ b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.sandbox.ts
@@ -0,0 +1,38 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+import { Injectable } from '@angular/core';
+import { Router } from '@angular/router';
+import { BaseSandbox } from '@grid-failure-information-app/shared/sandbox/base.sandbox';
+import * as store from '@grid-failure-information-app/shared/store';
+import { Store } from '@ngrx/store';
+import { Observable } from 'rxjs';
+import { ImportedGridFailureApiClient } from '@grid-failure-information-app/app/pages/imported-grid-failure/imported-grid-failure-api-client';
+import { navigateHome } from '@grid-failure-information-app/shared/utility';
+import { ImportData } from '@grid-failure-information-app/shared/models';
+
+@Injectable()
+export class ImportedGridFailureListSandbox extends BaseSandbox {
+  public importedGridFailureList$: Observable<ImportData[]> = new Observable<ImportData[]>();
+
+  constructor(protected appState$: Store<store.State>, private _router: Router, private _importedGridFailureApiClient: ImportedGridFailureApiClient) {
+    super(appState$);
+  }
+
+  public loadImportedGridFailures(): void {
+    this.importedGridFailureList$ = this._importedGridFailureApiClient.getImportedGridFailures();
+  }
+
+  public cancel(): void {
+    navigateHome(this._router);
+  }
+}
diff --git a/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure.module.ts b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure.module.ts
new file mode 100644
index 0000000..c270d25
--- /dev/null
+++ b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure.module.ts
@@ -0,0 +1,42 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+import { RouterModule } from '@angular/router';
+import { ComponentsModule } from '@grid-failure-information-app/shared/components';
+import { TranslateModule } from '@ngx-translate/core';
+import { FormsModule } from '@angular/forms';
+import { DirectivesModule } from '@grid-failure-information-app/shared/directives';
+import { ContainersModule } from '@grid-failure-information-app/shared/containers';
+import { ImportedGridFailureListComponent } from '@grid-failure-information-app/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.component';
+import { ImportedGridFailureListSandbox } from '@grid-failure-information-app/app/pages/imported-grid-failure/imported-grid-failure-list/imported-grid-failure-list.sandbox';
+import { ImportedGridFailureApiClient } from '@grid-failure-information-app/app/pages/imported-grid-failure/imported-grid-failure-api-client';
+import { ImportedGridFailureService } from '@grid-failure-information-app/app/pages/imported-grid-failure/imported-grid-failure.service';
+import { AgGridModule } from 'ag-grid-angular';
+import { SetFilterComponent } from '@grid-failure-information-app/shared/filters/ag-grid/set-filter/set-filter.component';
+
+@NgModule({
+  imports: [
+    CommonModule,
+    ComponentsModule,
+    TranslateModule,
+    DirectivesModule,
+    RouterModule,
+    FormsModule,
+    ContainersModule,
+    AgGridModule.withComponents([SetFilterComponent]),
+  ],
+  declarations: [ImportedGridFailureListComponent],
+  providers: [ImportedGridFailureListSandbox, ImportedGridFailureApiClient, ImportedGridFailureService],
+})
+export class ImportedGridFailureModule {}
diff --git a/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure.service.spec.ts b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure.service.spec.ts
new file mode 100644
index 0000000..18ca728
--- /dev/null
+++ b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure.service.spec.ts
@@ -0,0 +1,33 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+
+import { ImportedGridFailureService } from './imported-grid-failure.service';
+import { ImportData } from '@grid-failure-information-app/shared/models';
+
+describe(' ImportedGridFailureService', () => {
+  beforeEach(() => {});
+
+  it('should transform list', () => {
+    const response = [new ImportData()];
+    response[0].id = 'X';
+
+    expect(ImportedGridFailureService.gridAdapter(response)[0].id).toBe('X');
+  });
+
+  it('should transform details', () => {
+    const response: any = { id: 'X' };
+    const item = ImportedGridFailureService.itemAdapter(response);
+
+    expect(item.id).toBe(response.id);
+  });
+});
diff --git a/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure.service.ts b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure.service.ts
new file mode 100644
index 0000000..976c67a
--- /dev/null
+++ b/projects/grid-failure-information-app/src/app/pages/imported-grid-failure/imported-grid-failure.service.ts
@@ -0,0 +1,25 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+import { Injectable } from '@angular/core';
+import { ImportData } from '@grid-failure-information-app/shared/models';
+
+@Injectable()
+export class ImportedGridFailureService {
+  static gridAdapter(response: any): Array<ImportData> {
+    return response.map(responseItem => new ImportData(responseItem));
+  }
+
+  static itemAdapter(responseItem: any): ImportData {
+    return new ImportData(responseItem);
+  }
+}
diff --git a/projects/grid-failure-information-app/src/app/pages/logout/logout/logout.sandbox.spec.ts b/projects/grid-failure-information-app/src/app/pages/logout/logout/logout.sandbox.spec.ts
index dd956e2..f4a4fe5 100644
--- a/projects/grid-failure-information-app/src/app/pages/logout/logout/logout.sandbox.spec.ts
+++ b/projects/grid-failure-information-app/src/app/pages/logout/logout/logout.sandbox.spec.ts
@@ -45,10 +45,10 @@
     expect(spyNavigate).toHaveBeenCalledWith('/loggedout');
   });
 
-  it('should call naviagetByUrl with /overview', () => {
+  it('should call navigateByUrl with /grid-failures', () => {
     const spy = spyOn(router, 'navigateByUrl');
     component.goToOverview();
 
-    expect(spy).toHaveBeenCalledWith('/overview');
+    expect(spy).toHaveBeenCalledWith('/grid-failures');
   });
 });
diff --git a/projects/grid-failure-information-app/src/app/pages/logout/logout/logout.sandbox.ts b/projects/grid-failure-information-app/src/app/pages/logout/logout/logout.sandbox.ts
index f9f2925..b792114 100644
--- a/projects/grid-failure-information-app/src/app/pages/logout/logout/logout.sandbox.ts
+++ b/projects/grid-failure-information-app/src/app/pages/logout/logout/logout.sandbox.ts
@@ -18,10 +18,11 @@
 import { ofType } from '@ngrx/effects';
 import { takeUntil } from 'rxjs/operators';
 import { Router } from '@angular/router';
+import { navigateHome } from '@grid-failure-information-app/shared/utility';
 
 @Injectable()
 export class LogoutPageSandbox extends BaseSandbox {
-  constructor(protected appState$: Store<store.State>, protected actionsSubject: ActionsSubject, private router: Router) {
+  constructor(protected appState$: Store<store.State>, protected actionsSubject: ActionsSubject, private _router: Router) {
     super(appState$);
   }
 
@@ -30,11 +31,11 @@
     this.actionsSubject.pipe(ofType(logoutActions.logoutSuccess), takeUntil(this._endSubscriptions$)).subscribe(() => {
       this.clearStorage();
       this.removeUser();
-      this.router.navigateByUrl('/loggedout');
+      this._router.navigateByUrl('/loggedout');
     });
   }
 
   public goToOverview(): void {
-    this.router.navigateByUrl('/overview');
+    navigateHome(this._router);
   }
 }
diff --git a/projects/grid-failure-information-app/src/app/shared/components/header/header.component.html b/projects/grid-failure-information-app/src/app/shared/components/header/header.component.html
index d54471e..2038c9e 100644
--- a/projects/grid-failure-information-app/src/app/shared/components/header/header.component.html
+++ b/projects/grid-failure-information-app/src/app/shared/components/header/header.component.html
@@ -26,13 +26,18 @@
         <fa name="question-circle"></fa>
       </a>
       <span class="divider"></span>
+      <a class="btn btn-link navbar-btn" (click)="navigateToImportedGridFailures()">
+        <fa name="inbox"></fa>
+      </a>
       <div class="dropdown-open nav-user nav-overview-user">
         <a class="btn btn-logout dropdown-toggle" style="min-width: 160px;" data-toggle="dropdown" href="#" aria-expanded="true">
           {{ userName }}
           <span class="caret"></span>
         </a>
         <ul class="dropdown-menu">
-          <li class="dropdown-item"><a routerLink="/logout" (click)="logout.emit()">Abmelden</a></li>
+          <li class="dropdown-item">
+            <a (click)="navigateToLogout(); logout.emit()">{{ 'Logout.Logout' | translate }}</a>
+          </li>
         </ul>
       </div>
     </div>
diff --git a/projects/grid-failure-information-app/src/app/shared/components/header/header.component.spec.ts b/projects/grid-failure-information-app/src/app/shared/components/header/header.component.spec.ts
index baeb993..671e6c8 100644
--- a/projects/grid-failure-information-app/src/app/shared/components/header/header.component.spec.ts
+++ b/projects/grid-failure-information-app/src/app/shared/components/header/header.component.spec.ts
@@ -31,4 +31,16 @@
     component.navigateHome();
     expect(spy).toHaveBeenCalledWith('/grid-failures');
   });
+
+  it('should navigate to imported-grid-failures after call navigateToImportedGridFailures', () => {
+    const spy = spyOn(router, 'navigateByUrl').and.returnValue({ then: () => of(true) });
+    component.navigateToImportedGridFailures();
+    expect(spy).toHaveBeenCalledWith('/imported-grid-failures');
+  });
+
+  it('should navigate to logout after call navigateToLogout', () => {
+    const spy = spyOn(router, 'navigateByUrl').and.returnValue({ then: () => of(true) });
+    component.navigateToLogout();
+    expect(spy).toHaveBeenCalledWith('/logout');
+  });
 });
diff --git a/projects/grid-failure-information-app/src/app/shared/components/header/header.component.ts b/projects/grid-failure-information-app/src/app/shared/components/header/header.component.ts
index 9e5c6d1..652b897 100644
--- a/projects/grid-failure-information-app/src/app/shared/components/header/header.component.ts
+++ b/projects/grid-failure-information-app/src/app/shared/components/header/header.component.ts
@@ -34,6 +34,14 @@
     navigateHome(this.router).then(this._winLocReload);
   }
 
+  public navigateToImportedGridFailures(): void {
+    this.router.navigateByUrl(`/imported-grid-failures`);
+  }
+
+  public navigateToLogout(): void {
+    this.router.navigateByUrl(`/logout`);
+  }
+
   private _winLocReload(): void {
     window.location.reload();
   }
diff --git a/projects/grid-failure-information-app/src/app/shared/containers/card-layout/card-layout.component.scss b/projects/grid-failure-information-app/src/app/shared/containers/card-layout/card-layout.component.scss
index 2bebdd9..08aa06f 100644
--- a/projects/grid-failure-information-app/src/app/shared/containers/card-layout/card-layout.component.scss
+++ b/projects/grid-failure-information-app/src/app/shared/containers/card-layout/card-layout.component.scss
@@ -1,4 +1,4 @@
- /********************************************************************************
+/********************************************************************************
  * Copyright (c) 2020 Contributors to the Eclipse Foundation
  *
  * See the NOTICE file(s) distributed with this work for additional
@@ -10,8 +10,8 @@
  *
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
- .card {
-  height: calc(100vh - 144px);
+.card {
+  height: calc(100vh - 142px);
   overflow: auto;
   border: none;
 }
diff --git a/projects/grid-failure-information-app/src/app/shared/models/import-data.model.ts b/projects/grid-failure-information-app/src/app/shared/models/import-data.model.ts
new file mode 100644
index 0000000..825f6dc
--- /dev/null
+++ b/projects/grid-failure-information-app/src/app/shared/models/import-data.model.ts
@@ -0,0 +1,25 @@
+/********************************************************************************
+ * Copyright (c) 2020 Contributors to the Eclipse Foundation
+ *
+ * See the NOTICE file(s) distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v. 2.0 which is available at
+ * http://www.eclipse.org/legal/epl-2.0.
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ ********************************************************************************/
+export class ImportData {
+  public id: string = null;
+  public metaId: string = null;
+  public description: string = null;
+  public source: string = null;
+  public messageContent: string = null;
+
+  public constructor(data: any = null) {
+    Object.keys(data || {})
+      .filter(property => this.hasOwnProperty(property))
+      .forEach(property => (this[property] = data[property]));
+  }
+}
diff --git a/projects/grid-failure-information-app/src/app/shared/models/index.ts b/projects/grid-failure-information-app/src/app/shared/models/index.ts
index 4a205e6..6a39e5c 100644
--- a/projects/grid-failure-information-app/src/app/shared/models/index.ts
+++ b/projects/grid-failure-information-app/src/app/shared/models/index.ts
@@ -11,3 +11,4 @@
  * SPDX-License-Identifier: EPL-2.0
  ********************************************************************************/
 export * from './grid-failure.model';
+export * from './import-data.model';