import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
 import com.google.gson.reflect.TypeToken;
+
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+
 import org.onap.policy.common.logging.flexlogger.FlexLogger;
 import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.distribution.reception.decoding.PolicyDecodingException;
             "virtual_network_interface_requirements#network_interface_requirements#interfaceType";
     private static final String NETWORK_PCI_PATH = 
             "virtual_network_interface_requirements#nic_io_requirements#logical_node_requirements";
-    private static final String BASIC_CAPABILITIES_HPA_FEATURE = "BasicCapabilities";
+    private static final String BASIC_CAPABILITIES_HPA_FEATURE = "basicCapabilities";
     private static final String HUGE_PAGES_HPA_FEATURE = "hugePages";
     private static final Map<String, String> NETWORK_HPA_FEATURE_MAP =
-            ImmutableMap.of("SR-IOV", "SriovNICNetwork", "PCI-Passthrough", "pciePassthrough");
-
+            ImmutableMap.of("SR-IOV", "sriovNICNetwork", "PCI-Passthrough", "pciePassthrough");
+    private static final Pattern PATTERN = Pattern.compile("(\\D*)(\\d+)(\\D*)");
     private ISdcCsarHelper sdcCsarHelper;
     final Gson gson = new GsonBuilder().serializeNulls().setPrettyPrinting().disableHtmlEscaping().create();
 
         LOGGER.debug("the size of cp is =" + lnodeVduCp.size());
 
         final Content content = new Content();
-        content.setResources(metaData.getValue("name"));
-        content.setIdentity(content.getPolicyType() + "_" + content.getResources());
+        content.getResources().add(metaData.getValue("name"));
+        content.setIdentity(content.getPolicyType() + "_" + metaData.getValue("name"));
         extractInfoVdu(lnodeVdu, content);
         extractInfoVduCp(lnodeVduCp, content);
         if (content.getFlavorFeatures().isEmpty()) {
         // based on input featureValue, return back a suitable hpaFeatureAttribute
         final HpaFeatureAttribute hpaFeatureAttribute = new HpaFeatureAttribute();
         hpaFeatureAttribute.setHpaAttributeKey(hpaAttributeKey);
-        final String tmp = featureValue.replace(" ", "");
-        final String pattern = "(\\D*)(\\d+)(\\D*)";
-        final Pattern r = Pattern.compile(pattern);
-        final Matcher m = r.matcher(tmp);
-        if (m.find()) {
-            LOGGER.debug("operator = " + m.group(1));
-            LOGGER.debug("value = " + m.group(2));
-            LOGGER.debug("unit = " + m.group(3));
-            hpaFeatureAttribute.setOperator(m.group(1));
-            hpaFeatureAttribute.setHpaAttributeValue(m.group(2));
-            hpaFeatureAttribute.setUnit(m.group(3));
+        final String modifiedValue = featureValue.replace(" ", "");
+        final Matcher matcher = PATTERN.matcher(modifiedValue);
+        if (matcher.find()) {
+            LOGGER.debug("operator " + matcher.group(1) + ", value = " + matcher.group(2)
+                    + ", unit = " + matcher.group(3));
+            if ( matcher.group(1).length() == 0 ) {
+                hpaFeatureAttribute.setOperator("=");
+            } else {
+                hpaFeatureAttribute.setOperator(matcher.group(1));
+            }
+            hpaFeatureAttribute.setHpaAttributeValue(matcher.group(2));
+            hpaFeatureAttribute.setUnit(matcher.group(3));
         }
         return hpaFeatureAttribute;
     }
             }
 
             String networkHpaFeature;
