Merge "Reorder modifiers"
[so.git] / mso-api-handlers / mso-api-handler-infra / src / main / java / org / openecomp / mso / apihandlerinfra / E2EServiceInstances.java
index 01ca4df..ca821ec 100644 (file)
@@ -21,7 +21,6 @@
 package org.openecomp.mso.apihandlerinfra;
 
 import java.io.IOException;
-import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -40,43 +39,35 @@ import javax.ws.rs.core.Response;
 
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.hibernate.Session;
 import org.json.JSONObject;
 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.Messages;
-import org.openecomp.mso.apihandlerinfra.MsoException;
-import org.openecomp.mso.apihandlerinfra.MsoRequest;
 import org.openecomp.mso.apihandlerinfra.e2eserviceinstancebeans.CompareModelsRequest;
-import org.openecomp.mso.apihandlerinfra.e2eserviceinstancebeans.DelE2ESvcResp;
 import org.openecomp.mso.apihandlerinfra.e2eserviceinstancebeans.E2EServiceInstanceDeleteRequest;
 import org.openecomp.mso.apihandlerinfra.e2eserviceinstancebeans.E2EServiceInstanceRequest;
-import org.openecomp.mso.apihandlerinfra.e2eserviceinstancebeans.E2EUserParam;
+import org.openecomp.mso.apihandlerinfra.e2eserviceinstancebeans.E2EServiceInstanceScaleRequest;
 import org.openecomp.mso.apihandlerinfra.e2eserviceinstancebeans.GetE2EServiceInstanceResponse;
-import org.openecomp.mso.apihandlerinfra.e2eserviceinstancebeans.*;
-import org.openecomp.mso.serviceinstancebeans.ModelInfo;
-import org.openecomp.mso.serviceinstancebeans.ModelType;
-import org.openecomp.mso.serviceinstancebeans.RequestDetails;
-import org.openecomp.mso.serviceinstancebeans.RequestInfo;
-import org.openecomp.mso.serviceinstancebeans.RequestParameters;
-import org.openecomp.mso.serviceinstancebeans.ServiceInstancesRequest;
-import org.openecomp.mso.serviceinstancebeans.SubscriberInfo;
-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.logger.MessageEnum;
 import org.openecomp.mso.logger.MsoAlarmLogger;
 import org.openecomp.mso.logger.MsoLogger;
-import org.openecomp.mso.properties.MsoDatabaseException;
 import org.openecomp.mso.requestsdb.OperationStatus;
 import org.openecomp.mso.requestsdb.RequestsDatabase;
-import org.openecomp.mso.requestsdb.RequestsDbSessionFactoryManager;
+import org.openecomp.mso.serviceinstancebeans.ModelInfo;
+import org.openecomp.mso.serviceinstancebeans.ModelType;
+import org.openecomp.mso.serviceinstancebeans.RequestDetails;
+import org.openecomp.mso.serviceinstancebeans.RequestInfo;
+import org.openecomp.mso.serviceinstancebeans.RequestParameters;
+import org.openecomp.mso.serviceinstancebeans.ServiceInstancesRequest;
+import org.openecomp.mso.serviceinstancebeans.SubscriberInfo;
 import org.openecomp.mso.utils.UUIDChecker;
 
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.wordnik.swagger.annotations.Api;
 import com.wordnik.swagger.annotations.ApiOperation;
 
@@ -92,8 +83,6 @@ public class E2EServiceInstances {
        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
@@ -199,7 +188,7 @@ public class E2EServiceInstances {
        private Response compareModelwithTargetVersion(String requestJSON, Action action,
                        HashMap<String, String> instanceIdMap, String version) {
 
-               String requestId = instanceIdMap.get("serviceId");
+               String requestId = UUIDChecker.generateUUID(msoLogger);
                long startTime = System.currentTimeMillis();
                msoLogger.debug("requestId is: " + requestId);
 
@@ -221,15 +210,12 @@ public class E2EServiceInstances {
                                        MsoLogger.ErrorCode.SchemaError, requestJSON, e);
                        msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.SchemaError,
                                        "Mapping of request to JSON object failed");
-                       msoLogger.debug("End of the transaction, the final response is: " + response.getEntity().toString());
+                       msoLogger.debug(END_OF_THE_TRANSACTION + response.getEntity().toString());
 
                        return response;
                }
 
-               Response returnResp = runCompareModelBPMWorkflow(e2eCompareModelReq, msoRequest, requestJSON, requestId,
-                               startTime, action);
-
-               return returnResp;
+               return runCompareModelBPMWorkflow(e2eCompareModelReq, msoRequest, requestJSON, requestId, startTime, action);
 
        }
 
