Merge "Add correlationId to ServiceInstancesRequest"
diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/camundabeans/CamundaVIDRequest.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/camundabeans/CamundaVIDRequest.java
index faa6691..9f30e67 100644
--- a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/camundabeans/CamundaVIDRequest.java
+++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/camundabeans/CamundaVIDRequest.java
@@ -34,7 +34,7 @@
 	CommonConstants.REQUEST_ID_HEADER,
 	CommonConstants.IS_BASE_VF_MODULE_VARIABLE, CommonConstants.RECIPE_TIMEOUT_VARIABLE,
 	CommonConstants.REQUEST_ACTION_VARIABLE, CommonConstants.SERVICE_INSTANCE_ID_VARIABLE,
-	CommonConstants.VNF_ID_VARIABLE, CommonConstants.VF_MODULE_ID_VARIABLE,
+	CommonConstants.CORRELATION_ID, CommonConstants.VNF_ID_VARIABLE, CommonConstants.VF_MODULE_ID_VARIABLE,
 	CommonConstants.VOLUME_GROUP_ID_VARIABLE, CommonConstants.NETWORK_ID_VARIABLE,
 	CommonConstants.CONFIGURATION_ID_VARIABLE, CommonConstants.SERVICE_TYPE_VARIABLE, 
 	CommonConstants.VNF_TYPE_VARIABLE, CommonConstants.VF_MODULE_TYPE_VARIABLE, 
@@ -55,7 +55,6 @@
 	@JsonProperty(CommonConstants.REQUEST_ID_HEADER)
 	private CamundaInput msoRequestId;
 
-
 	@JsonProperty(CommonConstants.IS_BASE_VF_MODULE_VARIABLE)
 	private CamundaBooleanInput isBaseVfModule;
 
@@ -68,6 +67,9 @@
 	@JsonProperty(CommonConstants.SERVICE_INSTANCE_ID_VARIABLE)
 	private CamundaInput serviceInstanceId;
 
+	@JsonProperty(CommonConstants.CORRELATION_ID)
+	private CamundaInput correlationId;
+
 	@JsonProperty(CommonConstants.VNF_ID_VARIABLE)
 	private CamundaInput vnfId;
 
@@ -177,6 +179,16 @@
 		this.serviceInstanceId = serviceInstanceId;
 	}
 
+	@JsonProperty(CommonConstants.CORRELATION_ID)
+	public CamundaInput getCorrelationId() {
+		return correlationId;
+	}
+
+	@JsonProperty(CommonConstants.CORRELATION_ID)
+	public void setCorrelationId(CamundaInput correlationId) {
+		this.correlationId = correlationId;
+	}
+
 	@JsonProperty(CommonConstants.VNF_ID_VARIABLE)
 	public CamundaInput getVnfId() {
 		return vnfId;
diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/BPELRestClient.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/BPELRestClient.java
index 1a086ac..85fe52f 100644
--- a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/BPELRestClient.java
+++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/BPELRestClient.java
@@ -85,14 +85,10 @@
     }
 
     @Override
