Fix Json parse issues in AN allocate NSSMF workflow 73/114773/3
authorReshmasree <reshmasree.chamarthi2@wipro.com>
Tue, 10 Nov 2020 17:10:45 +0000 (17:10 +0000)
committerReshmasree <reshmasree.chamarthi2@wipro.com>
Fri, 20 Nov 2020 06:07:56 +0000 (06:07 +0000)
Issue-ID: SO-3374
Signed-off-by: Reshmasree <reshmasree.chamarthi2@wipro.com>
Change-Id: Ia4c66ba5e92df63563bafd1273f1d930d55fcaeb

bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/OofUtils.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/AnNssmfutils.groovy
bpmn/so-bpmn-infrastructure-common/src/main/groovy/org/onap/so/bpmn/infrastructure/scripts/DoAllocateAccessNSSI.groovy

index 4eb9eed..c91316e 100644 (file)
@@ -50,7 +50,7 @@ import org.onap.so.db.catalog.beans.HomingInstance
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
 import com.google.gson.JsonObject
-
+import com.google.gson.JsonParser
 import com.fasterxml.jackson.databind.ObjectMapper
 
 class OofUtils {
@@ -596,6 +596,7 @@ String correlator = requestId
 String callbackUrl = UrnPropertiesReader.getVariable("mso.adapters.oof.callback.endpoint") + "/" + messageType + "/" + correlator
 ObjectMapper objectMapper = new ObjectMapper();
 String profileJson = objectMapper.writeValueAsString(profileInfo);
+JsonParser parser = new JsonParser()
 
 //Prepare requestInfo object
 JsonObject requestInfo = new JsonObject()
@@ -615,9 +616,11 @@ nsstInfo.addProperty("name", name)
 JsonObject json = new JsonObject()
 json.add("requestInfo", requestInfo)
 json.add("NSSTInfo", nsstInfo)
-json.addProperty("sliceProfile", profileJson)
+json.add("sliceProfile", (JsonObject) parser.parse(profileJson))
+
 return json.toString()
 }
