--- /dev/null
+/*-
+ * ============LICENSE_START=======================================================
+ * org.onap.dmaap
+ * ================================================================================
+ * Copyright (C) 2019 Nokia Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.dmaap.dbcapi.aaf;
+
+class AafEmpty extends AafObject {
+    @Override
+    String toJSON() {
+        return "";
+    }
+}
 
 
     int addPerm(DmaapPerm perm);
 
-    int delPerm(DmaapPerm perm);
+    int delPerm(DmaapPerm perm, boolean force);
 
     int addGrant(DmaapGrant grant);
 
 
     int addNamespace(AafNamespace ns);
 
-    int delNamespace(AafNamespace ns);
+    int delNamespace(AafNamespace ns, boolean force);
 }
 
 import org.onap.dmaap.dbcapi.logging.BaseLoggingClass;
 import org.onap.dmaap.dbcapi.logging.DmaapbcLogMessageEnum;
 
+import static java.lang.String.format;
+
 public class AafServiceImpl extends BaseLoggingClass implements AafService {
 
     private static final int CREATED = 201;
     private static final int OK = 200;
+    private static final String FORCE = "?force=true";
     private final String aafUrl;
     private final String identity;
     private final boolean useAAF;
     }
 
     @Override
-    public int delPerm(DmaapPerm perm) {
-        return OK;
+    public int delPerm(DmaapPerm perm, boolean force) {
+        logger.info("entry: delPerm()");
+        return doDelete(new AafEmpty(), format(
+                "authz/perm/%s/%s/%s%s",
+                perm.getPermission(), perm.getPtype(), perm.getAction(), force ? FORCE : ""), OK);
     }
 
     @Override
     }
 
     @Override
-    public int delNamespace(AafNamespace ns) {
-        return OK;
+    public int delNamespace(AafNamespace ns, boolean force) {
+        logger.info("entry: delNamespace()");
+        return doDelete(new AafEmpty(), format(
+                "authz/ns/%s%s",
+                ns.getName(), force ? FORCE : ""), OK);
     }
 
     private int doPost(AafObject obj, String uri, int expect) {
 
 
     private void removePermission(String permission, String instance, String action) throws TopicSetupException {
         DmaapPerm perm = new DmaapPerm(permission, instance, action);
-        int rc = aafService.delPerm(perm);
+        int rc = aafService.delPerm(perm, true);
         if (rc != 200 && rc != 404) {
             throw new TopicSetupException(500,
                     format("Unexpected response from AAF: %d permission=%s instance=%s action=%s",
 
     private void removeNamespace(Topic topic) throws TopicSetupException {
         AafNamespace ns = new AafNamespace(topic.getFqtn(), aafService.getIdentity());
-        int rc = aafService.delNamespace(ns);
+        int rc = aafService.delNamespace(ns, true);
         if (rc != 200 && rc != 404) {
             throw new TopicSetupException(500,
                     format("Unexpected response from AAF: %d namespace=%s identity=%s",
 
 import static org.mockito.BDDMockito.then;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.verifyZeroInteractions;
 
 @RunWith(JUnitParamsRunner.class)
 
         assertEquals(aafServiceReturnedCode, status);
     }
+
+    @Test
+    public void shouldDeletePermission() {
+        DmaapPerm perm = new DmaapPerm("permName", "type", "action");
+
+        int status = aafService.delPerm(perm, false);
+
+        then(aafConnection).should().delAaf(any(AafEmpty.class), eq(AAF_URL + "authz/perm/permName/type/action"));
+        assertEquals(OK, status);
+    }
+
+    @Test
+    public void shouldDeletePermissionWithForce() {
+        DmaapPerm perm = new DmaapPerm("permName", "type", "action");
+
+        int status = aafService.delPerm(perm, true);
+
+        then(aafConnection).should().delAaf(any(AafEmpty.class), eq(AAF_URL + "authz/perm/permName/type/action?force=true"));
+        assertEquals(OK, status);
+    }
+
+    @Test
+    public void shouldDeleteNamespace() {
+        AafNamespace ns = new AafNamespace("nsName", "ident");
+
+        int status = aafService.delNamespace(ns, false);
+
+        then(aafConnection).should().delAaf(any(AafEmpty.class), eq(AAF_URL + "authz/ns/nsName"));
+        assertEquals(OK, status);
+    }
+
+    @Test
+    public void shouldDeleteNamespaceWithForce() {
+        AafNamespace ns = new AafNamespace("nsName", "ident");
+
+        int status = aafService.delNamespace(ns, true);
+
+        then(aafConnection).should().delAaf(any(AafEmpty.class), eq(AAF_URL + "authz/ns/nsName?force=true"));
+        assertEquals(OK, status);
+    }
 }
\ No newline at end of file
 
         }
 
         @Override
-        public int delPerm(DmaapPerm perm) {
+        public int delPerm(DmaapPerm perm, boolean force) {
             removedPerms.add(perm);
             return removePermStatus;
         }
         }
 
         @Override
-        public int delNamespace(AafNamespace namespace) {
+        public int delNamespace(AafNamespace namespace, boolean force) {
             this.removedNamespace = namespace;
             return removeNamespaceStatus;
         }