diff --git a/app/lib/methods/getRooms.js b/app/lib/methods/getRooms.js
index 8e4fb7e3e56f604eb2d4ad97d733bf9f808ac8be..1278b8b1fb174b33019741839e7c7bc626c1ac76 100644
--- a/app/lib/methods/getRooms.js
+++ b/app/lib/methods/getRooms.js
@@ -1,17 +1,8 @@
-import database from '../realm';
-
-const lastMessage = () => {
-	const message = database
-		.objects('subscriptions')
-		.sorted('roomUpdatedAt', true)[0];
-	return message && new Date(message.roomUpdatedAt).toISOString();
-};
-
-export default function() {
-	const updatedSince = lastMessage();
+export default function(updatedSince) {
 	// subscriptions.get: Since RC 0.60.0
 	// rooms.get: Since RC 0.62.0
 	if (updatedSince) {
+		updatedSince = updatedSince.toISOString();
 		return Promise.all([this.sdk.get('subscriptions.get', { updatedSince }), this.sdk.get('rooms.get', { updatedSince })]);
 	}
 	return Promise.all([this.sdk.get('subscriptions.get'), this.sdk.get('rooms.get')]);
diff --git a/app/lib/realm.js b/app/lib/realm.js
index 3365acce877c41786e2991d12530041a63df9d18..947f10baff13ea7f3fee3d7e855e4dbef05775ca 100644
--- a/app/lib/realm.js
+++ b/app/lib/realm.js
@@ -10,7 +10,8 @@ const serversSchema = {
 	properties: {
 		id: 'string',
 		name: { type: 'string', optional: true },
-		iconURL: { type: 'string', optional: true }
+		iconURL: { type: 'string', optional: true },
+		roomsUpdatedAt: { type: 'date', optional: true }
 	}
 };
 
@@ -22,7 +23,6 @@ const settingsSchema = {
 		valueAsString: { type: 'string', optional: true },
 		valueAsBoolean: { type: 'bool', optional: true },
 		valueAsNumber: { type: 'int', optional: true },
-
 		_updatedAt: { type: 'date', optional: true }
 	}
 };
@@ -308,7 +308,7 @@ class DB {
 			schema: [
 				serversSchema
 			],
-			deleteRealmIfMigrationNeeded: true
+			schemaVersion: 1
 		})
 	}
 
@@ -341,7 +341,7 @@ class DB {
 		return this.databases.activeDB = new Realm({
 			path: `${ path }.realm`,
 			schema,
-			deleteRealmIfMigrationNeeded: true
+			schemaVersion: 1
 		});
 	}
 }
diff --git a/app/sagas/rooms.js b/app/sagas/rooms.js
index e8d5cb529fc4a0449a48910cec40df14e2fd1cf1..8ecc54d21526599e0fe7a800ddeb94ee3737cad6 100644
--- a/app/sagas/rooms.js
+++ b/app/sagas/rooms.js
@@ -1,20 +1,34 @@
-import { put, takeLatest } from 'redux-saga/effects';
+import {
+	put, takeLatest, select
+} from 'redux-saga/effects';
 
 import * as types from '../actions/actionsTypes';
 import { roomsSuccess, roomsFailure } from '../actions/rooms';
-import RocketChat from '../lib/rocketchat';
 import database from '../lib/realm';
 import log from '../utils/log';
 import mergeSubscriptionsRooms from '../lib/methods/helpers/mergeSubscriptionsRooms';
+import RocketChat from '../lib/rocketchat';
 
 const handleRoomsRequest = function* handleRoomsRequest() {
 	try {
-		const [subscriptionsResult, roomsResult] = yield RocketChat.getRooms();
+		const newRoomsUpdatedAt = new Date();
+		const server = yield select(state => state.server.server);
+		const [serverRecord] = database.databases.serversDB.objects('servers').filtered('id = $0', server);
+		const { roomsUpdatedAt } = serverRecord;
+		const [subscriptionsResult, roomsResult] = yield RocketChat.getRooms(roomsUpdatedAt);
 		const { subscriptions } = mergeSubscriptionsRooms(subscriptionsResult, roomsResult);
 
 		database.write(() => {
 			subscriptions.forEach(subscription => database.create('subscriptions', subscription, true));
 		});
+		database.databases.serversDB.write(() => {
+			try {
+				database.databases.serversDB.create('servers', { id: server, roomsUpdatedAt: newRoomsUpdatedAt }, true);
+			} catch (e) {
+				log('handleRoomsRequest update roomsUpdatedAt', e);
+			}
+		});
+
 		yield put(roomsSuccess());
 	} catch (e) {
 		yield put(roomsFailure(e));