diff --git a/src/frontend/app/actions/actions.service.ts b/src/frontend/app/actions/actions.service.ts
index af2801d60553f9ed7ef7343922e71f86995145c6..e22014e56234883482f237ef3748aacff5bef6a4 100644
--- a/src/frontend/app/actions/actions.service.ts
+++ b/src/frontend/app/actions/actions.service.ts
@@ -71,6 +71,12 @@ export class ActionsService {
     ) {
     }
 
+    ngOnDestroy(): void {
+        if (this.currentResourceLock) {
+            clearInterval(this.currentResourceLock);
+        }
+    }
+
     catchAction(): Observable<any> {
         return this.eventAction.asObservable();
     }
diff --git a/src/frontend/app/administration/template/template-administration.component.ts b/src/frontend/app/administration/template/template-administration.component.ts
index e60df48ac7e47f4dfb72e46840f21a48f0b6602e..0e052d36c341b4167ef83c572547885a4f1f36e4 100755
--- a/src/frontend/app/administration/template/template-administration.component.ts
+++ b/src/frontend/app/administration/template/template-administration.component.ts
@@ -672,6 +672,9 @@ export class TemplateAdministrationComponent implements OnInit, OnDestroy {
 
     ngOnDestroy() {
         tinymce.remove('textarea');
+        if (this.intervalLockFile) {
+            clearInterval(this.intervalLockFile);
+        }
     }
 }
 @Component({
diff --git a/src/frontend/app/process/process.component.ts b/src/frontend/app/process/process.component.ts
index 473c367f1d54b8e5a8143809d1cd9affa5158519..338b167a886703ef0af79c0cfa5f03614c4ac004 100755
--- a/src/frontend/app/process/process.component.ts
+++ b/src/frontend/app/process/process.component.ts
@@ -683,6 +683,9 @@ export class ProcessComponent implements OnInit {
     }
 
     ngOnDestroy() {
+        if (this.currentResourceLock) {
+            clearInterval(this.currentResourceLock);
+        }
         // unsubscribe to ensure no memory leaks
         this.subscription.unsubscribe();
     }
diff --git a/src/frontend/app/signature-book.component.ts b/src/frontend/app/signature-book.component.ts
index e3d059125aac9790f991cb655ccfd17575953cde..7135f0f6576b6a0fca74bdf3112345ecb981f714 100755
--- a/src/frontend/app/signature-book.component.ts
+++ b/src/frontend/app/signature-book.component.ts
@@ -600,6 +600,10 @@ export class SignatureBookComponent implements OnInit {
     }
 
     ngOnDestroy() {
+        if (this.currentResourceLock) {
+            clearInterval(this.currentResourceLock);
+        }
+
         // unsubscribe to ensure no memory leaks
         this.subscription.unsubscribe();
     }
diff --git a/src/frontend/app/viewer/document-viewer.component.ts b/src/frontend/app/viewer/document-viewer.component.ts
index d9ff3c6553fa64d52dbae18054fcadf519aa4ab4..e01c2548241e1f5990b8c69b966844108ecb0d79 100755
--- a/src/frontend/app/viewer/document-viewer.component.ts
+++ b/src/frontend/app/viewer/document-viewer.component.ts
@@ -208,6 +208,12 @@ export class DocumentViewerComponent implements OnInit {
         }
     }
 
+    ngOnDestroy() {
+        if (this.intervalLockFile) {
+            clearInterval(this.intervalLockFile);
+        }
+    }
+
     loadFileFromBase64() {
         this.loading = true;
         this.file = {
diff --git a/src/frontend/service/app.guard.ts b/src/frontend/service/app.guard.ts
index 1ead3da4c4761cfc640d2221a3b2377a13426434..d71cca9b1287e69013828f0731bce98d5468691d 100644
--- a/src/frontend/service/app.guard.ts
+++ b/src/frontend/service/app.guard.ts
@@ -1,6 +1,6 @@
 
 import { Injectable } from '@angular/core';
-import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, CanDeactivate } from '@angular/router';
+import { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, CanDeactivate, UrlTree } from '@angular/router';
 import { HttpClient } from '@angular/common/http';
 import { Observable, of } from 'rxjs';
 import { map, tap, catchError, exhaustMap, filter } from 'rxjs/operators';
@@ -181,8 +181,8 @@ export class AppGuard implements CanActivate {
 export class AfterProcessGuard implements CanDeactivate<ProcessComponent> {
     constructor() { }
 
-    async canDeactivate(component: ProcessComponent): Promise<boolean> {
-        if (!component.isActionEnded() && !component.detailMode) {
+    async canDeactivate(component: ProcessComponent, currentRoute: ActivatedRouteSnapshot, currentState: RouterStateSnapshot, nextState: RouterStateSnapshot): Promise<boolean> {
+        if (nextState.url != '/login' && !component.isActionEnded() && !component.detailMode) {
             component.unlockResource();
         }