diff --git a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/IntentSynchronizer.java b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/IntentSynchronizer.java
index e9b6940..73d9763 100644
--- a/apps/sdnip/src/main/java/org/onlab/onos/sdnip/IntentSynchronizer.java
+++ b/apps/sdnip/src/main/java/org/onlab/onos/sdnip/IntentSynchronizer.java
@@ -316,6 +316,12 @@
                 }
                 fetchedIntents.put(new IntentKey(intent), intent);
             }
+            if (log.isDebugEnabled()) {
+                for (Intent intent: fetchedIntents.values()) {
+                    log.debug("SDN-IP Intent Synchronizer: fetched intent: {}",
+                              intent);
+                }
+            }
 
             computeIntentsDelta(localIntents, fetchedIntents,
                                 storeInMemoryIntents, addIntents,
@@ -370,6 +376,8 @@
                       intent);
             }
             if (!isElectedLeader) {
+                log.debug("SDN-IP Intent Synchronizer: cannot withdraw intents: " +
+                          "not elected leader anymore");
                 isActivatedLeader = false;
                 return;
             }
@@ -380,14 +388,16 @@
             builder = IntentOperations.builder();
             for (Intent intent : addIntents) {
                 builder.addSubmitOperation(intent);
+                log.debug("SDN-IP Intent Synchronizer: submitting intent: {}",
+                          intent);
             }
             if (!isElectedLeader) {
+                log.debug("SDN-IP Intent Synchronizer: cannot submit intents: " +
+                          "not elected leader anymore");
                 isActivatedLeader = false;
                 return;
             }
             intentOperations = builder.build();
-            log.debug("SDN-IP Intent Synchronizer: submitting intents: {}",
-                      intentOperations);
             intentService.execute(intentOperations);
 
             if (isElectedLeader) {
diff --git a/apps/sdnip/src/test/java/org/onlab/onos/sdnip/TestIntentServiceHelper.java b/apps/sdnip/src/test/java/org/onlab/onos/sdnip/TestIntentServiceHelper.java
index 3ea8b02..00dce9e 100644
--- a/apps/sdnip/src/test/java/org/onlab/onos/sdnip/TestIntentServiceHelper.java
+++ b/apps/sdnip/src/test/java/org/onlab/onos/sdnip/TestIntentServiceHelper.java
@@ -48,7 +48,7 @@
     }
 
     /*
-     * EasyMock matcher that matches {@link Inten} but
+     * EasyMock matcher that matches {@link Intent} but
      * ignores the {@link IntentId} when matching.
      * <p/>
      * The normal intent equals method tests that the intent IDs are equal,
