diff --git a/client/src/app/admin/admin.module.ts b/client/src/app/admin/admin.module.ts
new file mode 100644
index 0000000000000000000000000000000000000000..c99555c7dd20e957f9af6d1263234e8870773524
--- /dev/null
+++ b/client/src/app/admin/admin.module.ts
@@ -0,0 +1,11 @@
+import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+
+@NgModule({
+    declarations: [],
+    imports: [
+        CommonModule
+    ],
+    providers: []
+})
+export class AdminModule { }
\ No newline at end of file
diff --git a/client/src/app/app.module.ts b/client/src/app/app.module.ts
index 2b6829640572b1864593cb608f1b4c3654547d37..3cb19d2c55bf52e338fb4bfab482ca26616338a1 100644
--- a/client/src/app/app.module.ts
+++ b/client/src/app/app.module.ts
@@ -14,6 +14,7 @@ import { environment } from '../environments/environment';
 import { reducers, metaReducers } from './app.reducer';
 import { CustomSerializer } from './custom-route-serializer';
 import { MetamodelModule } from './metamodel/metamodel.module';
+import { AdminModule } from './admin/admin.module';
 
 @NgModule({
     declarations: [
@@ -44,7 +45,8 @@ import { MetamodelModule } from './metamodel/metamodel.module';
             maxAge: 25,
             logOnly: environment.production
         }),
-        MetamodelModule
+        MetamodelModule,
+        AdminModule
     ],
     providers: [],
     bootstrap: [AppComponent]