@@ -238,7 +224,6 @@ public class E2EServiceInstances {
                
                // 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;
@@ -249,14 +234,15 @@ public class E2EServiceInstances {
                        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);
@@ -273,7 +259,7 @@ public class E2EServiceInstances {
                                        MsoLogger.ErrorCode.AvailabilityError, "Exception while communicate with BPMN engine",e);
                        msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.CommunicationError,
                                        "Exception while communicate with BPMN engine");
-                       msoLogger.debug("End of the transaction, the final response is: " + resp.getEntity().toString());
+                       msoLogger.debug(END_OF_THE_TRANSACTION + resp.getEntity().toString());
                        return resp;
                }
 
@@ -290,8 +276,6 @@ public class E2EServiceInstances {
 
                ResponseHandler respHandler = new ResponseHandler(response, requestClient.getType());
                int bpelStatus = respHandler.getStatus();
-               // String responseBody = respHandler.getResponseBody();
-               // CompareModelsResult modelDiffResponse = new CompareModelsResult();
 
                return beplStatusUpdate(requestId, startTime, msoRequest, requestClient, respHandler, bpelStatus, action,
                                instanceIdMap);
@@ -333,7 +317,7 @@ public class E2EServiceInstances {
                        msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR,
                                        MsoLogger.ResponseCode.DBAccessError,
                                        "Exception while communciate with Request DB");
-                       msoLogger.debug("End of the transaction, the final response is: "
+                       msoLogger.debug(END_OF_THE_TRANSACTION
                                        + (String) response.getEntity());
                        return response;
 
@@ -351,7 +335,7 @@ public class E2EServiceInstances {
                        msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR,
                                        MsoLogger.ResponseCode.DataNotFound,
                                        "Null response from RequestDB when searching by serviceId");
-                       msoLogger.debug("End of the transaction, the final response is: "
+                       msoLogger.debug(END_OF_THE_TRANSACTION
                                        + (String) resp.getEntity());
                        return resp;
 
@@ -365,7 +349,7 @@ public class E2EServiceInstances {
        private Response deleteE2EserviceInstances(String requestJSON,
                        Action action, HashMap<String, String> instanceIdMap, String version) {
                // TODO should be a new one or the same service instance Id
-               String requestId = instanceIdMap.get("serviceId");
+               String requestId = UUIDChecker.generateUUID(msoLogger);
                long startTime = System.currentTimeMillis();
                msoLogger.debug("requestId is: " + requestId);
                E2EServiceInstanceDeleteRequest e2eDelReq = null;
@@ -392,9 +376,8 @@ public class E2EServiceInstances {
                        msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR,
                                        MsoLogger.ResponseCode.SchemaError,
                                        "Mapping of request to JSON object failed");
-                       msoLogger.debug("End of the transaction, the final response is: "
+                       msoLogger.debug(END_OF_THE_TRANSACTION
                                        + (String) response.getEntity());
-                       createOperationStatusRecordForError(action, requestId);
                        return response;
                }
 
@@ -444,7 +427,6 @@ public class E2EServiceInstances {
                                        "No recipe found in DB");
                        msoLogger.debug(END_OF_THE_TRANSACTION
                                        + (String) response.getEntity());
-                       createOperationStatusRecordForError(action, requestId);
                        return response;
                }
 
@@ -452,8 +434,6 @@ public class E2EServiceInstances {
                HttpResponse response = null;
 
                long subStartTime = System.currentTimeMillis();
-               // String sirRequestJson = mapReqJsonToSvcInstReq(e2eSir, requestJSON);
-
                try {
                        requestClient = RequestClientFactory.getRequestClient(
                                        recipeLookupResult.getOrchestrationURI(),
@@ -461,19 +441,17 @@ public class E2EServiceInstances {
 
                        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()).setServiceInstanceId(instanceIdMap.get("serviceId")).
+                                       setServiceType(e2eDelReq.getServiceType()).setRequestDetails(jjo.toString()).
+                                       setRecipeParamXsd(recipeLookupResult.getRecipeParamXsd()).build();
+                       response = requestClient.post(requestClientParamater);
 
                        msoLogger.recordMetricEvent(subStartTime,
                                        MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
@@ -501,7 +479,6 @@ public class E2EServiceInstances {
                                        "Exception while communicate with BPMN engine");
                        msoLogger.debug("End of the transaction, the final response is: "
                                        + (String) resp.getEntity());
-                       createOperationStatusRecordForError(action, requestId);
                        return resp;
                }
 
@@ -518,7 +495,6 @@ public class E2EServiceInstances {
                                        MsoLogger.ResponseCode.InternalError,
                                        "Null response from BPMN");
                        msoLogger.debug(END_OF_THE_TRANSACTION + (String) resp.getEntity());
-                       createOperationStatusRecordForError(action, requestId);
                        return resp;
                }
 
@@ -554,7 +530,7 @@ public class E2EServiceInstances {
                                        MsoLogger.ErrorCode.SchemaError, requestJSON, e);
                        msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.SchemaError,
                                        "Mapping of request to JSON object failed");
-                       msoLogger.debug("End of the transaction, the final response is: " + (String) response.getEntity());
+                       msoLogger.debug(END_OF_THE_TRANSACTION + (String) response.getEntity());
                        return response;
                }
 
@@ -574,16 +550,10 @@ public class E2EServiceInstances {
                                        MsoLogger.ErrorCode.SchemaError, requestJSON, e);
                        msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.SchemaError,
                                        "Validation of the input request failed");
-                       msoLogger.debug("End of the transaction, the final response is: " + (String) response.getEntity());
+                       msoLogger.debug(END_OF_THE_TRANSACTION + (String) response.getEntity());
                        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 {
@@ -629,18 +599,19 @@ public class E2EServiceInstances {
                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(),
@@ -659,7 +630,7 @@ public class E2EServiceInstances {
                                        MsoLogger.ErrorCode.AvailabilityError, "Exception while communicate with BPMN engine");
                        msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.CommunicationError,
                                        "Exception while communicate with BPMN engine");
-                       msoLogger.debug("End of the transaction, the final response is: " + (String) getBPMNResp.getEntity());
+                       msoLogger.debug(END_OF_THE_TRANSACTION + (String) getBPMNResp.getEntity());
 
                        return getBPMNResp;
                }
@@ -682,46 +653,6 @@ public class E2EServiceInstances {
                return beplStatusUpdate(serviceId, startTime, msoRequest, requestClient, respHandler, bpelStatus, action, instanceIdMap);
        }
 
-       private Response checkE2ESvcInstStatus(Action action, String serviceId, long startTime, MsoRequest msoRequest) {
-               OperationStatus curStatus = null;
-//             String instanceName = sir.getRequestDetails().getRequestInfo().getInstanceName();
-               String requestScope = sir.getRequestDetails().getModelInfo().getModelType().name();
-               try {
-                       if (!(serviceId == null && "service".equals(requestScope) && (action == Action.updateInstance))) {                          
-                               curStatus = chkSvcInstOperStatusbySvcId(serviceId);
-                       }
-               } catch (Exception e) {
-                       msoLogger.error(MessageEnum.APIH_DUPLICATE_CHECK_EXC, MSO_PROP_APIHANDLER_INFRA, "", "",
-                                       MsoLogger.ErrorCode.DataError, "Error during current operation status check ", e);
-
-                       Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_INTERNAL_SERVER_ERROR,
-                                       MsoException.ServiceException, e.getMessage(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR, null);
-
-                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError,
-                                       "Error during current operation status check");
-                       msoLogger.debug("End of the transaction, the final response is: " + (String) response.getEntity());
-                       return response;
-               }
-
-               if ("processing".equalsIgnoreCase("curStatus != null && curStatus.getResult() != null && curStatus.getResult()")) {
-                       String chkMessage = "Error: Locked instance - This " + requestScope + " (" + serviceId + ") "
-                                       + "now being worked with a status of " + curStatus.getResult() 
-                                       + ". The latest workflow of instance must be finished or cleaned up.";
-
-                       Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_CONFLICT,
-                                       MsoException.ServiceException, chkMessage, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR, null);
-
-                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.Conflict,
-                                       chkMessage);
-
-                       msoLogger.debug("End of the transaction, the final response is: " + (String) response.getEntity());
-
-                       return response;
-               }
-               
-               return Response.status(200).entity(null).build();
-       }
-       
        private Response processE2EserviceInstances(String requestJSON, Action action,
                        HashMap<String, String> instanceIdMap, String version) {
 
@@ -736,9 +667,7 @@ public class E2EServiceInstances {
                        e2eSir = mapper.readValue(requestJSON, E2EServiceInstanceRequest.class);
 
                } catch (Exception e) {
-          //TODO update the service name
-          this.createOperationStatusRecordForError(action, requestId);
-                 
+         
                        msoLogger.debug("Mapping of request to JSON object failed : ", e);
                        Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_REQUEST,
                                        MsoException.ServiceException, "Mapping of request to JSON object failed.  " + e.getMessage(),
@@ -747,7 +676,7 @@ public class E2EServiceInstances {
                                        MsoLogger.ErrorCode.SchemaError, requestJSON, e);
                        msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.SchemaError,
                                        "Mapping of request to JSON object failed");
-                       msoLogger.debug("End of the transaction, the final response is: " + (String) response.getEntity());
+                       msoLogger.debug(END_OF_THE_TRANSACTION + (String) response.getEntity());
                        return response;
                }
 
