diff --git a/ui-modules/blueprint-composer/app/components/providers/blueprint-service.provider.js b/ui-modules/blueprint-composer/app/components/providers/blueprint-service.provider.js
index be572d7..7cc63b0 100644
--- a/ui-modules/blueprint-composer/app/components/providers/blueprint-service.provider.js
+++ b/ui-modules/blueprint-composer/app/components/providers/blueprint-service.provider.js
@@ -253,11 +253,13 @@
             entity.miscData.set('traits', []);
             deferred.resolve(entity);
             addUnlistedConfigKeysDefinitions(entity);
+            addUnlistedParameterDefinitions(entity);
         } else {
             entity.miscData.set('sensors', []);
             entity.miscData.set('traits', []);
             deferred.resolve(entity);
             addUnlistedConfigKeysDefinitions(entity);
+            addUnlistedParameterDefinitions(entity);
         }
 
         return deferred.promise;
@@ -525,8 +527,6 @@
     }
 
     function addUnlistedConfigKeysDefinitions(entity) {
-        // there may be config in the entity definition not in the model; if so, add them.
-        // parameters will all be defined in this model so no need to do this for them. 
         let allConfig = entity.miscData.get('config') || [];
         entity.config.forEach((value, key) => {
             if (!allConfig.some((e) => e.name === key)) {
@@ -536,6 +536,16 @@
         entity.miscData.set('config', allConfig);
     }
 
+    function addUnlistedParameterDefinitions(entity) {
+        let allParams = entity.miscData.get('parameters') || [];
+        entity.parameters.forEach((param) => {
+            if (!allParams.some((e) => e.name === param.name)) {
+                allParams.push(param);
+            }
+        });
+        entity.miscData.set('parameters', allParams);
+    }
+
     function populateEntityFromApiSuccess(entity, data) {
         entity.clearIssues({group: 'type'});
         entity.type = data.symbolicName;
@@ -558,6 +568,7 @@
         entity.miscData.set('ui-composer-hints', uiHints);
         entity.miscData.set('virtual', data.virtual || null);
         addUnlistedConfigKeysDefinitions(entity);
+        addUnlistedParameterDefinitions(entity);
         return entity;
     }
     function mergeAppendingLists(dst, src) {
@@ -583,6 +594,7 @@
         entity.miscData.set('virtual', null);
         entity.icon = typeNotFoundIcon;
         addUnlistedConfigKeysDefinitions(entity);
+        addUnlistedParameterDefinitions(entity);
         return entity;
     }
 
