diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupMapperLayer.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupMapperLayer.java
index d463fde..0f52c96 100644
--- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupMapperLayer.java
+++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupMapperLayer.java
@@ -22,6 +22,7 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -84,6 +85,8 @@
 
 @Component("BBInputSetupMapperLayer")
 public class BBInputSetupMapperLayer {
+	private static final String USER_PARAM_NAME_KEY = "name";
+    private static final String USER_PARAM_VALUE_KEY = "value";
 
 	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL,
 			BBInputSetupMapperLayer.class);
@@ -332,6 +335,7 @@
 		if (null != requestParameters) {
 			context.setSubscriptionServiceType(requestParameters.getSubscriptionServiceType());
 			context.setRequestParameters(this.mapRequestParameters(requestDetails.getRequestParameters()));
+			context.setUserParams(this.mapNameValueUserParams(requestDetails.getRequestParameters()));
 		}
 		return context;
 	}
@@ -344,6 +348,20 @@
 		requestParams.setPayload(requestParameters.getPayload());
 		return requestParams;
 	}
+	
+	protected HashMap<String,String> mapNameValueUserParams(org.onap.so.serviceinstancebeans.RequestParameters requestParameters) {		
+		HashMap<String,String> userParamsResult = new HashMap<String,String>();
+		if (requestParameters.getUserParams() != null) {
+			List<Map<String, Object>> userParams = requestParameters.getUserParams();
+			for (Map<String, Object> userParamsMap : userParams) {
+				if ( userParamsMap.containsKey(USER_PARAM_NAME_KEY) && (userParamsMap.get(USER_PARAM_NAME_KEY) instanceof String)
+						&& userParamsMap.containsKey(USER_PARAM_VALUE_KEY) && (userParamsMap.get(USER_PARAM_VALUE_KEY) instanceof String)) {
+					userParamsResult.put((String) userParamsMap.get(USER_PARAM_NAME_KEY), (String) userParamsMap.get(USER_PARAM_VALUE_KEY));
+				}
+			}
+		}
+		return userParamsResult;
+	}
 
 	protected OrchestrationContext mapOrchestrationContext(RequestDetails requestDetails) {
 		OrchestrationContext context = new OrchestrationContext();
diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupMapperLayerTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupMapperLayerTest.java
index 94dbbf4..1babac6 100644
--- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupMapperLayerTest.java
+++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupMapperLayerTest.java
@@ -23,6 +23,8 @@
 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
 import static org.hamcrest.CoreMatchers.equalTo;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
 import java.io.File;
 import java.io.IOException;
@@ -33,7 +35,6 @@
 import java.util.Map;
 
 import org.junit.Test;
-import org.mockito.InjectMocks;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
@@ -636,4 +637,20 @@
 
 		assertThat(actual, sameBeanAs(expected));
 	}
+	
+	@Test
+	public void testMapNameValueUserParams() throws IOException {		
+		RequestDetails requestDetails = mapper.readValue(new File(RESOURCE_PATH + "RequestDetailsInput_mapReqContext.json"), RequestDetails.class);
+		HashMap<String,String> actual = bbInputSetupMapperLayer.mapNameValueUserParams(requestDetails.getRequestParameters());
+
+		assertTrue(actual.containsKey("name1"));
+		assertTrue(actual.containsValue("value1"));
+		assertTrue(actual.get("name1").equals("value1"));
+		assertTrue(actual.containsKey("name2"));
+		assertTrue(actual.containsValue("value2"));
+		assertTrue(actual.get("name2").equals("value2"));		
+		assertFalse(actual.containsKey("ignore"));
+		assertFalse(actual.containsValue("ignore"));		
+	}
+	
 }
