diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/intent/impl/DistributedIntentStore.java b/core/store/dist/src/main/java/org/onlab/onos/store/intent/impl/DistributedIntentStore.java
index 3a39193..45b4b69 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/intent/impl/DistributedIntentStore.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/intent/impl/DistributedIntentStore.java
@@ -53,6 +53,7 @@
 
 import java.util.ArrayList;
 import java.util.EnumSet;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -76,6 +77,8 @@
     /** Valid parking state, which can transition to WITHDRAWN. */
     private static final Set<IntentState> PRE_WITHDRAWN = EnumSet.of(INSTALLED, FAILED);
 
+    private static final Set<IntentState> PARKING = EnumSet.of(SUBMITTED, INSTALLED, WITHDRAWN, FAILED);
+
     private final Logger log = getLogger(getClass());
 
     // Assumption: IntentId will not have synonyms
@@ -415,6 +418,8 @@
         List<Operation> failed = new ArrayList<>();
         final Builder builder = BatchWriteRequest.newBuilder();
 
+        final Set<IntentId> transitionedToParking = new HashSet<>();
+
         for (Operation op : batch.operations()) {
             switch (op.type()) {
             case CREATE_INTENT:
@@ -440,6 +445,11 @@
                 intent = op.arg(0);
                 IntentState newState = op.arg(1);
                 builder.put(STATES_TABLE, strIntentId(intent.id()), serializer.encode(newState));
+                if (PARKING.contains(newState)) {
+                    transitionedToParking.add(intent.id());
+                } else {
+                    transitionedToParking.remove(intent.id());
+                }
                 break;
 
             case SET_INSTALLABLE:
@@ -467,6 +477,7 @@
         BatchWriteResult batchWriteResult = dbService.batchWrite(builder.build());
         if (batchWriteResult.isSuccessful()) {
             // no-failure (except for invalid input)
+            transitionedToParking.forEach((intentId) -> transientStates.remove(intentId));
             return failed;
         } else {
             // everything failed
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/intent/impl/HazelcastIntentStore.java b/core/store/dist/src/main/java/org/onlab/onos/store/intent/impl/HazelcastIntentStore.java
index c458446..02f7b82 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/intent/impl/HazelcastIntentStore.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/intent/impl/HazelcastIntentStore.java
@@ -76,6 +76,8 @@
     /** Valid parking state, which can transition to WITHDRAWN. */
     private static final Set<IntentState> PRE_WITHDRAWN = EnumSet.of(INSTALLED, FAILED);
 
+    private static final Set<IntentState> PARKING = EnumSet.of(SUBMITTED, INSTALLED, WITHDRAWN, FAILED);
+
     private final Logger log = getLogger(getClass());
 
     // Assumption: IntentId will not have synonyms
@@ -348,6 +350,8 @@
         }
     }
 
+    // TODO slice out methods after merging Ali's patch
+    // CHECKSTYLE IGNORE MethodLength FOR NEXT 1 LINES
     @Override
     public List<Operation> batchWrite(BatchWrite batch) {
         // Hazelcast version will never fail for conditional failure now.
@@ -479,6 +483,10 @@
 
                 try {
                     IntentState prevIntentState = (IntentState) subops.get(0).get();
+
+                    if (PARKING.contains(newState)) {
+                        transientStates.remove(intentId);
+                    }
                     log.trace("{} - {} -> {}", intentId, prevIntentState, newState);
                     // TODO sanity check and log?
                 } catch (InterruptedException e) {
