Rework SDC calls and model 51/6951/2
authorDeterme, Sebastien (sd378r) <sd378r@intl.att.com>
Tue, 8 Aug 2017 09:54:59 +0000 (02:54 -0700)
committerSébastien Determe <sd378r@intl.att.com>
Tue, 8 Aug 2017 12:33:20 +0000 (12:33 +0000)
Rework the SDC model and queries
+ Add unit tests with JSON to validate the SDC model

Change-Id: I93f08cdc883f5357e3a08e9c246ed30be50a3492
Issue-Id: CLAMP-1
Signed-off-by: Determe, Sebastien (sd378r) <sd378r@intl.att.com>
21 files changed:
src/main/java/org/onap/clamp/clds/client/SdcCatalogServices.java
src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java
src/main/java/org/onap/clamp/clds/client/req/SdcReq.java
src/main/java/org/onap/clamp/clds/model/CldsSdcArtifact.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/model/CldsSdcResource.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/model/CldsSdcResourceBasicInfo.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/model/CldsSdcServiceDetail.java [new file with mode: 0644]
src/main/java/org/onap/clamp/clds/model/CldsSdcServiceInfo.java [new file with mode: 0644]
src/test/java/org/onap/clamp/clds/client/req/SdcReqTest.java
src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesIT.java [new file with mode: 0644]
src/test/java/org/onap/clamp/clds/it/SdcIT.java [new file with mode: 0644]
src/test/resources/example/sdc/sdcAlarmsList.csv [new file with mode: 0644]
src/test/resources/example/sdc/sdcCinderVolume.json [new file with mode: 0644]
src/test/resources/example/sdc/sdcMeasurementsList.csv [new file with mode: 0644]
src/test/resources/example/sdc/sdcResourceDetailsExample.json [new file with mode: 0644]
src/test/resources/example/sdc/sdcSecurityRules.json [new file with mode: 0644]
src/test/resources/example/sdc/sdcServiceDetailsExample.json [new file with mode: 0644]
src/test/resources/example/sdc/sdcServicesListExample.json [new file with mode: 0644]
src/test/resources/example/sdc/sdcVFCGenericWithAlarms.json [new file with mode: 0644]
src/test/resources/example/sdc/sdcVFCResources.json [new file with mode: 0644]
src/test/resources/example/sdc/sdcVFResources.json [new file with mode: 0644]

index 58bba3c..a009f06 100644 (file)
@@ -5,16 +5,16 @@
  * Copyright (C) 2017 AT&T Intellectual Property. All rights
  *                             reserved.
  * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License"); 
- * you may not use this file except in compliance with the License. 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software 
- * distributed under the License is distributed on an "AS IS" BASIS, 
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- * See the License for the specific language governing permissions and 
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
  * limitations under the License.
  * ============LICENSE_END============================================
  * ===================================================================
 
 package org.onap.clamp.clds.client;
 
