diff --git a/packages/components/packages/PollingServer/PollingServer.js b/packages/components/packages/PollingServer/PollingServer.js
index c9c0529fa210b49df9b980874bcad9d58350c6fb..e1500727a3d34f42ceab8a7ed7f914c06969639d 100644
--- a/packages/components/packages/PollingServer/PollingServer.js
+++ b/packages/components/packages/PollingServer/PollingServer.js
@@ -1,14 +1,14 @@
 const PollingServer = app => {
   const { Fragment, Collection, User } = app.locals.models
-  const { sse } = app.locals
-  let task
+  const tasks = {}
 
   const setTimer = (handler, milisecond, opts) => {
-    if (task) {
-      clearTimeout(task)
+    if (Object.keys(tasks).length > 0) {
+      clearTimeout(tasks[opts.fragmentId])
+      delete tasks[opts.fragmentId]
     }
     try {
-      task = setTimeout(handler, milisecond, opts)
+      tasks[opts.fragmentId] = setTimeout(handler, milisecond, opts)
     } catch (e) {
       throw new Error('error')
     }
@@ -37,16 +37,23 @@ const PollingServer = app => {
     await fragment.updateProperties(patch)
     await fragment.save()
     fragment.owners = await User.ownersWithUsername(fragment)
-    const update = {}
+
+    const data = {}
 
     Object.keys(patch).forEach(key => {
-      update[key] = fragment[key]
+      data[key] = fragment[key]
     })
 
-    sse.send({
+    const update = data
+
+    app.locals.sse.send({
       action: 'fragment:patch',
       data: { fragment: { id: fragment.id }, update },
     })
+
+    if (Object.keys(tasks).length > 0) {
+      delete tasks[opts.fragmentId]
+    }
   }
 
   app.get(