@@ -762,66 +691,15 @@ public class E2EServiceInstances {
                                        ErrorNumbers.SVC_BAD_PARAMETER, null);
                        if (msoRequest.getRequestId() != null) {
                                msoLogger.debug("Logging failed message to the database");
-                               //TODO update the service name
-                         this.createOperationStatusRecordForError(action, requestId);
                        }
                        msoLogger.error(MessageEnum.APIH_REQUEST_VALIDATION_ERROR, MSO_PROP_APIHANDLER_INFRA, "", "",
                                        MsoLogger.ErrorCode.SchemaError, requestJSON, e);
                        msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.SchemaError,
                                        "Validation of the input request failed");
-                       msoLogger.debug("End of the transaction, the final response is: " + (String) response.getEntity());
-                       return response;
-               }
-               
-               OperationStatus dup = null;
-               String instanceName = sir.getRequestDetails().getRequestInfo().getInstanceName();
-               String requestScope = sir.getRequestDetails().getModelInfo().getModelType().name();
-               try {
-                       if (!(instanceName == null && "service".equals(requestScope)
-                                       && (action == Action.createInstance || action == Action.activateInstance))) {
-                         //TODO : Need to check for the duplicate record from the operation status,
-                         //TODO : commenting this check for unblocking current testing for now...  induces dead code...
-                               dup = chkDuplicateServiceNameInOperStatus( instanceName);
-                       }
-               } catch (Exception e) {
-                       msoLogger.error(MessageEnum.APIH_DUPLICATE_CHECK_EXC, MSO_PROP_APIHANDLER_INFRA, "", "",
-                                       MsoLogger.ErrorCode.DataError, "Error during duplicate check ", e);
-
-                       Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_INTERNAL_SERVER_ERROR,
-                                       MsoException.ServiceException, e.getMessage(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR, null);
-
-                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError,
-                                       "Error during duplicate check");
-                       msoLogger.debug("End of the transaction, the final response is: " + (String) response.getEntity());
+                       msoLogger.debug(END_OF_THE_TRANSACTION + (String) response.getEntity());
                        return response;
