diff --git a/src/main/java/org/olat/core/dispatcher/mapper/manager/MapperDAO.java b/src/main/java/org/olat/core/dispatcher/mapper/manager/MapperDAO.java
index 556079f676d2e40019e93adad7086fd2be0d2f51..fd0433f5b26392970e4b947811409e94ee87be1b 100644
--- a/src/main/java/org/olat/core/dispatcher/mapper/manager/MapperDAO.java
+++ b/src/main/java/org/olat/core/dispatcher/mapper/manager/MapperDAO.java
@@ -66,22 +66,20 @@ public class MapperDAO {
 	
 	public boolean updateConfiguration(String mapperId, Serializable mapper, int expirationTime) {
 		PersistedMapper m = loadForUpdate(mapperId);
-		if(m == null) {
-			return false;
-		}
-		
-		String configuration = XStreamHelper.createXStreamInstance().toXML(mapper);
-		m.setXmlConfiguration(configuration);
-		Date currentDate = new Date();
-		m.setLastModified(currentDate);
-		if(expirationTime > 0) {
-			Calendar cal = Calendar.getInstance();
-			cal.setTime(currentDate);
-			cal.add(Calendar.SECOND, expirationTime);
-			m.setExpirationDate(cal.getTime());
+		if(m != null) {
+			String configuration = XStreamHelper.createXStreamInstance().toXML(mapper);
+			m.setXmlConfiguration(configuration);
+			Date currentDate = new Date();
+			m.setLastModified(currentDate);
+			if(expirationTime > 0) {
+				Calendar cal = Calendar.getInstance();
+				cal.setTime(currentDate);
+				cal.add(Calendar.SECOND, expirationTime);
+				m.setExpirationDate(cal.getTime());
+			}
+			dbInstance.getCurrentEntityManager().merge(m);
 		}
-
-		dbInstance.getCurrentEntityManager().merge(m);
+		dbInstance.commit();
 		return true;
 	}
 	
diff --git a/src/main/java/org/olat/core/dispatcher/mapper/model/PersistedMapper.java b/src/main/java/org/olat/core/dispatcher/mapper/model/PersistedMapper.java
index 0a4a5afb92394bfce6be05761b9b581c332732f1..d146813a5437cf882c55d41992f7de8381dc0657 100644
--- a/src/main/java/org/olat/core/dispatcher/mapper/model/PersistedMapper.java
+++ b/src/main/java/org/olat/core/dispatcher/mapper/model/PersistedMapper.java
@@ -51,8 +51,8 @@ public class PersistedMapper implements CreateInfo, ModifiedInfo, Persistable {
 	private static final long serialVersionUID = 7297417374497607347L;
 	
 	@Id
-  @GeneratedValue(generator = "system-uuid")
-  @GenericGenerator(name = "system-uuid", strategy = "hilo")
+	@GeneratedValue(generator = "system-uuid")
+	@GenericGenerator(name = "system-uuid", strategy = "hilo")
 	@Column(name="id", nullable=false, unique=true, insertable=true, updatable=false)
 	private Long key;
 	
diff --git a/src/test/java/org/olat/core/dispatcher/mapper/MapperDAOTest.java b/src/test/java/org/olat/core/dispatcher/mapper/MapperDAOTest.java
index 4c8e209237b717e32a2210b340f7301f41fb4043..f4f7c4b4cc61803db9153193a074e1f2b037b656 100644
--- a/src/test/java/org/olat/core/dispatcher/mapper/MapperDAOTest.java
+++ b/src/test/java/org/olat/core/dispatcher/mapper/MapperDAOTest.java
@@ -28,6 +28,7 @@ import org.junit.Test;
 import org.olat.core.commons.persistence.DB;
 import org.olat.core.dispatcher.mapper.manager.MapperDAO;
 import org.olat.core.dispatcher.mapper.model.PersistedMapper;
+import org.olat.core.util.xml.XStreamHelper;
 import org.olat.test.OlatTestCase;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -76,6 +77,61 @@ public class MapperDAOTest extends OlatTestCase {
 		Assert.assertEquals(sessionId, loadedMapper.getOriginalSessionId());
 	}
 	
+	@Test
+	public void testLoadMapper_serializade() {
+		//create a mapper
+		String mapperId = UUID.randomUUID().toString();
+		String sessionId = UUID.randomUUID().toString().substring(0, 32);
+		PersistentMapper sMapper = new PersistentMapper("mapper-to-persist");
+		PersistedMapper pMapper = mapperDao.persistMapper(sessionId, mapperId, sMapper, -1);
+		Assert.assertNotNull(pMapper);
+		dbInstance.commitAndCloseSession();
+		
+		//load the mapper
+		PersistedMapper loadedMapper = mapperDao.loadByMapperId(mapperId);
+		Assert.assertNotNull(loadedMapper);
+		Assert.assertEquals(pMapper, loadedMapper);
+		Assert.assertEquals(mapperId, loadedMapper.getMapperId());
+
+		Object objReloaded = XStreamHelper.createXStreamInstance().fromXML(pMapper.getXmlConfiguration());
+		Assert.assertTrue(objReloaded instanceof PersistentMapper);
+		PersistentMapper sMapperReloaded = (PersistentMapper)objReloaded;
+		Assert.assertEquals("mapper-to-persist", sMapperReloaded.getKey());
+	}
+	
+	@Test
+	public void testUpdateMapper_serializade() {
+		//create a mapper
+		String mapperId = UUID.randomUUID().toString();
+		String sessionId = UUID.randomUUID().toString().substring(0, 32);
+		PersistentMapper sMapper = new PersistentMapper("mapper-to-persist-bis");
+		PersistedMapper pMapper = mapperDao.persistMapper(sessionId, mapperId, sMapper, -1);
+		Assert.assertNotNull(pMapper);
+		dbInstance.commitAndCloseSession();
+		
+		//load the mapper
+		PersistedMapper loadedMapper = mapperDao.loadByMapperId(mapperId);
+		Assert.assertNotNull(loadedMapper);
+		Object objReloaded = XStreamHelper.createXStreamInstance().fromXML(pMapper.getXmlConfiguration());
+		Assert.assertTrue(objReloaded instanceof PersistentMapper);
+		PersistentMapper sMapperReloaded = (PersistentMapper)objReloaded;
+		Assert.assertEquals("mapper-to-persist-bis", sMapperReloaded.getKey());
+		
+		//update
+		PersistentMapper sMapper2 = new PersistentMapper("mapper-to-update");
+		boolean updated = mapperDao.updateConfiguration(mapperId, sMapper2, -1);
+		Assert.assertTrue(updated);
+		dbInstance.commitAndCloseSession();
+		
+		//load the updated mapper
+		PersistedMapper loadedMapper2 = mapperDao.loadByMapperId(mapperId);
+		Assert.assertNotNull(loadedMapper2);
+		Object objReloaded2 = XStreamHelper.createXStreamInstance().fromXML(loadedMapper2.getXmlConfiguration());
+		Assert.assertTrue(objReloaded2 instanceof PersistentMapper);
+		PersistentMapper sMapperReloaded2 = (PersistentMapper)objReloaded2;
+		Assert.assertEquals("mapper-to-update", sMapperReloaded2.getKey());
+	}
+	
 	@Test
 	public void testDeleteMapperByMapper() throws Exception {
 		//create mappers