diff --git a/src/frontend/app/administration/administration.service.ts b/src/frontend/app/administration/administration.service.ts
index 25c616e4f4e17e56485536bafefb14067658bafb..e48b566cbf2c17044bfbaea487b5c324da3e1b6a 100644
--- a/src/frontend/app/administration/administration.service.ts
+++ b/src/frontend/app/administration/administration.service.ts
@@ -89,6 +89,12 @@ export class AdministrationService {
             page: 0,
             field: ''
         },
+        admin_tag: {
+            sort: 'label',
+            sortDirection: 'asc',
+            page: 0,
+            field: ''
+        },
     };
     dataSource: MatTableDataSource<any>;
     filterColumns: string[];
diff --git a/src/frontend/app/administration/tag/tags-administration.component.html b/src/frontend/app/administration/tag/tags-administration.component.html
index 90cda710b895f8754d02d8f761ec2bd09efe5c64..e3cc53702a8c4d28f1df4876a6c712aee570a60b 100644
--- a/src/frontend/app/administration/tag/tags-administration.component.html
+++ b/src/frontend/app/administration/tag/tags-administration.component.html
@@ -28,7 +28,7 @@
                 <div class="table-head">
                     <div class="table-head-result">
                         <mat-form-field style="font-size: 13px;">
-                            <input matInput (keyup)="applyFilter($event.target.value)" placeholder="{{lang.filterBy}}">
+                            <input matInput [formControl]="adminService.getFilterField()" placeholder="{{lang.filterBy}}">
                         </mat-form-field>
                     </div>
                     <div class="table-head-tool">
@@ -37,8 +37,7 @@
                     </div>
                 </div>
                 <div style="height:90%;overflow:auto;position:absolute;width:100%;">
-                    <mat-table id="contact-list" #tableContactListSort="matSort" [dataSource]="dataSource" matSort
-                        matSortActive="label" matSortDirection="asc" style="width:100%;">
+                    <mat-table id="contact-list" #tableContactListSort="matSort" [dataSource]="adminService.getDataSource()" matSort matSortDisableClear style="width:100%;">
                         <ng-container matColumnDef="label">
                             <mat-header-cell *matHeaderCellDef mat-sort-header>{{lang.label}}</mat-header-cell>
                             <mat-cell mat-cell *matCellDef="let element">
diff --git a/src/frontend/app/administration/tag/tags-administration.component.ts b/src/frontend/app/administration/tag/tags-administration.component.ts
index e87f6d8e6448adc9acf3d63531fd8a4f3133bf38..f2de6b18ab4da3b400635729569c63b34d69fe6c 100644
--- a/src/frontend/app/administration/tag/tags-administration.component.ts
+++ b/src/frontend/app/administration/tag/tags-administration.component.ts
@@ -4,7 +4,6 @@ import { LANG } from '../../translate.component';
 import { NotificationService } from '../../../service/notification/notification.service';
 import { MatPaginator } from '@angular/material/paginator';
 import { MatSort } from '@angular/material/sort';
-import { MatTableDataSource } from '@angular/material/table';
 import { HeaderService } from '../../../service/header.service';
 import { AppService } from '../../../service/app.service';
 import { tap, finalize, filter, exhaustMap, catchError } from 'rxjs/operators';
@@ -12,6 +11,7 @@ import { ConfirmComponent } from '../../../plugins/modal/confirm.component';
 import { MatDialog } from '@angular/material/dialog';
 import {FunctionsService} from '../../../service/functions.service';
 import { of } from 'rxjs/internal/observable/of';
+import { AdministrationService } from '../administration.service';
 
 declare var tinymce: any;
 
@@ -25,21 +25,13 @@ export class TagsAdministrationComponent implements OnInit {
     lang: any = LANG;
     loading: boolean = true;
 
-    dataSource: any;
     resultsLength: number = 0;
     displayedColumns = ['label', 'description', 'actions'];
+    filterColumns = ['label', 'description'];
 
 
     @ViewChild(MatPaginator, { static: false }) paginator: MatPaginator;
     @ViewChild(MatSort, { static: false }) sort: MatSort;
-    applyFilter(filterValue: string) {
-        filterValue = filterValue.trim(); // Remove whitespace
-        filterValue = filterValue.toLowerCase(); // MatTableDataSource defaults to lowercase matches
-        this.dataSource.filter = filterValue;
-        this.dataSource.filterPredicate = (template: any, filter: string) => {
-            return this.functions.filterUnSensitive(template, filter, ['label', 'description']);
-        };
-    }
 
     constructor(
         public http: HttpClient,
@@ -48,6 +40,7 @@ export class TagsAdministrationComponent implements OnInit {
         public appService: AppService,
         public dialog: MatDialog,
         public functions: FunctionsService,
+        public adminService: AdministrationService,
         private viewContainerRef: ViewContainerRef
     ) { }
 
@@ -63,16 +56,10 @@ export class TagsAdministrationComponent implements OnInit {
         this.loading = true;
         this.http.get('../rest/tags').pipe(
             tap((data: any) => {
+                this.resultsLength = data.tags.length;
                 setTimeout(() => {
-                    this.dataSource = new MatTableDataSource(data.tags);
-                    this.resultsLength = data.tags.length;
-                    this.dataSource.paginator = this.paginator;
-                    this.dataSource.sortingDataAccessor = this.functions.listSortingDataAccessor;
-                    this.sort.active = 'label';
-                    this.sort.direction = 'asc';
-                    this.dataSource.sort = this.sort;
+                    this.adminService.setDataSource('admin_tag', data.tags, this.sort, this.paginator, this.filterColumns);
                 }, 0);
-
             }),
             finalize(() => this.loading = false)
         ).subscribe();