-            if (retMap.containsKey(CONFIGURATION_VALUE)) {
+            if (retMap.containsKey(CONFIGURATION_VALUE)
+                && NETWORK_HPA_FEATURE_MAP.containsKey(retMap.get(CONFIGURATION_VALUE).toString())) {
                 final String interfaceTypeValue = retMap.get(CONFIGURATION_VALUE).toString();
-                LOGGER.debug(" the interfacetype value is =" + interfaceTypeValue);
-                if (NETWORK_HPA_FEATURE_MAP.containsKey(interfaceTypeValue)) {
-                    networkHpaFeature = NETWORK_HPA_FEATURE_MAP.get(interfaceTypeValue);
-                    LOGGER.debug(" the networkHpaFeature is =" + networkHpaFeature);
-                } else {
-                    LOGGER.debug(" unspported network interface ");
-                    return;
-                }
+                networkHpaFeature = NETWORK_HPA_FEATURE_MAP.get(interfaceTypeValue);
+                LOGGER.debug(" the networkHpaFeature is =" + networkHpaFeature);
             } else {
-                LOGGER.debug(" no configurationValue defined in interfaceType");
-                return;
+                LOGGER.debug(" no networkHpaFeature defined in interfaceType");
+                continue;
             }
 
             final RequirementAssignments requriements =
                 sdcCsarHelper.getRequirementsOf(node).getRequirementsByName("virtual_binding");
-            for (final RequirementAssignment requriement : requriements.getAll()) {
+            for (final RequirementAssignment requriement: requriements.getAll()) {
                 final String nodeTemplateName = requriement.getNodeTemplateName();
                 LOGGER.debug("getNodeTemplateName =" + nodeTemplateName);
                 if (nodeTemplateName == null) {
 
         assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\""));
         assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\""));
         assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
-        assertTrue(policy.getConfigBody().contains("\"policyType\":\"Optimization\""));
+        assertTrue(policy.getConfigBody().contains("\"policyType\":\"hpa\""));
 
         assertTrue(policy.getConfigBody().contains("\"id\":\"VDU_vnf_1\""));
-        assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\""));
+        assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
         assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
-        assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"BasicCapabilities\""));
-        assertTrue(policy.getConfigBody().contains("\"mandatory\":\"true\""));
+        assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"basicCapabilities\""));
+        assertTrue(policy.getConfigBody().contains("\"mandatory\":\"True\""));
         assertTrue(policy.getConfigBody().contains("\"architecture\":\"generic\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"virtualMemSize\""));
-        assertTrue(policy.getConfigBody().contains("\"operator\":\"\""));
+        assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
         assertTrue(policy.getConfigBody().contains("\"unit\":\"MB\""));
     }
 
         assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\""));
         assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\""));
         assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
-        assertTrue(policy.getConfigBody().contains("\"policyType\":\"Optimization\""));
+        assertTrue(policy.getConfigBody().contains("\"policyType\":\"hpa\""));
 
         assertTrue(policy.getConfigBody().contains("\"id\":\"VDU_vnf_1\""));
-        assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\""));
+        assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
         assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
         assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\""));
         assertTrue(policy.getConfigBody().contains("\"attribute_value\":\"\""));
-        assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"SriovNICNetwork\""));
-        assertTrue(policy.getConfigBody().contains("\"mandatory\":\"true\""));
+        assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"sriovNICNetwork\""));
+        assertTrue(policy.getConfigBody().contains("\"mandatory\":\"True\""));
         assertTrue(policy.getConfigBody().contains("\"architecture\":\"generic\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciVendorId\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1234\""));
-        assertTrue(policy.getConfigBody().contains("\"operator\":\"\""));
+        assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
         assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciDeviceId\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"5678\""));
-        assertTrue(policy.getConfigBody().contains("\"operator\":\"\""));
+        assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
         assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciNumDevices\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1\""));
-        assertTrue(policy.getConfigBody().contains("\"operator\":\"\""));
+        assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
         assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
     }
 
         assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\""));
         assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\""));
         assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
-        assertTrue(policy.getConfigBody().contains("\"policyType\":\"Optimization\""));
+        assertTrue(policy.getConfigBody().contains("\"policyType\":\"hpa\""));
 
         assertTrue(policy.getConfigBody().contains("\"id\":\"VDU_vnf_1\""));
-        assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\""));
+        assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
         assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
         assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\""));
         assertTrue(policy.getConfigBody().contains("\"attribute_value\":\"\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"pciePassthrough\""));
-        assertTrue(policy.getConfigBody().contains("\"mandatory\":\"true\""));
+        assertTrue(policy.getConfigBody().contains("\"mandatory\":\"True\""));
         assertTrue(policy.getConfigBody().contains("\"architecture\":\"generic\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciVendorId\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1234\""));
