diff --git a/xos/synchronizer/models/models.py b/xos/synchronizer/models/models.py
index 9a8b163..ccf5211 100644
--- a/xos/synchronizer/models/models.py
+++ b/xos/synchronizer/models/models.py
@@ -36,7 +36,7 @@
 
         for link in self.subscribed_links.all():
             outer_service_instance = link.provider_service_instance
-            # TODO: We may need to invalide the vOLT too...
+            # TODO: We may need to invalidate the vOLT too...
             for link in outer_service_instance.subscribed_links.all():
                 inner_service_instance = link.provider_service_instance
                 inner_service_instance.save(update_fields=["updated"])
@@ -54,8 +54,11 @@
         return tag
 
     def get_used_c_tags(self):
+        # TODO add validation for no duplicate c_tag on the same s_tag
         same_onu_subscribers = RCORDSubscriber.objects.filter(onu_device=self.onu_device)
-        return [s.c_tag for s in same_onu_subscribers]
+        same_onu_subscribers = [s for s in same_onu_subscribers if s.id != self.id]
+        used_tags = [s.c_tag for s in same_onu_subscribers]
+        return used_tags
 
     def save(self, *args, **kwargs):
 
diff --git a/xos/synchronizer/models/test_models.py b/xos/synchronizer/models/test_models.py
index 3209fe3..1e66be2 100644
--- a/xos/synchronizer/models/test_models.py
+++ b/xos/synchronizer/models/test_models.py
@@ -107,7 +107,19 @@
         self.assertEqual(e.exception.message, "The onu_device you specified (BRCM1234) does not exists")
         self.models_decl.RCORDSubscriber_decl.save.assert_not_called()
 
-    def test_validate_c_tag(self):
+    def test_validate_c_tag_pass(self):
+        """
+        check that other subscriber attached to the same ONU don't have the same c_tag
+        """
+
+        self.models_decl.RCORDSubscriber_decl.objects.filter.return_value = [self.rcord_subscriber]
+
+
+        self.rcord_subscriber.save()
+
+        self.models_decl.RCORDSubscriber_decl.save.assert_called()
+
+    def test_validate_c_tag_fail(self):
         """
         check that other subscriber attached to the same ONU don't have the same c_tag
         """
@@ -116,7 +128,7 @@
         s.c_tag = 111
         s.onu_device = "BRCM1234"
 
-        self.models_decl.RCORDSubscriber_decl.objects.filter.return_value = [s]
+        self.models_decl.RCORDSubscriber_decl.objects.filter.return_value = [s, self.rcord_subscriber]
 
         with self.assertRaises(Exception) as e:
             self.rcord_subscriber.save()
@@ -124,6 +136,23 @@
         self.assertEqual(e.exception.message, "The c_tag you specified (111) has already been used on device BRCM1234")
         self.models_decl.RCORDSubscriber_decl.save.assert_not_called()
 
+    def _test_validate_c_tag_on_same_s_tag(self):
+        """
+        check that other subscriber using the same s_tag don't have the same c_tag
+        """
+        s = Mock()
+        s.id = 123
+        s.c_tag = 111
+        s.s_tag = 222
+        s.onu_device = "BRCM1234"
+
+        with self.assertRaises(Exception) as e:
+            self.rcord_subscriber.save()
+
+        self.assertEqual(e.exception.message, "The c_tag you specified (111) has already been used by Subscriber with id 123 and the same s_tag: 222")
+        self.models_decl.RCORDSubscriber_decl.save.assert_not_called()
+
+
     def test_validate_c_tag_on_update(self):
         s = Mock()
         s.c_tag = 111
