diff --git a/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java b/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java
index f20668e..26281da 100644
--- a/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java
+++ b/src/main/java/org/onap/clamp/clds/client/DcaeDispatcherServices.java
@@ -25,6 +25,7 @@
 
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
+import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 
 import java.util.Date;
@@ -152,16 +153,19 @@
      *            The deployment ID
      * @param serviceTypeId
      *            Service type ID
-     * @param blueprintInput
+     * @param blueprintInputJson
      *            The value for each blueprint parameters in a flat JSON
      * @return The status URL
      */
-    public String createNewDeployment(String deploymentId, String serviceTypeId) {
+    public String createNewDeployment(String deploymentId, String serviceTypeId, JsonNode blueprintInputJson) {
         Date startTime = new Date();
         LoggingUtils.setTargetContext("DCAE", "createNewDeployment");
         try {
             ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("dcae.deployment.template");
             rootNode.put("serviceTypeId", serviceTypeId);
+            if (blueprintInputJson != null) {
+                rootNode.put("inputs", blueprintInputJson);
+            }
             String apiBodyString = rootNode.toString();
             logger.info("Dcae api Body String - " + apiBodyString);
             String url = refProp.getStringValue(DCAE_URL_PROPERTY_NAME) + DCAE_URL_PREFIX + deploymentId;
diff --git a/src/main/java/org/onap/clamp/clds/model/properties/AbstractModelElement.java b/src/main/java/org/onap/clamp/clds/model/properties/AbstractModelElement.java
index 9b8d9d9..118059d 100644
--- a/src/main/java/org/onap/clamp/clds/model/properties/AbstractModelElement.java
+++ b/src/main/java/org/onap/clamp/clds/model/properties/AbstractModelElement.java
@@ -26,29 +26,26 @@
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 import com.fasterxml.jackson.databind.JsonNode;
+
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
 /**
  * Provide base ModelElement functionality. Perform base parsing of properties
- * for a ModelElement (such as, VesCollector, Policy, Tca, Holmes,
- * ...)
+ * for a ModelElement (such as, VesCollector, Policy, Tca, Holmes, ...)
  */
 public abstract class AbstractModelElement {
 
     protected static final EELFLogger logger = EELFManager.getInstance().getLogger(AbstractModelElement.class);
     protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
-
     private final String type;
     private final ModelBpmn modelBpmn;
     private final String id;
     protected String topicPublishes;
     protected final JsonNode modelElementJsonNode;
     private boolean isFound;
-
     private final ModelProperties modelProp;
-
     private static final String LOG_ELEMENT_NOT_FOUND = "Value '{}' for key 'name' not found in JSON";
     private static final String LOG_ELEMENT_NOT_FOUND_IN_JSON = "Value '{}' for key 'name' not found in JSON {}";
 
@@ -118,6 +115,27 @@
     }
 
     /**
+     * Return the Json value field of the json node element that has a name
+     * field equals to the given name.
+     */
+    public static JsonNode getJsonNodeByName(JsonNode nodeIn, String name) {
+        JsonNode vnode = null;
+        if (nodeIn != null) {
+            for (JsonNode node : nodeIn) {
+                if (node.path("name").asText().equals(name)) {
+                    vnode = node.path("value");
+                }
+            }
+        }
+        if (vnode == null) {
+            logger.warn(LOG_ELEMENT_NOT_FOUND, name);
+        } else {
+            logger.debug(LOG_ELEMENT_NOT_FOUND_IN_JSON, name, nodeIn.toString());
+        }
+        return vnode;
+    }
+
+    /**
      * Return the value field of the json node element that has a name field
      * that equals the given name.
      */
diff --git a/src/main/java/org/onap/clamp/clds/model/properties/Global.java b/src/main/java/org/onap/clamp/clds/model/properties/Global.java
index ef36fef..c4532b2 100644
--- a/src/main/java/org/onap/clamp/clds/model/properties/Global.java
+++ b/src/main/java/org/onap/clamp/clds/model/properties/Global.java
@@ -23,12 +23,12 @@
 
 package org.onap.clamp.clds.model.properties;
 
-import java.util.List;
-
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 import com.fasterxml.jackson.databind.JsonNode;
 
+import java.util.List;
+
 /**
  * Parse global json properties.
  * <p>
@@ -38,14 +38,15 @@
  * ,"kings_mountain","Secaucus","lisle","concord","houston","akron"]}]
  */
 public class Global {
-    protected static final EELFLogger       logger      = EELFManager.getInstance().getLogger(Global.class);
-    protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
 
-    private String                  service;
-    private String                  actionSet;
-    private List<String>            resourceVf;
-    private List<String>            resourceVfc;
-    private List<String>            location;
+    protected static final EELFLogger logger = EELFManager.getInstance().getLogger(Global.class);
+    protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
+    private String service;
+    private String actionSet;
+    private List<String> resourceVf;
+    private List<String> resourceVfc;
+    private JsonNode deployParameters;
+    private List<String> location;
 
     /**
      * Parse global given json node.
@@ -58,6 +59,7 @@
         actionSet = AbstractModelElement.getValueByName(globalNode, "actionSet");
         resourceVf = AbstractModelElement.getValuesByName(globalNode, "vf");
         resourceVfc = AbstractModelElement.getValuesByName(globalNode, "vfc");
+        deployParameters = AbstractModelElement.getJsonNodeByName(globalNode, "deployParameters");
         location = AbstractModelElement.getValuesByName(globalNode, "location");
     }
 
@@ -83,6 +85,10 @@
         return actionSet;
     }
 
+    public void setActionSet(String actionSet) {
+        this.actionSet = actionSet;
+    }
+
     /**
      * @return the resourceVf
      */
@@ -128,4 +134,11 @@
         this.location = location;
     }
 
+    public JsonNode getDeployParameters() {
+        return deployParameters;
+    }
+
+    public void setDeployParameters(JsonNode deployParameters) {
+        this.deployParameters = deployParameters;
+    }
 }
diff --git a/src/main/java/org/onap/clamp/clds/service/CldsService.java b/src/main/java/org/onap/clamp/clds/service/CldsService.java
index e828f84..2b6862d 100644
--- a/src/main/java/org/onap/clamp/clds/service/CldsService.java
+++ b/src/main/java/org/onap/clamp/clds/service/CldsService.java
@@ -377,6 +377,20 @@
         return names;
     }
 
+    private void fillInCldsModel(CldsModel model) {
+        if (model.getTemplateName() != null) {
+            CldsTemplate template = cldsDao.getTemplate(model.getTemplateName());
+            if (template != null) {
+                model.setTemplateId(template.getId());
+                model.setDocText(template.getPropText());
+                // This is to provide the Bpmn XML when Template part in UI
+                // is
+                // disabled
+                model.setBpmnText(template.getBpmnText());
+            }
+        }
+    }
+
     /**
      * REST service that saves and processes an action for a CLDS model by name.
      *
@@ -400,7 +414,7 @@
     @Produces(MediaType.APPLICATION_JSON)
     public Response putModelAndProcessAction(@PathParam("action") String action,
             @PathParam("modelName") String modelName, @QueryParam("test") String test, CldsModel model)
-            throws TransformerException, ParseException, GeneralSecurityException, DecoderException {
+            throws TransformerException, ParseException {
         Date startTime = new Date();
         CldsModel retrievedModel = null;
         Boolean errorCase = false;
@@ -412,9 +426,7 @@
             isAuthorized(permisionManage);
             isAuthorizedForVf(model);
             String userId = getUserId();
-            String actionStateCd = CldsEvent.ACTION_STATE_INITIATED;
             logger.info("PUT actionCd={}", actionCd);
-            logger.info("PUT actionStateCd={}", actionStateCd);
             logger.info("PUT modelName={}", modelName);
             logger.info("PUT test={}", test);
             logger.info("PUT bpmnText={}", model.getBpmnText());
@@ -422,17 +434,7 @@
             logger.info("PUT userId={}", userId);
             logger.info("PUT getTypeId={}", model.getTypeId());
             logger.info("PUT deploymentId={}", model.getDeploymentId());
-            if (model.getTemplateName() != null) {
-                CldsTemplate template = cldsDao.getTemplate(model.getTemplateName());
-                if (template != null) {
-                    model.setTemplateId(template.getId());
-                    model.setDocText(template.getPropText());
-                    // This is to provide the Bpmn XML when Template part in UI
-                    // is
-                    // disabled
-                    model.setBpmnText(template.getBpmnText());
-                }
-            }
+            this.fillInCldsModel(model);
             // save model to db
             model.setName(modelName);
             model.save(cldsDao, getUserId());
@@ -568,9 +570,8 @@
         Date startTime = new Date();
         LoggingUtils.setRequestContext("CldsService: GET sdc services", getPrincipalName());
         String retStr;
-        String responseStr = sdcCatalogServices.getSdcServicesInformation(null);
         try {
-            retStr = createUiServiceFormatJson(responseStr);
+            retStr = createUiServiceFormatJson(sdcCatalogServices.getSdcServicesInformation(null));
         } catch (IOException e) {
             logger.error("IOException during SDC communication", e);
             throw new SdcCommunicationException("IOException during SDC communication", e);
@@ -814,12 +815,12 @@
         LoggingUtils.setRequestContext("CldsService: Deploy model", getPrincipalName());
         Boolean errorCase = false;
         try {
-            try {
-                checkForDuplicateServiceVf(modelName, model.getPropText());
-            } catch (IOException | BadRequestException e) {
-                errorCase = true;
-                logger.error("Exception occured during duplicate check for service and VF", e);
-            }
+            fillInCldsModel(model);
+            String bpmnJson = cldsBpmnTransformer.doXslTransformToString(model.getBpmnText());
+            logger.info("PUT bpmnJson={}", bpmnJson);
+            ModelProperties modelProp = new ModelProperties(modelName, model.getControlName(), CldsEvent.ACTION_DEPLOY,
+                    false, bpmnJson, model.getPropText());
+            checkForDuplicateServiceVf(modelName, model.getPropText());
             String deploymentId = "";
             // If model is already deployed then pass same deployment id
             if (model.getDeploymentId() != null && !model.getDeploymentId().isEmpty()) {
@@ -828,7 +829,7 @@
                 deploymentId = "closedLoop_" + UUID.randomUUID() + "_deploymentId";
             }
             String createNewDeploymentStatusUrl = dcaeDispatcherServices.createNewDeployment(deploymentId,
-                    model.getTypeId());
+                    model.getTypeId(), modelProp.getGlobal().getDeployParameters());
             String operationStatus = "processing";
             long waitingTime = System.nanoTime() + TimeUnit.MINUTES.toNanos(10);
             while ("processing".equalsIgnoreCase(operationStatus)) {
@@ -930,7 +931,8 @@
         if (service != null && resourceVf != null && !resourceVf.isEmpty()) {
             List<CldsModelProp> cldsModelPropList = cldsDao.getDeployedModelProperties();
             for (CldsModelProp cldsModelProp : cldsModelPropList) {
-                JsonNode currentNode = JacksonUtils.getObjectMapperInstance().readTree(cldsModelProp.getPropText()).get("global");
+                JsonNode currentNode = JacksonUtils.getObjectMapperInstance().readTree(cldsModelProp.getPropText())
+                        .get("global");
                 String currentService = AbstractModelElement.getValueByName(currentNode, "service");
                 List<String> currentVf = AbstractModelElement.getValuesByName(currentNode, "vf");
                 if (currentVf != null && !currentVf.isEmpty()) {
diff --git a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java
index a7ab94c..25daf01 100644
--- a/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java
+++ b/src/test/java/org/onap/clamp/clds/model/prop/ModelPropertiesTest.java
@@ -28,6 +28,7 @@
 import static org.junit.Assert.assertTrue;
 
 import java.io.IOException;
+import java.util.Arrays;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -84,6 +85,17 @@
                 tca.getTcaItem().getTcaThresholds().get(1).getFieldPath());
         assertEquals("GREATER_OR_EQUAL", tca.getTcaItem().getTcaThresholds().get(1).getOperator());
         assertEquals(Integer.valueOf(123), tca.getTcaItem().getTcaThresholds().get(1).getThreshold());
+        // Test global prop
+        assertEquals("vnfRecipe", prop.getGlobal().getActionSet());
+        assertEquals("4cc5b45a-1f63-4194-8100-cd8e14248c92", prop.getGlobal().getService());
+        assertTrue(Arrays.equals(new String[] {
+                "023a3f0d-1161-45ff-b4cf-8918a8ccf3ad"
+        }, prop.getGlobal().getResourceVf().toArray()));
+        assertTrue(Arrays.equals(new String[] {
+                "SNDGCA64", "ALPRGAED", "LSLEILAA", "MDTWNJC1"
+        }, prop.getGlobal().getLocation().toArray()));
+        assertEquals("value1", prop.getGlobal().getDeployParameters().get("input1").asText());
+        assertEquals("value2", prop.getGlobal().getDeployParameters().get("input2").asText());
     }
 
     @Test
@@ -108,6 +120,17 @@
         assertTrue(holmes.isFound());
         assertEquals("configPolicy1", holmes.getConfigPolicyName());
         assertEquals("blabla", holmes.getCorrelationLogic());
+        // Test global prop
+        assertEquals("vnfRecipe", prop.getGlobal().getActionSet());
+        assertEquals("4cc5b45a-1f63-4194-8100-cd8e14248c92", prop.getGlobal().getService());
+        assertTrue(Arrays.equals(new String[] {
+                "f5213e3a-9191-4362-93b5-b67f8d770e44"
+        }, prop.getGlobal().getResourceVf().toArray()));
+        assertTrue(Arrays.equals(new String[] {
+                "SNDGCA64", "ALPRGAED", "LSLEILAA", "MDTWNJC1"
+        }, prop.getGlobal().getLocation().toArray()));
+        assertEquals("value1", prop.getGlobal().getDeployParameters().get("input1").asText());
+        assertEquals("value2", prop.getGlobal().getDeployParameters().get("input2").asText());
     }
 
     @Test
diff --git a/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json b/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json
index 43fecc9..6ac97ec 100644
--- a/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json
+++ b/src/test/resources/example/model-properties/holmes/modelBpmnProperties.json
@@ -1,109 +1,122 @@
 {
-  "Holmes_0i4n2mm": [
-    {
-      "name": "correlationalLogic",
-      "value": "blabla"
-    },
-    {
-      "name": "configPolicyName",
-      "value": "configPolicy1"
-    }
-  ],
-  "Policy_0honxgv": {
-    "policy1": [
-      {
-        "name": "pname",
-        "value": "policy1"
-      },
-      {
-        "name": "pid",
-        "value": "0"
-      },
-      {
-        "name": "timeout",
-        "value": "345"
-      },
-      {
-        "policyConfigurations": [
-          [
-            {
-              "name": "maxRetries",
-              "value": [
-                "3"
-              ]
-            },
-            {
-              "name": "retryTimeLimit",
-              "value": [
-                "180"
-              ]
-            },
-            {
-              "name": "_id",
-              "value": [
-                "dGLuNqg"
-              ]
-            },
-            {
-              "name": "parentPolicy",
-              "value": [
-                ""
-              ]
-            },
-            {
-              "name": "targetResourceId",
-              "value": [
-                "resourceid"
-              ]
-            }
-          ]
-        ]
-      }
-    ]
-  },
-  "global": [
-    {
-      "name": "actionSet",
-      "value": [
-        "vnfRecipe"
-      ]
-    },
-    {
-      "name": "vf",
-      "value": [
-        "f5213e3a-9191-4362-93b5-b67f8d770e44"
-      ]
-    },
-    {
-      "name": "location",
-      "value": [
-        "SNDGCA64",
-        "ALPRGAED",
-        "LSLEILAA",
-        "MDTWNJC1"
-      ]
-    }
-  ],
-  "shared": {
-    "byService": {
-      "": {
-        "vf": {
-          "": ""
-        },
-        "location": {
-          "": ""
-        },
-        "alarmCondition": {
-          "": ""
-        }
-      }
-    },
-    "byVf": {
-      "": {
-        "vfc": {
-          "": ""
-        }
-      }
-    }
-  }
+	"Holmes_0i4n2mm": [
+		{
+			"name": "correlationalLogic",
+			"value": "blabla"
+		},
+		{
+			"name": "configPolicyName",
+			"value": "configPolicy1"
+		}
+	],
+	"Policy_0honxgv": {
+		"policy1": [
+			{
+				"name": "pname",
+				"value": "policy1"
+			},
+			{
+				"name": "pid",
+				"value": "0"
+			},
+			{
+				"name": "timeout",
+				"value": "345"
+			},
+			{
+				"policyConfigurations": [
+					[
+						{
+							"name": "maxRetries",
+							"value": [
+								"3"
+							]
+						},
+						{
+							"name": "retryTimeLimit",
+							"value": [
+								"180"
+							]
+						},
+						{
+							"name": "_id",
+							"value": [
+								"dGLuNqg"
+							]
+						},
+						{
+							"name": "parentPolicy",
+							"value": [
+								""
+							]
+						},
+						{
+							"name": "targetResourceId",
+							"value": [
+								"resourceid"
+							]
+						}
+					]
+				]
+			}
+		]
+	},
+	"global": [
+		{
+			"name": "actionSet",
+			"value": [
+				"vnfRecipe"
+			]
+		},
+		{
+			"name": "service",
+			"value": [
+				"4cc5b45a-1f63-4194-8100-cd8e14248c92"
+			]
+		},
+		{
+			"name": "vf",
+			"value": [
+				"f5213e3a-9191-4362-93b5-b67f8d770e44"
+			]
+		},
+		{
+			"name": "location",
+			"value": [
+				"SNDGCA64",
+				"ALPRGAED",
+				"LSLEILAA",
+				"MDTWNJC1"
+			]
+		},
+		{
+			"name": "deployParameters",
+			"value": {
+				"input1": "value1",
+				"input2": "value2"
+			}
+		}
+	],
+	"shared": {
+		"byService": {
+			"": {
+				"vf": {
+					"": ""
+				},
+				"location": {
+					"": ""
+				},
+				"alarmCondition": {
+					"": ""
+				}
+			}
+		},
+		"byVf": {
+			"": {
+				"vfc": {
+					"": ""
+				}
+			}
+		}
+	}
 }
diff --git a/src/test/resources/example/model-properties/tca/modelBpmnProperties.json b/src/test/resources/example/model-properties/tca/modelBpmnProperties.json
index 8e2780c..ce0f317 100644
--- a/src/test/resources/example/model-properties/tca/modelBpmnProperties.json
+++ b/src/test/resources/example/model-properties/tca/modelBpmnProperties.json
@@ -1,145 +1,152 @@
 {
-  "TCA_1jy9to4": {
-    "group1": [
-      {
-        "name": "tname",
-        "value": "group1"
-      },
-      {
-        "name": "tuuid",
-        "value": "f734f031-10aa-t8fb-330f-04dde2886325"
-      },
-      {
-        "name": "tcaPolId",
-        "value": "policy1"
-      },
-      {
-        "name": "eventName",
-        "value": "vFirewallBroadcastPackets"
-      },
-      {
-        "name": "controlLoopSchemaType",
-        "value": "VNF"
-      },
-      {
-        "serviceConfigurations": [
-          [
-            "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",
-            "LESS_OR_EQUAL",
-            "123",
-            "ABATED"
-          ],
-          [
-            "$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta",
-            "GREATER_OR_EQUAL",
-            "123",
-            "ONSET"
-          ]
-        ]
-      }
-    ]
-  },
-  "Policy_0honxgv": {
-    "policy1": [
-      {
-        "name": "pname",
-        "value": "policy1"
-      },
-      {
-        "name": "pid",
-        "value": "0"
-      },
-      {
-        "name": "timeout",
-        "value": "345"
-      },
-      {
-        "policyConfigurations": [
-          [
-            {
-              "name": "maxRetries",
-              "value": [
-                "3"
-              ]
-            },
-            {
-              "name": "retryTimeLimit",
-              "value": [
-                "180"
-              ]
-            },
-            {
-              "name": "_id",
-              "value": [
-                "dGLuNqg"
-              ]
-            },
-            {
-              "name": "parentPolicy",
-              "value": [
-                ""
-              ]
-            },
-            {
-              "name": "targetResourceId",
-              "value": [
-                "resourceid"
-              ]
-            }
-          ]
-        ]
-      }
-    ]
-  },
-  "global": [
-    {
-      "name": "actionSet",
-      "value": [
-        "vnfRecipe"
-      ]
-    },
-    {
-      "name": "service",
-      "value": [
-        "4cc5b45a-1f63-4194-8100-cd8e14248c92"
-      ]
-    },
-    {
-      "name": "vf",
-      "value": [
-        "023a3f0d-1161-45ff-b4cf-8918a8ccf3ad"
-      ]
-    },
-    {
-      "name": "location",
-      "value": [
-        "SNDGCA64",
-        "ALPRGAED",
-        "LSLEILAA",
-        "MDTWNJC1"
-      ]
-    }
-  ],
-  "shared": {
-    "byService": {
-      "": {
-        "vf": {
-          "": ""
-        },
-        "location": {
-          "": ""
-        },
-        "alarmCondition": {
-          "": ""
-        }
-      }
-    },
-    "byVf": {
-      "": {
-        "vfc": {
-          "": ""
-        }
-      }
-    }
-  }
+	"TCA_1jy9to4": {
+		"group1": [
+			{
+				"name": "tname",
+				"value": "group1"
+			},
+			{
+				"name": "tuuid",
+				"value": "f734f031-10aa-t8fb-330f-04dde2886325"
+			},
+			{
+				"name": "tcaPolId",
+				"value": "policy1"
+			},
+			{
+				"name": "eventName",
+				"value": "vFirewallBroadcastPackets"
+			},
+			{
+				"name": "controlLoopSchemaType",
+				"value": "VNF"
+			},
+			{
+				"serviceConfigurations": [
+					[
+						"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedBroadcastPacketsAccumulated",
+						"LESS_OR_EQUAL",
+						"123",
+						"ABATED"
+					],
+					[
+						"$.event.measurementsForVfScalingFields.vNicPerformanceArray[*].receivedDiscardedPacketsDelta",
+						"GREATER_OR_EQUAL",
+						"123",
+						"ONSET"
+					]
+				]
+			}
+		]
+	},
+	"Policy_0honxgv": {
+		"policy1": [
+			{
+				"name": "pname",
+				"value": "policy1"
+			},
+			{
+				"name": "pid",
+				"value": "0"
+			},
+			{
+				"name": "timeout",
+				"value": "345"
+			},
+			{
+				"policyConfigurations": [
+					[
+						{
+							"name": "maxRetries",
+							"value": [
+								"3"
+							]
+						},
+						{
+							"name": "retryTimeLimit",
+							"value": [
+								"180"
+							]
+						},
+						{
+							"name": "_id",
+							"value": [
+								"dGLuNqg"
+							]
+						},
+						{
+							"name": "parentPolicy",
+							"value": [
+								""
+							]
+						},
+						{
+							"name": "targetResourceId",
+							"value": [
+								"resourceid"
+							]
+						}
+					]
+				]
+			}
+		]
+	},
+	"global": [
+		{
+			"name": "actionSet",
+			"value": [
+				"vnfRecipe"
+			]
+		},
+		{
+			"name": "service",
+			"value": [
+				"4cc5b45a-1f63-4194-8100-cd8e14248c92"
+			]
+		},
+		{
+			"name": "vf",
+			"value": [
+				"023a3f0d-1161-45ff-b4cf-8918a8ccf3ad"
+			]
+		},
+		{
+			"name": "location",
+			"value": [
+				"SNDGCA64",
+				"ALPRGAED",
+				"LSLEILAA",
+				"MDTWNJC1"
+			]
+		},
+		{
+			"name": "deployParameters",
+			"value": {
+				"input1": "value1",
+				"input2": "value2"
+			}
+		}
+	],
+	"shared": {
+		"byService": {
+			"": {
+				"vf": {
+					"": ""
+				},
+				"location": {
+					"": ""
+				},
+				"alarmCondition": {
+					"": ""
+				}
+			}
+		},
+		"byVf": {
+			"": {
+				"vfc": {
+					"": ""
+				}
+			}
+		}
+	}
 }
