diff --git a/db/oracle/UpdateTo2.0.0FromDB_1.0.0/01_migrate_from_2.0.0_to_2.0.1.sql b/db/oracle/UpdateTo2.0.0FromDB_1.0.0/01_migrate_from_2.0.0_to_2.0.1.sql
index 1408660..c5fa968 100644
--- a/db/oracle/UpdateTo2.0.0FromDB_1.0.0/01_migrate_from_2.0.0_to_2.0.1.sql
+++ b/db/oracle/UpdateTo2.0.0FromDB_1.0.0/01_migrate_from_2.0.0_to_2.0.1.sql
@@ -1,4 +1,4 @@
-ALTER TABLE TBL_NOTIFICATION add "RESPONSIBILITY_FORWARDING_UUID" RAW(16);
+ALTER TABLE TBL_NOTIFICATION add "RESPONSIBILITY_FORWARDING_UUID" VARCHAR2(50);
 
 CREATE OR REPLACE VIEW VIEW_ACTIVE_NOTIFICATION AS
  SELECT S."ID",
diff --git a/src/main/java/org/eclipse/openk/elogbook/common/mapper/NotificationMapper.java b/src/main/java/org/eclipse/openk/elogbook/common/mapper/NotificationMapper.java
index 8ac4d64..00d502c 100644
--- a/src/main/java/org/eclipse/openk/elogbook/common/mapper/NotificationMapper.java
+++ b/src/main/java/org/eclipse/openk/elogbook/common/mapper/NotificationMapper.java
@@ -29,6 +29,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
 
 public class NotificationMapper {
     private Map<Integer, RefNotificationStatus> refStatusMap;
@@ -77,7 +78,8 @@
         trg.setRefGridTerritory(refGridTerritoryMap.get(vmNot.getFkRefGridTerritory()));
         trg.setAdminFlag(vmNot.isAdminFlag());
         trg.setType(vmNot.getType());
-        trg.setResponsibilityForwardingUuid(vmNot.getResponsibilityForwardingUuid());
+        trg.setResponsibilityForwardingUuid(vmNot.getResponsibilityForwardingUuid() != null ?
+                                                vmNot.getResponsibilityForwardingUuid().toString() : null);
         return trg;
     }
 
@@ -127,7 +129,8 @@
         }
 		not.getAdminFlag(tblNot.isAdminFlag());
 		not.setType(tblNot.getType());
-		not.setResponsibilityForwardingUuid(tblNot.getResponsibilityForwardingUuid());
+		not.setResponsibilityForwardingUuid(tblNot.getResponsibilityForwardingUuid() != null ?
+                                        UUID.fromString(tblNot.getResponsibilityForwardingUuid()) : null);
 		return not;
     }
 
diff --git a/src/main/java/org/eclipse/openk/elogbook/controller/ContactBaseDataManager.java b/src/main/java/org/eclipse/openk/elogbook/controller/ContactBaseDataManager.java
index 775f230..35ed744 100644
--- a/src/main/java/org/eclipse/openk/elogbook/controller/ContactBaseDataManager.java
+++ b/src/main/java/org/eclipse/openk/elogbook/controller/ContactBaseDataManager.java
@@ -75,7 +75,8 @@
         try (AutoCloseEntityManager em = new AutoCloseEntityManager(emOrg)) {
             em.getTransaction().begin();
             TblNotificationDao notifDao = new TblNotificationDao(em);
-            Map<UUID, String> uuid2NameMap = getUserContacts(token).stream().collect(Collectors.toMap(ContactTupel::getContactUuid, ContactTupel::getContactName));
+            Map<String, String> uuid2NameMap = getUserContacts(token).stream()
+                    .collect(Collectors.toMap( x -> x.getContactUuid().toString(), ContactTupel::getContactName));
             notifDao.getDistinctResponsibilityForwardingUuid()
                         .forEach( contactUuid -> notifDao.updateResponsibilityForwardingByContactUuid( contactUuid, uuid2NameMap.getOrDefault(contactUuid, "/gelöscht/")));
             em.getTransaction().commit();
diff --git a/src/main/java/org/eclipse/openk/elogbook/persistence/dao/TblNotificationDao.java b/src/main/java/org/eclipse/openk/elogbook/persistence/dao/TblNotificationDao.java
index 9685cbb..a9689df 100644
--- a/src/main/java/org/eclipse/openk/elogbook/persistence/dao/TblNotificationDao.java
+++ b/src/main/java/org/eclipse/openk/elogbook/persistence/dao/TblNotificationDao.java
@@ -29,7 +29,6 @@
 import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.UUID;
 
 public class TblNotificationDao extends GenericDaoJpa<TblNotification, Integer> {
 	private static final String VIEW_ACTIVE_NOTIFICATION = EntityHelper.instance().makeIdentifier("VIEW_ACTIVE_NOTIFICATION");
@@ -192,7 +191,7 @@
 		}
 	}
 
