diff --git a/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommand.java b/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommand.java
index 3b86d09..ef20d07 100644
--- a/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommand.java
@@ -41,6 +41,7 @@
 
     static final String GET = "get";
     static final String SET = "set";
+    static final String PRESET = "preset";
 
     private static final String FMT = "    name=%s, type=%s, value=%s, defaultValue=%s, description=%s";
     private static final String SHORT_FMT = "    %s=%s";
@@ -51,7 +52,7 @@
 
 
     @Argument(index = 0, name = "command",
-            description = "Command name (get|set)",
+            description = "Command name (get|set|preset)",
             required = false, multiValued = false)
     String command = null;
 
@@ -85,6 +86,8 @@
                 service.unsetProperty(component, name);
             } else if (command.equals(SET)) {
                 service.setProperty(component, name, value);
+            } else if (command.equals(PRESET)) {
+                service.preSetProperty(component, name, value);
             } else {
                 error("Illegal usage");
             }
diff --git a/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommandCompleter.java b/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommandCompleter.java
index 4397a2b..46830cf 100644
--- a/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommandCompleter.java
+++ b/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommandCompleter.java
@@ -22,6 +22,7 @@
 import java.util.SortedSet;
 
 import static org.onosproject.cli.cfg.ComponentConfigCommand.GET;
+import static org.onosproject.cli.cfg.ComponentConfigCommand.PRESET;
 import static org.onosproject.cli.cfg.ComponentConfigCommand.SET;
 
 /**
@@ -35,6 +36,7 @@
         SortedSet<String> strings = delegate.getStrings();
         strings.add(GET);
         strings.add(SET);
+        strings.add(PRESET);
 
         // Now let the completer do the work for figuring out what to offer.
         return delegate.complete(buffer, cursor, candidates);
diff --git a/core/net/src/main/java/org/onosproject/cfg/impl/ComponentConfigManager.java b/core/net/src/main/java/org/onosproject/cfg/impl/ComponentConfigManager.java
index b53646f..60feca0 100644
--- a/core/net/src/main/java/org/onosproject/cfg/impl/ComponentConfigManager.java
+++ b/core/net/src/main/java/org/onosproject/cfg/impl/ComponentConfigManager.java
@@ -244,6 +244,9 @@
                 return;
             }
         }
+
+        // If definition doesn't exist in local catalog, cache the property.
+        preSet(componentName, name, value);
     }
 
     // Locates the property in the component map and replaces it with an
@@ -262,6 +265,21 @@
         }
     }
 
+    // Stores non-existent property so that loadExistingValues() can load in future.
+    private void preSet(String componentName, String name, String value) {
+        try {
+            Configuration config = cfgAdmin.getConfiguration(componentName, null);
+            Dictionary<String, Object> props = config.getProperties();
+            if (props == null) {
+                props = new Hashtable<>();
+            }
+            props.put(name, value);
+            config.update(props);
+        } catch (IOException e) {
+            log.error("Failed to preset configuration for {}", componentName);
+        }
+    }
+
     // Checks whether the value of the specified configuration property is a valid one or not.
     private void checkValidity(String componentName, String name, String newValue) {
         Map<String, ConfigProperty> map = properties.get(componentName);
