diff --git a/src/frontend/app/administration/administration.service.ts b/src/frontend/app/administration/administration.service.ts
index 7d044f16cb9a050fd7f423e299c78e0911f1ac71..881b005c5262cd3ead65fa04013d83f26f0f5019 100644
--- a/src/frontend/app/administration/administration.service.ts
+++ b/src/frontend/app/administration/administration.service.ts
@@ -41,6 +41,12 @@ export class AdministrationService {
             page: 0,
             field: ''
         },
+        admin_listmodels: {
+            sort: 'title',
+            sortDirection: 'asc',
+            page: 0,
+            field: ''
+        },
     };
     dataSource: MatTableDataSource<any>;
     filterColumns: string[];
diff --git a/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.html b/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.html
index 684e25008186e5495926f6978a3b37e1fc050925..2291204b738655580d048f28592f368d62f3a7a1 100755
--- a/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.html
+++ b/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.html
@@ -32,7 +32,7 @@
                     <div class="row" style="margin:0px;">
                         <div class="col-md-6 col-xs-6">
                             <mat-form-field>
-                                <input matInput (keyup)="applyFilter($event.target.value)" placeholder="{{lang.filterBy}}">
+                                <input matInput [formControl]="adminService.getFilterField()" placeholder="{{lang.filterBy}}">
                             </mat-form-field>
                         </div>
                         <div class="col-md-6 col-xs-6">
@@ -40,8 +40,8 @@
                             </mat-paginator>
                         </div>
                     </div>
-                    <mat-table #table [dataSource]="dataSource" matSort matSortActive="label" matSortDirection="asc">
-                        <ng-container matColumnDef="label">
+                    <mat-table #table [dataSource]="adminService.getDataSource()" [matSortActive]="adminService.getFilter('sort')" [matSortDirection]="adminService.getFilter('sortDirection')" matSort>
+                        <ng-container matColumnDef="title">
                             <mat-header-cell *matHeaderCellDef mat-sort-header style="flex:2;">{{lang.label}}</mat-header-cell>
                             <mat-cell *matCellDef="let element" style="flex:2;">
                                 {{element.title}} </mat-cell>
diff --git a/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.ts b/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.ts
index 5def7127243bef420444af751b9665c407dc9de9..f2aedc1b85e1459ec65df86b75e1ebcdeea63ca7 100755
--- a/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.ts
+++ b/src/frontend/app/administration/diffusionModel/diffusionModels-administration.component.ts
@@ -6,17 +6,16 @@ import { HeaderService } from '../../../service/header.service';
 import { MatDialog } from '@angular/material/dialog';
 import { MatPaginator } from '@angular/material/paginator';
 import { MatSort } from '@angular/material/sort';
-import { MatTableDataSource } from '@angular/material/table';
 import { AppService } from '../../../service/app.service';
 import { tap } from 'rxjs/internal/operators/tap';
 import { catchError, map, finalize, filter, exhaustMap } from 'rxjs/operators';
-import { of } from 'rxjs';
 import { ConfirmComponent } from '../../../plugins/modal/confirm.component';
