diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/IMasterDataRegistrationTransaction.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/IMasterDataRegistrationTransaction.java
index ad5f6b7151a59c22737c257d9564b2f9c3bf9455..3b0900916bbf903204b33ef358aca732e55a28eb 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/IMasterDataRegistrationTransaction.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/IMasterDataRegistrationTransaction.java
@@ -265,11 +265,6 @@ public interface IMasterDataRegistrationTransaction
      */
     IVocabularyTerm createNewVocabularyTerm(String code);
 
-    /**
-     * Adds the specified vocabulary term to the specified vocabulary.
-     */
-    void addVocabularyTermTo(IVocabularyImmutable vocabulary, IVocabularyTerm term);
-
     /**
      * Returns the vocabulary term with specified code from the specified vocabulary.
      * 
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/MasterDataRegistrationTransaction.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/MasterDataRegistrationTransaction.java
index ee7c0dcf27a8208f384c72b3782658a2a37a6b5e..c1dfe413f8cc2e450a35a4e656b7cb81b2b55d93 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/MasterDataRegistrationTransaction.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/MasterDataRegistrationTransaction.java
@@ -418,24 +418,6 @@ public class MasterDataRegistrationTransaction implements IMasterDataRegistratio
         return vocabulary;
     }
 
-    @Override
-    public void addVocabularyTermTo(IVocabularyImmutable vocabulary, IVocabularyTerm term)
-    {
-        if (vocabulary instanceof Vocabulary)
-        {
-            ((Vocabulary) vocabulary).addTerm(term);
-            return;
-        }
-        Long id = ((VocabularyImmutable) vocabulary).getVocabulary().getId();
-        List<VocabularyTerm> terms = createdVocabularyTerms.get(id);
-        if (terms == null)
-        {
-            terms = new ArrayList<VocabularyTerm>();
-            createdVocabularyTerms.put(id, terms);
-        }
-        terms.add((VocabularyTerm) term);
-    }
-
     @Override
     public IVocabularyTerm getVocabularyTerm(IVocabularyImmutable vocabulary,
             String vocabularyTermCode)
@@ -474,7 +456,7 @@ public class MasterDataRegistrationTransaction implements IMasterDataRegistratio
         IVocabularyImmutable vocabulary = getVocabulary(code);
         if (vocabulary != null)
         {
-            return new VocabularyWrapper((VocabularyImmutable) vocabulary);
+            return new VocabularyWrapper((VocabularyImmutable) vocabulary, createdVocabularyTerms);
         }
         return createNewVocabulary(code);
     }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/VocabularyWrapper.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/VocabularyWrapper.java
index c1220575a763a697b8f149beb32783a4dd89b43f..7bc2c8ed5b359c1dd9cacca9c0a12e3abd9ccd12 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/VocabularyWrapper.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/VocabularyWrapper.java
@@ -16,6 +16,10 @@
 
 package ch.systemsx.cisd.openbis.generic.server.jython.api.v1.impl;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
 import ch.systemsx.cisd.openbis.generic.server.jython.api.v1.IVocabulary;
 import ch.systemsx.cisd.openbis.generic.server.jython.api.v1.IVocabularyTerm;
 
@@ -26,9 +30,13 @@ import ch.systemsx.cisd.openbis.generic.server.jython.api.v1.IVocabularyTerm;
  */
 class VocabularyWrapper extends VocabularyImmutable implements IVocabulary
 {
-    VocabularyWrapper(VocabularyImmutable vocabulary)
+    private final Map<Long, List<VocabularyTerm>> createdVocabularyTerms;
+
+    VocabularyWrapper(VocabularyImmutable vocabulary,
+            Map<Long, List<VocabularyTerm>> createdVocabularyTerms)
     {
         super(vocabulary.getVocabulary());
+        this.createdVocabularyTerms = createdVocabularyTerms;
     }
 
     @Override
@@ -59,5 +67,13 @@ class VocabularyWrapper extends VocabularyImmutable implements IVocabulary
     @Override
     public void addTerm(IVocabularyTerm term)
     {
+        Long id = getVocabulary().getId();
+        List<VocabularyTerm> terms = createdVocabularyTerms.get(id);
+        if (terms == null)
+        {
+            terms = new ArrayList<VocabularyTerm>();
+            createdVocabularyTerms.put(id, terms);
+        }
+        terms.add((VocabularyTerm) term);
     }
 }
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/MasterDataRegistrationTransactionTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/MasterDataRegistrationTransactionTest.java
index 2b20741e3f61ee2dcc7a8d547b3e77cb501d6a58..be5bcac1c64bb8f67c8e907524651d012fdf06cd 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/MasterDataRegistrationTransactionTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/jython/api/v1/impl/MasterDataRegistrationTransactionTest.java
@@ -502,7 +502,7 @@ public class MasterDataRegistrationTransactionTest extends AssertJUnit
         IVocabularyTerm term = transaction.createNewVocabularyTerm("ABC");
         term.setLabel("abc");
         term.setDescription("Hello abc");
