diff --git a/cps-ri/src/main/java/org/onap/cps/spi/repository/DataspaceRepository.java b/cps-ri/src/main/java/org/onap/cps/spi/repository/DataspaceRepository.java
index daf0b71..4b64916 100755
--- a/cps-ri/src/main/java/org/onap/cps/spi/repository/DataspaceRepository.java
+++ b/cps-ri/src/main/java/org/onap/cps/spi/repository/DataspaceRepository.java
@@ -21,7 +21,7 @@
 
 import java.util.Optional;
 import javax.validation.constraints.NotNull;
-import org.onap.cps.exceptions.CpsNotFoundException;
+import org.onap.cps.exceptions.DataspaceNotFoundException;
 import org.onap.cps.spi.entities.Dataspace;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
@@ -34,6 +34,6 @@
 
     default Dataspace getByName(@NotNull String name) {
         return findByName(name).orElseThrow(
-            () -> new CpsNotFoundException("Not Found", "Dataspace " + name + " does not exist."));
+            () -> new DataspaceNotFoundException("Dataspace " + name + " does not exist."));
     }
 }
\ No newline at end of file
diff --git a/cps-service/src/main/java/org/onap/cps/exceptions/CpsAdminException.java b/cps-service/src/main/java/org/onap/cps/exceptions/CpsAdminException.java
new file mode 100644
index 0000000..a088913
--- /dev/null
+++ b/cps-service/src/main/java/org/onap/cps/exceptions/CpsAdminException.java
@@ -0,0 +1,60 @@
+/*
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2020 Bell Canada. All rights reserved.
+ *  ================================================================================
+ *  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.exceptions;
+
+import lombok.Getter;
+
+/**
+ * CPS Admin exception.
+ */
+public class CpsAdminException extends CpsValidationException {
+
+    private static final long serialVersionUID = 5573438585188332404L;
+
+    /**
+     * Constructor.
+     *
+     * @param cause the cause of the exception
+     */
+    public CpsAdminException(final Throwable cause) {
+        super(cause.getMessage(), cause);
+    }
+
+    /**
+     * Constructor.
+     *
+     * @param message the error message
+     * @param cause   the cause of the exception
+     */
+    public CpsAdminException(final  String message, final Throwable cause) {
+        super(message, cause);
+    }
+
+    /**
+     * Constructor.
+     *
+     * @param message the error message
+     * @param details the error details
+     */
+    public CpsAdminException(final String message, final String details) {
+        super(message, details);
+        this.details = details;
+    }
+}
diff --git a/cps-service/src/main/java/org/onap/cps/exceptions/DataspaceNotFoundException.java b/cps-service/src/main/java/org/onap/cps/exceptions/DataspaceNotFoundException.java
new file mode 100644
index 0000000..1b09cdd
--- /dev/null
+++ b/cps-service/src/main/java/org/onap/cps/exceptions/DataspaceNotFoundException.java
@@ -0,0 +1,57 @@
+/*
+ * ============LICENSE_START=======================================================
+ *  Copyright (C) 2020 Bell Canada. All rights reserved.
+ *  ================================================================================
+ *  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.exceptions;
+
+
+/**
+ * Dataspace Not Found Exception. Indicates the requested data being absent.
+ */
+public class DataspaceNotFoundException extends CpsAdminException {
+
+    private static final long serialVersionUID = -1852996415384288431L;
+
+    /**
+     * Constructor.
+     *
+     * @param cause the cause of the exception
+     */
+    public DataspaceNotFoundException(final Throwable cause) {
+        super(cause.getMessage(), cause);
+    }
+
+    /**
+     * Constructor.
+     *
+     * @param message the error message
+     * @param cause   the cause of the exception
+     */
+    public DataspaceNotFoundException(final String message, final Throwable cause) {
+        super(message, cause);
+    }
+
+    /**
+     * Constructor.
+     *
+     * @param details the error details
+     */
+    public DataspaceNotFoundException(final String details) {
+        super("Dataspace Not Found", details);
+    }
+}
