diff --git a/src/main/java/org/olat/modules/video/VideoMetadata.java b/src/main/java/org/olat/modules/video/VideoMetadata.java
index 97c2c98c5831efaecadd30f790e103b217415e70..176997685d60f60622e8925d79ecf02898b993bc 100644
--- a/src/main/java/org/olat/modules/video/VideoMetadata.java
+++ b/src/main/java/org/olat/modules/video/VideoMetadata.java
@@ -19,7 +19,7 @@
  */
 package org.olat.modules.video;
 
-import java.util.HashMap;
+import java.util.Map;
 
 /**
  * Represents the metadata of a master video file 
@@ -53,7 +53,7 @@ public interface VideoMetadata {
 	/**
 	 * @return Map of caption tracks
 	 */
-	public HashMap<String, String> getAllTracks();
+	public Map<String, String> getAllTracks();
 
 	/**
 	 * Add a caption track for a specific language
diff --git a/src/main/java/org/olat/modules/video/VideoModule.java b/src/main/java/org/olat/modules/video/VideoModule.java
index 28d6e70d27d42d1f97a92c06d89b9333f643d105..e7a86b2bad400ba5555d44bb1b527be9017cd41a 100644
--- a/src/main/java/org/olat/modules/video/VideoModule.java
+++ b/src/main/java/org/olat/modules/video/VideoModule.java
@@ -31,9 +31,6 @@ import org.olat.core.util.vfs.LocalFolderImpl;
 import org.olat.core.util.vfs.VFSContainer;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.core.convert.ConversionService;
-import org.springframework.format.support.DefaultFormattingConversionService;
 import org.springframework.stereotype.Service;
 
 /**
@@ -46,6 +43,8 @@ import org.springframework.stereotype.Service;
 @Service
 public class VideoModule extends AbstractSpringModule {
 
+	private static final OLog log = Tracing.createLoggerFor(VideoModule.class);
+	
 	private static final String VIDEO_ENABLED = "video.enabled";
 	private static final String VIDEOCOURSENODE_ENABLED = "video.coursenode.enabled";
 	private static final String VIDEOTRANSCODING_ENABLED = "video.transcoding.enabled";
@@ -58,26 +57,36 @@ public class VideoModule extends AbstractSpringModule {
 	@Value("${video.transcoding.enabled:false}")
 	private boolean transcodingEnabled;
 	@Value("${video.transcoding.resolutions}")
-	private int[] transcodingResolutions;
+	private String transcodingResolutions;
 	@Value("${video.transcoding.taskset.cpuconfig}")
 	private String transcodingTasksetConfig;
 	@Value("${video.transcoding.dir}")
 	private String transcodingDir;
 	
-	
-	@Bean
-	public static ConversionService conversionService() {
-		// needed to create the transcodingResolutions (int[]) property by spring
-	    return new DefaultFormattingConversionService();
-	}
-	
-	private static final OLog log = Tracing.createLoggerFor(VideoModule.class);
+	private int[] transcodingResolutionsArr = new int[] { 1080,720,480,360 };
 
 	@Autowired
 	public VideoModule(CoordinatorManager coordinatorManager) {
 		super(coordinatorManager);
 	}
 
+	@Override
+	protected void initDefaultProperties() {
+		if(StringHelper.containsNonWhitespace(transcodingResolutions)) {
+			try {
+				String[] resolutions = transcodingResolutions.split(",");
+				int[] resolutionInts = new int[resolutions.length];
+				for(int i=resolutions.length; i-->0; ) {
+					resolutionInts[i] = Integer.parseInt(resolutions[i]);
+				}
+				transcodingResolutionsArr = resolutionInts;
+			} catch (NumberFormatException e) {
+				log.error("Cannot parse transcoding resolutions", e);
+			}
+		}
+		super.initDefaultProperties();
+	}
+
 	@Override
 	public void init() {
 		String enabledObj = getStringPropertyValue(VIDEO_ENABLED, true);
@@ -110,7 +119,7 @@ public class VideoModule extends AbstractSpringModule {
 	 * @return Array of transcoding resolutions.
 	 */
 	public int[] getTranscodingResolutions() {
-		return transcodingResolutions;
+		return transcodingResolutionsArr;
 	}
 
 	/**
diff --git a/src/main/java/org/olat/modules/video/_spring/videoContext.xml b/src/main/java/org/olat/modules/video/_spring/videoContext.xml
index 2baa4e84b8a5008f20a889b44c2598887a315283..c00ec811aa566d98e7bb567d49b0e46ea97c1297 100644
--- a/src/main/java/org/olat/modules/video/_spring/videoContext.xml
+++ b/src/main/java/org/olat/modules/video/_spring/videoContext.xml
@@ -4,10 +4,37 @@
 	xsi:schemaLocation="
   http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd">
+  
+  
+	<bean id="videoTranscodingTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
+	    <property name="jobDetail" ref="videoTranscodingJob" />
+	    <!-- adjust cron style syntax for your notification needs 
+	    	"0 10 0 * *"  e.g. 10 minutes after midnight
+	    	
+	    	A "Cron-Expression" is a string comprised of 6 or 7 fields separated by white space. The 6 mandatory and 1 optional fields are as follows:
+			Field Name 	  	Allowed Values 	  	Allowed Special Characters
+			Seconds 	  	0-59 	  			, - * /
+			Minutes 	  	0-59 	  			, - * /
+			Hours 	  		0-23 	  			, - * /
+			Day-of-month 	1-31 	  			, - * ? / L W C
+			Month 	  		1-12 or JAN-DEC 	, - * /
+			Day-of-Week 	1-7 or SUN-SAT 	  	, - * ? / L C #
+			Year (Optional)	empty, 1970-2099 	, - * /
 
+			As of OLAT 6.3 it's best to let the cronjob run every two hours since users can now choose how often 
+			they will get notified. The shortest interval is set to two hours. 	    	
+	    -->
+	    <property name="cronExpression" value="0 */5 * * * ?" />
 