diff --git a/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/GeneralBuildingBlockCMExpected.json b/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/GeneralBuildingBlockCMExpected.json
index 8640c2e..a53ed4d 100644
--- a/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/GeneralBuildingBlockCMExpected.json
+++ b/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/GeneralBuildingBlockCMExpected.json
@@ -1,6 +1,7 @@
 {
   "requestContext": {
     "source": "VID",
+    "user-params": {},
     "mso-request-id": "requestId",
     "action": "createInstance",
     "requestParameters": {
diff --git a/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/GeneralBuildingBlockExpected.json b/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/GeneralBuildingBlockExpected.json
index cf65143..926bf2c 100644
--- a/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/GeneralBuildingBlockExpected.json
+++ b/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/GeneralBuildingBlockExpected.json
@@ -5,11 +5,28 @@
 		"requestor-id": "requestorId",
 		"mso-request-id": "requestId",
 		"subscription-service-type": "subscriptionServiceType",
-		"user-params": null,
+		"user-params": {
+					"name1": "value1",
+					"name2": "value2"
+				},
 		"action": "createInstance",
 		"callback-url": "callbackURL",
 		"requestParameters": {
-			"subscriptionServiceType": "subscriptionServiceType"
+			"subscriptionServiceType": "subscriptionServiceType",
+			"userParams": [
+					{
+						"name": "name1",
+						"value": "value1"
+					},
+					{
+						"name": "name2",
+						"value": "value2"
+					},
+					{
+						"ignore": "false",
+						"skip":	 "ignore"
+					}
+			]	
 		}
 	},
 	"orchContext": {
diff --git a/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/RequestContextExpected.json b/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/RequestContextExpected.json
index 6f82a9d..dfc6d4f 100644
--- a/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/RequestContextExpected.json
+++ b/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/RequestContextExpected.json
@@ -2,11 +2,29 @@
 	"product-family-id": "productFamilyId",
 	"source": "source",
 	"requestor-id": "requestorId",
-	"subscription-service-type": "subscriptionServiceType",
-	"user-params": null,
+	"subscription-service-type": "subscriptionServiceType",	
 	"action": null,
 	"callback-url": "callbackURL",
+	"user-params": {
+					"name1": "value1",
+					"name2": "value2"
+				},
 	"requestParameters": {
-		"subscriptionServiceType": "subscriptionServiceType"
+		"subscriptionServiceType": "subscriptionServiceType",
+		"userParams": [
+					{
+						"name": "name1",
+						"value": "value1"
+					},
+					{
+						"name": "name2",
+						"value": "value2"
+					},
+					{
+						"ignore": "false",
+						"skip":	 "ignore"
+					}
+		]	
 	}
+	
 }
diff --git a/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/RequestDetailsInput_mapReqContext.json b/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/RequestDetailsInput_mapReqContext.json
index e918751..7386828 100644
--- a/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/RequestDetailsInput_mapReqContext.json
+++ b/bpmn/MSOCommonBPMN/src/test/resources/__files/ExecuteBuildingBlock/RequestDetailsInput_mapReqContext.json
@@ -7,7 +7,22 @@
 		"requestorId": "requestorId"
 	},
 	"requestParameters": {
-		"subscriptionServiceType": "subscriptionServiceType"
+		"subscriptionServiceType": "subscriptionServiceType",
+		"userParams": [
+					{
+						"name": "name1",
+						"value": "value1"
+					},
+					{
+						"name": "name2",
+						"value": "value2"
+					},
+					{
+						"ignore": "false",
+						"skip":	 "ignore"
+					}
+		]	
+		
 	}
 }
 
diff --git a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy
index 82e27ec..0f9a0ad 100644
--- a/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy
+++ b/bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/UpdateVfModuleVolume.groovy
@@ -29,10 +29,13 @@
 import org.onap.so.bpmn.common.scripts.VfModuleBase
 import org.onap.so.bpmn.core.UrnPropertiesReader;
 import org.onap.so.bpmn.core.WorkflowException
