diff --git a/goofy-client/libs/tech-shared/src/lib/http.util.spec.ts b/goofy-client/libs/tech-shared/src/lib/http.util.spec.ts
index 37c41f47dd3d0ea70786f1f4a8d8bf267ad65fd3..7cd5a260d835bd9e8759540ab8d10863ec6850f5 100644
--- a/goofy-client/libs/tech-shared/src/lib/http.util.spec.ts
+++ b/goofy-client/libs/tech-shared/src/lib/http.util.spec.ts
@@ -1,14 +1,16 @@
 import { HttpStatusCode } from '@angular/common/http';
-import { isChangingDataRequest, isForbidden, isServerError, isUnauthorized, isUnprocessableEntity } from './http.util';
+import { HttpMethod, isConnectionTimeout } from '..';
+import { isChangingDataRequest, isForbidden, isServerError, isServiceUnavailable, isUnauthorized, isUnprocessableEntity } from './http.util';
 
 describe('http util', () => {
 
 	const SERVER_ERROR_CODES: HttpStatusCode[] = [500, 501, 505, 506, 507, 508, 510, 511];
 	const CONNECTION_TIMEOUT_CODES: HttpStatusCode[] = [502, 503, 504];
+	const CLIENT_ERROR: HttpStatusCode[] = [400, 401, 402, 403, 404, 422];
 
 	describe('isForbidden', () => {
 
-		it.each([400, 401, 402, 404, 422].concat(SERVER_ERROR_CODES))
+		it.each(CLIENT_ERROR.slice(HttpStatusCode.Forbidden).concat(SERVER_ERROR_CODES))
 			('should be false on %i', (httpStatusCode: HttpStatusCode) => {
 				var result: boolean = isForbidden(httpStatusCode);
 
@@ -24,7 +26,7 @@ describe('http util', () => {
 
 	describe('isUnauthorized', () => {
 
-		it.each([400, 402, 403, 404, 422].concat(SERVER_ERROR_CODES))
+		it.each(CLIENT_ERROR.slice(HttpStatusCode.Unauthorized).concat(SERVER_ERROR_CODES))
 			('should be false on %i', (httpStatusCode: HttpStatusCode) => {
 				var result: boolean = isUnauthorized(httpStatusCode);
 
@@ -47,7 +49,7 @@ describe('http util', () => {
 				expect(result).toBeTruthy();
 			});
 
-		it.each([400, 401, 402, 403, 404, 422].concat(CONNECTION_TIMEOUT_CODES))
+		it.each(CLIENT_ERROR.concat(CONNECTION_TIMEOUT_CODES))
 			('should be false on %i', () => {
 				var result: boolean = isServerError(HttpStatusCode.Forbidden);
 
@@ -57,33 +59,66 @@ describe('http util', () => {
 
 	describe('isUnprocessableEntity', () => {
 
-		it.each([400, 401, 402, 401, 404].concat(SERVER_ERROR_CODES))
+		it.each(CLIENT_ERROR.slice(HttpStatusCode.UnprocessableEntity).concat(SERVER_ERROR_CODES).concat(SERVER_ERROR_CODES))
 			('should be false on %i', (httpStatusCode: HttpStatusCode) => {
 				var result: boolean = isUnprocessableEntity(httpStatusCode);
 
 				expect(result).toBeFalsy();
 			});
 
-		it.each([422])
-			('should be true on %i', () => {
-				var result: boolean = isUnprocessableEntity(HttpStatusCode.UnprocessableEntity);
+		it('should be true on %i', () => {
+			var result: boolean = isUnprocessableEntity(HttpStatusCode.UnprocessableEntity);
 
-				expect(result).toBeTruthy();
-			})
+			expect(result).toBeTruthy();
+		})
 	})
 
 	describe('isChangingDataRequest', () => {
 
-		it.each(['POST', 'PUT', 'PATCH', 'DELETE'])
+		const CHANGING_DATA_REQUEST_METHOD: string[] = [HttpMethod.POST, HttpMethod.PUT, HttpMethod.PATCH, HttpMethod.DELETE];
+
+		it.each(CHANGING_DATA_REQUEST_METHOD)
 			('should return true on %i', (method: string) => {
 				var result: boolean = isChangingDataRequest(<any>{ method });
 
 				expect(result).toBeTruthy();
 			})
 
-		it.each(['GET'])
-			('should return false on %i', (method: string) => {
-				var result: boolean = isChangingDataRequest(<any>{ method });
+		it('should return false on %i', () => {
+			var result: boolean = isChangingDataRequest(<any>{ method: HttpMethod.GET });
+
+			expect(result).toBeFalsy();
+		})
+	})
+
+	describe('isConnectionTimeout', () => {
+
+		it.each(CONNECTION_TIMEOUT_CODES)
+			('should return true on %i', (statusCode: number) => {
+				var result: boolean = isConnectionTimeout(statusCode);
+
+				expect(result).toBeTruthy();
+			})
+
+		it.each(SERVER_ERROR_CODES)
+			('should return false on %i', (statusCode: number) => {
+				var result: boolean = isConnectionTimeout(statusCode);
+
+				expect(result).toBeFalsy();
+			})
+	})
+
+	describe('isServiceUnavailable', () => {
+
+		it('should return true on %i', () => {
+			var result: boolean = isServiceUnavailable(HttpStatusCode.ServiceUnavailable);
+
+			expect(result).toBeTruthy();
+		})
+
+		it.each(SERVER_ERROR_CODES.concat(CONNECTION_TIMEOUT_CODES.slice(HttpStatusCode.ServiceUnavailable)))
+			('should return false on %i', (statusCode: number) => {
+				var result: boolean = isServiceUnavailable(statusCode);
 
 				expect(result).toBeFalsy();
 			})
diff --git a/goofy-client/libs/tech-shared/src/lib/http.util.ts b/goofy-client/libs/tech-shared/src/lib/http.util.ts
index 70573c1a13f52ee24118e96b2a71f110e55d9d6a..1b95517893694a17ab0ca8433a6a0d8cbd1489d0 100644
--- a/goofy-client/libs/tech-shared/src/lib/http.util.ts
+++ b/goofy-client/libs/tech-shared/src/lib/http.util.ts
@@ -1,4 +1,5 @@
 import { HttpRequest, HttpStatusCode } from '@angular/common/http';
+import { HttpMethod } from './tech.model';
 
 export function isForbidden(status: HttpStatusCode): boolean {
 	return status == HttpStatusCode.Forbidden;
@@ -24,7 +25,7 @@ function isBadGateway(status: HttpStatusCode): boolean {
 	return status == HttpStatusCode.BadGateway;
 }
 
-function isServiceUnavailable(status: HttpStatusCode): boolean {
+export function isServiceUnavailable(status: HttpStatusCode): boolean {
 	return status == HttpStatusCode.ServiceUnavailable;
 }
 
@@ -32,8 +33,12 @@ function isGatewayTimeout(status: HttpStatusCode): boolean {
 	return status == HttpStatusCode.GatewayTimeout;
 }
 
+export function isNotFound(status: HttpStatusCode): boolean {
+	return status == HttpStatusCode.NotFound;
+}
+
 export function isChangingDataRequest(request: HttpRequest<unknown>): boolean {
-	return request.method === 'POST' || request.method === 'PUT' || request.method === 'PATCH' || request.method === 'DELETE'
+	return request.method === HttpMethod.POST || request.method === HttpMethod.PUT || request.method === HttpMethod.PATCH || request.method === HttpMethod.DELETE;
 }
 
 export function existRequestHeader(request: HttpRequest<unknown>, key: string) {
diff --git a/goofy-client/libs/tech-shared/src/lib/tech.model.ts b/goofy-client/libs/tech-shared/src/lib/tech.model.ts
index 2698480b381540ad053a07b1685b0d3591238848..38bccd86db871a6c5be445a1989b75736487b258 100644
--- a/goofy-client/libs/tech-shared/src/lib/tech.model.ts
+++ b/goofy-client/libs/tech-shared/src/lib/tech.model.ts
@@ -14,3 +14,11 @@ export interface IssueParam {
 	name: string,
 	value: string;
 }
+
+export enum HttpMethod {
+	POST = 'POST',
+	PUT = 'PUT',
+	PATCH = 'PATCH',
+	DELETE = 'DELETE',
+	GET = 'GET'
+}
\ No newline at end of file