-    public HttpResponse post(String requestId, boolean isBaseVfModule,
-                             int recipeTimeout, String requestAction, String serviceInstanceId,
-                             String vnfId, String vfModuleId, String volumeGroupId, String networkId, String configurationId,
-                             String serviceType, String vnfType, String vfModuleType, String networkType,
-                             String requestDetails, String recipeParamXsd) {
+    public HttpResponse post(RequestClientParamater params) {
         return null;
     }
-    
+
     @Override
     public HttpResponse get() {
         return null;
diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CamundaClient.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CamundaClient.java
index 9cc8953..d03aaef 100644
--- a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CamundaClient.java
+++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CamundaClient.java
@@ -20,13 +20,12 @@
 
 package org.openecomp.mso.apihandler.common;
 
-
 import java.io.IOException;
 
 import javax.xml.bind.DatatypeConverter;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.http.HttpResponse;
-import org.apache.http.client.ClientProtocolException;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.entity.StringEntity;
 import org.openecomp.mso.apihandler.camundabeans.CamundaBooleanInput;
@@ -51,8 +50,7 @@
 
 	@Override
 	public HttpResponse post(String camundaReqXML, String requestId,
-			String requestTimeout, String schemaVersion, String serviceInstanceId, String action)
-					throws ClientProtocolException, IOException{
+			String requestTimeout, String schemaVersion, String serviceInstanceId, String action) throws IOException {
 		HttpPost post = new HttpPost(url);
 		msoLogger.debug(CAMUNDA_URL_MESAGE + url);
 		String jsonReq = wrapRequest(camundaReqXML, requestId, serviceInstanceId, requestTimeout,  schemaVersion);
@@ -77,7 +75,7 @@
 	}
 
 	@Override
-	public HttpResponse post(String jsonReq) throws ClientProtocolException, IOException{
+	public HttpResponse post(String jsonReq) throws IOException {
 		HttpPost post = new HttpPost(url);
 		msoLogger.debug(CAMUNDA_URL_MESAGE + url);
 
@@ -102,21 +100,13 @@
 	}
 
 	@Override
-	public HttpResponse post(String requestId, boolean isBaseVfModule,
-			int recipeTimeout, String requestAction, String serviceInstanceId,
-			String vnfId, String vfModuleId, String volumeGroupId, String networkId, String configurationId,
-			String serviceType, String vnfType, String vfModuleType, String networkType,
-			String requestDetails, String recipeParamXsd)
-					throws ClientProtocolException, IOException{
+	public HttpResponse post(RequestClientParamater params) throws IOException {
 		HttpPost post = new HttpPost(url);
 		msoLogger.debug(CAMUNDA_URL_MESAGE + url);
-		String jsonReq = wrapVIDRequest(requestId, isBaseVfModule, recipeTimeout, requestAction,
-				serviceInstanceId, vnfId, vfModuleId, volumeGroupId, networkId, configurationId,
-				serviceType, vnfType, vfModuleType, networkType, requestDetails, recipeParamXsd);
+		String jsonReq = wrapVIDRequest(params);
 
 		StringEntity input = new StringEntity(jsonReq);
 		input.setContentType(CommonConstants.CONTENT_TYPE_JSON);
-
 		String encryptedCredentials;
 		if(props!=null){
 			encryptedCredentials = props.getProperty(CommonConstants.CAMUNDA_AUTH,null);
@@ -128,12 +118,10 @@
 				}
 			}
 		}
-
 		post.setEntity(input);
-
         return client.execute(post);
 	}
-	
+
 	@Override
     public HttpResponse get() {
         return null;
@@ -150,8 +138,6 @@
 		if(schemaVersion == null){
 			schemaVersion = "";
 		}
-
-
 		try{
 			CamundaRequest camundaRequest = new CamundaRequest();
 			CamundaInput camundaInput = new CamundaInput();
@@ -183,52 +169,8 @@
 		return jsonReq;
 	}
 
-	private String wrapVIDRequest(String requestId, boolean isBaseVfModule,
-			int recipeTimeout, String requestAction, String serviceInstanceId,
-			String vnfId, String vfModuleId, String volumeGroupId, String networkId, String configurationId,
-			String serviceType, String vnfType, String vfModuleType, String networkType,
-			String requestDetails, String recipeParams){
+	private String wrapVIDRequest(RequestClientParamater requestClientParamater) {
 		String jsonReq = null;
-		if(requestId == null){
-			requestId ="";
-		}
-		if(requestAction == null){
-			requestAction ="";
-		}
-		if(serviceInstanceId == null){
-			serviceInstanceId ="";
-		}
-		if(vnfId == null){
-			vnfId ="";
-		}
-		if(vfModuleId == null){
-			vfModuleId ="";
-		}
-		if(volumeGroupId == null){
-			volumeGroupId ="";
-		}
-		if(networkId == null){
-			networkId ="";
-		}
-		if(configurationId == null){
-			configurationId ="";
-		}
-		if(serviceType == null){
-			serviceType ="";
-		}
-		if(vnfType == null){
-			vnfType ="";
-		}
-		if(vfModuleType == null){
-			vfModuleType ="";
-		}
-		if(networkType == null){
-			networkType ="";
-		}
-		if(requestDetails == null){
-			requestDetails ="";
-		}
-
 		try{
 			CamundaVIDRequest camundaRequest = new CamundaVIDRequest();
 			CamundaInput serviceInput = new CamundaInput();
@@ -238,6 +180,7 @@
 			CamundaIntegerInput recipeTimeoutInput = new CamundaIntegerInput();
 			CamundaInput requestActionInput = new CamundaInput();
 			CamundaInput serviceInstanceIdInput = new CamundaInput();
+			CamundaInput correlationIdInput = new CamundaInput();
 			CamundaInput vnfIdInput = new CamundaInput();
 			CamundaInput vfModuleIdInput = new CamundaInput();
 			CamundaInput volumeGroupIdInput = new CamundaInput();
@@ -248,23 +191,23 @@
 			CamundaInput vfModuleTypeInput = new CamundaInput();
 			CamundaInput networkTypeInput = new CamundaInput();
 			CamundaInput recipeParamsInput = new CamundaInput();
-			host.setValue(parseURL());
-			requestIdInput.setValue(requestId);
-			isBaseVfModuleInput.setValue(isBaseVfModule);
-			recipeTimeoutInput.setValue(recipeTimeout);
-			requestActionInput.setValue(requestAction);
-			serviceInstanceIdInput.setValue(serviceInstanceId);
-			vnfIdInput.setValue(vnfId);
-			vfModuleIdInput.setValue(vfModuleId);
-			volumeGroupIdInput.setValue(volumeGroupId);
-			networkIdInput.setValue(networkId);
-			configurationIdInput.setValue(configurationId);
-			serviceTypeInput.setValue(serviceType);
-			vnfTypeInput.setValue(vnfType);
-			vfModuleTypeInput.setValue(vfModuleType);
-			networkTypeInput.setValue(networkType);
-			recipeParamsInput.setValue(recipeParams);
-			serviceInput.setValue(requestDetails);
+			requestIdInput.setValue(StringUtils.defaultString(requestClientParamater.getRequestId()));
+			isBaseVfModuleInput.setValue(requestClientParamater.isBaseVfModule());
+			recipeTimeoutInput.setValue(requestClientParamater.getRecipeTimeout());
+			requestActionInput.setValue(StringUtils.defaultString(requestClientParamater.getRequestAction()));
+			serviceInstanceIdInput.setValue(StringUtils.defaultString(requestClientParamater.getServiceInstanceId()));
+			correlationIdInput.setValue(StringUtils.defaultString(requestClientParamater.getCorrelationId()));
+			vnfIdInput.setValue(StringUtils.defaultString(requestClientParamater.getVnfId()));
+			vfModuleIdInput.setValue(StringUtils.defaultString(requestClientParamater.getVfModuleId()));
+			volumeGroupIdInput.setValue(StringUtils.defaultString(requestClientParamater.getVolumeGroupId()));
+			networkIdInput.setValue(StringUtils.defaultString(requestClientParamater.getNetworkId()));
+			configurationIdInput.setValue(StringUtils.defaultString(requestClientParamater.getConfigurationId()));
+			serviceTypeInput.setValue(StringUtils.defaultString(requestClientParamater.getServiceType()));
+			vnfTypeInput.setValue(StringUtils.defaultString(requestClientParamater.getVnfType()));
+			vfModuleTypeInput.setValue(StringUtils.defaultString(requestClientParamater.getVfModuleType()));
+			networkTypeInput.setValue(StringUtils.defaultString(requestClientParamater.getNetworkType()));
+			recipeParamsInput.setValue(requestClientParamater.getRecipeParamXsd());
+			serviceInput.setValue(StringUtils.defaultString(requestClientParamater.getRequestDetails()));
 			camundaRequest.setServiceInput(serviceInput);
 			camundaRequest.setHost(host);
 			camundaRequest.setRequestId(requestIdInput);
@@ -273,6 +216,7 @@
 			camundaRequest.setRecipeTimeout(recipeTimeoutInput);
 			camundaRequest.setRequestAction(requestActionInput);
 			camundaRequest.setServiceInstanceId(serviceInstanceIdInput);
+			camundaRequest.setCorrelationId(correlationIdInput);
 			camundaRequest.setVnfId(vnfIdInput);
 			camundaRequest.setVfModuleId(vfModuleIdInput);
 			camundaRequest.setVolumeGroupId(volumeGroupIdInput);
@@ -306,5 +250,4 @@
 		return host;
 	}
 
-
 }
diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CamundaTaskClient.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CamundaTaskClient.java
index 3941e1e..845b140 100644
--- a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CamundaTaskClient.java
+++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CamundaTaskClient.java
@@ -25,7 +25,6 @@
 import javax.xml.bind.DatatypeConverter;

 

 import org.apache.http.HttpResponse;

-import org.apache.http.client.ClientProtocolException;

 import org.apache.http.client.methods.HttpGet;

 import org.apache.http.client.methods.HttpPost;

 import org.apache.http.entity.StringEntity;

@@ -39,8 +38,7 @@
 	}

 	

 	@Override

-	public HttpResponse post(String jsonReq)

-					throws ClientProtocolException, IOException{

+	public HttpResponse post(String jsonReq) throws IOException{

 		HttpPost post = new HttpPost(url);

 		msoLogger.debug("Camunda Task url is: "+ url);		

 

@@ -65,25 +63,18 @@
 	

 	@Override

 	public HttpResponse post(String camundaReqXML, String requestId,

-			String requestTimeout, String schemaVersion, String serviceInstanceId, String action)

-					throws ClientProtocolException, IOException{

+			String requestTimeout, String schemaVersion, String serviceInstanceId, String action) {

 		msoLogger.debug("Method not supported");

 		return null;

 	}

-	

+

 	@Override

-	public HttpResponse post(String requestId, boolean isBaseVfModule,

-			int recipeTimeout, String requestAction, String serviceInstanceId,

-			String vnfId, String vfModuleId, String volumeGroupId, String networkId, String configurationId,

-			String serviceType, String vnfType, String vfModuleType, String networkType,

-			String requestDetails, String recipeParamXsd)

-					throws ClientProtocolException, IOException{

-		msoLogger.debug("Method not supported");

+	public HttpResponse post(RequestClientParamater params) {

 		return null;

 	}

-	

+

 	@Override

-	public HttpResponse get() throws ClientProtocolException, IOException{

+	public HttpResponse get() throws IOException{

 		HttpGet get = new HttpGet(url);

 		msoLogger.debug("Camunda Task url is: "+ url);	

 		String encryptedCredentials;

@@ -97,7 +88,6 @@
 				}

 			}

 		}

-		

 		return client.execute(get);

 	}

 

diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CommonConstants.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CommonConstants.java
index 4dac998..daa411a 100644
--- a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CommonConstants.java
+++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/CommonConstants.java
@@ -25,13 +25,11 @@
 
     public static final String DEFAULT_BPEL_AUTH = "admin:admin";
     public static final String ENCRYPTION_KEY = "aa3871669d893c7fb8abbcda31b88b4f";
-
     public static final String REQUEST_ID_HEADER = "mso-request-id";
     public static final String REQUEST_TIMEOUT_HEADER = "mso-service-request-timeout";
     public static final String SCHEMA_VERSION_HEADER = "mso-schema-version";
     public static final String SERVICE_INSTANCE_ID_HEADER = "mso-service-instance-id";
     public static final String ACTION_HEADER = "mso-action";
-
     public static final String CAMUNDA_SERVICE_INPUT = "bpmnRequest";
 	public static final String CAMUNDA_ROOT_INPUT = "variables";
 	public static final String CONTENT_TYPE_JSON= "application/json";
@@ -47,13 +45,12 @@
 	public static final int CAMUNDA = 1;
 	public static final int CAMUNDATASK = 2;
 	public static final String CAMUNDA_HOST = "host";
-	public static final String SDNC_UUID_HEADER = "mso-sdnc-request-id";
-	
 	public static final String REQUEST_ID_VARIABLE = "requestId";
 	public static final String IS_BASE_VF_MODULE_VARIABLE = "isBaseVfModule";
 	public static final String RECIPE_TIMEOUT_VARIABLE = "recipeTimeout";
 	public static final String REQUEST_ACTION_VARIABLE = "requestAction";
 	public static final String SERVICE_INSTANCE_ID_VARIABLE = "serviceInstanceId";
+	public static final String CORRELATION_ID = "correlationId";
 	public static final String VNF_ID_VARIABLE = "vnfId";
 	public static final String VF_MODULE_ID_VARIABLE = "vfModuleId";
 	public static final String VOLUME_GROUP_ID_VARIABLE = "volumeGroupId";
diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/RequestClient.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/RequestClient.java
index d702a63..ed5d076 100644
--- a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/RequestClient.java
+++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/RequestClient.java
@@ -67,17 +67,11 @@
 
 	public abstract HttpResponse post(String request, String requestId, String requestTimeout, String schemaVersion, String serviceInstanceId, String action) throws ClientProtocolException, IOException;
 
-	public abstract HttpResponse post(String request) throws ClientProtocolException, IOException;
+	public abstract HttpResponse post(String request) throws IOException;
+
+	public abstract HttpResponse post(RequestClientParamater params) throws IOException;
 	
-	public abstract HttpResponse post(String requestId, boolean isBaseVfModule,
-			int recipeTimeout, String requestAction, String serviceInstanceId,
-			String vnfId, String vfModuleId, String volumeGroupId, String networkId, String configurationId,
-			String serviceType, String vnfType, String vfModuleType, String networkType,
-			String requestDetails, String recipeParamXsd)
-					throws ClientProtocolException, IOException;
-	
-	public abstract HttpResponse get() 
-					throws ClientProtocolException, IOException;
+	public abstract HttpResponse get() throws  IOException;
 	
 	protected String getEncryptedPropValue (String prop, String defaultValue, String encryptionKey) {
 		 try {
diff --git a/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/RequestClientParamater.java b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/RequestClientParamater.java
new file mode 100644
index 0000000..4db6919
--- /dev/null
+++ b/mso-api-handlers/mso-api-handler-common/src/main/java/org/openecomp/mso/apihandler/common/RequestClientParamater.java
@@ -0,0 +1,242 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.mso.apihandler.common;
+
+public class RequestClientParamater {
+
+    private String requestId;
+    private boolean isBaseVfModule;
+    private int recipeTimeout;
+    private String requestAction;
+    private String serviceInstanceId;
+    private String correlationId;
+    private String vnfId;
+    private String vfModuleId;
+    private String volumeGroupId;
+    private String networkId;
+    private String configurationId;
+    private String serviceType;
+    private String vnfType;
+    private String vfModuleType;
+    private String networkType;
+    private String requestDetails;
+    private String recipeParamXsd;
+
+    private RequestClientParamater(Builder builder) {
+        requestId = builder.requestId;
+        isBaseVfModule = builder.isBaseVfModule;
+        recipeTimeout = builder.recipeTimeout;
+        requestAction = builder.requestAction;
+        serviceInstanceId = builder.serviceInstanceId;
+        correlationId = builder.correlationId;
+        vnfId = builder.vnfId;
+        vfModuleId = builder.vfModuleId;
+        volumeGroupId = builder.volumeGroupId;
+        networkId = builder.networkId;
+        configurationId = builder.configurationId;
+        serviceType = builder.serviceType;
+        vnfType = builder.vnfType;
+        vfModuleType = builder.vfModuleType;
+        networkType = builder.networkType;
+        requestDetails = builder.requestDetails;
+        recipeParamXsd = builder.recipeParamXsd;
+    }
+
+    public String getRequestId() {
+        return requestId;
+    }
+
+    public boolean isBaseVfModule() {
+        return isBaseVfModule;
+    }
+
+    public int getRecipeTimeout() {
+        return recipeTimeout;
+    }
+
+    public String getRequestAction() {
+        return requestAction;
+    }
+
+    public String getServiceInstanceId() {
+        return serviceInstanceId;
+    }
+
+    public String getCorrelationId() {
+        return correlationId;
+    }
+
+    public String getVnfId() {
+        return vnfId;
+    }
+
+    public String getVfModuleId() {
+        return vfModuleId;
+    }
+
+    public String getVolumeGroupId() {
+        return volumeGroupId;
+    }
+
+    public String getNetworkId() {
+        return networkId;
+    }
+
+    public String getConfigurationId() {
+        return configurationId;
+    }
+
+    public String getServiceType() {
+        return serviceType;
+    }
+
+    public String getVnfType() {
+        return vnfType;
+    }
+
+    public String getVfModuleType() {
+        return vfModuleType;
+    }
+
+    public String getNetworkType() {
+        return networkType;
+    }
+
+    public String getRequestDetails() {
+        return requestDetails;
+    }
+
+    public String getRecipeParamXsd() {
+        return recipeParamXsd;
+    }
+
+    public static class Builder {
+        private String requestId;
+        private boolean isBaseVfModule;
+        private int recipeTimeout;
+        private String requestAction;
+        private String serviceInstanceId;
+        private String correlationId;
+        private String vnfId;
+        private String vfModuleId;
+        private String volumeGroupId;
+        private String networkId;
+        private String configurationId;
+        private String serviceType;
+        private String vnfType;
+        private String vfModuleType;
+        private String networkType;
+        private String requestDetails;
+        private String recipeParamXsd;
+
+        public Builder setRequestId(String requestId) {
+            this.requestId = requestId;
+            return this;
+        }
+
+        public Builder setBaseVfModule(boolean baseVfModule) {
+            isBaseVfModule = baseVfModule;
+            return this;
+        }
+
+        public Builder setRecipeTimeout(int recipeTimeout) {
+            this.recipeTimeout = recipeTimeout;
+            return this;
+        }
+
+        public Builder setRequestAction(String requestAction) {
+            this.requestAction = requestAction;
+            return this;
+        }
+
+        public Builder setServiceInstanceId(String serviceInstanceId) {
+            this.serviceInstanceId = serviceInstanceId;
+            return this;
+        }
+
+        public Builder setCorrelationId(String correlationId) {
+            this.correlationId = correlationId;
+            return this;
+        }
+
+        public Builder setVnfId(String vnfId) {
+            this.vnfId = vnfId;
+            return this;
+        }
+
+        public Builder setVfModuleId(String vfModuleId) {
+            this.vfModuleId = vfModuleId;
+            return this;
+        }
+
+        public Builder setVolumeGroupId(String volumeGroupId) {
+            this.volumeGroupId = volumeGroupId;
+            return this;
+        }
+
+        public Builder setNetworkId(String networkId) {
+            this.networkId = networkId;
+            return this;
+        }
+
+        public Builder setConfigurationId(String configurationId) {
+            this.configurationId = configurationId;
+            return this;
+        }
+
+        public Builder setServiceType(String serviceType) {
+            this.serviceType = serviceType;
+            return this;
+        }
+
+        public Builder setVnfType(String vnfType) {
+            this.vnfType = vnfType;
+            return this;
+        }
+
+        public Builder setVfModuleType(String vfModuleType) {
+            this.vfModuleType = vfModuleType;
+            return this;
+        }
+
+        public Builder setNetworkType(String networkType) {
+            this.networkType = networkType;
+            return this;
+        }
+
+        public Builder setRequestDetails(String requestDetails) {
+            this.requestDetails = requestDetails;
+            return this;
+        }
+
+        public Builder setRecipeParamXsd(String recipeParamXsd) {
+            this.recipeParamXsd = recipeParamXsd;
+            return this;
+        }
+
+        public RequestClientParamater build(){
+            return new RequestClientParamater(this);
+        }
+    }
+
+
+}
diff --git a/mso-api-handlers/mso-api-handler-common/src/test/java/org/openecomp/mso/camunda/tests/CamundaClientTest.java b/mso-api-handlers/mso-api-handler-common/src/test/java/org/openecomp/mso/camunda/tests/CamundaClientTest.java
index 8bfc4ce..69927e2 100644
--- a/mso-api-handlers/mso-api-handler-common/src/test/java/org/openecomp/mso/camunda/tests/CamundaClientTest.java
+++ b/mso-api-handlers/mso-api-handler-common/src/test/java/org/openecomp/mso/camunda/tests/CamundaClientTest.java
@@ -24,7 +24,6 @@
 import static org.junit.Assert.assertEquals;
 
 import java.io.IOException;
-import java.util.UUID;
 
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
@@ -42,12 +41,9 @@
 import org.openecomp.mso.apihandler.common.CommonConstants;
 import org.openecomp.mso.apihandler.common.RequestClient;
 import org.openecomp.mso.apihandler.common.RequestClientFactory;
+import org.openecomp.mso.apihandler.common.RequestClientParamater;
 import org.openecomp.mso.properties.MsoJavaProperties;
 
-import com.fasterxml.jackson.core.JsonGenerationException;
-import com.fasterxml.jackson.databind.JsonMappingException;
-
-
 /**
  * This class implements test methods of Camunda Beans.
  *
@@ -66,8 +62,7 @@
     }
 
     @Test
-    public void tesCamundaPost() throws JsonGenerationException,
-    JsonMappingException, IOException {
+    public void tesCamundaPost() throws IOException {
         String responseBody ="{\"links\":[{\"method\":\"GET\",\"href\":\"http://localhost:9080/engine-rest/process-instance/2047c658-37ae-11e5-9505-7a1020524153\",\"rel\":\"self\"}],\"id\":\"2047c658-37ae-11e5-9505-7a1020524153\",\"definitionId\":\"dummy:10:73298961-37ad-11e5-9505-7a1020524153\",\"businessKey\":null,\"caseInstanceId\":null,\"ended\":true,\"suspended\":false}";
 
         HttpResponse mockResponse = createResponse(200, responseBody);
@@ -106,8 +101,6 @@
         mockHttpClient = Mockito.mock(HttpClient.class);
         Mockito.when(mockHttpClient.execute(Mockito.any(HttpPost.class)))
                 .thenReturn(mockResponse);
-
-        String reqXML = "<xml>test</xml>";
         String orchestrationURI = "/engine-rest/process-definition/key/dummy/start";
 
         MsoJavaProperties props = new MsoJavaProperties();
@@ -115,9 +108,7 @@
 
         RequestClient requestClient = RequestClientFactory.getRequestClient(orchestrationURI, props);
         requestClient.setClient(mockHttpClient);
-        HttpResponse response = requestClient.post("mso-req-id", false, 180,
-                "createInstance", "svc-inst-id", "vnf-id", "vf-module-id", "vg-id", "nw-id", "conf-id", "svc-type",
-                "vnf-type", "vf-module-type", "nw-type", "", "");
+        HttpResponse response = requestClient.post(createParams());
         assertEquals(requestClient.getType(), CommonConstants.CAMUNDA);
         assertEquals(response.getStatusLine().getStatusCode(), HttpStatus.SC_OK);
     }
@@ -137,6 +128,15 @@
         return response;
     }
 
+    private RequestClientParamater createParams(){
+        return new RequestClientParamater.Builder().setRequestId("mso-req-id").setBaseVfModule(false).
+                setRecipeTimeout(180).setRequestAction("createInstance").setServiceInstanceId("svc-inst-id").
+                setVnfId("vnf-id").setVfModuleId("vf-module-id").setVolumeGroupId("vg-id").setNetworkId("nw-id").
+                setConfigurationId("conf-id").setServiceType("svc-type").setVnfType("vnf-type").
+                setVfModuleType("vf-module-type").setNetworkType("nw-type").setRequestDetails("").
+                setRecipeParamXsd("").build();
+    }
+
 
 
 
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstances.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstances.java
index 23adafd..dca2069 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstances.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstances.java
@@ -43,6 +43,7 @@
 import org.openecomp.mso.apihandler.common.ErrorNumbers;
 import org.openecomp.mso.apihandler.common.RequestClient;
 import org.openecomp.mso.apihandler.common.RequestClientFactory;
+import org.openecomp.mso.apihandler.common.RequestClientParamater;
 import org.openecomp.mso.apihandler.common.ResponseHandler;
 import org.openecomp.mso.apihandlerinfra.e2eserviceinstancebeans.CompareModelsRequest;
 import org.openecomp.mso.apihandlerinfra.e2eserviceinstancebeans.E2EServiceInstanceDeleteRequest;
@@ -82,8 +83,6 @@
 	private ServiceInstancesRequest sir = null;
 
 	public static final String END_OF_THE_TRANSACTION = "End of the transaction, the final response is: ";
-	public static final String EXCEPTION_CREATING_DB_RECORD = "Exception while creating record in DB";
-	public static final String EXCEPTION_COMMUNICATE_BPMN_ENGINE = "Exception while communicate with BPMN engine";
 
 	/**
 	 * POST Requests for E2E Service create Instance on a version provided
@@ -228,7 +227,6 @@
 		
 		// Define RecipeLookupResult info here instead of query DB for efficiency
 		String workflowUrl = "/mso/async/services/CompareModelofE2EServiceInstance";
-		int recipeTimeout = 180;
 
 		RequestClient requestClient = null;
 		HttpResponse response = null;
@@ -239,14 +237,15 @@
 			requestClient = RequestClientFactory.getRequestClient(workflowUrl, MsoPropertiesUtils.loadMsoProperties());
 
 			JSONObject jjo = new JSONObject(requestJSON);
-			String bpmnRequest = jjo.toString();
 
 			// Capture audit event
 			msoLogger.debug("MSO API Handler Posting call to BPEL engine for url: " + requestClient.getUrl());
-			String serviceId = instanceIdMap.get("serviceId");
-			String serviceType = e2eCompareModelReq.getServiceType();
-			response = requestClient.post(requestId, false, recipeTimeout, action.name(), serviceId, null, null, null,
-					null, null, serviceType, null, null, null, bpmnRequest, null);
+			RequestClientParamater requestClientParamater = new RequestClientParamater.Builder().setRequestId(requestId).
+					setBaseVfModule(false).setRecipeTimeout(180).setRequestAction(action.name()).
+					setServiceInstanceId(instanceIdMap.get("serviceId")).setServiceType(e2eCompareModelReq.getServiceType()).
+					setRequestDetails(jjo.toString()).build();
+
+			response = requestClient.post(requestClientParamater);
 
 			msoLogger.recordMetricEvent(subStartTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
 					"Successfully received response from BPMN engine", "BPMN", workflowUrl, null);
@@ -440,8 +439,6 @@
 		HttpResponse response = null;
 
 		long subStartTime = System.currentTimeMillis();
-		// String sirRequestJson = mapReqJsonToSvcInstReq(e2eSir, requestJSON);
-
 		try {
 			requestClient = RequestClientFactory.getRequestClient(
 					recipeLookupResult.getOrchestrationURI(),
@@ -449,19 +446,16 @@
 
 			JSONObject jjo = new JSONObject(requestJSON);
 			jjo.put("operationId", UUIDChecker.generateUUID(msoLogger));
-
-			String bpmnRequest = jjo.toString();
-
 			// Capture audit event
 			msoLogger
 					.debug("MSO API Handler Posting call to BPEL engine for url: "
 							+ requestClient.getUrl());
-			String serviceId = instanceIdMap.get("serviceId");
-			String serviceInstanceType = e2eDelReq.getServiceType();
-			response = requestClient.post(requestId, false,
-					recipeLookupResult.getRecipeTimeout(), action.name(),
-					serviceId, null, null, null, null, null, serviceInstanceType,
-					null, null, null, bpmnRequest, recipeLookupResult.getRecipeParamXsd());
+
+			RequestClientParamater requestClientParamater = new RequestClientParamater.Builder().setRequestId(requestId).
+					setBaseVfModule(false).setRecipeTimeout(recipeLookupResult.getRecipeTimeout()).
+					setRequestAction(action.name()).setServiceType(e2eDelReq.getServiceType()).
+					setRequestDetails(jjo.toString()).setRecipeParamXsd(recipeLookupResult.getRecipeParamXsd()).build();
+			response = requestClient.post(requestClientParamater);
 
 			msoLogger.recordMetricEvent(subStartTime,
 					MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
@@ -564,12 +558,6 @@
 			return response;
 		}
 		
-		//check for the current operation status
-//		Response resp = checkE2ESvcInstStatus(action, serviceId, startTime, msoRequest);
-//		if(resp != null && resp.getStatus() != 200) {
-//			return resp;
-//		}
-		
 		CatalogDatabase db = null;
 		RecipeLookupResult recipeLookupResult = null;
 		try {
@@ -615,18 +603,19 @@
 		HttpResponse response = null;
 
 		long subStartTime = System.currentTimeMillis();
-		String sirRequestJson = mapReqJsonToSvcInstReq(e2eSir, requestJSON);
-
 		try {
 			requestClient = RequestClientFactory.getRequestClient(recipeLookupResult.getOrchestrationURI(),
 					MsoPropertiesUtils.loadMsoProperties());
 
 			// Capture audit event
 			msoLogger.debug("MSO API Handler Posting call to BPEL engine for url: " + requestClient.getUrl());
+			RequestClientParamater requestClientParamater = new RequestClientParamater.Builder().setRequestId(requestId).
+					setBaseVfModule(false).setRecipeTimeout(recipeLookupResult.getRecipeTimeout()).setRequestAction(action.name()).
+					setServiceInstanceId(serviceId).setServiceType(serviceInstanceType).
+					setRequestDetails(mapReqJsonToSvcInstReq(e2eSir, requestJSON)).
+					setRecipeParamXsd(recipeLookupResult.getRecipeParamXsd()).build();
 
-			response = requestClient.post(requestId, false, recipeLookupResult.getRecipeTimeout(), action.name(),
-					serviceId, null, null, null, null, null, serviceInstanceType, null, null, null, sirRequestJson,
-					recipeLookupResult.getRecipeParamXsd());
+			response = requestClient.post(requestClientParamater);
 
 			msoLogger.recordMetricEvent(subStartTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
 					"Successfully received response from BPMN engine", "BPMN", recipeLookupResult.getOrchestrationURI(),
@@ -752,25 +741,23 @@
 			return response;
 		}
 
-		String serviceInstanceType = e2eSir.getService().getServiceType();
-
-		String serviceId = "";
 		RequestClient requestClient = null;
 		HttpResponse response = null;
 
 		long subStartTime = System.currentTimeMillis();
-		String sirRequestJson = mapReqJsonToSvcInstReq(e2eSir, requestJSON);
-
 		try {
 			requestClient = RequestClientFactory.getRequestClient(recipeLookupResult.getOrchestrationURI(),
 					MsoPropertiesUtils.loadMsoProperties());
 
 			// Capture audit event
 			msoLogger.debug("MSO API Handler Posting call to BPEL engine for url: " + requestClient.getUrl());
+			RequestClientParamater requestClientParamater = new RequestClientParamater.Builder().setRequestId(requestId).
+					setBaseVfModule(false).setRecipeTimeout(recipeLookupResult.getRecipeTimeout()).setRequestAction(action.name()).
+					setServiceInstanceId("").setServiceType(e2eSir.getService().getServiceType()).
+					setRequestDetails(mapReqJsonToSvcInstReq(e2eSir, requestJSON)).
+					setRecipeParamXsd(recipeLookupResult.getRecipeParamXsd()).build();
 
-			response = requestClient.post(requestId, false, recipeLookupResult.getRecipeTimeout(), action.name(),
-					serviceId, null, null, null, null, null, serviceInstanceType, null, null, null, sirRequestJson,
-					recipeLookupResult.getRecipeParamXsd());
+			response = requestClient.post(requestClientParamater);
 
 			msoLogger.recordMetricEvent(subStartTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
 					"Successfully received response from BPMN engine", "BPMN", recipeLookupResult.getOrchestrationURI(),
@@ -897,8 +884,6 @@
         HttpResponse response = null;
 
         long subStartTime = System.currentTimeMillis();
-        // String sirRequestJson = mapReqJsonToSvcInstReq(e2eSir, requestJSON);
-
         try {
             requestClient = RequestClientFactory.getRequestClient(
                     recipeLookupResult.getOrchestrationURI(),
@@ -907,18 +892,18 @@
             JSONObject jjo = new JSONObject(requestJSON);
             jjo.put("operationId", UUIDChecker.generateUUID(msoLogger));
 
-            String bpmnRequest = jjo.toString();
-
             // Capture audit event
             msoLogger
                     .debug("MSO API Handler Posting call to BPEL engine for url: "
                             + requestClient.getUrl());
-            String serviceId = instanceIdMap.get("serviceId");
-            String serviceInstanceType = e2eScaleReq.getService().getServiceType();
-            response = requestClient.post(requestId, false,
-					recipeLookupResult.getRecipeTimeout(), action.name(),
-					serviceId, null, null, null, null, null, serviceInstanceType,
-					null, null, null, bpmnRequest, recipeLookupResult.getRecipeParamXsd());
+			RequestClientParamater requestClientParamater = new RequestClientParamater.Builder().setRequestId(requestId).
+					setBaseVfModule(false).setRecipeTimeout(recipeLookupResult.getRecipeTimeout()).setRequestAction(action.name()).
+					setServiceInstanceId(instanceIdMap.get("serviceId")).
+					setServiceType(e2eScaleReq.getService().getServiceType()).
+					setRequestDetails(jjo.toString()).
+					setRecipeParamXsd(recipeLookupResult.getRecipeParamXsd()).build();
+
+            response = requestClient.post(requestClientParamater);
 
             msoLogger.recordMetricEvent(subStartTime,
                     MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/MsoRequest.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/MsoRequest.java
index 2f2ef31..3f6cc35 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/MsoRequest.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/MsoRequest.java
@@ -85,7 +85,6 @@
 
     private String requestId;
     private String requestXML;
-    private String requestJSON;
     private String requestUri;
     private VnfRequest vnfReq;
     private RequestInfo requestInfo;
@@ -118,8 +117,6 @@
     private OwningEntity owningEntity;
 
     private static MsoLogger msoLogger = MsoLogger.getMsoLogger (MsoLogger.Catalog.APIH);
-    private static final String NOT_PROVIDED = "not provided";
-
     protected AbstractSessionFactoryManager requestsDbSessionFactoryManager = new RequestsDbSessionFactoryManager ();
 
     MsoRequest (String requestId) {
@@ -1153,7 +1150,7 @@
     	mapper.setSerializationInclusion(Include.NON_NULL);
     	//mapper.configure(Feature.WRAP_ROOT_VALUE, true);
     	msoLogger.debug ("building sir from object " + sir);
-    	requestJSON = mapper.writeValueAsString(sir);
+    	String requestJSON = mapper.writeValueAsString(sir);
     	
     	// Perform mapping from VID-style modelInfo fields to ASDC-style modelInfo fields
     	
diff --git a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/ServiceInstances.java b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/ServiceInstances.java
index e16963d..581ad34 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/ServiceInstances.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/ServiceInstances.java
@@ -20,6 +20,7 @@
  */
 package org.openecomp.mso.apihandlerinfra;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -42,6 +43,7 @@
 import org.openecomp.mso.apihandler.common.ErrorNumbers;
 import org.openecomp.mso.apihandler.common.RequestClient;
 import org.openecomp.mso.apihandler.common.RequestClientFactory;
+import org.openecomp.mso.apihandler.common.RequestClientParamater;
 import org.openecomp.mso.apihandler.common.ResponseHandler;
 import org.openecomp.mso.apihandler.common.ValidationException;
 import org.openecomp.mso.serviceinstancebeans.ModelInfo;
@@ -690,37 +692,7 @@
 		}
 
 		db.close();
-
-		String serviceInstanceId = "";
-		String vnfId = "";
-		String vfModuleId = "";
-		String volumeGroupId = "";
-		String networkId = "";
-		ServiceInstancesRequest siReq = msoRequest.getServiceInstancesRequest();
-
-		if(siReq.getServiceInstanceId () != null){
-			serviceInstanceId = siReq.getServiceInstanceId ();
-		}
-
-		if(siReq.getVnfInstanceId () != null){
-			vnfId = siReq.getVnfInstanceId ();
-		}
-
-		if(siReq.getVfModuleInstanceId () != null){
-			vfModuleId = siReq.getVfModuleInstanceId ();
-		}
-
-		if(siReq.getVolumeGroupInstanceId () != null){
-			volumeGroupId = siReq.getVolumeGroupInstanceId ();
-		}
-
-		if(siReq.getNetworkInstanceId () != null){
-			networkId = siReq.getNetworkInstanceId ();
-		}
-
-
-		requestId = msoRequest.getRequestId ();
-		msoLogger.debug ("requestId is: " + requestId);
+		msoLogger.debug ("requestId is: " + msoRequest.getRequestId());
 		msoLogger.debug ("About to insert a record");
 
 		try {
@@ -736,15 +708,32 @@
 			return response;
 		}
 		
-		return postBPELRequest(action, requestId, startTime, msoRequest, recipeLookupResult.getOrchestrationURI(), recipeLookupResult.getRecipeTimeout(), 
-								isBaseVfModule, serviceInstanceId, vnfId, vfModuleId, volumeGroupId, networkId, null,
-								msoRequest.getServiceInstanceType(), msoRequest.getVnfType(), msoRequest.getVfModuleType(), msoRequest.getNetworkType());
+		return postBPELRequest(action, startTime, msoRequest, recipeLookupResult.getOrchestrationURI(),
+				recipeLookupResult.getRecipeTimeout(), isBaseVfModule);
 	}
 
-	private Response postBPELRequest(Action action, String requestId, long startTime, MsoRequest msoRequest,
-									String orchestrationUri, int timeOut, Boolean isBaseVfModule,
-									String serviceInstanceId, String vnfId, String vfModuleId, String volumeGroupId, String networkId,
-									String configurationId, String serviceInstanceType, String vnfType, String vfModuleType, String networkType) {
+	private RequestClientParamater buildRequestClientParameter(MsoRequest msoRequest, boolean isBaseVfModule,
+			int timeOut, String requestAction) throws IOException {
+		return new RequestClientParamater.Builder().
+				setRequestId(msoRequest.getRequestId()).
+				setBaseVfModule(isBaseVfModule).setRecipeTimeout(timeOut).
+				setRequestAction(requestAction).
+				setServiceInstanceId(msoRequest.getServiceInstancesRequest().getServiceInstanceId()).
+				setCorrelationId(msoRequest.getServiceInstancesRequest().getCorrelationId()).
+				setVnfId(msoRequest.getServiceInstancesRequest().getVnfInstanceId()).
+				setVfModuleId(msoRequest.getServiceInstancesRequest().getVfModuleInstanceId()).
+				setVolumeGroupId(msoRequest.getServiceInstancesRequest().getVolumeGroupInstanceId()).
+				setNetworkId(msoRequest.getServiceInstancesRequest().getNetworkInstanceId()).
+				setConfigurationId(msoRequest.getServiceInstancesRequest().getConfigurationId()).
+				setServiceType(msoRequest.getServiceInstanceType()).
+				setVnfType(msoRequest.getVnfType()).
+				setVfModuleType(msoRequest.getVfModuleType()).
+				setNetworkType(msoRequest.getNetworkType()).
+				setRequestDetails(msoRequest.getRequestJSON()).build();
+	}
+
+	private Response postBPELRequest(Action action, long startTime, MsoRequest msoRequest,
+			String orchestrationUri, int timeOut, Boolean isBaseVfModule) {
 		RequestClient requestClient = null;
 		HttpResponse response = null;
 		long subStartTime = System.currentTimeMillis();
@@ -754,12 +743,7 @@
 
 			System.out.println("URL : " + requestClient.getUrl ());
 
-			response = requestClient.post(requestId, isBaseVfModule, timeOut, action.name (),
-					serviceInstanceId, vnfId, vfModuleId, volumeGroupId, networkId, configurationId,
-					msoRequest.getServiceInstanceType (),
-					msoRequest.getVnfType (), msoRequest.getVfModuleType (),
-					msoRequest.getNetworkType (), msoRequest.getRequestJSON(), null);
-
+			response = requestClient.post(buildRequestClientParameter(msoRequest, isBaseVfModule, timeOut, action.name()));
 			msoLogger.recordMetricEvent (subStartTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc, "Successfully received response from BPMN engine", "BPMN", orchestrationUri, null);
 		} catch (Exception e) {
 			msoLogger.recordMetricEvent (subStartTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.CommunicationError, "Exception while communicate with BPMN engine", "BPMN", orchestrationUri, null);
@@ -1191,7 +1175,6 @@
 		return new RecipeLookupResult (vnfRecipe.getOrchestrationUri(), vnfRecipe.getRecipeTimeout());		
 	}
 
-
 	private RecipeLookupResult getNetworkUri (CatalogDatabase db, MsoRequest msoRequest, Action action) throws Exception {
 
 		String defaultNetworkType = msoRequest.getRequestInfo().getSource() + "_DEFAULT";
@@ -1299,18 +1282,6 @@
 			return response;
 			
 		}
-		
-		String serviceInstanceId = "";
-		String configurationId = "";
-		ServiceInstancesRequest siReq = msoRequest.getServiceInstancesRequest();
-
-		if(siReq.getServiceInstanceId () != null){
-			serviceInstanceId = siReq.getServiceInstanceId ();
-		}
-
-		if(siReq.getConfigurationId() != null){
-			configurationId = siReq.getConfigurationId();
-		}
 
 		requestId = msoRequest.getRequestId ();
 		msoLogger.debug ("requestId is: " + requestId);
@@ -1328,7 +1299,6 @@
 			return response;
 		}
 
-		return postBPELRequest(action, requestId, startTime, msoRequest, orchestrationUri, Integer.parseInt(timeOut), false, 
-								serviceInstanceId, null, null, null, null, configurationId, null, null, null, null);
+		return postBPELRequest(action, startTime, msoRequest, orchestrationUri, Integer.parseInt(timeOut), false);
 	}
 }
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstancesTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstancesTest.java
index 60ac6b9..901e03f 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstancesTest.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstancesTest.java
@@ -40,12 +40,12 @@
 import org.openecomp.mso.apihandler.common.CamundaClient;
 import org.openecomp.mso.apihandler.common.RequestClient;
 import org.openecomp.mso.apihandler.common.RequestClientFactory;
+import org.openecomp.mso.apihandler.common.RequestClientParamater;
 import org.openecomp.mso.apihandler.common.ValidationException;
 import org.openecomp.mso.db.AbstractSessionFactoryManager;
 import org.openecomp.mso.db.catalog.CatalogDatabase;
 import org.openecomp.mso.db.catalog.beans.Service;
 import org.openecomp.mso.db.catalog.beans.ServiceRecipe;
-import org.openecomp.mso.properties.MsoDatabaseException;
 import org.openecomp.mso.properties.MsoJavaProperties;
 import org.openecomp.mso.properties.MsoPropertiesFactory;
 import org.openecomp.mso.requestsdb.OperationStatus;
@@ -194,12 +194,7 @@
 
 		new MockUp<CamundaClient>() {
 			@Mock
-			public HttpResponse post(String requestId, boolean isBaseVfModule,
-					int recipeTimeout, String requestAction,
-					String serviceInstanceId, String vnfId, String vfModuleId,
-					String volumeGroupId, String networkId, String configurationId, String serviceType,
-					String vnfType, String vfModuleType, String networkType,
-					String requestDetails, String recipeParamXsd) {
+			public HttpResponse post(RequestClientParamater requestClientParamater) {
 				ProtocolVersion pv = new ProtocolVersion("HTTP", 1, 1);
 				HttpResponse resp = new BasicHttpResponse(pv, 202,
 						"test response");
@@ -258,12 +253,7 @@
 
 		new MockUp<CamundaClient>() {
 			@Mock
-			public HttpResponse post(String requestId, boolean isBaseVfModule,
-					int recipeTimeout, String requestAction,
-					String serviceInstanceId, String vnfId, String vfModuleId,
-					String volumeGroupId, String networkId, String configurationId, String serviceType,
-					String vnfType, String vfModuleType, String networkType,
-					String requestDetails, String recipeParamXsd) {
+			public HttpResponse post(RequestClientParamater requestClientParamater) {
 				ProtocolVersion pv = new ProtocolVersion("HTTP", 1, 1);
 				HttpResponse resp = new BasicHttpResponse(pv, 500,
 						"test response");
@@ -323,12 +313,7 @@
 
 		new MockUp<CamundaClient>() {
 			@Mock
-			public HttpResponse post(String requestId, boolean isBaseVfModule,
-					int recipeTimeout, String requestAction,
-					String serviceInstanceId, String vnfId, String vfModuleId,
-					String volumeGroupId, String networkId, String configurationId, String serviceType,
-					String vnfType, String vfModuleType, String networkType,
-					String requestDetails, String recipeParamXsd) {
+			public HttpResponse post(RequestClientParamater requestClientParamater) {
 				ProtocolVersion pv = new ProtocolVersion("HTTP", 1, 1);
 				HttpResponse resp = new BasicHttpResponse(pv, 500,
 						"test response");
@@ -388,12 +373,7 @@
 
 		new MockUp<CamundaClient>() {
 			@Mock
-			public HttpResponse post(String requestId, boolean isBaseVfModule,
-					int recipeTimeout, String requestAction,
-					String serviceInstanceId, String vnfId, String vfModuleId,
-					String volumeGroupId, String networkId, String configurationId, String serviceType,
-					String vnfType, String vfModuleType, String networkType,
-					String requestDetails, String recipeParamXsd) {
+			public HttpResponse post(RequestClientParamater requestClientParamater) {
 				HttpResponse resp = null;
 				return resp;
 			}
@@ -625,12 +605,7 @@
 
         final MockUp<CamundaClient> mockCmaundaClient = new MockUp<CamundaClient>() {
             @Mock
-            public HttpResponse post(String requestId, boolean isBaseVfModule,
-                                     int recipeTimeout, String requestAction, String serviceInstanceId,
-                                     String vnfId, String vfModuleId, String volumeGroupId, String networkId, String configurationId,
-                                     String serviceType, String vnfType, String vfModuleType, String networkType,
-                                     String requestDetails, String recipeParamXsd)
-                    throws ClientProtocolException, IOException {
+            public HttpResponse post(RequestClientParamater requestClientParamater) {
                 ProtocolVersion pv = new ProtocolVersion("HTTP", 1, 1);
                 HttpResponse resp = new BasicHttpResponse(pv, 200, "test response");
                 BasicHttpEntity entity = new BasicHttpEntity();
@@ -822,12 +797,7 @@
 
 		new MockUp<CamundaClient>() {
 			@Mock
-			public HttpResponse post(String requestId, boolean isBaseVfModule,
-					int recipeTimeout, String requestAction,
-					String serviceInstanceId, String vnfId, String vfModuleId,
-					String volumeGroupId, String networkId, String configurationId, String serviceType,
-					String vnfType, String vfModuleType, String networkType,
-					String requestDetails, String recipeParamXsd) {
+			public HttpResponse post(RequestClientParamater requestClientParamater) {
 				ProtocolVersion pv = new ProtocolVersion("HTTP", 1, 1);
 				HttpResponse resp = new BasicHttpResponse(pv, 202,
 						"test response");
@@ -888,12 +858,7 @@
 
 		new MockUp<CamundaClient>() {
 			@Mock
-			public HttpResponse post(String requestId, boolean isBaseVfModule,
-					int recipeTimeout, String requestAction,
-					String serviceInstanceId, String vnfId, String vfModuleId,
-					String volumeGroupId, String networkId, String configurationId, String serviceType,
-					String vnfType, String vfModuleType, String networkType,
-					String requestDetails, String recipeParamXsd) {
+			public HttpResponse post(RequestClientParamater requestClientParamater) {
 				ProtocolVersion pv = new ProtocolVersion("HTTP", 1, 1);
 				HttpResponse resp = new BasicHttpResponse(pv, 202,
 						"test response");
@@ -955,12 +920,7 @@
 
         new MockUp<CamundaClient>() {
             @Mock
-            public HttpResponse post(String requestId, boolean isBaseVfModule,
-                                     int recipeTimeout, String requestAction,
-                                     String serviceInstanceId, String vnfId, String vfModuleId,
-                                     String volumeGroupId, String networkId, String configurationId, String serviceType,
-                                     String vnfType, String vfModuleType, String networkType,
-                                     String requestDetails, String recipeParamXsd) {
+            public HttpResponse post(RequestClientParamater requestClientParamater) {
                 ProtocolVersion pv = new ProtocolVersion("HTTP", 1, 1);
                 HttpResponse resp = new BasicHttpResponse(pv, 202,
                         "test response");
@@ -1027,12 +987,7 @@
 
         new MockUp<CamundaClient>() {
             @Mock
-            public HttpResponse post(String requestId, boolean isBaseVfModule,
-                                     int recipeTimeout, String requestAction,
-                                     String serviceInstanceId, String vnfId, String vfModuleId,
-                                     String volumeGroupId, String networkId, String configurationId, String serviceType,
-                                     String vnfType, String vfModuleType, String networkType,
-                                     String requestDetails, String recipeParamXsd) {
+            public HttpResponse post(RequestClientParamater requestClientParamater) {
                 ProtocolVersion pv = new ProtocolVersion("HTTP", 1, 1);
                 HttpResponse resp = new BasicHttpResponse(pv, 202,
                         "test response");
@@ -1093,12 +1048,7 @@
 
         new MockUp<CamundaClient>() {
             @Mock
-            public HttpResponse post(String requestId, boolean isBaseVfModule,
-                                     int recipeTimeout, String requestAction,
-                                     String serviceInstanceId, String vnfId, String vfModuleId,
-                                     String volumeGroupId, String networkId, String configurationId, String serviceType,
-                                     String vnfType, String vfModuleType, String networkType,
-                                     String requestDetails, String recipeParamXsd) {
+            public HttpResponse post(RequestClientParamater requestClientParamater) {
                 ProtocolVersion pv = new ProtocolVersion("HTTP", 1, 1);
                 HttpResponse resp = new BasicHttpResponse(pv, 202,
                         "test response");
@@ -1160,12 +1110,7 @@
 
         MockUp<CamundaClient> client = new MockUp<CamundaClient>() {
             @Mock
-            public HttpResponse post(String requestId, boolean isBaseVfModule,
-                                     int recipeTimeout, String requestAction,
-                                     String serviceInstanceId, String vnfId, String vfModuleId,
-                                     String volumeGroupId, String networkId, String configurationId, String serviceType,
-                                     String vnfType, String vfModuleType, String networkType,
-                                     String requestDetails, String recipeParamXsd) throws Exception {
+            public HttpResponse post(RequestClientParamater requestClientParamater) throws Exception {
                 throw new Exception();
             }
         };
@@ -1192,13 +1137,7 @@
 
         new MockUp<CamundaClient>() {
             @Mock
-            public HttpResponse post(String requestId, boolean isBaseVfModule,
-                 int recipeTimeout, String requestAction, String serviceInstanceId,
-                 String vnfId, String vfModuleId, String volumeGroupId, String networkId, String configurationId,
-                 String serviceType, String vnfType, String vfModuleType, String networkType,
-                 String requestDetails, String recipeParamXsd)
-                    throws ClientProtocolException, IOException {
-
+            public HttpResponse post(RequestClientParamater requestClientParamater) throws IOException {
                 throw new ClientProtocolException();
             }
         };
@@ -1216,13 +1155,7 @@
 
         new MockUp<CamundaClient>() {
             @Mock
-            public HttpResponse post(String requestId, boolean isBaseVfModule,
-                                     int recipeTimeout, String requestAction, String serviceInstanceId,
-                                     String vnfId, String vfModuleId, String volumeGroupId, String networkId, String configurationId,
-                                     String serviceType, String vnfType, String vfModuleType, String networkType,
-                                     String requestDetails, String recipeParamXsd)
-                    throws ClientProtocolException, IOException {
-
+            public HttpResponse post(RequestClientParamater requestClientParamater) {
                 ProtocolVersion pv = new ProtocolVersion("HTTP", 1, 1);
                 HttpResponse resp = new BasicHttpResponse(pv, 202,
                         "compareModelwithTargetVersion, test response");
@@ -1291,12 +1224,7 @@
 
         final MockUp<CamundaClient> mockCamundaClient = new MockUp<CamundaClient>() {
             @Mock
-            public HttpResponse post(String requestId, boolean isBaseVfModule,
-                                     int recipeTimeout, String requestAction,
-                                     String serviceInstanceId, String vnfId, String vfModuleId,
-                                     String volumeGroupId, String networkId, String configurationId, String serviceType,
-                                     String vnfType, String vfModuleType, String networkType,
-                                     String requestDetails, String recipeParamXsd) {
+            public HttpResponse post(RequestClientParamater requestClientParamater) {
                 ProtocolVersion pv = new ProtocolVersion("HTTP", 1, 1);
                 HttpResponse resp = new BasicHttpResponse(pv, 202,
                         "test response");
diff --git a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/openecomp/mso/apihandlerinfra/ServiceInstanceTest.java b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/openecomp/mso/apihandlerinfra/ServiceInstanceTest.java
index 50f00ef..938a103 100644
--- a/mso-api-handlers/mso-api-handler-infra/src/test/java/org/openecomp/mso/apihandlerinfra/ServiceInstanceTest.java
+++ b/mso-api-handlers/mso-api-handler-infra/src/test/java/org/openecomp/mso/apihandlerinfra/ServiceInstanceTest.java
@@ -21,6 +21,16 @@
 package org.openecomp.mso.apihandlerinfra;

 

 

+import static org.junit.Assert.assertTrue;

+

+import java.io.ByteArrayInputStream;

+import java.io.InputStream;

+import java.util.Collections;

+import java.util.HashMap;

+import java.util.List;

+import javax.ws.rs.core.Response;

+import mockit.Mock;

+import mockit.MockUp;

 import org.apache.http.HttpResponse;

 import org.apache.http.ProtocolVersion;

 import org.apache.http.entity.BasicHttpEntity;

@@ -30,33 +40,23 @@
 import org.junit.BeforeClass;

 import org.junit.Ignore;

 import org.junit.Test;

-

-import javax.ws.rs.core.Response;

-

-import static org.junit.Assert.assertFalse;

-import static org.junit.Assert.assertTrue;

-import static org.junit.Assert.fail;

-

-import java.io.ByteArrayInputStream;

-import java.io.InputStream;

-import java.util.Collections;

-import java.util.HashMap;

-import java.util.List;

-

 import org.openecomp.mso.apihandler.common.CamundaClient;

 import org.openecomp.mso.apihandler.common.RequestClient;

 import org.openecomp.mso.apihandler.common.RequestClientFactory;

+import org.openecomp.mso.apihandler.common.RequestClientParamater;

 import org.openecomp.mso.db.catalog.CatalogDatabase;

-import org.openecomp.mso.db.catalog.beans.*;

+import org.openecomp.mso.db.catalog.beans.Service;

+import org.openecomp.mso.db.catalog.beans.ServiceRecipe;

+import org.openecomp.mso.db.catalog.beans.VfModule;

+import org.openecomp.mso.db.catalog.beans.VfModuleCustomization;

+import org.openecomp.mso.db.catalog.beans.VnfComponentsRecipe;

+import org.openecomp.mso.db.catalog.beans.VnfRecipe;

+import org.openecomp.mso.db.catalog.beans.VnfResource;

 import org.openecomp.mso.properties.MsoJavaProperties;

-import org.openecomp.mso.properties.MsoPropertiesException;

 import org.openecomp.mso.properties.MsoPropertiesFactory;

 import org.openecomp.mso.requestsdb.InfraActiveRequests;

 import org.openecomp.mso.requestsdb.RequestsDatabase;

 

-import mockit.Mock;

-import mockit.MockUp;

-

 public class ServiceInstanceTest {

 

 	/*** Create Service Instance Test Cases ***/

@@ -225,11 +225,7 @@
         

         new MockUp<CamundaClient>() {

             @Mock

-            public HttpResponse post(String requestId, boolean isBaseVfModule,

-        			int recipeTimeout, String requestAction, String serviceInstanceId,

-        			String vnfId, String vfModuleId, String volumeGroupId, String networkId, String configurationId,

-        			String serviceType, String vnfType, String vfModuleType, String networkType,

-        			String requestDetails, String recipeParamXsd){ 

+            public HttpResponse post(RequestClientParamater requestClientParamater) {

             	ProtocolVersion pv = new ProtocolVersion("HTTP",1,1);

             	HttpResponse resp = new BasicHttpResponse(pv,200, "test response");

             	BasicHttpEntity entity = new BasicHttpEntity();

@@ -295,11 +291,7 @@
         

         new MockUp<CamundaClient>() {

             @Mock

-            public HttpResponse post(String requestId, boolean isBaseVfModule,

-        			int recipeTimeout, String requestAction, String serviceInstanceId,

-        			String vnfId, String vfModuleId, String volumeGroupId, String networkId, String configurationId,

-        			String serviceType, String vnfType, String vfModuleType, String networkType,

-        			String requestDetails, String recipeParamXsd){ 

+            public HttpResponse post(RequestClientParamater requestClientParamater) {

             	ProtocolVersion pv = new ProtocolVersion("HTTP",1,1);

             	HttpResponse resp = new BasicHttpResponse(pv,500, "test response");

             	BasicHttpEntity entity = new BasicHttpEntity();

@@ -366,11 +358,7 @@
         

         new MockUp<CamundaClient>() {

             @Mock

-            public HttpResponse post(String requestId, boolean isBaseVfModule,

-        			int recipeTimeout, String requestAction, String serviceInstanceId,

-        			String vnfId, String vfModuleId, String volumeGroupId, String networkId, String configurationId,

-        			String serviceType, String vnfType, String vfModuleType, String networkType,

-        			String requestDetails, String recipeParamXsd){ 

+            public HttpResponse post(RequestClientParamater requestClientParamater) {

             	ProtocolVersion pv = new ProtocolVersion("HTTP",1,1);

             	HttpResponse resp = new BasicHttpResponse(pv,500, "test response");

             	BasicHttpEntity entity = new BasicHttpEntity();

@@ -437,11 +425,7 @@
         

         new MockUp<CamundaClient>() {

             @Mock

-            public HttpResponse post(String requestId, boolean isBaseVfModule,

-        			int recipeTimeout, String requestAction, String serviceInstanceId,

-        			String vnfId, String vfModuleId, String volumeGroupId, String networkId, String configurationId,

-        			String serviceType, String vnfType, String vfModuleType, String networkType,

-        			String requestDetails, String recipeParamXsd){ 

+            public HttpResponse post(RequestClientParamater requestClientParamater){

             	return null;

             }

         };

@@ -923,11 +907,7 @@
 

 		new MockUp<CamundaClient>() {

 			@Mock

-			public HttpResponse post(String requestId, boolean isBaseVfModule,

-									 int recipeTimeout, String requestAction, String serviceInstanceId,

-									 String vnfId, String vfModuleId, String volumeGroupId, String networkId, String configurationId,

-									 String serviceType, String vnfType, String vfModuleType, String networkType,

-									 String requestDetails, String recipeParamXsd){

+			public HttpResponse post(RequestClientParamater requestClientParamater) {

 				ProtocolVersion pv = new ProtocolVersion("HTTP",1,1);

 				HttpResponse resp = new BasicHttpResponse(pv,200, "test response");

 				BasicHttpEntity entity = new BasicHttpEntity();

@@ -1092,11 +1072,7 @@
 

 		new MockUp<CamundaClient>() {

 			@Mock

-			public HttpResponse post(String requestId, boolean isBaseVfModule,

-									 int recipeTimeout, String requestAction, String serviceInstanceId,

-									 String vnfId, String vfModuleId, String volumeGroupId, String networkId, String configurationId,

-									 String serviceType, String vnfType, String vfModuleType, String networkType,

-									 String requestDetails, String recipeParamXsd){

+			public HttpResponse post(RequestClientParamater requestClientParamater){

 				ProtocolVersion pv = new ProtocolVersion("HTTP",1,1);

 				HttpResponse resp = new BasicHttpResponse(pv,200, "test response");

 				BasicHttpEntity entity = new BasicHttpEntity();

@@ -1143,11 +1119,7 @@
 

 		new MockUp<CamundaClient>() {

 			@Mock

-			public HttpResponse post(String requestId, boolean isBaseVfModule,

-									 int recipeTimeout, String requestAction, String serviceInstanceId,

-									 String vnfId, String vfModuleId, String volumeGroupId, String networkId, String configurationId,

-									 String serviceType, String vnfType, String vfModuleType, String networkType,

-									 String requestDetails, String recipeParamXsd){

+			public HttpResponse post(RequestClientParamater requestClientParamater) {

 				ProtocolVersion pv = new ProtocolVersion("HTTP",1,1);

 				HttpResponse resp = new BasicHttpResponse(pv,200, "test response");

 				BasicHttpEntity entity = new BasicHttpEntity();