diff --git a/uk/ac/sanger/artemis/chado/ArtemisUtils.java b/uk/ac/sanger/artemis/chado/ArtemisUtils.java
index 82e76f48647d6d58dff890c731eb10b9681c309a..8fb15c6424b7436ab00ea23f760449fc1c6864f3 100644
--- a/uk/ac/sanger/artemis/chado/ArtemisUtils.java
+++ b/uk/ac/sanger/artemis/chado/ArtemisUtils.java
@@ -518,7 +518,8 @@ public class ArtemisUtils
    * @return
    */
   protected static Feature getMatchFeatureWithFeatureRelations(final String uniqueName,
-      final String qualifierName, String qualifierString, final GFFStreamFeature feature)
+      final String qualifierName, String qualifierString, final GFFStreamFeature feature,
+      final boolean isDelete)
   {
     final int queryFeatureId;
     
@@ -559,7 +560,18 @@ public class ArtemisUtils
     String matchName   = getString(qualifierStrings, "match_name");
     String clusterName = getString(qualifierStrings, "cluster_name");
     if(!matchName.equals(""))
-      matchFeature.setUniqueName(matchName.substring(11));
+    {
+      // there is no match feature just a direct feature_relationship link
+      if(link.equals(matchName.substring(11)))
+      {
+        if(isDelete)
+          return null;
+        else
+          matchFeature.setUniqueName("ORTHO_PARA_" + uniqueName + "_" + link);
+      }
+      else
+        matchFeature.setUniqueName(matchName.substring(11));
+    }
     else if(!clusterName.equals(""))
       matchFeature.setUniqueName(clusterName.substring(13));
     else
diff --git a/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java b/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java
index 4f5617230fdb5b551173993f6a2c053ee5660526..d168e20820d6951065170e6a08155d9f425128ad 100644
--- a/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java
+++ b/uk/ac/sanger/artemis/chado/ChadoTransactionManager.java
@@ -98,7 +98,7 @@ public class ChadoTransactionManager
     org.apache.log4j.Logger.getLogger(ChadoTransactionManager.class);
   
   public static boolean addSegments = true;
-  private Vector sql = new Vector();
+  private Vector<ChadoTransaction> sql = new Vector<ChadoTransaction>();
   
   /** GFF3 predefined tags, i.e. not feature_prop's */
   private static String reserved_tags[] = 
@@ -1644,13 +1644,21 @@ public class ChadoTransactionManager
            
            org.gmod.schema.sequence.Feature matchFeature =
              ArtemisUtils.getMatchFeatureWithFeatureRelations(uniquename, qualifierName, 
-                 qualifierString, feature);
+                 qualifierString, feature, true);
            
-           tsn = new ChadoTransaction(ChadoTransaction.DELETE,
-               matchFeature,
-               null, (GFFStreamFeature)null, feature.getKey().getKeyString(),
-               qualifierName.toUpperCase()+ ": ID="+uniquename+" "+qualifierString);
-           sql.add(tsn);  
+           if(matchFeature == null)
+           {
+             logger4j.debug("NO MATCH FEATURE FOUND. DELETE FEATURE_RELATIONSHIP");
+             deleteFeatureRelationShip(qualifierName, qualifierString, uniquename, feature);
+           }
+           else
+           {
+             tsn = new ChadoTransaction(ChadoTransaction.DELETE,
+                 matchFeature,
+                 null, (GFFStreamFeature)null, feature.getKey().getKeyString(),
+                 qualifierName.toUpperCase()+ ": ID="+uniquename+" "+qualifierString);
+             sql.add(tsn);
+           }
          }
          else
            logger4j.warn("Ignoring reserved tag missing : "+qualifierName);
@@ -1839,7 +1847,7 @@ public class ChadoTransactionManager
       
       org.gmod.schema.sequence.Feature matchFeature =
         ArtemisUtils.getMatchFeatureWithFeatureRelations(uniquename, qualifierName, 
-            qualifierString, feature);
+            qualifierString, feature, false);
       
       if(isDuplicate)
       {
@@ -2373,6 +2381,45 @@ public class ChadoTransactionManager
     return feature_cvterm;
   }
   
+  private void deleteFeatureRelationShip(final String qualifierName, 
+                                         final String qualifierString, 
+                                         final String uniquename,
+                                         final GFFStreamFeature feature)
+  {
+    FeatureRelationship fr = new FeatureRelationship();
+    
+    // orthologous_to or paralogous_to should be retrieved from sequence ontology !!
+    CvTerm cvterm = DatabaseDocument.getCvTermByCvAndCvTerm(qualifierName, "sequence");
+    
+    org.gmod.schema.sequence.Feature objectFeature = new org.gmod.schema.sequence.Feature();
+    objectFeature.setUniqueName(uniquename);
+    
+    int index1 = qualifierString.indexOf("link=")+5;
+    int index2 = qualifierString.indexOf("type=");
+    String link = qualifierString.substring(index1, index2).trim();
+    org.gmod.schema.sequence.Feature subjectFeature = new org.gmod.schema.sequence.Feature();
+    subjectFeature.setUniqueName(link);
+    
+    fr.setFeatureByObjectId(objectFeature);
+    fr.setFeatureBySubjectId(subjectFeature);
+    fr.setCvTerm(cvterm);
+
+    ChadoTransaction tsn = new ChadoTransaction(ChadoTransaction.DELETE,
+        fr,
+        null, (GFFStreamFeature)null, feature.getKey().getKeyString(),
+        qualifierName.toUpperCase()+ ": ID="+uniquename+" "+qualifierString);
+    sql.add(tsn);
+    
+    
+    fr.setFeatureByObjectId(subjectFeature);
+    fr.setFeatureBySubjectId(objectFeature);
+    tsn = new ChadoTransaction(ChadoTransaction.DELETE,
+        fr,
+        null, (GFFStreamFeature)null, feature.getKey().getKeyString(),
+        qualifierName.toUpperCase()+ ": ID="+uniquename+" "+qualifierString);
+    sql.add(tsn);
+  }
+  
   public static CvTerm getCvTerm(final String cvTermName, final String cvName,
                                  final String definition,
                                  final String dbName)
diff --git a/uk/ac/sanger/artemis/chado/ClusterLazyQualifierValue.java b/uk/ac/sanger/artemis/chado/ClusterLazyQualifierValue.java
index 2dd48b219a0581955df22bd90ca48e89bb66e8e5..5053caaae2c82cedda361fa559f51adcf8ed31c5 100644
--- a/uk/ac/sanger/artemis/chado/ClusterLazyQualifierValue.java
+++ b/uk/ac/sanger/artemis/chado/ClusterLazyQualifierValue.java
@@ -204,7 +204,9 @@ public class ClusterLazyQualifierValue implements LazyQualifierValue
   
           String product = getProduct(matchFeature);
           if(product != null)
-            value = value.concat("; product="+product);
+            value = value.concat(";product="+product);
+          
+          value = value.concat(";match_name="+matchFeature.getUniqueName());
         }
         
         continue;