diff --git a/apps/routing-api/src/main/java/org/onosproject/routing/IntentSynchronizationService.java b/apps/routing-api/src/main/java/org/onosproject/routing/IntentSynchronizationService.java
index f9cf7f9..8f97264 100644
--- a/apps/routing-api/src/main/java/org/onosproject/routing/IntentSynchronizationService.java
+++ b/apps/routing-api/src/main/java/org/onosproject/routing/IntentSynchronizationService.java
@@ -16,6 +16,7 @@
 
 package org.onosproject.routing;
 
+import org.onosproject.core.ApplicationId;
 import org.onosproject.net.intent.Intent;
 
 /**
@@ -48,4 +49,12 @@
      * @param intent intent to withdraw
      */
     void withdraw(Intent intent);
+
+    /**
+     * Withdraws intents by app Id.
+     *
+     * @param applicationId the Id of the application that created the intents
+     *                      to be removed
+     */
+    void removeIntentsByAppId(ApplicationId applicationId);
 }
diff --git a/apps/routing/src/main/java/org/onosproject/routing/impl/IntentSynchronizer.java b/apps/routing/src/main/java/org/onosproject/routing/impl/IntentSynchronizer.java
index 288c930..3b47256 100644
--- a/apps/routing/src/main/java/org/onosproject/routing/impl/IntentSynchronizer.java
+++ b/apps/routing/src/main/java/org/onosproject/routing/impl/IntentSynchronizer.java
@@ -143,6 +143,28 @@
     }
 
     @Override
+    public void removeIntentsByAppId(ApplicationId appId) {
+        if (!isElectedLeader) {
+            // Only leader will withdraw intents
+            return;
+        }
+
+        log.debug("Withdrawing intents for app {}...",
+                  appId);
+
+        intents.entrySet()
+                .stream()
+                .filter(intent -> intent.getValue().appId().equals(appId))
+                .forEach(intent -> {
+                    log.debug("Intent Synchronizer withdrawing intent: {}",
+                              intent);
+                    intentService.withdraw(intent.getValue());
+                    intents.remove(intent.getKey(), intent.getValue());
+                    log.info("Tried to clean intents for app: {}", appId);
+                });
+    }
+
+    @Override
     public void submit(Intent intent) {
         synchronized (this) {
             intents.put(intent.key(), intent);
diff --git a/apps/sdnip/src/main/java/org/onosproject/sdnip/SdnIp.java b/apps/sdnip/src/main/java/org/onosproject/sdnip/SdnIp.java
index cd4be3d..3366d91 100644
--- a/apps/sdnip/src/main/java/org/onosproject/sdnip/SdnIp.java
+++ b/apps/sdnip/src/main/java/org/onosproject/sdnip/SdnIp.java
@@ -89,9 +89,9 @@
                                                        interfaceService);
         peerConnectivity.start();
 
-        // TODO fix removing intents
-        applicationService.registerDeactivateHook(appId,
-                intentSynchronizerAdmin::removeIntents);
+        applicationService.registerDeactivateHook(appId, () -> {
+            intentSynchronizer.removeIntentsByAppId(appId);
+        });
 
         log.info("SDN-IP started");
     }
diff --git a/apps/vpls/src/main/java/org/onosproject/vpls/Vpls.java b/apps/vpls/src/main/java/org/onosproject/vpls/Vpls.java
index 4898f91..2622bc8 100644
--- a/apps/vpls/src/main/java/org/onosproject/vpls/Vpls.java
+++ b/apps/vpls/src/main/java/org/onosproject/vpls/Vpls.java
@@ -92,8 +92,9 @@
                                               intentService,
                                               intentSynchronizer);
 
-        applicationService.registerDeactivateHook(appId,
-                                                  intentSynchronizerAdmin::removeIntents);
+        applicationService.registerDeactivateHook(appId, () -> {
+            intentSynchronizer.removeIntentsByAppId(appId);
+        });
 
         hostService.addListener(hostListener);
         interfaceService.addListener(interfaceListener);
diff --git a/apps/vpls/src/test/java/org/onosproject/vpls/VplsTest.java b/apps/vpls/src/test/java/org/onosproject/vpls/VplsTest.java
index 18d1d03..981ea9b 100644
--- a/apps/vpls/src/test/java/org/onosproject/vpls/VplsTest.java
+++ b/apps/vpls/src/test/java/org/onosproject/vpls/VplsTest.java
@@ -666,12 +666,14 @@
 
         @Override
         public void modifyPrimary(boolean isPrimary) {
-
         }
 
         @Override
         public void removeIntents() {
+        }
 
+        @Override
+        public void removeIntentsByAppId(ApplicationId applicationId) {
         }
     }
 