+		<!-- OLAT-5093 start delay ensures there's no conflict with server startup and db not being ready yet -->
+	    <property name="startDelay" value="350000" />
+	</bean>
+	
+	<bean id="videoTranscodingJob" class="org.springframework.scheduling.quartz.JobDetailBean" lazy-init="true">
+	  <property name="jobClass" value="org.olat.modules.video.manager.VideoTranscodingJob" />
+	</bean>
 
-<bean class="org.olat.core.extensions.action.GenericActionExtension" init-method="initExtensionPoints">
+	<bean class="org.olat.core.extensions.action.GenericActionExtension" init-method="initExtensionPoints">
 		<property name="order" value="7210" />
 		<property name="actionController">
 			<bean class="org.olat.core.gui.control.creator.AutoCreator" scope="prototype">
diff --git a/src/main/java/org/olat/modules/video/manager/VideoManagerImpl.java b/src/main/java/org/olat/modules/video/manager/VideoManagerImpl.java
index 4413cb45edec10abd8efce8cf7692cf64e6a189c..0e159fd4c9c184feacb56eab515afc69ed55b7b7 100644
--- a/src/main/java/org/olat/modules/video/manager/VideoManagerImpl.java
+++ b/src/main/java/org/olat/modules/video/manager/VideoManagerImpl.java
@@ -430,7 +430,7 @@ public class VideoManagerImpl implements VideoManager {
 		masterVideo.delete();
 
 		// 2) generate Metadata file
-		VideoMetadata metaData = new VideoMetadataImpl(videoResource);
+		VideoMetadata metaData = new VideoMetadataImpl();
 		// calculate video size
 		Size videoSize = movieService.getSize(targetFile, FILETYPE_MP4);
 		metaData.setWidth(videoSize.getWidth());
diff --git a/src/main/java/org/olat/modules/video/manager/VideoTranscodingDAO.java b/src/main/java/org/olat/modules/video/manager/VideoTranscodingDAO.java
index b8230b675d31257770f0cfb892b5ddd4a14f44af..69fc46a550a0f26d84958b6a08d6bedac540c337 100644
--- a/src/main/java/org/olat/modules/video/manager/VideoTranscodingDAO.java
+++ b/src/main/java/org/olat/modules/video/manager/VideoTranscodingDAO.java
@@ -22,8 +22,6 @@ package org.olat.modules.video.manager;
 import java.util.Date;
 import java.util.List;
 
-import javax.persistence.TypedQuery;
-
 import org.olat.core.commons.persistence.DB;
 import org.olat.modules.video.VideoTranscoding;
 import org.olat.modules.video.model.VideoTranscodingImpl;
@@ -54,7 +52,7 @@ public class VideoTranscodingDAO {
 	public VideoTranscoding createVideoTranscoding(OLATResource videoResource, int resolution, String format) {
 		VideoTranscodingImpl videoTranscoding = new VideoTranscodingImpl();
 		videoTranscoding.setCreationDate(new Date());
-		videoTranscoding.setLastModified(new Date());
+		videoTranscoding.setLastModified(videoTranscoding.getCreationDate());
 		videoTranscoding.setVideoResource(videoResource);
 		videoTranscoding.setResolution(resolution);
 		videoTranscoding.setFormat(format);
@@ -68,17 +66,15 @@ public class VideoTranscodingDAO {
 		sb.append("select trans from videotranscoding as trans")
 		  .append(" inner join fetch trans.videoResource as res")
 		  .append(" where res.key=:resourceKey");
-		TypedQuery<VideoTranscoding> query = dbInstance.getCurrentEntityManager()
+		return dbInstance.getCurrentEntityManager()
 				.createQuery(sb.toString(), VideoTranscoding.class)
-				.setParameter("resourceKey", videoResource.getKey());
-		return query.getResultList();
+				.setParameter("resourceKey", videoResource.getKey())
+				.getResultList();
 	}
 
 	public VideoTranscoding updateTranscoding(VideoTranscoding videoTranscoding) {
 		((VideoTranscodingImpl)videoTranscoding).setLastModified(new Date());
 		VideoTranscoding trans = dbInstance.getCurrentEntityManager().merge(videoTranscoding);
-		//FIXME:SR: is that needed? flush did not work
-		dbInstance.commit();
 		return trans;
 	}
 
diff --git a/src/main/java/org/olat/modules/video/manager/VideoTranscodingJob.java b/src/main/java/org/olat/modules/video/manager/VideoTranscodingJob.java
new file mode 100644
index 0000000000000000000000000000000000000000..a24b9628adf94c160f07b1b71252042894da83e5
--- /dev/null
+++ b/src/main/java/org/olat/modules/video/manager/VideoTranscodingJob.java
@@ -0,0 +1,43 @@
+/**
+ * <a href="http://www.openolat.org">
+ * OpenOLAT - Online Learning and Training</a><br>
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License"); <br>
+ * you may not use this file except in compliance with the License.<br>
+ * You may obtain a copy of the License at the
+ * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
+ * <p>
+ * Unless required by applicable law or agreed to in writing,<br>
+ * software distributed under the License is distributed on an "AS IS" BASIS, <br>
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
+ * See the License for the specific language governing permissions and <br>
+ * limitations under the License.
+ * <p>
+ * Initial code contributed and copyrighted by<br>
+ * frentix GmbH, http://www.frentix.com
+ * <p>
+ */
+package org.olat.modules.video.manager;
+
+import org.olat.core.commons.services.scheduler.JobWithDB;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+
+/**
+ * 
+ * Initial date: 06.05.2016<br>
+ * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
+ *
+ */
+public class VideoTranscodingJob extends JobWithDB {
+
+	/**
+	 * 
+	 * @see org.olat.core.commons.services.scheduler.JobWithDB#executeWithDB(org.quartz.JobExecutionContext)
+	 */
+	@Override
+	public void executeWithDB(JobExecutionContext arg0) throws JobExecutionException {
+		System.out.println("Work");
+	}
+	
+}
diff --git a/src/main/java/org/olat/modules/video/manager/VideoTranscodingTask.java b/src/main/java/org/olat/modules/video/manager/VideoTranscodingTask.java
index a19450a0ca0f998af00911d81f7ac82192231fd4..737bce37bcd745ecebc51beff37faf045dc7ac6e 100644
--- a/src/main/java/org/olat/modules/video/manager/VideoTranscodingTask.java
+++ b/src/main/java/org/olat/modules/video/manager/VideoTranscodingTask.java
@@ -27,6 +27,7 @@ import java.io.InputStreamReader;
 import java.util.ArrayList;
 
 import org.olat.core.CoreSpringFactory;
+import org.olat.core.commons.persistence.DBFactory;
 import org.olat.core.commons.services.image.Size;
 import org.olat.core.commons.services.taskexecutor.LongRunnable;
 import org.olat.core.commons.services.taskexecutor.Sequential;
@@ -146,6 +147,7 @@ public class VideoTranscodingTask implements LongRunnable, Sequential {
 						// update version file for UI
 						videoTranscoding.setStatus(Integer.parseInt(percent));
 						videoTranscoding = videoManager.updateVideoTranscoding(videoTranscoding);
+						DBFactory.getInstance().commitAndCloseSession();
 					}
 				}
 			}
@@ -179,6 +181,7 @@ public class VideoTranscodingTask implements LongRunnable, Sequential {
 				videoTranscoding.setSize(transcodedFile.length());
 				videoTranscoding.setStatus(VideoTranscoding.TRANSCODING_STATUS_DONE);
 				videoTranscoding = videoManager.updateVideoTranscoding(videoTranscoding);
+				DBFactory.getInstance().commitAndCloseSession();
 			}
 		} catch (InterruptedException e) {
 			//
diff --git a/src/main/java/org/olat/modules/video/model/VideoMetadataImpl.java b/src/main/java/org/olat/modules/video/model/VideoMetadataImpl.java
index 3e59b00be610fcdbabccfeaec1a61f58ae8f7b90..986b7be9d4f27cfe90a861e5cb8a6eb3043b4b86 100644
--- a/src/main/java/org/olat/modules/video/model/VideoMetadataImpl.java
+++ b/src/main/java/org/olat/modules/video/model/VideoMetadataImpl.java
@@ -22,8 +22,8 @@ package org.olat.modules.video.model;
 
 import java.io.Serializable;
 import java.util.HashMap;
+import java.util.Map;
 
-import org.olat.core.id.OLATResourceable;
 import org.olat.modules.video.VideoMetadata;
 
 /**
@@ -40,8 +40,8 @@ public class VideoMetadataImpl implements Serializable, VideoMetadata {
 		private int height;
 		private HashMap<String, String> tracks;
 		
-		public VideoMetadataImpl(OLATResourceable resource){
-			this.tracks = new HashMap<String, String>();
+		public VideoMetadataImpl() {
+			tracks = new HashMap<String, String>();
 		}
 				
 		@Override
@@ -65,7 +65,7 @@ public class VideoMetadataImpl implements Serializable, VideoMetadata {
 		}
 		
 		@Override
-		public HashMap<String, String> getAllTracks(){
+		public Map<String, String> getAllTracks(){
 			return tracks;
 		}
 		
diff --git a/src/main/java/org/olat/modules/video/model/VideoTranscodingImpl.java b/src/main/java/org/olat/modules/video/model/VideoTranscodingImpl.java
index 97e8140393999d7e9dca46b707c28aa14161732d..26d7e55509912ff2162254c29d91512e49a3ffd4 100644
--- a/src/main/java/org/olat/modules/video/model/VideoTranscodingImpl.java
+++ b/src/main/java/org/olat/modules/video/model/VideoTranscodingImpl.java
@@ -49,10 +49,9 @@ import org.olat.resource.OLATResourceImpl;
 @Entity(name="videotranscoding")
 @Table(name="o_vid_transcoding")
 public class VideoTranscodingImpl implements VideoTranscoding, Persistable, ModifiedInfo {
-	
-	//FIXME:RS: what serialVersionUID to use if null? Copy from GoToRegistrantImpl
-	private static final long serialVersionUID = 4285228843020012527L;
-	
+
+	private static final long serialVersionUID = 8360999803434426958L;
+
 	@Id
 	@GeneratedValue(generator = "system-uuid")
 	@GenericGenerator(name = "system-uuid", strategy = "hilo")
@@ -190,8 +189,7 @@ public class VideoTranscodingImpl implements VideoTranscoding, Persistable, Modi
 
 	@Override
 	public int hashCode() {
-		//FIXME:RS: what key to use if null? Copy from GoToRegistrantImpl
-		return key == null ? -794215 : key.hashCode();
+		return key == null ? -827346537 : key.hashCode();
 	}
 
 	@Override
@@ -210,5 +208,4 @@ public class VideoTranscodingImpl implements VideoTranscoding, Persistable, Modi
 	public boolean equalsByPersistableKey(Persistable persistable) {
 		return equals(persistable);
 	}
-
 }
diff --git a/src/main/resources/database/mysql/alter_10_4_0_to_10_5_0.sql b/src/main/resources/database/mysql/alter_10_4_0_to_10_5_0.sql
index c3083f9bd1afe208829cd3fb945329ff235d8eb2..6f890804c11618858d72ee2c5f23d4b75d976e93 100644
--- a/src/main/resources/database/mysql/alter_10_4_0_to_10_5_0.sql
+++ b/src/main/resources/database/mysql/alter_10_4_0_to_10_5_0.sql
@@ -80,11 +80,8 @@ create table o_vid_transcoding (
 alter table o_vid_transcoding ENGINE = InnoDB;
 
 alter table o_vid_transcoding add constraint fk_resource_id_idx foreign key (fk_resource_id) references o_olatresource (resource_id);
-
-	
-
-
-
+create index vid_status_trans_idx on o_vid_transcoding(vid_status);
+create index vid_transcoder_trans_idx on o_vid_transcoding(vid_transcoder);
 
 
 
diff --git a/src/main/resources/database/mysql/setupDatabase.sql b/src/main/resources/database/mysql/setupDatabase.sql
index 77c461b0c0147104f6d50a40d42c37807c3fded1..26dc7bb42e5ef8136483b855990b8ef47c66876b 100644
--- a/src/main/resources/database/mysql/setupDatabase.sql
+++ b/src/main/resources/database/mysql/setupDatabase.sql
@@ -1188,6 +1188,21 @@ create table o_goto_registrant (
    primary key (id)
 );
 
+create table o_vid_transcoding (
+   id bigint not null,
+   creationdate datetime not null,
+   lastmodified datetime not null,
+   vid_resolution bigint default null,
+   vid_width bigint default null,
+   vid_height bigint default null,
+   vid_size bigint default null,
+   vid_format varchar(128) default null,
+   vid_status bigint default null,
+   vid_transcoder varchar(128) default null,
+   fk_resource_id bigint not null,
+   primary key (id)
+);
+
 -- calendar
 create table o_cal_use_config (
    id bigint not null,
@@ -1822,6 +1837,7 @@ alter table o_rem_sent_reminder ENGINE = InnoDB;
 alter table o_goto_organizer ENGINE = InnoDB;
 alter table o_goto_meeting ENGINE = InnoDB;
 alter table o_goto_registrant ENGINE = InnoDB;
+alter table o_vid_transcoding ENGINE = InnoDB;
 
 -- rating
 alter table o_userrating add constraint FKF26C8375236F20X foreign key (creator_id) references o_bs_identity (id);
@@ -2128,6 +2144,11 @@ alter table o_goto_meeting add constraint goto_meet_organizer_idx foreign key (f
 alter table o_goto_registrant add constraint goto_regis_meeting_idx foreign key (fk_meeting_id) references o_goto_meeting (id);
 alter table o_goto_registrant add constraint goto_regis_ident_idx foreign key (fk_identity_id) references o_bs_identity (id);
 
+-- video
+alter table o_vid_transcoding add constraint fk_resource_id_idx foreign key (fk_resource_id) references o_olatresource (resource_id);
+create index vid_status_trans_idx on o_vid_transcoding(vid_status);
+create index vid_transcoder_trans_idx on o_vid_transcoding(vid_transcoder);
+
 -- calendar
 alter table o_cal_use_config add constraint cal_u_conf_to_ident_idx foreign key (fk_identity) references o_bs_identity (id);
 create index idx_cal_u_conf_cal_id_idx on o_cal_use_config (c_calendar_id);
diff --git a/src/main/resources/database/oracle/alter_10_4_0_to_10_5_0.sql b/src/main/resources/database/oracle/alter_10_4_0_to_10_5_0.sql
index 63e9397d6316a2d7658a5ffdfbfca10513ca8e93..da75b9b58381342efc67c1b57da57fb7b079e5a0 100644
--- a/src/main/resources/database/oracle/alter_10_4_0_to_10_5_0.sql
+++ b/src/main/resources/database/oracle/alter_10_4_0_to_10_5_0.sql
@@ -74,12 +74,14 @@ create table o_vid_transcoding (
    vid_width number(20) default null,
    vid_height number(20) default null,
    vid_size number(20) default null,
-   vid_format varchar(128) default null,
+   vid_format varchar2(128 char) default null,
    vid_status number(20) default null,
-   vid_transcoder varchar(128) default null,
+   vid_transcoder varchar2(128 char) default null,
    fk_resource_id number(20) not null,
    primary key (id)
 );
 alter table o_vid_transcoding add constraint fk_resource_id_idx foreign key (fk_resource_id) references o_olatresource (resource_id);
-
+create index idx_vid_trans_resource_idx on o_vid_transcoding(fk_resource_id);
+create index vid_status_trans_idx on o_vid_transcoding(vid_status);
+create index vid_transcoder_trans_idx on o_vid_transcoding(vid_transcoder);
 
diff --git a/src/main/resources/database/oracle/setupDatabase.sql b/src/main/resources/database/oracle/setupDatabase.sql
index d814581b1e70e98469e63bc0aec95a7b74deb03a..5e8f8476d78a16f8982fbb48725fc51218d72c25 100644
--- a/src/main/resources/database/oracle/setupDatabase.sql
+++ b/src/main/resources/database/oracle/setupDatabase.sql
@@ -1220,6 +1220,21 @@ create table o_goto_registrant (
    primary key (id)
 );
 
+create table o_vid_transcoding (
+   id int8 not null,
+   creationdate timestamp not null,
+   lastmodified timestamp not null,
+   vid_resolution int8 default null,
+   vid_width int8 default null,
+   vid_height int8 default null,
+   vid_size int8 default null,
+   vid_format varchar(128) default null,
+   vid_status int8 default null,
+   vid_transcoder varchar(128) default null,
+   fk_resource_id int8 not null,
+   primary key (id)
+);
+
 -- calendar
 create table o_cal_use_config (
    id number(20) not null,
@@ -2274,6 +2289,12 @@ create index idx_goto_regis_meeting_idx on o_goto_registrant(fk_meeting_id);
 alter table o_goto_registrant add constraint goto_regis_ident_idx foreign key (fk_identity_id) references o_bs_identity (id);
 create index idx_goto_regis_ident_idx on o_goto_registrant(fk_identity_id);
 
+-- video
+alter table o_vid_transcoding add constraint fk_resource_id_idx foreign key (fk_resource_id) references o_olatresource (resource_id);
+create index idx_vid_trans_resource_idx on o_vid_transcoding(fk_resource_id);
+create index vid_status_trans_idx on o_vid_transcoding(vid_status);
+create index vid_transcoder_trans_idx on o_vid_transcoding(vid_transcoder);
+
 -- calendar
 alter table o_cal_use_config add constraint cal_u_conf_to_ident_idx foreign key (fk_identity) references o_bs_identity (id);
 create index idx_cal_u_conf_to_ident_idx on o_cal_use_config (fk_identity);
diff --git a/src/main/resources/database/postgresql/alter_10_4_0_to_10_5_0.sql b/src/main/resources/database/postgresql/alter_10_4_0_to_10_5_0.sql
index dc473b6452b3ee73ce5d81fdaa0bd4e6c7417a1a..2cc306b8fe28d4550e99125075b9c146cc386758 100644
--- a/src/main/resources/database/postgresql/alter_10_4_0_to_10_5_0.sql
+++ b/src/main/resources/database/postgresql/alter_10_4_0_to_10_5_0.sql
@@ -81,5 +81,8 @@ create table o_vid_transcoding (
    primary key (id)
 );
 alter table o_vid_transcoding add constraint fk_resource_id_idx foreign key (fk_resource_id) references o_olatresource (resource_id);
+create index idx_vid_trans_resource_idx on o_vid_transcoding(fk_resource_id);
 
+create index vid_status_trans_idx on o_vid_transcoding(vid_status);
+create index vid_transcoder_trans_idx on o_vid_transcoding(vid_transcoder);
 
diff --git a/src/main/resources/database/postgresql/setupDatabase.sql b/src/main/resources/database/postgresql/setupDatabase.sql
index 29b786afe3df3fa1387d3886c57a39960f3063cd..44f3f059c85cf86396cbd7c1c5243b191f2148d7 100644
--- a/src/main/resources/database/postgresql/setupDatabase.sql
+++ b/src/main/resources/database/postgresql/setupDatabase.sql
@@ -1187,6 +1187,21 @@ create table o_goto_registrant (
    primary key (id)
 );
 
+create table o_vid_transcoding (
+   id int8 not null,
+   creationdate timestamp not null,
+   lastmodified timestamp not null,
+   vid_resolution int8 default null,
+   vid_width int8 default null,
+   vid_height int8 default null,
+   vid_size int8 default null,
+   vid_format varchar(128) default null,
+   vid_status int8 default null,
+   vid_transcoder varchar(128) default null,
+   fk_resource_id int8 not null,
+   primary key (id)
+);
+
 -- calendar
 create table o_cal_use_config (
    id int8 not null,
@@ -2140,6 +2155,12 @@ create index idx_goto_regis_meeting_idx on o_goto_registrant(fk_meeting_id);
 alter table o_goto_registrant add constraint goto_regis_ident_idx foreign key (fk_identity_id) references o_bs_identity (id);
 create index idx_goto_regis_ident_idx on o_goto_registrant(fk_identity_id);
 
+-- video
+alter table o_vid_transcoding add constraint fk_resource_id_idx foreign key (fk_resource_id) references o_olatresource (resource_id);
+create index idx_vid_trans_resource_idx on o_vid_transcoding(fk_resource_id);
+create index vid_status_trans_idx on o_vid_transcoding(vid_status);
+create index vid_transcoder_trans_idx on o_vid_transcoding(vid_transcoder);
+
 -- mapper
 create index o_mapper_uuid_idx on o_mapper (mapper_uuid);
 
diff --git a/src/test/java/org/olat/modules/video/manager/VideoTranscodingDAOTest.java b/src/test/java/org/olat/modules/video/manager/VideoTranscodingDAOTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..6619a10533cc4b344733615dc20250c82c9d69c3
--- /dev/null
+++ b/src/test/java/org/olat/modules/video/manager/VideoTranscodingDAOTest.java
@@ -0,0 +1,59 @@
+/**
+ * <a href="http://www.openolat.org">
+ * OpenOLAT - Online Learning and Training</a><br>
+ * <p>
+ * Licensed under the Apache License, Version 2.0 (the "License"); <br>
+ * you may not use this file except in compliance with the License.<br>
+ * You may obtain a copy of the License at the
+ * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
+ * <p>
+ * Unless required by applicable law or agreed to in writing,<br>
+ * software distributed under the License is distributed on an "AS IS" BASIS, <br>
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
+ * See the License for the specific language governing permissions and <br>
+ * limitations under the License.
+ * <p>
+ * Initial code contributed and copyrighted by<br>
+ * frentix GmbH, http://www.frentix.com
+ * <p>
+ */
+package org.olat.modules.video.manager;
+
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.olat.core.commons.persistence.DB;
+import org.olat.modules.video.VideoTranscoding;
+import org.olat.resource.OLATResource;
+import org.olat.test.JunitTestHelper;
+import org.olat.test.OlatTestCase;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * 
+ * Initial date: 06.05.2016<br>
+ * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com
+ *
+ */
+public class VideoTranscodingDAOTest extends OlatTestCase {
+	
+	@Autowired
+	private DB dbInstance;
+	@Autowired
+	private VideoTranscodingDAO videoTranscodingDao;
+	
+	@Test
+	public void createVideoTranscoding() {
+		OLATResource resource = JunitTestHelper.createRandomResource();
+		VideoTranscoding vTranscoding = videoTranscodingDao.createVideoTranscoding(resource, 1080, "mp4");
+		Assert.assertNotNull(vTranscoding);
+		dbInstance.commitAndCloseSession();
+		
+		List<VideoTranscoding> vTranscodingList = videoTranscodingDao.getVideoTranscodings(resource);
+		Assert.assertNotNull(vTranscodingList);
+		Assert.assertEquals(1, vTranscodingList.size());
+		Assert.assertEquals(vTranscoding, vTranscodingList.get(0));
+	}
+
+}
diff --git a/src/test/java/org/olat/test/AllTestsJunit4.java b/src/test/java/org/olat/test/AllTestsJunit4.java
index dced4d98c41fc98322cf9a660023d546112e7d12..222ede47d5b9f76294368b430dfdce5ba1fc4984 100644
--- a/src/test/java/org/olat/test/AllTestsJunit4.java
+++ b/src/test/java/org/olat/test/AllTestsJunit4.java
@@ -154,6 +154,7 @@ import org.junit.runners.Suite;
 	org.olat.modules.reminder.ReminderModuleTest.class,
 	org.olat.modules.reminder.manager.ReminderDAOTest.class,
 	org.olat.modules.reminder.manager.ReminderRuleEngineTest.class,
+	org.olat.modules.video.manager.VideoTranscodingDAOTest.class,
 	org.olat.properties.PropertyTest.class,
 	org.olat.search.service.document.file.FileDocumentFactoryTest.class,
 	org.olat.search.service.indexer.repository.course.SPCourseNodeIndexerTest.class,