diff --git a/pom.xml b/pom.xml
index 667ccecefb1c3cc07e4dfad8157e8a3474baa31f..2bf9e1a8dd34c1b8d488c8d16c2327a60f104baa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -190,6 +190,16 @@
 			<artifactId>couchdb4j</artifactId>
 			<version>0.8-SNAPSHOT</version>
 		</dependency>
+		<dependency>
+			<groupId>org.ektorp</groupId>
+			<artifactId>org.ektorp</artifactId>
+			<version>1.4.4</version>
+		</dependency>
+		<dependency>
+			<groupId>org.ektorp</groupId>
+			<artifactId>org.ektorp.spring</artifactId>
+			<version>1.4.4</version>
+		</dependency>
 		<dependency>
 			<groupId>javax.servlet</groupId>
 			<artifactId>javax.servlet-api</artifactId>
diff --git a/src/main/java/de/thm/arsnova/config/AppConfig.java b/src/main/java/de/thm/arsnova/config/AppConfig.java
index 00b5d0c0fa9f4b4af754a1eea92ad47c7242e49e..77cf95fc12fda834a9203148bd360485b8bba0e6 100644
--- a/src/main/java/de/thm/arsnova/config/AppConfig.java
+++ b/src/main/java/de/thm/arsnova/config/AppConfig.java
@@ -22,12 +22,16 @@ import com.fasterxml.jackson.databind.SerializationFeature;
 import de.thm.arsnova.ImageUtils;
 import de.thm.arsnova.connector.client.ConnectorClient;
 import de.thm.arsnova.connector.client.ConnectorClientImpl;
+import de.thm.arsnova.entities.serialization.CouchDbObjectMapperFactory;
 import de.thm.arsnova.socket.ARSnovaSocket;
 import de.thm.arsnova.socket.ARSnovaSocketIOServer;
 import de.thm.arsnova.web.CacheControlInterceptorHandler;
 import de.thm.arsnova.web.CorsFilter;
 import de.thm.arsnova.web.DeprecatedApiInterceptorHandler;
 import de.thm.arsnova.web.ResponseInterceptorHandler;
