diff --git a/core/src/cz/nic/tablexia/TablexiaApplication.java b/core/src/cz/nic/tablexia/TablexiaApplication.java
index fdadf9878818e9d20cbb66ac203a9e405d4451e8..a2cfdaedeaa3cc628b0a4785dc1b99037745c5c0 100644
--- a/core/src/cz/nic/tablexia/TablexiaApplication.java
+++ b/core/src/cz/nic/tablexia/TablexiaApplication.java
@@ -31,6 +31,7 @@ import cz.nic.tablexia.bus.ApplicationBus;
 import cz.nic.tablexia.bus.ApplicationBus.ApplicationEvent;
 import cz.nic.tablexia.bus.event.DeleteUserSynchronizationEvent;
 import cz.nic.tablexia.bus.event.DimmerControlEvent;
+import cz.nic.tablexia.bus.event.DownloadUserSynchronizationEvent;
 import cz.nic.tablexia.bus.event.StartFullSynchronizationEvent;
 import cz.nic.tablexia.bus.event.StartIncrementalSynchronizationEvent;
 import cz.nic.tablexia.debug.DebugInfo;
@@ -46,6 +47,7 @@ import cz.nic.tablexia.screen.AbstractTablexiaScreen.ScreenLoadingListener;
 import cz.nic.tablexia.shared.model.User;
 import cz.nic.tablexia.sync.RestSynchronizationService;
 import cz.nic.tablexia.sync.work.DeleteUser;
+import cz.nic.tablexia.sync.work.DownloadUser;
 import cz.nic.tablexia.sync.work.PushDataToServer;
 import cz.nic.tablexia.util.Log;
 import cz.nic.tablexia.util.ui.TablexiaButton;
@@ -799,4 +801,14 @@ public abstract class TablexiaApplication implements ApplicationListener {
             RestSynchronizationService.doSyncWork(new DeleteUser(syncEvent.getUser()));
         }
     }
+
+    @Handler
+    public void handleSynchronizationEvent(DownloadUserSynchronizationEvent syncEvent) {
+        if (syncEvent.getUser().getUuid() == null || syncEvent.getUser().getUuid().isEmpty()) {
+            Log.err(this.getClass(), "Calling download user without uuid");
+            return;
+        }
+        Log.debug(this.getClass(), "Download user request for uuid: " + syncEvent.getUser().getUuid());
+        RestSynchronizationService.doSyncWork(new DownloadUser(syncEvent.getUser().getUuid()));
+    }
 }
diff --git a/core/src/cz/nic/tablexia/bus/event/DownloadUserSynchronizationEvent.java b/core/src/cz/nic/tablexia/bus/event/DownloadUserSynchronizationEvent.java
new file mode 100644
index 0000000000000000000000000000000000000000..2bc0943859615c24cfd801b86d98f343d0e7f68f
--- /dev/null
+++ b/core/src/cz/nic/tablexia/bus/event/DownloadUserSynchronizationEvent.java
@@ -0,0 +1,21 @@
+package cz.nic.tablexia.bus.event;
+
+import cz.nic.tablexia.bus.ApplicationBus;
+import cz.nic.tablexia.shared.model.User;
+
+/**
+ * Created by frantisek on 22.1.16.
+ */
+public class DownloadUserSynchronizationEvent implements ApplicationBus.ApplicationEvent {
+
+    private final User user;
+
+    public DownloadUserSynchronizationEvent(User user) {
+        this.user = user;
+    }
+
+    public User getUser() {
+        return user;
+    }
+
+}
diff --git a/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java b/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java
index a74ef18bee0e6ab179426ae350174f4c3d1fe2c1..3d076dc26f185d5bb93c9ae39556eb72a64dbd09 100644
--- a/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java
+++ b/core/src/cz/nic/tablexia/screen/AbstractTablexiaScreen.java
@@ -36,6 +36,7 @@ import cz.nic.tablexia.TablexiaSettings;
 import cz.nic.tablexia.TablexiaStorage;
 import cz.nic.tablexia.bus.ApplicationBus;
 import cz.nic.tablexia.bus.ApplicationBus.ApplicationEvent;
+import cz.nic.tablexia.bus.event.DownloadUserSynchronizationEvent;
 import cz.nic.tablexia.bus.event.StartFullSynchronizationEvent;
 import cz.nic.tablexia.bus.event.StartIncrementalSynchronizationEvent;
 import cz.nic.tablexia.loader.TablexiaAbstractFileManager;
@@ -457,12 +458,16 @@ public abstract class AbstractTablexiaScreen<T> extends ScreenAdapter {
             stage.draw();
         }
 
-        if (lastTimeForUserSync != null && getSelectedUser() != null && canSyncOnResume() && System.currentTimeMillis() - lastTimeForUserSync > USER_SYNC_DELAY) {
+        if (lastTimeForUserSync != null && hasSynchronizedUser() && canSyncOnResume() && System.currentTimeMillis() - lastTimeForUserSync > USER_SYNC_DELAY) {
             lastTimeForUserSync = System.currentTimeMillis();
-            ApplicationBus.getInstance().publishAsync(new StartIncrementalSynchronizationEvent(getSelectedUser().getId()));
+            ApplicationBus.getInstance().publishAsync(new DownloadUserSynchronizationEvent(getSelectedUser()));
         }
     }
 
+    private boolean hasSynchronizedUser() {
+        return getSelectedUser() != null && getSelectedUser().getUuid() != null && !getSelectedUser().getUuid().isEmpty();
+    }
+
     public void addDisposable(Disposable disposable) {
         disposables.add(disposable);
     }
diff --git a/core/src/cz/nic/tablexia/sync/RestSynchronizationService.java b/core/src/cz/nic/tablexia/sync/RestSynchronizationService.java
index 42fb4fd52e89fd54c9500d8fb17267fa726e36f9..105e8ddd9faa35faad08c7b85e711684ab8f301c 100644
--- a/core/src/cz/nic/tablexia/sync/RestSynchronizationService.java
+++ b/core/src/cz/nic/tablexia/sync/RestSynchronizationService.java
@@ -50,10 +50,10 @@ public class RestSynchronizationService {
     }
 
     public static void doSyncWork(SyncWork work) {
-        /*if (Tablexia.connectionManager.isUsingMobileData()) {
+        if (Tablexia.connectionManager.isUsingMobileData()) {
             Log.debug(RestSynchronizationService.class, "Using mobile data connection - synchronization disabled");
             return;
-        }*/
+        }
         work.send(new RestSynchronizationService(work.getUrl(), work.getHttpMethod(), work));
     }
 
diff --git a/core/src/cz/nic/tablexia/sync/work/DownloadUser.java b/core/src/cz/nic/tablexia/sync/work/DownloadUser.java
index 117673cd3a513b68689a71b862a7a37919625c82..c070836e1d9a02b7f7394457d44a91de4e78c437 100644
--- a/core/src/cz/nic/tablexia/sync/work/DownloadUser.java
+++ b/core/src/cz/nic/tablexia/sync/work/DownloadUser.java
@@ -38,6 +38,11 @@ public class DownloadUser extends SyncWork {
         json.setIgnoreUnknownFields(true);
         User user = json.fromJson(User.class, userJson);
 
+        if (user == null) {
+            Log.err(this.getClass(), "Failed to deserialize user from JSON");
+            return;
+        }
+
         long start = System.currentTimeMillis();
         user.setId(UserDAO.importUser(user));
         long finish = System.currentTimeMillis();