+
 /**
 * Method to create NSI/NSSI termination request
 * (OOF response will be synchronous in G-Release)
index 4108cce..1d8de35 100644 (file)
@@ -37,6 +37,7 @@ import java.sql.Timestamp
 import java.util.List
 import static org.apache.commons.lang3.StringUtils.isBlank
 import com.google.gson.JsonObject
+import com.google.gson.JsonParser
 import com.fasterxml.jackson.databind.ObjectMapper
 import org.onap.aaiclient.client.aai.AAIObjectType
 import org.onap.aaiclient.client.aai.AAIResourcesClient
@@ -48,7 +49,6 @@ import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder.T
 import javax.ws.rs.NotFoundException
 import org.onap.so.beans.nsmf.AllocateTnNssi
 import org.onap.so.beans.nsmf.DeAllocateNssi
-import org.onap.so.beans.nsmf.EsrInfo
 import org.onap.so.beans.nsmf.ServiceInfo
 import org.onap.so.bpmn.core.UrnPropertiesReader
 import org.onap.aai.domain.yang.ServiceInstance
@@ -65,12 +65,11 @@ class AnNssmfUtils {
        JsonUtils jsonUtil = new JsonUtils()
        public String buildSelectRANNSSIRequest(String requestId, String messageType, String UUID,String invariantUUID,
                String name, Map<String, Object> profileInfo, List<String> nsstInfoList, JsonArray capabilitiesList, Boolean preferReuse){
-
+       JsonParser parser = new JsonParser()
        def transactionId = requestId
        logger.debug( "transactionId is: " + transactionId)
        String correlator = requestId
        String callbackUrl = UrnPropertiesReader.getVariable("mso.adapters.oof.callback.endpoint") + "/" + messageType + "/" + correlator
-       ObjectMapper objectMapper = new ObjectMapper();
        String profileJson = objectMapper.writeValueAsString(profileInfo);
        String nsstInfoListString = objectMapper.writeValueAsString(nsstInfoList);
        //Prepare requestInfo object
@@ -91,8 +90,8 @@ class AnNssmfUtils {
        JsonObject json = new JsonObject()
        json.add("requestInfo", requestInfo)
        json.add("NSTInfo", ranNsstInfo)
-       json.addProperty("serviceProfile", profileJson)
-       json.addProperty("NSSTInfo", nsstInfoListString)
+       json.add("serviceProfile", (JsonObject) parser.parse(profileJson))
+       //json.add("NSSTInfo", (JsonArray) parser.parse(nsstInfoListString))
        json.add("subnetCapabilities", capabilitiesList)
        json.addProperty("preferReuse", preferReuse)
 
@@ -100,29 +99,33 @@ class AnNssmfUtils {
 }
 
 public String buildCreateTNNSSMFSubnetCapabilityRequest() {
-       EsrInfo esrInfo = new EsrInfo()
-       esrInfo.setNetworkType("TN")
-       esrInfo.setVendor("ONAP")
+       JsonObject esrInfo = new JsonObject()
+       esrInfo.addProperty("networkType", "tn")
+       esrInfo.addProperty("vendor", "ONAP_internal")
 
        JsonArray subnetTypes = new JsonArray()
        subnetTypes.add("TN_FH")
        subnetTypes.add("TN_MH")
        JsonObject response = new JsonObject()
-       response.add("subnetCapabilityQuery", subnetTypes)
-       response.addProperty("esrInfo", objectMapper.writeValueAsString(esrInfo))
+       JsonObject subnetTypesObj = new JsonObject()
+       subnetTypesObj.add("subnetTypes", subnetTypes)
+       response.add("subnetCapabilityQuery", subnetTypesObj)
+       response.add("esrInfo", esrInfo)
        return response.toString()
 }
 
 public String buildCreateANNFNSSMFSubnetCapabilityRequest() {
-       EsrInfo esrInfo = new EsrInfo()
-       esrInfo.setNetworkType("AN")
-       esrInfo.setVendor("ONAP")
+       JsonObject esrInfo = new JsonObject()
+       esrInfo.addProperty("networkType", "an")
+       esrInfo.addProperty("vendor", "ONAP_internal")
 
        JsonArray subnetTypes = new JsonArray()
        subnetTypes.add("AN_NF")
        JsonObject response = new JsonObject()
-       response.add("subnetCapabilityQuery", subnetTypes)
-       response.addProperty("esrInfo", objectMapper.writeValueAsString(esrInfo))
+       JsonObject subnetTypesObj = new JsonObject()
+       subnetTypesObj.add("subnetTypes", subnetTypes)
+       response.add("subnetCapabilityQuery", subnetTypesObj)
+       response.add("esrInfo", esrInfo)
        return response.toString()
 }
 public void createDomainWiseSliceProfiles(List<String> ranConstituentSliceProfiles, DelegateExecution execution) {
@@ -190,16 +193,19 @@ public void createSliceProfilesInAai(DelegateExecution execution) {
        ANNF_sliceProfileInstance.setServiceType(serviceType)
        String serviceStatus = "deactivated"
        ANNF_sliceProfileInstance.setOrchestrationStatus(serviceStatus)
-       String serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "plmnIdList")
+       String serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "pLMNIdList")
        ANNF_sliceProfileInstance.setServiceInstanceLocationId(serviceInstanceLocationid)
        String serviceRole = "slice-profile-instance"
        ANNF_sliceProfileInstance.setServiceRole(serviceRole)
-       List<String> snssaiList = objectMapper.readValue(execution.getVariable("snssaiList"), List.class)
+        ArrayList<String> snssaiList = execution.getVariable("snssaiList")
        String snssai = snssaiList.get(0)
        ANNF_sliceProfileInstance.setEnvironmentContext(snssai)
        ANNF_sliceProfileInstance.setWorkloadContext("AN-NF")    
        ANNF_sliceProfileInstance.setSliceProfiles(ANNF_SliceProfiles)
-       logger.debug("completed ANNF sliceprofileinstance build "+ ANNF_sliceProfileInstance.toString())
+       String serviceFunctionAnnf = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "resourceSharingLevel")
+       ANNF_sliceProfileInstance.setServiceFunction(serviceFunctionAnnf)
+       logger.debug("completed ANNF sliceprofileinstance build : "+ ANNF_sliceProfileInstance.toString())
+       
        //TNFH slice profile instance creation
        TNFH_sliceProfileInstance.setServiceInstanceId(TNFH_sliceProfileInstanceId)
        sliceInstanceName = "sliceprofile_"+TNFH_sliceProfileId
@@ -207,13 +213,16 @@ public void createSliceProfilesInAai(DelegateExecution execution) {
        serviceType = jsonUtil.getJsonValue(execution.getVariable("tnFhSliceProfile"), "sST")
        TNFH_sliceProfileInstance.setServiceType(serviceType)
        TNFH_sliceProfileInstance.setOrchestrationStatus(serviceStatus)
-       serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("tnFhSliceProfile"), "plmnIdList")
+       serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("tnFhSliceProfile"), "pLMNIdList")
        TNFH_sliceProfileInstance.setServiceInstanceLocationId(serviceInstanceLocationid)
        TNFH_sliceProfileInstance.setServiceRole(serviceRole)
        TNFH_sliceProfileInstance.setEnvironmentContext(snssai)
        TNFH_sliceProfileInstance.setWorkloadContext("TN-FH")
        TNFH_sliceProfileInstance.setSliceProfiles(TNFH_SliceProfiles)
-       logger.debug("completed TNFH sliceprofileinstance build "+TNFH_sliceProfileInstance)
+       String serviceFunctionTnFH = jsonUtil.getJsonValue(execution.getVariable("tnFhSliceProfile"), "resourceSharingLevel")
+       TNFH_sliceProfileInstance.setServiceFunction(serviceFunctionTnFH)
+       logger.debug("completed TNFH sliceprofileinstance build : "+TNFH_sliceProfileInstance)
+       
        //TNMH slice profile instance creation
        TNMH_sliceProfileInstance.setServiceInstanceId(TNMH_sliceProfileInstanceId)
        sliceInstanceName = "sliceprofile_"+TNMH_sliceProfileId
@@ -221,13 +230,16 @@ public void createSliceProfilesInAai(DelegateExecution execution) {
        serviceType = jsonUtil.getJsonValue(execution.getVariable("tnMhSliceProfile"), "sST")
        TNMH_sliceProfileInstance.setServiceType(serviceType)
        TNMH_sliceProfileInstance.setOrchestrationStatus(serviceStatus)
-       serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("tnMhSliceProfile"), "plmnIdList")
+       serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("tnMhSliceProfile"), "pLMNIdList")
        TNMH_sliceProfileInstance.setServiceInstanceLocationId(serviceInstanceLocationid)
        TNMH_sliceProfileInstance.setServiceRole(serviceRole)
        TNMH_sliceProfileInstance.setEnvironmentContext(snssai)
        TNMH_sliceProfileInstance.setWorkloadContext("TN-MH")
        TNMH_sliceProfileInstance.setSliceProfiles(TNMH_SliceProfiles)
-       logger.debug("completed TNMH sliceprofileinstance build "+TNMH_sliceProfileInstance)
+       String serviceFunctionTnMH = jsonUtil.getJsonValue(execution.getVariable("tnMhSliceProfile"), "resourceSharingLevel")
+       TNMH_sliceProfileInstance.setServiceFunction(serviceFunctionTnMH)
+       logger.debug("completed TNMH sliceprofileinstance build : "+TNMH_sliceProfileInstance)
+       
        String msg = ""
        try {
 
@@ -261,12 +273,10 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe
                        result.setJitter(profile.get("jitter"))
                        result.setLatency(profile.get("latency"))
                        result.setResourceSharingLevel(profile.get("resourceSharingLevel"))
-                       result.setSNssai(profile.get("sNSSAI"))
                        result.setUeMobilityLevel(profile.get("uEMobilityLevel"))
                        result.setMaxNumberOfUEs(profile.get("maxNumberofUEs"))
                        result.setActivityFactor(profile.get("activityFactor"))
                        result.setCoverageAreaTAList(profile.get("coverageAreaTAList"))
-                       result.setCsAvailability(profile.get("cSAvailabilityTarget"))
                        result.setExpDataRateDL(profile.get("expDataRateDL"))
                        result.setExpDataRateUL(profile.get("expDataRateUL"))
                        result.setSurvivalTime(profile.get("survivalTime"))
@@ -280,7 +290,6 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe
                        result.setJitter(profile.get("jitter"))
                        result.setLatency(profile.get("latency"))
                        result.setResourceSharingLevel(profile.get("resourceSharingLevel"))
-                       result.setSNssai(profile.get("sNSSAI"))
                        result.setProfileId(execution.getVariable("TNFH_sliceProfileId"))
                        break
                case "TN-MH":
@@ -288,7 +297,6 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe
                        result.setJitter(profile.get("jitter"))
                        result.setLatency(profile.get("latency"))
                        result.setResourceSharingLevel(profile.get("resourceSharingLevel"))
-                       result.setSNssai(profile.get("sNSSAI"))
                        result.setProfileId(execution.getVariable("TNMH_sliceProfileId"))
                        break
                default:
@@ -307,13 +315,13 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe
         String msg
                AAIResourcesClient client = new AAIResourcesClient()
         try {
-            AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(instanceId).relationshipAPI())
+            AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business().customer(execution.getVariable("globalSubscriberId")).serviceSubscription(execution.getVariable("subscriptionServiceType")).serviceInstance(instanceId)).relationshipAPI()
             client.create(uri, relationship)
 
         } catch (BpmnError e) {
             throw e
         } catch (Exception ex) {
-            msg = "Exception in CreateCommunicationService.createRelationShipInAAI. " + ex.getMessage()
+            msg = "Exception in AN NSSMF Utils : CreateRelationShipInAAI. " + ex.getMessage()
             logger.info(msg)
             exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
         }
@@ -333,10 +341,9 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe
        }
        
        public String buildCreateNSSMFRequest(DelegateExecution execution, String domainType, String action) {
-               EsrInfo esrInfo = new EsrInfo()
-               esrInfo.setNetworkType("TN")
-               esrInfo.setVendor("ONAP")
-               String esrInfoString = objectMapper.writeValueAsString(esrInfo)
+               JsonObject esrInfo = new JsonObject()
+           esrInfo.addProperty("networkType", "tn")
+           esrInfo.addProperty("vendor", "ONAP_internal")
                JsonObject response = new JsonObject()
                JsonObject allocateTnNssi = new JsonObject()
                JsonObject serviceInfo = new JsonObject()
@@ -404,7 +411,7 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe
                serviceInfo.addProperty("nsiId", execution.getVariable("nsiId"))
                serviceInfo.addProperty("globalSubscriberId", execution.getVariable("globalSubscriberId"))
                serviceInfo.addProperty("subscriptionServiceType", execution.getVariable("subscriptionServiceType"))
-               response.addProperty("esrInfo", esrInfoString)
+               response.add("esrInfo", esrInfo)
                response.add("serviceInfo", serviceInfo)
                response.add("allocateTnNssi", allocateTnNssi)
                return response.toString()
@@ -429,9 +436,9 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe
                        deAllocateNssi.addProperty("sliceProfileId", execution.getVariable("TNMH_sliceProfileInstanceId"))
                }
                
-               EsrInfo esrInfo = new EsrInfo()
-               esrInfo.setVendor("ONAP")
-               esrInfo.setNetworkType("TN")
+               JsonObject esrInfo = new JsonObject()
+           esrInfo.addProperty("networkType", "tn")
+           esrInfo.addProperty("vendor", "ONAP_internal")
           
                JsonObject serviceInfo = new JsonObject()
                serviceInfo.addProperty("serviceInvariantUuid", null)
@@ -441,9 +448,9 @@ private SliceProfile createSliceProfile(String domainType, DelegateExecution exe
           
                JsonObject json = new JsonObject()
                json.add("deAllocateNssi", deAllocateNssi)
-               json.addProperty("esrInfo", objectMapper.writeValueAsString(esrInfo))
+               json.add("esrInfo", esrInfo)
                json.add("serviceInfo", serviceInfo)
                return json.toString()
           
        }
-}
\ No newline at end of file
+}
index fc14da3..e1719aa 100644 (file)
@@ -31,17 +31,16 @@ import org.onap.so.bpmn.core.json.JsonUtils
 import org.onap.so.db.request.beans.ResourceOperationStatus
 import org.slf4j.Logger
 import org.slf4j.LoggerFactory
-import java.sql.Timestamp
 import java.util.List
 import static org.apache.commons.lang3.StringUtils.isBlank
 import com.google.gson.JsonObject
 import com.fasterxml.jackson.databind.ObjectMapper
 import com.google.gson.JsonArray
+import com.google.gson.JsonParser
 import org.onap.aai.domain.yang.Relationship
 import org.onap.aaiclient.client.aai.AAIResourcesClient
 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri
 import org.onap.so.beans.nsmf.AllocateTnNssi
-import org.onap.so.beans.nsmf.EsrInfo
 import org.onap.so.bpmn.core.UrnPropertiesReader
 import org.onap.so.bpmn.core.domain.ServiceDecomposition
 import org.onap.so.bpmn.core.domain.ServiceInstance
@@ -99,8 +98,8 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                                execution.setVariable("sliceProfile", sliceProfile)
                        }
                        String sliceProfileId = jsonUtil.getJsonValue(sliceProfile, "sliceProfileId")
-                       def snssaiList = jsonUtil.StringArrayToList(jsonUtil.getJsonValue(sliceProfile, "snssaiList"))
-                       def plmnIdList = jsonUtil.StringArrayToList(jsonUtil.getJsonValue(sliceProfile, "plmnIdList"))
+                       def snssaiList = jsonUtil.StringArrayToList(jsonUtil.getJsonValue(sliceProfile, "sNSSAI"))
+                       def plmnIdList = jsonUtil.StringArrayToList(jsonUtil.getJsonValue(sliceProfile, "pLMNIdList"))
                        def coverageAreaTAList = jsonUtil.StringArrayToList(jsonUtil.getJsonValue(sliceProfile, "coverageAreaTAList"))
 
                        if (isBlank(sliceProfileId) || (snssaiList.empty) || (plmnIdList.empty)
@@ -185,7 +184,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                List<String> nsstInfoList = new ArrayList<>()
                for(ServiceProxy serviceProxy : serviceProxyList)
                {
-                       String nsstModelUuid = serviceProxy.getModelInfo().getModelUuid()
+                       String nsstModelUuid = serviceProxy.getSourceModelUuid()
                        String nsstModelInvariantUuid = serviceProxy.getModelInfo().getModelInvariantUuid()
                        String name = serviceProxy.getModelInfo().getModelName()
                        String nsstServiceModelInfo = """{
@@ -203,7 +202,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                        logger.info(msg)
                        exceptionUtil.buildAndThrowWorkflowException(execution, 7000, msg)
                }
-               execution.setVariable("ranNsstInfoList",nsstInfoList)
+               execution.setVariable("ranNsstInfoList", objectMapper.writeValueAsString(nsstInfoList))
                execution.setVariable("ranModelVersion", ranModelVersion)
                execution.setVariable("ranModelName", ranModelName)
                execution.setVariable("currentIndex",currentIndex)
@@ -255,7 +254,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
 
                String urlString = UrnPropertiesReader.getVariable("mso.oof.endpoint", execution)
                logger.debug( "get NSSI option OOF Url: " + urlString)
-
+               JsonParser parser = new JsonParser()
                //build oof request body
                boolean ranNssiPreferReuse = execution.getVariable("ranNssiPreferReuse");
                String requestId = execution.getVariable("msoRequestId")
@@ -265,7 +264,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                String modelInvariantUuid = execution.getVariable("modelInvariantUuid")
                String modelName = execution.getVariable("ranModelName")
                String timeout = UrnPropertiesReader.getVariable("mso.adapters.oof.timeout", execution);
-               List<String> nsstInfoList =  objectMapper.readValue(execution.getVariable("nsstInfoList"), List.class)
+               List<String> nsstInfoList =  objectMapper.readValue(execution.getVariable("ranNsstInfoList"), List.class)
                JsonArray capabilitiesList = new JsonArray()
                String FHCapabilities = execution.getVariable("FHCapabilities")
                String MHCapabilities = execution.getVariable("MHCapabilities")
@@ -274,11 +273,11 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                JsonObject MH = new JsonObject()
                JsonObject ANNF = new JsonObject()
                FH.addProperty("domainType", "TN_FH")
-               FH.addProperty("capabilityDetails", FHCapabilities)
+               FH.add("capabilityDetails", (JsonObject) parser.parse(FHCapabilities))
                MH.addProperty("domainType", "TN_MH")
-               MH.addProperty("capabilityDetails", MHCapabilities)
+               MH.add("capabilityDetails", (JsonObject) parser.parse(MHCapabilities))
                ANNF.addProperty("domainType", "AN_NF")
-               ANNF.addProperty("capabilityDetails", FHCapabilities)
+               ANNF.add("capabilityDetails", (JsonObject) parser.parse(ANNFCapabilities))
                capabilitiesList.add(FH)
                capabilitiesList.add(MH)
                capabilitiesList.add(ANNF)
@@ -302,13 +301,18 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                String oofResponse = execution.getVariable("nssiSelection_asyncCallbackResponse")
                String requestStatus = jsonUtil.getJsonValue(oofResponse, "requestStatus")
                if(requestStatus.equals("completed")) {
-                       List<String> solution = jsonUtil.StringArrayToList(jsonUtil.getJsonValue(oofResponse, "solutions"))
-                       boolean existingNSI = jsonUtil.getJsonValue(solution.get(0), "existingNSI")
+                       String solutions = jsonUtil.getJsonValue(oofResponse, "solutions")
+                       logger.debug("solutions value : "+solutions)
+                       JsonParser parser = new JsonParser()
+                       JsonArray solution = parser.parse(solutions)
+                       JsonObject sol = solution.get(0)
+                       boolean existingNSI = sol.get("existingNSI").getAsBoolean()
+                       logger.debug("existingNSI value : "+existingNSI)
                        if(existingNSI) {
-                               def sharedNSISolution = jsonUtil.getJsonValue(solution.get(0), "sharedNSISolution")
-                               execution.setVariable("sharedRanNSSISolution", sharedNSISolution)
+                               JsonObject sharedNSISolution = sol.get("sharedNSISolution").getAsJsonObject()
+                               execution.setVariable("sharedRanNSSISolution", sharedNSISolution.toString())
                                logger.debug("sharedRanNSSISolution from OOF "+sharedNSISolution)
-                               String RANServiceInstanceId = jsonUtil.getJsonValue(solution.get(0), "sharedNSISolution.NSIId")
+                               String RANServiceInstanceId = sharedNSISolution.get("NSIId").getAsString()
                                execution.setVariable("RANServiceInstanceId", RANServiceInstanceId)
                                ServiceInstance serviceInstance = new ServiceInstance();
                                serviceInstance.setInstanceId(RANServiceInstanceId);
@@ -317,9 +321,10 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                                execution.setVariable("ranNsstServiceDecomposition", serviceDecomposition)
                                execution.setVariable("isRspRanNssi", true)
                        }else {
-                               def sliceProfiles = jsonUtil.getJsonValue(solution.get(0), "newNSISolution.sliceProfiles")
-                               execution.setVariable("RanConstituentSliceProfiles", sliceProfiles)
+                               JsonObject newNSISolution = sol.get("newNSISolution").getAsJsonObject()
+                               JsonArray sliceProfiles = newNSISolution.get("slice_profiles").getAsJsonArray()
                                logger.debug("RanConstituentSliceProfiles list from OOF "+sliceProfiles)
+                               execution.setVariable("RanConstituentSliceProfiles", sliceProfiles.toString())
                        }
                }else {
                        String statusMessage = jsonUtil.getJsonValue(oofResponse, "statusMessage")
@@ -362,11 +367,11 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
        
        def createModifyNssiQueryJobStatus = { DelegateExecution execution ->
                logger.debug(Prefix+"createModifyNssiQueryJobStatus method start")
-               EsrInfo esrInfo = new EsrInfo()
-               esrInfo.setNetworkType("AN")
-               esrInfo.setVendor("ONAP")
-               String esrInfoString = objectMapper.writeValueAsString(esrInfo)
-               execution.setVariable("esrInfo", esrInfoString)
+               JsonObject esrInfo = new JsonObject()
+           esrInfo.addProperty("networkType", "tn")
+           esrInfo.addProperty("vendor", "ONAP_internal")
+
+               execution.setVariable("esrInfo", esrInfo.toString())
                JsonObject serviceInfo = new JsonObject()
                serviceInfo.addProperty("nssiId", execution.getVariable("RANServiceInstanceId"))
                serviceInfo.addProperty("nsiId", execution.getVariable("nsiId"))
@@ -491,12 +496,16 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                String oofResponse = execution.getVariable("nfNssiSelection_asyncCallbackResponse")
                String requestStatus = jsonUtil.getJsonValue(oofResponse, "requestStatus")
                if(requestStatus.equals("completed")) {
-                       List<String> solution = jsonUtil.StringArrayToList(jsonUtil.getJsonValue(oofResponse, "solutions"))             
+                       String solutions = jsonUtil.getJsonValue(oofResponse, "solutions")
+                       logger.debug("nssi solutions value : "+solutions)
+                       JsonParser parser = new JsonParser()
+                       JsonArray solution = parser.parse(solutions)            
                        if(solution.size()>=1) {
-                               String ranNfNssiId = jsonUtil.getJsonValue(solution.get(0), "NSSIId")
-                               String invariantUuid = jsonUtil.getJsonValue(solution.get(0), "invariantUUID")
-                               String uuid = jsonUtil.getJsonValue(solution.get(0), "UUID")
-                               String nssiName = jsonUtil.getJsonValue(solution.get(0), "NSSIName")
+                               JsonObject sol = solution.get(0)
+                               String ranNfNssiId = sol.get("NSSIId").getAsString()
+                               String invariantUuid = sol.get("invariantUUID").getAsString()
+                               String uuid = sol.get("UUID").getAsString()
+                               String nssiName = sol.get("NSSIName").getAsString()
                                execution.setVariable("RANNFServiceInstanceId", ranNfNssiId)
                                execution.setVariable("RANNFInvariantUUID", invariantUuid)
                                execution.setVariable("RANNFUUID", uuid)
@@ -528,7 +537,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                logger.debug(Prefix+"processRanNfModifyRsp method start")
                anNssmfUtils.processRanNfModifyRsp(execution)
                //create RAN NSSI 
-               org.onap.aai.domain.yang.ServiceInstance ANServiceInstance = new ServiceInstance();
+               org.onap.aai.domain.yang.ServiceInstance ANServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
                //AN instance creation
                ANServiceInstance.setServiceInstanceId(execution.getVariable("RANServiceInstanceId"))
                String sliceInstanceName = execution.getVariable("servicename")
@@ -593,8 +602,8 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
        def updateAaiWithRANInstances = { DelegateExecution execution ->
                logger.debug(Prefix+"updateAaiWithRANInstances method start")
                //create RAN NSSI 
-               org.onap.aai.domain.yang.ServiceInstance ANServiceInstance = new ServiceInstance();
-               org.onap.aai.domain.yang.ServiceInstance ANNFServiceInstance = new ServiceInstance();
+               org.onap.aai.domain.yang.ServiceInstance ANServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
+               org.onap.aai.domain.yang.ServiceInstance ANNFServiceInstance = new org.onap.aai.domain.yang.ServiceInstance();
                //AN instance creation
                ANServiceInstance.setServiceInstanceId(execution.getVariable("RANServiceInstanceId"))
                String sliceInstanceName = execution.getVariable("servicename")
@@ -603,15 +612,16 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                ANServiceInstance.setServiceType(serviceType)
                String serviceStatus = "deactivated"
                ANServiceInstance.setOrchestrationStatus(serviceStatus)
-               String serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("sliceProfile"), "plmnIdList")
+               String serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("sliceProfile"), "pLMNIdList")
                ANServiceInstance.setServiceInstanceLocationId(serviceInstanceLocationid)
                String serviceRole = "nssi"
                ANServiceInstance.setServiceRole(serviceRole)
-               List<String> snssaiList = objectMapper.readValue(execution.getVariable("snssaiList"), List.class)
+               List<String> snssaiList = execution.getVariable("snssaiList")
                String snssai = snssaiList.get(0)
                ANServiceInstance.setEnvironmentContext(snssai)
                ANServiceInstance.setWorkloadContext("AN")
-               
+               String serviceFunctionAn = jsonUtil.getJsonValue(execution.getVariable("sliceProfile"), "resourceSharingLevel")
+               ANServiceInstance.setServiceFunction(serviceFunctionAn)
                logger.debug("completed AN service instance build "+ ANServiceInstance.toString())
                //create RAN NF NSSI
                ANNFServiceInstance.setServiceInstanceId(execution.getVariable("RANNFServiceInstanceId"))
@@ -619,13 +629,15 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                ANNFServiceInstance.setServiceInstanceName(sliceInstanceName)
                ANNFServiceInstance.setServiceType(serviceType)
                ANNFServiceInstance.setOrchestrationStatus(serviceStatus)
-               serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "plmnIdList")
+               serviceInstanceLocationid = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "pLMNIdList")
                ANNFServiceInstance.setServiceInstanceLocationId(serviceInstanceLocationid)
                ANNFServiceInstance.setServiceRole(serviceRole)
-               snssaiList = objectMapper.readValue(execution.getVariable("snssaiList"), List.class)
+               snssaiList = execution.getVariable("snssaiList")
                snssai = snssaiList.get(0)
                ANNFServiceInstance.setEnvironmentContext(snssai)
                ANNFServiceInstance.setWorkloadContext("AN-NF")
+               String serviceFunctionAnnf = jsonUtil.getJsonValue(execution.getVariable("ranNfSliceProfile"), "resourceSharingLevel")
+               ANNFServiceInstance.setServiceFunction(serviceFunctionAnnf)
                logger.debug("completed AN service instance build "+ ANNFServiceInstance.toString())
                
                String msg = ""
@@ -695,11 +707,10 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
        }
        
        private void createTnAllocateNssiJobQuery(DelegateExecution execution, String domainType) {
-               EsrInfo esrInfo = new EsrInfo()
-               esrInfo.setNetworkType("TN")
-               esrInfo.setVendor("ONAP")
-               String esrInfoString = objectMapper.writeValueAsString(esrInfo)
-               execution.setVariable("esrInfo", esrInfoString)
+               JsonObject esrInfo = new JsonObject()
+           esrInfo.addProperty("networkType", "tn")
+           esrInfo.addProperty("vendor", "ONAP_internal")
+               execution.setVariable("esrInfo", esrInfo.toString())
                JsonObject serviceInfo = new JsonObject()
                serviceInfo.addProperty("nssiId", null)
                serviceInfo.addProperty("nsiId", execution.getVariable("nsiId"))
@@ -853,7 +864,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                updateStatus.setResourceTemplateUUID(nsiId)
                updateStatus.setResourceInstanceID(nssiId)
                updateStatus.setOperType("Allocate")
-               updateStatus.setProgress(100)
+               updateStatus.setProgress("100")
                updateStatus.setStatus("finished")
                requestDBUtil.prepareUpdateResourceOperationStatus(execution, updateStatus)
 
@@ -875,7 +886,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                updateStatus.setResourceTemplateUUID(nsiId)
                updateStatus.setResourceInstanceID(nssiId)
                updateStatus.setOperType("Allocate")
-               updateStatus.setProgress(0)
+               updateStatus.setProgress("0")
                updateStatus.setStatus("failed")
                requestDBUtil.prepareUpdateResourceOperationStatus(execution, updateStatus)
        }
@@ -883,8 +894,6 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
        private String buildSdnrAllocateRequest(DelegateExecution execution, String action, String rpcName, String callbackUrl) {
                
                String requestId = execution.getVariable("msoRequestId")
-               Date date = new Date().getTime()
-               Timestamp time = new Timestamp(date)
                Map<String,Object> sliceProfile = objectMapper.readValue(execution.getVariable("ranNfSliceProfile"), Map.class)
                sliceProfile.put("sliceProfileId", execution.getVariable("ANNF_sliceProfileInstanceId"))
                sliceProfile.put("maxNumberofConns", sliceProfile.get("maxNumberofPDUSessions"))
@@ -897,7 +906,7 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                JsonObject commonHeader = new JsonObject()
                JsonObject payload = new JsonObject()
                JsonObject payloadInput = new JsonObject()
-               commonHeader.addProperty("TimeStamp", time.toString())
+               commonHeader.addProperty("TimeStamp",new Date(System.currentTimeMillis()).format("yyyy-MM-dd'T'HH:mm:ss.sss", TimeZone.getDefault()))
                commonHeader.addProperty("APIver", "1.0")
                commonHeader.addProperty("RequestID", requestId)
                commonHeader.addProperty("SubRequestID", "1")
@@ -912,12 +921,12 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                payload.add("input", payloadInput)
                input.add("CommonHeader", commonHeader)
                input.addProperty("Action", action)
-               input.add("Payload", payload)
+               input.addProperty("Payload", payload.toString())
                body.add("input", input)
                response.add("body", body)
                response.addProperty("version", "1.0")
                response.addProperty("rpc-name", rpcName)
-               response.addProperty("correlation-id", requestId+"-1")
+               response.addProperty("correlation-id", (requestId+"-1"))
                response.addProperty("type", "request")
                return response.toString()
        }
@@ -979,8 +988,15 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                String DUEG_routeId = UUID.randomUUID().toString()
                execution.setVariable("tranportEp_ID_DUEG", DUEG_routeId)
                NetworkRoute DUEG_ep = new NetworkRoute()
-               DU_ep.setRouteId(DUEG_routeId)
-               DU_ep.setNextHop("Host3")
+                DUEG_ep.setRouteId(DUEG_routeId)
+                DUEG_ep.setFunction(function)
+                DUEG_ep.setRole(role)
+                DUEG_ep.setType(type)
+                DUEG_ep.setIpAddress("192.168.100.5")
+                DUEG_ep.setLogicalInterfaceId("1234")
+                DUEG_ep.setPrefixLength(prefixLength)
+                DUEG_ep.setAddressFamily(addressFamily)
+               DUEG_ep.setNextHop("Host3")
                //CUIN
                String CUIN_routeId = UUID.randomUUID().toString()
                execution.setVariable("tranportEp_ID_CUIN", CUIN_routeId)
@@ -1005,9 +1021,9 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
                        logger.debug("creating DUIN endpoint . ID : "+DUIN_routeId+" node details : "+DU_ep.toString())
                        networkRouteUri = AAIUriFactory.createResourceUri( new AAIObjectType(AAINamespaceConstants.NETWORK, NetworkRoute.class), DUIN_routeId)
                        client.create(networkRouteUri, DU_ep)
-                       logger.debug("creating DUEG endpoint . ID : "+DUEG_routeId+" node details : "+DU_ep.toString())
+                       logger.debug("creating DUEG endpoint . ID : "+DUEG_routeId+" node details : "+DUEG_ep.toString())
                        networkRouteUri = AAIUriFactory.createResourceUri( new AAIObjectType(AAINamespaceConstants.NETWORK, NetworkRoute.class), DUEG_routeId)
-                       client.create(networkRouteUri, DU_ep)
+                       client.create(networkRouteUri, DUEG_ep)
                        logger.debug("creating CUIN endpoint . ID : "+CUIN_routeId+" node details : "+CUIN_ep.toString())
                        networkRouteUri = AAIUriFactory.createResourceUri( new AAIObjectType(AAINamespaceConstants.NETWORK, NetworkRoute.class), CUIN_routeId)
                        client.create(networkRouteUri, CUIN_ep)
@@ -1041,3 +1057,4 @@ class DoAllocateAccessNSSI extends AbstractServiceTaskProcessor {
        }
        }
 }
+