diff --git a/uk/ac/sanger/artemis/util/DatabaseDocument.java b/uk/ac/sanger/artemis/util/DatabaseDocument.java
index 29dbfbbb39e4998d90c82c1d9ad3e030950a4cff..8586421bb9d26cb979361aa574ffc346a8a85d76 100644
--- a/uk/ac/sanger/artemis/util/DatabaseDocument.java
+++ b/uk/ac/sanger/artemis/util/DatabaseDocument.java
@@ -1544,33 +1544,61 @@ public class DatabaseDocument extends Document
         attr_buff.append("db_xref="+ pub.getUniqueName());
         nfound_dbxref++;
       }
-      
-      if(featureCvTermDbXRefs != null &&
-              featureCvTermDbXRefs.size() > 0)
+
+      if(featureCvTermPubs != null &&
+          featureCvTermPubs.size() > 0)
       {
+        for(int i=0; i<featureCvTermPubs.size(); i++)
+        {
+          FeatureCvTermPub featureCvTermPub =
+            (FeatureCvTermPub)featureCvTermPubs.get(i);
+          
+          if(feature_cvterm.getFeatureCvTermId() != 
+            featureCvTermPub.getFeatureCvTerm().getFeatureCvTermId())
+            continue;
+          
+          if(nfound_dbxref == 0)
+            attr_buff.append("db_xref=");
+          else if(nfound_dbxref > 0)
+            attr_buff.append("|");
+
+          attr_buff.append(featureCvTermPub.getPub().getUniqueName());
+          nfound_dbxref++;
+        }
+      }
+      if(nfound_dbxref > 0)
+        attr_buff.append("%3B");
+
+      if(featureCvTermDbXRefs != null &&
+          featureCvTermDbXRefs.size() > 0 )
+      {  
+        int nfound = 0;
         for(int i=0; i<featureCvTermDbXRefs.size(); i++)
         {
           FeatureCvTermDbXRef featureCvTermDbXRef =
             (FeatureCvTermDbXRef)featureCvTermDbXRefs.get(i);
-    
+            
           if(feature_cvterm.getFeatureCvTermId() != 
             featureCvTermDbXRef.getFeatureCvTerm().getFeatureCvTermId())
+          {
             continue;
-      
-          if(nfound_dbxref == 0)
-            attr_buff.append("db_xref=");
-          else if(nfound_dbxref > 0)
+          }
+          
+          if(nfound == 0)
+            attr_buff.append("with=");
+          else if(nfound > 0)
             attr_buff.append("|");
           
           DbXRef fc_dbXRef = featureCvTermDbXRef.getDbXRef();
           attr_buff.append(fc_dbXRef.getDb().getName()+":");
           attr_buff.append(fc_dbXRef.getAccession());
-          nfound_dbxref++;
+          nfound++;
         }
+        
+        if(nfound > 0)
+          attr_buff.append("%3B");
       }
       
-      if(nfound_dbxref > 0)
-        attr_buff.append("%3B");
       
       List feature_cvtermprops = (List) feature_cvterm.getFeatureCvTermProps();
       for(int i = 0; i < feature_cvtermprops.size(); i++)