+import org.onap.so.client.aai.AAIObjectType
+import org.onap.so.client.aai.entities.uri.AAIResourceUri
+import org.onap.so.client.aai.entities.uri.AAIUriFactory
+import org.onap.so.constants.Defaults
 import org.onap.so.logger.MessageEnum
 import org.onap.so.logger.MsoLogger
 import org.onap.so.rest.APIResponse
-import org.springframework.web.util.UriUtils
 
 class UpdateVfModuleVolume extends VfModuleBase {
 	private static final MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.BPEL, UpdateVfModuleVolume.class);
@@ -172,14 +175,15 @@
 		try {
 			def volumeGroupId = execution.getVariable('UPDVfModVol_volumeGroupId')
 			def aicCloudRegion = execution.getVariable('UPDVfModVol_aicCloudRegion')
-			def endPoint = UrnPropertiesReader.getVariable("aai.endpoint", execution) +
-				'/aai/v7/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/' + UriUtils.encode(aicCloudRegion, "UTF-8") +
-				'/volume-groups/volume-group/' + UriUtils.encode(volumeGroupId, "UTF-8")
+			
+			AaiUtil aaiUtil = new AaiUtil(this)
+			AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.VOLUME_GROUP, Defaults.CLOUD_OWNER.toString(), aicCloudRegion, volumeGroupId)
+			String endPoint = aaiUtil.createAaiUri(uri)
+			
 
 			msoLogger.debug('Sending GET to AAI endpoint \'' + endPoint + '\'')
 			msoLogger.debug("UpdateVfModuleVolume sending GET for quering AAI endpoint: " + endPoint)
 
-			AaiUtil aaiUtil = new AaiUtil(this)
 			APIResponse response = aaiUtil.executeAAIGetCall(execution, endPoint)
 			def int statusCode = response.getStatusCode()
 			def responseData = response.getResponseBodyAsString()
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/sdnc/mapper/VfModuleTopologyOperationRequestMapperTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/sdnc/mapper/VfModuleTopologyOperationRequestMapperTest.java
index 04397c4..f492ba3 100644
--- a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/sdnc/mapper/VfModuleTopologyOperationRequestMapperTest.java
+++ b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/client/sdnc/mapper/VfModuleTopologyOperationRequestMapperTest.java
@@ -27,7 +27,10 @@
 
 import java.nio.file.Files;
 import java.nio.file.Paths;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 import org.junit.Rule;
 import org.junit.Test;
@@ -40,6 +43,7 @@
 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
+import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestParameters;
 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoGenericVnf;
 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoServiceInstance;
 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
@@ -80,8 +84,8 @@
 		customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
 		//
 		RequestContext requestContext = new RequestContext();
-		HashMap<String, String> userParams = new HashMap<String, String>();
-		userParams.put("key1", "value1");
+		HashMap<String,String> userParams = new HashMap<String,String>();
+		userParams.put("key1", "value1");		
 		requestContext.setUserParams(userParams);
 		requestContext.setProductFamilyId("productFamilyId");
 
@@ -108,7 +112,7 @@
 		modelInfoVfModule.setModelCustomizationUUID("vfModuleModelCustomizationUuid");
 		vfModule.setModelInfoVfModule(modelInfoVfModule);
 		HashMap<String, String> cloudParams = new HashMap<String, String>();
-		userParams.put("key2", "value2");
+		cloudParams.put("key2", "value2");
 		vfModule.setCloudParams(cloudParams);
 
 		VolumeGroup volumeGroup = new VolumeGroup();
@@ -189,9 +193,14 @@
 		customer.getServiceSubscription().getServiceInstances().add(serviceInstance);
 		//
 		RequestContext requestContext = new RequestContext();
-		HashMap<String, String> userParams = new HashMap<String, String>();
-		userParams.put("key1", "value1");
-		requestContext.setUserParams(userParams);
+		RequestParameters requestParameters = new RequestParameters();
+		HashMap<String,Object> userParams1 = new HashMap<String,Object>();
+		userParams1.put("key1", "value1");
+		List<Map<String,Object>> userParams = new ArrayList<Map<String,Object>>();
+		userParams.add(userParams1);
+		
+		requestParameters.setUserParams(userParams);
+		requestContext.setRequestParameters(requestParameters);
 		requestContext.setProductFamilyId("productFamilyId");
 
 		GenericVnf vnf = new GenericVnf();
