import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import org.onap.so.logger.LoggingAnchor;
 import org.json.JSONArray;
 import org.onap.aai.domain.yang.Vserver;
 import org.onap.appc.client.lcm.model.Action;
 import org.onap.so.bpmn.common.BuildingBlockExecution;
+import org.onap.so.bpmn.core.json.JsonUtils;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
 import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock;
                 String pay = requestParameters.getPayload();
                 if (pay != null) {
                     payload = Optional.of(pay);
+                } else {
+                    String payloadFromUserParams =
+                            buildPayloadFromUserParams(gBBInput.getRequestContext().getUserParams());
+                    payload = Optional.of(payloadFromUserParams);
                 }
             }
             logger.debug("Running APP-C action: {}", action.toString());
         return payloadInfo;
     }
 
+    protected String buildPayloadFromUserParams(Map<String, Object> userParams) {
+        if (userParams == null || userParams.size() == 0) {
+            return null;
+        }
+
+        String payload = "{}";
+        for (Map.Entry<String, Object> entry : userParams.entrySet()) {
+            payload = JsonUtils.addJsonValue(payload, entry.getKey(), (String) entry.getValue());
+        }
+
+        payload = payload.replaceAll("\"", "\\\\\"");
+        payload = payload.replaceAll("\n", "");
+        return payload;
+    }
+
     protected void getVserversForAppc(BuildingBlockExecution execution, GenericVnf vnf) throws Exception {
         AAIResultWrapper aaiRW = aaiVnfResources.queryVnfWrapperById(vnf);
 
 
 import static org.mockito.Mockito.when;
 import java.nio.file.Files;
 import java.nio.file.Paths;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Optional;
 import org.junit.Test;
 import org.mockito.InjectMocks;
         assertEquals(vmIdList, expectedVmIdList);
     }
 
+    @Test
+    public void testUserParams() throws Exception {
+        Map<String, Object> userParams = new HashMap<String, Object>();
+        userParams.put("existing_software_version", "3.1");
+        userParams.put("new_software_version", "3.2");
+        userParams.put("operations_timeout", "150000");
+
+        String actualPayload = appcRunTasks.buildPayloadFromUserParams(userParams);
+        System.out.println(actualPayload);
+        String expectedPayload =
+                "{\\\"operations_timeout\\\":\\\"150000\\\",\\\"existing_software_version\\\":\\\"3.1\\\",\\\"new_software_version\\\":\\\"3.2\\\"}";
+        assertEquals(expectedPayload, actualPayload.replaceAll(" ", ""));
+
+    }
+
     private void mockReferenceResponse() {
         ControllerSelectionReference reference = new ControllerSelectionReference();
         reference.setControllerName("TEST-CONTROLLER-NAME");