-        transaction.addVocabularyTermTo(voca, term);
+        voca.addTerm(term);
         transaction.commit();
 
         assertEquals("[abc [ABC]]", newTermsMatcher.recordedObject().toString());
@@ -585,7 +585,7 @@ public class MasterDataRegistrationTransactionTest extends AssertJUnit
         term2.setLabel("Beta");
         term2.setDescription("Hello B");
         term2.setOrdinal(1L);
-        transaction.addVocabularyTermTo(voca, term2);
+        voca.addTerm(term2);
         transaction.commit();
 
         NewVocabulary newVoca = newVocaMatcher.recordedObject();
@@ -652,6 +652,7 @@ public class MasterDataRegistrationTransactionTest extends AssertJUnit
         context.assertIsSatisfied();
     }
 
+    @SuppressWarnings("unchecked")
     @Test
     public void testAddVocabularyTermsFailed()
     {
@@ -667,8 +668,8 @@ public class MasterDataRegistrationTransactionTest extends AssertJUnit
             });
 
         IVocabulary voca = transaction.getOrCreateNewVocabulary(KNOWN);
-        transaction.addVocabularyTermTo(voca, transaction.createNewVocabularyTerm("ABC"));
-        transaction.addVocabularyTermTo(voca, transaction.createNewVocabularyTerm("Delta"));
+        voca.addTerm(transaction.createNewVocabularyTerm("ABC"));
+        voca.addTerm(transaction.createNewVocabularyTerm("Delta"));
         transaction.commit();
 
         assertEquals("Failed to register new terms [ABC, DELTA]: Oohps!", transaction
diff --git a/rtd_phosphonetx/source/core-plugins/proteomics-optional/1/as/initialize-master-data.py b/rtd_phosphonetx/source/core-plugins/proteomics-optional/1/as/initialize-master-data.py
index 43f0b50e81c77562790df479c96ccb34d1ba4623..143643faf0039d7027b0a123e46cd695c7183e23 100644
--- a/rtd_phosphonetx/source/core-plugins/proteomics-optional/1/as/initialize-master-data.py
+++ b/rtd_phosphonetx/source/core-plugins/proteomics-optional/1/as/initialize-master-data.py
@@ -30,6 +30,14 @@ file_type_ZIP.setDescription('A zipped package')
 
 vocabulary_TREATMENT_TYPE = tr.getVocabulary('TREATMENT_TYPE')
 
+vocabulary_TREATMENT_TYPE.addTerm(vocabulary_term_TREATMENT_TYPE_PH)
+vocabulary_term_TREATMENT_TYPE_PH = tr.createNewVocabularyTerm('PH')
+vocabulary_term_TREATMENT_TYPE_PH.setDescription(None)
+vocabulary_term_TREATMENT_TYPE_PH.setUrl(None)
+vocabulary_term_TREATMENT_TYPE_PH.setLabel('ph')
+vocabulary_term_TREATMENT_TYPE_PH.setOrdinal(1)
+vocabulary_TREATMENT_TYPE.addTerm(vocabulary_term_TREATMENT_TYPE_PH)
+
 exp_type_BIOLOGICAL_EXPERIMENT = tr.getOrCreateNewExperimentType('BIOLOGICAL_EXPERIMENT')
 exp_type_BIOLOGICAL_EXPERIMENT.setDescription('A biological experiment')