-	public List<UUID> getDistinctResponsibilityForwardingUuid() throws BtbInternalServerError {
+	public List<String> getDistinctResponsibilityForwardingUuid() throws BtbInternalServerError {
 		try {
 			String selectString = "select distinct "+RESPONSIBILITY_FORW_UUID+" from "+TBL_NOTIFICATION+" n where n.responsibility_forwarding_uuid is not null";
 			Query q = getEM().createNativeQuery(selectString);
@@ -204,7 +203,7 @@
 		}
 	}
 
-	public void updateResponsibilityForwardingByContactUuid( UUID contactUuid, String contactName ) {
+	public void updateResponsibilityForwardingByContactUuid( String contactUuid, String contactName ) {
 		try {
 			String selectString = "update "+TBL_NOTIFICATION+" set "+RESPONSIBILITY_FORWARDING+" = ? where "+RESPONSIBILITY_FORW_UUID+" = ?";
 			Query q = getEM().createNativeQuery(selectString);
diff --git a/src/main/java/org/eclipse/openk/elogbook/persistence/model/AbstractNotification.java b/src/main/java/org/eclipse/openk/elogbook/persistence/model/AbstractNotification.java
index 5dde8c6..83bf438 100644
--- a/src/main/java/org/eclipse/openk/elogbook/persistence/model/AbstractNotification.java
+++ b/src/main/java/org/eclipse/openk/elogbook/persistence/model/AbstractNotification.java
@@ -11,10 +11,6 @@
 */
 package org.eclipse.openk.elogbook.persistence.model;
 
-import org.eclipse.openk.elogbook.persistence.util.UUIDConverter;
-import org.eclipse.persistence.annotations.Convert;
-import org.eclipse.persistence.annotations.Converter;
-
 import javax.persistence.Column;
 import javax.persistence.GeneratedValue;
 import javax.persistence.GenerationType;
@@ -25,7 +21,6 @@
 import javax.persistence.SequenceGenerator;
 import java.io.Serializable;
 import java.sql.Timestamp;
-import java.util.UUID;
 
 
 /**
@@ -45,76 +40,74 @@
 	@Column(name = "incident_id")
 	private Integer incidentId;
 
-	@Column(name="begin_date")
+	@Column(name = "begin_date")
 	private Timestamp beginDate;
 
-	@Column(name="create_date")
+	@Column(name = "create_date")
 	private Timestamp createDate;
 
-	@Column(name="create_user")
+	@Column(name = "create_user")
 	private String createUser;
 
-	@Column(name="expected_finished_date")
+	@Column(name = "expected_finished_date")
 	private Timestamp expectedFinishedDate;
 
-	@Column(name="finished_date")
+	@Column(name = "finished_date")
 	private Timestamp finishedDate;
 
-	@Column(name="free_text")
+	@Column(name = "free_text")
 	private String freeText;
 
-	@Column(name="free_text_extended")
+	@Column(name = "free_text_extended")
 	private String freeTextExtended;
 
-	@Column(name="mod_date")
+	@Column(name = "mod_date")
 	private Timestamp modDate;
 
-	@Column(name="mod_user")
+	@Column(name = "mod_user")
 	private String modUser;
 
-	@Column(name="notification_text")
+	@Column(name = "notification_text")
 	private String notificationText;
 
-	@Column(name="reminder_date")
+	@Column(name = "reminder_date")
 	private Timestamp reminderDate;
 
-	@Column(name="responsibility_control_point")
+	@Column(name = "responsibility_control_point")
 	private String responsibilityControlPoint;
 
-	@Column(name="responsibility_forwarding")
+	@Column(name = "responsibility_forwarding")
 	private String responsibilityForwarding;
 
-	@Column(name="responsibility_forwarding_uuid")
-	@Converter(converterClass= UUIDConverter.class, name="responsibility_forwarding_uuid")
-	@Convert("responsibility_forwarding_uuid")
-	private UUID responsibilityForwardingUuid;
+	@Column(name = "responsibility_forwarding_uuid")
+	private String responsibilityForwardingUuid;
 
-	@Column(name="version")
+	@Column(name = "version")
 	private Integer version;
-	
-	@Column(name="admin_flag")
+
+	@Column(name = "admin_flag")
 	private Boolean adminFlag;
 
-	@Column(name="type")
+	@Column(name = "type")
 	private String type;
 
 	//bi-directional many-to-one association to RefBranch
 	@ManyToOne
-	@JoinColumn(name="fk_ref_branch")
+	@JoinColumn(name = "fk_ref_branch")
 	private RefBranch refBranch;
 
 	//bi-directional many-to-one association to RefNotificationStatus
 	@ManyToOne
-	@JoinColumn(name="fk_ref_notification_status")
+	@JoinColumn(name = "fk_ref_notification_status")
 	private RefNotificationStatus refNotificationStatus;
 
 	@ManyToOne
-	@JoinColumn(name="fk_ref_grid_territory")
+	@JoinColumn(name = "fk_ref_grid_territory")
 	private RefGridTerritory refGridTerritory;
 
 	//bi-directional many-to-one association to RefNotificationStatus
 	@ManyToOne
-	@JoinColumn(name="fk_ref_notification_priority")
+	@JoinColumn(name = "fk_ref_notification_priority")
 	private RefNotificationPriority refNotificationPriority;
 
 	public AbstractNotification() {
@@ -297,11 +290,11 @@
 		this.type = type;
 	}
 
-	public UUID getResponsibilityForwardingUuid() {
+	public String getResponsibilityForwardingUuid() {
 		return responsibilityForwardingUuid;
 	}
 
-	public void setResponsibilityForwardingUuid(UUID responsibilityForwardingUuid) {
+	public void setResponsibilityForwardingUuid(String responsibilityForwardingUuid) {
 		this.responsibilityForwardingUuid = responsibilityForwardingUuid;
 	}
-}
\ No newline at end of file
+}
diff --git a/src/main/resources/backendConfigDevLocal.json b/src/main/resources/backendConfigDevLocal.json
index 9f954f6..306a6cb 100644
--- a/src/main/resources/backendConfigDevLocal.json
+++ b/src/main/resources/backendConfigDevLocal.json
@@ -6,7 +6,7 @@
   "fileRowToRead": "9",
   "importFilesFolderPath": "C:/FilesToImport",
 
-  "activePersistencyUnit": "betriebstagebuch",
+  "activePersistencyUnit": "betriebstagebuchORA",
   "applicationAccessRole": "elogbook-access",
 
   "emailSmtpHost": "entdockergss",
diff --git a/src/main/resources/backendConfigDevServer.json b/src/main/resources/backendConfigDevServer.json
index e4cbf8f..947e115 100644
--- a/src/main/resources/backendConfigDevServer.json
+++ b/src/main/resources/backendConfigDevServer.json
@@ -6,7 +6,7 @@
   "fileRowToRead": "9",
   "importFilesFolderPath": "/opt/opkon/btb_filesToImport",
 
-  "activePersistencyUnit": "betriebstagebuch",
+  "activePersistencyUnit": "betriebstagebuchORA",
   "applicationAccessRole": "elogbook-access",
 
   "emailSmtpHost": "entdockergss",
diff --git a/src/test/java/org/eclipse/openk/elogbook/common/mapper/NotificationMapperTest.java b/src/test/java/org/eclipse/openk/elogbook/common/mapper/NotificationMapperTest.java
index 6449115..879a183 100644
--- a/src/test/java/org/eclipse/openk/elogbook/common/mapper/NotificationMapperTest.java
+++ b/src/test/java/org/eclipse/openk/elogbook/common/mapper/NotificationMapperTest.java
@@ -12,7 +12,6 @@
 package org.eclipse.openk.elogbook.common.mapper;
 
 
-import org.eclipse.openk.elogbook.common.mapper.NotificationMapper;
 import org.eclipse.openk.elogbook.controller.NotificationTestHelper;
 import org.eclipse.openk.elogbook.persistence.model.RefNotificationStatus;
 import org.eclipse.openk.elogbook.persistence.model.TblNotification;
@@ -22,8 +21,11 @@
 import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.UUID;
 
-import static junit.framework.TestCase.*;
+import static junit.framework.TestCase.assertEquals;
+import static junit.framework.TestCase.assertNotNull;
+import static junit.framework.TestCase.assertNull;
 
 public class NotificationMapperTest {
 
@@ -51,6 +53,7 @@
         vmNot.setFkRefNotificationStatus(2);
         vmNot.setFkRefGridTerritory(1);
         vmNot.getAdminFlag(Boolean.TRUE);
+        vmNot.setResponsibilityForwardingUuid(UUID.randomUUID());
         return vmNot;
 
     }
@@ -143,4 +146,19 @@
        assertNull(notification.getFkRefGridTerritory());
     }
 
+
+    @Test
+    public void testTblNotificationUuidNull() {
+
+        TblNotification tblNotification =  new TblNotification();
+        tblNotification.setRefNotificationStatus(new RefNotificationStatus());
+        tblNotification.setResponsibilityForwardingUuid(null);
+        NotificationMapper mappy = NotificationTestHelper.createMapper();
+        Notification notification = mappy.mapToVModel(tblNotification);
+        assertNull(notification.getFkRefBranch());
+        assertNull(notification.getFkRefGridTerritory());
+        assertNull(notification.getResponsibilityForwardingUuid());
+        TblNotification tmodel = mappy.mapFromVModel(notification);
+        assertNull(tmodel.getResponsibilityForwardingUuid());
+    }
 }