-        assertTrue(policy.getConfigBody().contains("\"operator\":\"\""));
+        assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
         assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciDeviceId\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"5678\""));
-        assertTrue(policy.getConfigBody().contains("\"operator\":\"\""));
+        assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
         assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciNumDevices\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1\""));
-        assertTrue(policy.getConfigBody().contains("\"operator\":\"\""));
+        assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
         assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
 
 
         assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\""));
         assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\""));
         assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
-        assertTrue(policy.getConfigBody().contains("\"policyType\":\"Optimization\""));
+        assertTrue(policy.getConfigBody().contains("\"policyType\":\"hpa\""));
 
         assertTrue(policy.getConfigBody().contains("\"id\":\"VDU_vnf_1\""));
-        assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\""));
+        assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
         assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
         assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\""));
         assertTrue(policy.getConfigBody().contains("\"attribute_value\":\"\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"memoryPageSize\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"2\""));
-        assertTrue(policy.getConfigBody().contains("\"operator\":\"\""));
+        assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
         assertTrue(policy.getConfigBody().contains("\"unit\":\"MB\""));
     }
 
         assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\""));
         assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\""));
         assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
-        assertTrue(policy.getConfigBody().contains("\"policyType\":\"Optimization\""));
+        assertTrue(policy.getConfigBody().contains("\"policyType\":\"hpa\""));
 
         assertTrue(policy.getConfigBody().contains("\"id\":\"VDU_vgw_0\""));
-        assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\""));
+        assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
         assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
         assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\""));
         assertTrue(policy.getConfigBody().contains("\"attribute_value\":\"\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"pciePassthrough\""));
-        assertTrue(policy.getConfigBody().contains("\"mandatory\":\"true\""));
+        assertTrue(policy.getConfigBody().contains("\"mandatory\":\"True\""));
         assertTrue(policy.getConfigBody().contains("\"architecture\":\"generic\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciVendorId\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1234\""));
-        assertTrue(policy.getConfigBody().contains("\"operator\":\"\""));
+        assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
+        assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
+
+    }
+
+    @Test
+    public void testserviceVcpeWithAll() throws IOException, PolicyDecodingException {
+        final Csar csar = new Csar("src/test/resources/service-VcpeWithAll-csar.csar");
+        final PolicyDecoderCsarPdpx policyDecoderCsarPdpx = new PolicyDecoderCsarPdpx();
+        policyDecoderCsarPdpx.configure(CSAR_TO_OPTIMIZATION_POLICY_CONFIGURATION);
+
+        final Collection<OptimizationPolicy> policies = policyDecoderCsarPdpx.decode(csar);
+        assertEquals(5, policies.size());
+        final OptimizationPolicy policy = (OptimizationPolicy) policies.toArray()[0];
+
+        assertEquals("onapName", policy.getOnapName());
+        assertTrue(policy.getPolicyName().startsWith("OOF."));
+        assertTrue(policy.getConfigBody().contains("\"priority\":\"5\""));
+        assertTrue(policy.getConfigBody().contains("\"riskLevel\":\"2\""));
+        assertTrue(policy.getConfigBody().contains("\"riskType\":\"Test\""));
+        assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
+        assertTrue(policy.getConfigBody().contains("\"policyType\":\"hpa\""));
+
+        assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.nodes.nfv.Vdu.Compute\""));
+        assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
+        assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\""));
+        assertTrue(policy.getConfigBody().contains("\"attribute_value\":\"\""));
+        assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"sriovNICNetwork\""));
+        assertTrue(policy.getConfigBody().contains("\"mandatory\":\"True\""));
+        assertTrue(policy.getConfigBody().contains("\"architecture\":\"generic\""));
+        assertTrue(policy.getConfigBody().contains("\"hpa-version\":\"v1\""));
+        assertTrue(policy.getConfigBody().contains("\"hpa-attribute-key\":\"pciVendorId\""));
+        assertTrue(policy.getConfigBody().contains("\"hpa-attribute-value\":\"1234\""));
+        assertTrue(policy.getConfigBody().contains("\"operator\":\"=\""));
         assertTrue(policy.getConfigBody().contains("\"unit\":\"\""));
 
     }