-               }
-
-               if (dup != null) {
-                       // Found the duplicate record. Return the appropriate error.
-                       String instance = null;
-                       if (instanceName != null) {
-                               instance = instanceName;
-                       } else {
-                               instance = instanceIdMap.get(requestScope + "InstanceId");
-                       }
-                       String dupMessage = "Error: Locked instance - This " + requestScope + " (" + instance + ") "
-                                       + "already has a request being worked with a status of " + dup.getProgress() + " (ServiceId - "
-                                       + dup.getServiceId() + "). The existing request must finish or be cleaned up before proceeding.";
+               }               
 
-                       Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_CONFLICT,
-                                       MsoException.ServiceException, dupMessage, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR, null);
-
-                       msoLogger.warn(MessageEnum.APIH_DUPLICATE_FOUND, dupMessage, "", "", MsoLogger.ErrorCode.SchemaError,
-                                       "Duplicate request - Subscriber already has a request for this service");
-                       
-                       
-                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.Conflict,
-                                       dupMessage);
-                       msoLogger.debug("End of the transaction, the final response is: " + (String) response.getEntity());
-                       createOperationStatusRecordForError(action, requestId);
-                       return response;
-               }
-               
                CatalogDatabase db = null;
                RecipeLookupResult recipeLookupResult = null;
                try {
@@ -840,7 +718,6 @@ public class E2EServiceInstances {
                        msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError,
                                        "Exception while communciate with DB");
                        msoLogger.debug(END_OF_THE_TRANSACTION + (String) response.getEntity());
-                       createOperationStatusRecordForError(action, requestId);
                        return response;
                } finally {
                        closeCatalogDB(db);
@@ -857,44 +734,26 @@ public class E2EServiceInstances {
                        msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DataNotFound,
                                        "No recipe found in DB");
                        msoLogger.debug(END_OF_THE_TRANSACTION + (String) response.getEntity());
-                       createOperationStatusRecordForError(action, requestId);
                        return response;
                }