+import org.ektorp.impl.StdCouchDbConnector;
+import org.ektorp.impl.StdCouchDbInstance;
+import org.ektorp.spring.HttpClientFactoryBean;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.config.PropertiesFactoryBean;
@@ -98,6 +102,10 @@ public class AppConfig extends WebMvcConfigurerAdapter {
 	@Autowired
 	private Environment env;
 
+	@Value("${couchdb.name}") private String couchDbName;
+	@Value("${couchdb.host}") private String couchDbHost;
+	@Value("${couchdb.port}") private int couchDbPort;
+
 	@Value(value = "${connector.enable}") private boolean connectorEnable;
 	@Value(value = "${connector.uri}") private String connectorUri;
 	@Value(value = "${connector.username}") private String connectorUsername;
@@ -226,6 +234,25 @@ public class AppConfig extends WebMvcConfigurerAdapter {
 		return new CorsFilter(Arrays.asList(corsOrigins));
 	}
 
+	@Bean
+	public StdCouchDbConnector couchDbConnector() throws Exception {
+		return new StdCouchDbConnector(couchDbName, couchDbInstance(), new CouchDbObjectMapperFactory());
+	}
+
+	@Bean
+	public StdCouchDbInstance couchDbInstance() throws Exception {
+		return new StdCouchDbInstance(couchDbHttpClientFactory().getObject());
+	}
+
+	@Bean
+	public HttpClientFactoryBean couchDbHttpClientFactory() throws Exception {
+		final HttpClientFactoryBean factory = new HttpClientFactoryBean();
+		factory.setHost(couchDbHost);
+		factory.setPort(couchDbPort);
+
+		return factory;
+	}
+
 	@Bean(name = "connectorClient")
 	public ConnectorClient connectorClient() {
 		if (!connectorEnable) {
diff --git a/src/main/java/de/thm/arsnova/entities/Entity.java b/src/main/java/de/thm/arsnova/entities/Entity.java
new file mode 100644
index 0000000000000000000000000000000000000000..23c3103aee634a7152484da30f20f9a5b95af198
--- /dev/null
+++ b/src/main/java/de/thm/arsnova/entities/Entity.java
@@ -0,0 +1,31 @@
+/*
+ * This file is part of ARSnova Backend.
+ * Copyright (C) 2012-2017 The ARSnova Team
+ *
+ * ARSnova Backend is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * ARSnova Backend is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package de.thm.arsnova.entities;
+
+import com.fasterxml.jackson.annotation.JsonView;
+import de.thm.arsnova.entities.serialization.View;
+
+public interface Entity {
+	String getId();
+	void setId(String id);
+
+	@JsonView(View.Persistence.class)
+	default String getType() {
+		return getClass().getSimpleName();
+	}
+}
diff --git a/src/main/java/de/thm/arsnova/entities/serialization/CouchDbDocumentMixIn.java b/src/main/java/de/thm/arsnova/entities/serialization/CouchDbDocumentMixIn.java
new file mode 100644
index 0000000000000000000000000000000000000000..84a77f0492933d3ec4c73a00c151be58ba918923
--- /dev/null
+++ b/src/main/java/de/thm/arsnova/entities/serialization/CouchDbDocumentMixIn.java
@@ -0,0 +1,29 @@
+/*
+ * This file is part of ARSnova Backend.
+ * Copyright (C) 2012-2017 The ARSnova Team
+ *
+ * ARSnova Backend is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * ARSnova Backend is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package de.thm.arsnova.entities.serialization;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+@JsonIgnoreProperties(value = {"type"}, allowGetters = true)
+public abstract class CouchDbDocumentMixIn {
+	@JsonProperty("_id") abstract String getId();
+	@JsonProperty("_id") abstract void setId(String id);
+	@JsonProperty("_rev") abstract String getRevision();
+	@JsonProperty("_rev") abstract String setRevision(String rev);
+}
diff --git a/src/main/java/de/thm/arsnova/entities/serialization/CouchDbDocumentModule.java b/src/main/java/de/thm/arsnova/entities/serialization/CouchDbDocumentModule.java
new file mode 100644
index 0000000000000000000000000000000000000000..1579458a207c33d2e98d12d71da3b337bc7d96e5
--- /dev/null
+++ b/src/main/java/de/thm/arsnova/entities/serialization/CouchDbDocumentModule.java
@@ -0,0 +1,32 @@
+/*
+ * This file is part of ARSnova Backend.
+ * Copyright (C) 2012-2017 The ARSnova Team
+ *
+ * ARSnova Backend is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * ARSnova Backend is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package de.thm.arsnova.entities.serialization;
+
+import com.fasterxml.jackson.databind.module.SimpleModule;
+import de.thm.arsnova.entities.Entity;
+
+public class CouchDbDocumentModule extends SimpleModule {
+	public CouchDbDocumentModule() {
+		super("CouchDbDocumentModule");
+	}
+
+	@Override
+	public void setupModule(SetupContext context) {
+		context.setMixInAnnotations(Entity.class, CouchDbDocumentMixIn.class);
+	}
+}
diff --git a/src/main/java/de/thm/arsnova/entities/serialization/CouchDbObjectMapperFactory.java b/src/main/java/de/thm/arsnova/entities/serialization/CouchDbObjectMapperFactory.java
new file mode 100644
index 0000000000000000000000000000000000000000..1074cc816054746c52a4b64180ce689515edb229
--- /dev/null
+++ b/src/main/java/de/thm/arsnova/entities/serialization/CouchDbObjectMapperFactory.java
@@ -0,0 +1,31 @@
+/*
+ * This file is part of ARSnova Backend.
+ * Copyright (C) 2012-2017 The ARSnova Team
+ *
+ * ARSnova Backend is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * ARSnova Backend is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package de.thm.arsnova.entities.serialization;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.ektorp.CouchDbConnector;
+import org.ektorp.impl.StdObjectMapperFactory;
+
+public class CouchDbObjectMapperFactory extends StdObjectMapperFactory {
+	public ObjectMapper createObjectMapper(CouchDbConnector connector) {
+		ObjectMapper om = super.createObjectMapper(connector);
+		om.registerModule(new CouchDbDocumentModule());
+
+		return om;
+	}
+}
diff --git a/src/main/java/de/thm/arsnova/entities/serialization/View.java b/src/main/java/de/thm/arsnova/entities/serialization/View.java
new file mode 100644
index 0000000000000000000000000000000000000000..b2bcb7a60286d28b97dcf5022cdd4cafacdf1d6a
--- /dev/null
+++ b/src/main/java/de/thm/arsnova/entities/serialization/View.java
@@ -0,0 +1,23 @@
+/*
+ * This file is part of ARSnova Backend.
+ * Copyright (C) 2012-2017 The ARSnova Team
+ *
+ * ARSnova Backend is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * ARSnova Backend is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package de.thm.arsnova.entities.serialization;
+
+public class View {
+	public interface Public {}
+	public interface Persistence {}
+}