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) {
