diff --git a/core/store/dist/src/main/java/org/onosproject/store/config/impl/DistributedNetworkConfigStore.java b/core/store/dist/src/main/java/org/onosproject/store/config/impl/DistributedNetworkConfigStore.java
index 4a31aff..f2bee40 100644
--- a/core/store/dist/src/main/java/org/onosproject/store/config/impl/DistributedNetworkConfigStore.java
+++ b/core/store/dist/src/main/java/org/onosproject/store/config/impl/DistributedNetworkConfigStore.java
@@ -136,13 +136,19 @@
 
     @SuppressWarnings("unchecked")
     private void validateConfig(ConfigKey key, ConfigFactory configFactory, JsonNode json) {
-        Config config = createConfig(key.subject, configFactory.configClass(), json);
+        Object subject;
+        if (key.subject instanceof String) {
+            subject = configFactory.subjectFactory().createSubject((String) key.subject);
+        } else {
+            subject = key.subject;
+        }
+        Config config = createConfig(subject, configFactory.configClass(), json);
         try {
             checkArgument(config.isValid(), INVALID_CONFIG_JSON);
-            configs.putAndGet(key(key.subject, configFactory.configClass()), json);
+            configs.putAndGet(key(subject, configFactory.configClass()), json);
         } catch (Exception e) {
             log.warn("Failed to validate pending {} configuration for {}: {}",
-                     key.configKey, configFactory.subjectFactory().subjectKey(key.subject), json);
+                     key.configKey, key.subject, json);
         }
     }
 
@@ -156,7 +162,7 @@
     @Override
     @SuppressWarnings("unchecked")
     public <S, C extends Config<S>> ConfigFactory<S, C> getConfigFactory(Class<C> configClass) {
-        return (ConfigFactory<S, C>) factoriesByConfig.get(configClass.getName());
+        return factoriesByConfig.get(configClass.getName());
     }
 
     @Override
