diff --git a/VERSION b/VERSION
index 31e5c84..40b6307 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.3.3
+1.4.0-dev
\ No newline at end of file
diff --git a/xos/synchronizer/models/models.py b/xos/synchronizer/models/models.py
index 94f96fa..80d6025 100644
--- a/xos/synchronizer/models/models.py
+++ b/xos/synchronizer/models/models.py
@@ -72,7 +72,7 @@
         # unused_s_tags_for_c_tag() this function will return a list of unused s_tags for that c_tag
 
         tag = random.choice(self.unused_s_tags_for_c_tag())
- 
+
         # Check that combination(c_tag,s_tag) is unique.
         # If the combination is not unique it will keep on calling this function recursively till it gets a unique combination.
 
@@ -150,7 +150,7 @@
         return RCORDSubscriber.objects.filter(c_tag=self.c_tag, s_tag=self.s_tag)
 
     def get_used_c_tags(self):
-        same_onu_subscribers = self.get_same_onu_subscribers() 
+        same_onu_subscribers = self.get_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
@@ -162,7 +162,7 @@
         if len(same_s_c_tag_subscribers) > 0:
             return same_s_c_tag_subscribers[0].id
         else:
-            return None 
+            return None
 
     def validate_tech_profile_id(self):
         if self.owner.leaf_model.access != "voltha":
@@ -175,7 +175,8 @@
             if provider_service.name.lower() == "volt":
                 volt = provider_service
 
-        technology = volt.get_olt_technology_from_unu_sn(self.onu_device)
+        # When interacting with VOLT-service remove the -X from onu_device
+        technology = volt.get_olt_technology_from_unu_sn(self.onu_device.split('-')[0])
 
         try:
             tp = volt.get_tech_profile(technology, self.tech_profile_id)
@@ -229,7 +230,7 @@
             id = self.get_used_s_c_tag_subscriber_id()
             if None != id and not is_update_with_same_tag:
                 raise XOSValidationError("The c_tag(%s) and s_tag(%s) pair you specified,has already been used by Subscriber with Id (%s)" % (self.c_tag,self.s_tag,id))
-                
+
 
         if not self.c_tag:
             self.c_tag = self.generate_c_tag()
@@ -250,7 +251,8 @@
                 provider_service = ps.leaf_model
                 if provider_service.name.lower() == "volt":
                     volt_service = provider_service
-                    if not volt_service.has_access_device(self.onu_device):
+                    # When interacting with VOLT-service remove the -X from onu_device
+                    if not volt_service.has_access_device(self.onu_device.split('-')[0]):
                        raise XOSValidationError("The onu_device you specified (%s) does not exists" % self.onu_device)
 
             # if the access network is managed by voltha, validate that the tech_profile_id actually exists
@@ -260,4 +262,4 @@
         super(RCORDSubscriber, self).save(*args, **kwargs)
         self.invalidate_related_objects()
         return
-                     
+
diff --git a/xos/synchronizer/models/test_models.py b/xos/synchronizer/models/test_models.py
index 16b0114..13ec5a4 100644
--- a/xos/synchronizer/models/test_models.py
+++ b/xos/synchronizer/models/test_models.py
@@ -79,6 +79,7 @@
         self.rcord_subscriber.id = None  # this is a new model
         self.rcord_subscriber.is_new = True
         self.rcord_subscriber.onu_device = "BRCM1234"
+        self.rcord_subscriber.onu_device_uni = "BRCM1234-1"
         self.rcord_subscriber.c_tag = 111
         self.rcord_subscriber.s_tag = 222
         self.rcord_subscriber.ips = Mock()
@@ -236,7 +237,7 @@
         s.c_tag = "111"
         s.s_tag = "223"
         s.onu_device = "BRCM1234"
-        
+
         self.rcord_subscriber.get_same_onu_subscribers = Mock()
         self.rcord_subscriber.get_same_onu_subscribers.return_value = [s]
 