@@ -225,7 +234,7 @@
 
 		assertNull(vfModuleSDNCrequest.getServiceInformation().getOnapModelInformation().getModelCustomizationUuid());
 		assertEquals("vnfModelCustomizationUuid", vfModuleSDNCrequest.getVnfInformation().getOnapModelInformation().getModelCustomizationUuid());
-		assertEquals("vfModuleModelCustomizationUuid", vfModuleSDNCrequest.getVfModuleInformation().getOnapModelInformation().getModelCustomizationUuid());
+		assertEquals("vfModuleModelCustomizationUuid", vfModuleSDNCrequest.getVfModuleInformation().getOnapModelInformation().getModelCustomizationUuid());	
 	}
 	
 	@Test
diff --git a/common/src/main/java/org/onap/so/client/aai/entities/uri/AAISimpleUri.java b/common/src/main/java/org/onap/so/client/aai/entities/uri/AAISimpleUri.java
index 9b5acc5..76413c2 100644
--- a/common/src/main/java/org/onap/so/client/aai/entities/uri/AAISimpleUri.java
+++ b/common/src/main/java/org/onap/so/client/aai/entities/uri/AAISimpleUri.java
@@ -34,6 +34,8 @@
 
 public class AAISimpleUri extends SimpleUri implements AAIResourceUri {
 	
+	private static final long serialVersionUID = -6397024057188453229L;
+
 	protected AAISimpleUri(AAIObjectType type, Object... values) {
 		super(type, values);
 		
diff --git a/common/src/main/java/org/onap/so/client/aai/entities/uri/AllottedResourceLookupUri.java b/common/src/main/java/org/onap/so/client/aai/entities/uri/AllottedResourceLookupUri.java
index 091d0c9..3294712 100644
--- a/common/src/main/java/org/onap/so/client/aai/entities/uri/AllottedResourceLookupUri.java
+++ b/common/src/main/java/org/onap/so/client/aai/entities/uri/AllottedResourceLookupUri.java
@@ -30,6 +30,7 @@
 
 public class AllottedResourceLookupUri extends HttpLookupUri {
 
+	private static final long serialVersionUID = -9212594383876793188L;
 	protected AllottedResourceLookupUri(Object... values) {
 		super(AAIObjectType.ALLOTTED_RESOURCE, values);
 	}
diff --git a/common/src/main/java/org/onap/so/client/aai/entities/uri/NodesUri.java b/common/src/main/java/org/onap/so/client/aai/entities/uri/NodesUri.java
index 3c9ca0e..6ffc6ec 100644
--- a/common/src/main/java/org/onap/so/client/aai/entities/uri/NodesUri.java
+++ b/common/src/main/java/org/onap/so/client/aai/entities/uri/NodesUri.java
@@ -29,6 +29,8 @@
 
 public class NodesUri extends AAISimpleUri {
 
+	private static final long serialVersionUID = 8818689895730182042L;
+
 	protected NodesUri(AAIObjectType type, Object... values) {
 		super(type, values);
 	}
diff --git a/common/src/main/java/org/onap/so/client/aai/entities/uri/ServiceInstanceUri.java b/common/src/main/java/org/onap/so/client/aai/entities/uri/ServiceInstanceUri.java
index 00a213b..324193d 100644
--- a/common/src/main/java/org/onap/so/client/aai/entities/uri/ServiceInstanceUri.java
+++ b/common/src/main/java/org/onap/so/client/aai/entities/uri/ServiceInstanceUri.java
@@ -30,6 +30,7 @@
 
 public class ServiceInstanceUri extends HttpLookupUri {
 
+	private static final long serialVersionUID = 2248914170527514548L;
 	protected ServiceInstanceUri(Object... values) {
 		super(AAIObjectType.SERVICE_INSTANCE, values);
 	}
diff --git a/common/src/main/java/org/onap/so/client/graphinventory/entities/uri/SimpleUri.java b/common/src/main/java/org/onap/so/client/graphinventory/entities/uri/SimpleUri.java
index 026f1c3..874b06e 100644
--- a/common/src/main/java/org/onap/so/client/graphinventory/entities/uri/SimpleUri.java
+++ b/common/src/main/java/org/onap/so/client/graphinventory/entities/uri/SimpleUri.java
@@ -20,6 +20,10 @@
 
 package org.onap.so.client.graphinventory.entities.uri;
 
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.Serializable;
 import java.io.UnsupportedEncodingException;
 import java.net.URI;
 import java.nio.charset.StandardCharsets;
@@ -29,18 +33,19 @@
 import javax.ws.rs.core.UriBuilder;
 
 import org.apache.commons.lang3.builder.HashCodeBuilder;
-import org.onap.so.client.graphinventory.Format;
 import org.onap.so.client.aai.entities.uri.AAIUri;
-import org.onap.so.client.graphinventory.entities.uri.Depth;
-import org.onap.so.client.graphinventory.entities.uri.parsers.UriParser;
-import org.onap.so.client.graphinventory.entities.uri.parsers.UriParserSpringImpl;
+import org.onap.so.client.graphinventory.Format;
 import org.onap.so.client.graphinventory.GraphInventoryObjectPlurals;
 import org.onap.so.client.graphinventory.GraphInventoryObjectType;
+import org.onap.so.client.graphinventory.entities.uri.parsers.UriParser;
+import org.onap.so.client.graphinventory.entities.uri.parsers.UriParserSpringImpl;
 import org.springframework.web.util.UriUtils;
 
-public class SimpleUri implements GraphInventoryResourceUri {
+public class SimpleUri implements GraphInventoryResourceUri, Serializable {
 
-	protected UriBuilder internalURI;
+	private static final long serialVersionUID = -337701171277616439L;
+	
+	protected transient UriBuilder internalURI;
 	protected final static String relationshipAPI = "/relationship-list/relationship";
 	protected final static String relatedTo = "/related-to";
 	protected final Object[] values;
@@ -89,6 +94,9 @@
 		this.values = childValues;
 	}
 	
+	protected void setInternalURI(UriBuilder builder) {
+		this.internalURI = builder;
+	}
 	@Override
 	public SimpleUri relationshipAPI() {
 		this.internalURI = internalURI.path(relationshipAPI);
@@ -236,4 +244,14 @@
 		return type.uriTemplate();
 	}
 	
+	private void writeObject(ObjectOutputStream oos) throws IOException {
+		oos.defaultWriteObject();
+		oos.writeUTF(this.internalURI.toTemplate());
+	}
+	
+	private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
+		 ois.defaultReadObject();
+		 String uri = ois.readUTF();
+		 this.setInternalURI(UriBuilder.fromUri(uri));
+	}
 }
diff --git a/common/src/main/java/org/onap/so/client/sdno/SDNOValidatorImpl.java b/common/src/main/java/org/onap/so/client/sdno/SDNOValidatorImpl.java
index be79c8b..b11003e 100644
--- a/common/src/main/java/org/onap/so/client/sdno/SDNOValidatorImpl.java
+++ b/common/src/main/java/org/onap/so/client/sdno/SDNOValidatorImpl.java
@@ -47,6 +47,7 @@
 public class SDNOValidatorImpl implements SDNOValidator {
 
 	private final static String clientName = "MSO";
+	private final static String HEALTH_DIAGNOSTIC_CODE_DEFAULT = "default";
 
 	@Override
 	public boolean healthDiagnostic(String vnfId, UUID uuid, String requestingUserId) throws IOException, Exception {
@@ -99,6 +100,7 @@
 		request.setRequestNodeIp(vnf.getIpv4OamAddress()); //generic-vnf oam ip
 		request.setRequestUserId(requestingUserId); //mech id?
 		request.setRequestId(uuid.toString()); //something to identify this request by for polling
+		request.setHealthDiagnosticCode(HEALTH_DIAGNOSTIC_CODE_DEFAULT);
 		
 		input.setRequestHealthDiagnostic(request);
 		
diff --git a/common/src/test/java/org/onap/so/client/aai/entities/uri/AAISimpleUriTest.java b/common/src/test/java/org/onap/so/client/aai/entities/uri/AAISimpleUriTest.java
index fcf054f..2a0e9df 100644
--- a/common/src/test/java/org/onap/so/client/aai/entities/uri/AAISimpleUriTest.java
+++ b/common/src/test/java/org/onap/so/client/aai/entities/uri/AAISimpleUriTest.java
@@ -21,15 +21,24 @@
 package org.onap.so.client.aai.entities.uri;
 
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.collection.IsIterableContainingInOrder.contains;
 import static org.hamcrest.collection.IsEmptyCollection.empty;
+import static org.hamcrest.collection.IsIterableContainingInOrder.contains;
 import static org.junit.Assert.assertEquals;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
 import java.util.Map;
 
 import org.junit.Test;
 import org.onap.so.client.aai.AAIObjectPlurals;
 import org.onap.so.client.aai.AAIObjectType;
+import org.onap.so.client.graphinventory.entities.uri.Depth;
+import org.onap.so.client.graphinventory.entities.uri.SimpleUri;
 
 public class AAISimpleUriTest {
 
@@ -83,4 +92,31 @@
 		
 		assertEquals("my value", keys.get("service-type"));
 	}
+	
+	@Test
+	public void serializeTest() throws IOException, ClassNotFoundException {
+		AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, "test1");
+		
+		uri.depth(Depth.ONE);
+		uri.limit(1);
+		ByteArrayOutputStream bos = new ByteArrayOutputStream();
+
+	    ObjectOutputStream objectOutputStream 
+	      = new ObjectOutputStream(bos);
+	    objectOutputStream.writeObject(uri);
+	    objectOutputStream.flush();
+	    objectOutputStream.close();
+	    
+	    ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
+	   
+	    ObjectInputStream objectInputStream 
+	      = new ObjectInputStream(bis);
+	    AAIResourceUri e2 = (AAIResourceUri) objectInputStream.readObject();
+	    objectInputStream.close();
+	    
+	    uri.queryParam("test", "value");
+	    e2.queryParam("test", "value");
+
+	    assertEquals(e2.build().toString(), uri.build().toString());
+	}
 }
diff --git a/common/src/test/java/org/onap/so/constants/DefaultsTest.java b/common/src/test/java/org/onap/so/constants/DefaultsTest.java
index 1bcee07..6383d0e 100644
--- a/common/src/test/java/org/onap/so/constants/DefaultsTest.java
+++ b/common/src/test/java/org/onap/so/constants/DefaultsTest.java
@@ -41,6 +41,6 @@
 	@Test
 	public void checkValue() {
 		
-		assertEquals("CloudOwner", Defaults.CLOUD_OWNER.toString());
+		assertEquals("my-custom-owner", Defaults.CLOUD_OWNER.toString());
 	}
 }
diff --git a/common/src/test/resources/application-test.yaml b/common/src/test/resources/application-test.yaml
index cf386cb..1a3e97c 100644
--- a/common/src/test/resources/application-test.yaml
+++ b/common/src/test/resources/application-test.yaml
@@ -1,4 +1,4 @@
 org:
   onap:
     so:
-      cloud-owner: CloudOwner
\ No newline at end of file
+      cloud-owner: my-custom-owner
\ No newline at end of file