diff --git a/client/src/app/metamodel/store/effects/database.effects.ts b/client/src/app/metamodel/store/effects/database.effects.ts
index 089d699912c60b64847cfd79a84a540b424c4d29..0a8cfc0092cfbb4f3c03d64966a952985ae1373e 100644
--- a/client/src/app/metamodel/store/effects/database.effects.ts
+++ b/client/src/app/metamodel/store/effects/database.effects.ts
@@ -9,7 +9,7 @@ import { DatabaseService } from '../services/database.service';
 @Injectable()
 export class DatabaseEffects {
  
-    loadMovies$ = createEffect(() =>
+    loadDatabases$ = createEffect(() =>
         this.actions$.pipe(
             ofType(databaseActions.loadDatabaseList),
             mergeMap(() => this.databaseService.retrieveDatabaseList()
diff --git a/client/src/app/metamodel/store/effects/survey.effects.ts b/client/src/app/metamodel/store/effects/survey.effects.ts
new file mode 100644
index 0000000000000000000000000000000000000000..2525863f561ca1c7c9c33776500a68ac648629cb
--- /dev/null
+++ b/client/src/app/metamodel/store/effects/survey.effects.ts
@@ -0,0 +1,28 @@
+import { Injectable } from '@angular/core';
+import { Actions, createEffect, ofType } from '@ngrx/effects';
+import { of } from 'rxjs';
+import { map, mergeMap, catchError } from 'rxjs/operators';
+
+import * as surveyActions from '../actions/survey.actions';
+import { SurveyService } from '../services/survey.service';
+ 
+@Injectable()
+export class SurveyEffects {
+ 
+    loadSurveys$ = createEffect(() =>
+        this.actions$.pipe(
+            ofType(surveyActions.loadSurveyList),
+            mergeMap(() => this.surveyService.retrieveSurveyList()
+                .pipe(
+                    map(surveys => surveyActions.loadSurveyListSuccess({ surveys })),
+                    catchError(() => of(surveyActions.loadSurveyListFail()))
+                )
+            )
+        )
+    );
+ 
+    constructor(
+        private actions$: Actions,
+        private surveyService: SurveyService
+    ) {}
+}
\ No newline at end of file
diff --git a/client/src/app/metamodel/store/selectors/attribute.selector.ts b/client/src/app/metamodel/store/selectors/attribute.selector.ts
new file mode 100644
index 0000000000000000000000000000000000000000..8dcfa5940ebf2461b316b580c9ede8fe98fde756
--- /dev/null
+++ b/client/src/app/metamodel/store/selectors/attribute.selector.ts
@@ -0,0 +1,29 @@
+import { createSelector } from '@ngrx/store';
+
+import * as reducer from '../reducers';
+import * as fromAttribute from '../reducers/attribute.reducer';
+
+export const selectAttributeState = createSelector(
+    reducer.getMetamodelState,
+    (state: reducer.State) => state.attribute
+);
+
+export const selectAttributeIds = createSelector(
+    selectAttributeState,
+    fromAttribute.selectAttributeIds
+);
+
+export const selectAttributeEntities = createSelector(
+    selectAttributeState,
+    fromAttribute.selectAttributeEntities
+);
+
+export const selectAllAttributes = createSelector(
+    selectAttributeState,
+    fromAttribute.selectAllAttributes
+);
+
+export const selectAttributeTotal = createSelector(
+    selectAttributeState,
+    fromAttribute.selectAttributeTotal
+);
diff --git a/client/src/app/metamodel/store/selectors/criteria-family.selector.ts b/client/src/app/metamodel/store/selectors/criteria-family.selector.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f577802c51dde30e16f09fe7fb4006ab3669caf8
--- /dev/null
+++ b/client/src/app/metamodel/store/selectors/criteria-family.selector.ts
@@ -0,0 +1,29 @@
+import { createSelector } from '@ngrx/store';
+
+import * as reducer from '../reducers';
+import * as fromCriteriaFamily from '../reducers/criteria-family.reducer';
+
+export const selectCriteriaFamilyState = createSelector(
+    reducer.getMetamodelState,
+    (state: reducer.State) => state.criteriaFamily
+);
+
+export const selectCriteriaFamilyIds = createSelector(
+    selectCriteriaFamilyState,
+    fromCriteriaFamily.selectCriteriaFamilyIds
+);
+
+export const selectCriteriaFamilyEntities = createSelector(
+    selectCriteriaFamilyState,
+    fromCriteriaFamily.selectCriteriaFamilyEntities
+);
+
+export const selectAllCriteriaFamilys = createSelector(
+    selectCriteriaFamilyState,
+    fromCriteriaFamily.selectAllCriteriaFamilies
+);
+
+export const selectCriteriaFamilyTotal = createSelector(
+    selectCriteriaFamilyState,
+    fromCriteriaFamily.selectCriteriaFamilyTotal
+);
diff --git a/client/src/app/metamodel/store/selectors/dataset-family.selector.ts b/client/src/app/metamodel/store/selectors/dataset-family.selector.ts
new file mode 100644
index 0000000000000000000000000000000000000000..91df18872d53dd7f74942f8618c1f7523f83bc38
--- /dev/null
+++ b/client/src/app/metamodel/store/selectors/dataset-family.selector.ts
@@ -0,0 +1,29 @@
+import { createSelector } from '@ngrx/store';
+
+import * as reducer from '../reducers';
+import * as fromDatasetFamily from '../reducers/dataset-family.reducer';
+
+export const selectDatasetFamilyState = createSelector(
+    reducer.getMetamodelState,
+    (state: reducer.State) => state.datasetFamily
+);
+
+export const selectDatasetFamilyIds = createSelector(
+    selectDatasetFamilyState,
+    fromDatasetFamily.selectDatasetFamilyIds
+);
+
+export const selectDatasetFamilyEntities = createSelector(
+    selectDatasetFamilyState,
+    fromDatasetFamily.selectDatasetFamilyEntities
+);
+
+export const selectAllDatasetFamilys = createSelector(
+    selectDatasetFamilyState,
+    fromDatasetFamily.selectAllDatasetFamilies
+);
+
+export const selectDatasetFamilyTotal = createSelector(
+    selectDatasetFamilyState,
+    fromDatasetFamily.selectDatasetFamilyTotal
+);
diff --git a/client/src/app/metamodel/store/selectors/dataset.selector.ts b/client/src/app/metamodel/store/selectors/dataset.selector.ts
new file mode 100644
index 0000000000000000000000000000000000000000..a28d3e6e8fb6f60d1c054dbf2314334697b1985c
--- /dev/null
+++ b/client/src/app/metamodel/store/selectors/dataset.selector.ts
@@ -0,0 +1,29 @@
+import { createSelector } from '@ngrx/store';
+
+import * as reducer from '../reducers';
+import * as fromDataset from '../reducers/dataset.reducer';
+
+export const selectDatasetState = createSelector(
+    reducer.getMetamodelState,
+    (state: reducer.State) => state.dataset
+);
+
+export const selectDatasetIds = createSelector(
+    selectDatasetState,
+    fromDataset.selectDatasetIds
+);
+
+export const selectDatasetEntities = createSelector(
+    selectDatasetState,
+    fromDataset.selectDatasetEntities
+);
+
+export const selectAllDatasets = createSelector(
+    selectDatasetState,
+    fromDataset.selectAllDatasets
+);
+
+export const selectDatasetTotal = createSelector(
+    selectDatasetState,
+    fromDataset.selectDatasetTotal
+);
diff --git a/client/src/app/metamodel/store/selectors/group.selector.ts b/client/src/app/metamodel/store/selectors/group.selector.ts
new file mode 100644
index 0000000000000000000000000000000000000000..cbe71174ce94d98737621392c94e40d124e60cbf
--- /dev/null
+++ b/client/src/app/metamodel/store/selectors/group.selector.ts
@@ -0,0 +1,29 @@
+import { createSelector } from '@ngrx/store';
+
+import * as reducer from '../reducers';
+import * as fromGroup from '../reducers/group.reducer';
+
+export const selectGroupState = createSelector(
+    reducer.getMetamodelState,
+    (state: reducer.State) => state.group
+);
+
+export const selectGroupIds = createSelector(
+    selectGroupState,
+    fromGroup.selectGroupIds
+);
+
+export const selectGroupEntities = createSelector(
+    selectGroupState,
+    fromGroup.selectGroupEntities
+);
+
+export const selectAllGroups = createSelector(
+    selectGroupState,
+    fromGroup.selectAllGroups
+);
+
+export const selectGroupTotal = createSelector(
+    selectGroupState,
+    fromGroup.selectGroupTotal
+);
diff --git a/client/src/app/metamodel/store/selectors/instance.selector.ts b/client/src/app/metamodel/store/selectors/instance.selector.ts
new file mode 100644
index 0000000000000000000000000000000000000000..d1e49f51bfa99d4c7c5fdf9a971d14e691c27aab
--- /dev/null
+++ b/client/src/app/metamodel/store/selectors/instance.selector.ts
@@ -0,0 +1,29 @@
+import { createSelector } from '@ngrx/store';
+
+import * as reducer from '../reducers';
+import * as fromInstance from '../reducers/instance.reducer';
+
+export const selectInstanceState = createSelector(
+    reducer.getMetamodelState,
+    (state: reducer.State) => state.instance
+);
+
+export const selectInstanceIds = createSelector(
+    selectInstanceState,
+    fromInstance.selectInstanceIds
+);
+
+export const selectInstanceEntities = createSelector(
+    selectInstanceState,
+    fromInstance.selectInstanceEntities
+);
+
+export const selectAllInstances = createSelector(
+    selectInstanceState,
+    fromInstance.selectAllInstances
+);
+
+export const selectInstanceTotal = createSelector(
+    selectInstanceState,
+    fromInstance.selectInstanceTotal
+);
diff --git a/client/src/app/metamodel/store/selectors/output-category.selector.ts b/client/src/app/metamodel/store/selectors/output-category.selector.ts
new file mode 100644
index 0000000000000000000000000000000000000000..b18e703e370efde59c3340c8259dc51933028fa0
--- /dev/null
+++ b/client/src/app/metamodel/store/selectors/output-category.selector.ts
@@ -0,0 +1,29 @@
+import { createSelector } from '@ngrx/store';
+
+import * as reducer from '../reducers';
+import * as fromOutputCategory from '../reducers/output-category.reducer';
+
+export const selectOutputCategoryState = createSelector(
+    reducer.getMetamodelState,
+    (state: reducer.State) => state.outputCategory
+);
+
+export const selectOutputCategoryIds = createSelector(
+    selectOutputCategoryState,
+    fromOutputCategory.selectOutputCategoryIds
+);
+
+export const selectOutputCategoryEntities = createSelector(
+    selectOutputCategoryState,
+    fromOutputCategory.selectOutputCategoryEntities
+);
+
+export const selectAllOutputCategorys = createSelector(
+    selectOutputCategoryState,
+    fromOutputCategory.selectAllOutputCategories
+);
+
+export const selectOutputCategoryTotal = createSelector(
+    selectOutputCategoryState,
+    fromOutputCategory.selectOutputCategoryTotal
+);
diff --git a/client/src/app/metamodel/store/selectors/output-family.selector.ts b/client/src/app/metamodel/store/selectors/output-family.selector.ts
new file mode 100644
index 0000000000000000000000000000000000000000..1d8e621a1a28eb399be809ce350bdb59ebc3abc3
--- /dev/null
+++ b/client/src/app/metamodel/store/selectors/output-family.selector.ts
@@ -0,0 +1,29 @@
+import { createSelector } from '@ngrx/store';
+
+import * as reducer from '../reducers';
+import * as fromOutputFamily from '../reducers/output-family.reducer';
+
+export const selectOutputFamilyState = createSelector(
+    reducer.getMetamodelState,
+    (state: reducer.State) => state.outputFamily
+);
+
+export const selectOutputFamilyIds = createSelector(
+    selectOutputFamilyState,
+    fromOutputFamily.selectOutputFamilyIds
+);
+
+export const selectOutputFamilyEntities = createSelector(
+    selectOutputFamilyState,
+    fromOutputFamily.selectOutputFamilyEntities
+);
+
+export const selectAllOutputFamilys = createSelector(
+    selectOutputFamilyState,
+    fromOutputFamily.selectAllOutputFamilies
+);
+
+export const selectOutputFamilyTotal = createSelector(
+    selectOutputFamilyState,
+    fromOutputFamily.selectOutputFamilyTotal
+);
diff --git a/client/src/app/metamodel/store/selectors/survey.selector.ts b/client/src/app/metamodel/store/selectors/survey.selector.ts
new file mode 100644
index 0000000000000000000000000000000000000000..1d8adabf31e690a2a01400de4b11df4741ae52f9
--- /dev/null
+++ b/client/src/app/metamodel/store/selectors/survey.selector.ts
@@ -0,0 +1,29 @@
+import { createSelector } from '@ngrx/store';
+
+import * as reducer from '../reducers';
+import * as fromSurvey from '../reducers/survey.reducer';
+
+export const selectSurveyState = createSelector(
+    reducer.getMetamodelState,
+    (state: reducer.State) => state.survey
+);
+
+export const selectSurveyIds = createSelector(
+    selectSurveyState,
+    fromSurvey.selectSurveyIds
+);
+
+export const selectSurveyEntities = createSelector(
+    selectSurveyState,
+    fromSurvey.selectSurveyEntities
+);
+
+export const selectAllSurveys = createSelector(
+    selectSurveyState,
+    fromSurvey.selectAllSurveys
+);
+
+export const selectSurveyTotal = createSelector(
+    selectSurveyState,
+    fromSurvey.selectSurveyTotal
+);