diff --git a/api/src/main/resources/api.yaml b/api/src/main/resources/api.yaml
index de194c504a868f530a33ebbeb7b6f3efec386176..afb2a75ae372edaaaad82edf012cc8f04f380240 100644
--- a/api/src/main/resources/api.yaml
+++ b/api/src/main/resources/api.yaml
@@ -248,7 +248,7 @@ paths:
       tags:
         - FDOs
       description: "Delete an FDO."
-      operationId: baseDelete
+      operationId: delete
       parameters:
         - $ref: '#/components/parameters/Prefix'
         - $ref: '#/components/parameters/Suffix'
diff --git a/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java b/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java
index 4bb36de0aa56eede18dc0a653b8ec54c9fe10073..ccae30bf01a064c6a7f9118e9e2f8282c70ff818 100644
--- a/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java
+++ b/application/src/main/java/com/indiscale/fdo/manager/service/fdo/FDOApiImpl.java
@@ -108,12 +108,39 @@ public class FDOApiImpl extends BaseController implements FdoApi {
   }
 
   @Override
-  public ResponseEntity<Void> baseDelete(
+  public ResponseEntity<Void> delete(
       String prefix, String suffix, Boolean purge, Boolean deleteMD) {
     if (purge) {
       return purgeFDO(prefix, suffix);
     }
-    throw new ResponseStatusException(HttpStatus.NOT_IMPLEMENTED);
+    return deleteFDO(prefix, suffix, deleteMD);
+  }
+
+  public ResponseEntity<Void> deleteFDO(String prefix, String suffix, boolean deleteMD) {
+    try (Manager manager = getManager()) {
+      String pid = prefix + "/" + suffix;
+      DigitalObject fdo = manager.resolvePID(pid);
+      String repoId = manager.deleteFDO(pid, deleteMD);
+      if (repoId != null && !repoId.isEmpty()) {
+        RepositoryConnection repository =
+            manager.getRepositoryRegistry().createRepositoryConnection(repoId);
+        getLogger().deleteFDO(fdo, repository);
+        return ResponseEntity.noContent().build();
+      } else {
+        throw new ResponseStatusException(
+            HttpStatus.INTERNAL_SERVER_ERROR, "Could not delete PID " + pid + " due to inability to connect to repository.");
+      }
+    } catch (PidUnresolvableException e) {
+      throw new ResponseStatusException(
+          HttpStatus.NOT_FOUND, "Not found. Could not resolve PID " + e.getPid());
+    } catch (UnknownRepositoryException e) {
+      e.printStackTrace();
+      throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Not found. Repository unknown.");
+    } catch (UnsuccessfulOperationException e) {
+      e.printStackTrace();
+      throw new ResponseStatusException(
+          HttpStatus.INTERNAL_SERVER_ERROR, "Deletion unsuccessful: " + e.getMessage());
+    }
   }
 
   public ResponseEntity<Void> purgeFDO(String prefix, String suffix) {