commit 0844524abbb9f0319866eb357b70bee8331d0059
Author: Andreas Kohlbecker <a.kohlbecker@bgbm.org>
Date:   Wed Apr 11 14:14:53 2018 +0200

    switching vom id based to uuid based ui navigation and entity references

diff --git a/src/main/java/eu/etaxonomy/cdm/service/CdmUserHelper.java b/src/main/java/eu/etaxonomy/cdm/service/CdmUserHelper.java
index 27e60bc1..1bdf0641 100644
--- a/src/main/java/eu/etaxonomy/cdm/service/CdmUserHelper.java
+++ b/src/main/java/eu/etaxonomy/cdm/service/CdmUserHelper.java
@@ -10,6 +10,7 @@ package eu.etaxonomy.cdm.service;
 
 import java.io.Serializable;
 import java.util.EnumSet;
+import java.util.UUID;
 
 import org.apache.log4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -158,6 +159,18 @@ public class CdmUserHelper extends VaadinUserHelper implements Serializable {
         return false;
     }
 
+    @Override
+    public boolean userHasPermission(Class<? extends CdmBase> cdmType, UUID entitiyUuid, Object ... args){
+        EnumSet<CRUD> crudSet = crudSetFromArgs(args);
+        try {
+            CdmBase entity = repo.getCommonService().find(cdmType, entitiyUuid);
+            return permissionEvaluator.hasPermission(getAuthentication(), entity, crudSet);
+        } catch (PermissionDeniedException e){
+            //IGNORE
+        }
+        return false;
+    }
+
     @Override
     public boolean userHasPermission(Class<? extends CdmBase> cdmType, Object ... args){
         EnumSet<CRUD> crudSet = crudSetFromArgs(args);
@@ -259,6 +272,20 @@ public class CdmUserHelper extends VaadinUserHelper implements Serializable {
         return createAuthorityFor(username, cdmEntity, crud, property);
     }
 
+    /**
+     * @param username
+     * @param cdmType
+     * @param entitiyUuid
+     * @param crud
+     * @return
+     */
+    @Override
+    public CdmAuthority createAuthorityFor(String username, Class<? extends CdmBase> cdmType, UUID entitiyUuid, EnumSet<CRUD> crud, String property) {
+
+        CdmBase cdmEntity = repo.getCommonService().find(cdmType, entitiyUuid);
+        return createAuthorityFor(username, cdmEntity, crud, property);
+    }
+
     /**
      * {@inheritDoc}
      */
@@ -279,6 +306,17 @@ public class CdmUserHelper extends VaadinUserHelper implements Serializable {
         return createAuthorityFor(userName(), cdmType, entitiyId, crud, property);
     }
 
+    /**
+     * @param cdmType
+     * @param entitiyUuid
+     * @param crud
+     * @return
+     */
+    @Override
+    public CdmAuthority createAuthorityForCurrentUser(Class<? extends CdmBase> cdmType, UUID entitiyUuid, EnumSet<CRUD> crud, String property) {
+        return createAuthorityFor(userName(), cdmType, entitiyUuid, crud, property);
+    }
+
     /**
      * {@inheritDoc}
      */
diff --git a/src/main/java/eu/etaxonomy/cdm/service/IRegistrationWorkingSetService.java b/src/main/java/eu/etaxonomy/cdm/service/IRegistrationWorkingSetService.java
index e13da028..fb088963 100644
--- a/src/main/java/eu/etaxonomy/cdm/service/IRegistrationWorkingSetService.java
+++ b/src/main/java/eu/etaxonomy/cdm/service/IRegistrationWorkingSetService.java
@@ -10,6 +10,7 @@ package eu.etaxonomy.cdm.service;
 
 import java.util.Collection;
 import java.util.Set;
+import java.util.UUID;
 
 import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.model.common.User;
@@ -31,6 +32,8 @@ public interface IRegistrationWorkingSetService {
      */
     public RegistrationDTO loadDtoById(Integer id);
 
+    public RegistrationDTO loadDtoByUuid(UUID uuid);
+
     public Pager<RegistrationDTO> pageDTOs(Integer pageSize, Integer pageIndex);
 
     public Pager<RegistrationDTO> pageDTOs(User submitter, Collection<RegistrationStatus> includedStatus,
@@ -43,6 +46,12 @@ public interface IRegistrationWorkingSetService {
      */
     public RegistrationWorkingSet loadWorkingSetByReferenceID(Integer referenceID) throws RegistrationValidationException;
 
-    public Set<RegistrationDTO> loadBlockingRegistrations(Integer blockedRegistrationId);
+    /**
+     * @param referenceID
+     * @return
+     */
+    public RegistrationWorkingSet loadWorkingSetByReferenceUuid(UUID referenceUuid) throws RegistrationValidationException;
+
+    public Set<RegistrationDTO> loadBlockingRegistrations(UUID blockedRegistrationUuid);
 
 }
diff --git a/src/main/java/eu/etaxonomy/cdm/service/ISpecimenTypeDesignationWorkingSetService.java b/src/main/java/eu/etaxonomy/cdm/service/ISpecimenTypeDesignationWorkingSetService.java
index 6df9c542..a814e8fb 100644
--- a/src/main/java/eu/etaxonomy/cdm/service/ISpecimenTypeDesignationWorkingSetService.java
+++ b/src/main/java/eu/etaxonomy/cdm/service/ISpecimenTypeDesignationWorkingSetService.java
@@ -8,6 +8,8 @@
 */
 package eu.etaxonomy.cdm.service;
 
+import java.util.UUID;
+
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.model.common.VersionableEntity;
 import eu.etaxonomy.cdm.model.name.Registration;
@@ -21,13 +23,14 @@ import eu.etaxonomy.cdm.vaadin.model.registration.SpecimenTypeDesignationWorking
  */
 public interface ISpecimenTypeDesignationWorkingSetService {
 
-    public SpecimenTypeDesignationWorkingSetDTO<Registration> create(int registrationId, int publicationId, int typifiedNameId);
+    public SpecimenTypeDesignationWorkingSetDTO<Registration> create(UUID registrationUuid, UUID publicationUuid, UUID typifiedNameUuid);
 
     /**
      * @param id the CDM Entity id
      * @return
      */
-    public SpecimenTypeDesignationWorkingSetDTO<Registration> loadDtoByIds(int registrationId, TypedEntityReference<? extends IdentifiableEntity<?>> baseEntityRef);
+    public SpecimenTypeDesignationWorkingSetDTO<Registration> load(UUID registrationUuid,
+            TypedEntityReference<? extends IdentifiableEntity<?>> baseEntityRef);
 
     SpecimenTypeDesignationWorkingSetDTO<Registration> fixMissingFieldUnit(SpecimenTypeDesignationWorkingSetDTO<Registration> bean);
 
diff --git a/src/main/java/eu/etaxonomy/cdm/service/RegistrationWorkingSetService.java b/src/main/java/eu/etaxonomy/cdm/service/RegistrationWorkingSetService.java
index 2f14e755..c3f2f1f3 100644
--- a/src/main/java/eu/etaxonomy/cdm/service/RegistrationWorkingSetService.java
+++ b/src/main/java/eu/etaxonomy/cdm/service/RegistrationWorkingSetService.java
@@ -15,8 +15,10 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
+import java.util.UUID;
 
 import org.apache.log4j.Logger;
+import org.hibernate.Hibernate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
@@ -152,6 +154,18 @@ public class RegistrationWorkingSetService implements IRegistrationWorkingSetSer
     }
 
 
+    /**
+     * @param id the Registration entity id
+     * @return
+     */
+    @Override
+    public RegistrationDTO loadDtoByUuid(UUID uuid) {
+        Registration reg = repo.getRegistrationService().load(uuid, REGISTRATION_INIT_STRATEGY);
+        inititializeSpecimen(reg);
+        return new RegistrationDTO(reg);
+    }
+
+
     @Override
     public Pager<RegistrationDTO> pageDTOs(Integer pageSize, Integer pageIndex) {
 
@@ -178,6 +192,23 @@ public class RegistrationWorkingSetService implements IRegistrationWorkingSetSer
         return dtoPager;
     }
 
+    /**
+     * {@inheritDoc}
+     * @throws RegistrationValidationException
+     */
+    @Override
+    public RegistrationWorkingSet loadWorkingSetByReferenceUuid(UUID referenceUuid) throws RegistrationValidationException {
+
+        Reference reference = repo.getReferenceService().find(referenceUuid);
+        repo.getReferenceService().load(reference.getUuid()); // needed to avoid the problem described in #7331
+
+        Pager<Registration> pager = repo.getRegistrationService().page(Optional.of(reference), null, null, null, REGISTRATION_INIT_STRATEGY);
+
+        /* for debugging https://dev.e-taxonomy.eu/redmine/issues/7331 */
+        // debugIssue7331(pager);
+        return new RegistrationWorkingSet(makeDTOs(pager.getRecords()));
+    }
+
     /**
      * {@inheritDoc}
      * @throws RegistrationValidationException
@@ -190,7 +221,18 @@ public class RegistrationWorkingSetService implements IRegistrationWorkingSetSer
 
         Pager<Registration> pager = repo.getRegistrationService().page(Optional.of(reference), null, null, null, REGISTRATION_INIT_STRATEGY);
 
-        /* for debugging https://dev.e-taxonomy.eu/redmine/issues/7331
+        /* for debugging https://dev.e-taxonomy.eu/redmine/issues/7331 */
+        // debugIssue7331(pager);
+
+        return new RegistrationWorkingSet(makeDTOs(pager.getRecords()));
+    }
+
+
+    /**
+     * @param pager
+     */
+    @SuppressWarnings("unused")
+    private void debugIssue7331(Pager<Registration> pager) {
         for(Registration reg : pager.getRecords()){
             if(reg.getName() != null && reg.getName().getNomenclaturalReference().getAuthorship() != null){
                 Reference ref = (Reference) reg.getName().getNomenclaturalReference();
@@ -201,14 +243,12 @@ public class RegistrationWorkingSetService implements IRegistrationWorkingSetSer
                 logger.debug("NO AUTHORS");
             }
         }
-        */
-        return new RegistrationWorkingSet(makeDTOs(pager.getRecords()));
     }
 
     @Override
-    public Set<RegistrationDTO> loadBlockingRegistrations(Integer blockedRegistrationId){
+    public Set<RegistrationDTO> loadBlockingRegistrations(UUID blockedRegistrationUuid){
 
-        Registration registration = repo.getRegistrationService().load(blockedRegistrationId, BLOCKING_REGISTRATION_INIT_STRATEGY);
+        Registration registration = repo.getRegistrationService().load(blockedRegistrationUuid, BLOCKING_REGISTRATION_INIT_STRATEGY);
         Set<Registration> registrations = registration.getBlockedBy();
 
         Set<RegistrationDTO> blockingSet = new HashSet<>();
diff --git a/src/main/java/eu/etaxonomy/cdm/service/SpecimenTypeDesignationWorkingSetServiceImpl.java b/src/main/java/eu/etaxonomy/cdm/service/SpecimenTypeDesignationWorkingSetServiceImpl.java
index 0b9c5d4d..ef9221ed 100644
--- a/src/main/java/eu/etaxonomy/cdm/service/SpecimenTypeDesignationWorkingSetServiceImpl.java
+++ b/src/main/java/eu/etaxonomy/cdm/service/SpecimenTypeDesignationWorkingSetServiceImpl.java
@@ -13,6 +13,7 @@ import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
+import java.util.UUID;
 
 import org.hibernate.Session;
 import org.jboss.logging.Logger;
@@ -85,11 +86,11 @@ public class SpecimenTypeDesignationWorkingSetServiceImpl implements ISpecimenTy
      * {@inheritDoc}
      */
     @Override
-    public SpecimenTypeDesignationWorkingSetDTO<Registration> create(int registrationId, int publicationId, int typifiedNameId) {
+    public SpecimenTypeDesignationWorkingSetDTO<Registration> create(UUID registrationUuid, UUID publicationUuid, UUID typifiedNameUuid) {
         FieldUnit newfieldUnit = FieldUnit.NewInstance();
-        Registration reg = repo.getRegistrationService().load(registrationId, RegistrationWorkingSetService.REGISTRATION_INIT_STRATEGY);
-        TaxonName typifiedName = repo.getNameService().load(typifiedNameId, TAXON_NAME_INIT_STRATEGY);
-        Reference citation = repo.getReferenceService().load(publicationId, Arrays.asList("$"));
+        Registration reg = repo.getRegistrationService().load(registrationUuid, RegistrationWorkingSetService.REGISTRATION_INIT_STRATEGY);
+        TaxonName typifiedName = repo.getNameService().load(typifiedNameUuid, TAXON_NAME_INIT_STRATEGY);
+        Reference citation = repo.getReferenceService().load(publicationUuid, Arrays.asList("$"));
         SpecimenTypeDesignationWorkingSetDTO<Registration> workingSetDto = new SpecimenTypeDesignationWorkingSetDTO<Registration>(reg, newfieldUnit, citation, typifiedName);
         return workingSetDto;
     }
@@ -99,8 +100,8 @@ public class SpecimenTypeDesignationWorkingSetServiceImpl implements ISpecimenTy
      */
     @Override
     @Transactional
-    public SpecimenTypeDesignationWorkingSetDTO<Registration> loadDtoByIds(int registrationId, TypedEntityReference<? extends IdentifiableEntity<?>> baseEntityRef) {
-        RegistrationDTO regDTO = registrationWorkingSetService.loadDtoById(registrationId);
+    public SpecimenTypeDesignationWorkingSetDTO<Registration> load(UUID registrationUuid, TypedEntityReference<? extends IdentifiableEntity<?>> baseEntityRef) {
+        RegistrationDTO regDTO = registrationWorkingSetService.loadDtoByUuid(registrationUuid);
         // find the working set
         TypeDesignationWorkingSet typeDesignationWorkingSet = regDTO.getTypeDesignationWorkingSet(baseEntityRef);
         SpecimenTypeDesignationWorkingSetDTO<Registration> workingSetDto = regDTO.getSpecimenTypeDesignationWorkingSetDTO(typeDesignationWorkingSet.getBaseEntityReference());
@@ -114,7 +115,7 @@ public class SpecimenTypeDesignationWorkingSetServiceImpl implements ISpecimenTy
             // in case the base unit of the working set is not a FieldUnit all contained TypeDesignations must be modified
             // so that they are based on an empty FieldUnit with an associated Gathering Event
 
-            Registration reg = repo.getRegistrationService().find(bean.getOwner().getId());
+            Registration reg = repo.getRegistrationService().find(bean.getOwner().getUuid());
             RegistrationDTO regDTO = new RegistrationDTO(reg);
 
             FieldUnit fieldUnit = FieldUnit.NewInstance();
@@ -124,7 +125,7 @@ public class SpecimenTypeDesignationWorkingSetServiceImpl implements ISpecimenTy
 
             VersionableEntity baseEntity = bean.getBaseEntity();
             Set<TypeDesignationBase> typeDesignations = regDTO.getTypeDesignationsInWorkingSet(
-                    new TypedEntityReference(baseEntity.getClass(), baseEntity.getId(), baseEntity.toString())
+                    new TypedEntityReference(baseEntity.getClass(), baseEntity.getUuid(), baseEntity.toString())
                     );
             for(TypeDesignationBase td : typeDesignations){
                 DerivationEvent de = DerivationEvent.NewInstance();//
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationItem.java b/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationItem.java
index 9bf6aac2..ed2f486b 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationItem.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationItem.java
@@ -13,6 +13,7 @@ import static eu.etaxonomy.cdm.vaadin.component.registration.RegistrationStyles.
 import java.util.Collection;
 import java.util.EnumSet;
 import java.util.Set;
+import java.util.UUID;
 
 import org.joda.time.DateTime;
 import org.joda.time.format.ISODateTimeFormat;
@@ -191,10 +192,10 @@ public class RegistrationItem extends GridLayout {
         this.regDto = regDto;
 
         NavigationEvent navigationEvent = null;
-        if(regDto.getCitationID() != null) {
+        if(regDto.getCitationUuid() != null) {
             navigationEvent = new NavigationEvent(
                     RegistrationWorksetViewBean.NAME,
-                    Integer.toString(regDto.getCitationID())
+                    regDto.getCitationUuid().toString()
                     );
         } else {
             setComponentError(new UserError("Citation is missing"));
@@ -208,11 +209,11 @@ public class RegistrationItem extends GridLayout {
         this.parentView = parentView;
 
         ReferenceEditorAction referenceEditorAction = null;
-        if(workingSet.getCitationId() != null){
-            if(UserHelper.fromSession().userHasPermission(Reference.class, workingSet.getCitationId(), CRUD.UPDATE)){
-                referenceEditorAction = new ReferenceEditorAction(EditorActionType.EDIT, workingSet.getCitationId(), null, parentView);
+        if(workingSet.getCitationUuid() != null){
+            if(UserHelper.fromSession().userHasPermission(Reference.class, workingSet.getCitationUuid(), CRUD.UPDATE)){
+                referenceEditorAction = new ReferenceEditorAction(EditorActionType.EDIT, workingSet.getCitationUuid(), null, parentView);
             }
-            PermissionDebugUtils.addGainPerEntityPermissionButton(this, Reference.class, workingSet.getCitationId(), EnumSet.of(CRUD.UPDATE, CRUD.DELETE), null);
+            PermissionDebugUtils.addGainPerEntityPermissionButton(this, Reference.class, workingSet.getCitationUuid(), EnumSet.of(CRUD.UPDATE, CRUD.DELETE), null);
         } else {
             if(UserHelper.fromSession().userHasPermission(Reference.class, CRUD.CREATE, null, null, parentView)){
                 referenceEditorAction = new ReferenceEditorAction(EditorActionType.ADD);
@@ -245,13 +246,13 @@ public class RegistrationItem extends GridLayout {
             getMessageButton().addClickListener(e -> {
                 ShowDetailsEvent detailsEvent;
                 if(regDto != null){
-                    detailsEvent = new ShowDetailsEvent<RegistrationDTO, Integer>(
+                    detailsEvent = new ShowDetailsEvent<RegistrationDTO, UUID>(
                             e,
                             RegistrationDTO.class,
-                            regDto.getId(),
+                            regDto.getUuid(),
                             VALIDATION_PROBLEMS);
                 } else {
-                    detailsEvent = new ShowDetailsEvent<RegistrationWorkingSet, Integer>(
+                    detailsEvent = new ShowDetailsEvent<RegistrationWorkingSet, UUID>(
                             e,
                             RegistrationWorkingSet.class,
                             null,
@@ -329,8 +330,8 @@ public class RegistrationItem extends GridLayout {
         }
     }
 
-    public int getRegistrationId(){
-        return regDto.getId();
+    public UUID getRegistrationUuid(){
+        return regDto.getUuid();
     }
 
     /**
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationItemNameAndTypeButtons.java b/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationItemNameAndTypeButtons.java
index a1598228..15914a9e 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationItemNameAndTypeButtons.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/component/registration/RegistrationItemNameAndTypeButtons.java
@@ -11,6 +11,7 @@ package eu.etaxonomy.cdm.vaadin.component.registration;
 import java.util.ArrayList;
 import java.util.EnumSet;
 import java.util.List;
+import java.util.UUID;
 
 import org.apache.log4j.Logger;
 
@@ -74,14 +75,14 @@ public class RegistrationItemNameAndTypeButtons extends CompositeStyledComponent
         if(regDto.getNameRef() != null){
             Button nameButton = new Button("Name:");
             nameButton.setDescription("Edit the Name");
-            nameIdButton = new IdButton<TaxonName>(TaxonName.class, regDto.getNameRef().getId(), nameButton);
+            nameIdButton = new IdButton<TaxonName>(TaxonName.class, regDto.getNameRef().getUuid(), nameButton);
             Label nameLabel = new Label(regDto.getNameRef().getLabel());
             nameLabel.setWidthUndefined();
             boolean userHasPermission = UserHelper.fromSession().userHasPermission(regDto.registration().getName(), CRUD.UPDATE);
             nameButton.setReadOnly(isRegistrationLocked || ! userHasPermission);
 
             addComponent(nameIdButton.getButton());
-            PermissionDebugUtils.addGainPerEntityPermissionButton(this, TaxonName.class, regDto.getNameRef().getId(),
+            PermissionDebugUtils.addGainPerEntityPermissionButton(this, TaxonName.class, regDto.getNameRef().getUuid(),
                     EnumSet.of(CRUD.UPDATE, CRUD.DELETE), null);
             addComponent(nameLabel);
         } else {
@@ -91,7 +92,7 @@ public class RegistrationItemNameAndTypeButtons extends CompositeStyledComponent
                 addComponent(nameLabel);
             }
         }
-        boolean userHasAddPermission = UserHelper.fromSession().userHasPermission(Registration.class, regDto.getId(), CRUD.UPDATE);
+        boolean userHasAddPermission = UserHelper.fromSession().userHasPermission(Registration.class, regDto.getUuid(), CRUD.UPDATE);
         if(regDto.getOrderdTypeDesignationWorkingSets() != null){
             for(TypedEntityReference<TypeDesignationBase<?>> baseEntityRef : regDto.getOrderdTypeDesignationWorkingSets().keySet()) {
                 TypeDesignationWorkingSet typeDesignationWorkingSet = regDto.getOrderdTypeDesignationWorkingSets().get(baseEntityRef);
@@ -99,12 +100,12 @@ public class RegistrationItemNameAndTypeButtons extends CompositeStyledComponent
                 String buttonLabel = SpecimenOrObservationBase.class.isAssignableFrom(baseEntityRef.getType()) ? "Type": "NameType";
                 Button tdButton = new Button(buttonLabel + ":");
                 tdButton.setDescription("Edit the type designation working set");
-                boolean userHasUpdatePermission = UserHelper.fromSession().userHasPermission(baseEntityRef.getType(), baseEntityRef.getId(), CRUD.UPDATE, CRUD.DELETE);
+                boolean userHasUpdatePermission = UserHelper.fromSession().userHasPermission(baseEntityRef.getType(), baseEntityRef.getUuid(), CRUD.UPDATE, CRUD.DELETE);
                 tdButton.setReadOnly(isRegistrationLocked || !userHasUpdatePermission);
                 addComponent(tdButton);
 
                 PermissionDebugUtils.addGainPerEntityPermissionButton(this, SpecimenOrObservationBase.class,
-                        baseEntityRef.getId(), EnumSet.of(CRUD.UPDATE, CRUD.DELETE), RegistrationStatus.PREPARATION.name());
+                        baseEntityRef.getUuid(), EnumSet.of(CRUD.UPDATE, CRUD.DELETE), RegistrationStatus.PREPARATION.name());
 
                 typeDesignationButtons.add(new TypeDesignationWorkingSetButton(
                         typeDesignationWorkingSet.getWorkingsetType(),
@@ -207,21 +208,21 @@ public class RegistrationItemNameAndTypeButtons extends CompositeStyledComponent
     }
 
     public class IdButton<T> {
-        private Integer id;
+        private UUID uuid;
         private Class<T> entityType;
         private Button button;
 
-        public IdButton(Class<T> type, Integer id, Button button){
+        public IdButton(Class<T> type, UUID uuid, Button button){
             this.entityType = type;
-            this.id = id;
+            this.uuid = uuid;
             this.button = button;
         }
 
         /**
          * @return the id
          */
-        public Integer getId() {
-            return id;
+        public UUID getUuid() {
+            return uuid;
         }
 
         /**
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/event/AbstractEditorAction.java b/src/main/java/eu/etaxonomy/cdm/vaadin/event/AbstractEditorAction.java
index e4892020..65892600 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/event/AbstractEditorAction.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/event/AbstractEditorAction.java
@@ -9,6 +9,7 @@
 package eu.etaxonomy.cdm.vaadin.event;
 
 import java.util.Stack;
+import java.util.UUID;
 
 import com.vaadin.ui.Component;
 
@@ -38,8 +39,8 @@ public abstract class AbstractEditorAction extends AbstractEntityEvent<EditorAct
         this(action, null, source, sourceView);
     }
 
-    public AbstractEditorAction(EditorActionType action, Integer entityId, Component source, AbstractView sourceView) {
-        this(action, entityId, source, sourceView, null);
+    public AbstractEditorAction(EditorActionType action, UUID entityUuid, Component source, AbstractView sourceView) {
+        this(action, entityUuid, source, sourceView, null);
     }
 
     /**
@@ -57,9 +58,9 @@ public abstract class AbstractEditorAction extends AbstractEntityEvent<EditorAct
      *            Editor actions from previous views and editors that lead to the point
      *            from where this action is spawned.
      */
-    public AbstractEditorAction(EditorActionType action, Integer entityId, Component source, AbstractView sourceView,
+    public AbstractEditorAction(EditorActionType action, UUID entityUuid, Component source, AbstractView sourceView,
             Stack<EditorActionContext> context) {
-        super(action, entityId, sourceView);
+        super(action, entityUuid, sourceView);
         this.sourceComponent = source;
         this.context = context;
     }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/event/AbstractEntityEvent.java b/src/main/java/eu/etaxonomy/cdm/vaadin/event/AbstractEntityEvent.java
index abc4b35e..403d1b75 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/event/AbstractEntityEvent.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/event/AbstractEntityEvent.java
@@ -8,6 +8,8 @@
 */
 package eu.etaxonomy.cdm.vaadin.event;
 
+import java.util.UUID;
+
 import eu.etaxonomy.vaadin.mvp.AbstractView;
 
 /**
@@ -17,14 +19,14 @@ import eu.etaxonomy.vaadin.mvp.AbstractView;
  */
 public abstract class AbstractEntityEvent<T extends Enum> {
 
-    private Integer entityId = null;
+    private UUID entityUuid = null;
 
     protected T type;
 
     private AbstractView sourceView = null;
 
-    public AbstractEntityEvent(T type, Integer entityId, AbstractView sourceView) {
-        this.entityId = entityId;
+    public AbstractEntityEvent(T type, UUID entityUuid, AbstractView sourceView) {
+        this.entityUuid = entityUuid;
         this.type = type;
         this.sourceView = sourceView;
         if(type == null){
@@ -35,8 +37,8 @@ public abstract class AbstractEntityEvent<T extends Enum> {
     /**
      * @return the entityId
      */
-    public Integer getEntityId() {
-        return entityId;
+    public UUID getEntityUuid() {
+        return entityUuid;
     }
 
     public T getType() {
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/event/CollectionEditorAction.java b/src/main/java/eu/etaxonomy/cdm/vaadin/event/CollectionEditorAction.java
index 400e67d7..47fee538 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/event/CollectionEditorAction.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/event/CollectionEditorAction.java
@@ -8,6 +8,8 @@
 */
 package eu.etaxonomy.cdm.vaadin.event;
 
+import java.util.UUID;
+
 import com.vaadin.ui.Component;
 
 import eu.etaxonomy.vaadin.event.EditorActionType;
@@ -40,8 +42,8 @@ public class CollectionEditorAction extends AbstractEditorAction {
      * @param source
      * @param sourceView
      */
-    public CollectionEditorAction(EditorActionType action, Integer entityId, Component source, AbstractView sourceView) {
-        super(action, entityId, source, sourceView);
+    public CollectionEditorAction(EditorActionType action, UUID entityUuid, Component source, AbstractView sourceView) {
+        super(action, entityUuid, source, sourceView);
     }
 
 }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/event/EntityChangeEvent.java b/src/main/java/eu/etaxonomy/cdm/vaadin/event/EntityChangeEvent.java
index ac53f51e..98588916 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/event/EntityChangeEvent.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/event/EntityChangeEvent.java
@@ -33,7 +33,7 @@ public class EntityChangeEvent<T extends CdmBase> extends AbstractEntityEvent<En
     private T entity;
 
     public EntityChangeEvent(T entity, Type type, AbstractView sourceView) {
-        super(type, entity.getId(), sourceView);
+        super(type, entity.getUuid(), sourceView);
         this.entityType = (Class<T>) entity.getClass();
         this.entity = entity;
     }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/event/ReferenceEditorAction.java b/src/main/java/eu/etaxonomy/cdm/vaadin/event/ReferenceEditorAction.java
index a4097fcf..d49ce039 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/event/ReferenceEditorAction.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/event/ReferenceEditorAction.java
@@ -8,6 +8,8 @@
 */
 package eu.etaxonomy.cdm.vaadin.event;
 
+import java.util.UUID;
+
 import com.vaadin.ui.Component;
 
 import eu.etaxonomy.vaadin.event.EditorActionType;
@@ -40,8 +42,8 @@ public class ReferenceEditorAction extends AbstractEditorAction {
      * @param source
      * @param sourceView
      */
-    public ReferenceEditorAction(EditorActionType action, Integer entityId, Component source, AbstractView sourceView) {
-        super(action, entityId, source, sourceView);
+    public ReferenceEditorAction(EditorActionType action, UUID entityUuid, Component source, AbstractView sourceView) {
+        super(action, entityUuid, source, sourceView);
     }
 
 }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/event/RegistrationEditorAction.java b/src/main/java/eu/etaxonomy/cdm/vaadin/event/RegistrationEditorAction.java
index 216d0ae8..67cecda5 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/event/RegistrationEditorAction.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/event/RegistrationEditorAction.java
@@ -8,6 +8,8 @@
 */
 package eu.etaxonomy.cdm.vaadin.event;
 
+import java.util.UUID;
+
 import com.vaadin.ui.Component;
 
 import eu.etaxonomy.vaadin.event.EditorActionType;
@@ -41,8 +43,8 @@ public class RegistrationEditorAction extends AbstractEditorAction {
      * @param source
      * @param sourceView
      */
-    public RegistrationEditorAction(EditorActionType action, Integer entityId, Component source, AbstractView sourceView) {
-        super(action, entityId, source, sourceView);
+    public RegistrationEditorAction(EditorActionType action, UUID entityUuid, Component source, AbstractView sourceView) {
+        super(action, entityUuid, source, sourceView);
     }
 
 
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/event/TaxonNameEditorAction.java b/src/main/java/eu/etaxonomy/cdm/vaadin/event/TaxonNameEditorAction.java
index 7d4f9592..799b1323 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/event/TaxonNameEditorAction.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/event/TaxonNameEditorAction.java
@@ -9,6 +9,7 @@
 package eu.etaxonomy.cdm.vaadin.event;
 
 import java.util.Stack;
+import java.util.UUID;
 
 import com.vaadin.ui.Component;
 
@@ -41,8 +42,8 @@ public class TaxonNameEditorAction extends AbstractEditorAction {
      * @param source
      * @param sourceView
      */
-    public TaxonNameEditorAction(EditorActionType action, Integer entityId, Component source, AbstractView sourceView) {
-        super(action, entityId, source, sourceView);
+    public TaxonNameEditorAction(EditorActionType action, UUID entityUuid, Component source, AbstractView sourceView) {
+        super(action, entityUuid, source, sourceView);
     }
 
     /**
@@ -52,9 +53,9 @@ public class TaxonNameEditorAction extends AbstractEditorAction {
      * @param sourceView
      * @param context
      */
-    public TaxonNameEditorAction(EditorActionType action, Integer entityId, Component source, AbstractView sourceView,
+    public TaxonNameEditorAction(EditorActionType action, UUID entityUuid, Component source, AbstractView sourceView,
             Stack<EditorActionContext> context) {
-        super(action, entityId, source, sourceView, context);
+        super(action, entityUuid, source, sourceView, context);
     }
 
 
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/event/TypeDesignationWorkingsetEditorAction.java b/src/main/java/eu/etaxonomy/cdm/vaadin/event/TypeDesignationWorkingsetEditorAction.java
index aa3aae8c..473d7302 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/event/TypeDesignationWorkingsetEditorAction.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/event/TypeDesignationWorkingsetEditorAction.java
@@ -9,6 +9,7 @@
 package eu.etaxonomy.cdm.vaadin.event;
 
 import java.util.Stack;
+import java.util.UUID;
 
 import com.vaadin.ui.Component;
 
@@ -28,16 +29,16 @@ public class TypeDesignationWorkingsetEditorAction extends AbstractEditorAction
 
     private TypeDesignationWorkingSetType workingSetType;
 
-    private int registrationId;
+    private UUID registrationUuid;
 
-    private int typifiedNameId;
+    private UUID typifiedNameUuid;
 
     private TypedEntityReference<IdentifiableEntity<?>> baseEntityRef;
 
     /**
      *
      * @param action
-     * @param typeDesignationWorkingsetId
+     * @param baseEntityRef
      * @param workingSetType
      * @param registrationId
      * @param source
@@ -45,12 +46,12 @@ public class TypeDesignationWorkingsetEditorAction extends AbstractEditorAction
      */
     public TypeDesignationWorkingsetEditorAction(EditorActionType action, TypedEntityReference<IdentifiableEntity<?>> baseEntityRef,
             TypeDesignationWorkingSetType workingSetType,
-            int registrationId, int typifiedNameId,
+            UUID registrationUuid, UUID typifiedNameUuid,
             Component source, AbstractView sourceView, Stack<EditorActionContext> context) {
         super(action, null, source, sourceView);
         this.baseEntityRef = baseEntityRef;
-        this.registrationId = registrationId;
-        this.typifiedNameId = typifiedNameId;
+        this.registrationUuid = registrationUuid;
+        this.typifiedNameUuid = typifiedNameUuid;
         this.workingSetType = workingSetType;
         this.context = context;
 
@@ -60,19 +61,19 @@ public class TypeDesignationWorkingsetEditorAction extends AbstractEditorAction
      *
      * @param action
      * @param workingSetType
-     * @param registrationId
+     * @param registrationUuid
      * @param source
      * @param sourceView
      */
     public TypeDesignationWorkingsetEditorAction(EditorActionType action, TypeDesignationWorkingSetType workingSetType,
-            int registrationId, int typifiedNameId,
+            UUID registrationUuid, UUID typifiedNameUuid,
             Component source, AbstractView sourceView) {
         super(action, null, source, sourceView);
         this.workingSetType = workingSetType;
-        this.registrationId = registrationId;
-        this.typifiedNameId = typifiedNameId;
+        this.registrationUuid = registrationUuid;
+        this.typifiedNameUuid = typifiedNameUuid;
         this.context = new Stack<>();
-        this.context.push(new EditorActionContext(new TypedEntityReference<Registration>(Registration.class, registrationId), sourceView));
+        this.context.push(new EditorActionContext(new TypedEntityReference<Registration>(Registration.class, registrationUuid), sourceView));
     }
 
 
@@ -86,14 +87,14 @@ public class TypeDesignationWorkingsetEditorAction extends AbstractEditorAction
     }
 
     /**
-     * @return the registrationId
+     * @return the registrationUuid
      */
-    public int getRegistrationId() {
-        return registrationId;
+    public UUID getRegistrationUuid() {
+        return registrationUuid;
     }
 
-    public Integer getTypeDesignationWorkingsetId(){
-        return getEntityId();
+    public UUID getTypeDesignationWorkingsetUuid(){
+        return getEntityUuid();
     }
 
     /**
@@ -104,10 +105,10 @@ public class TypeDesignationWorkingsetEditorAction extends AbstractEditorAction
     }
 
     /**
-     * @return the typifiedNameId
+     * @return the typifiedNameUuid
      */
-    public int getTypifiedNameId() {
-        return typifiedNameId;
+    public UUID getTypifiedNameUuid() {
+        return typifiedNameUuid;
     }
 
 
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/event/registration/RegistrationWorkingsetAction.java b/src/main/java/eu/etaxonomy/cdm/vaadin/event/registration/RegistrationWorkingsetAction.java
index 4764a642..58052945 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/event/registration/RegistrationWorkingsetAction.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/event/registration/RegistrationWorkingsetAction.java
@@ -8,6 +8,8 @@
 */
 package eu.etaxonomy.cdm.vaadin.event.registration;
 
+import java.util.UUID;
+
 /**
  * @author a.kohlbecker
  * @since Mar 3, 2017
@@ -16,16 +18,16 @@ package eu.etaxonomy.cdm.vaadin.event.registration;
 public class RegistrationWorkingsetAction {
 
     private Action action;
-    private Integer citationID = null;
+    private UUID citationUuid = null;
 
     /**
      *
      * @param citationID the id of a {@link Reference} denoting a
      * complete registration working set.
      */
-    public RegistrationWorkingsetAction(int citationID, Action action){
+    public RegistrationWorkingsetAction(UUID citationUuid, Action action){
         this.action = action;
-        this.citationID = citationID;
+        this.citationUuid = citationUuid;
     }
 
     /**
@@ -36,10 +38,10 @@ public class RegistrationWorkingsetAction {
     }
 
     /**
-     * @return the registrationID
+     * @return the citationUuid
      */
-    public Integer getCitationID() {
-        return citationID;
+    public UUID getCitationUuid() {
+        return citationUuid;
     }
 
     public boolean isStart() {
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/model/EntityReference.java b/src/main/java/eu/etaxonomy/cdm/vaadin/model/EntityReference.java
index e375b664..f309bcf1 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/model/EntityReference.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/model/EntityReference.java
@@ -8,19 +8,22 @@
 */
 package eu.etaxonomy.cdm.vaadin.model;
 
+import java.util.UUID;
+
 import org.apache.commons.lang.builder.HashCodeBuilder;
 
 public class EntityReference {
-    int id;
+    UUID uuid;
     String label;
 
-    public EntityReference(int id, String label) {
-        this.id = id;
+    public EntityReference(UUID uuid, String label) {
+        this.uuid = uuid;
         this.label = label;
     }
 
-    public int getId() {
-        return id;
+
+    public UUID getUuid() {
+        return uuid;
     }
 
     public String getLabel() {
@@ -34,7 +37,7 @@ public class EntityReference {
     public int hashCode() {
         return new HashCodeBuilder(17, 31)
                 .append(label)
-                .append(id)
+                .append(uuid)
                 .toHashCode();
     }
 
@@ -45,7 +48,7 @@ public class EntityReference {
     public boolean equals(Object obj) {
         try {
             EntityReference other = (EntityReference) obj;
-            return id == other.id && label.equals(other.label);
+            return uuid.equals(other.uuid) && label.equals(other.label);
 
         } catch (Exception e) {
             return false;
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/model/TypedEntityReference.java b/src/main/java/eu/etaxonomy/cdm/vaadin/model/TypedEntityReference.java
index 5961d646..99fbcaa6 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/model/TypedEntityReference.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/model/TypedEntityReference.java
@@ -8,6 +8,8 @@
 */
 package eu.etaxonomy.cdm.vaadin.model;
 
+import java.util.UUID;
+
 import org.apache.commons.lang.builder.HashCodeBuilder;
 
 /**
@@ -18,16 +20,16 @@ import org.apache.commons.lang.builder.HashCodeBuilder;
 public class TypedEntityReference<T> extends EntityReference {
 
     /**
-     * @param id
+     * @param uuid
      * @param label
      */
-    public TypedEntityReference(Class<T> type, int id, String label) {
-        super(id, label);
+    public TypedEntityReference(Class<T> type, UUID uuid, String label) {
+        super(uuid, label);
         this.type = type;
     }
 
-    public TypedEntityReference(Class<T> type, int id) {
-        super(id, null);
+    public TypedEntityReference(Class<T> type, UUID uuid) {
+        super(uuid, null);
         this.type = type;
     }
 
@@ -55,7 +57,7 @@ public class TypedEntityReference<T> extends EntityReference {
     @Override
     public int hashCode() {
         return new HashCodeBuilder(17, 31)
-                .append(id)
+                .append(uuid)
                 .appendSuper(type.hashCode())
                 .hashCode();
     }
@@ -68,7 +70,7 @@ public class TypedEntityReference<T> extends EntityReference {
     public boolean equals(Object obj) {
         try {
             TypedEntityReference other = (TypedEntityReference) obj;
-            return id == other.id && type.equals(other.type);
+            return uuid.equals(other.uuid) && type.equals(other.type);
 
         } catch (Exception e) {
             return false;
@@ -77,7 +79,7 @@ public class TypedEntityReference<T> extends EntityReference {
 
     @Override
     public String toString(){
-        return type.getSimpleName() + "#" + id;
+        return type.getSimpleName() + "#" + uuid;
 
     }
 
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/model/registration/RegistrationWorkingSet.java b/src/main/java/eu/etaxonomy/cdm/vaadin/model/registration/RegistrationWorkingSet.java
index bb7579cc..d876126f 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/model/registration/RegistrationWorkingSet.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/model/registration/RegistrationWorkingSet.java
@@ -14,6 +14,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
+import java.util.UUID;
 
 import org.joda.time.DateTime;
 
@@ -33,7 +34,7 @@ public class RegistrationWorkingSet {
 
     private List<RegistrationDTO> registrationDTOs = new ArrayList<>();
 
-    private Integer citationId = null;
+    private UUID citationUuid = null;
 
     private DateTime created = null;
 
@@ -43,7 +44,7 @@ public class RegistrationWorkingSet {
      * Creates an empty working set
      */
     public RegistrationWorkingSet(Reference citation) {
-        citationId = citation.getId();
+        citationUuid = citation.getUuid();
         this.citationString= citation.getTitleCache();
 
     }
@@ -83,11 +84,11 @@ public class RegistrationWorkingSet {
         }
         for(RegistrationDTO regDto : candidates){
                 Reference citation = publicationUnit(regDto);
-                if(citationId == null){
-                    citationId = citation.getId();
+                if(citationUuid == null){
+                    citationUuid = citation.getUuid();
                     citationString = citation.getTitleCache();
                 } else {
-                    if(citation.getId() != citationId.intValue()){
+                    if(!citation.getUuid().equals(citationUuid)){
                         problems.add("Removing Registration " + regDto.getSummary() + " from set since this refers to a different citationString.");
                         continue;
                     }
@@ -180,15 +181,15 @@ public class RegistrationWorkingSet {
         return registrationDTOs;
     }
 
-    public Optional<RegistrationDTO> getRegistrationDTO(int registrationId) {
-        return registrationDTOs.stream().filter(r -> r.getId() == registrationId).findFirst();
+    public Optional<RegistrationDTO> getRegistrationDTO(UUID registrationUuid) {
+        return registrationDTOs.stream().filter(r -> r.getUuid().equals(registrationUuid) ).findFirst();
     }
 
     /**
      * @return the citationId
      */
-    public Integer getCitationId() {
-        return citationId;
+    public UUID getCitationUuid() {
+        return citationUuid;
     }
 
     /**
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/security/PermissionDebugUtils.java b/src/main/java/eu/etaxonomy/cdm/vaadin/security/PermissionDebugUtils.java
index a96645ed..9a93ec49 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/security/PermissionDebugUtils.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/security/PermissionDebugUtils.java
@@ -10,6 +10,7 @@ package eu.etaxonomy.cdm.vaadin.security;
 
 import java.io.Serializable;
 import java.util.EnumSet;
+import java.util.UUID;
 
 import org.apache.log4j.Logger;
 import org.springframework.context.annotation.Profile;
@@ -65,11 +66,11 @@ public class PermissionDebugUtils implements Serializable {
      }
 
     public static Button addGainPerEntityPermissionButton(AbstractComponentContainer toContainer, Class<? extends CdmBase> cdmType,
-            Integer entitiyId, EnumSet<CRUD> crud, String property){
+            UUID entitiyUuid, EnumSet<CRUD> crud, String property){
 
         PermissionDebugUtils pu = PermissionDebugUtils.fromSession();
         if(pu != null){
-            Button button = pu.gainPerEntityPermissionButton(cdmType, entitiyId, crud, property);
+            Button button = pu.gainPerEntityPermissionButton(cdmType, entitiyUuid, crud, property);
             if(button != null){
                 toContainer.addComponent(button);
             }
@@ -78,10 +79,10 @@ public class PermissionDebugUtils implements Serializable {
         return null;
     }
 
-    public Button gainPerEntityPermissionButton(Class<? extends CdmBase> cdmType, Integer entitiyId, EnumSet<CRUD> crud, String property){
+    public Button gainPerEntityPermissionButton(Class<? extends CdmBase> cdmType, UUID entitiyUuid, EnumSet<CRUD> crud, String property){
 
        Button button = new Button(FontAwesome.BOLT);
-       button.addClickListener(e -> UserHelper.fromSession().createAuthorityFor(UserHelper.fromSession().userName(), cdmType, entitiyId, crud, property));
+       button.addClickListener(e -> UserHelper.fromSession().createAuthorityFor(UserHelper.fromSession().userName(), cdmType, entitiyUuid, crud, property));
        button.addStyleName(ValoTheme.BUTTON_DANGER);
        return button;
 
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/security/UserHelper.java b/src/main/java/eu/etaxonomy/cdm/vaadin/security/UserHelper.java
index c66d5e19..27a9d923 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/security/UserHelper.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/security/UserHelper.java
@@ -9,6 +9,7 @@
 package eu.etaxonomy.cdm.vaadin.security;
 
 import java.util.EnumSet;
+import java.util.UUID;
 
 import com.vaadin.server.VaadinSession;
 
@@ -41,6 +42,8 @@ public interface UserHelper {
 
     boolean userHasPermission(Class<? extends CdmBase> cdmType, Integer entitiyId, Object ... args);
 
+    boolean userHasPermission(Class<? extends CdmBase> cdmType, UUID entitiyUUID, Object ... args);
+
     boolean userHasPermission(Class<? extends CdmBase> cdmType, Object ... args);
 
     boolean userHasPermission(CdmBase entity, Object ... args);
@@ -80,6 +83,20 @@ public interface UserHelper {
      */
     public CdmAuthority createAuthorityFor(String username, Class<? extends CdmBase> cdmType, Integer entitiyId, EnumSet<CRUD> crud, String property);
 
+
+    /**
+    *
+    * @param username
+    * @param cdmType
+    * @param entitiyUuid
+    * @param crud
+    * @param property
+    * @return the newly created CdmAuthority only if a new CdmAuthority has been added to the user otherwise
+    * <code>null</code> in case the operation failed of if the user was already granted with this authority.
+    */
+   public CdmAuthority createAuthorityFor(String username, Class<? extends CdmBase> cdmType, UUID entitiyUuid, EnumSet<CRUD> crud, String property);
+
+
     /**
      * @param cdmType
      * @param entitiyId
@@ -89,6 +106,15 @@ public interface UserHelper {
      */
     public CdmAuthority createAuthorityForCurrentUser(Class<? extends CdmBase> cdmType, Integer entitiyId, EnumSet<CRUD> crud, String property);
 
+    /**
+     * @param cdmType
+     * @param entitiyUuid
+     * @param crud
+     * @return the newly created CdmAuthority only if a new CdmAuthority has been added to the user otherwise
+     * <code>null</code> in case the operation failed of if the user was already granted with this authority.
+     */
+    public CdmAuthority createAuthorityForCurrentUser(Class<? extends CdmBase> cdmType, UUID entitiyUuid, EnumSet<CRUD> crud, String property);
+
     /**
      * @param cdmType
      * @param entitiyId
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/util/converter/TypeDesignationSetManager.java b/src/main/java/eu/etaxonomy/cdm/vaadin/util/converter/TypeDesignationSetManager.java
index 74b41c0b..4340023e 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/util/converter/TypeDesignationSetManager.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/util/converter/TypeDesignationSetManager.java
@@ -112,7 +112,7 @@ public class TypeDesignationSetManager {
      */
     public TypeDesignationSetManager(TaxonName typifiedName) {
         this.typeDesignations = new ArrayList<>();
-        this.typifiedNameRef = new EntityReference(typifiedName.getId(), typifiedName.getTitleCache());
+        this.typifiedNameRef = new EntityReference(typifiedName.getUuid(), typifiedName.getTitleCache());
     }
 
     /**
@@ -155,7 +155,7 @@ public class TypeDesignationSetManager {
             final VersionableEntity baseEntity = baseEntity(td);
             final TypedEntityReference<VersionableEntity> baseEntityReference = makeEntityReference(baseEntity);
 
-            EntityReference typeDesignationEntityReference = new EntityReference(td.getId(), stringify(td));
+            EntityReference typeDesignationEntityReference = new EntityReference(td.getUuid(), stringify(td));
 
             TypeDesignationWorkingSet typedesignationWorkingSet;
             if(!byBaseEntityByTypeStatus.containsKey(baseEntityReference)){
@@ -211,7 +211,7 @@ public class TypeDesignationSetManager {
                 label = ((FieldUnit)baseEntity).getTitleCache();
         }
 
-        TypedEntityReference<VersionableEntity> baseEntityReference = new TypedEntityReference(baseEntity.getClass(), baseEntity.getId(), label);
+        TypedEntityReference<VersionableEntity> baseEntityReference = new TypedEntityReference(baseEntity.getClass(), baseEntity.getUuid(), label);
 
         return baseEntityReference;
     }
@@ -394,7 +394,7 @@ public class TypeDesignationSetManager {
             } else {
                 // compare
                 TaxonName otherTypifiedName = typeDesignation.getTypifiedNames().iterator().next();
-                if(typifiedName.getId() != otherTypifiedName.getId()){
+                if(!typifiedName.getUuid().equals(otherTypifiedName.getUuid())){
                   //TODO instead throw RegistrationValidationException()
                     problems.add("Multiple typifiedName in " + typeDesignation.toString());
                 }
@@ -409,7 +409,7 @@ public class TypeDesignationSetManager {
         if(typifiedName != null){
             // ON SUCCESS -------------------
             this.typifiedName = typifiedName;
-            this.typifiedNameRef = new EntityReference(typifiedName.getId(), typifiedName.getTitleCache());
+            this.typifiedNameRef = new EntityReference(typifiedName.getUuid(), typifiedName.getTitleCache());
 
         }
     }
@@ -446,7 +446,7 @@ public class TypeDesignationSetManager {
      */
     public TypeDesignationBase findTypeDesignation(EntityReference typeDesignationRef) {
         for(TypeDesignationBase td : typeDesignations){
-            if(td.getId() == typeDesignationRef.getId()){
+            if(td.getUuid().equals(typeDesignationRef.getUuid())){
                 return td;
             }
         }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/NameTypeDesignationPopupEditor.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/NameTypeDesignationPopupEditor.java
index 442fabaa..2cf07d21 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/NameTypeDesignationPopupEditor.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/NameTypeDesignationPopupEditor.java
@@ -145,7 +145,7 @@ public class NameTypeDesignationPopupEditor extends AbstractCdmPopupEditor<NameT
                 getViewEventBus().publish(this,
                     new TaxonNameEditorAction(
                             EditorActionType.EDIT,
-                            typeNameField.getValue().getId(),
+                            typeNameField.getValue().getUuid(),
                             typeNameField,
                             this)
                 );
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/NameTypeDesignationPresenter.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/NameTypeDesignationPresenter.java
index bddff6fa..254ded84 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/NameTypeDesignationPresenter.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/NameTypeDesignationPresenter.java
@@ -12,6 +12,7 @@ import java.util.Arrays;
 import java.util.EnumSet;
 import java.util.HashSet;
 import java.util.List;
+import java.util.UUID;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Scope;
@@ -71,11 +72,11 @@ public class NameTypeDesignationPresenter
         if(identifier instanceof Integer || identifier == null){
             return super.loadBeanById(identifier);
 //        } else if(identifier instanceof TypedEntityReference && ((TypedEntityReference)identifier).getType().equals(TaxonName.class)) {
-//            typifiedNameInContext = getRepo().getNameService().find(((TypedEntityReference)identifier).getId());
+//            typifiedNameInContext = getRepo().getNameService().find(((TypedEntityReference)identifier).getUuid());
 //            bean = super.loadBeanById(null);
         } else {
             TypeDesignationWorkingsetEditorIdSet idset = (TypeDesignationWorkingsetEditorIdSet)identifier;
-            RegistrationDTO regDTO = registrationWorkingSetService.loadDtoById(idset.registrationId);
+            RegistrationDTO regDTO = registrationWorkingSetService.loadDtoByUuid(idset.registrationUuid);
             typifiedNameInContext = regDTO.getTypifiedName();
             // find the working set
             TypeDesignationWorkingSet typeDesignationWorkingSet = regDTO.getTypeDesignationWorkingSet(idset.baseEntityRef);
@@ -85,8 +86,8 @@ public class NameTypeDesignationPresenter
                 throw new RuntimeException("TypeDesignationWorkingsetEditorIdSet references not a NameTypeDesignation");
             }
             // TypeDesignationWorkingSet for NameTyped only contain one item!!!
-            int nameTypeDesignationId = typeDesignationWorkingSet.getTypeDesignations().get(0).getId();
-            return super.loadBeanById(nameTypeDesignationId);
+            UUID nameTypeDesignationUuid = typeDesignationWorkingSet.getTypeDesignations().get(0).getUuid();
+            return super.loadBeanById(nameTypeDesignationUuid);
         }
     }
 
@@ -95,7 +96,7 @@ public class NameTypeDesignationPresenter
      * {@inheritDoc}
      */
     @Override
-    protected NameTypeDesignation loadCdmEntityById(Integer identifier) {
+    protected NameTypeDesignation loadCdmEntity(UUID uuid) {
         List<String> initStrategy = Arrays.asList(new String []{
                 "$",
                 "typifiedNames.typeDesignations", // important !!
@@ -105,8 +106,8 @@ public class NameTypeDesignationPresenter
         );
 
         NameTypeDesignation typeDesignation;
-        if(identifier != null){
-            typeDesignation = (NameTypeDesignation) getRepo().getNameService().loadTypeDesignation(identifier, initStrategy);
+        if(uuid != null){
+            typeDesignation = (NameTypeDesignation) getRepo().getNameService().loadTypeDesignation(uuid, initStrategy);
         } else {
             if(beanInstantiator != null){
                 typeDesignation = beanInstantiator.createNewBean();
@@ -153,7 +154,7 @@ public class NameTypeDesignationPresenter
      * {@inheritDoc}
      */
     @Override
-    protected void guaranteePerEntityCRUDPermissions(Integer identifier) {
+    protected void guaranteePerEntityCRUDPermissions(UUID identifier) {
         if(crud != null){
             newAuthorityCreated = UserHelper.fromSession().createAuthorityForCurrentUser(NameTypeDesignation.class, identifier, crud, null);
         }
@@ -251,7 +252,7 @@ public class NameTypeDesignationPresenter
         typeNamePopup.grantToCurrentUser(EnumSet.of(CRUD.UPDATE, CRUD.DELETE));
         typeNamePopup.withDeleteButton(true);
         // TODO configure Modes???
-        typeNamePopup.loadInEditor(action.getEntityId());
+        typeNamePopup.loadInEditor(action.getEntityUuid());
 
     }
 
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/SpecimenTypeDesignationWorkingsetEditorPresenter.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/SpecimenTypeDesignationWorkingsetEditorPresenter.java
index 2df6d8f5..c8c3f578 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/SpecimenTypeDesignationWorkingsetEditorPresenter.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/SpecimenTypeDesignationWorkingsetEditorPresenter.java
@@ -12,6 +12,7 @@ import java.util.Arrays;
 import java.util.EnumSet;
 import java.util.HashSet;
 import java.util.Set;
+import java.util.UUID;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Scope;
@@ -125,7 +126,7 @@ public class SpecimenTypeDesignationWorkingsetEditorPresenter
             TypeDesignationWorkingsetEditorIdSet idset = (TypeDesignationWorkingsetEditorIdSet)identifier;
 
             if(idset.baseEntityRef != null){
-                workingSetDto = specimenTypeDesignationWorkingSetService.loadDtoByIds(idset.registrationId, idset.baseEntityRef);
+                workingSetDto = specimenTypeDesignationWorkingSetService.load(idset.registrationUuid, idset.baseEntityRef);
                 if(workingSetDto.getFieldUnit() == null){
                     workingSetDto = specimenTypeDesignationWorkingSetService.fixMissingFieldUnit(workingSetDto);
                         // FIXME open Dialog to warn user about adding an empty fieldUnit to the typeDesignations
@@ -137,7 +138,7 @@ public class SpecimenTypeDesignationWorkingsetEditorPresenter
                 rootEntities.add(workingSetDto.getOwner());
             } else {
                 // create a new workingset, for a new fieldunit which is the base for the workingset
-                workingSetDto = specimenTypeDesignationWorkingSetService.create(idset.registrationId, idset.publicationId, idset.typifiedNameId);
+                workingSetDto = specimenTypeDesignationWorkingSetService.create(idset.registrationUuid, idset.publicationUuid, idset.typifiedNameUuid);
                 // need to use load but put see #7214
                 cache.load(workingSetDto.getOwner());
                 rootEntities.add(workingSetDto.getOwner());
@@ -205,7 +206,7 @@ public class SpecimenTypeDesignationWorkingsetEditorPresenter
                 row.collection.addClickListenerAddEntity(e -> doCollectionEditorAdd());
                 row.collection.addClickListenerEditEntity(e -> {
                         if(row.collection.getValue() != null){
-                            doCollectionEditorEdit(row.collection.getValue().getId());
+                            doCollectionEditorEdit(row.collection.getValue().getUuid());
                         }
                     });
 
@@ -222,7 +223,7 @@ public class SpecimenTypeDesignationWorkingsetEditorPresenter
                 row.mediaSpecimenReference.addClickListenerAddEntity(e -> doReferenceEditorAdd());
                 row.mediaSpecimenReference.addClickListenerEditEntity(e -> {
                     if(row.mediaSpecimenReference.getValue() != null){
-                        doReferenceEditorEdit(row.mediaSpecimenReference.getValue().getId());
+                        doReferenceEditorEdit(row.mediaSpecimenReference.getValue().getUuid());
                     }
                 });
 
@@ -312,13 +313,13 @@ public class SpecimenTypeDesignationWorkingsetEditorPresenter
         collectionPopupEditor.loadInEditor(null);
     }
 
-    public void doCollectionEditorEdit(int collectionId) {
+    public void doCollectionEditorEdit(UUID collectionUuid) {
 
         collectionPopupEditor = getNavigationManager().showInPopup(CollectionPopupEditor.class, getView());
 
         collectionPopupEditor.grantToCurrentUser(COLLECTION_EDITOR_CRUD);
         collectionPopupEditor.withDeleteButton(true);
-        collectionPopupEditor.loadInEditor(collectionId);
+        collectionPopupEditor.loadInEditor(collectionUuid);
     }
 
 
@@ -326,7 +327,7 @@ public class SpecimenTypeDesignationWorkingsetEditorPresenter
     public void onCollectionEvent(EntityChangeEvent event){
 
         Collection newCollection = getRepo().getCollectionService().load(
-                event.getEntityId(), Arrays.asList(new String[]{"$.institute"})
+                event.getEntityUuid(), Arrays.asList(new String[]{"$.institute"})
                 );
         cache.load(newCollection);
 
@@ -346,19 +347,19 @@ public class SpecimenTypeDesignationWorkingsetEditorPresenter
         referencePopupEditor.loadInEditor(null);
     }
 
-    public void doReferenceEditorEdit(int referenceId) {
+    public void doReferenceEditorEdit(UUID referenceUuid) {
 
         referencePopupEditor = getNavigationManager().showInPopup(ReferencePopupEditor.class, getView());
         referencePopupEditor.withReferenceTypes(RegistrationUIDefaults.MEDIA_REFERENCE_TYPES);
         referencePopupEditor.grantToCurrentUser(COLLECTION_EDITOR_CRUD);
         referencePopupEditor.withDeleteButton(true);
-        referencePopupEditor.loadInEditor(referenceId);
+        referencePopupEditor.loadInEditor(referenceUuid);
     }
 
     @EventBusListenerMethod(filter = EntityChangeEventFilter.ReferenceFilter.class)
     public void onReferenceEvent(EntityChangeEvent event){
 
-        Reference newRef = getRepo().getReferenceService().load(event.getEntityId(), Arrays.asList(new String[]{"$"}));
+        Reference newRef = getRepo().getReferenceService().load(event.getEntityUuid(), Arrays.asList(new String[]{"$"}));
         cache.load(newRef);
 
         for( CollectionRowItemCollection row : collectionPopuEditorSourceRows) {
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNameEditorPresenter.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNameEditorPresenter.java
index 60704927..cb2b2bd2 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNameEditorPresenter.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNameEditorPresenter.java
@@ -13,6 +13,7 @@ import java.util.EnumSet;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
+import java.util.UUID;
 
 import org.apache.log4j.Logger;
 import org.hibernate.criterion.Restrictions;
@@ -135,7 +136,7 @@ public class TaxonNameEditorPresenter extends AbstractCdmEditorPresenter<TaxonNa
      * {@inheritDoc}
      */
     @Override
-    protected TaxonName loadCdmEntityById(Integer identifier) {
+    protected TaxonName loadCdmEntity(UUID identifier) {
 
         List<String> initStrategy = Arrays.asList(new String []{
 
@@ -216,7 +217,7 @@ public class TaxonNameEditorPresenter extends AbstractCdmEditorPresenter<TaxonNa
      * {@inheritDoc}
      */
     @Override
-    protected void guaranteePerEntityCRUDPermissions(Integer identifier) {
+    protected void guaranteePerEntityCRUDPermissions(UUID identifier) {
         if(crud != null){
             newAuthorityCreated = UserHelper.fromSession().createAuthorityForCurrentUser(TaxonName.class, identifier, crud, null);
         }
@@ -316,7 +317,7 @@ public class TaxonNameEditorPresenter extends AbstractCdmEditorPresenter<TaxonNa
         referenceEditorPopup.grantToCurrentUser(EnumSet.of(CRUD.UPDATE, CRUD.DELETE));
         referenceEditorPopup.withDeleteButton(true);
         referenceEditorPopup.setBeanInstantiator(newReferenceInstantiator);
-        referenceEditorPopup.loadInEditor(event.getEntityId());
+        referenceEditorPopup.loadInEditor(event.getEntityUuid());
         if(newReferenceInstantiator != null){
             // this is a bit clumsy, we actually need to inject something like a view configurer
             // which can enable, disable fields
@@ -375,7 +376,7 @@ public class TaxonNameEditorPresenter extends AbstractCdmEditorPresenter<TaxonNa
                 .filter(
                         m -> !TaxonNamePopupEditorMode.NOMENCLATURALREFERENCE_SECTION_EDITING_ONLY.equals(m))
                 .forEach(m -> basionymNamePopup.enableMode(m));
-        basionymNamePopup.loadInEditor(event.getEntityId());
+        basionymNamePopup.loadInEditor(event.getEntityUuid());
         basionymNamePopup.getBasionymToggle().setVisible(false);
 
     }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNamePopupEditor.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNamePopupEditor.java
index 96a3f722..2ab8629a 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNamePopupEditor.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TaxonNamePopupEditor.java
@@ -13,6 +13,7 @@ import java.util.EnumSet;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
 
 import org.apache.commons.lang3.BooleanUtils;
 import org.apache.log4j.Level;
@@ -282,7 +283,7 @@ public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonName, Taxo
                 getViewEventBus().publish(this,
                     new ReferenceEditorAction(
                             EditorActionType.EDIT,
-                            nomReferenceCombobox.getValue().getId(),
+                            nomReferenceCombobox.getValue().getUuid(),
                             nomReferenceCombobox,
                             this)
                 );
@@ -318,12 +319,12 @@ public class TaxonNamePopupEditor extends AbstractCdmPopupEditor<TaxonName, Taxo
         basionymsComboboxSelect.setEditActionListener(e -> {
 
             Object fieldValue = e.getSource().getValue();
-            Integer beanId = null;
+            UUID beanUuid = null;
             if(fieldValue != null){
-                beanId = ((CdmBase)fieldValue).getId();
+                beanUuid = ((CdmBase)fieldValue).getUuid();
 
             }
-            getViewEventBus().publish(this, new TaxonNameEditorAction(e.getAction(), beanId, e.getSource(), this));
+            getViewEventBus().publish(this, new TaxonNameEditorAction(e.getAction(), beanUuid, e.getSource(), this));
         });
         grid.setComponentAlignment(basionymsComboboxSelect, Alignment.TOP_RIGHT);
         row++;
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TypeDesignationWorkingsetEditorIdSet.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TypeDesignationWorkingsetEditorIdSet.java
index 00f2f415..64355e56 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TypeDesignationWorkingsetEditorIdSet.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/name/TypeDesignationWorkingsetEditorIdSet.java
@@ -8,45 +8,44 @@
 */
 package eu.etaxonomy.cdm.vaadin.view.name;
 
+import java.util.UUID;
+
 import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
 import eu.etaxonomy.cdm.vaadin.model.TypedEntityReference;
 
 public class TypeDesignationWorkingsetEditorIdSet {
 
-    Integer registrationId;
+    UUID registrationUuid;
     TypedEntityReference<IdentifiableEntity<?>> baseEntityRef;
-    Integer publicationId;
-    Integer typifiedNameId;
+    UUID publicationUuid;
+    UUID typifiedNameUuid;
 
     /**
-     * @param registrationId
+     * @param registrationUuid
      *            must be present
-     * @param workingsetId
-     *            can <code>null</code>. In this case the <code>publicationId</code>
-     *            and and typifiedNameId must be set.
-     *            <code>RegistrationAndWorkingsetId</code> refers to a not yet
-     *            existing working set, which should be created by the code in
-     *            case this makes sense.
-     * @param publicationId
-     *            Can <code>null</code> if the <code>workingsetId</code> is given.
-     * @param typifiedNameId
+     * @param baseEntityRef
+     *
+     * @param publicationUuid
+     *            Can <code>null</code> if the <code>workingsetID</code> is given.
+     * @param typifiedNameUuid
      *            Can <code>null</code> if the <code>workingsetId</code> is given
      */
-    protected TypeDesignationWorkingsetEditorIdSet(Integer registrationId, TypedEntityReference<IdentifiableEntity<?>> baseEntityRef, Integer publicationId, Integer typifiedNameId) {
-        this.registrationId = registrationId;
+    protected TypeDesignationWorkingsetEditorIdSet(UUID registrationUuid, TypedEntityReference<IdentifiableEntity<?>> baseEntityRef,
+            UUID publicationUuid, UUID typifiedNameUuid) {
+        this.registrationUuid = registrationUuid;
         this.baseEntityRef = baseEntityRef;
-        this.publicationId = publicationId;
-        this.typifiedNameId = typifiedNameId;
-        if(baseEntityRef == null && publicationId == null|| baseEntityRef == null && typifiedNameId == null){
+        this.publicationUuid = publicationUuid;
+        this.typifiedNameUuid = typifiedNameUuid;
+        if(baseEntityRef == null && publicationUuid == null|| baseEntityRef == null && typifiedNameUuid == null){
             throw new NullPointerException("When workingsetId is null, publicationId and typifiedNameId must be non null.");
         }
     }
 
-    public TypeDesignationWorkingsetEditorIdSet(Integer registrationId, TypedEntityReference<IdentifiableEntity<?>> baseEntityRef) {
-        this(registrationId, baseEntityRef, null, null);
+    public TypeDesignationWorkingsetEditorIdSet(UUID registrationUuid, TypedEntityReference<IdentifiableEntity<?>> baseEntityRef) {
+        this(registrationUuid, baseEntityRef, null, null);
     }
 
-    public TypeDesignationWorkingsetEditorIdSet(Integer registrationId, Integer publicationId, Integer typifiedNameId) {
-        this(registrationId, null, publicationId, typifiedNameId);
+    public TypeDesignationWorkingsetEditorIdSet(UUID registrationUuid, UUID publicationUuid, UUID typifiedNameUuid) {
+        this(registrationUuid, null, publicationUuid, typifiedNameUuid);
     }
 }
\ No newline at end of file
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/occurrence/CollectionEditorPresenter.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/occurrence/CollectionEditorPresenter.java
index ed2c7998..9ac77221 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/occurrence/CollectionEditorPresenter.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/occurrence/CollectionEditorPresenter.java
@@ -10,6 +10,7 @@ package eu.etaxonomy.cdm.vaadin.view.occurrence;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.UUID;
 
 import org.springframework.context.annotation.Scope;
 import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -43,7 +44,7 @@ public class CollectionEditorPresenter extends AbstractCdmEditorPresenter<Collec
      * {@inheritDoc}
      */
     @Override
-    protected Collection loadCdmEntityById(Integer identifier) {
+    protected Collection loadCdmEntity(UUID identifier) {
 
         List<String> initStrategy = Arrays.asList(new String []{
 
@@ -66,7 +67,7 @@ public class CollectionEditorPresenter extends AbstractCdmEditorPresenter<Collec
      * {@inheritDoc}
      */
     @Override
-    protected void guaranteePerEntityCRUDPermissions(Integer identifier) {
+    protected void guaranteePerEntityCRUDPermissions(UUID identifier) {
         if(crud != null){
             newAuthorityCreated = UserHelper.fromSession().createAuthorityForCurrentUser(Collection.class, identifier, crud, null);
         }
@@ -130,7 +131,7 @@ public class CollectionEditorPresenter extends AbstractCdmEditorPresenter<Collec
 
         collectionPopuEditor.grantToCurrentUser(this.crud);
         collectionPopuEditor.withDeleteButton(true);
-        collectionPopuEditor.loadInEditor(event.getEntityId());
+        collectionPopuEditor.loadInEditor(event.getEntityUuid());
     }
 
     @EventBusListenerMethod()
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/occurrence/CollectionPopupEditor.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/occurrence/CollectionPopupEditor.java
index 2549d1e2..68c33d78 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/occurrence/CollectionPopupEditor.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/occurrence/CollectionPopupEditor.java
@@ -145,7 +145,7 @@ public class CollectionPopupEditor extends AbstractCdmPopupEditor<Collection, Co
                 getViewEventBus().publish(this,
                     new CollectionEditorAction(
                             EditorActionType.EDIT,
-                            superCollectionCombobox.getValue().getId(),
+                            superCollectionCombobox.getValue().getUuid(),
                             superCollectionCombobox,
                             this)
                 );
@@ -173,7 +173,7 @@ public class CollectionPopupEditor extends AbstractCdmPopupEditor<Collection, Co
                     getViewEventBus().publish(this,
                             new CollectionEditorAction(
                                 EditorActionType.EDIT,
-                                superCollectionCombobox.getValue().getId(),
+                                superCollectionCombobox.getValue().getUuid(),
                                 superCollectionCombobox,
                                 this
                             )
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/reference/ReferenceEditorPresenter.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/reference/ReferenceEditorPresenter.java
index 0ff1a256..22c68c54 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/reference/ReferenceEditorPresenter.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/reference/ReferenceEditorPresenter.java
@@ -10,6 +10,7 @@ package eu.etaxonomy.cdm.vaadin.view.reference;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.UUID;
 
 import org.apache.log4j.Logger;
 import org.springframework.context.annotation.Scope;
@@ -84,7 +85,7 @@ public class ReferenceEditorPresenter extends AbstractCdmEditorPresenter<Referen
      * {@inheritDoc}
      */
     @Override
-    protected Reference loadCdmEntityById(Integer identifier) {
+    protected Reference loadCdmEntity(UUID identifier) {
 
         List<String> initStrategy = Arrays.asList(new String []{
 
@@ -117,7 +118,7 @@ public class ReferenceEditorPresenter extends AbstractCdmEditorPresenter<Referen
      * {@inheritDoc}
      */
     @Override
-    protected void guaranteePerEntityCRUDPermissions(Integer identifier) {
+    protected void guaranteePerEntityCRUDPermissions(UUID identifier) {
         if(crud != null){
             newAuthorityCreated = UserHelper.fromSession().createAuthorityForCurrentUser(Reference.class, identifier, crud, null);
         }
@@ -154,7 +155,7 @@ public class ReferenceEditorPresenter extends AbstractCdmEditorPresenter<Referen
            if(editorAction.isEditAction()){
                inReferencePopup = getNavigationManager().showInPopup(ReferencePopupEditor.class, getView());
                inReferencePopup.withDeleteButton(true);
-               inReferencePopup.loadInEditor(editorAction.getEntityId());
+               inReferencePopup.loadInEditor(editorAction.getEntityUuid());
            }
        }
    }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/reference/ReferencePopupEditor.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/reference/ReferencePopupEditor.java
index 757410f3..1f429748 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/reference/ReferencePopupEditor.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/reference/ReferencePopupEditor.java
@@ -140,7 +140,7 @@ public class ReferencePopupEditor extends AbstractCdmPopupEditor<Reference, Refe
                 getViewEventBus().publish(this,
                     new ReferenceEditorAction(
                             EditorActionType.EDIT,
-                            inReferenceCombobox.getValue().getId(),
+                            inReferenceCombobox.getValue().getUuid(),
                             inReferenceCombobox,
                             this)
                 );
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/ListPresenter.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/ListPresenter.java
index bee7f471..5321bd56 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/ListPresenter.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/ListPresenter.java
@@ -10,6 +10,7 @@ package eu.etaxonomy.cdm.vaadin.view.registration;
 
 import java.util.EnumSet;
 import java.util.Set;
+import java.util.UUID;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -133,24 +134,24 @@ public class ListPresenter extends AbstractPresenter<ListView> {
     }
 
     @EventBusListenerMethod
-    public void onShowDetailsEvent(ShowDetailsEvent<RegistrationDTO, Integer> event) {
+    public void onShowDetailsEvent(ShowDetailsEvent<RegistrationDTO, UUID> event) {
 
         // FIXME check from own view!!!
         if(getView() == null){
             return;
         }
 
-        Integer registrationId = event.getIdentifier();
+        UUID registrationUuid = event.getIdentifier();
 
-        RegistrationDTO regDto = getWorkingSetService().loadDtoById(registrationId);
+        RegistrationDTO regDto = getWorkingSetService().loadDtoByUuid(registrationUuid);
         if(event.getProperty().equals("messages")){
 
             getView().openDetailsPopup("Messages", regDto.getValidationProblems());
 
         } else if(event.getProperty().equals("blockedBy")){
 
-            Set<RegistrationDTO> blockingRegs = getWorkingSetService().loadBlockingRegistrations(registrationId);
-            RegistrationItem regItem = getView().getRegistrationItem(registrationId);
+            Set<RegistrationDTO> blockingRegs = getWorkingSetService().loadBlockingRegistrations(registrationUuid);
+            RegistrationItem regItem = getView().getRegistrationItem(registrationUuid);
             regItem.showBlockingRegistrations(blockingRegs);
         }
 
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/ListView.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/ListView.java
index af211d6f..a25c0232 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/ListView.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/ListView.java
@@ -9,6 +9,7 @@
 package eu.etaxonomy.cdm.vaadin.view.registration;
 
 import java.util.List;
+import java.util.UUID;
 
 import com.vaadin.ui.ListSelect;
 import com.vaadin.ui.TextField;
@@ -74,7 +75,7 @@ public interface ListView extends ApplicationView<ListPresenter>{
      */
     Mode getViewMode();
 
-    public RegistrationItem getRegistrationItem(int registrationId);
+    public RegistrationItem getRegistrationItem(UUID registrationUuid);
 
 
 }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/ListViewBean.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/ListViewBean.java
index 8e4c3f71..0323e3bd 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/ListViewBean.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/ListViewBean.java
@@ -12,6 +12,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
+import java.util.UUID;
 
 import org.springframework.security.core.GrantedAuthority;
 
@@ -162,8 +163,8 @@ public class ListViewBean extends AbstractPageView<ListPresenter> implements Lis
             item.setWidth(100, Unit.PERCENTAGE);
             item.getBlockedByButton().addClickListener(e -> getViewEventBus().publish(
                     this,
-                    new ShowDetailsEvent<Registration, Integer>(
-                            e, Registration.class, regDto.getId(), "blockedBy"
+                    new ShowDetailsEvent<Registration, UUID>(
+                            e, Registration.class, regDto.getUuid(), "blockedBy"
                             )
                     ));
             listContainer.addComponent(item);
@@ -274,10 +275,11 @@ public class ListViewBean extends AbstractPageView<ListPresenter> implements Lis
         return viewMode;
     }
 
-    public RegistrationItem getRegistrationItem(int registrationId){
+    @Override
+    public RegistrationItem getRegistrationItem(UUID registrationUuid){
         for(Component c : listContainer){
             RegistrationItem item = (RegistrationItem)c;
-            if(registrationId == item.getRegistrationId()){
+            if(registrationUuid.equals(item.getRegistrationUuid())){
                 return item;
             }
 
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationDTO.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationDTO.java
index a330061e..484cc327 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationDTO.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationDTO.java
@@ -79,7 +79,7 @@ public class RegistrationDTO{
         if(hasName(reg)){
             citation = (Reference) reg.getName().getNomenclaturalReference();
             citationDetail = reg.getName().getNomenclaturalMicroReference();
-            name = new EntityReference(reg.getName().getId(), reg.getName().getTitleCache());
+            name = new EntityReference(reg.getName().getUuid(), reg.getName().getTitleCache());
         }
         if(hasTypifications(reg)){
             if(!reg.getTypeDesignations().isEmpty()){
@@ -192,15 +192,6 @@ public class RegistrationDTO{
     }
 
 
-    /**
-     * The entity ID of the Registration Item
-     * @return
-     */
-    public int getId() {
-        return reg.getId();
-    }
-
-
     public UUID getUuid() {
         return reg.getUuid();
     }
@@ -245,11 +236,9 @@ public class RegistrationDTO{
         }
     }
 
-    /**
-     * @return the citationID
-     */
-    public Integer getCitationID() {
-        return citation == null ? null : citation.getId();
+
+    public UUID getCitationUuid() {
+        return citation == null ? null : citation.getUuid();
     }
 
     public EntityReference getTypifiedNameRef() {
@@ -372,7 +361,7 @@ public class RegistrationDTO{
             blockedBy = new HashSet<>();
             if(reg.getBlockedBy() != null){
                 for(Registration blockReg : reg.getBlockedBy()){
-                    blockedBy.add(new TypedEntityReference<Registration>(Registration.class, blockReg.getId(), blockReg.getIdentifier()));
+                    blockedBy.add(new TypedEntityReference<Registration>(Registration.class, blockReg.getUuid(), blockReg.getIdentifier()));
                 }
             }
         }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationEditorPresenter.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationEditorPresenter.java
index a2f7d081..5d08f958 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationEditorPresenter.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationEditorPresenter.java
@@ -10,6 +10,7 @@ package eu.etaxonomy.cdm.vaadin.view.registration;
 
 import java.util.Arrays;
 import java.util.List;
+import java.util.UUID;
 
 import org.springframework.context.annotation.Scope;
 
@@ -46,7 +47,7 @@ public class RegistrationEditorPresenter extends AbstractCdmEditorPresenter<Regi
      * {@inheritDoc}
      */
     @Override
-    protected Registration loadCdmEntityById(Integer identifier) {
+    protected Registration loadCdmEntity(UUID identifier) {
 
         Registration reg;
         if(identifier != null){
@@ -62,7 +63,7 @@ public class RegistrationEditorPresenter extends AbstractCdmEditorPresenter<Regi
      * {@inheritDoc}
      */
     @Override
-    protected void guaranteePerEntityCRUDPermissions(Integer identifier) {
+    protected void guaranteePerEntityCRUDPermissions(UUID identifier) {
         if(crud != null){
             newAuthorityCreated = UserHelper.fromSession().createAuthorityForCurrentUser(Registration.class, identifier, crud, null);
         }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationMessagesPopup.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationMessagesPopup.java
index 7e2531cd..0dc105bb 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationMessagesPopup.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationMessagesPopup.java
@@ -11,6 +11,7 @@ package eu.etaxonomy.cdm.vaadin.view.registration;
 import java.text.SimpleDateFormat;
 import java.util.Collection;
 import java.util.List;
+import java.util.UUID;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.context.annotation.Scope;
@@ -166,8 +167,8 @@ public class RegistrationMessagesPopup extends AbstractPopupView<RegistrationMes
     /**
      * @param identifier
      */
-    public void loadMessagesFor(Integer registrationEntityId) {
-        getPresenter().loadMessagesFor(registrationEntityId);
+    public void loadMessagesFor(UUID registrationEntityUuid) {
+        getPresenter().loadMessagesFor(registrationEntityUuid);
 
     }
 
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationMessagesPresenter.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationMessagesPresenter.java
index 33494aef..5d69abd6 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationMessagesPresenter.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationMessagesPresenter.java
@@ -11,6 +11,7 @@ package eu.etaxonomy.cdm.vaadin.view.registration;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Stack;
+import java.util.UUID;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Scope;
@@ -56,9 +57,9 @@ public class RegistrationMessagesPresenter extends AbstractPresenter<Registratio
     /**
      * @param identifier
      */
-    public void loadMessagesFor(Integer id) {
+    public void loadMessagesFor(UUID uuid) {
         if(registration == null){
-            registration = registrationService.load(id, Arrays.asList("submitter"));
+            registration = registrationService.load(uuid, Arrays.asList("submitter"));
         }
         try {
             List<Message> messages = messageService.listMessages(registration);
@@ -99,7 +100,7 @@ public class RegistrationMessagesPresenter extends AbstractPresenter<Registratio
         }
         try {
             messageService.postMessage(registration, message, user, toUser);
-            loadMessagesFor(registration.getId());
+            loadMessagesFor(registration.getUuid());
         } catch (ExternalServiceException e) {
             logger.error(e);
             throw new RuntimeException(e);
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorkingsetPresenter.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorkingsetPresenter.java
index be7600c2..803bf81e 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorkingsetPresenter.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorkingsetPresenter.java
@@ -150,7 +150,7 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
      * @param taxonNameId
      * @return
      */
-    protected Registration createNewRegistrationForName(Integer taxonNameId) {
+    protected Registration createNewRegistrationForName(UUID taxonNameUuid) {
         // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         // move into RegistrationWorkflowStateMachine
         TransactionStatus txStatus = getRepo().startTransaction();
@@ -162,15 +162,15 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
         Registration reg = Registration.NewInstance(
                 identifiers.getIdentifier(),
                 identifiers.getLocalId(),
-                taxonNameId != null ? getRepo().getNameService().find(taxonNameId) : null,
+                taxonNameUuid != null ? getRepo().getNameService().find(taxonNameUuid) : null,
                 null);
         Authentication authentication = currentSecurityContext().getAuthentication();
         reg.setSubmitter((User)authentication.getPrincipal());
         EntityChangeEvent event = getRegistrationStore().saveBean(reg, (AbstractView) getView());
-        UserHelper.fromSession().createAuthorityForCurrentUser(Registration.class, event.getEntityId(), Operation.UPDATE, RegistrationStatus.PREPARATION.name());
+        UserHelper.fromSession().createAuthorityForCurrentUser(Registration.class, event.getEntityUuid(), Operation.UPDATE, RegistrationStatus.PREPARATION.name());
         getRepo().commitTransaction(txStatus);
         // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-        return getRepo().getRegistrationService().load(event.getEntityId(), Arrays.asList(new String []{"blockedBy"}));
+        return getRepo().getRegistrationService().load(event.getEntityUuid(), Arrays.asList(new String []{"blockedBy"}));
     }
 
 
@@ -183,7 +183,7 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
             return; // nothing to do
         }
         if(doReload){
-            loadWorkingSet(workingset.getCitationId());
+            loadWorkingSet(workingset.getCitationUuid());
         }
         getView().setWorkingset(workingset);
     }
@@ -197,7 +197,7 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
 
         super.handleViewEntered();
 
-        loadWorkingSet(getView().getCitationID());
+        loadWorkingSet(getView().getCitationUuid());
         getView().setWorkingset(workingset);
 
         // PagingProviders and CacheGenerator for the existingNameCombobox
@@ -209,10 +209,10 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
 
         // update the messages
         User user = UserHelper.fromSession().user();
-        for (Integer registrationId : getView().getRegistrationItemMap().keySet()) {
-            Button messageButton = getView().getRegistrationItemMap().get(registrationId).regItemButtons.getMessagesButton();
+        for (UUID registrationUuid : getView().getRegistrationItemMap().keySet()) {
+            Button messageButton = getView().getRegistrationItemMap().get(registrationUuid).regItemButtons.getMessagesButton();
 
-            RegistrationDTO regDto = workingset.getRegistrationDTO(registrationId).get();
+            RegistrationDTO regDto = workingset.getRegistrationDTO(registrationUuid).get();
             try {
                 int messageCount = messageService.countActiveMessagesFor(regDto.registration(), user);
 
@@ -248,9 +248,9 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
     /**
      * @param referenceID
      */
-    protected void loadWorkingSet(Integer referenceID) {
+    protected void loadWorkingSet(UUID referenceUuid) {
         try {
-            workingset = getWorkingSetService().loadWorkingSetByReferenceID(referenceID);
+            workingset = getWorkingSetService().loadWorkingSetByReferenceUuid(referenceUuid);
         } catch (RegistrationValidationException error) {
             logger.error(error);
             Window errorDialog = new Window("Validation Error");
@@ -261,8 +261,8 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
             subContent.addComponent(new Label(error.getMessage()));
             UI.getCurrent().addWindow(errorDialog);
         }
-        if(workingset == null || workingset.getCitationId() == null){
-            Reference citation = getRepo().getReferenceService().find(referenceID);
+        if(workingset == null || workingset.getCitationUuid() == null){
+            Reference citation = getRepo().getReferenceService().find(referenceUuid);
             workingset = new RegistrationWorkingSet(citation);
         }
     }
@@ -289,7 +289,7 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
         ReferencePopupEditor popup = getNavigationManager().showInPopup(ReferencePopupEditor.class, getView());
         popup.withReferenceTypes(RegistrationUIDefaults.PRINTPUB_REFERENCE_TYPES);
         popup.withDeleteButton(true);
-        popup.loadInEditor(event.getEntityId());
+        popup.loadInEditor(event.getEntityUuid());
     }
 
     @EventBusListenerMethod
@@ -318,7 +318,7 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
         }
 
         RegistrationPopupEditor popup = getNavigationManager().showInPopup(RegistrationPopupEditor.class, getView());
-        popup.loadInEditor(event.getEntityId());
+        popup.loadInEditor(event.getEntityUuid());
     }
 
     @EventBusListenerMethod(filter = EditorActionTypeFilter.Edit.class)
@@ -332,7 +332,7 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
         popup.setParentEditorActionContext(event.getContext());
         popup.withDeleteButton(true);
         configureTaxonNameEditor(popup);
-        popup.loadInEditor(event.getEntityId());
+        popup.loadInEditor(event.getEntityUuid());
         if(event.getSourceComponent() != null){
             popup.setReadOnly(event.getSourceComponent().isReadOnly());
         }
@@ -348,15 +348,15 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
         }
 
         newTaxonNameForRegistration = TaxonNameFactory.NewNameInstance(RegistrationUIDefaults.NOMENCLATURAL_CODE, Rank.SPECIES());
-        newTaxonNameForRegistration.setNomenclaturalReference(getRepo().getReferenceService().find(workingset.getCitationId()));
+        newTaxonNameForRegistration.setNomenclaturalReference(getRepo().getReferenceService().find(workingset.getCitationUuid()));
         EntityChangeEvent nameSaveEvent = getTaxonNameStore().saveBean(newTaxonNameForRegistration, (AbstractView) getView());
-        newTaxonNameForRegistration = getRepo().getNameService().find(nameSaveEvent.getEntityId());
+        newTaxonNameForRegistration = getRepo().getNameService().find(nameSaveEvent.getEntityUuid());
         TaxonNamePopupEditor popup = getNavigationManager().showInPopup(TaxonNamePopupEditor.class, getView());
         popup.setParentEditorActionContext(event.getContext());
         popup.grantToCurrentUser(EnumSet.of(CRUD.UPDATE,CRUD.DELETE));
         popup.withDeleteButton(true);
         configureTaxonNameEditor(popup);
-        popup.loadInEditor(newTaxonNameForRegistration.getId());
+        popup.loadInEditor(newTaxonNameForRegistration.getUuid());
     }
 
     /**
@@ -389,11 +389,11 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
             TransactionStatus txStatus = getRepo().startTransaction();
             if(event.getReason().equals(Reason.SAVE)){
                 if(newTaxonNameForRegistration != null){
-                    int taxonNameId = newTaxonNameForRegistration.getId();
+                    UUID taxonNameUuid = newTaxonNameForRegistration.getUuid();
                     getRepo().getSession().refresh(newTaxonNameForRegistration);
-                    Registration reg = createNewRegistrationForName(taxonNameId);
+                    Registration reg = createNewRegistrationForName(taxonNameUuid);
                     // reload workingset into current session
-                    loadWorkingSet(workingset.getCitationId());
+                    loadWorkingSet(workingset.getCitationUuid());
                     workingset.add(reg);
                 }
                 refreshView(true);
@@ -426,7 +426,7 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
         TaxonName typifiedName = getView().getAddExistingNameCombobox().getValue();
         if(typifiedName != null){
             Registration newRegistrationWithExistingName = createNewRegistrationForName(null);
-            Reference citation = getRepo().getReferenceService().find(workingset.getCitationId());
+            Reference citation = getRepo().getReferenceService().find(workingset.getCitationUuid());
             newRegistrationDTOWithExistingName = new RegistrationDTO(newRegistrationWithExistingName, typifiedName, citation);
             workingset.add(newRegistrationDTOWithExistingName);
             // tell the view to update the workingset
@@ -451,7 +451,7 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
             SpecimenTypeDesignationWorkingsetPopupEditor popup = getNavigationManager().showInPopup(SpecimenTypeDesignationWorkingsetPopupEditor.class, getView());
             popup.setParentEditorActionContext(event.getContext());
             popup.withDeleteButton(true);
-            popup.loadInEditor(new TypeDesignationWorkingsetEditorIdSet(event.getRegistrationId(), event.getBaseEntityRef()));
+            popup.loadInEditor(new TypeDesignationWorkingsetEditorIdSet(event.getRegistrationUuid(), event.getBaseEntityRef()));
             if(event.getSourceComponent() != null){
                 // propagate readonly state from source component to popup
                 popup.setReadOnly(event.getSourceComponent().isReadOnly());
@@ -460,7 +460,7 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
             NameTypeDesignationPopupEditor popup = getNavigationManager().showInPopup(NameTypeDesignationPopupEditor.class, getView());
             popup.setParentEditorActionContext(event.getContext());
             popup.withDeleteButton(true);
-            popup.loadInEditor(new TypeDesignationWorkingsetEditorIdSet(event.getRegistrationId(), event.getBaseEntityRef()));
+            popup.loadInEditor(new TypeDesignationWorkingsetEditorIdSet(event.getRegistrationUuid(), event.getBaseEntityRef()));
 
             popup.getCitationCombobox().setEnabled(false);
             popup.getTypifiedNamesComboboxSelect().setEnabled(false);
@@ -469,7 +469,7 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
                 // propagate readonly state from source component to popup
                 popup.setReadOnly(event.getSourceComponent().isReadOnly());
             }
-            newNameTypeDesignationTarget = workingset.getRegistrationDTO(event.getRegistrationId()).get();
+            newNameTypeDesignationTarget = workingset.getRegistrationDTO(event.getRegistrationUuid()).get();
         }
     }
 
@@ -484,24 +484,24 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
             SpecimenTypeDesignationWorkingsetPopupEditor popup = getNavigationManager().showInPopup(SpecimenTypeDesignationWorkingsetPopupEditor.class, getView());
             popup.setParentEditorActionContext(event.getContext());
             TypeDesignationWorkingsetEditorIdSet identifierSet;
-            Integer typifiedNameId;
+            UUID typifiedNameUuid;
             if(newRegistrationDTOWithExistingName != null){
-                typifiedNameId = newRegistrationDTOWithExistingName.getTypifiedNameRef().getId();
+                typifiedNameUuid = newRegistrationDTOWithExistingName.getTypifiedNameRef().getUuid();
             } else {
-                RegistrationDTO registrationDTO = workingset.getRegistrationDTO(event.getRegistrationId()).get();
+                RegistrationDTO registrationDTO = workingset.getRegistrationDTO(event.getRegistrationUuid()).get();
                 EntityReference typifiedNameRef = registrationDTO.getTypifiedNameRef();
                 if(typifiedNameRef != null){
                     // case for registrations without name, in which case the typifiedName is only defined via the typedesignations
-                    typifiedNameId = typifiedNameRef.getId();
+                    typifiedNameUuid = typifiedNameRef.getUuid();
                 } else {
                     // case of registrations with a name in the nomenclatural act.
-                    typifiedNameId = registrationDTO.getNameRef().getId();
+                    typifiedNameUuid = registrationDTO.getNameRef().getUuid();
                 }
             }
             identifierSet = new TypeDesignationWorkingsetEditorIdSet(
-                    event.getRegistrationId(),
-                    getView().getCitationID(),
-                    typifiedNameId
+                    event.getRegistrationUuid(),
+                    getView().getCitationUuid(),
+                    typifiedNameUuid
                     );
             popup.grantToCurrentUser(EnumSet.of(CRUD.UPDATE, CRUD.DELETE));
             popup.loadInEditor(identifierSet);
@@ -515,13 +515,13 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
             popup.setParentEditorActionContext(event.getContext());
             popup.withDeleteButton(true);
             popup.grantToCurrentUser(EnumSet.of(CRUD.UPDATE, CRUD.DELETE));
-            newNameTypeDesignationTarget = workingset.getRegistrationDTO(event.getRegistrationId()).get();
+            newNameTypeDesignationTarget = workingset.getRegistrationDTO(event.getRegistrationUuid()).get();
             popup.setBeanInstantiator(new BeanInstantiator<NameTypeDesignation>() {
 
                 @Override
                 public NameTypeDesignation createNewBean() {
 
-                    TaxonName typifiedName = getRepo().getNameService().load(event.getTypifiedNameId(), Arrays.asList(new String[]{"typeDesignations", "homotypicalGroup"}));
+                    TaxonName typifiedName = getRepo().getNameService().load(event.getTypifiedNameUuid(), Arrays.asList(new String[]{"typeDesignations", "homotypicalGroup"}));
                     NameTypeDesignation nameTypeDesignation  = NameTypeDesignation.NewInstance();
                     nameTypeDesignation.setCitation(newNameTypeDesignationTarget.getCitation());
                     nameTypeDesignation.getTypifiedNames().add(typifiedName);
@@ -603,12 +603,12 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
             return;
         }
         if(Reference.class.isAssignableFrom(event.getEntityType())){
-            if(workingset.getCitationId().equals(event.getEntityId())){
+            if(workingset.getCitationUuid().equals(event.getEntityUuid())){
                 refreshView(true);
             }
         } else
         if(Registration.class.isAssignableFrom(event.getEntityType())){
-            if(workingset.getRegistrations().stream().anyMatch(reg -> reg.getId() == event.getEntityId())){
+            if(workingset.getRegistrations().stream().anyMatch(reg -> reg.getUuid() == event.getEntityUuid())){
                 refreshView(true);
             }
         } else
@@ -618,9 +618,9 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
                 Stack<EditorActionContext>context = ((AbstractPopupEditor)event.getSourceView()).getEditorActionContext();
                 EditorActionContext rootContext = context.get(0);
                 if(rootContext.getParentView().equals(getView())){
-                    Registration blockingRegistration = createNewRegistrationForName(event.getEntityId());
+                    Registration blockingRegistration = createNewRegistrationForName(event.getEntityUuid());
                     TypedEntityReference<Registration> regReference = (TypedEntityReference<Registration>)rootContext.getParentEntity();
-                    Registration registration = getRepo().getRegistrationService().load(regReference.getId(), Arrays.asList("$", "blockedBy"));
+                    Registration registration = getRepo().getRegistrationService().load(regReference.getUuid(), Arrays.asList("$", "blockedBy"));
                     registration.getBlockedBy().add(blockingRegistration);
                     getRepo().getRegistrationService().saveOrUpdate(registration);
                     logger.debug("Blocking registration created");
@@ -630,14 +630,14 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
             }
             if(workingset.getRegistrationDTOs().stream().anyMatch(reg ->
                 reg.getTypifiedNameRef() != null
-                && reg.getTypifiedNameRef().getId() == event.getEntityId())){
+                && reg.getTypifiedNameRef().getUuid().equals(event.getEntityUuid()))){
                     refreshView(true);
             }
         } else
         if(TypeDesignationBase.class.isAssignableFrom(event.getEntityType())){
             if(workingset.getRegistrationDTOs().stream().anyMatch(
                     reg -> reg.getTypeDesignations() != null && reg.getTypeDesignations().stream().anyMatch(
-                            td -> td.getId() == event.getEntityId()
+                            td -> td.getUuid() == event.getEntityUuid()
                             )
                         )
                     ){
@@ -648,24 +648,24 @@ public class RegistrationWorkingsetPresenter extends AbstractPresenter<Registrat
 
 
     @EventBusListenerMethod(filter = ShowDetailsEventEntityTypeFilter.RegistrationDTO.class)
-    public void onShowDetailsEventForRegistrationDTO(ShowDetailsEvent<RegistrationDTO, Integer> event) {
+    public void onShowDetailsEventForRegistrationDTO(ShowDetailsEvent<RegistrationDTO, UUID> event) {
 
         // FIXME check from own view!!!
         if(getView() == null){
             return;
         }
 
-        Integer registrationId = event.getIdentifier();
+        UUID registrationUuid = event.getIdentifier();
 
-        RegistrationDTO regDto = getWorkingSetService().loadDtoById(registrationId);
+        RegistrationDTO regDto = getWorkingSetService().loadDtoByUuid(registrationUuid);
         if(event.getProperty().equals(RegistrationItem.BLOCKED_BY)){
 
-            Set<RegistrationDTO> blockingRegs = getWorkingSetService().loadBlockingRegistrations(registrationId);
-            getView().setBlockingRegistrations(registrationId, blockingRegs);
+            Set<RegistrationDTO> blockingRegs = getWorkingSetService().loadBlockingRegistrations(registrationUuid);
+            getView().setBlockingRegistrations(registrationUuid, blockingRegs);
         } else if(event.getProperty().equals(RegistrationItem.MESSAGES)){
 
             RegistrationMessagesPopup popup = getNavigationManager().showInPopup(RegistrationMessagesPopup.class, getView());
-            popup.loadMessagesFor(regDto.getId());
+            popup.loadMessagesFor(regDto.getUuid());
 
         } else if(event.getProperty().equals(RegistrationItem.VALIDATION_PROBLEMS)){
             getView().openDetailsPopup("Validation Problems", regDto.getValidationProblems());
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorkingsetView.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorkingsetView.java
index bc2c7776..e0836735 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorkingsetView.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorkingsetView.java
@@ -80,33 +80,30 @@ public interface RegistrationWorkingsetView extends ApplicationView{
 
     public LazyComboBox<TaxonName> getAddExistingNameCombobox();
 
-    Integer getCitationID();
-
+    /**
+     * @return
+     */
+    UUID getCitationUuid();
 
     /**
      * selecting a type will cause a {@link TypeDesignationWorkingsetEditorAction} to be emitted.
      * On Cancel .. TODO
-     * @param registrationEntityId
+     * @param registrationEntityUuid
      */
-    void chooseNewTypeRegistrationWorkingset(Integer registrationEntityId);
+    void chooseNewTypeRegistrationWorkingset(UUID registrationEntityUuid);
 
     /**
      * @param registrationId
      * @param blockingRegDTOs
      */
-    void setBlockingRegistrations(int registrationId, Set<RegistrationDTO> blockingRegDTOs);
+    void setBlockingRegistrations(UUID registrationUuid, Set<RegistrationDTO> blockingRegDTOs);
 
     /**
      * Returns the registrationItemMap as unmodifiableMap.
      *
      * @return
      */
-    Map<Integer, RegistrationDetailsItem> getRegistrationItemMap();
-
-
-
-
-
+    Map<UUID, RegistrationDetailsItem> getRegistrationItemMap();
 
 
 }
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorksetViewBean.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorksetViewBean.java
index b6c0a700..da3db4df 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorksetViewBean.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/RegistrationWorksetViewBean.java
@@ -109,7 +109,7 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
     private String headerText = "Registration Workingset Editor";
     private String subheaderText = "";
 
-    private Integer citationID;
+    private UUID citationUuid;
 
     private Button addNewNameRegistrationButton;
 
@@ -126,12 +126,12 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
     /**
      * uses the registrationId as key
      */
-    private Map<Integer, RegistrationDetailsItem> registrationItemMap = new HashMap<>();
+    private Map<UUID, RegistrationDetailsItem> registrationItemMap = new HashMap<>();
 
     /**
      * uses the registrationId as key
      */
-    private Map<Integer, EntityReference> typifiedNamesMap = new HashMap<>();
+    private Map<UUID, EntityReference> typifiedNamesMap = new HashMap<>();
 
     public RegistrationWorksetViewBean() {
         super();
@@ -155,7 +155,7 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
     @Override
     public void enter(ViewChangeEvent event) {
         if(event.getParameters() != null){
-            this.citationID = Integer.valueOf(event.getParameters());
+            this.citationUuid = UUID.fromString(event.getParameters());
 
             getPresenter().handleViewEntered();
         }
@@ -183,9 +183,9 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
     }
 
     @Override
-    public void setBlockingRegistrations(int registrationId, Set<RegistrationDTO> blockingRegDTOs) {
+    public void setBlockingRegistrations(UUID registrationUuid, Set<RegistrationDTO> blockingRegDTOs) {
 
-        RegistrationDetailsItem regItem = registrationItemMap.get(registrationId);
+        RegistrationDetailsItem regItem = registrationItemMap.get(registrationUuid);
 
         boolean blockingRegAdded = false;
         for(Iterator it = regItem.itemFooter.iterator(); it.hasNext(); ){
@@ -245,7 +245,7 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
         addExistingNameButton.setDescription("A name which was previously published in a earlier publication.");
         addExistingNameButton.setEnabled(false);
         addExistingNameButton.addClickListener(
-                e -> getViewEventBus().publish(this, new RegistrationWorkingsetAction(citationID, RegistrationWorkingsetAction.Action.start))
+                e -> getViewEventBus().publish(this, new RegistrationWorkingsetAction(citationUuid, RegistrationWorkingsetAction.Action.start))
                 );
 
         existingNameCombobox = new LazyComboBox<TaxonName>(TaxonName.class);
@@ -276,10 +276,10 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
         if(typifiedNameReference == null){
             typifiedNameReference = dto.getNameRef();
         }
-        typifiedNamesMap.put(dto.getId(), typifiedNameReference);
+        typifiedNamesMap.put(dto.getUuid(), typifiedNameReference);
 
         RegistrationItemNameAndTypeButtons regItemButtonGroup = new RegistrationItemNameAndTypeButtons(dto);
-        Integer registrationEntityID = dto.getId();
+        UUID registrationEntityUuid = dto.getUuid();
 
         RegistrationItemButtons regItemButtons = new RegistrationItemButtons();
 
@@ -288,20 +288,20 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
         footer.setStyleName("item-footer");
 
         RegistrationDetailsItem regDetailsItem = new RegistrationDetailsItem(regItemButtonGroup, regItemButtons, footer);
-        registrationItemMap.put(registrationEntityID, regDetailsItem);
+        registrationItemMap.put(registrationEntityUuid, regDetailsItem);
 
         Stack<EditorActionContext> context = new Stack<EditorActionContext>();
         context.push(new EditorActionContext(
-                    new TypedEntityReference<>(Registration.class, registrationEntityID),
+                    new TypedEntityReference<>(Registration.class, registrationEntityUuid),
                     this)
                     );
 
         if(regItemButtonGroup.getNameButton() != null){
             regItemButtonGroup.getNameButton().getButton().addClickListener(e -> {
-                Integer nameId = regItemButtonGroup.getNameButton().getId();
+                UUID nameuUuid = regItemButtonGroup.getNameButton().getUuid();
                 getViewEventBus().publish(this, new TaxonNameEditorAction(
                     EditorActionType.EDIT,
-                    nameId,
+                    nameuUuid,
                     e.getButton(),
                     this,
                     context
@@ -313,14 +313,14 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
         for(TypeDesignationWorkingSetButton workingsetButton : regItemButtonGroup.getTypeDesignationButtons()){
             workingsetButton.getButton().addClickListener(e -> {
                 TypedEntityReference baseEntityRef = workingsetButton.getBaseEntity();
-                EntityReference typifiedNameRef = typifiedNamesMap.get(registrationEntityID);
+                EntityReference typifiedNameRef = typifiedNamesMap.get(registrationEntityUuid);
                 TypeDesignationWorkingSetType workingsetType = workingsetButton.getType();
                 getViewEventBus().publish(this, new TypeDesignationWorkingsetEditorAction(
                         EditorActionType.EDIT,
                         baseEntityRef,
                         workingsetType,
-                        registrationEntityID,
-                        typifiedNameRef.getId(),
+                        registrationEntityUuid,
+                        typifiedNameRef.getUuid(),
                         e.getButton(),
                         this,
                         context
@@ -330,7 +330,7 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
         }
 
         regItemButtonGroup.getAddTypeDesignationButton().addClickListener(
-                e -> chooseNewTypeRegistrationWorkingset(dto.getId())
+                e -> chooseNewTypeRegistrationWorkingset(dto.getUuid())
                 );
 
 
@@ -343,10 +343,10 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
             blockingRegistrationButton.addStyleName(EditValoTheme.BUTTON_HIGHLITE);
             blockingRegistrationButton.addClickListener(e -> getViewEventBus().publish(
                     this,
-                    new ShowDetailsEvent<RegistrationDTO, Integer>(
+                    new ShowDetailsEvent<RegistrationDTO, UUID>(
                             e,
                             RegistrationDTO.class,
-                            dto.getId(),
+                            dto.getUuid(),
                             RegistrationItem.BLOCKED_BY
                             )
                     ));
@@ -358,10 +358,10 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
         if(!dto.getValidationProblems().isEmpty()){
             validationProblemsButton.setEnabled(true);
             validationProblemsButton.addClickListener(e -> getViewEventBus().publish(this,
-                    new ShowDetailsEvent<RegistrationDTO, Integer>(
+                    new ShowDetailsEvent<RegistrationDTO, UUID>(
                         e,
                         RegistrationDTO.class,
-                        dto.getId(),
+                        dto.getUuid(),
                         RegistrationItem.VALIDATION_PROBLEMS
                         )
                     )
@@ -372,10 +372,10 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
 
         Button messageButton = regItemButtons.getMessagesButton();
         messageButton.addClickListener(e -> getViewEventBus().publish(this,
-                    new ShowDetailsEvent<RegistrationDTO, Integer>(
+                    new ShowDetailsEvent<RegistrationDTO, UUID>(
                         e,
                         RegistrationDTO.class,
-                        dto.getId(),
+                        dto.getUuid(),
                         RegistrationItem.MESSAGES
                         )
                     )
@@ -396,14 +396,14 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
             editRegistrationButton.setDescription("Edit registration");
             editRegistrationButton.addClickListener(e -> getViewEventBus().publish(this, new RegistrationEditorAction(
                 EditorActionType.EDIT,
-                dto.getId(),
+                dto.getUuid(),
                 null,
                 this
                 )));
             regItemButtons.addComponent(editRegistrationButton);
         }
 
-        PermissionDebugUtils.addGainPerEntityPermissionButton(regItemButtons, Registration.class, dto.getId(),
+        PermissionDebugUtils.addGainPerEntityPermissionButton(regItemButtons, Registration.class, dto.getUuid(),
                 EnumSet.of(CRUD.UPDATE), RegistrationStatus.PREPARATION.name());
 
         row++;
@@ -425,17 +425,16 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
      *
      */
     @Override
-    public void chooseNewTypeRegistrationWorkingset(Integer registrationEntityId) {
-
+    public void chooseNewTypeRegistrationWorkingset(UUID registrationEntityUuid){
         Window typeDesignationTypeCooser = new Window();
         typeDesignationTypeCooser.setModal(true);
         typeDesignationTypeCooser.setResizable(false);
         typeDesignationTypeCooser.setCaption("Add new type designation");
         Label label = new Label("Please select kind of type designation to be created.");
         Button newSpecimenTypeDesignationButton = new Button("Specimen type designation",
-                e -> addNewTypeDesignationWorkingset(TypeDesignationWorkingSetType.SPECIMEN_TYPE_DESIGNATION_WORKINGSET, registrationEntityId, typeDesignationTypeCooser));
+                e -> addNewTypeDesignationWorkingset(TypeDesignationWorkingSetType.SPECIMEN_TYPE_DESIGNATION_WORKINGSET, registrationEntityUuid, typeDesignationTypeCooser));
         Button newNameTypeDesignationButton = new Button("Name type designation",
-                e -> addNewTypeDesignationWorkingset(TypeDesignationWorkingSetType.NAME_TYPE_DESIGNATION_WORKINGSET, registrationEntityId, typeDesignationTypeCooser));
+                e -> addNewTypeDesignationWorkingset(TypeDesignationWorkingSetType.NAME_TYPE_DESIGNATION_WORKINGSET, registrationEntityUuid, typeDesignationTypeCooser));
 
         VerticalLayout layout = new VerticalLayout(label, newSpecimenTypeDesignationButton, newNameTypeDesignationButton);
         layout.setMargin(true);
@@ -450,14 +449,14 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
      * @param button
      *
      */
-    protected void addNewTypeDesignationWorkingset(TypeDesignationWorkingSetType newWorkingsetType, Integer registrationEntityId, Window typeDesignationTypeCooser) {
+    protected void addNewTypeDesignationWorkingset(TypeDesignationWorkingSetType newWorkingsetType, UUID registrationEntityUuid, Window typeDesignationTypeCooser) {
         UI.getCurrent().removeWindow(typeDesignationTypeCooser);
-        EntityReference typifiedNameRef = typifiedNamesMap.get(registrationEntityId);
+        EntityReference typifiedNameRef = typifiedNamesMap.get(registrationEntityUuid);
         getViewEventBus().publish(this, new TypeDesignationWorkingsetEditorAction(
                 EditorActionType.ADD,
                 newWorkingsetType,
-                registrationEntityId,
-                typifiedNameRef.getId(),
+                registrationEntityUuid,
+                typifiedNameRef.getUuid(),
                 null,
                 this
                 ));
@@ -573,12 +572,12 @@ public class RegistrationWorksetViewBean extends AbstractPageView<RegistrationWo
      * @return the citationID
      */
     @Override
-    public Integer getCitationID() {
-        return citationID;
+    public UUID getCitationUuid() {
+        return citationUuid;
     }
 
     @Override
-    public Map<Integer, RegistrationDetailsItem> getRegistrationItemMap(){
+    public Map<UUID, RegistrationDetailsItem> getRegistrationItemMap(){
         return Collections.unmodifiableMap(registrationItemMap);
     }
 
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/StartRegistrationPresenter.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/StartRegistrationPresenter.java
index 3f3a3064..530c1dd8 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/StartRegistrationPresenter.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/StartRegistrationPresenter.java
@@ -9,6 +9,7 @@
 package eu.etaxonomy.cdm.vaadin.view.registration;
 
 import java.util.EnumSet;
+import java.util.UUID;
 
 import org.vaadin.spring.events.EventScope;
 import org.vaadin.spring.events.annotation.EventBusListenerMethod;
@@ -153,6 +154,7 @@ public class StartRegistrationPresenter extends AbstractEditorPresenter<Registra
         }
     }
 
+    @SuppressWarnings("null")
     @EventBusListenerMethod(filter = EditorActionTypeFilter.Add.class)
     public void onRegistrationEditorActionAdd(RegistrationEditorAction event) {
 
@@ -160,21 +162,21 @@ public class StartRegistrationPresenter extends AbstractEditorPresenter<Registra
             return;
         }
 
-        Integer referenceId = null;
+        UUID referenceUuid = null;
         LazyComboBox<Reference> referenceCombobox = getView().getReferenceCombobox();
         referenceCombobox.commit();
         if(newReference != null){
-            referenceId = newReference.getId();
+            referenceUuid = newReference.getUuid();
        // } else if(referenceCombobox.getValue() != null) {
-        } else if ( event.getEntityId() != null) { // HACKED, see view implementation
-            referenceId = event.getEntityId();
+        } else if ( event.getEntityUuid() != null) { // HACKED, see view implementation
+            referenceUuid = event.getEntityUuid();
         }
-        if(referenceId == null){
+        if(referenceUuid == null){
             getView().getContinueButton().setComponentError(new UserError("Can't continue. No Reference is chosen."));
             getView().getContinueButton().setEnabled(false);
         }
         registrationInProgress = true;
-        viewEventBus.publish(EventScope.UI, this, new NavigationEvent(RegistrationWorksetViewBean.NAME, Integer.toString(referenceId)));
+        viewEventBus.publish(EventScope.UI, this, new NavigationEvent(RegistrationWorksetViewBean.NAME, referenceUuid.toString()));
 
     }
 
diff --git a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/StartRegistrationViewBean.java b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/StartRegistrationViewBean.java
index 2081cd6c..8d90a8cd 100644
--- a/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/StartRegistrationViewBean.java
+++ b/src/main/java/eu/etaxonomy/cdm/vaadin/view/registration/StartRegistrationViewBean.java
@@ -9,6 +9,7 @@
 package eu.etaxonomy.cdm.vaadin.view.registration;
 
 import java.util.Collection;
+import java.util.UUID;
 
 import org.springframework.security.core.GrantedAuthority;
 import org.vaadin.viritin.fields.LazyComboBox;
@@ -128,15 +129,15 @@ public class StartRegistrationViewBean extends AbstractPageView<StartRegistratio
         continueButton.setEnabled(false);
         continueButton.addClickListener(e -> {
 
-            Integer refId = null;
+            UUID refUuid = null;
             referenceCombobox.commit();
             if(referenceCombobox.getValue() != null){
-                refId = referenceCombobox.getValue().getId();
+                refUuid = referenceCombobox.getValue().getUuid();
             }
             getViewEventBus().publish(this,
                 new RegistrationEditorAction(EditorActionType.ADD,
                         // passing the refId is hack, bit for some reason the presenter is always referring to the wrong view
-                        refId,
+                        refUuid,
                         continueButton,
                         StartRegistrationViewBean.this)
                 );
diff --git a/src/main/java/eu/etaxonomy/vaadin/event/EntityEditorActionListener.java b/src/main/java/eu/etaxonomy/vaadin/event/EntityEditorActionListener.java
index 9c8fa0f1..f126558d 100644
--- a/src/main/java/eu/etaxonomy/vaadin/event/EntityEditorActionListener.java
+++ b/src/main/java/eu/etaxonomy/vaadin/event/EntityEditorActionListener.java
@@ -15,12 +15,12 @@ package eu.etaxonomy.vaadin.event;
     myComboboxSelect.setEditActionListener(e -> {
 
             Object fieldValue = e.getSource().getValue();
-            Integer beanId = null;
+            UUID beanUuid = null;
             if(fieldValue != null){
-                beanId = ((CdmBase)fieldValue).getId();
+                beanUuid = ((CdmBase)fieldValue).getUUid();
 
             }
-            getViewEventBus().publish(this, new SomeEditorAction(e.getAction(), beanId, e.getSource(), this));
+            getViewEventBus().publish(this, new SomeEditorAction(e.getAction(), beanUuid, e.getSource(), this));
         });
   }
  *</pre>
diff --git a/src/main/java/eu/etaxonomy/vaadin/mvp/AbstractCdmEditorPresenter.java b/src/main/java/eu/etaxonomy/vaadin/mvp/AbstractCdmEditorPresenter.java
index 21c4019b..78ca14f9 100644
--- a/src/main/java/eu/etaxonomy/vaadin/mvp/AbstractCdmEditorPresenter.java
+++ b/src/main/java/eu/etaxonomy/vaadin/mvp/AbstractCdmEditorPresenter.java
@@ -11,6 +11,7 @@ package eu.etaxonomy.vaadin.mvp;
 import java.util.Collection;
 import java.util.EnumSet;
 import java.util.HashSet;
+import java.util.UUID;
 
 import org.apache.log4j.Logger;
 import org.hibernate.HibernateException;
@@ -75,13 +76,13 @@ public abstract class AbstractCdmEditorPresenter<DTO extends CdmBase, V extends
 
         DTO cdmEntitiy;
         if(identifier != null) {
-            Integer integerID = (Integer)identifier;
+            UUID uuidIdentifier = (UUID)identifier;
             // CdmAuthority is needed before the bean is loaded into the session.
             // otherwise adding the authority to the user would cause a flush
-            guaranteePerEntityCRUDPermissions(integerID);
-            cdmEntitiy = loadCdmEntityById(integerID);
+            guaranteePerEntityCRUDPermissions(uuidIdentifier);
+            cdmEntitiy = loadCdmEntity(uuidIdentifier);
         } else {
-            cdmEntitiy = loadCdmEntityById(null);
+            cdmEntitiy = loadCdmEntity(null);
             if(cdmEntitiy != null){
                 guaranteePerEntityCRUDPermissions(cdmEntitiy);
             }
@@ -101,13 +102,13 @@ public abstract class AbstractCdmEditorPresenter<DTO extends CdmBase, V extends
      * @param identifier
      * @return
      */
-    protected abstract DTO loadCdmEntityById(Integer identifier);
+    protected abstract DTO loadCdmEntity(UUID uuid);
 
     /**
      * Grant per entity CdmAuthority to the current user <b>for the bean which is not yet loaded</b>
      * into the editor. The <code>CRUD</code> to be granted are stored in the <code>crud</code> field.
      */
-    protected abstract void guaranteePerEntityCRUDPermissions(Integer identifier);
+    protected abstract void guaranteePerEntityCRUDPermissions(UUID identifier);
 
     /**
      * Grant per entity CdmAuthority to the current user for the bean which is loaded
diff --git a/src/test/java/eu/etaxonomy/cdm/service/SpecimenTypeDesignationWorkingSetServiceImplTest.java b/src/test/java/eu/etaxonomy/cdm/service/SpecimenTypeDesignationWorkingSetServiceImplTest.java
index bcc53038..7258e9da 100644
--- a/src/test/java/eu/etaxonomy/cdm/service/SpecimenTypeDesignationWorkingSetServiceImplTest.java
+++ b/src/test/java/eu/etaxonomy/cdm/service/SpecimenTypeDesignationWorkingSetServiceImplTest.java
@@ -11,6 +11,7 @@ package eu.etaxonomy.cdm.service;
 import java.io.FileNotFoundException;
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.util.UUID;
 
 import org.junit.Assert;
 import org.junit.BeforeClass;
@@ -69,11 +70,13 @@ public class SpecimenTypeDesignationWorkingSetServiceImplTest extends CdmVaadinI
        // Logger.getLogger("org.dbunit").setLevel(Level.DEBUG);
     }
 
-    int registrationId = 5000;
+    UUID registrationUuid = UUID.fromString("c8bb4e70-ca85-43c3-ae81-c90a2b41a93f"); // 5000;
 
-    private Integer publicationId = 5000;
+    private UUID publicationUuid = UUID.fromString("45804c65-7df9-42fd-b43a-818a8958c264"); // 5000;
 
-    private Integer typifiedNameId = 5000;
+    private UUID typifiedNameUuid = UUID.fromString("47d9263e-b32a-42af-98ea-5528f154384f"); //  5000;
+
+    UUID fieldUnitUuid = UUID.fromString("22be718a-6f21-4b74-aae3-bb7d7d659e1c"); // 5001
 
     private final String[] includeTableNames_create = new String[]{"TAXONNAME", "REFERENCE", "AGENTBASE", "HOMOTYPICALGROUP", "REGISTRATION",
             "HIBERNATE_SEQUENCES"};
@@ -99,13 +102,13 @@ public class SpecimenTypeDesignationWorkingSetServiceImplTest extends CdmVaadinI
 //                "REPRESENTATION", "REPRESENTATION_AUD", "HIBERNATE_SEQUENCES"},
 //                "RegistrationTerms");
 
-       SpecimenTypeDesignationWorkingSetDTO<Registration> workingset = service.create(registrationId, publicationId, typifiedNameId);
+       SpecimenTypeDesignationWorkingSetDTO<Registration> workingset = service.create(registrationUuid, publicationUuid, typifiedNameUuid);
 
        Assert.assertNotNull(workingset.getOwner());
        Assert.assertEquals(Registration.class, workingset.getOwner().getClass());
 
        workingset.getFieldUnit().setFieldNotes("FieldNotes");
-       int baseEntityID = workingset.getFieldUnit().getId();
+       // int baseEntityID = workingset.getFieldUnit().getId();
        workingset.getFieldUnit().setFieldNumber("FieldNumber");
        workingset.getFieldUnit().getGatheringEvent().setLocality(LanguageString.NewInstance("Somewhere", Language.ENGLISH()));
 
@@ -124,9 +127,9 @@ public class SpecimenTypeDesignationWorkingSetServiceImplTest extends CdmVaadinI
 
        printDataSetWithNull(System.err, new String[]{"TYPEDESIGNATIONBASE", "SPECIMENOROBSERVATIONBASE"});
 
-       TypedEntityReference<FieldUnit> baseEntityRef = new TypedEntityReference<FieldUnit>(FieldUnit.class, baseEntity.getId(), baseEntity.getTitleCache());
+       TypedEntityReference<FieldUnit> baseEntityRef = new TypedEntityReference<FieldUnit>(FieldUnit.class, baseEntity.getUuid(), baseEntity.getTitleCache());
 
-       workingset = service.loadDtoByIds(registrationId, baseEntityRef);
+       workingset = service.load(registrationUuid, baseEntityRef);
 
        Assert.assertNotNull(specimenTypeDesignationDTO.asSpecimenTypeDesignation().getTypeSpecimen());
        Assert.assertEquals(MediaSpecimen.class, specimenTypeDesignationDTO.asSpecimenTypeDesignation().getTypeSpecimen().getClass());
@@ -143,7 +146,7 @@ public class SpecimenTypeDesignationWorkingSetServiceImplTest extends CdmVaadinI
 
        service.save(workingset);
 
-       workingset = service.loadDtoByIds(registrationId, baseEntityRef);
+       workingset = service.load(registrationUuid, baseEntityRef);
        Assert.assertTrue(workingset.getSpecimenTypeDesignationDTOs().size() == 2);
 
 
@@ -174,8 +177,8 @@ public class SpecimenTypeDesignationWorkingSetServiceImplTest extends CdmVaadinI
     public void test03_deleteTypeDesignationTest() {
 
         // FieldUnit" ID="5001
-        TypedEntityReference<FieldUnit> baseEntityRef = new TypedEntityReference<FieldUnit>(FieldUnit.class, 5001, "Somewhere, FieldNumber.");
-        SpecimenTypeDesignationWorkingSetDTO<Registration> workingset = service.loadDtoByIds(registrationId, baseEntityRef);
+        TypedEntityReference<FieldUnit> baseEntityRef = new TypedEntityReference<FieldUnit>(FieldUnit.class, fieldUnitUuid, "Somewhere, FieldNumber.");
+        SpecimenTypeDesignationWorkingSetDTO<Registration> workingset = service.load(registrationUuid, baseEntityRef);
         Assert.assertTrue(workingset.getSpecimenTypeDesignationDTOs().size() == 2);
 
         SpecimenTypeDesignationDTO deleteDTO = null;
@@ -191,7 +194,7 @@ public class SpecimenTypeDesignationWorkingSetServiceImplTest extends CdmVaadinI
 
         // printDataSetWithNull(System.err, includeTableNames_delete);
 
-        workingset = service.loadDtoByIds(registrationId, baseEntityRef);
+        workingset = service.load(registrationUuid, baseEntityRef);
         Registration reg = workingset.getOwner();
         Assert.assertEquals(1, workingset.getSpecimenTypeDesignationDTOs().size());
         reg = workingset.getOwner();
@@ -204,9 +207,9 @@ public class SpecimenTypeDesignationWorkingSetServiceImplTest extends CdmVaadinI
 
 //        printDataSetWithNull(System.err, includeTableNames_delete);
 
-        TypedEntityReference<FieldUnit> baseEntityRef = new TypedEntityReference<FieldUnit>(FieldUnit.class, 5001, null);
+        TypedEntityReference<FieldUnit> baseEntityRef = new TypedEntityReference<FieldUnit>(FieldUnit.class, fieldUnitUuid, null);
 
-        SpecimenTypeDesignationWorkingSetDTO<Registration> workingset = service.loadDtoByIds(registrationId, baseEntityRef);
+        SpecimenTypeDesignationWorkingSetDTO<Registration> workingset = service.load(registrationUuid, baseEntityRef);
         Assert.assertNotNull(workingset.getOwner());
         Assert.assertEquals(2, workingset.getSpecimenTypeDesignationDTOs().size());
         service.delete(workingset, true);
@@ -241,19 +244,19 @@ public class SpecimenTypeDesignationWorkingSetServiceImplTest extends CdmVaadinI
 
         Team team = Team.NewTitledInstance("Novis, Braidwood & Kilroy", "Novis, Braidwood & Kilroy");
         Reference nomRef = ReferenceFactory.newArticle();
+        nomRef.setUuid(publicationUuid);
         nomRef = cdmRepository.getReferenceService().save(nomRef);
-        publicationId = nomRef.getId();
 
         nomRef.setAuthorship(team);
         nomRef.setTitle("P.M. Novis, J. Braidwood & C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64");
         TaxonName name = TaxonName.NewInstance(NomenclaturalCode.ICNAFP, Rank.SPECIES(), "Planothidium", null,  "victori", null, null, nomRef, "11-45", null);
+        name.setUuid(typifiedNameUuid);
         name = cdmRepository.getNameService().save(name);
-        typifiedNameId = name.getId();
 
         Registration reg = Registration.NewInstance();
         reg.setName(name);
+        reg.setUuid(registrationUuid);
         reg = cdmRepository.getRegistrationService().save(reg);
-        registrationId = reg.getId();
 
 
         //printDataSetWithNull(System.err, includeTableNames_create);
diff --git a/src/test/java/eu/etaxonomy/cdm/vaadin/model/RegistrationWorkingSetTest.java b/src/test/java/eu/etaxonomy/cdm/vaadin/model/RegistrationWorkingSetTest.java
index ed3c33eb..4b498621 100644
--- a/src/test/java/eu/etaxonomy/cdm/vaadin/model/RegistrationWorkingSetTest.java
+++ b/src/test/java/eu/etaxonomy/cdm/vaadin/model/RegistrationWorkingSetTest.java
@@ -59,7 +59,7 @@ public class RegistrationWorkingSetTest {
         dtos.add(new RegistrationDTO(reg2));
 
         RegistrationWorkingSet ws = new RegistrationWorkingSet(dtos);
-        Assert.assertEquals(article.getId(), ws.getCitationId().intValue());
+        Assert.assertEquals(article.getUuid(), ws.getCitationUuid());
         Assert.assertEquals(2, ws.getRegistrations().size());
     }
 
@@ -96,7 +96,7 @@ public class RegistrationWorkingSetTest {
         dtos.add(new RegistrationDTO(reg2));
 
         RegistrationWorkingSet ws = new RegistrationWorkingSet(dtos);
-        Assert.assertEquals(article.getId(), ws.getCitationId().intValue());
+        Assert.assertEquals(article.getUuid(), ws.getCitationUuid());
         Assert.assertEquals(2, ws.getRegistrations().size());
     }
 
diff --git a/src/test/resources/eu/etaxonomy/cdm/service/SpecimenTypeDesignationWorkingSetServiceImplTest.xml b/src/test/resources/eu/etaxonomy/cdm/service/SpecimenTypeDesignationWorkingSetServiceImplTest.xml
index f6b1107e..fd08f9d4 100644
--- a/src/test/resources/eu/etaxonomy/cdm/service/SpecimenTypeDesignationWorkingSetServiceImplTest.xml
+++ b/src/test/resources/eu/etaxonomy/cdm/service/SpecimenTypeDesignationWorkingSetServiceImplTest.xml
@@ -1,10 +1,10 @@
 <?xml version='1.0' encoding='UTF-8'?>
 <dataset>
-  <TAXONNAME ID="5000" CREATED="2017-11-24 22:17:26.0" UUID="bd294483-8383-4a5c-bf76-ffa3e104dc9e" UPDATED="2017-11-24 22:17:27.447" NAMETYPE="ICNAFP" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Planothidium victori" APPENDEDPHRASE="[null]" FULLTITLECACHE="Planothidium victori in - undefined journal -: 11-45" NOMENCLATURALMICROREFERENCE="11-45" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="Planothidium" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="Planothidium victori" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="victori" TRINOMHYBRID="false" NAMEAPPROBATION="[null]" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" CULTIVARNAME="[null]" ACRONYM="[null]" BREED="[null]" ORIGINALPUBLICATIONYEAR="[null]" PUBLICATIONYEAR="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" HOMOTYPICALGROUP_ID="5000" NOMENCLATURALREFERENCE_ID="5000" RANK_ID="765" BASIONYMAUTHORSHIP_ID="[null]" COMBINATIONAUTHORSHIP_ID="[null]" EXBASIONYMAUTHORSHIP_ID="[null]" EXCOMBINATIONAUTHORSHIP_ID="[null]"/>
-  <REFERENCE ID="5000" CREATED="2017-11-24 22:17:26.0" UUID="ed1c8722-015b-4a94-82a6-0b42e03d0e92" UPDATED="2017-11-24 22:17:27.448" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Novis, Braidwood &amp; Kilroy, P.M. Novis, J. Braidwood &amp; C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64 in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="P.M. Novis, J. Braidwood &amp; C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64" ABBREVTITLE="[null]" ABBREVTITLECACHE="Novis, Braidwood &amp; Kilroy, P.M. Novis, J. Braidwood &amp; C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64 in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" ACCESSED="[null]" LASTRETRIEVED="[null]" EXTERNALID="[null]" EXTERNALLINK="[null]" AUTHORITYTYPE="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="5000" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
+  <TAXONNAME ID="5000" CREATED="2017-11-24 22:17:26.0" UUID="47d9263e-b32a-42af-98ea-5528f154384f" UPDATED="2017-11-24 22:17:27.447" NAMETYPE="ICNAFP" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Planothidium victori" APPENDEDPHRASE="[null]" FULLTITLECACHE="Planothidium victori in - undefined journal -: 11-45" NOMENCLATURALMICROREFERENCE="11-45" PARSINGPROBLEM="0" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PROTECTEDFULLTITLECACHE="false" AUTHORSHIPCACHE="" BINOMHYBRID="false" GENUSORUNINOMIAL="Planothidium" HYBRIDFORMULA="false" INFRAGENERICEPITHET="[null]" INFRASPECIFICEPITHET="[null]" MONOMHYBRID="false" NAMECACHE="Planothidium victori" PROTECTEDAUTHORSHIPCACHE="false" PROTECTEDNAMECACHE="false" SPECIFICEPITHET="victori" TRINOMHYBRID="false" NAMEAPPROBATION="[null]" SUBGENUSAUTHORSHIP="[null]" ANAMORPHIC="false" CULTIVARNAME="[null]" ACRONYM="[null]" BREED="[null]" ORIGINALPUBLICATIONYEAR="[null]" PUBLICATIONYEAR="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" HOMOTYPICALGROUP_ID="5000" NOMENCLATURALREFERENCE_ID="5000" RANK_ID="765" BASIONYMAUTHORSHIP_ID="[null]" COMBINATIONAUTHORSHIP_ID="[null]" EXBASIONYMAUTHORSHIP_ID="[null]" EXCOMBINATIONAUTHORSHIP_ID="[null]"/>
+  <REFERENCE ID="5000" CREATED="2017-11-24 22:17:26.0" UUID="45804c65-7df9-42fd-b43a-818a8958c264" UPDATED="2017-11-24 22:17:27.448" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="false" TITLECACHE="Novis, Braidwood &amp; Kilroy, P.M. Novis, J. Braidwood &amp; C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64 in - undefined journal -" DATEPUBLISHED_END="[null]" DATEPUBLISHED_FREETEXT="[null]" DATEPUBLISHED_START="[null]" EDITION="[null]" EDITOR="[null]" ISBN="[null]" ISSN="[null]" DOI="[null]" NOMENCLATURALLYRELEVANT="false" ORGANIZATION="[null]" PAGES="[null]" PARSINGPROBLEM="0" PLACEPUBLISHED="[null]" PROBLEMENDS="-1" PROBLEMSTARTS="-1" PUBLISHER="[null]" REFERENCEABSTRACT="[null]" SERIESPART="[null]" TITLE="P.M. Novis, J. Braidwood &amp; C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64" ABBREVTITLE="[null]" ABBREVTITLECACHE="Novis, Braidwood &amp; Kilroy, P.M. Novis, J. Braidwood &amp; C. Kilroy, Small diatoms (Bacillariophyta) in cultures from the Styx River, New Zealand, including descriptions of three new species in Phytotaxa 64 in - undefined journal -" PROTECTEDABBREVTITLECACHE="false" REFTYPE="ART" URI="[null]" VOLUME="[null]" ACCESSED="[null]" LASTRETRIEVED="[null]" EXTERNALID="[null]" EXTERNALLINK="[null]" AUTHORITYTYPE="[null]" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" AUTHORSHIP_ID="5000" INREFERENCE_ID="[null]" INSTITUTION_ID="[null]" SCHOOL_ID="[null]"/>
   <AGENTBASE DTYPE="Team" ID="5000" CREATED="2017-11-24 22:17:26.0" UUID="5e7b791e-d17f-4378-9a47-923ebebc9b6a" UPDATED="2017-11-24 22:17:27.449" LSID_AUTHORITY="[null]" LSID_LSID="[null]" LSID_NAMESPACE="[null]" LSID_OBJECT="[null]" LSID_REVISION="[null]" PROTECTEDTITLECACHE="true" TITLECACHE="Novis, Braidwood &amp; Kilroy" PROTECTEDCOLLECTORTITLECACHE="false" COLLECTORTITLE="[null]" PROTECTEDNOMENCLATURALTITLECACHE="true" NOMENCLATURALTITLE="Novis, Braidwood &amp; Kilroy" CODE="[null]" NAME="[null]" FIRSTNAME="[null]" INITIALS="[null]" LASTNAME="[null]" LIFESPAN_END="[null]" LIFESPAN_FREETEXT="[null]" LIFESPAN_START="[null]" PREFIX="[null]" SUFFIX="[null]" HASMOREMEMBERS="false" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" ISPARTOF_ID="[null]"/>
   <HOMOTYPICALGROUP ID="5000" CREATED="2017-11-24 22:17:26.0" UUID="76cb5ec1-ac61-4c40-a0e2-1bb738f04575" UPDATED="2017-11-24 22:17:27.448" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]"/>
-  <REGISTRATION ID="5000" CREATED="2017-11-24 22:17:27.0" UUID="247090ee-31b4-4738-970c-69813e785a86" UPDATED="[null]" IDENTIFIER="[null]" REGISTRATIONDATE="[null]" SPECIFICIDENTIFIER="[null]" STATUS="PREP" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" INSTITUTION_ID="[null]" NAME_ID="5000" SUBMITTER_ID="[null]"/>
+  <REGISTRATION ID="5000" CREATED="2017-11-24 22:17:27.0" UUID="c8bb4e70-ca85-43c3-ae81-c90a2b41a93f" UPDATED="[null]" IDENTIFIER="[null]" REGISTRATIONDATE="[null]" SPECIFICIDENTIFIER="[null]" STATUS="PREP" CREATEDBY_ID="[null]" UPDATEDBY_ID="[null]" INSTITUTION_ID="[null]" NAME_ID="5000" SUBMITTER_ID="[null]"/>
   <HIBERNATE_SEQUENCES SEQUENCE_NAME="AgentBase" NEXT_VAL="5001"/>
   <HIBERNATE_SEQUENCES SEQUENCE_NAME="AuditEvent" NEXT_VAL="5005"/>
   <HIBERNATE_SEQUENCES SEQUENCE_NAME="CdmMetaData" NEXT_VAL="5005"/>