-import {FunctionsService} from "../../../service/functions.service";
-import {LatinisePipe} from "ngx-pipes";
+import { FunctionsService } from '../../../service/functions.service';
+import { AdministrationService } from '../administration.service';
+import { of } from 'rxjs/internal/observable/of';
 
 @Component({
-    templateUrl: "diffusionModels-administration.component.html"
+    templateUrl: 'diffusionModels-administration.component.html'
 })
 export class DiffusionModelsAdministrationComponent implements OnInit {
 
@@ -28,29 +27,11 @@ export class DiffusionModelsAdministrationComponent implements OnInit {
     listTemplates: any[] = [];
     listTemplatesForAssign: any[] = [];
 
-    displayedColumns = ['label', 'description', 'typeLabel', 'actions'];
-    dataSource = new MatTableDataSource(this.listTemplates);
-
+    displayedColumns = ['title', 'description', 'typeLabel', 'actions'];
+    filterColumns = ['title', 'description', 'typeLabel'];
 
     @ViewChild(MatPaginator, { static: false }) paginator: MatPaginator;
     @ViewChild(MatSort, { static: false }) sort: MatSort;
-    applyFilter(filterValue: string) {
-        filterValue = filterValue.trim();
-        filterValue = filterValue.toLowerCase();
-        this.dataSource.filter = filterValue;
-        this.dataSource.filterPredicate = (template, filter: string) => {
-            let filterReturn = false;
-            filter = this.latinisePipe.transform(filter);
-            this.displayedColumns.forEach((column:any) => {
-                if (column === 'description' || column === 'typeLabel') {
-                    filterReturn = filterReturn || this.latinisePipe.transform(template[column].toLowerCase()).includes(filter);
-                } else if (column === 'label') {
-                    filterReturn = filterReturn || this.latinisePipe.transform(template['title'].toLowerCase()).includes(filter);
-                }
-            });
-            return filterReturn;
-        };
-    }
 
     constructor(
         public http: HttpClient,
@@ -59,7 +40,7 @@ export class DiffusionModelsAdministrationComponent implements OnInit {
         private headerService: HeaderService,
         public appService: AppService,
         public functions: FunctionsService,
-        private latinisePipe: LatinisePipe,
+        public adminService: AdministrationService,
         private viewContainerRef: ViewContainerRef
     ) { }
 
@@ -79,13 +60,13 @@ export class DiffusionModelsAdministrationComponent implements OnInit {
 
     getListemplates() {
         return new Promise((resolve, reject) => {
-            this.http.get("../rest/listTemplates").pipe(
+            this.http.get('../rest/listTemplates').pipe(
                 map((data: any) => {
                     data.listTemplates = data.listTemplates.filter((template: any) => template.entityId === null && ['visaCircuit', 'opinionCircuit'].indexOf(template.type) > -1).map((template: any) => {
                         return {
                             ...template,
                             typeLabel: this.lang[template.type]
-                        }
+                        };
                     });
                     return data.listTemplates;
                 }),
@@ -104,19 +85,7 @@ export class DiffusionModelsAdministrationComponent implements OnInit {
 
     loadList() {
         setTimeout(() => {
-            this.dataSource = new MatTableDataSource(this.listTemplates);
-            this.dataSource.paginator = this.paginator;
-            this.dataSource.sortingDataAccessor = (data: any, sortHeaderId: any) => {
-                if (sortHeaderId === 'description' || sortHeaderId === 'typeLabel') {
-                    return data[sortHeaderId].toLocaleLowerCase();
-                }
-                if (sortHeaderId === 'label') {
-                    return data['title'].toLocaleLowerCase();
-                }
-            };
-            this.sort.active = 'label';
-            this.sort.direction = 'asc';
-            this.dataSource.sort = this.sort;
+            this.adminService.setDataSource('admin_listmodels', this.listTemplates, this.sort, this.paginator, this.filterColumns);
         }, 0);
     }
 
@@ -124,7 +93,7 @@ export class DiffusionModelsAdministrationComponent implements OnInit {
         const dialogRef = this.dialog.open(ConfirmComponent, { panelClass: 'maarch-modal', autoFocus: false, disableClose: true, data: { title: this.lang.delete, msg: this.lang.confirmAction } });
         dialogRef.afterClosed().pipe(
             filter((data: string) => data === 'ok'),
-            exhaustMap(() => this.http.delete("../rest/listTemplates/" + listTemplate['id'])),
+            exhaustMap(() => this.http.delete('../rest/listTemplates/' + listTemplate['id'])),
             tap(() => {
                 this.listTemplates = this.listTemplates.filter((template: any) => template.id !== listTemplate.id);
                 this.notify.success(this.lang.diffusionModelDeleted);