diff --git a/agkyra/syncer/pithos_client.py b/agkyra/syncer/pithos_client.py
index 5e23caeb13cf8ff42a33b72ee63e555e49cd1a0c..19a8379a3953b4bb00c78c5d5c656d8c83798064 100644
--- a/agkyra/syncer/pithos_client.py
+++ b/agkyra/syncer/pithos_client.py
@@ -34,12 +34,13 @@ def heartbeat_event(settings, heartbeat, objname):
 
     def set_log():
         with heartbeat.lock() as hb:
-            beat = hb.get(objname)
+            registered_name = utils.reg_name(objname)
+            beat = hb.get(registered_name)
             assert beat is not None
             new_beat = {"ident": beat["ident"],
                         "tstamp": utils.time_stamp()}
-            hb[objname] = new_beat
-            logger.debug("HEARTBEAT '%s' %s" % (objname, new_beat))
+            hb[registered_name] = new_beat
+            logger.debug("HEARTBEAT '%s' %s" % (registered_name, new_beat))
 
     def go():
         interval = 0.2
diff --git a/agkyra/syncer/syncer.py b/agkyra/syncer/syncer.py
index 8f80880d2ee3ed6574f8d80cc18048c833c0ac9d..11fec78d783f8e7834b7a4617e5bd9486641f5f3 100644
--- a/agkyra/syncer/syncer.py
+++ b/agkyra/syncer/syncer.py
@@ -117,7 +117,7 @@ class FileSyncer(object):
         db_state = db.get_state(archive, objname)
         ref_state = db.get_state(self.SYNC, objname)
         with self.heartbeat.lock() as hb:
-            beat = hb.get(objname)
+            beat = hb.get(utils.reg_name(objname))
             if beat is not None:
                 if utils.younger_than(
                         beat["tstamp"], self.settings.action_max_wait):
@@ -206,7 +206,7 @@ class FileSyncer(object):
         if states is not None:
             with self.heartbeat.lock() as hb:
                 beat = {"ident": ident, "tstamp": utils.time_stamp()}
-                hb[objname] = beat
+                hb[utils.reg_name(objname)] = beat
         return states
 
     def _do_decide_file_sync(self, objname, master, slave, ident,
@@ -223,7 +223,7 @@ class FileSyncer(object):
         decision_serial = decision_state.serial
 
         with self.heartbeat.lock() as hb:
-            beat = hb.get(objname)
+            beat = hb.get(utils.reg_name(objname))
             logger.debug("object: %s heartbeat: %s" % (objname, beat))
             if beat is not None:
                 if beat["ident"] == ident:
@@ -325,7 +325,7 @@ class FileSyncer(object):
         serial = state.serial
         objname = state.objname
         with self.heartbeat.lock() as hb:
-            hb.pop(objname)
+            hb.pop(utils.reg_name(objname))
         if hard:
             logger.warning(
                 "Marking failed serial %s for archive: %s, object: '%s'" %
@@ -348,7 +348,7 @@ class FileSyncer(object):
         objname = synced_source_state.objname
         target = synced_target_state.archive
         with self.heartbeat.lock() as hb:
-            hb.pop(objname)
+            hb.pop(utils.reg_name(objname))
         msg = messaging.AckSyncMessage(
             archive=target, objname=objname, serial=serial,
             logger=logger)
diff --git a/agkyra/syncer/utils.py b/agkyra/syncer/utils.py
index 462d1232d405ec59c8a4fd38c02fe14adbc87aa1..7a7c7f1276237713d01f6c89ecae57dd3d169434 100644
--- a/agkyra/syncer/utils.py
+++ b/agkyra/syncer/utils.py
@@ -99,6 +99,12 @@ def younger_than(tstamp, seconds):
     return delta < datetime.timedelta(seconds=seconds)
 
 
+def reg_name(objname):
+    if iswin():
+        return objname.lower()
+    return objname
+
+
 BaseStoppableThread = watchdog.utils.BaseThread