diff --git a/cps-rest/docs/api/swagger/openapi.yml b/cps-rest/docs/api/swagger/openapi.yml
index 0c7c83c..56a012f 100755
--- a/cps-rest/docs/api/swagger/openapi.yml
+++ b/cps-rest/docs/api/swagger/openapi.yml
@@ -364,18 +364,28 @@
           description: Not Found
           content: {}
 components:
-    schemas:
-       Anchor:
-           type: object
-           title: Anchor
-           required:
-              - anchorName
-              - namespace
-              - revision
-           properties:
-               anchorName:
-                   type: string
-               namespace:
-                   type: string
-               revision:
-                   type: string
\ No newline at end of file
+  schemas:
+    ErrorMessage:
+      type: object
+      title: Error
+      properties:
+        status:
+          type: string
+        message:
+          type: string
+        details:
+          type: string
+    Anchor:
+      type: object
+      title: Anchor
+      required:
+        - anchorName
+        - namespace
+        - revision
+      properties:
+        anchorName:
+          type: string
+        namespace:
+          type: string
+        revision:
+          type: string
diff --git a/cps-rest/src/main/java/org/onap/cps/rest/exceptions/CpsRestExceptionHandler.java b/cps-rest/src/main/java/org/onap/cps/rest/exceptions/CpsRestExceptionHandler.java
index 9cf4935..2b9ee51 100644
--- a/cps-rest/src/main/java/org/onap/cps/rest/exceptions/CpsRestExceptionHandler.java
+++ b/cps-rest/src/main/java/org/onap/cps/rest/exceptions/CpsRestExceptionHandler.java
@@ -20,12 +20,11 @@
 package org.onap.cps.rest.exceptions;
 
 import org.apache.commons.lang3.exception.ExceptionUtils;
-import org.hibernate.exception.ConstraintViolationException;
 import org.onap.cps.exceptions.CpsException;
 import org.onap.cps.exceptions.CpsNotFoundException;
 import org.onap.cps.exceptions.CpsValidationException;
 import org.onap.cps.rest.controller.CpsRestController;
-import org.springframework.dao.EmptyResultDataAccessException;
+import org.onap.cps.rest.model.ErrorMessage;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.ExceptionHandler;
@@ -45,25 +44,6 @@
         return buildErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR, exception);
     }
 
-    /*
-        TODO: Rid off extra dependencies.
-
-        Generic exception handler and CpsException (incl. children) are the only
-        exceptions to be handled here. All the other exceptions which require a special
-        treatment should be rethrown as CpsException in the place of occurrence ->
-        e.g. persistence exceptions are to be handled in cps-ri module.
-     */
-
-    @ExceptionHandler({ConstraintViolationException.class})
-    public ResponseEntity<Object> handleBadRequestException(Exception exception) {
-        return buildErrorResponse(HttpStatus.BAD_REQUEST, exception);
-    }
-
-    @ExceptionHandler({EmptyResultDataAccessException.class})
-    public ResponseEntity<Object> handleNotFoundException(Exception exception) {
-        return buildErrorResponse(HttpStatus.NOT_FOUND, exception);
-    }
-
     @ExceptionHandler({CpsException.class})
     public ResponseEntity<Object> handleCpsException(CpsException exception) {
         return buildErrorResponse(HttpStatus.INTERNAL_SERVER_ERROR, exception.getMessage(), extractDetails(exception));
@@ -84,10 +64,11 @@
     }
 
     private static ResponseEntity<Object> buildErrorResponse(HttpStatus status, String message, String details) {
-        return new ResponseEntity<>(
-            ErrorMessage.builder().status(status.toString()).message(message).details(details).build(),
-            status
-        );
+        ErrorMessage errorMessage = new ErrorMessage();
+        errorMessage.setStatus(status.toString());
+        errorMessage.setMessage(message);
+        errorMessage.setDetails(details);
+        return new ResponseEntity<>(errorMessage, status);
     }
 
     private static String extractDetails(CpsException exception) {
diff --git a/cps-rest/src/main/java/org/onap/cps/rest/exceptions/ErrorMessage.java b/cps-rest/src/main/java/org/onap/cps/rest/exceptions/ErrorMessage.java
deleted file mode 100644
index 1f2a0b7..0000000
--- a/cps-rest/src/main/java/org/onap/cps/rest/exceptions/ErrorMessage.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * ============LICENSE_START=======================================================
- *  Copyright (C) 2020 Pantheon.tech
- *  ================================================================================
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *  SPDX-License-Identifier: Apache-2.0
- *  ============LICENSE_END=========================================================
- */
-
-package org.onap.cps.rest.exceptions;
-
-import lombok.Builder;
-import lombok.Data;
-
-/**
- * Temporary POJO class used as error response model.
- * TODO: To replace with model class generated from Open API specification.
- *
- */
-@Builder
-@Data
-public class ErrorMessage {
-    private String status;
-    private String message;
-    private String details;
-}
-