-//             try {
-//                     msoRequest.createRequestRecord(Status.PENDING, action);
-//                     //createOperationStatusRecord(action, requestId);
-//             } catch (Exception e) {
-//                     msoLogger.error(MessageEnum.APIH_DB_ACCESS_EXC_REASON, "Exception while creating record in DB", "", "",
-//                                     MsoLogger.ErrorCode.SchemaError, "Exception while creating record in DB", e);
-//                     msoRequest.setStatus(org.openecomp.mso.apihandlerinfra.vnfbeans.RequestStatusType.FAILED);
-//                     Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_INTERNAL_SERVER_ERROR,
-//                                     MsoException.ServiceException, "Exception while creating record in DB " + e.getMessage(),
-//                                     ErrorNumbers.SVC_BAD_PARAMETER, null);
-//                     msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError,
-//                                     "Exception while creating record in DB");
-//                     msoLogger.debug("End of the transaction, the final response is: " + (String) response.getEntity());
-//                     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(),
@@ -912,8 +771,7 @@ public class E2EServiceInstances {
                                        MsoLogger.ErrorCode.AvailabilityError, "Exception while communicate with BPMN engine");
                        msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.CommunicationError,
                                        "Exception while communicate with BPMN engine");
-                       msoLogger.debug("End of the transaction, the final response is: " + (String) resp.getEntity());
-                       createOperationStatusRecordForError(action, requestId);
+                       msoLogger.debug(END_OF_THE_TRANSACTION + (String) resp.getEntity());
                        return resp;
                }
 
