import org.onap.sdc.toscaparser.api.CapabilityAssignments;
 import org.onap.sdc.toscaparser.api.NodeTemplate;
 import org.onap.sdc.toscaparser.api.RequirementAssignment;
+import org.onap.sdc.toscaparser.api.RequirementAssignments;
 import org.onap.sdc.toscaparser.api.elements.Metadata;
 
 /**
     private static final String MEMORY_PAGE_SIZE_PATH = "virtual_memory#vdu_memory_requirements#memoryPageSize";
     private static final String NETWORK_INTERFACE_TYPE_PATH =
             "virtual_network_interface_requirements#network_interface_requirements#interfaceType";
-    private static final String NETWORK_PCI_PATH = "virtual_network_interface_requirements#nic_io_requirements";
+    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 HUGE_PAGES_HPA_FEATURE = "hugePages";
     private static final Map<String, String> NETWORK_HPA_FEATURE_MAP =
             flavorDirective.setType("flavor_directives");
             flavorDirective.getAttributes().add(flavorAttribute);
             final FlavorFeature flavorFeature = new FlavorFeature();
-            flavorFeature.setId(sdcCsarHelper.getNodeTemplatePropertyLeafValue(node, "name"));
+            flavorFeature.setId(node.toString());
+            LOGGER.debug("the name of node =" + node.toString());
             flavorFeature.getDirectives().add(flavorDirective);
 
             final CapabilityAssignments capabilityAssignments = sdcCsarHelper.getCapabilitiesOf(node);
                 return;
             }
 
-            for (final RequirementAssignment requriement : sdcCsarHelper.getRequirementsOf(node).getAll()) {
-                final String nodeTemplateName = requriement.getNodeTemplateName().toLowerCase();
+            final RequirementAssignments requriements =
+                sdcCsarHelper.getRequirementsOf(node).getRequirementsByName("virtual_binding");
+            for (final RequirementAssignment requriement : requriements.getAll()) {
+                final String nodeTemplateName = requriement.getNodeTemplateName();
                 LOGGER.debug("getNodeTemplateName =" + nodeTemplateName);
                 if (nodeTemplateName == null) {
                     continue;
 
         assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
         assertTrue(policy.getConfigBody().contains("\"policyType\":\"Optimization\""));
 
-        assertTrue(policy.getConfigBody().contains("\"id\":\"vdu_vnf_1\""));
+        assertTrue(policy.getConfigBody().contains("\"id\":\"VDU_vnf_1\""));
         assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\""));
         assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
         assertTrue(policy.getConfigBody().contains("\"hpa-feature\":\"BasicCapabilities\""));
         assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
         assertTrue(policy.getConfigBody().contains("\"policyType\":\"Optimization\""));
 
-        assertTrue(policy.getConfigBody().contains("\"id\":\"vdu_vnf_1\""));
+        assertTrue(policy.getConfigBody().contains("\"id\":\"VDU_vnf_1\""));
         assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\""));
         assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
         assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\""));
         assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
         assertTrue(policy.getConfigBody().contains("\"policyType\":\"Optimization\""));
 
-        assertTrue(policy.getConfigBody().contains("\"id\":\"vdu_vnf_1\""));
+        assertTrue(policy.getConfigBody().contains("\"id\":\"VDU_vnf_1\""));
         assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\""));
         assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
         assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\""));
         assertTrue(policy.getConfigBody().contains("\"version\":\"1.0\""));
         assertTrue(policy.getConfigBody().contains("\"policyType\":\"Optimization\""));
 
-        assertTrue(policy.getConfigBody().contains("\"id\":\"vdu_vnf_1\""));
+        assertTrue(policy.getConfigBody().contains("\"id\":\"VDU_vnf_1\""));
         assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.nfv.Vdu.Compute\""));
         assertTrue(policy.getConfigBody().contains("\"type\":\"flavor_directives\""));
         assertTrue(policy.getConfigBody().contains("\"attribute_name\":\"flavorName\""));
         assertTrue(policy.getConfigBody().contains("\"operator\":\"\""));
         assertTrue(policy.getConfigBody().contains("\"unit\":\"MB\""));
     }
+
+    @Test
+    public void testS3p0PciVendorId() throws IOException, PolicyDecodingException {
+        final Csar csar = new Csar("src/test/resources/s3p_0_pciVendorId.csar");
+        final PolicyDecoderCsarPdpx policyDecoderCsarPdpx = new PolicyDecoderCsarPdpx();
+        policyDecoderCsarPdpx.configure(CSAR_TO_OPTIMIZATION_POLICY_CONFIGURATION);
+
+        final Collection<OptimizationPolicy> policies = policyDecoderCsarPdpx.decode(csar);
+        assertEquals(1, 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\":\"Optimization\""));
+
+        assertTrue(policy.getConfigBody().contains("\"id\":\"VDU_vgw_0\""));
+        assertTrue(policy.getConfigBody().contains("\"type\":\"tosca.node.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("\"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\":\"\""));
+
+    }
 }