diff --git a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/heatbridge/helpers/AaiHelper.java b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/heatbridge/helpers/AaiHelper.java
index 32d8f12..fef7b5e 100644
--- a/adapters/mso-openstack-adapters/src/main/java/org/onap/so/heatbridge/helpers/AaiHelper.java
+++ b/adapters/mso-openstack-adapters/src/main/java/org/onap/so/heatbridge/helpers/AaiHelper.java
@@ -103,11 +103,6 @@
             relationships.add(pserverRelationship);
         }
 
-        // vserver to generic-vnf relationship
-        Relationship genericVnfRelationship = buildRelationship(
-                AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.network().genericVnf(genericVnfId)));
-        relationships.add(genericVnfRelationship);
-
         // vserver to vnfc relationship
         if (!StringUtils.isEmpty(server.getName())) {
             relationships.add(createVnfRelationshiptoVserver(server.getName(), genericVnfId, vfModuleId));
diff --git a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/heatbridge/HeatBridgeImplTest.java b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/heatbridge/HeatBridgeImplTest.java
index 93a7992..1026284 100644
--- a/adapters/mso-openstack-adapters/src/test/java/org/onap/so/heatbridge/HeatBridgeImplTest.java
+++ b/adapters/mso-openstack-adapters/src/test/java/org/onap/so/heatbridge/HeatBridgeImplTest.java
@@ -172,6 +172,8 @@
         when(resourcesClient.beginSingleTransaction()).thenReturn(transaction);
     }
 
+
+
     @Test
     public void testExtractStackResourceIdsByResourceType() throws HeatBridgeException {
         // Arrange
@@ -369,15 +371,15 @@
 
         org.onap.aai.domain.yang.RelationshipList relList = aaiHelper.getVserverRelationshipList(CLOUD_OWNER, REGION_ID,
                 "test-genericVnf-id", "test-vfModule-id", server1);
-        assertEquals(4, relList.getRelationship().size());
+        assertEquals(3, relList.getRelationship().size());
 
         org.onap.aai.domain.yang.RelationshipList relList2 = aaiHelper.getVserverRelationshipList(CLOUD_OWNER,
                 REGION_ID, "test-genericVnf-id", "test-vfModule-id", server2);
-        assertEquals(3, relList2.getRelationship().size());
+        assertEquals(2, relList2.getRelationship().size());
 
         org.onap.aai.domain.yang.RelationshipList relList3 = aaiHelper.getVserverRelationshipList(CLOUD_OWNER,
                 REGION_ID, "test-genericVnf-id", "test-vfModule-id", server3);
-        assertEquals(3, relList3.getRelationship().size());
+        assertEquals(2, relList3.getRelationship().size());
     }
 
 