@@ -937,7 +795,7 @@ public class E2EServiceInstances {
    private Response scaleE2EserviceInstances(String requestJSON,
                                                Action action, HashMap<String, String> instanceIdMap, String version) {
 
-        String requestId = instanceIdMap.get("serviceId");
+        String requestId = UUIDChecker.generateUUID(msoLogger);
         long startTime = System.currentTimeMillis();
         msoLogger.debug("requestId is: " + requestId);
                E2EServiceInstanceScaleRequest e2eScaleReq = null;
@@ -964,9 +822,8 @@ public class E2EServiceInstances {
             msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR,
                     MsoLogger.ResponseCode.SchemaError,
                     "Mapping of request to JSON object failed");
-            msoLogger.debug("End of the transaction, the final response is: "
+            msoLogger.debug(END_OF_THE_TRANSACTION
                     + (String) response.getEntity());
-            createOperationStatusRecordForError(action, requestId);
             return response;
         }
 
@@ -1016,7 +873,6 @@ public class E2EServiceInstances {
                     "No recipe found in DB");
             msoLogger.debug(END_OF_THE_TRANSACTION
                     + (String) response.getEntity());
-            createOperationStatusRecordForError(action, requestId);
             return response;
         }
 
@@ -1024,8 +880,6 @@ public class E2EServiceInstances {
         HttpResponse response = null;
 
         long subStartTime = System.currentTimeMillis();
-        // String sirRequestJson = mapReqJsonToSvcInstReq(e2eSir, requestJSON);
-
         try {
             requestClient = RequestClientFactory.getRequestClient(
                     recipeLookupResult.getOrchestrationURI(),
@@ -1034,18 +888,18 @@ public class E2EServiceInstances {
             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,
@@ -1071,9 +925,8 @@ public class E2EServiceInstances {
             msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR,
                     MsoLogger.ResponseCode.CommunicationError,
                     "Exception while communicate with BPMN engine");
-            msoLogger.debug("End of the transaction, the final response is: "
+            msoLogger.debug(END_OF_THE_TRANSACTION
                     + (String) resp.getEntity());
-            createOperationStatusRecordForError(action, requestId);
             return resp;
         }
 
@@ -1090,7 +943,6 @@ public class E2EServiceInstances {
                     MsoLogger.ResponseCode.InternalError,
                     "Null response from BPMN");
             msoLogger.debug(END_OF_THE_TRANSACTION + (String) resp.getEntity());
-            createOperationStatusRecordForError(action, requestId);
             return resp;
         }
 
@@ -1114,27 +966,8 @@ public class E2EServiceInstances {
                        HashMap<String, String> instanceIdMap) {
                // BPMN accepted the request, the request is in progress
                if (bpelStatus == HttpStatus.SC_ACCEPTED) {
-                       String camundaJSONResponseBody = respHandler.getResponseBody();
+                       String camundaJSONResponseBody = respHandler.getContent();
                        msoLogger.debug("Received from Camunda: " + camundaJSONResponseBody);
-
-                       // currently only for delete case we update the status here
-                       if (action == Action.deleteInstance) {
-                               ObjectMapper mapper = new ObjectMapper();
-                               try {
-                                       DelE2ESvcResp jo = mapper.readValue(
-                                                       camundaJSONResponseBody, DelE2ESvcResp.class);
-                                       String operationId = jo.getOperationId();
-                               this.createOperationStatusRecord("DELETE", serviceId,
-                                                               operationId);
-                               } catch (Exception ex) {
-                                       msoLogger.error(MessageEnum.APIH_BPEL_RESPONSE_ERROR,
-                                                       requestClient.getUrl(), "", "",
-                                                       MsoLogger.ErrorCode.BusinessProcesssError,
-                                                       "Response from BPEL engine is failed with HTTP Status="
-                                                                       + bpelStatus);
-                               }
-                       }
-                       
                        msoLogger.recordAuditEvent(startTime,
                                        MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
                                        "BPMN accepted the request, the request is in progress");
@@ -1144,7 +977,7 @@ public class E2EServiceInstances {
                } else {
                        List<String> variables = new ArrayList<>();
                        variables.add(bpelStatus + "");
-                       String camundaJSONResponseBody = respHandler.getResponseBody();
+                       String camundaJSONResponseBody = respHandler.getContent();
                        if (camundaJSONResponseBody != null
                                        && !camundaJSONResponseBody.isEmpty()) {
                                Response resp = msoRequest.buildServiceErrorResponse(
@@ -1353,103 +1186,4 @@ public class E2EServiceInstances {
                return returnString;
        }
 
-       private void createOperationStatusRecordForError(Action action,
-                       String serviceId) throws MsoDatabaseException {
-
-               AbstractSessionFactoryManager requestsDbSessionFactoryManager = new RequestsDbSessionFactoryManager();
-
-               Session session = null;
-               try {
-
-                       session = requestsDbSessionFactoryManager.getSessionFactory()
-                                       .openSession();
-                       session.beginTransaction();
-
-                       OperationStatus os = new OperationStatus();
-                       os.setOperation(action.name());
-                       os.setOperationContent("");
-                       os.setOperationId("");
-                       os.setProgress("100");
-                       os.setReason("");
-                       os.setResult("error");
-                       os.setServiceId(serviceId);
-                       os.setUserId("");
-                       Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
-                       Timestamp endTimeStamp = new Timestamp(System.currentTimeMillis());
-                       os.setFinishedAt(endTimeStamp);
-                       os.setOperateAt(startTimeStamp);
-
-                       session.save(os);
-                       session.getTransaction().commit();
-
-               } catch (Exception e) {
-                       msoLogger.error(MessageEnum.APIH_DB_INSERT_EXC, "", "",
-                                       MsoLogger.ErrorCode.DataError,
-                                       "Exception when creation record request in Operation", e);
-                       throw new MsoDatabaseException(
-                                       "Data did inserted in Operatus Status Table for failure", e);
-               } finally {
-                       if (null != session) {
-                               session.close();
-                       }
-               }
-       }
-
-       private void createOperationStatusRecord(String actionNm, String serviceId,
-                       String operationId) throws MsoDatabaseException {
-
-               AbstractSessionFactoryManager requestsDbSessionFactoryManager = new RequestsDbSessionFactoryManager();
-
-               Session session = null;
-               try {
-
-                       session = requestsDbSessionFactoryManager.getSessionFactory()
-                                       .openSession();
-                       session.beginTransaction();
-
-                       OperationStatus os = new OperationStatus();
-                       os.setOperation(actionNm);
-                       os.setOperationContent("");
-                       os.setOperationId(operationId);
-                       os.setProgress("0");
-                       os.setReason("");
-                       os.setResult("processing");
-                       os.setServiceId(serviceId);
-                       // TODO : to be updated...
-                       os.setUserId("");
-                       Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
-                       Timestamp endTimeStamp = new Timestamp(System.currentTimeMillis());
-                       os.setFinishedAt(endTimeStamp);
-                       os.setOperateAt(startTimeStamp);
-
-                       session.save(os);
-                       session.getTransaction().commit();
-
-               } catch (Exception e) {
-                       msoLogger.error(MessageEnum.APIH_DB_INSERT_EXC, "", "",
-                                       MsoLogger.ErrorCode.DataError,
-                                       "Exception when creation record request in Operation", e);
-                       throw new MsoDatabaseException(
-                                       "Data did inserted in Operatus Status Table", e);
-               } finally {
-                       if (null != session) {
-                               session.close();
-                       }
-               }
-       }
-
-       private OperationStatus chkSvcInstOperStatusbySvcId(String serviceId) {
-               OperationStatus svcInstanceOperStatus = (RequestsDatabase.getInstance())
-                               .getOperationStatusByServiceId(serviceId);
-
-               return svcInstanceOperStatus;
-       }
-
-       private OperationStatus chkDuplicateServiceNameInOperStatus(
-                       String serviceName) {
-               OperationStatus dupServiceName = (RequestsDatabase.getInstance())
-                               .getOperationStatusByServiceName(serviceName);
-
-               return dupServiceName;
-       }
 }