+import java.io.BufferedReader;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StringReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.commons.csv.CSVFormat;
+import org.apache.commons.csv.CSVRecord;
+import org.apache.commons.lang3.StringUtils;
+import org.onap.clamp.clds.client.req.SdcReq;
+import org.onap.clamp.clds.model.CldsAlarmCondition;
+import org.onap.clamp.clds.model.CldsDBServiceCache;
+import org.onap.clamp.clds.model.CldsSdcArtifact;
+import org.onap.clamp.clds.model.CldsSdcResource;
+import org.onap.clamp.clds.model.CldsSdcResourceBasicInfo;
+import org.onap.clamp.clds.model.CldsSdcServiceDetail;
+import org.onap.clamp.clds.model.CldsSdcServiceInfo;
+import org.onap.clamp.clds.model.CldsServiceData;
+import org.onap.clamp.clds.model.CldsVfData;
+import org.onap.clamp.clds.model.CldsVfKPIData;
+import org.onap.clamp.clds.model.CldsVfcData;
+import org.onap.clamp.clds.model.prop.ModelProperties;
+import org.onap.clamp.clds.model.refprop.RefProp;
+import org.onap.clamp.clds.util.LoggingUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
 import com.fasterxml.jackson.core.JsonParseException;
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonMappingException;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.fasterxml.jackson.databind.node.TextNode;
-import org.onap.clamp.clds.client.req.SdcReq;
-import org.onap.clamp.clds.model.*;
-import org.onap.clamp.clds.model.prop.ModelProperties;
-import org.onap.clamp.clds.model.refprop.RefProp;
-import org.apache.commons.csv.CSVFormat;
-import org.apache.commons.csv.CSVRecord;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import java.io.*;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
 
 public class SdcCatalogServices {
-    private static final Logger logger = LoggerFactory.getLogger(SdcSendReqDelegate.class);
+    protected static final EELFLogger logger            = EELFManager.getInstance().getLogger(SdcCatalogServices.class);
+    protected static final EELFLogger metricsLogger     = EELFManager.getInstance().getMetricsLogger();
+
+    private static final String       RESOURCE_VF_TYPE  = "VF";
+    private static final String       RESOURCE_VFC_TYPE = "VFC";
 
     @Autowired
-    private RefProp refProp;
+    private RefProp                   refProp;
 
-    public String getAsdcServicesInformation(String uuid) throws Exception {
-        String baseUrl = refProp.getStringValue("asdc.serviceUrl");
-        String basicAuth = SdcReq.getAsdcBasicAuth(refProp);
+    public String getSdcServicesInformation(String uuid) throws Exception {
+        Date startTime = new Date();
+        String baseUrl = refProp.getStringValue("sdc.serviceUrl");
+        String basicAuth = SdcReq.getSdcBasicAuth(refProp);
         try {
             String url = baseUrl;
             if (uuid != null) {
@@ -67,7 +92,7 @@ public class SdcCatalogServices {
 
             HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection();
 
-            conn.setRequestProperty("X-ONAP-InstanceID", "CLAMP-Tool");
+            conn.setRequestProperty(refProp.getStringValue("sdc.InstanceID"), "CLAMP-Tool");
             conn.setRequestProperty("Authorization", basicAuth);
             conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
             conn.setRequestMethod("GET");
@@ -77,113 +102,129 @@ public class SdcCatalogServices {
                 logger.info(resp.toString());
                 return resp;
             }
+            // metrics log
+            LoggingUtils.setResponseContext("0", "Get sdc services success", this.getClass().getName());
+
         } catch (Exception e) {
-            logger.error("not able to ger any service information from asdc for uuid:" + uuid);
+            LoggingUtils.setResponseContext("900", "Get sdc services failed", this.getClass().getName());
+            LoggingUtils.setErrorContext("900", "Get sdc services error");
+            logger.error("not able to get any service information from sdc for uuid:" + uuid);
         }
+        LoggingUtils.setTimeContext(startTime, new Date());
+        LoggingUtils.setTargetContext("SDC", "Get Services");
+        metricsLogger.info("Get sdc services information");
+
         return "";
     }
 
     /**
-     * To remove duplicate serviceUUIDs from asdc services List
+     * To remove duplicate serviceUUIDs from sdc services List
      *
-     * @param rawCldsAsdcServiceList
+     * @param rawCldsSdcServiceList
      * @return
      */
-    public List<CldsAsdcServiceInfo> removeDuplicateServices(List<CldsAsdcServiceInfo> rawCldsAsdcServiceList) {
-        List<CldsAsdcServiceInfo> cldsAsdcServiceInfoList = null;
-        if (rawCldsAsdcServiceList != null && rawCldsAsdcServiceList.size() > 0) {
+    public List<CldsSdcServiceInfo> removeDuplicateServices(List<CldsSdcServiceInfo> rawCldsSdcServiceList) {
+        List<CldsSdcServiceInfo> cldsSdcServiceInfoList = null;
+        if (rawCldsSdcServiceList != null && rawCldsSdcServiceList.size() > 0) {
             // sort list
-            Collections.sort(rawCldsAsdcServiceList);
-            // and then take only the services with the max version (last in the list with the same name)
-            cldsAsdcServiceInfoList = new ArrayList<>();
-            for (int i = 1; i < rawCldsAsdcServiceList.size(); i++) {
-                // compare name with previous - if not equal, then keep the previous (it's the last with that name)
-                CldsAsdcServiceInfo prev = rawCldsAsdcServiceList.get(i - 1);
-                if (!rawCldsAsdcServiceList.get(i).getName().equals(prev.getName())) {
-                    cldsAsdcServiceInfoList.add(prev);
+            Collections.sort(rawCldsSdcServiceList);
+            // and then take only the services with the max version (last in the
+            // list with the same name)
+            cldsSdcServiceInfoList = new ArrayList<>();
+            for (int i = 1; i < rawCldsSdcServiceList.size(); i++) {
+                // compare name with previous - if not equal, then keep the
+                // previous (it's the last with that name)
+                CldsSdcServiceInfo prev = rawCldsSdcServiceList.get(i - 1);
+                if (!rawCldsSdcServiceList.get(i).getName().equals(prev.getName())) {
+                    cldsSdcServiceInfoList.add(prev);
                 }
             }
             // add the last in the list
-            cldsAsdcServiceInfoList.add(rawCldsAsdcServiceList.get(rawCldsAsdcServiceList.size() - 1));
+            cldsSdcServiceInfoList.add(rawCldsSdcServiceList.get(rawCldsSdcServiceList.size() - 1));
         }
-        return cldsAsdcServiceInfoList;
+        return cldsSdcServiceInfoList;
     }
 
     /**
-     * To remove duplicate serviceUUIDs from asdc resources List
+     * To remove duplicate serviceUUIDs from sdc resources List
      *
-     * @param rawCldsAsdcResourceList
+     * @param rawCldsSdcResourceList
      * @return
      */
-    public List<CldsAsdcResource> removeDuplicateAsdcResourceInstances(List<CldsAsdcResource> rawCldsAsdcResourceList) {
-        List<CldsAsdcResource> cldsAsdcResourceList = null;
-        if (rawCldsAsdcResourceList != null && rawCldsAsdcResourceList.size() > 0) {
+    public List<CldsSdcResource> removeDuplicateSdcResourceInstances(List<CldsSdcResource> rawCldsSdcResourceList) {
+        List<CldsSdcResource> cldsSdcResourceList = null;
+        if (rawCldsSdcResourceList != null && rawCldsSdcResourceList.size() > 0) {
             // sort list
-            Collections.sort(rawCldsAsdcResourceList);
-            // and then take only the resources with the max version (last in the list with the same name)
-            cldsAsdcResourceList = new ArrayList<>();
-            for (int i = 1; i < rawCldsAsdcResourceList.size(); i++) {
-                // compare name with previous - if not equal, then keep the previous (it's the last with that name)
-                CldsAsdcResource prev = rawCldsAsdcResourceList.get(i - 1);
-                if (!rawCldsAsdcResourceList.get(i).getResourceInstanceName().equals(prev.getResourceInstanceName())) {
-                    cldsAsdcResourceList.add(prev);
+            Collections.sort(rawCldsSdcResourceList);
+            // and then take only the resources with the max version (last in
+            // the list with the same name)
+            cldsSdcResourceList = new ArrayList<>();
+            for (int i = 1; i < rawCldsSdcResourceList.size(); i++) {
+                // compare name with previous - if not equal, then keep the
+                // previous (it's the last with that name)
+                CldsSdcResource prev = rawCldsSdcResourceList.get(i - 1);
+                if (!rawCldsSdcResourceList.get(i).getResourceInstanceName().equals(prev.getResourceInstanceName())) {
+                    cldsSdcResourceList.add(prev);
                 }
             }
             // add the last in the list
-            cldsAsdcResourceList.add(rawCldsAsdcResourceList.get(rawCldsAsdcResourceList.size() - 1));
+            cldsSdcResourceList.add(rawCldsSdcResourceList.get(rawCldsSdcResourceList.size() - 1));
         }
-        return cldsAsdcResourceList;
+        return cldsSdcResourceList;
     }
 
-
     /**
      * To remove duplicate basic resources with same resourceUUIDs
      *
-     * @param rawCldsAsdcResourceListBasicList
+     * @param rawCldsSdcResourceListBasicList
      * @return
      */
-    public List<CldsAsdcResourceBasicInfo> removeDuplicateAsdcResourceBasicInfo(List<CldsAsdcResourceBasicInfo> rawCldsAsdcResourceListBasicList) {
-        List<CldsAsdcResourceBasicInfo> cldsAsdcResourceBasicInfoList = null;
-        if (rawCldsAsdcResourceListBasicList != null && rawCldsAsdcResourceListBasicList.size() > 0) {
+    public List<CldsSdcResourceBasicInfo> removeDuplicateSdcResourceBasicInfo(
+            List<CldsSdcResourceBasicInfo> rawCldsSdcResourceListBasicList) {
+        List<CldsSdcResourceBasicInfo> cldsSdcResourceBasicInfoList = null;
+        if (rawCldsSdcResourceListBasicList != null && rawCldsSdcResourceListBasicList.size() > 0) {
             // sort list
-            Collections.sort(rawCldsAsdcResourceListBasicList);
-            // and then take only the resources with the max version (last in the list with the same name)
-            cldsAsdcResourceBasicInfoList = new ArrayList<>();
-            for (int i = 1; i < rawCldsAsdcResourceListBasicList.size(); i++) {
-                // compare name with previous - if not equal, then keep the previous (it's the last with that name)
-                CldsAsdcResourceBasicInfo prev = rawCldsAsdcResourceListBasicList.get(i - 1);
-                if (!rawCldsAsdcResourceListBasicList.get(i).getName().equals(prev.getName())) {
-                    cldsAsdcResourceBasicInfoList.add(prev);
+            Collections.sort(rawCldsSdcResourceListBasicList);
+            // and then take only the resources with the max version (last in
+            // the list with the same name)
+            cldsSdcResourceBasicInfoList = new ArrayList<>();
+            for (int i = 1; i < rawCldsSdcResourceListBasicList.size(); i++) {
+                // compare name with previous - if not equal, then keep the
+                // previous (it's the last with that name)
+                CldsSdcResourceBasicInfo prev = rawCldsSdcResourceListBasicList.get(i - 1);
+                if (!rawCldsSdcResourceListBasicList.get(i).getName().equals(prev.getName())) {
+                    cldsSdcResourceBasicInfoList.add(prev);
                 }
             }
             // add the last in the list
-            cldsAsdcResourceBasicInfoList.add(rawCldsAsdcResourceListBasicList.get(rawCldsAsdcResourceListBasicList.size() - 1));
+            cldsSdcResourceBasicInfoList
+                    .add(rawCldsSdcResourceListBasicList.get(rawCldsSdcResourceListBasicList.size() - 1));
         }
-        return cldsAsdcResourceBasicInfoList;
+        return cldsSdcResourceBasicInfoList;
     }
 
     /**
      * To get ServiceUUID by using serviceInvariantUUID
      *
-     * @param invariantID
+     * @param invariantId
      * @return
      * @throws Exception
      */
-    public String getServiceUUIDFromServiceInvariantID(String invariantID) throws Exception {
-        String serviceUUID = "";
-        String responseStr = getAsdcServicesInformation(null);
-        List<CldsAsdcServiceInfo> rawCldsAsdcServicesList = getCldsAsdcServicesListFromJson(responseStr);
-        List<CldsAsdcServiceInfo> cldsAsdcServicesList = removeDuplicateServices(rawCldsAsdcServicesList);
-        if (cldsAsdcServicesList != null && cldsAsdcServicesList.size() > 0) {
-            for (CldsAsdcServiceInfo currCldsAsdcServiceInfo : cldsAsdcServicesList) {
-                if (currCldsAsdcServiceInfo != null && currCldsAsdcServiceInfo.getInvariantUUID() != null
-                        && currCldsAsdcServiceInfo.getInvariantUUID().equalsIgnoreCase(invariantID)) {
-                    serviceUUID = currCldsAsdcServiceInfo.getUuid();
+    public String getServiceUuidFromServiceInvariantId(String invariantId) throws Exception {
+        String serviceUuid = "";
+        String responseStr = getSdcServicesInformation(null);
+        List<CldsSdcServiceInfo> rawCldsSdcServicesList = getCldsSdcServicesListFromJson(responseStr);
+        List<CldsSdcServiceInfo> cldsSdcServicesList = removeDuplicateServices(rawCldsSdcServicesList);
+        if (cldsSdcServicesList != null && cldsSdcServicesList.size() > 0) {
+            for (CldsSdcServiceInfo currCldsSdcServiceInfo : cldsSdcServicesList) {
+                if (currCldsSdcServiceInfo != null && currCldsSdcServiceInfo.getInvariantUUID() != null
+                        && currCldsSdcServiceInfo.getInvariantUUID().equalsIgnoreCase(invariantId)) {
+                    serviceUuid = currCldsSdcServiceInfo.getUuid();
                     break;
                 }
             }
         }
-        return serviceUUID;
+        return serviceUuid;
     }
 
     /**
@@ -195,16 +236,17 @@ public class SdcCatalogServices {
      * @throws JsonMappingException
      * @throws IOException
      */
-    public List<CldsAsdcServiceInfo> getCldsAsdcServicesListFromJson(String jsonStr) throws IOException {
+    public List<CldsSdcServiceInfo> getCldsSdcServicesListFromJson(String jsonStr) throws IOException {
         ObjectMapper objectMapper = new ObjectMapper();
         if (StringUtils.isBlank(jsonStr)) {
             return null;
         }
-        return objectMapper.readValue(jsonStr, objectMapper.getTypeFactory().constructCollectionType(List.class, CldsAsdcServiceInfo.class));
+        return objectMapper.readValue(jsonStr,
+                objectMapper.getTypeFactory().constructCollectionType(List.class, CldsSdcServiceInfo.class));
     }
 
     /**
-     * To get List<CldsAsdcResourceBasicInfo> class by parsing json string
+     * To get List<CldsSdcResourceBasicInfo> class by parsing json string
      *
      * @param jsonStr
      * @return
@@ -212,12 +254,13 @@ public class SdcCatalogServices {
      * @throws JsonMappingException
      * @throws IOException
      */
-    public List<CldsAsdcResourceBasicInfo> getAllAsdcResourcesListFromJson(String jsonStr) throws IOException {
+    public List<CldsSdcResourceBasicInfo> getAllSdcResourcesListFromJson(String jsonStr) throws IOException {
         ObjectMapper objectMapper = new ObjectMapper();
         if (StringUtils.isBlank(jsonStr)) {
             return null;
         }
-        return objectMapper.readValue(jsonStr, objectMapper.getTypeFactory().constructCollectionType(List.class, CldsAsdcResourceBasicInfo.class));
+        return objectMapper.readValue(jsonStr,
+                objectMapper.getTypeFactory().constructCollectionType(List.class, CldsSdcResourceBasicInfo.class));
     }
 
     /**
@@ -229,13 +272,13 @@ public class SdcCatalogServices {
      * @throws JsonMappingException
      * @throws IOException
      */
-    public CldsAsdcResource getCldsAsdcResourceFromJson(String jsonStr) throws IOException {
+    public CldsSdcResource getCldsSdcResourceFromJson(String jsonStr) throws IOException {
         ObjectMapper objectMapper = new ObjectMapper();
-        return objectMapper.readValue(jsonStr, CldsAsdcResource.class);
+        return objectMapper.readValue(jsonStr, CldsSdcResource.class);
     }
 
     /**
-     * To get CldsAsdcServiceDetail by parsing json string
+     * To get CldsSdcServiceDetail by parsing json string
      *
      * @param jsonStr
      * @return
@@ -243,26 +286,32 @@ public class SdcCatalogServices {
      * @throws JsonMappingException
      * @throws IOException
      */
-    public CldsAsdcServiceDetail getCldsAsdcServiceDetailFromJson(String jsonStr) throws IOException {
+    public CldsSdcServiceDetail getCldsSdcServiceDetailFromJson(String jsonStr) throws IOException {
         ObjectMapper objectMapper = new ObjectMapper();
-        return objectMapper.readValue(jsonStr, CldsAsdcServiceDetail.class);
+        return objectMapper.readValue(jsonStr, CldsSdcServiceDetail.class);
     }
 
     /**
-     * To upload artifact to asdc based on serviceUUID and resourcename on url
+     * To upload artifact to sdc based on serviceUUID and resourcename on url
+     *
      * @param prop
      * @param userid
      * @param url
-     * @param formatttedAsdcReq
+     * @param formatttedSdcReq
      * @return
      * @throws Exception
      */
-    public String uploadArtifactToAsdc(ModelProperties prop, String userid, String url, String formatttedAsdcReq) throws Exception {
+    public String uploadArtifactToSdc(ModelProperties prop, String userid, String url, String formatttedSdcReq)
+            throws Exception {
+        // Verify whether it is triggered by Validation Test button from UI
+        if (prop.isTest()) {
+            return "sdc artifact upload not executed for test action";
+        }
         logger.info("userid=" + userid);
-        String md5Text = SdcReq.calculateMD5ByString(formatttedAsdcReq);
-        byte[] postData = SdcReq.stringToByteArray(formatttedAsdcReq);
+        String md5Text = SdcReq.calculateMD5ByString(formatttedSdcReq);
+        byte[] postData = SdcReq.stringToByteArray(formatttedSdcReq);
         int postDataLength = postData.length;
-        HttpURLConnection conn = getAsdcHttpUrlConnection(userid, postDataLength, url, md5Text);
+        HttpURLConnection conn = getSdcHttpUrlConnection(userid, postDataLength, url, md5Text);
         try (DataOutputStream wr = new DataOutputStream(conn.getOutputStream())) {
             wr.write(postData);
         }
@@ -283,18 +332,19 @@ public class SdcCatalogServices {
         return responseStr;
     }
 
-    private HttpURLConnection getAsdcHttpUrlConnection(String userid, int postDataLength, String url, String md5Text) throws IOException {
+    private HttpURLConnection getSdcHttpUrlConnection(String userid, int postDataLength, String url, String md5Text)
+            throws IOException {
         logger.info("userid=" + userid);
-        String basicAuth = SdcReq.getAsdcBasicAuth(refProp);
-        String asdcXONAPInstanceID = refProp.getStringValue("asdc.asdcX-ONAP-InstanceID");
+        String basicAuth = SdcReq.getSdcBasicAuth(refProp);
+        String sdcXonapInstanceId = refProp.getStringValue("sdc.sdcX-InstanceID");
         URL urlObj = new URL(url);
         HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection();
         conn.setDoOutput(true);
-        conn.setRequestProperty("X-ONAP-InstanceID", asdcXONAPInstanceID);
+        conn.setRequestProperty(refProp.getStringValue("sdc.InstanceID"), sdcXonapInstanceId);
         conn.setRequestProperty("Authorization", basicAuth);
         conn.setRequestProperty("Content-Type", "application/json");
         conn.setRequestProperty("Content-MD5", md5Text);
-        conn.setRequestProperty("HTTP_CSP_USERID", userid);
+        conn.setRequestProperty("USER_ID", userid);
         conn.setRequestMethod("POST");
         conn.setRequestProperty("charset", "utf-8");
         conn.setRequestProperty("Content-Length", Integer.toString(postDataLength));
@@ -326,8 +376,8 @@ public class SdcCatalogServices {
         return inStream;
     }
 
-
-    public CldsDBServiceCache getCldsDBServiceCacheUsingCldsServiceData(CldsServiceData cldsServiceData) throws IOException {
+    public CldsDBServiceCache getCldsDbServiceCacheUsingCldsServiceData(CldsServiceData cldsServiceData)
+            throws IOException {
         CldsDBServiceCache cldsDbServiceCache = new CldsDBServiceCache();
         cldsDbServiceCache.setCldsDataInstream(cldsServiceData);
         cldsDbServiceCache.setInvariantId(cldsServiceData.getServiceInvariantUUID());
@@ -335,14 +385,14 @@ public class SdcCatalogServices {
         return cldsDbServiceCache;
     }
 
-    public boolean isCldsAsdcCacheDataExpired(CldsServiceData cldsServiceData) throws Exception {
+    public boolean isCldsSdcCacheDataExpired(CldsServiceData cldsServiceData) throws Exception {
         boolean expired = false;
         if (cldsServiceData != null && cldsServiceData.getServiceUUID() != null) {
-            String cachedServiceUUID = cldsServiceData.getServiceUUID();
-            String latestServiceUUID = getServiceUUIDFromServiceInvariantID(cldsServiceData.getServiceInvariantUUID());
+            String cachedServiceUuid = cldsServiceData.getServiceUUID();
+            String latestServiceUuid = getServiceUuidFromServiceInvariantId(cldsServiceData.getServiceInvariantUUID());
             String defaultRecordAge = refProp.getStringValue("CLDS_SERVICE_CACHE_MAX_SECONDS");
-            if ((!cachedServiceUUID.equalsIgnoreCase(latestServiceUUID)) ||
-                    (cldsServiceData.getAgeOfRecord() != null && cldsServiceData.getAgeOfRecord() > Long.parseLong(defaultRecordAge))) {
+            if ((!cachedServiceUuid.equalsIgnoreCase(latestServiceUuid)) || (cldsServiceData.getAgeOfRecord() != null
+                    && cldsServiceData.getAgeOfRecord() > Long.parseLong(defaultRecordAge))) {
                 expired = true;
             }
         } else {
@@ -351,29 +401,32 @@ public class SdcCatalogServices {
         return expired;
     }
 
-    public CldsServiceData getCldsServiceDataWithAlarmConditions(String invariantServiceUUID) throws Exception {
-        String url = refProp.getStringValue("asdc.serviceUrl");
-        String catalogUrl = refProp.getStringValue("asdc.catalog.url");
-        String serviceUUID = getServiceUUIDFromServiceInvariantID(invariantServiceUUID);
-        String serviceDetailUrl = url + "/" + serviceUUID + "/metadata";
+    public CldsServiceData getCldsServiceDataWithAlarmConditions(String invariantServiceUuid) throws Exception {
+        String url = refProp.getStringValue("sdc.serviceUrl");
+        String catalogUrl = refProp.getStringValue("sdc.catalog.url");
+        String serviceUuid = getServiceUuidFromServiceInvariantId(invariantServiceUuid);
+        String serviceDetailUrl = url + "/" + serviceUuid + "/metadata";
         String responseStr = getCldsServicesOrResourcesBasedOnURL(serviceDetailUrl, false);
         ObjectMapper objectMapper = new ObjectMapper();
         CldsServiceData cldsServiceData = new CldsServiceData();
         if (responseStr != null) {
-            CldsAsdcServiceDetail cldsAsdcServiceDetail = objectMapper.readValue(responseStr, CldsAsdcServiceDetail.class);
-            cldsServiceData.setServiceUUID(cldsAsdcServiceDetail.getUuid());
-            cldsServiceData.setServiceInvariantUUID(cldsAsdcServiceDetail.getInvariantUUID());
-
-            // To remove  duplicate  resources from serviceDetail and add valid vfs to service
-            if (cldsAsdcServiceDetail != null && cldsAsdcServiceDetail.getResources() != null) {
-                List<CldsAsdcResource> cldsAsdcResourceList = removeDuplicateAsdcResourceInstances(cldsAsdcServiceDetail.getResources());
-                if (cldsAsdcResourceList != null && cldsAsdcResourceList.size() > 0) {
+            CldsSdcServiceDetail cldsSdcServiceDetail = objectMapper.readValue(responseStr, CldsSdcServiceDetail.class);
+            cldsServiceData.setServiceUUID(cldsSdcServiceDetail.getUuid());
+            cldsServiceData.setServiceInvariantUUID(cldsSdcServiceDetail.getInvariantUUID());
+
+            // To remove duplicate resources from serviceDetail and add valid
+            // vfs to service
+            if (cldsSdcServiceDetail != null && cldsSdcServiceDetail.getResources() != null) {
+                List<CldsSdcResource> cldsSdcResourceList = removeDuplicateSdcResourceInstances(
+                        cldsSdcServiceDetail.getResources());
+                if (cldsSdcResourceList != null && cldsSdcResourceList.size() > 0) {
                     List<CldsVfData> cldsVfDataList = new ArrayList<>();
-                    for (CldsAsdcResource currCldsAsdcResource : cldsAsdcResourceList) {
-                        if (currCldsAsdcResource != null && currCldsAsdcResource.getResoucreType() != null && currCldsAsdcResource.getResoucreType().equalsIgnoreCase("VF")) {
+                    for (CldsSdcResource currCldsSdcResource : cldsSdcResourceList) {
+                        if (currCldsSdcResource != null && currCldsSdcResource.getResoucreType() != null
+                                && currCldsSdcResource.getResoucreType().equalsIgnoreCase("VF")) {
                             CldsVfData currCldsVfData = new CldsVfData();
-                            currCldsVfData.setVfName(currCldsAsdcResource.getResourceInstanceName());
-                            currCldsVfData.setVfInvariantResourceUUID(currCldsAsdcResource.getResourceInvariantUUID());
+                            currCldsVfData.setVfName(currCldsSdcResource.getResourceInstanceName());
+                            currCldsVfData.setVfInvariantResourceUUID(currCldsSdcResource.getResourceInvariantUUID());
                             cldsVfDataList.add(currCldsVfData);
                         }
                     }
@@ -395,35 +448,47 @@ public class SdcCatalogServices {
     private void getAllVfcForVfList(List<CldsVfData> cldsVfDataList, String catalogUrl) throws IOException {
         // todo : refact this..
         if (cldsVfDataList != null && cldsVfDataList.size() > 0) {
-            List<CldsAsdcResourceBasicInfo> allAsdcResources = getAllAsdcResources();
-            String resourceVFType = "VF";
-            List<CldsAsdcResourceBasicInfo> allVfResources = getAllAsdcVForVFCResourcesBasedOnResourceType(resourceVFType, allAsdcResources);
-            String resourceVFCType = "VFC";
-            List<CldsAsdcResourceBasicInfo> allVfcResources = getAllAsdcVForVFCResourcesBasedOnResourceType(resourceVFCType, allAsdcResources);
+            List<CldsSdcResourceBasicInfo> allVfResources = getAllSdcVForVFCResourcesBasedOnResourceType(
+                    RESOURCE_VF_TYPE);
+            List<CldsSdcResourceBasicInfo> allVfcResources = getAllSdcVForVFCResourcesBasedOnResourceType(
+                    RESOURCE_VFC_TYPE);
             for (CldsVfData currCldsVfData : cldsVfDataList) {
                 if (currCldsVfData != null && currCldsVfData.getVfInvariantResourceUUID() != null) {
-                    String resourceUUID = getResourceUUIDFromResourceInvariantUUID(currCldsVfData.getVfInvariantResourceUUID(), allVfResources);
-                    if (resourceUUID != null) {
-                        String vfResourceUUIDUrl = catalogUrl + "resources" + "/" + resourceUUID + "/metadata";
-                        String vfResponse = getCldsServicesOrResourcesBasedOnURL(vfResourceUUIDUrl, false);
+                    String resourceUuid = getResourceUuidFromResourceInvariantUuid(
+                            currCldsVfData.getVfInvariantResourceUUID(), allVfResources);
+                    if (resourceUuid != null) {
+                        String vfResourceUuidUrl = catalogUrl + "resources" + "/" + resourceUuid + "/metadata";
+                        String vfResponse = getCldsServicesOrResourcesBasedOnURL(vfResourceUuidUrl, false);
                         if (vfResponse != null) {
-                            List<CldsVfcData> vfcDataListFromVfResponse = getVFCDataListFromVfResponse(vfResponse);
+                            // Below 2 line are to get the KPI(field path) data
+                            // associated with the VF's
+                            List<CldsVfKPIData> cldsVfKPIDataList = getFieldPathFromVF(vfResponse);
+                            currCldsVfData.setCldsKPIList(cldsVfKPIDataList);
+
+                            List<CldsVfcData> vfcDataListFromVfResponse = getVfcDataListFromVfResponse(vfResponse);
                             if (vfcDataListFromVfResponse != null) {
                                 currCldsVfData.setCldsVfcs(vfcDataListFromVfResponse);
                                 if (vfcDataListFromVfResponse.size() > 0) {
-                                    // To get artifacts for every VFC and get alarm conditions from artifact
+                                    // To get artifacts for every VFC and get
+                                    // alarm conditions from artifact
                                     for (CldsVfcData currCldsVfcData : vfcDataListFromVfResponse) {
-                                        if (currCldsVfcData != null && currCldsVfcData.getVfcInvariantResourceUUID() != null) {
-                                            String resourceVFCUUID = getResourceUUIDFromResourceInvariantUUID(currCldsVfcData.getVfcInvariantResourceUUID(), allVfcResources);
-                                            if (resourceVFCUUID != null) {
-                                                String vfcResourceUUIDUrl = catalogUrl + "resources" + "/" + resourceVFCUUID + "/metadata";
-                                                String vfcResponse = getCldsServicesOrResourcesBasedOnURL(vfcResourceUUIDUrl, false);
+                                        if (currCldsVfcData != null
+                                                && currCldsVfcData.getVfcInvariantResourceUUID() != null) {
+                                            String resourceVfcUuid = getResourceUuidFromResourceInvariantUuid(
+                                                    currCldsVfcData.getVfcInvariantResourceUUID(), allVfcResources);
+                                            if (resourceVfcUuid != null) {
+                                                String vfcResourceUuidUrl = catalogUrl + "resources" + "/"
+                                                        + resourceVfcUuid + "/metadata";
+                                                String vfcResponse = getCldsServicesOrResourcesBasedOnURL(
+                                                        vfcResourceUuidUrl, false);
                                                 if (vfcResponse != null) {
-                                                    List<CldsAlarmCondition> alarmCondtionsFromVfc = getAlarmCondtionsFromVfc(vfcResponse);
+                                                    List<CldsAlarmCondition> alarmCondtionsFromVfc = getAlarmCondtionsFromVfc(
+                                                            vfcResponse);
                                                     currCldsVfcData.setCldsAlarmConditions(alarmCondtionsFromVfc);
                                                 }
                                             } else {
-                                                logger.info("No resourceVFC UUID found for given invariantID:" + currCldsVfcData.getVfcInvariantResourceUUID());
+                                                logger.info("No resourceVFC UUID found for given invariantID:"
+                                                        + currCldsVfcData.getVfcInvariantResourceUUID());
                                             }
                                         }
                                     }
@@ -431,14 +496,15 @@ public class SdcCatalogServices {
                             }
                         }
                     } else {
-                        logger.info("No resourceUUID found for given invariantREsourceUUID:" + currCldsVfData.getVfInvariantResourceUUID());
+                        logger.info("No resourceUUID found for given invariantREsourceUUID:"
+                                + currCldsVfData.getVfInvariantResourceUUID());
                     }
                 }
             }
         }
     }
 
-    private List<CldsVfcData> getVFCDataListFromVfResponse(String vfResponse) throws IOException {
+    private List<CldsVfcData> getVfcDataListFromVfResponse(String vfResponse) throws IOException {
         ObjectMapper mapper = new ObjectMapper();
         ObjectNode vfResponseNode = (ObjectNode) mapper.readTree(vfResponse);
         ArrayNode vfcArrayNode = (ArrayNode) vfResponseNode.get("resources");
@@ -450,9 +516,9 @@ public class SdcCatalogServices {
                 TextNode resourceTypeNode = (TextNode) currVfcNode.get("resoucreType");
                 if (resourceTypeNode != null && resourceTypeNode.textValue().equalsIgnoreCase("VFC")) {
                     TextNode vfcResourceName = (TextNode) currVfcNode.get("resourceInstanceName");
-                    TextNode vfcInvariantResourceUUID = (TextNode) currVfcNode.get("resourceInvariantUUID");
+                    TextNode vfcInvariantResourceUuid = (TextNode) currVfcNode.get("resourceInvariantUUID");
                     currCldsVfcData.setVfcName(vfcResourceName.textValue());
-                    currCldsVfcData.setVfcInvariantResourceUUID(vfcInvariantResourceUUID.textValue());
+                    currCldsVfcData.setVfcInvariantResourceUUID(vfcInvariantResourceUuid.textValue());
                     cldsVfcDataList.add(currCldsVfcData);
                 }
             }
@@ -501,6 +567,75 @@ public class SdcCatalogServices {
         return cldsAlarmConditionList;
     }
 
+    // Method to get the artifact for any particular VF
+    private List<CldsVfKPIData> getFieldPathFromVF(String vfResponse) throws JsonProcessingException, IOException {
+        List<CldsVfKPIData> cldsVfKPIDataList = new ArrayList<CldsVfKPIData>();
+        ObjectMapper mapper = new ObjectMapper();
+        ObjectNode vfResponseNode = (ObjectNode) mapper.readTree(vfResponse);
+        ArrayNode artifactsArrayNode = (ArrayNode) vfResponseNode.get("artifacts");
+
+        if (artifactsArrayNode != null && artifactsArrayNode.size() > 0) {
+            for (int index = 0; index < artifactsArrayNode.size(); index++) {
+                ObjectNode currArtifactNode = (ObjectNode) artifactsArrayNode.get(index);
+                TextNode artifactUrlNode = (TextNode) currArtifactNode.get("artifactURL");
+                TextNode artifactNameNode = (TextNode) currArtifactNode.get("artifactName");
+                String artifactName = "";
+                if (artifactNameNode != null) {
+                    artifactName = artifactNameNode.textValue();
+                    artifactName = artifactName.substring(artifactName.lastIndexOf(".") + 1);
+                }
+                if (artifactUrlNode != null && artifactName != null && !artifactName.isEmpty()
+                        && artifactName.equalsIgnoreCase("csv")) {
+                    String responsesFromArtifactUrl = getResponsesFromArtifactUrl(artifactUrlNode.textValue());
+                    cldsVfKPIDataList.addAll(parseCsvToGetFieldPath(responsesFromArtifactUrl));
+                    logger.info(responsesFromArtifactUrl);
+                }
+            }
+        }
+        return cldsVfKPIDataList;
+    }
+
+    private CldsVfKPIData convertCsvRecordToKpiData(CSVRecord record) {
+        if (record.size() < 6) {
+            logger.debug("invalid csv field path Record,total columns less than 6: " + record);
+            return null;
+        }
+
+        if (StringUtils.isBlank(record.get(1)) || StringUtils.isBlank(record.get(3))
+                || StringUtils.isBlank(record.get(5))) {
+            logger.debug("Invalid csv field path Record,one of column is having blank value : " + record);
+            return null;
+        }
+
+        CldsVfKPIData cldsVfKPIData = new CldsVfKPIData();
+        cldsVfKPIData.setNfNamingCode(record.get(0).trim());
+        cldsVfKPIData.setNfNamingValue(record.get(1).trim());
+
+        cldsVfKPIData.setFieldPath(record.get(2).trim());
+        cldsVfKPIData.setFieldPathValue(record.get(3).trim());
+
+        cldsVfKPIData.setThresholdName(record.get(4).trim());
+        cldsVfKPIData.setThresholdValue(record.get(5).trim());
+        return cldsVfKPIData;
+
+    }
+
+    // Method to get the artifactURL Data and set the CldsVfKPIData node
+    private List<CldsVfKPIData> parseCsvToGetFieldPath(String allFieldPathValues) throws IOException {
+        List<CldsVfKPIData> cldsVfKPIDataList = new ArrayList<CldsVfKPIData>();
+        Reader alarmReader = new StringReader(allFieldPathValues);
+        Iterable<CSVRecord> records = CSVFormat.RFC4180.parse(alarmReader);
+        if (records != null) {
+            for (CSVRecord record : records) {
+                CldsVfKPIData kpiData = this.convertCsvRecordToKpiData(record);
+                if (kpiData != null) {
+                    cldsVfKPIDataList.add(kpiData);
+                }
+            }
+        }
+        return cldsVfKPIDataList;
+    }
+
     private void processRecord(List<CldsAlarmCondition> cldsAlarmConditionList, CSVRecord record) {
         if (record == null) {
             return;
@@ -509,7 +644,8 @@ public class SdcCatalogServices {
             logger.debug("invalid csv alarm Record,total columns less than 5: " + record);
             return;
         }
-        if (StringUtils.isBlank(record.get(1)) || StringUtils.isBlank(record.get(3)) || StringUtils.isBlank(record.get(4))) {
+        if (StringUtils.isBlank(record.get(1)) || StringUtils.isBlank(record.get(3))
+                || StringUtils.isBlank(record.get(4))) {
             logger.debug("invalid csv alarm Record,one of column is having blank value : " + record);
             return;
         }
@@ -520,8 +656,8 @@ public class SdcCatalogServices {
         cldsAlarmConditionList.add(cldsAlarmCondition);
     }
 
-    private String getResponsesFromArtifactUrl(String artifactsUrl) throws IOException {
-        String hostUrl = refProp.getStringValue("asdc.hostUrl");
+    public String getResponsesFromArtifactUrl(String artifactsUrl) throws IOException {
+        String hostUrl = refProp.getStringValue("sdc.hostUrl");
         artifactsUrl = artifactsUrl.replaceAll("\"", "");
         String artifactUrl = hostUrl + artifactsUrl;
         logger.info("value of artifactURl:" + artifactUrl);
@@ -531,22 +667,23 @@ public class SdcCatalogServices {
     }
 
     /**
-     * Service to services/resources/artifacts from asdc.Pass alarmConditions as true to get alarmconditons from artifact url and else it is false
+     * Service to services/resources/artifacts from sdc.Pass alarmConditions as
+     * true to get alarmconditons from artifact url and else it is false
      *
      * @param url
      * @param alarmConditions
      * @return
      * @throws IOException
      */
-    private String getCldsServicesOrResourcesBasedOnURL(String url, boolean alarmConditions) throws IOException {
+    public String getCldsServicesOrResourcesBasedOnURL(String url, boolean alarmConditions) {
         String responseStr;
         try {
             url = removeUnwantedBracesFromString(url);
             URL urlObj = new URL(url);
 
             HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection();
-            String basicAuth = SdcReq.getAsdcBasicAuth(refProp);
-            conn.setRequestProperty("X-ONAP-InstanceID", "CLAMP-Tool");
+            String basicAuth = SdcReq.getSdcBasicAuth(refProp);
+            conn.setRequestProperty(refProp.getStringValue("sdc.InstanceID"), "CLAMP-Tool");
             conn.setRequestProperty("Authorization", basicAuth);
             conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
             conn.setRequestMethod("GET");
@@ -565,11 +702,12 @@ public class SdcCatalogServices {
             }
             responseStr = response.toString();
             in.close();
+            return responseStr;
         } catch (Exception e) {
-            logger.error("Exception occured :" + e.getMessage());
-            throw e;
+            logger.error("Exception occurred :", e);
+            return "";
         }
-        return responseStr;
+
     }
 
     /**
@@ -586,40 +724,42 @@ public class SdcCatalogServices {
         ObjectNode globalPropsJson;
         if (cldsServiceData != null && cldsServiceData.getServiceUUID() != null) {
 
-            /**
-             *  Objectnode to save all byservice, byvf , byvfc and byalarm nodes
-             */
+            // Objectnode to save all byservice, byvf , byvfc and byalarm nodes
             ObjectNode byIdObjectNode = mapper.createObjectNode();
-            /**
-             * To create vf ResourceUUID node with serviceInvariantUUID
-             *
-             */
-            ObjectNode invariantUUIDObjectNodeWithVF = createVFObjectNodeByServiceInvariantUUID(mapper, cldsServiceData);
-            byIdObjectNode.putPOJO("byService", invariantUUIDObjectNodeWithVF);
 
-            /**
-             *  To create byVf and vfcResourceNode with vfResourceUUID
-             */
-            ObjectNode vfcObjectNodeByVfUUID = createVFCObjectNodeByVfUUID(mapper, cldsServiceData.getCldsVfs());
-            byIdObjectNode.putPOJO("byVf", vfcObjectNodeByVfUUID);
+            // To create vf ResourceUUID node with serviceInvariantUUID
+            ObjectNode invariantUuidObjectNodeWithVF = createVFObjectNodeByServiceInvariantUUID(mapper,
+                    cldsServiceData);
+            byIdObjectNode.putPOJO("byService", invariantUuidObjectNodeWithVF);
 
+            // To create byVf and vfcResourceNode with vfResourceUUID
+            ObjectNode vfcObjectNodeByVfUuid = createVFCObjectNodeByVfUuid(mapper, cldsServiceData.getCldsVfs());
+            byIdObjectNode.putPOJO("byVf", vfcObjectNodeByVfUuid);
 
-            /**
-             *  To create byVfc and alarmCondition with vfcResourceUUID
-             */
-            ObjectNode vfcResourceUUIDObjectNode = mapper.createObjectNode();
+            // To create byKpi
+            ObjectNode kpiObjectNode = mapper.createObjectNode();
             if (cldsServiceData.getCldsVfs() != null && cldsServiceData.getCldsVfs().size() > 0) {
                 for (CldsVfData currCldsVfData : cldsServiceData.getCldsVfs()) {
                     if (currCldsVfData != null) {
-                        createAlarmCondObjectNodeByVfcUUID(mapper, vfcResourceUUIDObjectNode, currCldsVfData.getCldsVfcs());
+                        createKPIObjectNodeByVfUUID(mapper, kpiObjectNode, currCldsVfData.getCldsKPIList());
                     }
                 }
             }
-            byIdObjectNode.putPOJO("byVfc", vfcResourceUUIDObjectNode);
+            byIdObjectNode.putPOJO("byKpi", kpiObjectNode);
 
-            /**
-             *  To create byAlarmCondition  with alarmConditionKey
-             */
+            // To create byVfc and alarmCondition with vfcResourceUUID
+            ObjectNode vfcResourceUuidObjectNode = mapper.createObjectNode();
+            if (cldsServiceData.getCldsVfs() != null && cldsServiceData.getCldsVfs().size() > 0) {
+                for (CldsVfData currCldsVfData : cldsServiceData.getCldsVfs()) {
+                    if (currCldsVfData != null) {
+                        createAlarmCondObjectNodeByVfcUuid(mapper, vfcResourceUuidObjectNode,
+                                currCldsVfData.getCldsVfcs());
+                    }
+                }
+            }
+            byIdObjectNode.putPOJO("byVfc", vfcResourceUuidObjectNode);
+
+            // To create byAlarmCondition with alarmConditionKey
             List<CldsAlarmCondition> allAlarmConditions = getAllAlarmConditionsFromCldsServiceData(cldsServiceData);
             ObjectNode alarmCondObjectNodeByAlarmKey = createAlarmCondObjectNodeByAlarmKey(mapper, allAlarmConditions);
 
@@ -631,7 +771,7 @@ public class SdcCatalogServices {
             logger.info("valuie of objNode:" + globalPropsJson);
         } else {
             /**
-             *  to create json with total properties when no serviceUUID passed
+             * to create json with total properties when no serviceUUID passed
              */
             globalPropsJson = (ObjectNode) mapper.readValue(globalProps, JsonNode.class);
         }
@@ -639,13 +779,16 @@ public class SdcCatalogServices {
         return totalPropsStr;
     }
 
-    private List<CldsAlarmCondition> getAllAlarmConditionsFromCldsServiceData(CldsServiceData cldsServiceData) {
+    public List<CldsAlarmCondition> getAllAlarmConditionsFromCldsServiceData(CldsServiceData cldsServiceData) {
         List<CldsAlarmCondition> alarmCondList = new ArrayList<>();
-        if (cldsServiceData != null && cldsServiceData.getCldsVfs() != null && cldsServiceData.getCldsVfs().size() > 0) {
+        if (cldsServiceData != null && cldsServiceData.getCldsVfs() != null
+                && cldsServiceData.getCldsVfs().size() > 0) {
             for (CldsVfData currCldsVfData : cldsServiceData.getCldsVfs()) {
-                if (currCldsVfData != null && currCldsVfData.getCldsVfcs() != null && currCldsVfData.getCldsVfcs().size() > 0) {
+                if (currCldsVfData != null && currCldsVfData.getCldsVfcs() != null
+                        && currCldsVfData.getCldsVfcs().size() > 0) {
                     for (CldsVfcData currCldsVfcData : currCldsVfData.getCldsVfcs()) {
-                        if (currCldsVfcData != null && currCldsVfcData.getCldsAlarmConditions() != null && currCldsVfcData.getCldsAlarmConditions().size() > 0) {
+                        if (currCldsVfcData != null && currCldsVfcData.getCldsAlarmConditions() != null
+                                && currCldsVfcData.getCldsAlarmConditions().size() > 0) {
                             for (CldsAlarmCondition currCldsAlarmCondition : currCldsVfcData.getCldsAlarmConditions()) {
                                 if (currCldsAlarmCondition != null) {
                                     alarmCondList.add(currCldsAlarmCondition);
@@ -659,7 +802,8 @@ public class SdcCatalogServices {
         return alarmCondList;
     }
 
-    private ObjectNode createAlarmCondObjectNodeByAlarmKey(ObjectMapper mapper, List<CldsAlarmCondition> cldsAlarmCondList) {
+    private ObjectNode createAlarmCondObjectNodeByAlarmKey(ObjectMapper mapper,
+            List<CldsAlarmCondition> cldsAlarmCondList) {
         ObjectNode alarmCondKeyNode = mapper.createObjectNode();
 
         if (cldsAlarmCondList != null && cldsAlarmCondList.size() > 0) {
@@ -681,39 +825,66 @@ public class SdcCatalogServices {
     }
 
     private ObjectNode createVFObjectNodeByServiceInvariantUUID(ObjectMapper mapper, CldsServiceData cldsServiceData) {
-        ObjectNode invariantUUIDObjectNode = mapper.createObjectNode();
+        ObjectNode invariantUuidObjectNode = mapper.createObjectNode();
         ObjectNode vfObjectNode = mapper.createObjectNode();
-        ObjectNode vfUUIDNode = mapper.createObjectNode();
+        ObjectNode vfUuidNode = mapper.createObjectNode();
         List<CldsVfData> cldsVfsList = cldsServiceData.getCldsVfs();
         if (cldsVfsList != null && cldsVfsList.size() > 0) {
             for (CldsVfData currCldsVfData : cldsVfsList) {
                 if (currCldsVfData != null) {
-                    vfUUIDNode.put(currCldsVfData.getVfInvariantResourceUUID(), currCldsVfData.getVfName());
+                    vfUuidNode.put(currCldsVfData.getVfInvariantResourceUUID(), currCldsVfData.getVfName());
                 }
             }
         } else {
-            vfUUIDNode.put("", "");
+            vfUuidNode.put("", "");
         }
-        vfObjectNode.putPOJO("vf", vfUUIDNode);
-        invariantUUIDObjectNode.putPOJO(cldsServiceData.getServiceInvariantUUID(), vfObjectNode);
-        return invariantUUIDObjectNode;
+        vfObjectNode.putPOJO("vf", vfUuidNode);
+        invariantUuidObjectNode.putPOJO(cldsServiceData.getServiceInvariantUUID(), vfObjectNode);
+        return invariantUuidObjectNode;
     }
 
-    private void createAlarmCondObjectNodeByVfcUUID(ObjectMapper mapper, ObjectNode vfcResourceUUIDObjectNode, List<CldsVfcData> cldsVfcDataList) {
+    private void createKPIObjectNodeByVfUUID(ObjectMapper mapper, ObjectNode vfResourceUUIDObjectNode,
+            List<CldsVfKPIData> cldsVfKPIDataList) {
+        if (cldsVfKPIDataList != null && cldsVfKPIDataList.size() > 0) {
+            for (CldsVfKPIData currCldsVfKPIData : cldsVfKPIDataList) {
+                if (currCldsVfKPIData != null) {
+                    ObjectNode thresholdNameObjectNode = mapper.createObjectNode();
+
+                    ObjectNode fieldPathObjectNode = mapper.createObjectNode();
+                    ObjectNode nfNamingCodeNode = mapper.createObjectNode();
+
+                    fieldPathObjectNode.put(currCldsVfKPIData.getFieldPathValue(),
+                            currCldsVfKPIData.getFieldPathValue());
+                    nfNamingCodeNode.put(currCldsVfKPIData.getNfNamingValue(), currCldsVfKPIData.getNfNamingValue());
+
+                    thresholdNameObjectNode.putPOJO("fieldPath", fieldPathObjectNode);
+                    thresholdNameObjectNode.putPOJO("nfNamingCode", nfNamingCodeNode);
+
+                    vfResourceUUIDObjectNode.putPOJO(currCldsVfKPIData.getThresholdValue(), thresholdNameObjectNode);
+                }
+            }
+        }
+    }
+
+    private void createAlarmCondObjectNodeByVfcUuid(ObjectMapper mapper, ObjectNode vfcResourceUUIDObjectNode,
+            List<CldsVfcData> cldsVfcDataList) {
         ObjectNode alarmCondContsObjectNode = mapper.createObjectNode();
         ObjectNode alarmCondNode = mapper.createObjectNode();
-        //     alarmCondNode.put("", "");
+        // alarmCondNode.put("", "");
         if (cldsVfcDataList != null && cldsVfcDataList.size() > 0) {
             for (CldsVfcData currCldsVfcData : cldsVfcDataList) {
                 if (currCldsVfcData != null) {
-                    if (currCldsVfcData.getCldsAlarmConditions() != null && currCldsVfcData.getCldsAlarmConditions().size() > 0) {
+                    if (currCldsVfcData.getCldsAlarmConditions() != null
+                            && currCldsVfcData.getCldsAlarmConditions().size() > 0) {
                         for (CldsAlarmCondition currCldsAlarmCondition : currCldsVfcData.getCldsAlarmConditions()) {
-                            alarmCondNode.put(currCldsAlarmCondition.getAlarmConditionKey(), currCldsAlarmCondition.getAlarmConditionKey());
+                            alarmCondNode.put(currCldsAlarmCondition.getAlarmConditionKey(),
+                                    currCldsAlarmCondition.getAlarmConditionKey());
                         }
                         alarmCondContsObjectNode.putPOJO("alarmCondition", alarmCondNode);
                     }
                     alarmCondContsObjectNode.putPOJO("alarmCondition", alarmCondNode);
-                    vfcResourceUUIDObjectNode.putPOJO(currCldsVfcData.getVfcInvariantResourceUUID(), alarmCondContsObjectNode);
+                    vfcResourceUUIDObjectNode.putPOJO(currCldsVfcData.getVfcInvariantResourceUUID(),
+                            alarmCondContsObjectNode);
                 }
             }
         } else {
@@ -723,48 +894,51 @@ public class SdcCatalogServices {
         }
     }
 
-    private ObjectNode createVFCObjectNodeByVfUUID(ObjectMapper mapper, List<CldsVfData> cldsVfDataList) {
+    private ObjectNode createVFCObjectNodeByVfUuid(ObjectMapper mapper, List<CldsVfData> cldsVfDataList) {
         ObjectNode vfUUIDObjectNode = mapper.createObjectNode();
 
         if (cldsVfDataList != null && cldsVfDataList.size() > 0) {
             for (CldsVfData currCldsVfData : cldsVfDataList) {
                 if (currCldsVfData != null) {
                     ObjectNode vfcObjectNode = mapper.createObjectNode();
-                    ObjectNode vfcUUIDNode = mapper.createObjectNode();
+                    ObjectNode vfcUuidNode = mapper.createObjectNode();
                     if (currCldsVfData.getCldsVfcs() != null && currCldsVfData.getCldsVfcs().size() > 0) {
                         for (CldsVfcData currCldsVfcData : currCldsVfData.getCldsVfcs()) {
-                            vfcUUIDNode.put(currCldsVfcData.getVfcInvariantResourceUUID(), currCldsVfcData.getVfcName());
+                            vfcUuidNode.put(currCldsVfcData.getVfcInvariantResourceUUID(),
+                                    currCldsVfcData.getVfcName());
                         }
                     } else {
-                        vfcUUIDNode.put("", "");
+                        vfcUuidNode.put("", "");
                     }
-                    vfcObjectNode.putPOJO("vfc", vfcUUIDNode);
+                    vfcObjectNode.putPOJO("vfc", vfcUuidNode);
                     vfUUIDObjectNode.putPOJO(currCldsVfData.getVfInvariantResourceUUID(), vfcObjectNode);
                 }
             }
         } else {
-            ObjectNode vfcUUIDNode = mapper.createObjectNode();
-            vfcUUIDNode.put("", "");
+            ObjectNode vfcUuidNode = mapper.createObjectNode();
+            vfcUuidNode.put("", "");
             ObjectNode vfcObjectNode = mapper.createObjectNode();
-            vfcObjectNode.putPOJO("vfc", vfcUUIDNode);
+            vfcObjectNode.putPOJO("vfc", vfcUuidNode);
             vfUUIDObjectNode.putPOJO("", vfcObjectNode);
         }
         return vfUUIDObjectNode;
     }
 
-    public String getArtifactIdIfArtifactAlreadyExists(CldsAsdcServiceDetail cldsAsdcServiceDetail, String artifactName) {
-        String artifactUUId = null;
+    public String getArtifactIdIfArtifactAlreadyExists(CldsSdcServiceDetail CldsSdcServiceDetail, String artifactName) {
+        String artifactUuid = null;
         boolean artifactxists = false;
-        if (cldsAsdcServiceDetail != null && cldsAsdcServiceDetail.getResources() != null && cldsAsdcServiceDetail.getResources().size() > 0) {
-            for (CldsAsdcResource currCldsAsdcResource : cldsAsdcServiceDetail.getResources()) {
+        if (CldsSdcServiceDetail != null && CldsSdcServiceDetail.getResources() != null
+                && CldsSdcServiceDetail.getResources().size() > 0) {
+            for (CldsSdcResource currCldsSdcResource : CldsSdcServiceDetail.getResources()) {
                 if (artifactxists) {
                     break;
                 }
-                if (currCldsAsdcResource != null && currCldsAsdcResource.getArtifacts() != null && currCldsAsdcResource.getArtifacts().size() > 0) {
-                    for (CldsAsdcArtifact currCldsAsdcArtifact : currCldsAsdcResource.getArtifacts()) {
-                        if (currCldsAsdcArtifact != null && currCldsAsdcArtifact.getArtifactName() != null) {
-                            if (currCldsAsdcArtifact.getArtifactName().equalsIgnoreCase(artifactName)) {
-                                artifactUUId = currCldsAsdcArtifact.getArtifactUUID();
+                if (currCldsSdcResource != null && currCldsSdcResource.getArtifacts() != null
+                        && currCldsSdcResource.getArtifacts().size() > 0) {
+                    for (CldsSdcArtifact currCldsSdcArtifact : currCldsSdcResource.getArtifacts()) {
+                        if (currCldsSdcArtifact != null && currCldsSdcArtifact.getArtifactName() != null) {
+                            if (currCldsSdcArtifact.getArtifactName().equalsIgnoreCase(artifactName)) {
+                                artifactUuid = currCldsSdcArtifact.getArtifactUUID();
                                 artifactxists = true;
                                 break;
                             }
@@ -773,27 +947,25 @@ public class SdcCatalogServices {
                 }
             }
         }
-        return artifactUUId;
+        return artifactUuid;
     }
 
-    public String updateControlLoopStatusToDCAE(String dcaeUrl, String invariantResourceUUID, String invariantServiceUUID, String artifactName) {
-        String baseUrl = refProp.getStringValue("asdc.serviceUrl");
-        String basicAuth = SdcReq.getAsdcBasicAuth(refProp);
-        String postStatusData = "{ \n" +
-                "\"event\" : \"" + "Created" + "\",\n" +
-                "\"serviceUUID\" : \"" + invariantServiceUUID + "\",\n" +
-                "\"resourceUUID\" :\"" + invariantResourceUUID + "\",\n" +
-                "\"artifactName\" : \"" + artifactName + "\",\n" +
-                "} \n";
+    public String updateControlLoopStatusToDcae(String dcaeUrl, String invariantResourceUuid,
+            String invariantServiceUuid, String artifactName) {
+        String baseUrl = refProp.getStringValue("sdc.serviceUrl");
+        String basicAuth = SdcReq.getSdcBasicAuth(refProp);
+        String postStatusData = "{ \n" + "\"event\" : \"" + "Created" + "\",\n" + "\"serviceUUID\" : \""
+                + invariantServiceUuid + "\",\n" + "\"resourceUUID\" :\"" + invariantResourceUuid + "\",\n"
+                + "\"artifactName\" : \"" + artifactName + "\",\n" + "} \n";
         try {
             String url = baseUrl;
-            if (invariantServiceUUID != null) {
+            if (invariantServiceUuid != null) {
                 url = dcaeUrl + "/closed-loops";
             }
             URL urlObj = new URL(url);
 
             HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection();
-            conn.setRequestProperty("X-ONAP-InstanceID", "CLAMP-Tool");
+            conn.setRequestProperty(refProp.getStringValue("sdc.InstanceID"), "CLAMP-Tool");
             conn.setRequestProperty("Authorization", basicAuth);
             conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
             conn.setRequestMethod("POST");
@@ -811,54 +983,40 @@ public class SdcCatalogServices {
                 return resp;
             }
         } catch (Exception e) {
-            logger.error("not able to ger any service information from asdc for uuid:" + invariantServiceUUID);
+            logger.error("not able to ger any service information from sdc for uuid:" + invariantServiceUuid);
         }
         return "";
     }
 
     /**
-     * To get all asdc VF/VFC Resources basic info
+     * To get all sdc VF/VFC Resources basic info
      *
      * @return
      * @throws IOException
      */
-    private List<CldsAsdcResourceBasicInfo> getAllAsdcVForVFCResourcesBasedOnResourceType(String resourceType, List<CldsAsdcResourceBasicInfo> allAsdcResources) throws IOException {
-        List<CldsAsdcResourceBasicInfo> allAsdcVFResources = new ArrayList<>();
-        if (allAsdcResources != null && allAsdcResources.size() > 0) {
-            for (CldsAsdcResourceBasicInfo currResource : allAsdcResources) {
-                if (currResource != null && currResource.getResourceType() != null && currResource.getResourceType().equalsIgnoreCase(resourceType)) {
-                    allAsdcVFResources.add(currResource);
-                }
-            }
-        }
-        return allAsdcVFResources;
+    private List<CldsSdcResourceBasicInfo> getAllSdcVForVFCResourcesBasedOnResourceType(String resourceType)
+            throws IOException {
+        List<CldsSdcResourceBasicInfo> allSdcResourceVFCBasicInfo = new ArrayList<CldsSdcResourceBasicInfo>();
+        String catalogUrl = refProp.getStringValue("sdc.catalog.url");
+        String resourceUrl = catalogUrl + "resources?resourceType=" + resourceType;
+        String allSdcVFCResources = getCldsServicesOrResourcesBasedOnURL(resourceUrl, false);
+
+        allSdcResourceVFCBasicInfo = getAllSdcResourcesListFromJson(allSdcVFCResources);
+        return removeDuplicateSdcResourceBasicInfo(allSdcResourceVFCBasicInfo);
     }
 
-    private String getResourceUUIDFromResourceInvariantUUID(String resourceInvariantUUID, List<CldsAsdcResourceBasicInfo> resourceInfoList) throws IOException {
-        String resourceUUID = null;
+    private String getResourceUuidFromResourceInvariantUuid(String resourceInvariantUUID,
+            List<CldsSdcResourceBasicInfo> resourceInfoList) throws IOException {
+        String resourceUuid = null;
         if (resourceInfoList != null && resourceInfoList.size() > 0) {
-            for (CldsAsdcResourceBasicInfo currResource : resourceInfoList) {
+            for (CldsSdcResourceBasicInfo currResource : resourceInfoList) {
                 if (currResource != null && currResource.getInvariantUUID() != null && currResource.getUuid() != null
                         && currResource.getInvariantUUID().equalsIgnoreCase(resourceInvariantUUID)) {
-                    resourceUUID = currResource.getUuid();
+                    resourceUuid = currResource.getUuid();
                     break;
                 }
             }
         }
-        return resourceUUID;
-    }
-
-    /**
-     * To get all asdc Resources basic info
-     *
-     * @return
-     * @throws IOException
-     */
-    private List<CldsAsdcResourceBasicInfo> getAllAsdcResources() throws IOException {
-        String catalogUrl = refProp.getStringValue("asdc.catalog.url");
-        String resourceUrl = catalogUrl + "resources";
-        String allAsdcResources = getCldsServicesOrResourcesBasedOnURL(resourceUrl, false);
-        List<CldsAsdcResourceBasicInfo> allAsdcResourceBasicInfo = getAllAsdcResourcesListFromJson(allAsdcResources);
-        return removeDuplicateAsdcResourceBasicInfo(allAsdcResourceBasicInfo);
+        return resourceUuid;
     }
 }
index 93b6e95..47a4ddc 100644 (file)
@@ -5,16 +5,16 @@
  * Copyright (C) 2017 AT&T Intellectual Property. All rights
  *                             reserved.
  * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License"); 
- * you may not use this file except in compliance with the License. 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software 
- * distributed under the License is distributed on an "AS IS" BASIS, 
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- * See the License for the specific language governing permissions and 
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
  * limitations under the License.
  * ============LICENSE_END============================================
  * ===================================================================
 
 package org.onap.clamp.clds.client;
 
+import java.util.List;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.camunda.bpm.engine.delegate.JavaDelegate;
 import org.onap.clamp.clds.client.req.SdcReq;
-import org.onap.clamp.clds.model.CldsAsdcServiceDetail;
+import org.onap.clamp.clds.model.CldsSdcServiceDetail;
 import org.onap.clamp.clds.model.DcaeEvent;
 import org.onap.clamp.clds.model.prop.Global;
 import org.onap.clamp.clds.model.prop.ModelProperties;
 import org.onap.clamp.clds.model.refprop.RefProp;
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-import org.camunda.bpm.engine.delegate.JavaDelegate;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 
-import java.util.List;
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
 
 /**
  * Send control loop model to dcae proxy.
  */
 public class SdcSendReqDelegate implements JavaDelegate {
-    // currently uses the java.util.logging.Logger like the Camunda engine
-    private static final Logger logger = LoggerFactory.getLogger(SdcSendReqDelegate.class);
+    protected static final EELFLogger logger        = EELFManager.getInstance().getLogger(SdcSendReqDelegate.class);
+    protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
 
     @Autowired
-    private RefProp refProp;
+    private RefProp                 refProp;
 
     @Autowired
-    private SdcCatalogServices asdcCatalogServices;
+    private SdcCatalogServices      sdcCatalogServices;
 
-    private String baseUrl;
-    private String artifactType;
-    private String locationArtifactType;
-    private String artifactLabel;
-    private String locationArtifactLabel;
+    private String                  baseUrl;
+    private String                  artifactType;
+    private String                  locationArtifactType;
+    private String                  artifactLabel;
+    private String                  locationArtifactLabel;
 
     /**
-     * Perform activity.  Send to asdc proxy.
+     * Perform activity. Send to sdc proxy.
      *
      * @param execution
      */
+    @Override
     public void execute(DelegateExecution execution) throws Exception {
         String userid = (String) execution.getVariable("userid");
         logger.info("userid=" + userid);
-        String docText = (String) execution.getVariable("docText");
-        String artifactName = execution.getVariable("controlName") + DcaeEvent.ARTIFACT_NAME_SUFFIX;
+        String docText = new String((byte[]) execution.getVariable("docText"));
+        String artifactName = (String) execution.getVariable("controlName") + DcaeEvent.ARTIFACT_NAME_SUFFIX;
         execution.setVariable("artifactName", artifactName);
-        getAsdcAttributes();
+        getSdcAttributes((String) execution.getVariable("controlName"));
         ModelProperties prop = ModelProperties.create(execution);
         String bluprintPayload = SdcReq.formatBlueprint(refProp, prop, docText);
-        String formatttedAsdcReq = SdcReq.formatAsdcReq(bluprintPayload, artifactName, artifactLabel, artifactType);
-        if (formatttedAsdcReq != null) {
-            execution.setVariable("formattedArtifactReq", formatttedAsdcReq.getBytes());
+        String formatttedSdcReq = SdcReq.formatSdcReq(bluprintPayload, artifactName, artifactLabel, artifactType);
+        if (formatttedSdcReq != null) {
+            execution.setVariable("formattedArtifactReq", formatttedSdcReq.getBytes());
         }
-        List<String> asdcReqUrlsList = SdcReq.getAsdcReqUrlsList(prop, baseUrl, asdcCatalogServices, execution);
+        List<String> sdcReqUrlsList = SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, execution);
 
-        String asdcLocationsPayload = SdcReq.formatAsdcLocationsReq(prop, artifactName);
-        String locationArtifactName = execution.getVariable("controlName") + "-location.json";
-        String formattedAsdcLocationReq = SdcReq.formatAsdcReq(asdcLocationsPayload, locationArtifactName, locationArtifactLabel, locationArtifactType);
-        if (formattedAsdcLocationReq != null) {
-            execution.setVariable("formattedLocationReq", formattedAsdcLocationReq.getBytes());
+        String sdcLocationsPayload = SdcReq.formatSdcLocationsReq(prop, artifactName);
+        String locationArtifactName = (String) execution.getVariable("controlName") + "-location.json";
+        String formattedSdcLocationReq = SdcReq.formatSdcReq(sdcLocationsPayload, locationArtifactName,
+                locationArtifactLabel, locationArtifactType);
+        if (formattedSdcLocationReq != null) {
+            execution.setVariable("formattedLocationReq", formattedSdcLocationReq.getBytes());
         }
         String serviceInvariantUUID = getServiceInvariantUUIDFromProps(prop);
-        uploadToAsdc(prop, serviceInvariantUUID, userid, asdcReqUrlsList, formatttedAsdcReq, formattedAsdcLocationReq, artifactName, locationArtifactName);
+        uploadToSdc(prop, serviceInvariantUUID, userid, sdcReqUrlsList, formatttedSdcReq, formattedSdcLocationReq,
+                artifactName, locationArtifactName);
     }
 
     private String getServiceInvariantUUIDFromProps(ModelProperties props) {
@@ -97,42 +101,53 @@ public class SdcSendReqDelegate implements JavaDelegate {
         return invariantUUID;
     }
 
-    private void uploadToAsdc(ModelProperties prop, String serviceInvariantUUID, String userid, List<String> asdcReqUrlsList, String formatttedAsdcReq, String formattedAsdcLocationReq, String artifactName, String locationArtifactName) throws Exception {
+    private void uploadToSdc(ModelProperties prop, String serviceInvariantUUID, String userid,
+            List<String> sdcReqUrlsList, String formatttedSdcReq, String formattedSdcLocationReq, String artifactName,
+            String locationArtifactName) throws Exception {
         logger.info("userid=" + userid);
-        if (asdcReqUrlsList != null && asdcReqUrlsList.size() > 0) {
-            for (String url : asdcReqUrlsList) {
+        if (sdcReqUrlsList != null && sdcReqUrlsList.size() > 0) {
+            for (String url : sdcReqUrlsList) {
                 if (url != null) {
-                    String originalServiceUUID = asdcCatalogServices.getServiceUUIDFromServiceInvariantID(serviceInvariantUUID);
+                    String originalServiceUUID = sdcCatalogServices
+                            .getServiceUuidFromServiceInvariantId(serviceInvariantUUID);
                     logger.info("ServiceUUID used before upload in url:" + originalServiceUUID);
-                    String asdcServicesInformation = asdcCatalogServices.getAsdcServicesInformation(originalServiceUUID);
-                    CldsAsdcServiceDetail cldsAsdcServiceDetail = asdcCatalogServices.getCldsAsdcServiceDetailFromJson(asdcServicesInformation);
-                    String uploadedArtifactUUID = asdcCatalogServices.getArtifactIdIfArtifactAlreadyExists(cldsAsdcServiceDetail, artifactName);
-                    // Upload artifacts to asdc
+                    String sdcServicesInformation = sdcCatalogServices.getSdcServicesInformation(originalServiceUUID);
+                    CldsSdcServiceDetail CldsSdcServiceDetail = sdcCatalogServices
+                            .getCldsSdcServiceDetailFromJson(sdcServicesInformation);
+                    String uploadedArtifactUUID = sdcCatalogServices
+                            .getArtifactIdIfArtifactAlreadyExists(CldsSdcServiceDetail, artifactName);
+                    // Upload artifacts to sdc
                     String updateUrl = uploadedArtifactUUID != null ? url + "/" + uploadedArtifactUUID : url;
-                    String responseStr = asdcCatalogServices.uploadArtifactToAsdc(prop, userid, updateUrl, formatttedAsdcReq);
-                    logger.info("value of asdc Response of uploading to asdc :" + responseStr);
-                    String updatedServiceUUID = asdcCatalogServices.getServiceUUIDFromServiceInvariantID(serviceInvariantUUID);
+                    String responseStr = sdcCatalogServices.uploadArtifactToSdc(prop, userid, updateUrl,
+                            formatttedSdcReq);
+                    logger.info("value of sdc Response of uploading to sdc :" + responseStr);
+                    String updatedServiceUUID = sdcCatalogServices
+                            .getServiceUuidFromServiceInvariantId(serviceInvariantUUID);
                     if (!originalServiceUUID.equalsIgnoreCase(updatedServiceUUID)) {
                         url = url.replace(originalServiceUUID, updatedServiceUUID);
                     }
                     logger.info("ServiceUUID used after upload in ulr:" + updatedServiceUUID);
-                    asdcServicesInformation = asdcCatalogServices.getAsdcServicesInformation(updatedServiceUUID);
-                    cldsAsdcServiceDetail = asdcCatalogServices.getCldsAsdcServiceDetailFromJson(asdcServicesInformation);
-                    uploadedArtifactUUID = asdcCatalogServices.getArtifactIdIfArtifactAlreadyExists(cldsAsdcServiceDetail, locationArtifactName);
-                    //  To send location information also to asdc
+                    sdcServicesInformation = sdcCatalogServices.getSdcServicesInformation(updatedServiceUUID);
+                    CldsSdcServiceDetail = sdcCatalogServices.getCldsSdcServiceDetailFromJson(sdcServicesInformation);
+                    uploadedArtifactUUID = sdcCatalogServices.getArtifactIdIfArtifactAlreadyExists(CldsSdcServiceDetail,
+                            locationArtifactName);
+                    // To send location information also to sdc
                     updateUrl = uploadedArtifactUUID != null ? url + "/" + uploadedArtifactUUID : url;
-                    responseStr = asdcCatalogServices.uploadArtifactToAsdc(prop, userid, updateUrl, formattedAsdcLocationReq);
-                    logger.info("value of asdc Response of uploading location to asdc :" + responseStr);
+                    responseStr = sdcCatalogServices.uploadArtifactToSdc(prop, userid, updateUrl,
+                            formattedSdcLocationReq);
+                    logger.info("value of sdc Response of uploading location to sdc :" + responseStr);
                 }
             }
         }
     }
 
-    private void getAsdcAttributes() {
-        baseUrl = refProp.getStringValue("asdc.serviceUrl");
-        artifactLabel = refProp.getStringValue("asdc.artifactLabel");
-        locationArtifactLabel = refProp.getStringValue("asdc.locationArtifactLabel");
-        artifactType = refProp.getStringValue("asdc.artifactType");
-        locationArtifactType = refProp.getStringValue("asdc.locationArtifactType");
+    private void getSdcAttributes(String controlName) {
+        baseUrl = refProp.getStringValue("sdc.serviceUrl");
+        artifactLabel = SdcReq
+                .normalizeResourceInstanceName(refProp.getStringValue("sdc.artifactLabel") + "-" + controlName);
+        locationArtifactLabel = SdcReq
+                .normalizeResourceInstanceName(refProp.getStringValue("sdc.locationArtifactLabel") + "-" + controlName);
+        artifactType = refProp.getStringValue("sdc.artifactType");
+        locationArtifactType = refProp.getStringValue("sdc.locationArtifactType");
     }
 }
index 45f1716..8a31a3b 100644 (file)
@@ -5,16 +5,16 @@
  * Copyright (C) 2017 AT&T Intellectual Property. All rights
  *                             reserved.
  * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License"); 
- * you may not use this file except in compliance with the License. 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software 
- * distributed under the License is distributed on an "AS IS" BASIS, 
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- * See the License for the specific language governing permissions and 
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
  * limitations under the License.
  * ============LICENSE_END============================================
  * ===================================================================
 
 package org.onap.clamp.clds.client.req;
 
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Base64;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.apache.commons.codec.digest.DigestUtils;
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.onap.clamp.clds.client.SdcCatalogServices;
+import org.onap.clamp.clds.model.CldsSdcResource;
+import org.onap.clamp.clds.model.CldsSdcServiceDetail;
+import org.onap.clamp.clds.model.prop.Global;
+import org.onap.clamp.clds.model.prop.ModelProperties;
+import org.onap.clamp.clds.model.prop.StringMatch;
+import org.onap.clamp.clds.model.prop.Tca;
+import org.onap.clamp.clds.model.refprop.RefProp;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
 import com.fasterxml.jackson.core.JsonParseException;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonMappingException;
@@ -31,29 +53,13 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.fasterxml.jackson.dataformat.yaml.snakeyaml.Yaml;
-import org.onap.clamp.clds.client.SdcCatalogServices;
-import org.onap.clamp.clds.model.CldsAsdcResource;
-import org.onap.clamp.clds.model.CldsAsdcServiceDetail;
-import org.onap.clamp.clds.model.prop.Global;
-import org.onap.clamp.clds.model.prop.ModelProperties;
-import org.onap.clamp.clds.model.prop.StringMatch;
-import org.onap.clamp.clds.model.prop.Tca;
-import org.onap.clamp.clds.model.refprop.RefProp;
-import org.apache.commons.codec.digest.DigestUtils;
-import org.camunda.bpm.engine.delegate.DelegateExecution;
-
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.util.*;
-import java.util.Map.Entry;
-import java.util.logging.Logger;
 
 /**
- * Construct a Asdc request given CLDS objects.
+ * Construct a Sdc request given CLDS objects.
  */
 public class SdcReq {
-    // currently uses the java.util.logging.Logger like the Camunda engine
-    private static final Logger logger = Logger.getLogger(SdcReq.class.getName());
+    protected static final EELFLogger logger        = EELFManager.getInstance().getLogger(SdcReq.class);
+    protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
 
     /**
      * @param refProp
@@ -72,14 +78,15 @@ public class SdcReq {
         String yamlvalue = getYamlvalue(docText);
 
         String updatedBlueprint = "";
-        StringMatch stringMatch = prop.getStringMatch();
-        Tca tca = prop.getTca();
+        StringMatch stringMatch = prop.getType(StringMatch.class);
+        Tca tca = prop.getType(Tca.class);
         if (stringMatch.isFound()) {
             prop.setCurrentModelElementId(stringMatch.getId());
             ObjectMapper objectMapper = new ObjectMapper();
             ObjectNode serviceConfigurations = objectMapper.createObjectNode();
 
-            StringMatchPolicyReq.appendServiceConfigurations(refProp, service, serviceConfigurations, stringMatch);
+            StringMatchPolicyReq.appendServiceConfigurations(refProp, service, serviceConfigurations, stringMatch,
+                    prop);
             logger.info("Value of serviceConfigurations:" + serviceConfigurations);
             ObjectNode servConfNode = (ObjectNode) serviceConfigurations.get("serviceConfigurations");
 
@@ -111,15 +118,15 @@ public class SdcReq {
         // Serialiaze Yaml file
         Map<String, Map> loadedYaml = (Map<String, Map>) yaml.load(yamlValue);
         // Get node templates information from Yaml
-        Map<String, Map> nodeTemplates = (Map<String, Map>) loadedYaml.get("node_templates");
+        Map<String, Map> nodeTemplates = loadedYaml.get("node_templates");
         logger.info("value of NodeTemplates:" + nodeTemplates);
 
         // Get StringMatch Object information from node templates of Yaml
-        Map<String, Map> smObject = (Map<String, Map>) nodeTemplates.get("SM");
+        Map<String, Map> smObject = nodeTemplates.get("SM");
         logger.info("value of StringMatch:" + smObject);
 
         // Get Properties Object information from stringmatch of Yaml
-        Map<String, String> propsObject = (Map<String, String>) smObject.get("properties");
+        Map<String, String> propsObject = smObject.get("properties");
         logger.info("value of PropsObject:" + propsObject);
 
         String deploymentJsonObject = propsObject.get("deployment_JSON");
@@ -154,15 +161,15 @@ public class SdcReq {
         // Serialiaze Yaml file
         Map<String, Map> loadedYaml = (Map<String, Map>) yaml.load(yamlValue);
         // Get node templates information from Yaml
-        Map<String, Map> nodeTemplates = (Map<String, Map>) loadedYaml.get("node_templates");
+        Map<String, Map> nodeTemplates = loadedYaml.get("node_templates");
         logger.info("value of NodeTemplates:" + nodeTemplates);
         // Get Tca Object information from node templates of Yaml
-        Map<String, Map> tcaObject = (Map<String, Map>) nodeTemplates.get("MTCA");
+        Map<String, Map> tcaObject = nodeTemplates.get("MTCA");
         logger.info("value of Tca:" + tcaObject);
         // Get Properties Object information from tca of Yaml
-        Map<String, String> propsObject = (Map<String, String>) tcaObject.get("properties");
+        Map<String, String> propsObject = tcaObject.get("properties");
         logger.info("value of PropsObject:" + propsObject);
-        String deploymentJsonObject = (String) propsObject.get("deployment_JSON");
+        String deploymentJsonObject = propsObject.get("deployment_JSON");
         logger.info("value of deploymentJson:" + deploymentJsonObject);
 
         ObjectMapper mapper = new ObjectMapper();
@@ -182,7 +189,7 @@ public class SdcReq {
         return blueprint;
     }
 
-    public static String formatAsdcLocationsReq(ModelProperties prop, String artifactName) {
+    public static String formatSdcLocationsReq(ModelProperties prop, String artifactName) {
         ObjectMapper objectMapper = new ObjectMapper();
         Global global = prop.getGlobal();
         List<String> locationsList = global.getLocation();
@@ -198,7 +205,7 @@ public class SdcReq {
         return locationJsonFormat;
     }
 
-    public static String formatAsdcReq(String payloadData, String artifactName, String artifactLabel,
+    public static String formatSdcReq(String payloadData, String artifactName, String artifactLabel,
             String artifactType) throws IOException {
         logger.info("artifact=" + payloadData);
         String base64Artifact = base64Encode(payloadData);
@@ -208,7 +215,7 @@ public class SdcReq {
                 + "} \n";
     }
 
-    public static String getAsdcReqUrl(ModelProperties prop, String url) {
+    public static String getSdcReqUrl(ModelProperties prop, String url) {
         Global globalProps = prop.getGlobal();
         String serviceUUID = "";
         String resourceInstanceName = "";
@@ -234,7 +241,7 @@ public class SdcReq {
      * @return
      * @throws Exception
      */
-    public static List<String> getAsdcReqUrlsList(ModelProperties prop, String baseUrl,
+    public static List<String> getSdcReqUrlsList(ModelProperties prop, String baseUrl,
             SdcCatalogServices sdcCatalogServices, DelegateExecution execution) throws Exception {
         // TODO : refact and regroup with very similar code
         List<String> urlList = new ArrayList<>();
@@ -244,18 +251,21 @@ public class SdcReq {
                 String serviceInvariantUUID = globalProps.getService();
                 execution.setVariable("serviceInvariantUUID", serviceInvariantUUID);
                 List<String> resourceVfList = globalProps.getResourceVf();
-                String serviceUUID = sdcCatalogServices.getServiceUUIDFromServiceInvariantID(serviceInvariantUUID);
-                String asdcServicesInformation = sdcCatalogServices.getAsdcServicesInformation(serviceUUID);
-                CldsAsdcServiceDetail cldsAsdcServiceDetail = sdcCatalogServices.getCldsAsdcServiceDetailFromJson(asdcServicesInformation);
-                if (cldsAsdcServiceDetail != null && resourceVfList != null) {
-                    List<CldsAsdcResource> cldsAsdcResourcesList = cldsAsdcServiceDetail.getResources();
-                    if (cldsAsdcResourcesList != null && cldsAsdcResourcesList.size() > 0) {
-                        for (CldsAsdcResource cldsAsdcResource : cldsAsdcResourcesList) {
-                            if (cldsAsdcResource != null && cldsAsdcResource.getResoucreType() != null
-                                    && cldsAsdcResource.getResoucreType().equalsIgnoreCase("VF")) {
-                                if (resourceVfList.contains(cldsAsdcResource.getResourceInvariantUUID())) {
-                                    String normalizedResourceInstanceName = normalizeResourceInstanceName(cldsAsdcResource.getResourceInstanceName());
-                                    String svcUrl = baseUrl + "/" + serviceUUID + "/resourceInstances/" + normalizedResourceInstanceName + "/artifacts";
+                String serviceUUID = sdcCatalogServices.getServiceUuidFromServiceInvariantId(serviceInvariantUUID);
+                String sdcServicesInformation = sdcCatalogServices.getSdcServicesInformation(serviceUUID);
+                CldsSdcServiceDetail CldsSdcServiceDetail = sdcCatalogServices
+                        .getCldsSdcServiceDetailFromJson(sdcServicesInformation);
+                if (CldsSdcServiceDetail != null && resourceVfList != null) {
+                    List<CldsSdcResource> CldsSdcResourcesList = CldsSdcServiceDetail.getResources();
+                    if (CldsSdcResourcesList != null && CldsSdcResourcesList.size() > 0) {
+                        for (CldsSdcResource CldsSdcResource : CldsSdcResourcesList) {
+                            if (CldsSdcResource != null && CldsSdcResource.getResoucreType() != null
+                                    && CldsSdcResource.getResoucreType().equalsIgnoreCase("VF")) {
+                                if (resourceVfList.contains(CldsSdcResource.getResourceInvariantUUID())) {
+                                    String normalizedResourceInstanceName = normalizeResourceInstanceName(
+                                            CldsSdcResource.getResourceInstanceName());
+                                    String svcUrl = baseUrl + "/" + serviceUUID + "/resourceInstances/"
+                                            + normalizedResourceInstanceName + "/artifacts";
                                     urlList.add(svcUrl);
                                 }
                             }
@@ -269,8 +279,8 @@ public class SdcReq {
 
     /**
      * "Normalize" the resource instance name: - Remove spaces, underscores,
-     * dashes, and periods. - make lower case This is required by ASDC when
-     * using the resource instance name to upload an artifact.
+     * dashes, and periods. - make lower case This is required by SDC when using
+     * the resource instance name to upload an artifact.
      *
      * @param inText
      * @return
@@ -323,15 +333,15 @@ public class SdcReq {
     }
 
     /**
-     * Return ASDC id and pw as a HTTP Basic Auth string (for example: Basic
+     * Return SDC id and pw as a HTTP Basic Auth string (for example: Basic
      * dGVzdDoxMjM0NTY=).
      *
      * @return
      */
-    public static String getAsdcBasicAuth(RefProp refProp) {
-        String asdcId = refProp.getStringValue("asdc.serviceUsername");
-        String asdcPw = refProp.getStringValue("asdc.servicePassword");
-        String idPw = base64Encode(asdcId + ":" + asdcPw);
+    public static String getSdcBasicAuth(RefProp refProp) {
+        String sdcId = refProp.getStringValue("sdc.serviceUsername");
+        String sdcPw = refProp.getStringValue("sdc.servicePassword");
+        String idPw = base64Encode(sdcId + ":" + sdcPw);
         return "Basic " + idPw;
     }
 
diff --git a/src/main/java/org/onap/clamp/clds/model/CldsSdcArtifact.java b/src/main/java/org/onap/clamp/clds/model/CldsSdcArtifact.java
new file mode 100644 (file)
index 0000000..48f9017
--- /dev/null
@@ -0,0 +1,112 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.model;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class CldsSdcArtifact {
+
+    private String artifactName;
+    private String artifactType;
+    private String artifactUrl;
+    private String artifactDescription;
+    private String artifactTimeout;
+    private String artifactChecksum;
+    private String artifactUuid;
+    private String artifactVersion;
+    private String generatedFromUuid;
+
+    public String getArtifactName() {
+        return artifactName;
+    }
+
+    public void setArtifactName(String artifactName) {
+        this.artifactName = artifactName;
+    }
+
+    public String getArtifactType() {
+        return artifactType;
+    }
+
+    public void setArtifactType(String artifactType) {
+        this.artifactType = artifactType;
+    }
+
+    public String getArtifactURL() {
+        return artifactUrl;
+    }
+
+    public void setArtifactURL(String artifactURL) {
+        this.artifactUrl = artifactURL;
+    }
+
+    public String getArtifactDescription() {
+        return artifactDescription;
+    }
+
+    public void setArtifactDescription(String artifactDescription) {
+        this.artifactDescription = artifactDescription;
+    }
+
+    public String getArtifactTimeout() {
+        return artifactTimeout;
+    }
+
+    public void setArtifactTimeout(String artifactTimeout) {
+        this.artifactTimeout = artifactTimeout;
+    }
+
+    public String getArtifactChecksum() {
+        return artifactChecksum;
+    }
+
+    public void setArtifactChecksum(String artifactChecksum) {
+        this.artifactChecksum = artifactChecksum;
+    }
+
+    public String getArtifactUUID() {
+        return artifactUuid;
+    }
+
+    public void setArtifactUUID(String artifactUUID) {
+        this.artifactUuid = artifactUUID;
+    }
+
+    public String getArtifactVersion() {
+        return artifactVersion;
+    }
+
+    public void setArtifactVersion(String artifactVersion) {
+        this.artifactVersion = artifactVersion;
+    }
+
+    public String getGeneratedFromUUID() {
+        return generatedFromUuid;
+    }
+
+    public void setGeneratedFromUUID(String generatedFromUUID) {
+        this.generatedFromUuid = generatedFromUUID;
+    }
+}
diff --git a/src/main/java/org/onap/clamp/clds/model/CldsSdcResource.java b/src/main/java/org/onap/clamp/clds/model/CldsSdcResource.java
new file mode 100644 (file)
index 0000000..7fa741c
--- /dev/null
@@ -0,0 +1,135 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.model;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class CldsSdcResource implements Comparable<CldsSdcResource> {
+
+    protected static final EELFLogger logger        = EELFManager.getInstance().getLogger(CldsSdcResource.class);
+    protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
+
+    private String                  resourceInstanceName;
+    private String                  resourceName;
+    private String                  resourceInvariantUuid;
+    private String                  resourceVersion;
+    private String                  resoucreType;
+    private String                  resourceUuid;
+    private List<CldsSdcArtifact>   artifacts;
+
+    public String getResourceInstanceName() {
+        return resourceInstanceName;
+    }
+
+    public void setResourceInstanceName(String resourceInstanceName) {
+        this.resourceInstanceName = resourceInstanceName;
+    }
+
+    public String getResourceName() {
+        return resourceName;
+    }
+
+    public void setResourceName(String resourceName) {
+        this.resourceName = resourceName;
+    }
+
+    public String getResourceInvariantUUID() {
+        return resourceInvariantUuid;
+    }
+
+    public void setResourceInvariantUUID(String resourceInvariantUUID) {
+        this.resourceInvariantUuid = resourceInvariantUUID;
+    }
+
+    public String getResourceVersion() {
+        return resourceVersion;
+    }
+
+    public void setResourceVersion(String resourceVersion) {
+        this.resourceVersion = resourceVersion;
+    }
+
+    public String getResoucreType() {
+        return resoucreType;
+    }
+
+    public void setResoucreType(String resoucreType) {
+        this.resoucreType = resoucreType;
+    }
+
+    public String getResourceUUID() {
+        return resourceUuid;
+    }
+
+    public void setResourceUUID(String resourceUUID) {
+        this.resourceUuid = resourceUUID;
+    }
+
+    public List<CldsSdcArtifact> getArtifacts() {
+        return artifacts;
+    }
+
+    public void setArtifacts(List<CldsSdcArtifact> artifacts) {
+        this.artifacts = artifacts;
+    }
+
+    @Override
+    public int compareTo(CldsSdcResource in) {
+        // Compares this object with the specified object for order.
+        // Returns a negative integer, zero, or a positive integer as this
+        // object is less than, equal to, or greater than the specified object.
+
+        // first compare based on name
+        int rtn = resourceInstanceName.compareToIgnoreCase(in.resourceInstanceName);
+
+        if (rtn == 0) {
+            BigDecimal myVersion = convertVersion(resourceVersion);
+            BigDecimal inVersion = convertVersion(in.resourceVersion);
+            rtn = myVersion.compareTo(inVersion);
+        }
+        return rtn;
+    }
+
+    /**
+     * Convert version String into a BigDecimal
+     *
+     * @param versionText
+     * @return
+     */
+    private BigDecimal convertVersion(String versionText) {
+        BigDecimal rtn = new BigDecimal(0.0);
+        try {
+            rtn = new BigDecimal(versionText);
+        } catch (NumberFormatException nfe) {
+            logger.warn("SDC version=" + versionText + " is not decimal for name=" + resourceInstanceName);
+        }
+        return rtn;
+    }
+}
diff --git a/src/main/java/org/onap/clamp/clds/model/CldsSdcResourceBasicInfo.java b/src/main/java/org/onap/clamp/clds/model/CldsSdcResourceBasicInfo.java
new file mode 100644 (file)
index 0000000..80fa787
--- /dev/null
@@ -0,0 +1,164 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.model;
+
+import java.math.BigDecimal;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class CldsSdcResourceBasicInfo implements Comparable<CldsSdcResourceBasicInfo> {
+
+    protected static final EELFLogger logger        = EELFManager.getInstance().getLogger(CldsSdcResourceBasicInfo.class);
+    protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger();
+
+    private String                  uuid;
+    private String                  invariantUUID;
+    private String                  name;
+    private String                  version;
+    private String                  toscaModelURL;
+    private String                  category;
+    private String                  subCategory;
+    private String                  resourceType;
+    private String                  lifecycleState;
+    private String                  lastUpdaterUserId;
+
+    @Override
+    public int compareTo(CldsSdcResourceBasicInfo in) {
+        // Compares this object with the specified object for order.
+        // Returns a negative integer, zero, or a positive integer as this
+        // object is less than, equal to, or greater than the specified object.
+        // first compare based on name
+        int rtn = name.compareToIgnoreCase(in.name);
+
+        if (rtn == 0) {
+            BigDecimal myVersion = convertVersion(version);
+            BigDecimal inVersion = convertVersion(in.version);
+            rtn = myVersion.compareTo(inVersion);
+        }
+        return rtn;
+    }
+
+    /**
+     * Convert version String into a BigDecimal
+     *
+     * @param version
+     * @return
+     */
+    private BigDecimal convertVersion(String version) {
+        BigDecimal rtn = new BigDecimal(0.0);
+        try {
+            rtn = new BigDecimal(version);
+        } catch (NumberFormatException nfe) {
+            logger.warn("SDC version=" + version + " is not decimal for name=" + name);
+        }
+        return rtn;
+    }
+
+    public String getUuid() {
+        return uuid;
+    }
+
+    public void setUuid(String uuid) {
+        this.uuid = uuid;
+    }
+
+    public String getInvariantUUID() {
+        return invariantUUID;
+    }
+
+    public void setInvariantUUID(String invariantUUID) {
+        this.invariantUUID = invariantUUID;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    public String getToscaModelURL() {
+        return toscaModelURL;
+    }
+
+    public void setToscaModelURL(String toscaModelURL) {
+        this.toscaModelURL = toscaModelURL;
+    }
+
+    public String getCategory() {
+        return category;
+    }
+
+    public void setCategory(String category) {
+        this.category = category;
+    }
+
+    public String getSubCategory() {
+        return subCategory;
+    }
+
+    public void setSubCategory(String subCategory) {
+        this.subCategory = subCategory;
+    }
+
+    public String getResourceType() {
+        return resourceType;
+    }
+
+    public void setResourceType(String resourceType) {
+        this.resourceType = resourceType;
+    }
+
+    public String getLifecycleState() {
+        return lifecycleState;
+    }
+
+    public void setLifecycleState(String lifecycleState) {
+        this.lifecycleState = lifecycleState;
+    }
+
+    public String getLastUpdaterUserId() {
+        return lastUpdaterUserId;
+    }
+
+    public void setLastUpdaterUserId(String lastUpdaterUserId) {
+        this.lastUpdaterUserId = lastUpdaterUserId;
+    }
+
+    public EELFLogger getLOGGER() {
+        return logger;
+    }
+}
diff --git a/src/main/java/org/onap/clamp/clds/model/CldsSdcServiceDetail.java b/src/main/java/org/onap/clamp/clds/model/CldsSdcServiceDetail.java
new file mode 100644 (file)
index 0000000..551418b
--- /dev/null
@@ -0,0 +1,142 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.model;
+
+import java.util.List;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class CldsSdcServiceDetail {
+
+    private String                uuid;
+    private String                invariantUUID;
+    private String                name;
+    private String                version;
+    private String                toscaModelURL;
+    private String                category;
+    private String                lifecycleState;
+    private String                lastUpdaterUserId;
+    private String                distributionStatus;
+    private String                lastUpdaterFullName;
+    private List<CldsSdcResource> resources;
+    private List<CldsSdcArtifact> artifacts;
+
+    public String getUuid() {
+        return uuid;
+    }
+
+    public void setUuid(String uuid) {
+        this.uuid = uuid;
+    }
+
+    public String getInvariantUUID() {
+        return invariantUUID;
+    }
+
+    public void setInvariantUUID(String invariantUUID) {
+        this.invariantUUID = invariantUUID;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    public String getToscaModelURL() {
+        return toscaModelURL;
+    }
+
+    public void setToscaModelURL(String toscaModelURL) {
+        this.toscaModelURL = toscaModelURL;
+    }
+
+    public String getCategory() {
+        return category;
+    }
+
+    public void setCategory(String category) {
+        this.category = category;
+    }
+
+    public String getLifecycleState() {
+        return lifecycleState;
+    }
+
+    public void setLifecycleState(String lifecycleState) {
+        this.lifecycleState = lifecycleState;
+    }
+
+    public String getLastUpdaterUserId() {
+        return lastUpdaterUserId;
+    }
+
+    public void setLastUpdaterUserId(String lastUpdaterUserId) {
+        this.lastUpdaterUserId = lastUpdaterUserId;
+    }
+
+    public String getDistributionStatus() {
+        return distributionStatus;
+    }
+
+    public void setDistributionStatus(String distributionStatus) {
+        this.distributionStatus = distributionStatus;
+    }
+
+    public String getLastUpdaterFullName() {
+        return lastUpdaterFullName;
+    }
+
+    public void setLastUpdaterFullName(String lastUpdaterFullName) {
+        this.lastUpdaterFullName = lastUpdaterFullName;
+    }
+
+    public List<CldsSdcResource> getResources() {
+        return resources;
+    }
+
+    public void setResources(List<CldsSdcResource> resources) {
+        this.resources = resources;
+    }
+
+    public List<CldsSdcArtifact> getArtifacts() {
+        return artifacts;
+    }
+
+    public void setArtifacts(List<CldsSdcArtifact> artifacts) {
+        this.artifacts = artifacts;
+    }
+
+}
diff --git a/src/main/java/org/onap/clamp/clds/model/CldsSdcServiceInfo.java b/src/main/java/org/onap/clamp/clds/model/CldsSdcServiceInfo.java
new file mode 100644 (file)
index 0000000..175dc75
--- /dev/null
@@ -0,0 +1,153 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.model;
+
+import java.math.BigDecimal;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+
+public class CldsSdcServiceInfo implements Comparable<CldsSdcServiceInfo> {
+
+    protected static final EELFLogger       logger      = EELFManager.getInstance().getLogger(CldsSdcServiceInfo.class);
+    protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
+
+    private String                  uuid;
+    private String                  invariantUUID;
+    private String                  name;
+    private String                  version;
+    private String                  toscaModelURL;
+    private String                  category;
+    private String                  lifecycleState;
+    private String                  lastUpdaterUserId;
+    private String                  distributionStatus;
+
+    public String getUuid() {
+        return uuid;
+    }
+
+    public void setUuid(String uuid) {
+        this.uuid = uuid;
+    }
+
+    public String getInvariantUUID() {
+        return invariantUUID;
+    }
+
+    public void setInvariantUUID(String invariantUUID) {
+        this.invariantUUID = invariantUUID;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    public String getToscaModelURL() {
+        return toscaModelURL;
+    }
+
+    public void setToscaModelURL(String toscaModelURL) {
+        this.toscaModelURL = toscaModelURL;
+    }
+
+    public String getCategory() {
+        return category;
+    }
+
+    public void setCategory(String category) {
+        this.category = category;
+    }
+
+    public String getLifecycleState() {
+        return lifecycleState;
+    }
+
+    public void setLifecycleState(String lifecycleState) {
+        this.lifecycleState = lifecycleState;
+    }
+
+    public String getLastUpdaterUserId() {
+        return lastUpdaterUserId;
+    }
+
+    public void setLastUpdaterUserId(String lastUpdaterUserId) {
+        this.lastUpdaterUserId = lastUpdaterUserId;
+    }
+
+    public String getDistributionStatus() {
+        return distributionStatus;
+    }
+
+    public void setDistributionStatus(String distributionStatus) {
+        this.distributionStatus = distributionStatus;
+    }
+
+    /**
+     * Compare using name and then version. Version is converted to a decimal.
+     */
+    @Override
+    public int compareTo(CldsSdcServiceInfo in) {
+        // Compares this object with the specified object for order.
+        // Returns a negative integer, zero, or a positive integer as this
+        // object is less than, equal to, or greater than the specified object.
+        // first compare based on name
+        int rtn = name.compareToIgnoreCase(in.name);
+
+        if (rtn == 0) {
+            BigDecimal myVersion = convertVersion(version);
+            BigDecimal inVersion = convertVersion(in.version);
+            rtn = myVersion.compareTo(inVersion);
+        }
+
+        return rtn;
+    }
+
+    /**
+     * Convert version String into a BigDecimal
+     *
+     * @param versionText
+     * @return
+     */
+    private BigDecimal convertVersion(String versionText) {
+        try {
+            return new BigDecimal(versionText);
+        } catch (NumberFormatException nfe) {
+            logger.warn("SDC version=" + versionText + " is not decimal for name=" + name);
+        }
+        return new BigDecimal(0.0);
+    }
+
+}
index f4d693f..e7cb5c8 100644 (file)
@@ -27,8 +27,8 @@ import org.camunda.bpm.engine.delegate.DelegateExecution;
 import org.junit.Assert;
 import org.junit.Test;
 import org.onap.clamp.clds.client.SdcCatalogServices;
-import org.onap.clamp.clds.model.CldsAsdcResource;
-import org.onap.clamp.clds.model.CldsAsdcServiceDetail;
+import org.onap.clamp.clds.model.CldsSdcResource;
+import org.onap.clamp.clds.model.CldsSdcServiceDetail;
 import org.onap.clamp.clds.model.prop.Global;
 import org.onap.clamp.clds.model.prop.ModelProperties;
 
@@ -38,50 +38,47 @@ import java.util.List;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
-/**
- * Created by Julien Bertozzi on 6/20/17.
- */
 public class SdcReqTest {
 
     String baseUrl = "AYBABTU";
     String serviceInvariantUUID = "serviceInvariantUUID";
 
     @Test
-    public void getAsdcReqUrlsListNoGlobalPropTest() throws Exception {
+    public void getSdcReqUrlsListNoGlobalPropTest() throws Exception {
         ModelProperties prop = mock(ModelProperties.class);
         SdcCatalogServices sdcCatalogServices = mock(SdcCatalogServices.class);
         DelegateExecution delegateExecution = mock(DelegateExecution.class);
         Global global = mock(Global.class);
-        CldsAsdcServiceDetail cldsAsdcServiceDetail = mock(CldsAsdcServiceDetail.class);
-        CldsAsdcResource cldsAsdcResource = mock(CldsAsdcResource.class);
-        List<CldsAsdcResource> cldsAsdcResources = new ArrayList<>();
-        cldsAsdcResources.add(cldsAsdcResource);
+        CldsSdcServiceDetail CldsSdcServiceDetail = mock(CldsSdcServiceDetail.class);
+        CldsSdcResource CldsSdcResource = mock(CldsSdcResource.class);
+        List<CldsSdcResource> CldsSdcResources = new ArrayList<>();
+        CldsSdcResources.add(CldsSdcResource);
         List<String> resourceVf = new ArrayList<>();
         resourceVf.add(serviceInvariantUUID);
 
-        Assert.assertTrue(SdcReq.getAsdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty());
+        Assert.assertTrue(SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty());
 
         when(prop.getGlobal()).thenReturn(global);
-        Assert.assertTrue(SdcReq.getAsdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty());
+        Assert.assertTrue(SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty());
 
         when(global.getService()).thenReturn(serviceInvariantUUID);
-        Assert.assertTrue(SdcReq.getAsdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty());
+        Assert.assertTrue(SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty());
 
-        when(sdcCatalogServices.getCldsAsdcServiceDetailFromJson(null)).thenReturn(cldsAsdcServiceDetail);
+        when(sdcCatalogServices.getCldsSdcServiceDetailFromJson(null)).thenReturn(CldsSdcServiceDetail);
         when(global.getResourceVf()).thenReturn(new ArrayList<>());
-        Assert.assertTrue(SdcReq.getAsdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty());
+        Assert.assertTrue(SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty());
 
-        when(cldsAsdcServiceDetail.getResources()).thenReturn(cldsAsdcResources);
-        Assert.assertTrue(SdcReq.getAsdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty());
+        when(CldsSdcServiceDetail.getResources()).thenReturn(CldsSdcResources);
+        Assert.assertTrue(SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty());
 
-        when(cldsAsdcResource.getResoucreType()).thenReturn("VF");
-        Assert.assertTrue(SdcReq.getAsdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty());
+        when(CldsSdcResource.getResoucreType()).thenReturn("VF");
+        Assert.assertTrue(SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty());
 
         when(global.getResourceVf()).thenReturn(resourceVf);
-        when(cldsAsdcResource.getResourceInvariantUUID()).thenReturn(serviceInvariantUUID);
-        when(cldsAsdcResource.getResourceInstanceName()).thenReturn("Resource instance name");
+        when(CldsSdcResource.getResourceInvariantUUID()).thenReturn(serviceInvariantUUID);
+        when(CldsSdcResource.getResourceInstanceName()).thenReturn("Resource instance name");
         List<String> expected = new ArrayList<>();
         expected.add("AYBABTU/null/resourceInstances/resourceinstancename/artifacts");
-        Assert.assertEquals(expected, SdcReq.getAsdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution));
+        Assert.assertEquals(expected, SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution));
     }
 }
diff --git a/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesIT.java b/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesIT.java
new file mode 100644 (file)
index 0000000..159e66a
--- /dev/null
@@ -0,0 +1,289 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); 
+ * you may not use this file except in compliance with the License. 
+ * You may obtain a copy of the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software 
+ * distributed under the License is distributed on an "AS IS" BASIS, 
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+ * See the License for the specific language governing permissions and 
+ * limitations under the License.
+ * ============LICENSE_END============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.it;
+
+import static org.junit.Assert.assertTrue;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import org.apache.commons.io.IOUtils;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+import org.onap.clamp.clds.AbstractIT;
+import org.onap.clamp.clds.client.SdcCatalogServices;
+import org.onap.clamp.clds.model.CldsAlarmCondition;
+import org.onap.clamp.clds.model.CldsSdcResource;
+import org.onap.clamp.clds.model.CldsSdcResourceBasicInfo;
+import org.onap.clamp.clds.model.CldsSdcServiceInfo;
+import org.onap.clamp.clds.model.CldsServiceData;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * Test DCAE API in org.onap.clamp.ClampDesigner.client package - replicate DCAE
+ * Delegates in test.
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class SdcCatalogServicesIT extends AbstractIT {
+    @Autowired
+    private SdcCatalogServices sdcCatalogWired = new SdcCatalogServices();
+
+    @Test
+    public void removeDuplicateServicesTest() throws Exception {
+        SdcCatalogServices catalogServices = new SdcCatalogServices();
+        List<CldsSdcServiceInfo> rawCldsSdcServiceList = new LinkedList<CldsSdcServiceInfo>();
+
+        CldsSdcServiceInfo service1a = new CldsSdcServiceInfo();
+        service1a.setName("service1");
+        service1a.setVersion("1.0");
+        service1a.setInvariantUUID("invariantUUID1.0");
+        rawCldsSdcServiceList.add(service1a);
+        rawCldsSdcServiceList.add(service1a);
+
+        CldsSdcServiceInfo service1b = new CldsSdcServiceInfo();
+        service1b.setName("service1");
+        service1b.setVersion("1.1");
+        service1b.setInvariantUUID("invariantUUID1.1");
+        rawCldsSdcServiceList.add(service1b);
+
+        CldsSdcServiceInfo service1c = new CldsSdcServiceInfo();
+        service1c.setName("service1");
+        service1c.setVersion("1.2");
+        service1c.setInvariantUUID("invariantUUID1.2");
+        rawCldsSdcServiceList.add(service1c);
+
+        CldsSdcServiceInfo service2 = new CldsSdcServiceInfo();
+        service2.setName("service2");
+        service2.setVersion("1.0");
+        service2.setInvariantUUID("invariantUUID2.0");
+        rawCldsSdcServiceList.add(service2);
+
+        List<CldsSdcServiceInfo> resultList = catalogServices.removeDuplicateServices(rawCldsSdcServiceList);
+
+        assertTrue(resultList.size() == 2);
+
+        CldsSdcServiceInfo res1, res2;
+        if ("service1".equals(resultList.get(0).getName())) {
+            res1 = resultList.get(0);
+            res2 = resultList.get(1);
+        } else {
+            res1 = resultList.get(1);
+            res2 = resultList.get(0);
+        }
+
+        assertTrue("service1".equals(res1.getName()));
+        assertTrue("1.2".equals(res1.getVersion()));
+
+        assertTrue("service2".equals(res2.getName()));
+        assertTrue("1.0".equals(res2.getVersion()));
+
+    }
+
+    @Test
+    public void removeDuplicateSdcResourceInstancesTest() {
+        SdcCatalogServices catalogServices = new SdcCatalogServices();
+        List<CldsSdcResource> rawCldsSdcResourceList = new LinkedList<CldsSdcResource>();
+
+        CldsSdcResource sdcResource1a = new CldsSdcResource();
+        sdcResource1a.setResourceInstanceName("resource1");
+        sdcResource1a.setResourceVersion("1.0");
+        rawCldsSdcResourceList.add(sdcResource1a);
+
+        CldsSdcResource sdcResource1b = new CldsSdcResource();
+        sdcResource1b.setResourceInstanceName("resource1");
+        sdcResource1b.setResourceVersion("1.1");
+        rawCldsSdcResourceList.add(sdcResource1b);
+
+        CldsSdcResource sdcResource1c = new CldsSdcResource();
+        sdcResource1c.setResourceInstanceName("resource1");
+        sdcResource1c.setResourceVersion("1.2");
+        rawCldsSdcResourceList.add(sdcResource1c);
+
+        CldsSdcResource sdcResource2 = new CldsSdcResource();
+        sdcResource2.setResourceInstanceName("resource2");
+        sdcResource2.setResourceVersion("1.0");
+        rawCldsSdcResourceList.add(sdcResource2);
+
+        List<CldsSdcResource> resultList = catalogServices.removeDuplicateSdcResourceInstances(rawCldsSdcResourceList);
+
+        CldsSdcResource res1, res2;
+        if ("resource1".equals(resultList.get(0).getResourceInstanceName())) {
+            res1 = resultList.get(0);
+            res2 = resultList.get(1);
+        } else {
+            res1 = resultList.get(1);
+            res2 = resultList.get(0);
+        }
+
+        assertTrue("resource1".equals(res1.getResourceInstanceName()));
+        assertTrue("1.2".equals(res1.getResourceVersion()));
+
+        assertTrue("resource2".equals(res2.getResourceInstanceName()));
+        assertTrue("1.0".equals(res2.getResourceVersion()));
+
+    }
+
+    @Test
+    public void removeDuplicateSdcResourceBasicInfoTest() {
+
+        SdcCatalogServices catalogServices = new SdcCatalogServices();
+        List<CldsSdcResourceBasicInfo> rawCldsSdcResourceList = new LinkedList<CldsSdcResourceBasicInfo>();
+
+        CldsSdcResourceBasicInfo sdcResource1a = new CldsSdcResourceBasicInfo();
+        sdcResource1a.setName("resource1");
+        sdcResource1a.setVersion("1.0");
+        rawCldsSdcResourceList.add(sdcResource1a);
+
+        CldsSdcResourceBasicInfo sdcResource1b = new CldsSdcResourceBasicInfo();
+        sdcResource1b.setName("resource1");
+        sdcResource1b.setVersion("1.1");
+        rawCldsSdcResourceList.add(sdcResource1b);
+
+        CldsSdcResourceBasicInfo sdcResource1c = new CldsSdcResourceBasicInfo();
+        sdcResource1c.setName("resource1");
+        sdcResource1c.setVersion("1.2");
+        rawCldsSdcResourceList.add(sdcResource1c);
+
+        CldsSdcResourceBasicInfo sdcResource2 = new CldsSdcResourceBasicInfo();
+        sdcResource2.setName("resource2");
+        sdcResource2.setVersion("1.0");
+        rawCldsSdcResourceList.add(sdcResource2);
+
+        List<CldsSdcResourceBasicInfo> resultList = catalogServices
+                .removeDuplicateSdcResourceBasicInfo(rawCldsSdcResourceList);
+
+        CldsSdcResourceBasicInfo res1, res2;
+        if ("resource1".equals(resultList.get(0).getName())) {
+            res1 = resultList.get(0);
+            res2 = resultList.get(1);
+        } else {
+            res1 = resultList.get(1);
+            res2 = resultList.get(0);
+        }
+
+        assertTrue("resource1".equals(res1.getName()));
+        assertTrue("1.2".equals(res1.getVersion()));
+
+        assertTrue("resource2".equals(res2.getName()));
+        assertTrue("1.0".equals(res2.getVersion()));
+
+    }
+
+    @Test
+    public void getServiceUuidFromServiceInvariantIdTest() throws Exception {
+        SdcCatalogServices aSpy = Mockito.spy(sdcCatalogWired);
+        Mockito.when(aSpy.getSdcServicesInformation(null)).thenReturn(IOUtils.toString(
+                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"), "UTF-8"));
+
+        // Try the vcts4 version 1.0, this one should be replaced by 1.1 so it
+        // should not exist, returning empty string
+        String resUuidVcts4Null = aSpy.getServiceUuidFromServiceInvariantId("a33ed748-3477-4434-b3f3-b5560f5e7d9b");
+        assertTrue("".equals(resUuidVcts4Null));
+
+        // Try the vcts4 version 1.1, this one should be there as it replaces
+        // the vcts4 v1.0
+        String resUuidVcts4Latest = aSpy.getServiceUuidFromServiceInvariantId("a33ed748-3477-4434-b3f3-b5560f5e7d9c");
+        assertTrue("29018914-966c-442d-9d08-251b9dc45b8f".equals(resUuidVcts4Latest));
+
+        // Try the vcts5 version 1.0, this one should be there
+        String resUuidVcts5 = aSpy.getServiceUuidFromServiceInvariantId("a33ed748-3477-4434-b3f3-b5560f5e7d8c");
+        assertTrue("29018914-966c-442d-9d08-251b9dc45b7f".equals(resUuidVcts5));
+
+        // try one that does not exist at all
+        String resUuidUnknown = aSpy.getServiceUuidFromServiceInvariantId("testuuid");
+        assertTrue("".equals(resUuidUnknown));
+
+    }
+
+    @Test
+    public void getCldsServiceDataWithAlarmConditionsTest() throws Exception {
+        SdcCatalogServices aSpy = Mockito.spy(sdcCatalogWired);
+        Mockito.when(aSpy.getSdcServicesInformation(null)).thenReturn(IOUtils.toString(
+                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"), "UTF-8"));
+
+        // This invariant uuid is the one from vcts4 v1.1
+        String serviceResourceDetailUrl = refProp.getStringValue("sdc.serviceUrl")
+                + "/29018914-966c-442d-9d08-251b9dc45b8f/metadata";
+        Mockito.when(aSpy.getCldsServicesOrResourcesBasedOnURL(serviceResourceDetailUrl, false))
+                .thenReturn(IOUtils.toString(
+                        SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcServiceDetailsExample.json"),
+                        "UTF-8"));
+
+        String resourceDetailUrl = refProp.getStringValue("sdc.catalog.url")
+                + "resources/585822c7-4027-4f84-ba50-e9248606f136/metadata";
+        Mockito.when(aSpy.getCldsServicesOrResourcesBasedOnURL(resourceDetailUrl, false))
+                .thenReturn(IOUtils.toString(
+                        SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcResourceDetailsExample.json"),
+                        "UTF-8"));
+
+        String securityRulesDetailUrl = refProp.getStringValue("sdc.catalog.url")
+                + "resources/d57e57d2-e3c6-470d-8d16-e6ea05f536c5/metadata";
+        Mockito.when(aSpy.getCldsServicesOrResourcesBasedOnURL(securityRulesDetailUrl, false)).thenReturn(
+                IOUtils.toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcSecurityRules.json"),
+                        "UTF-8"));
+
+        String cinderVolumeDetailUrl = refProp.getStringValue("sdc.catalog.url")
+                + "resources/b4288e07-597a-44a2-aa98-ad36e551a39d/metadata";
+        Mockito.when(aSpy.getCldsServicesOrResourcesBasedOnURL(cinderVolumeDetailUrl, false)).thenReturn(
+                IOUtils.toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcCinderVolume.json"),
+                        "UTF-8"));
+
+        String vfcGenericDetailUrl = refProp.getStringValue("sdc.catalog.url")
+                + "resources/2c8f1219-8000-4001-aa13-496a0396d40f/metadata";
+        Mockito.when(aSpy.getCldsServicesOrResourcesBasedOnURL(vfcGenericDetailUrl, false)).thenReturn(IOUtils.toString(
+                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcVFCGenericWithAlarms.json"), "UTF-8"));
+
+        String csvDetailUrl = "/sdc/v1/catalog/resources/84855843-5247-4e97-a2bd-5395a510253b/artifacts/d57ac7ec-f3c3-4793-983a-c75ac3a43153";
+        Mockito.when(aSpy.getResponsesFromArtifactUrl(csvDetailUrl)).thenReturn(IOUtils.toString(
+                SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcMeasurementsList.csv"), "UTF-8"));
+
+        String csvAlarmsDetailUrl = "/sdc/v1/catalog/resources/2c8f1219-8000-4001-aa13-496a0396d40f/resourceInstances/virc_fe_be/artifacts/5138e316-0237-49aa-817a-b3d8eaf77392";
+        Mockito.when(aSpy.getResponsesFromArtifactUrl(csvAlarmsDetailUrl)).thenReturn(IOUtils
+                .toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcAlarmsList.csv"), "UTF-8"));
+
+        String allVfResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources?resourceType=VF";
+        Mockito.when(aSpy.getCldsServicesOrResourcesBasedOnURL(allVfResourcesDetailUrl, false)).thenReturn(IOUtils
+                .toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcVFResources.json"), "UTF-8"));
+
+        String allVfcResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources?resourceType=VFC";
+        Mockito.when(aSpy.getCldsServicesOrResourcesBasedOnURL(allVfcResourcesDetailUrl, false)).thenReturn(
+                IOUtils.toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcVFCResources.json"),
+                        "UTF-8"));
+
+        CldsServiceData cldsServiceData = aSpy
+                .getCldsServiceDataWithAlarmConditions("a33ed748-3477-4434-b3f3-b5560f5e7d9c");
+        assertTrue("a33ed748-3477-4434-b3f3-b5560f5e7d9c".equals(cldsServiceData.getServiceInvariantUUID()));
+        assertTrue("29018914-966c-442d-9d08-251b9dc45b8f".equals(cldsServiceData.getServiceUUID()));
+        assertTrue(cldsServiceData.getCldsVfs().size() == 1);
+
+        List<CldsAlarmCondition> alarmsList = aSpy.getAllAlarmConditionsFromCldsServiceData(cldsServiceData);
+        assertTrue(alarmsList.size() == 6);
+
+    }
+
+}
diff --git a/src/test/java/org/onap/clamp/clds/it/SdcIT.java b/src/test/java/org/onap/clamp/clds/it/SdcIT.java
new file mode 100644 (file)
index 0000000..0d8acbf
--- /dev/null
@@ -0,0 +1,87 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP CLAMP
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights
+ *                             reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END============================================
+ * ===================================================================
+ * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ */
+
+package org.onap.clamp.clds.it;
+
+import org.onap.clamp.clds.AbstractIT;
+import org.onap.clamp.clds.client.req.SdcReq;
+import org.onap.clamp.clds.model.CldsEvent;
+import org.onap.clamp.clds.model.prop.ModelProperties;
+import org.onap.clamp.clds.transform.TransformUtil;
+import org.onap.clamp.clds.model.refprop.RefProp;
+import org.onap.clamp.clds.client.SdcCatalogServices;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.junit.BeforeClass;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * Test DCAE API in org.onap.clamp.ClampDesigner.client package - replicate DCAE Delegates in test.
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class SdcIT extends AbstractIT {
+       @Autowired
+       private RefProp refProp;
+
+       @Autowired
+       private SdcCatalogServices sdcCatalogServices;
+
+    @BeforeClass
+    public static void oneTimeSetUp() {
+               System.setProperty("AJSC_CONF_HOME", System.getProperty("user.dir") + "/src/test/resources/");
+    }
+
+    @Test
+    public void testBlueprint() throws Exception {
+        String modelProp = TransformUtil.getResourceAsString("example/modelProp.json");
+        String modelBpmnProp = TransformUtil.getResourceAsString("example/modelBpmnProp.json");
+        String modelName = "example-model06";
+        String controlName = "ClosedLoop-FRWL-SIG04-1582f840-test-test-1234-005056a9d756";
+        String docText = TransformUtil.getResourceAsString("example/templateProp.json");
+        ModelProperties prop = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, true, modelBpmnProp, modelProp);
+        String blueprint = SdcReq.formatBlueprint(refProp, prop, docText);
+        System.out.println("blueprint=" + blueprint);
+        //assertEquals(blueprint, "");
+    }
+
+
+       @Test
+       public void testTcaBlueprint() throws Exception {
+               String modelProp = TransformUtil.getResourceAsString("example/modelPropForPolicy.json");
+               String modelBpmnProp = TransformUtil.getResourceAsString("example/modelBpmnPropForPolicy.json");
+               String modelName = "example-model06";
+               String controlName = "ClosedLoop-FRWL-SIG04-1582f840-test-test-1234-005056a9d756";
+
+               String docText = TransformUtil.getResourceAsString("example/templatePropForTca.json");
+
+               ModelProperties prop = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, true, modelBpmnProp, modelProp);
+               String blueprint = SdcReq.formatBlueprint(refProp, prop, docText);
+
+               System.out.println("blueprint=" +  blueprint);
+               //assertEquals(blueprint, "");
+       }
+}
diff --git a/src/test/resources/example/sdc/sdcAlarmsList.csv b/src/test/resources/example/sdc/sdcAlarmsList.csv
new file mode 100644 (file)
index 0000000..247dcd9
--- /dev/null
@@ -0,0 +1,13 @@
+,EventSourceType,,AlarmCondition,Severity
+
+eventType,VPMS,alarmCondition,SwRestart,CRITICAL
+
+eventType,VPMS,alarmCondition,SwRestart,WARNING
+
+eventType,VPMS,alarmCondition,SwRestart,OK
+
+eventType,VPMS,alarmCondition,IsAlive,CRITICAL
+
+eventType,VPMS,alarmCondition,IsAlive,WARNING
+
+eventType,VPMS,alarmCondition,IsAlive,OK
diff --git a/src/test/resources/example/sdc/sdcCinderVolume.json b/src/test/resources/example/sdc/sdcCinderVolume.json
new file mode 100644 (file)
index 0000000..b5ffe64
--- /dev/null
@@ -0,0 +1,15 @@
+{
+    "uuid": "b4288e07-597a-44a2-aa98-ad36e551a39d",
+    "invariantUUID": "61dc85d2-5e17-480e-a71f-8f6d59a0ead2",
+    "name": "CinderVolume",
+    "version": "5.0",
+    "toscaModelURL": "/sdc/v1/catalog/resources/b4288e07-597a-44a2-aa98-ad36e551a39d/toscaModel",
+    "category": "Generic",
+    "subCategory": "Infrastructure",
+    "resourceType": "VFC",
+    "lifecycleState": "CERTIFIED",
+    "lastUpdaterUserId": "jh0003",
+    "lastUpdaterFullName": "Jimmy Hendrix",
+    "toscaResourceName": "org.openecomp.resource.vfc.nodes.heat.cinder.Volume",
+    "description": "Represents a server-local block storage device that provides persistent storage to guest virtual machines. "
+}
\ No newline at end of file
diff --git a/src/test/resources/example/sdc/sdcMeasurementsList.csv b/src/test/resources/example/sdc/sdcMeasurementsList.csv
new file mode 100644 (file)
index 0000000..c04a348
--- /dev/null
@@ -0,0 +1,17 @@
+fieldPath,$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value,thresholdName,PMRAATTCBRA ,nfNamingCode,ENBE
+
+fieldPath,$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRASUCCCBRA')].Value,thresholdName,PMRASUCCCBRA  ,nfNamingCode,ENBE
+
+fieldPath,$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMCELLDOWNTIMEAUTO')].Value,thresholdName,PMCELLDOWNTIMEAUTO   ,nfNamingCode,ENBE
+
+fieldPath,$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMCELLDOWNTIMEMAN')].Value,thresholdName,PMCELLDOWNTIMEMAN  ,nfNamingCode,ENBE
+
+fieldPath,$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABATT')].Value,thresholdName,PMRRCCONNESTABATT ,nfNamingCode,ENBE
+
+fieldPath,$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABSUCC')].Value,thresholdName,PMRRCCONNESTABSUCC  ,nfNamingCode,ENBE
+
+fieldPath,$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMCELLDOWNTIMEAUTO')].Value,thresholdName,PMCELLDOWNTIMEAUTO  ,nfNamingCode,ENBE
+
+fieldPath,$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMCELLDOWNTIMEMAN')].Value,thresholdName,PMCELLDOWNTIMEMAN  ,nfNamingCode,ENBE
+
+fieldPath,$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value,thresholdName,PMRRCCONNESTABFAILCELLLATENCY,nfNamingCode,ENBE
\ No newline at end of file
diff --git a/src/test/resources/example/sdc/sdcResourceDetailsExample.json b/src/test/resources/example/sdc/sdcResourceDetailsExample.json
new file mode 100644 (file)
index 0000000..6087d02
--- /dev/null
@@ -0,0 +1,126 @@
+{
+    "uuid": "585822c7-4027-4f84-ba50-e9248606f136",
+    "invariantUUID": "585822c7-4027-4f84-ba50-e9248606f134",
+    "name": "resourceName-1",
+    "version": "3.0",
+    "toscaModelURL": "/sdc/v1/catalog/resources/585822c7-4027-4f84-ba50-e9248606f136/toscaModel",
+    "category": "Network L2-3",
+    "subCategory": "Router",
+    "resourceType": "VF",
+    "lifecycleState": "CERTIFIED",
+    "lastUpdaterUserId": "m08743",
+    "lastUpdaterFullName": "Three ASDCMech",
+    "toscaResourceName": "org.openecomp.resource.vf.ClampDev",
+    "resources": 
+    [
+        {
+            "resourceInstanceName": "abstract_virc_fe_be_0",
+            "resourceName": "CLAMP-Dev-nodes.virc_fe_be_0",
+            "resourceInvariantUUID": "133dd665-fca8-4e8b-8126-9e74a8d23bf5",
+            "resourceVersion": "1.0",
+            "resoucreType": "CVFC",
+            "resourceUUID": "a0475018-1e7e-4ddd-8bee-33cbf958c2e6"
+        },
+
+        {
+            "resourceInstanceName": "virc_fe_be_RSG",
+            "resourceName": "SecurityRules",
+            "resourceInvariantUUID": "dd31d2de-0a7f-4198-8966-3a04100fbfe3",
+            "resourceVersion": "1.0",
+            "resoucreType": "VFC",
+            "resourceUUID": "d57e57d2-e3c6-470d-8d16-e6ea05f536c5"
+        },
+
+        {
+            "resourceInstanceName": "abstract_virc_fe_be_1",
+            "resourceName": "CLAMP-Dev-nodes.virc_fe_be_1",
+            "resourceInvariantUUID": "096ff622-d7ea-4482-b7fe-8c7d99e7d7c6",
+            "resourceVersion": "1.0",
+            "resoucreType": "VFC",
+            "resourceUUID": "2c8f1219-8000-4001-aa13-496a0396d40f"
+        },
+
+        {
+            "resourceInstanceName": "virc_fe_be_volume_1",
+            "resourceName": "CinderVolume",
+            "resourceInvariantUUID": "61dc85d2-5e17-480e-a71f-8f6d59a0ead2",
+            "resourceVersion": "5.0",
+            "resoucreType": "VFC",
+            "resourceUUID": "b4288e07-597a-44a2-aa98-ad36e551a39d"
+        },
+
+        {
+            "resourceInstanceName": "virc_fe_be_volume_0",
+            "resourceName": "CinderVolume",
+            "resourceInvariantUUID": "61dc85d2-5e17-480e-a71f-8f6d59a0ead2",
+            "resourceVersion": "5.0",
+            "resoucreType": "VFC",
+            "resourceUUID": "b4288e07-597a-44a2-aa98-ad36e551a39d"
+        }
+    ],
+
+    "artifacts": 
+    [
+        {
+            "artifactName": "vf-license-model.xml",
+            "artifactType": "VF_LICENSE",
+            "artifactURL": "/sdc/v1/catalog/resources/91854bc8-534f-4249-899c-bbdc06f83436/artifacts/16ec4971-5f3d-4f29-b22e-4c9ede6fdd97",
+            "artifactDescription": "VF license file",
+            "artifactChecksum": "MGUwM2MzZmMyNTBhNzlmNjY2NjJmMTk1MjMwNjRlNzY=",
+            "artifactUUID": "16ec4971-5f3d-4f29-b22e-4c9ede6fdd97",
+            "artifactVersion": "1",
+            "artifactLabel": "vflicense",
+            "artifactGroupType": "DEPLOYMENT"
+        },
+
+        {
+            "artifactName": "base_fe_be.yaml",
+            "artifactType": "HEAT",
+            "artifactURL": "/sdc/v1/catalog/resources/91854bc8-534f-4249-899c-bbdc06f83436/artifacts/18fd7704-9fe7-40c6-bde2-a1753111a1af",
+            "artifactDescription": "created from csar",
+            "artifactTimeout": 60,
+            "artifactChecksum": "NTUyYjdlMDA1MGNmOGViZjA4OWQyOWEzNGU3NDM4OTk=",
+            "artifactUUID": "18fd7704-9fe7-40c6-bde2-a1753111a1af",
+            "artifactVersion": "2",
+            "artifactLabel": "heat1",
+            "artifactGroupType": "DEPLOYMENT"
+        },
+
+        {
+            "artifactName": "vendor-license-model.xml",
+            "artifactType": "VENDOR_LICENSE",
+            "artifactURL": "/sdc/v1/catalog/resources/91854bc8-534f-4249-899c-bbdc06f83436/artifacts/7ad72757-b35e-4084-954d-9f9d447f7a98",
+            "artifactDescription": " Vendor license file",
+            "artifactChecksum": "ZTFlYWYxYmEzY2ZiMmZmMDMyNWEyMmM2ZjI4ZjM1NTY=",
+            "artifactUUID": "7ad72757-b35e-4084-954d-9f9d447f7a98",
+            "artifactVersion": "1",
+            "artifactLabel": "vendorlicense",
+            "artifactGroupType": "DEPLOYMENT"
+        },
+
+        {
+            "artifactName": "user_data.sh",
+            "artifactType": "HEAT_ARTIFACT",
+            "artifactURL": "/sdc/v1/catalog/resources/91854bc8-534f-4249-899c-bbdc06f83436/artifacts/dff5a82d-5456-4653-87e5-4a8c52a9a67b",
+            "artifactDescription": "created from csar",
+            "artifactChecksum": "NmUyYjBmYzk5MDk3Mjc0NWNhZGU2ZGY1ZTE3YmU3ZjU=",
+            "artifactUUID": "dff5a82d-5456-4653-87e5-4a8c52a9a67b",
+            "artifactVersion": "1",
+            "artifactLabel": "heatartifact2",
+            "artifactGroupType": "DEPLOYMENT"
+        },
+        {
+            "artifactName": "eNodeB_Thresholds.csv",
+            "artifactType": "OTHER",
+            "artifactURL": "/sdc/v1/catalog/resources/84855843-5247-4e97-a2bd-5395a510253b/artifacts/d57ac7ec-f3c3-4793-983a-c75ac3a43153",
+            "artifactDescription": "kpis with nfNamingCode",
+            "artifactChecksum": "YTc1MDU0ZDFhODUwMGM5YmIwM2FmMWUzMmRiY2NlMGI=",
+            "artifactUUID": "d57ac7ec-f3c3-4793-983a-c75ac3a43153",
+            "artifactVersion": "1",
+            "artifactLabel": "kpis",
+            "artifactGroupType": "DEPLOYMENT"
+        }
+    ],
+
+    "description": "Description"
+}
\ No newline at end of file
diff --git a/src/test/resources/example/sdc/sdcSecurityRules.json b/src/test/resources/example/sdc/sdcSecurityRules.json
new file mode 100644 (file)
index 0000000..07930a2
--- /dev/null
@@ -0,0 +1,15 @@
+{
+    "uuid": "d57e57d2-e3c6-470d-8d16-e6ea05f536c5",
+    "invariantUUID": "dd31d2de-0a7f-4198-8966-3a04100fbfe3",
+    "name": "SecurityRules",
+    "version": "1.0",
+    "toscaModelURL": "/sdc/v1/catalog/resources/d57e57d2-e3c6-470d-8d16-e6ea05f536c5/toscaModel",
+    "category": "Generic",
+    "subCategory": "Rules",
+    "resourceType": "VFC",
+    "lifecycleState": "CERTIFIED",
+    "lastUpdaterUserId": "jh0003",
+    "lastUpdaterFullName": "Jimmy Hendrix",
+    "toscaResourceName": "org.openecomp.resource.vfc.rules.nodes.heat.network.neutron.SecurityRules",
+    "description": "Configuration of policy rules to be applied on ports."
+}
\ No newline at end of file
diff --git a/src/test/resources/example/sdc/sdcServiceDetailsExample.json b/src/test/resources/example/sdc/sdcServiceDetailsExample.json
new file mode 100644 (file)
index 0000000..820c6ca
--- /dev/null
@@ -0,0 +1,230 @@
+{
+    "uuid": "29018914-966c-442d-9d08-251b9dc45b8f",
+    "invariantUUID": "a33ed748-3477-4434-b3f3-b5560f5e7d9c",
+    "name": "vcts3",
+    "version": "1.0",
+    "toscaModelURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8f/toscaModel",
+    "category": "Application L4+",
+    "subCategory": "Application Server",
+    "resourceType": "VF",
+    "lifecycleState": "CERTIFIED",
+    "lastUpdaterUserId": "ml4535",
+    "lastUpdaterFullName": "MONICA LAZER",
+    "toscaResourceName": "org.openecomp.resource.vf.Vcts3",
+    "resources": 
+    [
+        {
+            "resourceInstanceName": "vCTS_port_0",
+            "resourceName": "NeutronPort",
+            "resourceInvariantUUID": "10428340-a673-4377-8696-af579a2e67a8",
+            "resourceVersion": "1.0",
+            "resoucreType": "CP",
+            "resourceUUID": "fdf0a74a-4942-4af0-9395-7bce23670662"
+        },
+
+        {
+            "resourceInstanceName": "vCTS",
+            "resourceName": "Vcts3.nodes.heat.vCTS_server",
+            "resourceInvariantUUID": "ef673ad3-2d81-47b7-99c2-bdc69ae79d80",
+            "resourceVersion": "1.0",
+            "resoucreType": "VFC",
+            "resourceUUID": "ab168037-e654-4990-a188-e5d2f25a8768",
+            "artifacts": 
+            [
+                {
+                    "artifactName": "Fault-alarms-SDC-Albino-vCTS2.csv",
+                    "artifactType": "SNMP_TRAP",
+                    "artifactURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8f/resourceInstances/vcts/artifacts/b4f583b4-da0c-4bf8-81fb-415ebcd78cd4",
+                    "artifactDescription": "Artifact created from csar",
+                    "artifactChecksum": "NjI1ZTEyM2YxYWFhZThlMzZkNjAwZmNmMjEwNjZmMDQ=",
+                    "artifactUUID": "b4f583b4-da0c-4bf8-81fb-415ebcd78cd4",
+                    "artifactVersion": "1",
+                    "artifactLabel": "faultalarmssdcalbinovcts2csv",
+                    "artifactGroupType": "DEPLOYMENT"
+                },
+
+                {
+                    "artifactName": "nagios2.csv",
+                    "artifactType": "SNMP_TRAP",
+                    "artifactURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8f/resourceInstances/vcts/artifacts/b1b86435-1de8-4d4a-8f69-f583a7417396",
+                    "artifactDescription": "Artifact created from csar",
+                    "artifactChecksum": "NzZlYTY1MmVjN2YyYWJlNWZkODIwYzBlNTFlYzg0NTA=",
+                    "artifactUUID": "b1b86435-1de8-4d4a-8f69-f583a7417396",
+                    "artifactVersion": "1",
+                    "artifactLabel": "nagios2csv",
+                    "artifactGroupType": "DEPLOYMENT"
+                }
+            ]
+        },
+
+        {
+            "resourceInstanceName": "resource-1",
+            "resourceInvariantUUID": "585822c7-4027-4f84-ba50-e9248606f134",
+            "resourceName": "resourceName-1",
+            "resoucreType": "VF",
+            "resourceUUID": "585822c7-4027-4f84-ba50-e9248606f136",
+            "resourceVersion": "3.0",
+            "category": "category",
+            "artifacts": 
+            [
+                {
+                    "artifactChecksum": "CheckSum",
+                    "artifactDescription": "Meta data for VFModule",
+                    "artifactName": "vnf-module-artifact.json",
+                    "artifactType": "VF_MODULES_METADATA",
+                    "artifactURL": "vnf-module-artifact.json",
+                    "artifactUUID": "VfArtifact-UUID2",
+                    "artifactVersion": "1.0"
+                },
+
+                {
+                    "artifactChecksum": "CheckSum",
+                    "artifactDescription": "Nimbus Heat OAM",
+                    "artifactName": "hot-nimbus-oam_v1.0.yaml",
+                    "artifactTimeout": 100,
+                    "artifactType": "HEAT",
+                    "artifactURL": "hot-nimbus-oam_v1.0.yaml",
+                    "artifactUUID": "Artifact-UUID1",
+                    "artifactVersion": "1.0",
+                    "generatedArtifact": "EnvArtifact-UUID2",
+                    "relatedArtifact": 
+                    [
+                        "NestedArtifact-UUID3",
+                        "ScriptArtifact-UUID1"
+                    ]
+                },
+
+                {
+                    "artifactChecksum": "CheckSum",
+                    "artifactDescription": "Nimbus Heat ENV OAM",
+                    "artifactName": "hot-nimbus-oam_v1.0.env",
+                    "artifactType": "HEAT_ENV",
+                    "artifactURL": "hot-nimbus-oam_v1.0.env",
+                    "artifactUUID": "EnvArtifact-UUID2",
+                    "artifactVersion": "1.0"
+                },
+
+                {
+                    "artifactChecksum": "CheckSum",
+                    "artifactDescription": "Nested OAM",
+                    "artifactName": "nested-oam_v1.0.yaml",
+                    "artifactTimeout": 10,
+                    "artifactType": "HEAT_NESTED",
+                    "artifactURL": "nested-oam_v1.0.yaml",
+                    "artifactUUID": "NestedArtifact-UUID3",
+                    "artifactVersion": "1.0"
+                },
+
+                {
+                    "artifactChecksum": "CheckSum",
+                    "artifactDescription": "Nested PSM",
+                    "artifactName": "nested-psm_v1.0.yaml",
+                    "artifactTimeout": 10,
+                    "artifactType": "HEAT_NESTED",
+                    "artifactURL": "nested-psm_v1.0.yaml",
+                    "artifactUUID": "NestedArtifact-UUID4",
+                    "artifactVersion": "1.0"
+                },
+
+                {
+                    "artifactChecksum": "CheckSum",
+                    "artifactDescription": "Script for Nimbus",
+                    "artifactName": "cloud-nimbus.sh",
+                    "artifactType": "HEAT_ARTIFACT",
+                    "artifactURL": "cloud-nimbus.sh",
+                    "artifactUUID": "ScriptNimbusArtifact-UUID1",
+                    "artifactVersion": "1.0"
+                },
+
+                {
+                    "artifactChecksum": "CheckSum",
+                    "artifactDescription": "Script for OAM",
+                    "artifactName": "mount_iso_script.sh",
+                    "artifactType": "HEAT_ARTIFACT",
+                    "artifactURL": "mount_iso_script.sh",
+                    "artifactUUID": "ScriptArtifact-UUID1",
+                    "artifactVersion": "1.0"
+                },
+
+                {
+                    "artifactChecksum": "CheckSum",
+                    "artifactDescription": "Heat Vol for OAM",
+                    "artifactName": "hot-nimbus-oam-volumes_v1.0.yaml",
+                    "artifactTimeout": 10,
+                    "artifactType": "HEAT_VOL",
+                    "artifactURL": "hot-nimbus-oam-volumes_v1.0.yaml",
+                    "artifactUUID": "VolumeArtifact-UUID1",
+                    "artifactVersion": "1.0",
+                    "generatedArtifact": "VolumeEnvArtifact-UUID1",
+                    "relatedArtifact": 
+                    [
+                        "NestedArtifact-UUID4"
+                    ]
+                },
+
+                {
+                    "artifactChecksum": "CheckSum",
+                    "artifactDescription": "Heat Env Vol for OAM",
+                    "artifactName": "hot-nimbus-oam-volumes_v1.0.env",
+                    "artifactType": "HEAT_ENV",
+                    "artifactURL": "hot-nimbus-oam-volumes_v1.0.env",
+                    "artifactUUID": "VolumeEnvArtifact-UUID1",
+                    "artifactVersion": "1.0"
+                },
+
+                {
+                    "artifactChecksum": "CheckSum",
+                    "artifactDescription": "Meta data for VFModule",
+                    "artifactName": "att_nimbus_vsaegw_ht_base_v13_0728v1.yaml",
+                    "artifactTimeout": 100,
+                    "artifactType": "HEAT",
+                    "artifactURL": "att_nimbus_vsaegw_ht_base_v13_0728v1.yaml",
+                    "artifactUUID": "HeatArtifactE2E-UUIDTest",
+                    "artifactVersion": "1.0"
+                }
+            ]
+        }
+    ],
+
+    "artifacts": 
+    [
+        {
+            "artifactName": "vf-license-model.xml",
+            "artifactType": "VF_LICENSE",
+            "artifactURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8f/artifacts/f8fb4591-5387-4424-8e7b-e31cb34a8cc1",
+            "artifactDescription": "VF license file",
+            "artifactChecksum": "NDkxZjBiYTA3YzE4YzQ2NzVjNjU4ZjE5YTI2YzY2YjM=",
+            "artifactUUID": "f8fb4591-5387-4424-8e7b-e31cb34a8cc1",
+            "artifactVersion": "1",
+            "artifactLabel": "vflicense",
+            "artifactGroupType": "DEPLOYMENT"
+        },
+
+        {
+            "artifactName": "base_TEST.yaml",
+            "artifactType": "HEAT",
+            "artifactURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8f/artifacts/ced9f553-a9bf-48e9-bd67-7f17162665ee",
+            "artifactDescription": "created from csar",
+            "artifactTimeout": 60,
+            "artifactChecksum": "NGVlN2MwZmE0MjU1MTZlNmRlOTMxZmM1NGZlMDk3ZDE=",
+            "artifactUUID": "ced9f553-a9bf-48e9-bd67-7f17162665ee",
+            "artifactVersion": "1",
+            "artifactLabel": "heat1",
+            "artifactGroupType": "DEPLOYMENT"
+        },
+
+        {
+            "artifactName": "vendor-license-model.xml",
+            "artifactType": "VENDOR_LICENSE",
+            "artifactURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8f/artifacts/a34232d1-60ee-4dda-add8-fbc14531ac24",
+            "artifactDescription": " Vendor license file",
+            "artifactChecksum": "OGEwYzI2Njk2YzI4YTVjMzdhMTI5ODNkNjQxMWIzZWU=",
+            "artifactUUID": "a34232d1-60ee-4dda-add8-fbc14531ac24",
+            "artifactVersion": "1",
+            "artifactLabel": "vendorlicense",
+            "artifactGroupType": "DEPLOYMENT"
+        }
+    ],
+
+    "description": "for CLAMP"
+}
\ No newline at end of file
diff --git a/src/test/resources/example/sdc/sdcServicesListExample.json b/src/test/resources/example/sdc/sdcServicesListExample.json
new file mode 100644 (file)
index 0000000..3c1277a
--- /dev/null
@@ -0,0 +1,35 @@
+[
+    {
+        "uuid": "29018914-966c-442d-9d08-251b9dc45b8e",
+        "invariantUUID": "a33ed748-3477-4434-b3f3-b5560f5e7d9b",
+        "name": "vcts4",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8e/toscaModel",
+        "category": "Application L4+",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ml4535",
+        "distributionStatus":"DISTRIBUTED"
+    },
+    {
+        "uuid": "29018914-966c-442d-9d08-251b9dc45b8f",
+        "invariantUUID": "a33ed748-3477-4434-b3f3-b5560f5e7d9c",
+        "name": "vcts4",
+        "version": "1.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8e/toscaModel",
+        "category": "Application L4+",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ml4535",
+        "distributionStatus":"DISTRIBUTED"
+    },
+        {
+        "uuid": "29018914-966c-442d-9d08-251b9dc45b7f",
+        "invariantUUID": "a33ed748-3477-4434-b3f3-b5560f5e7d8c",
+        "name": "vcts5",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8e/toscaModel",
+        "category": "Application L4+",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ml4535",
+        "distributionStatus":"DISTRIBUTED"
+    }
+]
\ No newline at end of file
diff --git a/src/test/resources/example/sdc/sdcVFCGenericWithAlarms.json b/src/test/resources/example/sdc/sdcVFCGenericWithAlarms.json
new file mode 100644 (file)
index 0000000..0f9cf63
--- /dev/null
@@ -0,0 +1,60 @@
+{
+    "uuid": "2c8f1219-8000-4001-aa13-496a0396d40f",
+    "invariantUUID": "096ff622-d7ea-4482-b7fe-8c7d99e7d7c6",
+    "name": "CLAMP-Dev-nodes.virc_fe_be_1",
+    "version": "1.0",
+    "toscaModelURL": "/sdc/v1/catalog/resources/2c8f1219-8000-4001-aa13-496a0396d40f/toscaModel",
+    "category": "Generic",
+    "subCategory": "Abstract",
+    "resourceType": "CVFC",
+    "lifecycleState": "CERTIFIED",
+    "lastUpdaterUserId": "m08740",
+    "lastUpdaterFullName": "Zero ASDCMech",
+    "toscaResourceName": "org.openecomp.resource.vfc.ClampDev.abstract.nodes.virc_fe_be_1",
+    "resources": 
+    [
+        {
+            "resourceInstanceName": "virc_fe_be_virc_fe_be_management_0_port",
+            "resourceName": "NeutronPort",
+            "resourceInvariantUUID": "10428340-a673-4377-8696-af579a2e67a8",
+            "resourceVersion": "5.0",
+            "resoucreType": "CP",
+            "resourceUUID": "045f3be0-7398-455b-8f0d-8eff2062a187"
+        },
+
+        {
+            "resourceInstanceName": "virc_fe_be_virc_fe_be_data_1_port",
+            "resourceName": "NeutronPort",
+            "resourceInvariantUUID": "10428340-a673-4377-8696-af579a2e67a8",
+            "resourceVersion": "5.0",
+            "resoucreType": "CP",
+            "resourceUUID": "045f3be0-7398-455b-8f0d-8eff2062a187"
+        },
+
+        {
+            "resourceInstanceName": "virc_fe_be",
+            "resourceName": "ClampDev.nodes.heat.virc_fe_be",
+            "resourceInvariantUUID": "e81d960d-794c-4d86-bbc4-31a2f86141ed",
+            "resourceVersion": "1.0",
+            "resoucreType": "VFC",
+            "resourceUUID": "d7646638-2572-4a94-b497-c028ac15f9ca"
+        }
+    ],
+
+    "artifacts": 
+    [
+        {
+            "artifactName": "Fault-alarms-ASDC-vprobes-vLB.csv",
+            "artifactType": "SNMP_TRAP",
+            "artifactURL": "/sdc/v1/catalog/resources/2c8f1219-8000-4001-aa13-496a0396d40f/resourceInstances/virc_fe_be/artifacts/5138e316-0237-49aa-817a-b3d8eaf77392",
+            "artifactDescription": "Artifact created from csar",
+            "artifactChecksum": "YWY2ZTY5NjhlOTU0YjQyZThhNTIyOGFmNzI1NTRiYzQ=",
+            "artifactUUID": "5138e316-0237-49aa-817a-b3d8eaf77392",
+            "artifactVersion": "1",
+            "artifactLabel": "faultalarmsasdcvprobesvlbcsv",
+            "artifactGroupType": "DEPLOYMENT"
+        }
+    ],
+
+    "description": "Complex node type that is used as nested type in VF"
+}
\ No newline at end of file
diff --git a/src/test/resources/example/sdc/sdcVFCResources.json b/src/test/resources/example/sdc/sdcVFCResources.json
new file mode 100644 (file)
index 0000000..be2ee46
--- /dev/null
@@ -0,0 +1,2445 @@
+[
+    {
+        "uuid": "ab168037-e654-4990-a188-e5d2f25a8768",
+        "invariantUUID": "ef673ad3-2d81-47b7-99c2-bdc69ae79d80",
+        "name": "Vcts3.nodes.heat.vCTS_server",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/b3538c76-7d58-4e15-9a06-b51b32101965/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "da3c740a-e8af-4b85-a487-b4961b040fa3",
+        "invariantUUID": "2a477fa7-ac1b-4a62-baa1-e94c764d736b",
+        "name": "ScpTestVsp.nodes.fe_1",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/da3c740a-e8af-4b85-a487-b4961b040fa3/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ed852m"
+    },
+
+    {
+        "uuid": "b31696d9-ad41-4cb5-bbdd-3e67845204f3",
+        "invariantUUID": "2b07e8fa-998d-4311-8ec0-61b86c798de9",
+        "name": "VpeBvRenana.nodes.vmx_vpfe",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/b31696d9-ad41-4cb5-bbdd-3e67845204f3/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "25b74ab6-565b-424f-bb57-b434bb2944a0",
+        "invariantUUID": "ed69ed4f-80cd-48b5-86d5-4b5de21041be",
+        "name": "VpeBvRenana.nodes.vmx_vre",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/25b74ab6-565b-424f-bb57-b434bb2944a0/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "c13dc4c4-f4cb-4a54-9198-5bce42c5df02",
+        "invariantUUID": "6a828e59-cbee-4dc2-aa67-ee35a6eafd50",
+        "name": "Dev2devnfod.nodes.VF",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/c13dc4c4-f4cb-4a54-9198-5bce42c5df02/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "pa0916"
+    },
+
+    {
+        "uuid": "08e94ce5-79e8-4873-9221-eb9e869ac679",
+        "invariantUUID": "da9ea806-971a-4338-bee7-6feeea270d8a",
+        "name": "Vprobe.nodes.vprobe",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/08e94ce5-79e8-4873-9221-eb9e869ac679/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m08740"
+    },
+
+    {
+        "uuid": "0d8f93f5-780e-47de-9b03-52ab31cb83d1",
+        "invariantUUID": "ce47044b-a00e-43d3-8aae-df047e6abe2e",
+        "name": "Vprobe.nodes.vLB",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/0d8f93f5-780e-47de-9b03-52ab31cb83d1/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m08740"
+    },
+
+    {
+        "uuid": "9140709a-d6a9-4690-b102-6fa96a696ce9",
+        "invariantUUID": "0c3d1be0-f4d8-4b0a-8cc8-05989de29dfc",
+        "name": "Dev2devnfod1207.nodes.VF",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/9140709a-d6a9-4690-b102-6fa96a696ce9/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "pa0916"
+    },
+
+    {
+        "uuid": "6607c9fc-dc1d-4a89-ac57-b6b18fc79b69",
+        "invariantUUID": "7a17e445-0400-40bf-8bf6-91105996e19e",
+        "name": "Dev2devnfodvf.nodes.VF",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/6607c9fc-dc1d-4a89-ac57-b6b18fc79b69/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "pa0916"
+    },
+
+    {
+        "uuid": "3cb0c46c-af73-4420-ae5c-d4816b314980",
+        "invariantUUID": "0e332f76-d6f8-4e16-b2eb-bb1ccadec523",
+        "name": "volume",
+        "version": "4.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/3cb0c46c-af73-4420-ae5c-d4816b314980/toscaModel",
+        "category": "Generic",
+        "subCategory": "Infrastructure",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "b4288e07-597a-44a2-aa98-ad36e551a39d",
+        "invariantUUID": "61dc85d2-5e17-480e-a71f-8f6d59a0ead2",
+        "name": "CinderVolume",
+        "version": "5.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/b4288e07-597a-44a2-aa98-ad36e551a39d/toscaModel",
+        "category": "Generic",
+        "subCategory": "Infrastructure",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "156d628f-f515-4f58-bfb0-210632717ce3",
+        "invariantUUID": "cdafff07-0bbb-45f6-8a48-46ed2c98f29c",
+        "name": "VfDemor.nodes.heat.vmx_vpfe",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/156d628f-f515-4f58-bfb0-210632717ce3/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "28eeb6ce-2349-4c07-80ad-f0aacbf67028",
+        "invariantUUID": "ae71f982-2393-4fd7-8a69-c0050880e7c5",
+        "name": "Dev2devipassign2407.nodes.heat.pd_server",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/28eeb6ce-2349-4c07-80ad-f0aacbf67028/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "pa0916"
+    },
+
+    {
+        "uuid": "f89e37a8-c5c0-4c0c-a034-f6c0ad8dd83f",
+        "invariantUUID": "59061740-4700-4800-83f1-0427f1ed1b8c",
+        "name": "Vmme1710.nodes.heat.ncb",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/f89e37a8-c5c0-4c0c-a034-f6c0ad8dd83f/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "8263c4c5-555e-4b73-9210-ddc8dd7e42f8",
+        "invariantUUID": "a7b9db4c-685a-416c-a2ed-7711b1492cd3",
+        "name": "VnfcVspTest.nodes.heat.rdn",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/8263c4c5-555e-4b73-9210-ddc8dd7e42f8/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ed852m"
+    },
+
+    {
+        "uuid": "dd7218d7-5760-4834-b78a-33edf5eb22e7",
+        "invariantUUID": "47be1ccb-856d-4d95-9722-f9d1913fe9df",
+        "name": "VnfcVspTest.nodes.heat.prx",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/dd7218d7-5760-4834-b78a-33edf5eb22e7/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ed852m"
+    },
+
+    {
+        "uuid": "10906cdf-dbec-405a-a513-7ed2090a5adb",
+        "invariantUUID": "746709d9-38fb-40af-88b0-856f6fadeb02",
+        "name": "VfExample.nodes.heat.vmx_vpfe",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/10906cdf-dbec-405a-a513-7ed2090a5adb/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "e0ee89f0-175b-47d8-8258-1ac6ea6d52a8",
+        "invariantUUID": "a0d6e34d-c260-46ff-a55f-79fbce461ec2",
+        "name": "Vmme1710.nodes.heat.fsb",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/e0ee89f0-175b-47d8-8258-1ac6ea6d52a8/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "e45c5438-0528-4a3d-bfa4-644b2343537c",
+        "invariantUUID": "cd1aa4fc-94bb-4e23-86b4-0e7b89c8cab8",
+        "name": "Vmme1710.nodes.heat.gpb",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/e45c5438-0528-4a3d-bfa4-644b2343537c/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "76e5e6b8-baad-4e5e-b535-29a2ba4cb605",
+        "invariantUUID": "c76ccbe5-7087-4eb4-a0ff-2edd7d9a392c",
+        "name": "ContrailV2VirtualMachineInterface",
+        "version": "6.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/76e5e6b8-baad-4e5e-b535-29a2ba4cb605/toscaModel",
+        "category": "Generic",
+        "subCategory": "Network Elements",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "2b4c437e-9034-4ec3-b6f9-9309022673cf",
+        "invariantUUID": "39584568-5d64-4c63-9007-46b205ea4db8",
+        "name": "MadhuMdns.nodes.heat.dns",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/2b4c437e-9034-4ec3-b6f9-9309022673cf/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "56cef7d0-af8c-4f18-80a2-e9aaf4366838",
+        "invariantUUID": "fab9a189-6bfa-4dfa-a4fe-2bfa4ff4e71b",
+        "name": "Alinavsp.nodes.vCTS_server",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/56cef7d0-af8c-4f18-80a2-e9aaf4366838/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "af3193"
+    },
+
+    {
+        "uuid": "d7646638-2572-4a94-b497-c028ac15f9ca",
+        "invariantUUID": "e81d960d-794c-4d86-bbc4-31a2f86141ed",
+        "name": "ClampDev.nodes.heat.virc_fe_be",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/d7646638-2572-4a94-b497-c028ac15f9ca/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m08740"
+    },
+
+    {
+        "uuid": "b58f9c1a-ad21-459d-9efa-a8924147cb90",
+        "invariantUUID": "a13cd6b9-c46e-4830-88ab-2b1c710a3b51",
+        "name": "sang_AR",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/b58f9c1a-ad21-459d-9efa-a8924147cb90/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "Allotted Resource",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "27307a62-8512-4aeb-a0ad-e8e88643c2ba",
+        "invariantUUID": "91d1bde6-eb8e-4786-b7e6-193453662014",
+        "name": "SangVsp.nodes.heat.oam",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/27307a62-8512-4aeb-a0ad-e8e88643c2ba/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "b0322a5d-b664-4c47-9827-9d7c0ca2201b",
+        "invariantUUID": "745995d0-6bf0-49d4-895f-32d554a7c333",
+        "name": "vnfConfiguration",
+        "version": "3.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/b0322a5d-b664-4c47-9827-9d7c0ca2201b/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "fd0e3baa-fef7-4096-be2f-a73fea2f1360",
+        "invariantUUID": "4aca7e14-e2e4-4aeb-868e-aaaecea0cc5d",
+        "name": "SangVsp.nodes.heat.prx",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/fd0e3baa-fef7-4096-be2f-a73fea2f1360/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "a12dad87-6120-412f-8a53-c5bb88be89a3",
+        "invariantUUID": "84a7c06f-b3a7-448b-8777-626776b0b6bd",
+        "name": "Vmme1710.nodes.heat.vlc",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/a12dad87-6120-412f-8a53-c5bb88be89a3/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "a14e3bbd-b04b-4924-817c-b4d13bfd8fe2",
+        "invariantUUID": "e205948e-5043-4cab-851d-e9e37f68736f",
+        "name": "VfExample.nodes.heat.vmx_vre",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/a14e3bbd-b04b-4924-817c-b4d13bfd8fe2/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "a902ec74-9415-4d5c-a14e-f0861a272407",
+        "invariantUUID": "40894528-2703-4652-86d0-463ac2af8c80",
+        "name": "NewVendorMdns.nodes.heat.dns",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/a902ec74-9415-4d5c-a14e-f0861a272407/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "82646e24-0e94-416a-aae2-9df4b2aa6217",
+        "invariantUUID": "a966f23a-ce65-4ef1-8d9f-718510852415",
+        "name": "SangVsp.nodes.heat.rdn",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/82646e24-0e94-416a-aae2-9df4b2aa6217/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "d87ce222-309b-46ab-9be9-c2d6ef7fe65e",
+        "invariantUUID": "37fcd63a-2d6e-4c42-8d63-183711976f9b",
+        "name": "multiFlavorVFC",
+        "version": "3.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/d87ce222-309b-46ab-9be9-c2d6ef7fe65e/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "c01c047d-395f-44fa-a34f-dc3f9c51c92c",
+        "invariantUUID": "23f8cb05-885d-4423-bae0-0d043f3c350c",
+        "name": "WebApplication",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/c01c047d-395f-44fa-a34f-dc3f9c51c92c/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "5fc1e5d4-1015-4614-b486-8727eb5e388b",
+        "invariantUUID": "19bf4492-3bdb-4d62-966d-2e2498e1891c",
+        "name": "Root",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/5fc1e5d4-1015-4614-b486-8727eb5e388b/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "61214be3-e560-44cc-877b-d484bcc2ee79",
+        "invariantUUID": "88a9f65b-94a0-4530-a17e-adaada70838d",
+        "name": "BlockStorage",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/61214be3-e560-44cc-877b-d484bcc2ee79/toscaModel",
+        "category": "Generic",
+        "subCategory": "Infrastructure",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "efb54bab-a842-48b3-842a-dffb000acf1f",
+        "invariantUUID": "cb2574f8-0b75-4ea1-8517-acba650ba72f",
+        "name": "Database",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/efb54bab-a842-48b3-842a-dffb000acf1f/toscaModel",
+        "category": "Generic",
+        "subCategory": "Database",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "4066e7da-0dba-4d0b-b74c-c30446ed277e",
+        "invariantUUID": "75c5fbc6-4366-4163-af9c-1a43bdb90425",
+        "name": "AbstractSubstitute",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/4066e7da-0dba-4d0b-b74c-c30446ed277e/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "b39e436d-47b0-4509-95d6-8a63e2c722d1",
+        "invariantUUID": "0790aa94-5b47-4100-b26a-4cabd9639698",
+        "name": "ObjectStorage",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/b39e436d-47b0-4509-95d6-8a63e2c722d1/toscaModel",
+        "category": "Generic",
+        "subCategory": "Infrastructure",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "94b8f588-624c-4e61-9ead-32aaadd8cf65",
+        "invariantUUID": "57eecece-2079-4a5d-9627-4fde30434552",
+        "name": "ContrailNetworkRules",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/94b8f588-624c-4e61-9ead-32aaadd8cf65/toscaModel",
+        "category": "Generic",
+        "subCategory": "Rules",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "fa17c264-7f19-4919-a1d4-aab5c53b9c32",
+        "invariantUUID": "b0a7ddd2-429e-493c-ba05-fe9440b49b54",
+        "name": "SoftwareComponent",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/fa17c264-7f19-4919-a1d4-aab5c53b9c32/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "76ba485f-50a3-480d-895e-5c319191bc11",
+        "invariantUUID": "cf3ccc9c-b6ea-468e-8eef-f45479978fc1",
+        "name": "Allotedresource",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/76ba485f-50a3-480d-895e-5c319191bc11/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "Allotted Resource",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99124"
+    },
+
+    {
+        "uuid": "1909a305-e032-46ce-9278-c751659958cc",
+        "invariantUUID": "aa9abf65-5a91-4c6f-814e-47b5fa06ccbd",
+        "name": "Allotted resource 123456",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/1909a305-e032-46ce-9278-c751659958cc/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "Allotted Resource",
+        "resourceType": "VFC",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "64fb42a4-7c3d-415b-afd0-1949abef550a",
+        "invariantUUID": "3bbcb293-24ff-4370-b46a-9233c92c1469",
+        "name": "ContrailAbstractSubstitute",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/64fb42a4-7c3d-415b-afd0-1949abef550a/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "c3ed93e4-4955-4100-8f4b-c9472cb3f28f",
+        "invariantUUID": "29e31a72-10c4-453d-99e6-76e0fe0f7a99",
+        "name": "Tuesdayvsp.nodes.vCTS_server",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/c3ed93e4-4955-4100-8f4b-c9472cb3f28f/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "af3193"
+    },
+
+    {
+        "uuid": "a71b3246-b54e-4646-bd6f-d5a11d4878df",
+        "invariantUUID": "b91e1d84-c9de-4a37-994a-b10949a14004",
+        "name": "Monitoringvsp.nodes.vCTS_server",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/a71b3246-b54e-4646-bd6f-d5a11d4878df/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "af3193"
+    },
+
+    {
+        "uuid": "d36283cc-7d52-4893-8f72-fbffbbe17857",
+        "invariantUUID": "87802076-8649-4581-a540-b103ab15bd22",
+        "name": "Application",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/d36283cc-7d52-4893-8f72-fbffbbe17857/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "2ef832aa-25f1-4f5a-b6d4-a6ee90011918",
+        "invariantUUID": "86ed816c-447f-477f-9810-4c07c7356c2e",
+        "name": "LoadBalancer",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/2ef832aa-25f1-4f5a-b6d4-a6ee90011918/toscaModel",
+        "category": "Generic",
+        "subCategory": "Infrastructure",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "31060494-0c59-4c15-b4f4-34900d73b803",
+        "invariantUUID": "4950496e-6e75-47fb-8746-4895887a6d03",
+        "name": "Compute",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/31060494-0c59-4c15-b4f4-34900d73b803/toscaModel",
+        "category": "Generic",
+        "subCategory": "Infrastructure",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "d57e57d2-e3c6-470d-8d16-e6ea05f536c5",
+        "invariantUUID": "dd31d2de-0a7f-4198-8966-3a04100fbfe3",
+        "name": "SecurityRules",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/d57e57d2-e3c6-470d-8d16-e6ea05f536c5/toscaModel",
+        "category": "Generic",
+        "subCategory": "Rules",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "db9360b9-0edb-43e1-8cf0-00bb90b7c2be",
+        "invariantUUID": "651f273d-7e1d-410c-bd88-cf8c9f713454",
+        "name": "ContrailV2NetworkRules",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/db9360b9-0edb-43e1-8cf0-00bb90b7c2be/toscaModel",
+        "category": "Generic",
+        "subCategory": "Rules",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "503948a9-03bb-4738-8464-c6e21da10792",
+        "invariantUUID": "477a2abf-10b6-4777-bd50-afdcbbe59d54",
+        "name": "Vtsbc1.nodes.heat.module_2_perimeta_sw_b_child",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/503948a9-03bb-4738-8464-c6e21da10792/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "e4514d83-9708-427f-a62b-f996e426ba58",
+        "invariantUUID": "5886b184-53c2-475b-8e75-b38696c10b8a",
+        "name": "GlobalCompute",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/e4514d83-9708-427f-a62b-f996e426ba58/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "3ab24991-cf93-4d40-9468-52d233d36ad6",
+        "invariantUUID": "fb26e1e2-d7b0-4809-86e6-1ea31c5c6a4a",
+        "name": "FcgiOs.nodes.heat.modular_1_cgi_frwl_child",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/3ab24991-cf93-4d40-9468-52d233d36ad6/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "930aab76-fc52-43dd-8f19-e2ce11503bb5",
+        "invariantUUID": "f66c1a6b-2ad5-43dd-8cc9-1924f7eaad0f",
+        "name": "Vtsbc1.nodes.heat.vlan_subinterface_dual",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/930aab76-fc52-43dd-8f19-e2ce11503bb5/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "fca030db-0a4b-4873-94d2-20ea6b8f259f",
+        "invariantUUID": "124d05ac-8bbc-4510-94d7-c6418ee25864",
+        "name": "Vtsbc1.nodes.heat.module_2_perimeta_sw_a_child",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/fca030db-0a4b-4873-94d2-20ea6b8f259f/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "bc74b1ae-11f7-4550-8c25-e528e749d2ea",
+        "invariantUUID": "8c0c60ea-b468-4288-9aea-3232b5e7cce7",
+        "name": "Ronytestcsar.nodes.arb",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/bc74b1ae-11f7-4550-8c25-e528e749d2ea/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rb844h"
+    },
+
+    {
+        "uuid": "624a7da1-68ce-4b95-9d50-6a07d645e421",
+        "invariantUUID": "7ed55927-5274-461f-8ba5-76abdcf609a8",
+        "name": "Vftest54.nodes.heat.vdns",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/624a7da1-68ce-4b95-9d50-6a07d645e421/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rb844h"
+    },
+
+    {
+        "uuid": "0c19272a-b2a2-4ffe-a6e7-ce3a683f23fc",
+        "invariantUUID": "effff7eb-737b-496d-8e23-8e31efe67dc4",
+        "name": "VmmscEca.nodes.heat.arb",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/0c19272a-b2a2-4ffe-a6e7-ce3a683f23fc/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "az2497"
+    },
+
+    {
+        "uuid": "46887197-fec9-4cf5-9207-e6e7f4a6cf3a",
+        "invariantUUID": "1b8a54a2-b1ff-441c-9c6e-3aa83773e67c",
+        "name": "VfVolumeGroup.nodes.heat.sm",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/46887197-fec9-4cf5-9207-e6e7f4a6cf3a/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "563ca30e-8e6f-4456-b1c0-d1a5b6b052aa",
+        "invariantUUID": "876fe041-c25a-4e71-bbd3-ce18d1951974",
+        "name": "1607MogMultiMembersVolume.nodes.heat.sm",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/563ca30e-8e6f-4456-b1c0-d1a5b6b052aa/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "2437819c-3f2e-4ae8-9427-b41463a63a21",
+        "invariantUUID": "6ec6862d-1e49-479b-b792-0b02a26cf9a6",
+        "name": "VfModule2.nodes.heat.eca_trx",
+        "version": "2.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/2437819c-3f2e-4ae8-9427-b41463a63a21/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "3c9b6ec9-2b6a-4c81-96cd-f3e5c0264ae6",
+        "invariantUUID": "cdc19c35-bcac-4f78-a7a6-c216b374f5a3",
+        "name": "VmmscAic30MultiMembersMultiGroupsVolumeCs.nodes.heat.nems_fe",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/3c9b6ec9-2b6a-4c81-96cd-f3e5c0264ae6/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "612317df-67b5-487f-b592-44f5e682b0a9",
+        "invariantUUID": "3bae7612-b50d-48ed-8ae7-b6f17521395b",
+        "name": "VmmscAic30MultiMembersMultiGroupsVolumeCs.nodes.heat.nems_be",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/612317df-67b5-487f-b592-44f5e682b0a9/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "77b6934c-353e-407e-aa1e-6f1288cb3969",
+        "invariantUUID": "adb87b9e-4bc2-4e96-8b1a-6176240f02a8",
+        "name": "VmogVnf1.nodes.heat.oam",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/77b6934c-353e-407e-aa1e-6f1288cb3969/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "48a5a370-d91d-4bdd-a1a0-8d82eedcced8",
+        "invariantUUID": "514ba932-1b32-447b-8655-f3a356047172",
+        "name": "VfModules.nodes.heat.mmsc",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/48a5a370-d91d-4bdd-a1a0-8d82eedcced8/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "1450f9c2-b491-4ac6-a388-db4e0752a58f",
+        "invariantUUID": "5dc27c39-2540-4a2c-881c-5dab7859bbe8",
+        "name": "AppcTest.nodes.heat.be",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/1450f9c2-b491-4ac6-a388-db4e0752a58f/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "311a159d-ea0b-494c-97dd-52683df85faf",
+        "invariantUUID": "3c28e9d7-8ccf-4249-9eab-878d6cd84dfa",
+        "name": "Ixlt1Os.nodes.heat.its",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/311a159d-ea0b-494c-97dd-52683df85faf/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "4902fae4-7f42-43c5-9472-fe12eca3f510",
+        "invariantUUID": "60d87328-e9fd-474e-aa3e-791f23e7c0fa",
+        "name": "VfVolumeGroup.nodes.heat.cm",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/4902fae4-7f42-43c5-9472-fe12eca3f510/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "a82e5a26-463c-4b17-9d6e-16ea1f8c0dde",
+        "invariantUUID": "dfd14d20-8d28-4ad1-a824-dd75d282f97b",
+        "name": "VfVolumeGroup.nodes.heat.ps",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/a82e5a26-463c-4b17-9d6e-16ea1f8c0dde/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "d852ce5c-c883-41a1-88f9-167b8b4ff197",
+        "invariantUUID": "18f3b7e1-3dfe-4299-982a-b510c64fbfba",
+        "name": "1607MogMultiMembersVolume.nodes.heat.ps",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/d852ce5c-c883-41a1-88f9-167b8b4ff197/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "b299bd46-66c1-4954-af45-2fe3188f5c5e",
+        "invariantUUID": "41aa2e0e-f003-4a03-9e9b-5dbcc968b1df",
+        "name": "VfModulesVmmsc.nodes.heat.mmsc",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/b299bd46-66c1-4954-af45-2fe3188f5c5e/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "f80f5252-2ecb-41e3-84d5-936586ae0a3a",
+        "invariantUUID": "d90ae454-bc1c-44ef-a680-74b6a09d3123",
+        "name": "VfModules.nodes.heat.lb",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/f80f5252-2ecb-41e3-84d5-936586ae0a3a/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "9e4b96d7-5701-413e-8461-4cac258365ca",
+        "invariantUUID": "1a81fcd0-d62c-4ba3-b988-40a1a5986cb0",
+        "name": "TestPort.nodes.heat.be",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/9e4b96d7-5701-413e-8461-4cac258365ca/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "4d2bfb6f-9276-447b-b145-7f7856af9a6c",
+        "invariantUUID": "32a90486-5e0d-4977-b445-a9a165295841",
+        "name": "VmogVnf1.nodes.heat.pps",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/4d2bfb6f-9276-447b-b145-7f7856af9a6c/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "a614b20e-9c45-4163-b673-38f0068c5365",
+        "invariantUUID": "160c57a3-d87f-4f7f-a38a-7ecf6b48d42b",
+        "name": "Vmmsc.nodes.heat.nems_fe",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/a614b20e-9c45-4163-b673-38f0068c5365/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "fbad0868-45e9-433b-ada7-070e88c09672",
+        "invariantUUID": "8242ebe6-8333-4e4a-a997-31a391cbcc1f",
+        "name": "VmogVnf1.nodes.heat.mba",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/fbad0868-45e9-433b-ada7-070e88c09672/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "e50cbfd4-a860-441b-b1ff-c654c3222ad6",
+        "invariantUUID": "03c1f631-d057-4246-b276-2a0e18119a21",
+        "name": "Pxtc.nodes.heat.mon",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/e50cbfd4-a860-441b-b1ff-c654c3222ad6/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "21aaf7bf-5af9-4b1a-9850-f4a5e95f185e",
+        "invariantUUID": "9bc1d654-b663-4170-89f2-e8dabb6d2342",
+        "name": "VmogVnf1.nodes.heat.ppd",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/21aaf7bf-5af9-4b1a-9850-f4a5e95f185e/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "9d4a37d7-3c9b-4dad-abb6-26b50b15da8b",
+        "invariantUUID": "419651d6-45e9-453a-95cd-4f9f0934fa9c",
+        "name": "Pxtc.nodes.heat.adm",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/9d4a37d7-3c9b-4dad-abb6-26b50b15da8b/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "bb8fddbf-e011-4fed-9f36-181478f4e56c",
+        "invariantUUID": "552c6aa1-0a27-45f7-a0e5-9a380a592ad4",
+        "name": "TestPort.nodes.heat.fe",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/bb8fddbf-e011-4fed-9f36-181478f4e56c/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "2bb496fb-6ede-42e0-957e-bd80fa2e8aa1",
+        "invariantUUID": "2a6f0a0e-2a76-43d1-9489-3ad4fdf82cdc",
+        "name": "Runtime",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/2bb496fb-6ede-42e0-957e-bd80fa2e8aa1/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "a5226541-363b-4d78-8f52-06d421795457",
+        "invariantUUID": "3b05cf5e-5120-4aef-a213-f3d984c83efe",
+        "name": "TestPort.nodes.fe_1",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/a5226541-363b-4d78-8f52-06d421795457/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "f58b4bcf-baec-4c11-a6d0-0e92d4629fd2",
+        "invariantUUID": "603b02a9-afa2-487b-a8c1-90c84c21d4cf",
+        "name": "Vpe.nodes.vmx_vre",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/f58b4bcf-baec-4c11-a6d0-0e92d4629fd2/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "30db70cc-17b8-4c39-a848-5f629e9a929e",
+        "invariantUUID": "2a3100da-581e-438a-915c-3c67ecbe8f9c",
+        "name": "AppcTest.nodes.fe_0",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/30db70cc-17b8-4c39-a848-5f629e9a929e/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "52398d14-90d0-4d3a-ac84-10b525e79e3c",
+        "invariantUUID": "8f061343-5507-4232-ba34-4933bb2b85d3",
+        "name": "Fdnt.nodes.heat.mod_vmsi_dnt_fw_child",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/52398d14-90d0-4d3a-ac84-10b525e79e3c/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "d0deff85-ca52-4c86-8ca7-a02deddba983",
+        "invariantUUID": "c62a62a8-f021-4e22-85b9-45a19ddd8597",
+        "name": "Vtsbc1.nodes.heat.module_1_perimeta_sw_a_child",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/d0deff85-ca52-4c86-8ca7-a02deddba983/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "25f77df9-f94a-4458-9699-5f483167f700",
+        "invariantUUID": "8d8675b4-88f8-43ad-aeed-3cb2e96d8f67",
+        "name": "DBMS",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/25f77df9-f94a-4458-9699-5f483167f700/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "1ce8b11c-589c-4359-9caa-590a43fb53ec",
+        "invariantUUID": "e4d4a041-38f9-416b-a97d-56eaca20cb88",
+        "name": "WebServer",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/1ce8b11c-589c-4359-9caa-590a43fb53ec/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "f27b3a9c-b815-42fe-83c6-da86c18a63a6",
+        "invariantUUID": "0d4bec79-e600-4647-a9a6-35d1f1dd0802",
+        "name": "Fdnt1.nodes.heat.mod_vmsi_dnt_fw_child",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/f27b3a9c-b815-42fe-83c6-da86c18a63a6/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "c63814fe-9d50-4283-8229-ede6a5961de9",
+        "invariantUUID": "b9ffe743-22ae-4bdc-a36a-0fd7cdab97ff",
+        "name": "Mazav.nodes.heat.mod_vmsi_dnt_fw_child",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/c63814fe-9d50-4283-8229-ede6a5961de9/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "23f4bcc5-c6e1-4fdd-b45b-29eb3f82af2f",
+        "invariantUUID": "62545a84-126c-4563-b72b-7414cb2db617",
+        "name": "Fdnt1234.nodes.heat.mod_vmsi_dnt_fw_child",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/23f4bcc5-c6e1-4fdd-b45b-29eb3f82af2f/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "e63ef8ed-d40d-4b5f-99da-898fbe4b051b",
+        "invariantUUID": "f747ebd4-8c02-4653-b919-7fd894450970",
+        "name": "Vtsbc1.nodes.heat.module_1_perimeta_sw_b_child",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/e63ef8ed-d40d-4b5f-99da-898fbe4b051b/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "292d2d83-c33b-4c22-8341-4401194a6499",
+        "invariantUUID": "b27f9b4b-2188-4edb-9e05-83680b5462b2",
+        "name": "VfModules1.nodes.heat.nems_fe",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/292d2d83-c33b-4c22-8341-4401194a6499/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "af51c072-1754-4db3-97be-179ab7433295",
+        "invariantUUID": "b615bc4f-c4e3-4381-9467-f6674f4fe5ce",
+        "name": "VfModules1.nodes.heat.eca_trx",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/af51c072-1754-4db3-97be-179ab7433295/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "5ec9fb9f-fa32-48e8-a317-8be839e15d30",
+        "invariantUUID": "ed2acd41-d9f5-475b-b696-9ff2ac93714e",
+        "name": "VmmscEca.nodes.arb",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/5ec9fb9f-fa32-48e8-a317-8be839e15d30/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "az2497"
+    },
+
+    {
+        "uuid": "3a8230f1-dd86-42f8-9d73-c239bc5c74e8",
+        "invariantUUID": "d7070c39-94e0-48f5-befc-c3b02a2dc1ec",
+        "name": "VfModulesVmmsc.nodes.heat.nems_be",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/3a8230f1-dd86-42f8-9d73-c239bc5c74e8/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "5658235d-6a1e-47fe-8e5f-9e081a11b713",
+        "invariantUUID": "7da4de5f-f610-4b0a-a57f-e76bf05e676e",
+        "name": "TestPort.nodes.fe_0",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/5658235d-6a1e-47fe-8e5f-9e081a11b713/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "d4979513-3719-4076-bbc1-5a4fe040ddc6",
+        "invariantUUID": "54f5d6e1-0290-473f-b7ef-ae5e31cd9985",
+        "name": "Vpe.nodes.vmx_vpfe",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/d4979513-3719-4076-bbc1-5a4fe040ddc6/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "a450b1ba-2d69-44e7-8934-1d21952ba6c9",
+        "invariantUUID": "350c8017-ab5a-4633-bbe0-e7bbf71f0887",
+        "name": "TestConsol.nodes.fe_1",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/a450b1ba-2d69-44e7-8934-1d21952ba6c9/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "c0bd2a8b-9dc3-4819-8ab1-11175ae06ef1",
+        "invariantUUID": "427b34d8-ca6d-4c94-8e4f-06d63a1e24eb",
+        "name": "NovaServer",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/c0bd2a8b-9dc3-4819-8ab1-11175ae06ef1/toscaModel",
+        "category": "Generic",
+        "subCategory": "Infrastructure",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "5f6ccc29-6f6c-41cf-b995-73c58e7278d2",
+        "invariantUUID": "044d46c6-e6ae-4569-b7b4-3d0f626612de",
+        "name": "1607MogMultiMembersVolume.nodes.heat.oam",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/5f6ccc29-6f6c-41cf-b995-73c58e7278d2/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "5d6fdb58-1166-41b6-aab7-260e494ccc58",
+        "invariantUUID": "04c36447-22a8-4039-a7ae-fe134907061e",
+        "name": "ContrailCompute",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/5d6fdb58-1166-41b6-aab7-260e494ccc58/toscaModel",
+        "category": "Generic",
+        "subCategory": "Infrastructure",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "jh0003"
+    },
+
+    {
+        "uuid": "57d4264b-3175-4a31-9515-f23c0318930f",
+        "invariantUUID": "8e3f2465-5f4f-4c9e-9b84-5db3d5d6a3f8",
+        "name": "VmogVnf1.nodes.heat.pcm",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/57d4264b-3175-4a31-9515-f23c0318930f/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "dcd62b53-a045-4864-9ed3-aaf722fec10a",
+        "invariantUUID": "046a066f-8398-4271-aa1a-4ccdd46c892f",
+        "name": "VfModuleLdsa.nodes.heat.ltm",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/dcd62b53-a045-4864-9ed3-aaf722fec10a/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "aa00977d-ff67-473a-acb8-bb24db037a0b",
+        "invariantUUID": "989ae5c8-e9b9-4e14-b609-1fde2ad4e165",
+        "name": "TestConsol.nodes.fe_0",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/aa00977d-ff67-473a-acb8-bb24db037a0b/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "cb08bf67-6fc9-44ae-ae31-ab619cfd94af",
+        "invariantUUID": "7555d6be-ef04-4812-b58c-b00eda9e1a1b",
+        "name": "AppcTest.nodes.fe_1",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/cb08bf67-6fc9-44ae-ae31-ab619cfd94af/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "cc3a0064-e9d4-421e-ba14-ce340adb7ed9",
+        "invariantUUID": "341b0751-e9b7-4f80-935e-30aef979ea71",
+        "name": "VfModules.nodes.heat.nems_fe",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/cc3a0064-e9d4-421e-ba14-ce340adb7ed9/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "1f927980-bd8d-4a0c-8002-8f550e52efbe",
+        "invariantUUID": "d9f0237f-acaa-411f-843c-952d4d746d9f",
+        "name": "Vmmsc.nodes.heat.eca_trx",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/1f927980-bd8d-4a0c-8002-8f550e52efbe/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "6d1669d1-be78-47e7-aed4-d5a2267c81d4",
+        "invariantUUID": "b2a066b5-0062-482a-af23-9e1426f7d388",
+        "name": "VfVolumeGroup.nodes.heat.pd",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/6d1669d1-be78-47e7-aed4-d5a2267c81d4/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "bd9e5061-40dc-42ca-8d77-c606a24c8bfd",
+        "invariantUUID": "a8cf5282-4c83-4540-8515-c315328af01d",
+        "name": "VfNoLicense.nodes.pcm",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/bd9e5061-40dc-42ca-8d77-c606a24c8bfd/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "68ea026e-c604-47b5-9cd1-524a58714a14",
+        "invariantUUID": "d0aa37ea-a1f8-41dc-9b5f-7e54f4d7a2f3",
+        "name": "VfNoLicense.nodes.pps",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/68ea026e-c604-47b5-9cd1-524a58714a14/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "bc3a8aae-7f94-4dac-b819-d37a077a08fc",
+        "invariantUUID": "0df5de75-3a9e-439a-8d03-e989ca7bfe16",
+        "name": "ScpTestVsp.nodes.fe_0",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/bc3a8aae-7f94-4dac-b819-d37a077a08fc/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ed852m"
+    },
+
+    {
+        "uuid": "8ba3f710-58d4-4d60-9384-1dad449d381a",
+        "invariantUUID": "4a34455c-b9c0-48ca-90ac-debf986ac028",
+        "name": "VfDemor.nodes.vmx_vre",
+        "version": "2.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/8ba3f710-58d4-4d60-9384-1dad449d381a/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "0a09e932-9fde-4e52-b7e3-2e542b61faa0",
+        "invariantUUID": "dd97be59-be12-4749-b8ca-1bf0d7336573",
+        "name": "ScpTestVsp.nodes.smp",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/0a09e932-9fde-4e52-b7e3-2e542b61faa0/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ed852m"
+    },
+
+    {
+        "uuid": "fa6ca25b-4578-4093-b8a2-031cb8f1f481",
+        "invariantUUID": "c88282f0-608d-4aef-b12f-dda9474f55f9",
+        "name": "VscpaasTest2.nodes.fe_1",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/fa6ca25b-4578-4093-b8a2-031cb8f1f481/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ed852m"
+    },
+
+    {
+        "uuid": "f11a8681-ab58-4f0d-8387-76ecdfa31073",
+        "invariantUUID": "2a94a311-f6bb-48b6-a458-e4b1a724bfc7",
+        "name": "VscpaasTest2.nodes.smp",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/f11a8681-ab58-4f0d-8387-76ecdfa31073/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ed852m"
+    },
+
+    {
+        "uuid": "4b1cca9b-23a0-4037-aaf3-ce5cd7c91851",
+        "invariantUUID": "98e3949f-1047-4cd8-9b8b-6b6c55d51f74",
+        "name": "Vprobe.nodes.vLBAgent",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/4b1cca9b-23a0-4037-aaf3-ce5cd7c91851/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m08740"
+    },
+
+    {
+        "uuid": "17ed7b78-1ffb-4864-a2ec-b6666a5fed16",
+        "invariantUUID": "2a6de403-c5b7-44ea-a398-ae78d53fb31a",
+        "name": "VpeAvRenana.nodes.vmx_vre",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/17ed7b78-1ffb-4864-a2ec-b6666a5fed16/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "ab89b69b-b92b-4e34-b1db-a6378d709241",
+        "invariantUUID": "dbb9b18d-e3ea-48cf-bcbd-81d8d4b22d72",
+        "name": "Vmmsc.nodes.heat.lb",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/ab89b69b-b92b-4e34-b1db-a6378d709241/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "d45694e4-ed86-4a44-a644-5a8a3ff89397",
+        "invariantUUID": "3eb4d8e0-2b85-4b74-bad3-2e4406f50d4d",
+        "name": "VfModules1.nodes.heat.mmsc",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/d45694e4-ed86-4a44-a644-5a8a3ff89397/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "5c7fd7c0-fc79-4309-bb03-85388cae45a8",
+        "invariantUUID": "7ff3e308-cf42-47ae-afc3-ecd5ef9823c0",
+        "name": "VmmscEca.nodes.heat.eca",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/5c7fd7c0-fc79-4309-bb03-85388cae45a8/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "az2497"
+    },
+
+    {
+        "uuid": "f739ea35-7bd4-42ed-b9ee-1e0fd2017c72",
+        "invariantUUID": "ce4127ef-2564-40e6-b62e-6be7758f46a7",
+        "name": "Pxtc.nodes.heat.ddc",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/f739ea35-7bd4-42ed-b9ee-1e0fd2017c72/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "f2339431-f3ab-41c9-90c4-6c2c958e1b06",
+        "invariantUUID": "40ab991d-ad0c-4adb-9f2a-0f2eef8bb880",
+        "name": "VfModules1.nodes.heat.lb",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/f2339431-f3ab-41c9-90c4-6c2c958e1b06/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "15728e01-7076-4765-8002-95154ad29d5f",
+        "invariantUUID": "9814209f-7b9d-4b21-8968-f6a3638b107c",
+        "name": "1607Mog.nodes.heat.cm",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/15728e01-7076-4765-8002-95154ad29d5f/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "ab168037-e654-4990-a188-e5d2f25a8768",
+        "invariantUUID": "ef673ad3-2d81-47b7-99c2-bdc69ae79d80",
+        "name": "Vcts3.nodes.heat.vCTS_server",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/ab168037-e654-4990-a188-e5d2f25a8768/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ml4535"
+    },
+
+    {
+        "uuid": "e1d7eb6a-646d-4906-9981-44ed892dc01c",
+        "invariantUUID": "78245f38-b99a-49a8-ac5b-56737ad686db",
+        "name": "VfModulesVmmsc.nodes.heat.eca_trx",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/e1d7eb6a-646d-4906-9981-44ed892dc01c/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "74c527c6-edb7-4bbe-a63c-d2daf5a12db0",
+        "invariantUUID": "18bc94d2-2be1-46e9-bd70-ded327b1324e",
+        "name": "VfModule2.nodes.heat.mmsc",
+        "version": "2.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/74c527c6-edb7-4bbe-a63c-d2daf5a12db0/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "345459d0-ba42-45ba-9eb0-cc56e4f35ea9",
+        "invariantUUID": "5362b258-b867-4e98-a3c4-138c6d444c69",
+        "name": "VfModule2.nodes.heat.nems_be",
+        "version": "2.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/345459d0-ba42-45ba-9eb0-cc56e4f35ea9/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "bc40b750-56ab-4c6b-8e15-412f9be0178f",
+        "invariantUUID": "ab769637-063f-41fd-927d-771a1913235b",
+        "name": "VmmscAic30MultiMembersMultiGroupsVolumeCs.nodes.heat.mmsc",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/bc40b750-56ab-4c6b-8e15-412f9be0178f/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "3ff3d87f-c55f-4b4c-a8ae-29931d910359",
+        "invariantUUID": "5af2c63a-1b3e-42a5-ab4b-07e97d1dcbd2",
+        "name": "VmmscAic30MultiMembersMultiGroupsVolume.nodes.heat.nems_be",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/3ff3d87f-c55f-4b4c-a8ae-29931d910359/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "2c8f1219-8000-4001-aa13-496a0396d40f",
+        "invariantUUID": "096ff622-d7ea-4482-b7fe-8c7d99e7d7c6",
+        "name": "CLAMP-Dev-nodes.virc_fe_be_1",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/2c8f1219-8000-4001-aa13-496a0396d40f/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m08740"
+    },
+
+    {
+        "uuid": "d8a2de8a-27d8-491c-bbb9-da779a4da7c6",
+        "invariantUUID": "0b4d158e-c20e-4630-b515-3ecda2ad05a4",
+        "name": "VfModules.nodes.heat.nems_be",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/d8a2de8a-27d8-491c-bbb9-da779a4da7c6/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "d544d6a6-4fcc-42db-97f6-e8cccc69c5ee",
+        "invariantUUID": "cd4a433e-cf76-4652-a6b8-59e657e0c5a0",
+        "name": "VmmscAic30MultiMembersMultiGroupsVolumeCs.nodes.heat.lb",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/d544d6a6-4fcc-42db-97f6-e8cccc69c5ee/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "5d6e7129-d7c8-41b8-ae2a-5f1688162c7c",
+        "invariantUUID": "350d9877-894a-4ce4-a899-48df9428ff88",
+        "name": "Vieccf.nodes.heat.iox",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/5d6e7129-d7c8-41b8-ae2a-5f1688162c7c/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "fcc6655e-7074-48de-89ef-ef6e4a5705e3",
+        "invariantUUID": "6dd080e4-372c-44cc-8c25-868d45f2e959",
+        "name": "VfModule2.nodes.heat.nems_fe",
+        "version": "2.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/fcc6655e-7074-48de-89ef-ef6e4a5705e3/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "400cab12-2d1e-4a2c-a33a-d9d7b3262dd1",
+        "invariantUUID": "9ebca51b-16d0-423c-8e5f-4472c1888029",
+        "name": "VmogVnf1.nodes.heat.mbt",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/400cab12-2d1e-4a2c-a33a-d9d7b3262dd1/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "a068d0c0-06c6-4b58-bc99-6ac910700edb",
+        "invariantUUID": "f2e37302-fd97-48d7-bbdb-f0caaab5fe03",
+        "name": "1607Mog.nodes.heat.pd",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/a068d0c0-06c6-4b58-bc99-6ac910700edb/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "c2e88763-87a9-4d33-b598-7811ae3f87d2",
+        "invariantUUID": "9d16cf01-c244-42c8-bcfe-faf108069e84",
+        "name": "VfModulesVmmsc.nodes.heat.nems_fe",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/c2e88763-87a9-4d33-b598-7811ae3f87d2/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "de861add-3f4a-4526-9754-8bcb69d0fd0e",
+        "invariantUUID": "67560771-ffcb-46fb-a40c-0e1dee74f43a",
+        "name": "VmmscAic30MultiMembersMultiGroupsVolume.nodes.heat.mmsc",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/de861add-3f4a-4526-9754-8bcb69d0fd0e/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "4514b4e5-f163-4011-87fd-445f4366e3c2",
+        "invariantUUID": "91c638ef-49f5-4366-8749-cda8a33ed41e",
+        "name": "VfModules.nodes.heat.eca_trx",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/4514b4e5-f163-4011-87fd-445f4366e3c2/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "3679d10e-a1a2-46a4-97b3-4056a0920e7b",
+        "invariantUUID": "d272aa71-398a-4eff-ab00-6a4281b41c92",
+        "name": "Pxtc.nodes.heat.mda",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/3679d10e-a1a2-46a4-97b3-4056a0920e7b/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "f905ca32-dac5-4337-a1d7-cc2bca86b407",
+        "invariantUUID": "acbb7a13-7ae7-4ac7-b0e4-23314cbc65e2",
+        "name": "Vmmsc.nodes.heat.mmsc",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/f905ca32-dac5-4337-a1d7-cc2bca86b407/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "ee10af8a-c8bf-4455-808e-5550050d4ea9",
+        "invariantUUID": "e74db59b-72fb-4734-9d48-40d8c47d292a",
+        "name": "VfModulesVmmsc.nodes.heat.lb",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/ee10af8a-c8bf-4455-808e-5550050d4ea9/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "771ca169-bfac-4306-9748-b2ae804852f9",
+        "invariantUUID": "ae627e8b-374b-41ac-9efb-25672099c7dd",
+        "name": "Vscp0502.nodes.heat.be",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/771ca169-bfac-4306-9748-b2ae804852f9/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ml4535"
+    },
+
+    {
+        "uuid": "72682bb7-94ca-47a7-9917-826f62e3d00d",
+        "invariantUUID": "7bb2f20e-10af-485b-9c7c-9fba2c016856",
+        "name": "1607Mog.nodes.heat.sm",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/72682bb7-94ca-47a7-9917-826f62e3d00d/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "1fa641db-1d77-4242-8d0b-c0aa5f88fe2e",
+        "invariantUUID": "22464824-fcbe-4760-9aa7-f2d110e5c0f8",
+        "name": "1607MogMultiMembersVolume.nodes.heat.cm",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/1fa641db-1d77-4242-8d0b-c0aa5f88fe2e/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "897dcb54-bb55-4311-8c0e-b663781d7e4f",
+        "invariantUUID": "c223adda-e48d-487d-98e8-654bbb8268af",
+        "name": "VmmscAic30MultiMembersMultiGroupsVolume.nodes.heat.lb",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/897dcb54-bb55-4311-8c0e-b663781d7e4f/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "a60c5230-8201-4b50-84a8-c905128c2bc2",
+        "invariantUUID": "59399b2e-66ed-4823-aa27-189fdb466045",
+        "name": "AppcTest.nodes.heat.smp",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/a60c5230-8201-4b50-84a8-c905128c2bc2/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "173c32b5-44c8-4404-ba18-32d9de49afae",
+        "invariantUUID": "c247493b-15a4-47af-bb6b-c664cb5a4d37",
+        "name": "VmmscAic30MultiMembersMultiGroupsVolume.nodes.heat.eca_trx",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/173c32b5-44c8-4404-ba18-32d9de49afae/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "59aa2d42-db52-438c-a69c-0b97a193abcd",
+        "invariantUUID": "31fc926f-cfc5-42bd-8955-42e68c113902",
+        "name": "TestConsol.nodes.heat.smp",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/59aa2d42-db52-438c-a69c-0b97a193abcd/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "0e6509c9-7d35-4daf-9086-9fe30fdd1275",
+        "invariantUUID": "9516ad03-b122-4738-ad6d-d9c2166cd75a",
+        "name": "VmmscAic30MultiMembersMultiGroupsVolume.nodes.heat.nems_fe",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/0e6509c9-7d35-4daf-9086-9fe30fdd1275/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "e541a64c-9de7-4c71-b827-eb0f4d319e62",
+        "invariantUUID": "9952957d-d266-406e-ab7d-23a7fc154ea0",
+        "name": "1607MogMultiMembersVolume.nodes.heat.pd",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/e541a64c-9de7-4c71-b827-eb0f4d319e62/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "5e448cd9-6dbd-4c31-98f2-caeceaf5efa7",
+        "invariantUUID": "3a97ded5-e8fc-42fa-b244-a6f91b610e08",
+        "name": "VfModule2.nodes.heat.lb",
+        "version": "2.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/5e448cd9-6dbd-4c31-98f2-caeceaf5efa7/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "d5c6a462-9d9a-46d4-a0b2-485300f34f0c",
+        "invariantUUID": "635abeeb-d903-44a8-9135-5d26e1ee41a1",
+        "name": "VmogVnf1.nodes.heat.psm",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/d5c6a462-9d9a-46d4-a0b2-485300f34f0c/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "8678abfe-8cbd-42f2-aa78-ca47a1beaa14",
+        "invariantUUID": "4d02c8a5-e141-4d01-94ec-7a3b94afda97",
+        "name": "VmmscAic30MultiMembersMultiGroupsVolumeCs.nodes.heat.eca_trx",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/8678abfe-8cbd-42f2-aa78-ca47a1beaa14/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "1c469da0-298f-41ea-94a2-aef82264e1e7",
+        "invariantUUID": "91530a04-e1f6-4242-abd2-f20630e1fa8f",
+        "name": "1607Mog.nodes.heat.oam",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/1c469da0-298f-41ea-94a2-aef82264e1e7/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "c29e22e2-1a09-4164-a9a2-72d0e3f5df5b",
+        "invariantUUID": "a0e5c360-f0e7-4b8d-ac97-969b9dc5b187",
+        "name": "Vmmsc.nodes.heat.nems_be",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/c29e22e2-1a09-4164-a9a2-72d0e3f5df5b/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "986b76dc-aca7-45b1-919c-398b770d5504",
+        "invariantUUID": "cd2f22e1-e21e-474b-a506-1bb4365aa106",
+        "name": "AppcTest.nodes.heat.fe",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/986b76dc-aca7-45b1-919c-398b770d5504/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "606f6c2b-a411-4644-a183-5487e3aed612",
+        "invariantUUID": "d67b05d1-119c-47a3-8b20-2babb53b42b3",
+        "name": "Vpe.nodes.heat.vmx_vpfe",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/606f6c2b-a411-4644-a183-5487e3aed612/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "00695bbf-fa3f-47e4-96d7-973700a66f4f",
+        "invariantUUID": "d26ce6ce-b1f8-4cdc-955d-e2272563cff6",
+        "name": "TestPort.nodes.heat.smp",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/00695bbf-fa3f-47e4-96d7-973700a66f4f/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "d94275b4-ccfa-4096-bd7b-dd45ff6e84f2",
+        "invariantUUID": "56a1b1c7-6a6f-402b-890f-8e3a1cc56feb",
+        "name": "Vieccf.nodes.heat.plt",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/d94275b4-ccfa-4096-bd7b-dd45ff6e84f2/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "8beb2fe4-672e-46c3-8650-e2065ea429ea",
+        "invariantUUID": "be756449-fd9d-4889-83ad-41ff26a82f09",
+        "name": "Pxtc.nodes.heat.mts",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/8beb2fe4-672e-46c3-8650-e2065ea429ea/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "c4b4f162-a616-45c6-b229-9833a78a46fd",
+        "invariantUUID": "b502eeb1-091c-41cf-b4ba-52f9ab6ecfcc",
+        "name": "Vpe.nodes.heat.vmx_vre",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/c4b4f162-a616-45c6-b229-9833a78a46fd/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "95e982cd-551d-49b2-9600-04f1328b9ab5",
+        "invariantUUID": "26813b60-5437-4780-aaaa-9705b9d30357",
+        "name": "TestConsol.nodes.heat.be",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/95e982cd-551d-49b2-9600-04f1328b9ab5/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "8316c6e3-7791-42cb-80fb-e57ed0809be6",
+        "invariantUUID": "5ca065b5-c2e3-4561-9dc6-58fc84c8398c",
+        "name": "Vscp0502.nodes.heat.smp",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/8316c6e3-7791-42cb-80fb-e57ed0809be6/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ml4535"
+    },
+
+    {
+        "uuid": "49cc354b-ea2e-48a9-a6b8-d414e6991898",
+        "invariantUUID": "b94ec614-4972-4355-ab2f-3c7068714581",
+        "name": "Ronytestcsar.nodes.heat.arb",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/49cc354b-ea2e-48a9-a6b8-d414e6991898/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rb844h"
+    },
+
+    {
+        "uuid": "cc0048fb-a464-4407-9907-5e760684bc7b",
+        "invariantUUID": "06aff944-cdab-42cd-a5a3-f2c2c65df4b2",
+        "name": "TestConsol.nodes.heat.fe",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/cc0048fb-a464-4407-9907-5e760684bc7b/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "bc1dea1b-5753-4d17-af6f-ac6050b3e281",
+        "invariantUUID": "76d0ef26-6721-4f11-ba1a-04c93e7154c3",
+        "name": "Vieccf.nodes.heat.app",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/bc1dea1b-5753-4d17-af6f-ac6050b3e281/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "0b894e43-6d45-4c3d-95dd-2e80228055f3",
+        "invariantUUID": "ca679ac7-9d4b-4da1-8912-a262c5599692",
+        "name": "VfVolumeGroup.nodes.heat.oam",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/0b894e43-6d45-4c3d-95dd-2e80228055f3/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "2bb1e047-fa3b-41f5-9d29-ebbdbf01857c",
+        "invariantUUID": "988032f2-873e-4273-9075-17ffd47f0a7f",
+        "name": "VfModules1.nodes.heat.nems_be",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/2bb1e047-fa3b-41f5-9d29-ebbdbf01857c/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "05c82d0d-826b-458c-8c81-9572298522a3",
+        "invariantUUID": "6e577da6-377d-46fb-84c0-3bfa4778062f",
+        "name": "Vscp0502.nodes.heat.fe",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/05c82d0d-826b-458c-8c81-9572298522a3/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ml4535"
+    },
+
+    {
+        "uuid": "c6809100-9349-4f98-a066-55b6f0cb8650",
+        "invariantUUID": "4d48d18e-baa3-41bb-8a07-3c553db1fbab",
+        "name": "Ronytestcsar.nodes.heat.eca",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/c6809100-9349-4f98-a066-55b6f0cb8650/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rb844h"
+    },
+
+    {
+        "uuid": "abe50ede-b86c-415f-9f5f-235200433b51",
+        "invariantUUID": "c3cbaff7-a657-44d5-a0b3-cc65599b4fa8",
+        "name": "Csartest.nodes.heat.ltm",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/abe50ede-b86c-415f-9f5f-235200433b51/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ss8214"
+    },
+
+    {
+        "uuid": "3ce1be04-57ad-4deb-bdba-b18447374a88",
+        "invariantUUID": "b08eef7d-1dd5-4996-9171-7822b48e9a9d",
+        "name": "Vprobe.nodes.qrouter",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/3ce1be04-57ad-4deb-bdba-b18447374a88/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m08740"
+    },
+
+    {
+        "uuid": "f6406bba-b64c-4211-aaee-773cde6e7d54",
+        "invariantUUID": "490345fc-f6fe-49a6-b18d-6dcacca02a7e",
+        "name": "VscpaasTest2.nodes.be",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/f6406bba-b64c-4211-aaee-773cde6e7d54/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ed852m"
+    },
+
+    {
+        "uuid": "d48751e4-07de-4208-9307-7ecb775fe7ca",
+        "invariantUUID": "ca0ae539-78d1-461a-a7ff-3dd663c85e2d",
+        "name": "pnf-test",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/d48751e4-07de-4208-9307-7ecb775fe7ca/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Call Control",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ed852m"
+    },
+
+    {
+        "uuid": "cdb99a41-e2ee-4b59-9107-13f0b2282ccc",
+        "invariantUUID": "6a828e59-cbee-4dc2-aa67-ee35a6eafd50",
+        "name": "Dev2devnfod.nodes.VF",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/cdb99a41-e2ee-4b59-9107-13f0b2282ccc/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "pa0916"
+    },
+
+    {
+        "uuid": "99b9dce6-ed85-4d76-aed9-40c020ba4607",
+        "invariantUUID": "c9e5dab6-eba5-4cc2-abff-305f8f508da1",
+        "name": "py-port-test",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/99b9dce6-ed85-4d76-aed9-40c020ba4607/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Call Control",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ed852m"
+    },
+
+    {
+        "uuid": "acf4e0fa-17f9-4ac8-9fb2-2301cf942fcf",
+        "invariantUUID": "02cd4db0-a29b-4318-9b3b-a123b9103b85",
+        "name": "VfNoLicense.nodes.ppd",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/acf4e0fa-17f9-4ac8-9fb2-2301cf942fcf/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "fb6a8f39-84be-49a2-b551-26ce99ee6853",
+        "invariantUUID": "501e3f78-ae62-4551-bc47-a9afa8f29034",
+        "name": "ScpTestVsp.nodes.be",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/fb6a8f39-84be-49a2-b551-26ce99ee6853/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ed852m"
+    },
+
+    {
+        "uuid": "b09ec9ff-af66-4bdc-82d4-01a918e8e3ca",
+        "invariantUUID": "02d284b6-feb3-4762-be9b-8f6955f6b0b9",
+        "name": "SdWanTestVsp.nodes.DUMMY_server",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/b09ec9ff-af66-4bdc-82d4-01a918e8e3ca/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ed852m"
+    },
+
+    {
+        "uuid": "83256b0a-cb38-45de-b5f0-d2d4390f543d",
+        "invariantUUID": "c291bec4-fe31-4e6d-9126-f5ce104b84d1",
+        "name": "Sangeetha.nodes.vCTS_server",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/83256b0a-cb38-45de-b5f0-d2d4390f543d/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "16ba1289-5f91-4f07-914a-d2456d11c673",
+        "invariantUUID": "aafce2ad-8d15-4f53-88f5-9b3a1662f14e",
+        "name": "VpeAvRenana.nodes.vmx_vpfe",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/16ba1289-5f91-4f07-914a-d2456d11c673/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "93fe78c8-1350-4b1f-ac5f-ede411b992a0",
+        "invariantUUID": "a11f76ed-0f0a-4093-9c94-5f5eb6c450b5",
+        "name": "VfNoLicense.nodes.psm",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/93fe78c8-1350-4b1f-ac5f-ede411b992a0/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "1e5eafc0-1888-4247-9762-9ebd1383d0ae",
+        "invariantUUID": "076ddfc3-8a9d-4289-b71e-a707d359b149",
+        "name": "VnfcVspTest.nodes.heat.oam",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/1e5eafc0-1888-4247-9762-9ebd1383d0ae/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ed852m"
+    },
+
+    {
+        "uuid": "01faf05a-70b9-442f-be62-9884ea4cdf33",
+        "invariantUUID": "cd5937cc-37ef-4a85-ba10-2568628d4c1b",
+        "name": "VfDemor.nodes.vmx_vpfe",
+        "version": "2.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/01faf05a-70b9-442f-be62-9884ea4cdf33/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "4583652c-e066-4a5c-88b8-fbcdd8619d2c",
+        "invariantUUID": "216e59ce-6940-4085-949e-9b47d9756383",
+        "name": "VfDemor.nodes.heat.vmx_vre",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/4583652c-e066-4a5c-88b8-fbcdd8619d2c/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "16f02038-00f6-4a11-ab98-2a2154e98924",
+        "invariantUUID": "479cf5fc-8df3-49ec-9e85-da7899420b61",
+        "name": "VscpaasTest2.nodes.fe_0",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/16f02038-00f6-4a11-ab98-2a2154e98924/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VFC",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ed852m"
+    }
+]
\ No newline at end of file
diff --git a/src/test/resources/example/sdc/sdcVFResources.json b/src/test/resources/example/sdc/sdcVFResources.json
new file mode 100644 (file)
index 0000000..a8f3219
--- /dev/null
@@ -0,0 +1,1574 @@
+[
+    {
+        "uuid": "585822c7-4027-4f84-ba50-e9248606f136",
+        "invariantUUID": "585822c7-4027-4f84-ba50-e9248606f134",
+        "name": "resourceName-1",
+        "version": "3.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/585822c7-4027-4f84-ba50-e9248606f136/toscaModel",
+        "category": "Network L2-3",
+        "subCategory": "Router",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m08743"
+    },
+
+    {
+        "uuid": "56389a7d-86db-49e1-aada-62aebf023f23",
+        "invariantUUID": "18a2c267-50a9-42ae-a3ec-4d55dd6df225",
+        "name": "shayVF",
+        "version": "0.2",
+        "toscaModelURL": "/sdc/v1/catalog/resources/56389a7d-86db-49e1-aada-62aebf023f23/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Load Balancer",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "ss8214"
+    },
+
+    {
+        "uuid": "2ce2fe72-7f8d-4184-87e6-5fd7aa650acd",
+        "invariantUUID": "9aa658ae-8f6d-49bc-810d-8a544d6b12f2",
+        "name": "Dev2DevNFODVf_17_July",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/2ce2fe72-7f8d-4184-87e6-5fd7aa650acd/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Call Control",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "sw594b"
+    },
+
+    {
+        "uuid": "ae841bc4-6534-4d12-b8a4-ddd07a062a7e",
+        "invariantUUID": "926f6d60-bf84-46c4-9ed7-f0bb774e5184",
+        "name": "Sangeetha",
+        "version": "1.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/ae841bc4-6534-4d12-b8a4-ddd07a062a7e/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Database",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "ss8214"
+    },
+
+    {
+        "uuid": "0c940638-618b-450e-aa99-b991a3200d1a",
+        "invariantUUID": "2d4d1e44-14f7-41e0-a37a-f8a6507c86f6",
+        "name": "Eli",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/0c940638-618b-450e-aa99-b991a3200d1a/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "Contrail Route",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "el489u"
+    },
+
+    {
+        "uuid": "91854bc8-534f-4249-899c-bbdc06f83436",
+        "invariantUUID": "5e9c180a-44f1-45ce-a7bc-95b493ae9fd3",
+        "name": "CLAMP-Dev",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/91854bc8-534f-4249-899c-bbdc06f83436/toscaModel",
+        "category": "Generic",
+        "subCategory": "Network Elements",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m08743"
+    },
+
+    {
+        "uuid": "168b696d-8ed5-41ff-8158-b8adadfcedfa",
+        "invariantUUID": "9429f628-f58d-492e-aa97-de9bd9f98043",
+        "name": "ariel_test_vf001",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/168b696d-8ed5-41ff-8158-b8adadfcedfa/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Application Server",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m08743"
+    },
+
+    {
+        "uuid": "290603da-0c41-4120-b737-f800c6031a58",
+        "invariantUUID": "f22a9390-6d25-4fa7-a1dd-8d0121f6aacf",
+        "name": "VF-example",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/290603da-0c41-4120-b737-f800c6031a58/toscaModel",
+        "category": "Network L2-3",
+        "subCategory": "LAN Connectors",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "271b4961-e4dc-42d5-8c0c-4da8685973ac",
+        "invariantUUID": "822e9970-a3fd-4d62-8f00-5819323cb54d",
+        "name": "vf_AR",
+        "version": "3.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/271b4961-e4dc-42d5-8c0c-4da8685973ac/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "Allotted Resource",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "b109217b-c959-4228-b30d-8f376668174c",
+        "invariantUUID": "5d616289-3563-48d8-b41a-15a633d5f03c",
+        "name": "Map Microservice",
+        "version": "2.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/b109217b-c959-4228-b30d-8f376668174c/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Microservice",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "af3193"
+    },
+
+    {
+        "uuid": "44b0a91c-8d63-4304-a637-2eda78a86023",
+        "invariantUUID": "9b2e7539-b183-4a59-82ea-842494fe19e0",
+        "name": "enrich snmp",
+        "version": "2.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/44b0a91c-8d63-4304-a637-2eda78a86023/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Microservice",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m08743"
+    },
+
+    {
+        "uuid": "418a2ea5-6a8a-4498-9d0f-602a809552d6",
+        "invariantUUID": "58d0e85f-3161-47c9-981d-3cbcf1be56b6",
+        "name": "renana",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/418a2ea5-6a8a-4498-9d0f-602a809552d6/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Media Servers",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "13ae8064-344f-4d67-acd2-810516927f48",
+        "invariantUUID": "69b75e6e-a839-4a91-93d7-821610517cb5",
+        "name": "Dror1",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/13ae8064-344f-4d67-acd2-810516927f48/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "Allotted Resource",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "m08740"
+    },
+
+    {
+        "uuid": "6510ee54-2ccb-406c-a006-8a67b589eecd",
+        "invariantUUID": "2ef1c565-6a85-424e-80ab-8efe14fefe9f",
+        "name": "SD-WAN-Test-VSP",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/6510ee54-2ccb-406c-a006-8a67b589eecd/toscaModel",
+        "category": "Network L2-3",
+        "subCategory": "WAN Connectors",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ed852m"
+    },
+
+    {
+        "uuid": "c3c0a9e1-bcda-4b46-a7d6-3916ea3fc1ca",
+        "invariantUUID": "21052af3-0f73-4f82-af68-03123ed49d41",
+        "name": "rrrr",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/c3c0a9e1-bcda-4b46-a7d6-3916ea3fc1ca/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "IP Mux Demux",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "ys278k"
+    },
+
+    {
+        "uuid": "10b535db-b01b-4a4b-aeef-97423d2d2093",
+        "invariantUUID": "761ed279-e5ff-43e2-8a05-b160224b7f54",
+        "name": "StringMatchingMS",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/10b535db-b01b-4a4b-aeef-97423d2d2093/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Microservice",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "af3193"
+    },
+
+    {
+        "uuid": "5ea777fc-a3fe-4688-aefd-b1297bd36381",
+        "invariantUUID": "6d1eb2c8-ae57-4d32-bd63-b47fd503aafb",
+        "name": "map snmp",
+        "version": "2.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/5ea777fc-a3fe-4688-aefd-b1297bd36381/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Microservice",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m08743"
+    },
+
+    {
+        "uuid": "8d366342-8cfa-431b-82ca-013f7f06af50",
+        "invariantUUID": "822e9970-a3fd-4d62-8f00-5819323cb54d",
+        "name": "vf_AR",
+        "version": "1.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/8d366342-8cfa-431b-82ca-013f7f06af50/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "Allotted Resource",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFICATION_IN_PROGRESS",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "a804fb4e-33ce-4000-963f-d270a0593de2",
+        "invariantUUID": "6eb4b1ca-75ac-454b-a145-1ea27157bfac",
+        "name": "IP_Mux_Demux",
+        "version": "1.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/a804fb4e-33ce-4000-963f-d270a0593de2/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "IP Mux Demux",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "le056g"
+    },
+
+    {
+        "uuid": "9bed9e17-7bfa-4a92-9474-3bcf7187e206",
+        "invariantUUID": "853a6d9a-3004-462c-9142-631eb777a16c",
+        "name": "newShayVFMCT",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/9bed9e17-7bfa-4a92-9474-3bcf7187e206/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Microservice",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "ss8214"
+    },
+
+    {
+        "uuid": "cae08b64-2784-4883-8dd0-747f6ebb94c4",
+        "invariantUUID": "3d51584c-aa2e-454a-a17a-970b51bbd668",
+        "name": "VES Collector Lisa",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/cae08b64-2784-4883-8dd0-747f6ebb94c4/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Collector",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "lr0306"
+    },
+
+    {
+        "uuid": "d06b73ef-b908-44cd-8c17-11f1366c4f93",
+        "invariantUUID": "0ad06008-5ecc-4a24-a123-74fc23d7bf89",
+        "name": "shaytookmyvf",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/d06b73ef-b908-44cd-8c17-11f1366c4f93/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Call Control",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "11ff4510-008f-4818-87aa-d22e1b26d03e",
+        "invariantUUID": "5d138333-7a0f-432b-ad74-009a308c91c5",
+        "name": "VF- DemoR",
+        "version": "1.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/11ff4510-008f-4818-87aa-d22e1b26d03e/toscaModel",
+        "category": "Network L2-3",
+        "subCategory": "Router",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "0ff82855-b0aa-4b0d-8451-82aa978ae4d5",
+        "invariantUUID": "9aa658ae-8f6d-49bc-810d-8a544d6b12f2",
+        "name": "Dev2DevNFODVf_17_July",
+        "version": "1.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/0ff82855-b0aa-4b0d-8451-82aa978ae4d5/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Call Control",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "pa0916"
+    },
+
+    {
+        "uuid": "77d7e04f-89db-405f-ad53-8c2cc5bc721c",
+        "invariantUUID": "f632a0f0-d568-40aa-9342-341d603891e1",
+        "name": "vf_test",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/77d7e04f-89db-405f-ad53-8c2cc5bc721c/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Firewall",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "17dbd4a7-6c4d-4064-857e-8cbbc8303ed5",
+        "invariantUUID": "f632a0f0-d568-40aa-9342-341d603891e1",
+        "name": "vf_test",
+        "version": "1.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/17dbd4a7-6c4d-4064-857e-8cbbc8303ed5/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Firewall",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "2c2fcf53-43af-41f4-8fec-0c729ca3cb4c",
+        "invariantUUID": "fc9af990-1ec6-4969-bd0d-973ae1ceba6f",
+        "name": "supplement snmp",
+        "version": "2.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/2c2fcf53-43af-41f4-8fec-0c729ca3cb4c/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Microservice",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m08743"
+    },
+
+    {
+        "uuid": "57cc5cac-15a0-4c39-aff4-426930e55057",
+        "invariantUUID": "b0d77932-dadd-4bde-82c9-0bcc367cb81c",
+        "name": "Dev2DevIpAssign_24_07",
+        "version": "1.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/57cc5cac-15a0-4c39-aff4-426930e55057/toscaModel",
+        "category": "Generic",
+        "subCategory": "Infrastructure",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "pa0916"
+    },
+
+    {
+        "uuid": "4859989b-5663-4ff5-ab2e-68b7bd1e43c2",
+        "invariantUUID": "489220ac-8a2f-44b8-97a3-12af3280aa0e",
+        "name": "Cognitor",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/4859989b-5663-4ff5-ab2e-68b7bd1e43c2/toscaModel",
+        "category": "Generic",
+        "subCategory": "Abstract",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "sj2381"
+    },
+
+    {
+        "uuid": "5de1a119-461f-4ff4-8aa6-6f194e79e861",
+        "invariantUUID": "de9c75f4-7cc1-4a9c-8642-4fa9ee730bd2",
+        "name": "sang_vsp",
+        "version": "0.2",
+        "toscaModelURL": "/sdc/v1/catalog/resources/5de1a119-461f-4ff4-8aa6-6f194e79e861/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Call Control",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "af1041a9-0879-4fc1-9b62-42cf3eda5feb",
+        "invariantUUID": "4ed98cc2-22af-40c9-a031-86998cc12838",
+        "name": "FOI collector",
+        "version": "2.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/af1041a9-0879-4fc1-9b62-42cf3eda5feb/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Collector",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m08743"
+    },
+
+    {
+        "uuid": "271b4961-e4dc-42d5-8c0c-4da8685973ac",
+        "invariantUUID": "822e9970-a3fd-4d62-8f00-5819323cb54d",
+        "name": "vf_AR",
+        "version": "2.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/271b4961-e4dc-42d5-8c0c-4da8685973ac/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "Allotted Resource",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFICATION_IN_PROGRESS",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "bdc9b09f-246e-407f-9ccd-313a240ced95",
+        "invariantUUID": "1b6e3f8e-c8e2-4e66-8d44-8c7186c6eb14",
+        "name": "VFTest5.4",
+        "version": "0.3",
+        "toscaModelURL": "/sdc/v1/catalog/resources/bdc9b09f-246e-407f-9ccd-313a240ced95/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "Tunnel XConnect",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "rb844h"
+    },
+
+    {
+        "uuid": "bbc70754-b046-4d8b-9ba5-1d4e96180788",
+        "invariantUUID": "c8e4743e-f7bd-4f04-8b7d-270f2de46c34",
+        "name": "VNFC_VSP_Test",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/bbc70754-b046-4d8b-9ba5-1d4e96180788/toscaModel",
+        "category": "Network Connectivity",
+        "subCategory": "Virtual Links",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ed852m"
+    },
+
+    {
+        "uuid": "7cb8a6c7-c4fb-4d46-9233-8b247bd70124",
+        "invariantUUID": "f607e055-7af8-470d-86d3-1e2236c1c5b9",
+        "name": "syslog",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/7cb8a6c7-c4fb-4d46-9233-8b247bd70124/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Collector",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m08743"
+    },
+
+    {
+        "uuid": "ce7f92a3-d5a8-4830-b1f9-72d32ff0f2bc",
+        "invariantUUID": "b0d77932-dadd-4bde-82c9-0bcc367cb81c",
+        "name": "Dev2DevIpAssign_24_07",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/ce7f92a3-d5a8-4830-b1f9-72d32ff0f2bc/toscaModel",
+        "category": "Generic",
+        "subCategory": "Infrastructure",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "sw594b"
+    },
+
+    {
+        "uuid": "f721bc81-be73-4fe5-90ab-ac9544916b74",
+        "invariantUUID": "5ebab19c-76ab-4310-96c1-64ab03ae7f08",
+        "name": "New_vendor_mdns",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/f721bc81-be73-4fe5-90ab-ac9544916b74/toscaModel",
+        "category": "Generic",
+        "subCategory": "Database",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "6b934b9d-0785-4b46-8321-943a12b8031b",
+        "invariantUUID": "785012c2-fdd8-450d-8fa2-81ff60e25f1e",
+        "name": "vMMSC_AIC3.0__multi_members_multi_groups_volume.cs",
+        "version": "0.2",
+        "toscaModelURL": "/sdc/v1/catalog/resources/6b934b9d-0785-4b46-8321-943a12b8031b/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Media Servers",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "715426cc-acea-4dd9-9bbe-d338d40b0884",
+        "invariantUUID": "0879d8ba-7207-4ec4-9cc7-2eb695ef6876",
+        "name": "vmme_1710",
+        "version": "0.2",
+        "toscaModelURL": "/sdc/v1/catalog/resources/715426cc-acea-4dd9-9bbe-d338d40b0884/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Call Control",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "04addafc-2e5e-4381-8698-79a26acd5825",
+        "invariantUUID": "d348d94a-b49f-42ad-a5a2-6f94ebf58b75",
+        "name": "AVCXSADDAS",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/04addafc-2e5e-4381-8698-79a26acd5825/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "IP Mux Demux",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "yy815m"
+    },
+
+    {
+        "uuid": "3962491f-c310-4a24-9f13-291d2acf2f08",
+        "invariantUUID": "5d138333-7a0f-432b-ad74-009a308c91c5",
+        "name": "VF- DemoR",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/3962491f-c310-4a24-9f13-291d2acf2f08/toscaModel",
+        "category": "Network L2-3",
+        "subCategory": "Router",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFICATION_IN_PROGRESS",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "191128bc-1756-469b-8973-fcc6236c72c1",
+        "invariantUUID": "c1fae22d-0fdb-42fe-96a7-822f19503f1b",
+        "name": "Scp-tempalte-test",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/191128bc-1756-469b-8973-fcc6236c72c1/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Call Control",
+        "resourceType": "VF",
+        "lifecycleState": "READY_FOR_CERTIFICATION",
+        "lastUpdaterUserId": "ed852m"
+    },
+
+    {
+        "uuid": "9a4c7c75-b54b-4240-b3bf-2ead9b7427d1",
+        "invariantUUID": "b595ea39-21e7-4fee-aedb-ef68506d581d",
+        "name": "test-VF",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/9a4c7c75-b54b-4240-b3bf-2ead9b7427d1/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Call Control",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "c3d5e222-28b4-456f-8488-ff3b4846be60",
+        "invariantUUID": "92ff9c15-3b67-410a-b8ed-aed627656a35",
+        "name": "TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEST",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/c3d5e222-28b4-456f-8488-ff3b4846be60/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "Security Zone",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "nk909r"
+    },
+
+    {
+        "uuid": "c8663b6e-bbe2-401d-9500-ec5425463655",
+        "invariantUUID": "925243cf-e342-4d86-8558-63899fbe88da",
+        "name": "VF Module LDSA",
+        "version": "1.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/c8663b6e-bbe2-401d-9500-ec5425463655/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Load Balancer",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "fda7c330-cb1e-4d43-9e97-87a5800b87c0",
+        "invariantUUID": "cc9b643b-8513-449b-a3f7-3c034b3f52a4",
+        "name": "composition",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/fda7c330-cb1e-4d43-9e97-87a5800b87c0/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Utility",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ml4535"
+    },
+
+    {
+        "uuid": "27adaf15-a0c2-4889-bc10-b3fdb0bb038c",
+        "invariantUUID": "002b36df-41cd-4119-ab8d-0e9fae3cd3cb",
+        "name": "cdap_host",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/27adaf15-a0c2-4889-bc10-b3fdb0bb038c/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Utility",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ml4535"
+    },
+
+    {
+        "uuid": "84855843-5247-4e97-a2bd-5395a510253b",
+        "invariantUUID": "755deb72-d767-4656-98b0-9d8ed288e9e6",
+        "name": "TestClamp",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/84855843-5247-4e97-a2bd-5395a510253b/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Application Server",
+        "resourceType": "VF",
+        "lifecycleState": "READY_FOR_CERTIFICATION",
+        "lastUpdaterUserId": "rx827p"
+    },
+
+    {
+        "uuid": "e01dfc8f-2529-423b-9765-08b57df6ba51",
+        "invariantUUID": "6c7aaec2-59eb-41d9-8681-b7f976ab668d",
+        "name": "eNodeB-vf",
+        "version": "1.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/e01dfc8f-2529-423b-9765-08b57df6ba51/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Application Server",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFICATION_IN_PROGRESS",
+        "lastUpdaterUserId": "rx827p"
+    },
+
+    {
+        "uuid": "d26e8473-b1c9-4751-bf7c-be0e10ba71ac",
+        "invariantUUID": "e06a2a94-5ff9-4ab7-879f-c2d5cfaef1ca",
+        "name": "tdy",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/d26e8473-b1c9-4751-bf7c-be0e10ba71ac/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "Tunnel XConnect",
+        "resourceType": "VF",
+        "lifecycleState": "READY_FOR_CERTIFICATION",
+        "lastUpdaterUserId": "rb844h"
+    },
+
+    {
+        "uuid": "038601f9-f242-49ab-8c19-08b95f34f7bf",
+        "invariantUUID": "0f183d4f-875b-4e7b-a23d-b9d68d81e0db",
+        "name": "Highland Park",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/038601f9-f242-49ab-8c19-08b95f34f7bf/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Microservice",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ml4535"
+    },
+
+    {
+        "uuid": "25781e10-5fdd-499c-869d-0d70d61843df",
+        "invariantUUID": "f68b1982-a6ab-4849-b548-0d35655f4410",
+        "name": "Mikes VF",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/25781e10-5fdd-499c-869d-0d70d61843df/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Firewall",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "mh677g"
+    },
+
+    {
+        "uuid": "c1c02cff-855f-438e-85f8-40c362874896",
+        "invariantUUID": "64cb5201-90d4-4cab-a6a9-f7416eeb307f",
+        "name": "PXTC",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/c1c02cff-855f-438e-85f8-40c362874896/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Web Server",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "837c2fee-c2b2-4e95-ad48-dd69772d99bd",
+        "invariantUUID": "e48b3ea8-39bc-41eb-84bf-f5ef267d31e4",
+        "name": "vMOG VNF 1",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/837c2fee-c2b2-4e95-ad48-dd69772d99bd/toscaModel",
+        "category": "Network L2-3",
+        "subCategory": "Gateway",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "29018914-966c-442d-9d08-251b9dc45b8e",
+        "invariantUUID": "a33ed748-3477-4434-b3f3-b5560f5e7d9b",
+        "name": "vcts3",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8e/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Application Server",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ml4535"
+    },
+
+    {
+        "uuid": "6906502e-6c2c-4b6f-8a3e-a2283f13cd69",
+        "invariantUUID": "fae890f6-4cdc-4e89-9502-3b1491c90393",
+        "name": "Generic VNF Source",
+        "version": "2.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/6906502e-6c2c-4b6f-8a3e-a2283f13cd69/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Source",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ml4535"
+    },
+
+    {
+        "uuid": "4168799c-a51f-4664-a5e9-f75bedda2a1c",
+        "invariantUUID": "55befb8d-81db-4ac0-8820-8ec582f8147b",
+        "name": "AppleVF",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/4168799c-a51f-4664-a5e9-f75bedda2a1c/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Firewall",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "nk909r"
+    },
+
+    {
+        "uuid": "28c11fbd-a859-4819-b8c7-555b4ed05a7f",
+        "invariantUUID": "ab6094d3-ffe3-4386-b1c2-d6e0dbf103f3",
+        "name": "VF",
+        "version": "0.2",
+        "toscaModelURL": "/sdc/v1/catalog/resources/28c11fbd-a859-4819-b8c7-555b4ed05a7f/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Collector",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "ym903w"
+    },
+
+    {
+        "uuid": "dad125b7-cd8a-4fbe-a4ad-2b04944079da",
+        "invariantUUID": "dd3c68ac-5e6c-4b22-bea3-44fd7d6a6097",
+        "name": "Mazav",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/dad125b7-cd8a-4fbe-a4ad-2b04944079da/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Database",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "1e7f07c7-ff4c-40a6-95f6-a9b05f138027",
+        "invariantUUID": "cfff70d2-f942-4b25-b2ca-e64f64af511d",
+        "name": "vMMSC_AIC3.0__multi_members_multi_groups_volume",
+        "version": "2.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/1e7f07c7-ff4c-40a6-95f6-a9b05f138027/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Media Servers",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "yy815m"
+    },
+
+    {
+        "uuid": "2539b088-8e74-48d5-8401-77200be23f11",
+        "invariantUUID": "24ff5476-cabe-4cb5-99c8-e0f9ace75412",
+        "name": "AlinaVSP",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/2539b088-8e74-48d5-8401-77200be23f11/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Call Control",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "af3193"
+    },
+
+    {
+        "uuid": "8bebc883-1961-4d2f-9c34-b8a9f56dd6bf",
+        "invariantUUID": "49241b40-9bd1-4d05-83a9-b097f40f4cc0",
+        "name": "MonitoringVSP",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/8bebc883-1961-4d2f-9c34-b8a9f56dd6bf/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Call Control",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "af3193"
+    },
+
+    {
+        "uuid": "e0acc751-00cf-4f45-ac9d-23eb9cfc106d",
+        "invariantUUID": "1181d1c5-2524-40c2-bc81-e40dd813d70f",
+        "name": "Oren",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/e0acc751-00cf-4f45-ac9d-23eb9cfc106d/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "Service Admin",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "ol664w"
+    },
+
+    {
+        "uuid": "2e42bac2-318a-410c-b8ff-3b3a31351be7",
+        "invariantUUID": "b2b88a73-5c55-4984-99dd-a35c55935d14",
+        "name": "SCP-Test-VSP",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/2e42bac2-318a-410c-b8ff-3b3a31351be7/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Firewall",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ed852m"
+    },
+
+    {
+        "uuid": "1a2bc1db-c4b3-4c26-837c-1f16b4e4eed0",
+        "invariantUUID": "869a4e40-2aac-42f6-9520-51d18a7bd5e0",
+        "name": "Vscpaas_Test2",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/1a2bc1db-c4b3-4c26-837c-1f16b4e4eed0/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Call Control",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ed852m"
+    },
+
+    {
+        "uuid": "52150d50-0b95-4056-b07a-abcf6414754e",
+        "invariantUUID": "cc4e47f7-360d-425b-a563-e870203d2d48",
+        "name": "SNMP Trap Collector",
+        "version": "1.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/52150d50-0b95-4056-b07a-abcf6414754e/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Collector",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "ml4535"
+    },
+
+    {
+        "uuid": "a36b04b6-6756-4860-9cbb-66a72d02361f",
+        "invariantUUID": "35841fd9-e768-466a-9a08-fd9f7dbef98d",
+        "name": "Vf-no-license",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/a36b04b6-6756-4860-9cbb-66a72d02361f/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Media Servers",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "8a1c4ce1-f132-4e05-92c1-91386689ddf5",
+        "invariantUUID": "4bd0b375-cec3-4da8-a6fb-028b523da60e",
+        "name": "vprobe",
+        "version": "0.2",
+        "toscaModelURL": "/sdc/v1/catalog/resources/8a1c4ce1-f132-4e05-92c1-91386689ddf5/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Application Server",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "m08740"
+    },
+
+    {
+        "uuid": "4ae669b4-778a-4f13-bf42-99da0c805414",
+        "invariantUUID": "17ba1436-2800-4bcb-b066-0484d119ea8d",
+        "name": "oren2",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/4ae669b4-778a-4f13-bf42-99da0c805414/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "Allotted Resource",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "ol664w"
+    },
+
+    {
+        "uuid": "c68a5162-bebf-4675-9b83-1aec994abd35",
+        "invariantUUID": "219b289e-e94e-4c1b-8ca0-53a19f4cf140",
+        "name": "AlinaVF",
+        "version": "2.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/c68a5162-bebf-4675-9b83-1aec994abd35/toscaModel",
+        "category": "Generic",
+        "subCategory": "Infrastructure",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "af3193"
+    },
+
+    {
+        "uuid": "d03c68fc-ed63-4fce-bf7f-ebe23993157d",
+        "invariantUUID": "94746803-5a82-4112-9719-7cb64a43ea99",
+        "name": "testfe",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/d03c68fc-ed63-4fce-bf7f-ebe23993157d/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "Allotted Resource",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFICATION_IN_PROGRESS",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "ab88f446-f17f-4419-a4ce-84a24bc9a3c0",
+        "invariantUUID": "63aec7b3-8674-42ff-a9be-9d6c51544776",
+        "name": "Tunnel_XConnTest",
+        "version": "2.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/ab88f446-f17f-4419-a4ce-84a24bc9a3c0/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "Tunnel XConnect",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ed852m"
+    },
+
+    {
+        "uuid": "81d54f6d-ac2d-4282-ada9-48214e13dfd9",
+        "invariantUUID": "80d253d9-dca7-4d5e-96f2-e060deabf3bb",
+        "name": "Dev2DevNFOD_1207",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/81d54f6d-ac2d-4282-ada9-48214e13dfd9/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Call Control",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "pa0916"
+    },
+
+    {
+        "uuid": "c9ea2798-f3ba-4826-ae93-0786820cb890",
+        "invariantUUID": "5882c528-76fe-4884-90c7-71301ca52cf8",
+        "name": "vMMSC_ECA",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/c9ea2798-f3ba-4826-ae93-0786820cb890/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Firewall",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "az2497"
+    },
+
+    {
+        "uuid": "e795b7f2-09c3-40a8-bc38-64bdad5e9f68",
+        "invariantUUID": "96079a9a-dbe3-4492-ba85-95b1b49d0983",
+        "name": "APPleVFV10",
+        "version": "3.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/e795b7f2-09c3-40a8-bc38-64bdad5e9f68/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Firewall",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "nk909r"
+    },
+
+    {
+        "uuid": "1b9546ab-d1cd-489b-b07b-13537418ad57",
+        "invariantUUID": "4612156f-0a8d-46c5-bfb1-86e80148d123",
+        "name": "BerryVFNamequaryV10",
+        "version": "1.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/1b9546ab-d1cd-489b-b07b-13537418ad57/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Firewall",
+        "resourceType": "VF",
+        "lifecycleState": "READY_FOR_CERTIFICATION",
+        "lastUpdaterUserId": "nk909r"
+    },
+
+    {
+        "uuid": "b71e8927-6567-4f14-a0ec-3bce871934c4",
+        "invariantUUID": "73bc5a4f-b902-43b2-83c2-915fa274960f",
+        "name": "vPE",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/b71e8927-6567-4f14-a0ec-3bce871934c4/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Border Element",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "31ad5aaa-8779-4384-819f-4a2ec217f608",
+        "invariantUUID": "f47b1fa4-574f-4c30-b0cf-af7919868eed",
+        "name": "BerryVFNamequery",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/31ad5aaa-8779-4384-819f-4a2ec217f608/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Firewall",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "nk909r"
+    },
+
+    {
+        "uuid": "10751313-0dd7-464a-92e3-ec77fcada2c8",
+        "invariantUUID": "229580a6-2d12-49b6-8c89-54d04f4569b4",
+        "name": "vIECCF",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/10751313-0dd7-464a-92e3-ec77fcada2c8/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Database",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99124"
+    },
+
+    {
+        "uuid": "3951e021-7595-43b1-a6fd-de077c01af54",
+        "invariantUUID": "925243cf-e342-4d86-8558-63899fbe88da",
+        "name": "VF Module LDSA",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/3951e021-7595-43b1-a6fd-de077c01af54/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Load Balancer",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99124"
+    },
+
+    {
+        "uuid": "3b30f9df-5cc6-4f1d-b8fc-bf034891539e",
+        "invariantUUID": "10a2a956-5190-4aa8-8d3d-dea5863ab40f",
+        "name": "blueberryvf",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/3b30f9df-5cc6-4f1d-b8fc-bf034891539e/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Firewall",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "lm906x"
+    },
+
+    {
+        "uuid": "c4e944bd-aa6a-4bd0-85ac-5566c98d2adc",
+        "invariantUUID": "cc4e47f7-360d-425b-a563-e870203d2d48",
+        "name": "SNMP Trap Collector",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/c4e944bd-aa6a-4bd0-85ac-5566c98d2adc/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Collector",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ml4535"
+    },
+
+    {
+        "uuid": "07116436-aab8-4a54-85be-6691e451e65b",
+        "invariantUUID": "b1133487-2512-4a6d-8b68-4f56b81fd6a2",
+        "name": "1607_MOG",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/07116436-aab8-4a54-85be-6691e451e65b/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Call Control",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "70974b30-6b89-41d2-8b5d-779279db3b96",
+        "invariantUUID": "725e5fd1-2520-4669-a5f2-23f9ad2fbec4",
+        "name": "vSCP0502",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/70974b30-6b89-41d2-8b5d-779279db3b96/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Call Control",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ml4535"
+    },
+
+    {
+        "uuid": "c9e436c3-539f-45e2-90b4-b046af907877",
+        "invariantUUID": "bc7fe896-e286-41cb-a11f-7081fc92876b",
+        "name": "vMMSC",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/c9e436c3-539f-45e2-90b4-b046af907877/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Database",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "79a31423-43ae-4f00-9314-dbc6ed5dfcb7",
+        "invariantUUID": "6c1bcf11-ecdc-465d-83c7-4a1735ff8d00",
+        "name": "1607_MOG_multi_members_volume",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/79a31423-43ae-4f00-9314-dbc6ed5dfcb7/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Border Element",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99124"
+    },
+
+    {
+        "uuid": "ed9927dc-3c43-47bf-9c55-3aa3240749c4",
+        "invariantUUID": "d6ac75ef-0e55-41bb-9cac-bedd59c3b0b8",
+        "name": "SNMP Collector",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/ed9927dc-3c43-47bf-9c55-3aa3240749c4/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Collector",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "82460d6a-1cd7-4c57-bc89-625600555f80",
+        "invariantUUID": "c67108d4-a0b0-4eee-8fbc-c881d7bb21d3",
+        "name": "VF modules vMMSC",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/82460d6a-1cd7-4c57-bc89-625600555f80/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Web Server",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99124"
+    },
+
+    {
+        "uuid": "1d7a184b-3680-47e5-92de-6ac7207699a3",
+        "invariantUUID": "f7ba2bcd-747b-4ff6-994a-91be20fc726c",
+        "name": "VF modules",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/1d7a184b-3680-47e5-92de-6ac7207699a3/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Web Server",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "90043cc2-5150-4127-aabe-67ed5c8a603b",
+        "invariantUUID": "fc6589c4-f030-4d02-b516-b99f73bfdca8",
+        "name": "VF module_2",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/90043cc2-5150-4127-aabe-67ed5c8a603b/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Media Servers",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "4c81fa7a-9e59-498a-96ba-2fc16eba23a3",
+        "invariantUUID": "4612156f-0a8d-46c5-bfb1-86e80148d123",
+        "name": "BerryVFNamequaryV10",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/4c81fa7a-9e59-498a-96ba-2fc16eba23a3/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Firewall",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "nk909r"
+    },
+
+    {
+        "uuid": "ac603264-cdf7-49ab-a9ae-92d341023218",
+        "invariantUUID": "379ab526-dc81-4b31-b60d-31c1805ddf5a",
+        "name": "FDNT1",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/ac603264-cdf7-49ab-a9ae-92d341023218/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Border Element",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "c8c959fb-c57e-4a10-9f7e-d5cc5bbd4301",
+        "invariantUUID": "1170b507-33f9-4a2e-a9af-e44744b6c10d",
+        "name": "contrail route",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/c8c959fb-c57e-4a10-9f7e-d5cc5bbd4301/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "Contrail Route",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "e3edd7bb-9732-4915-b1b9-2b4af561d85c",
+        "invariantUUID": "7669a21f-e8bf-429d-8267-b9a9b1be0e16",
+        "name": "test-port",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/e3edd7bb-9732-4915-b1b9-2b4af561d85c/toscaModel",
+        "category": "Network L4+",
+        "subCategory": "Common Network Resources",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "8531f392-b695-49f4-98f8-cba632eb68fc",
+        "invariantUUID": "9dfe647e-7285-48dc-9e5d-f275f470e4ba",
+        "name": "security Zone",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/8531f392-b695-49f4-98f8-cba632eb68fc/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "Security Zone",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "e4924deb-7355-4f1e-9f8f-bd4e3b609e98",
+        "invariantUUID": "6eb4b1ca-75ac-454b-a145-1ea27157bfac",
+        "name": "IP_Mux_Demux",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/e4924deb-7355-4f1e-9f8f-bd4e3b609e98/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "IP Mux Demux",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99124"
+    },
+
+    {
+        "uuid": "44ff8000-e703-4538-b26a-f2bc8205d7d4",
+        "invariantUUID": "26badc5a-d29e-4583-b773-0d42366a8bb1",
+        "name": "FDNT1234",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/44ff8000-e703-4538-b26a-f2bc8205d7d4/toscaModel",
+        "category": "Network L2-3",
+        "subCategory": "WAN Connectors",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m99124"
+    },
+
+    {
+        "uuid": "5ce3812b-935b-4c17-a1a7-a79a5179772e",
+        "invariantUUID": "ad3e0a75-d124-418d-ad57-970a9668e4d8",
+        "name": "vTSBC1",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/5ce3812b-935b-4c17-a1a7-a79a5179772e/toscaModel",
+        "category": "Network L2-3",
+        "subCategory": "Gateway",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "e9fb3aa6-44f7-4154-9db6-1f60dac2d72f",
+        "invariantUUID": "ac661ee8-21b0-417f-98af-0b891c5f6c0d",
+        "name": "TuesdayVSP",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/e9fb3aa6-44f7-4154-9db6-1f60dac2d72f/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Call Control",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "af3193"
+    },
+
+    {
+        "uuid": "75b67a7f-9e2e-4c7d-a926-331f05ce5ff1",
+        "invariantUUID": "32d62649-390c-4208-b5cd-c1dc7dddf3db",
+        "name": "VF modules_1",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/75b67a7f-9e2e-4c7d-a926-331f05ce5ff1/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Load Balancer",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "25b6b8dc-8f32-42ea-bcea-04369827ddbf",
+        "invariantUUID": "e5d959b4-f11e-42ac-aa26-26beb526faf1",
+        "name": "pnf-resource-test",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/25b6b8dc-8f32-42ea-bcea-04369827ddbf/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Call Control",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ed852m"
+    },
+
+    {
+        "uuid": "f4bed159-36a0-4ea4-b2d4-2ebea8c208b8",
+        "invariantUUID": "e6b04d60-4a33-4899-9185-082b9b170cb8",
+        "name": "Dev2DevNFOD",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/f4bed159-36a0-4ea4-b2d4-2ebea8c208b8/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Call Control",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "sw594b"
+    },
+
+    {
+        "uuid": "8dec3b8a-a0fa-4634-bbb4-d7bad5a912ab",
+        "invariantUUID": "eda652e4-6740-46bf-8d0f-92c4752070f6",
+        "name": "FCGI_OS",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/8dec3b8a-a0fa-4634-bbb4-d7bad5a912ab/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Database",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "691cbc68-61df-472d-ad2d-8791444d2e27",
+        "invariantUUID": "7daf1f14-2aa3-48d8-89e5-3383cf004b6a",
+        "name": "AAI broker",
+        "version": "2.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/691cbc68-61df-472d-ad2d-8791444d2e27/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Microservice",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ml4535"
+    },
+
+    {
+        "uuid": "ccd6fa51-aafd-401f-96ce-3f0c94418865",
+        "invariantUUID": "fe5535d7-80e5-4278-bbdd-d2156b9a4d24",
+        "name": "test-consol",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/ccd6fa51-aafd-401f-96ce-3f0c94418865/toscaModel",
+        "category": "Network L2-3",
+        "subCategory": "Gateway",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "100be1c2-28d9-4d8c-8551-608f82b202f8",
+        "invariantUUID": "771cb756-d74d-416d-97cb-6c88f1915721",
+        "name": "Source Generic",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/100be1c2-28d9-4d8c-8551-608f82b202f8/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Source",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "ml4535"
+    },
+
+    {
+        "uuid": "e2555d36-4fec-476a-8504-6e111f5d5dfd",
+        "invariantUUID": "cca91831-e7c4-4761-86eb-200206af302d",
+        "name": "VF Volume group",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/e2555d36-4fec-476a-8504-6e111f5d5dfd/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Load Balancer",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "361f7f83-e4dd-4a27-ad4b-a7e1c7a52672",
+        "invariantUUID": "6598647d-b141-4c39-be82-91b536017bf2",
+        "name": "grapevnf",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/361f7f83-e4dd-4a27-ad4b-a7e1c7a52672/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Firewall",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "lm906x"
+    },
+
+    {
+        "uuid": "78160afe-b5e3-4978-8923-40d04671bd30",
+        "invariantUUID": "9b943920-4286-4f78-bc98-387d15812490",
+        "name": "APPC-test",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/78160afe-b5e3-4978-8923-40d04671bd30/toscaModel",
+        "category": "Network L4+",
+        "subCategory": "Common Network Resources",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "596c8b1d-3a1d-47fc-ace2-1fbebb94b1e5",
+        "invariantUUID": "b99889d1-bc9d-4a90-942c-88e21c358f75",
+        "name": "cherryvf",
+        "version": "3.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/596c8b1d-3a1d-47fc-ace2-1fbebb94b1e5/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Firewall",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "nk909r"
+    },
+
+    {
+        "uuid": "da3619c1-9b19-4edc-9853-a714c5034371",
+        "invariantUUID": "b90f7990-667a-4f63-9e7f-ee02f64766f1",
+        "name": "FDNT",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/da3619c1-9b19-4edc-9853-a714c5034371/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Call Control",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "m99121"
+    },
+
+    {
+        "uuid": "3c22db36-3461-4463-8b11-c8fbdb951c1e",
+        "invariantUUID": "42e3c73c-829f-464c-90fd-326ed7018d06",
+        "name": "RonyTestCSAR",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/3c22db36-3461-4463-8b11-c8fbdb951c1e/toscaModel",
+        "category": "Allotted Resource",
+        "subCategory": "Service Admin",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "rb844h"
+    },
+
+    {
+        "uuid": "d6c133c5-ab82-4c60-afe6-90556da55c7e",
+        "invariantUUID": "009e4104-2403-49c4-94ee-6dcb0547e44d",
+        "name": "VES Collector",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/d6c133c5-ab82-4c60-afe6-90556da55c7e/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Collector",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "af3193"
+    },
+
+    {
+        "uuid": "43efef8f-204c-4a54-9121-ae19951063aa",
+        "invariantUUID": "926f6d60-bf84-46c4-9ed7-f0bb774e5184",
+        "name": "Sangeetha",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/43efef8f-204c-4a54-9121-ae19951063aa/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Database",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "e01dfc8f-2529-423b-9765-08b57df6ba51",
+        "invariantUUID": "6c7aaec2-59eb-41d9-8681-b7f976ab668d",
+        "name": "eNodeB-vf",
+        "version": "2.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/e01dfc8f-2529-423b-9765-08b57df6ba51/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Application Server",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "af3193"
+    },
+
+    {
+        "uuid": "1cad2e90-0259-498f-884d-7bbe5a156fb2",
+        "invariantUUID": "76b01019-a533-4c31-871d-6275924c7543",
+        "name": "vPE-AV-renana",
+        "version": "1.0",
+        "toscaModelURL": "/sdc/v1/catalog/resources/1cad2e90-0259-498f-884d-7bbe5a156fb2/toscaModel",
+        "category": "Network L2-3",
+        "subCategory": "Router",
+        "resourceType": "VF",
+        "lifecycleState": "CERTIFIED",
+        "lastUpdaterUserId": "m08743"
+    },
+
+    {
+        "uuid": "747ccce2-7efb-403d-acd3-88bc9ffb43a2",
+        "invariantUUID": "76b01019-a533-4c31-871d-6275924c7543",
+        "name": "vPE-AV-renana",
+        "version": "1.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/747ccce2-7efb-403d-acd3-88bc9ffb43a2/toscaModel",
+        "category": "Network L2-3",
+        "subCategory": "Router",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "2d0cb42c-398e-4c4c-959a-290459489cef",
+        "invariantUUID": "935689b9-80e2-4818-8c2d-fbbeaec9b56a",
+        "name": "csarTest",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/2d0cb42c-398e-4c4c-959a-290459489cef/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Load Balancer",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "ss8214"
+    },
+
+    {
+        "uuid": "62c5d4c8-1a5a-4081-bde7-8805821f41a0",
+        "invariantUUID": "5bf48fb1-a073-4ad5-84e0-387d9160713c",
+        "name": "madhu_mdns",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/62c5d4c8-1a5a-4081-bde7-8805821f41a0/toscaModel",
+        "category": "Application L4+",
+        "subCategory": "Firewall",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKIN",
+        "lastUpdaterUserId": "sa997j"
+    },
+
+    {
+        "uuid": "8faf42f4-287a-430e-a761-9df0ce4075d1",
+        "invariantUUID": "6e2213a9-6ca2-4ab9-adfd-1af95c61f23d",
+        "name": "vPE-BV-Renana",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/8faf42f4-287a-430e-a761-9df0ce4075d1/toscaModel",
+        "category": "Generic",
+        "subCategory": "Infrastructure",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "rh176a"
+    },
+
+    {
+        "uuid": "541310cd-d7b4-48d1-969a-d81866277298",
+        "invariantUUID": "30df25ac-d6c9-4cec-8c56-b287cd462e30",
+        "name": "TCA",
+        "version": "0.1",
+        "toscaModelURL": "/sdc/v1/catalog/resources/541310cd-d7b4-48d1-969a-d81866277298/toscaModel",
+        "category": "DCAE Component",
+        "subCategory": "Microservice",
+        "resourceType": "VF",
+        "lifecycleState": "NOT_CERTIFIED_CHECKOUT",
+        "lastUpdaterUserId": "ss7286"
+    }
+]
\ No newline at end of file