diff --git a/xos/synchronizer/steps/sync_hippie_oss_service_instance.py b/xos/synchronizer/steps/sync_hippie_oss_service_instance.py
index 9ca7678..fef1722 100644
--- a/xos/synchronizer/steps/sync_hippie_oss_service_instance.py
+++ b/xos/synchronizer/steps/sync_hippie_oss_service_instance.py
@@ -14,7 +14,7 @@
 
 import json
 from synchronizers.new_base.syncstep import SyncStep, model_accessor
-from synchronizers.new_base.modelaccessor import HippieOSSServiceInstance
+from synchronizers.new_base.modelaccessor import HippieOSSServiceInstance, HippieOSSWhiteListEntry
 
 from xosconfig import Config
 from multistructlog import create_logger
@@ -27,14 +27,14 @@
 
     def validate_in_external_oss(self, si):
         # This is where you may want to call your OSS Database to verify if this ONU can be activated
-
-        # for demonstration the HippieOSSService has a whitelist and if the serial_number
-        # you provided is not in that blacklist, it won't be validated
         oss_service = si.owner.leaf_model
 
-        if si.serial_number not in [x.strip() for x in oss_service.whitelist.split(',')]:
-            return False
-        return True
+        # See if there is a matching entry in the whitelist.
+
+        matching_entries = HippieOSSWhiteListEntry.objects.filter(owner_id=oss_service.id,
+                                                                  serial_number=si.serial_number)
+
+        return len(matching_entries)>0
 
     def get_suscriber_c_tag(self, serial_number):
         # If it's up to your OSS to generate c_tags, fetch them here
diff --git a/xos/synchronizer/steps/test_sync_hippie_oss_service_instance.py b/xos/synchronizer/steps/test_sync_hippie_oss_service_instance.py
index 51bc04e..dca961f 100644
--- a/xos/synchronizer/steps/test_sync_hippie_oss_service_instance.py
+++ b/xos/synchronizer/steps/test_sync_hippie_oss_service_instance.py
@@ -78,7 +78,7 @@
 
         self.oss = Mock()
         self.oss.name = "oss"
-        self.oss.whitelist = "BRCM5678, BRCM1234"
+        self.oss.id = 5367
 
         # create a mock HippieOssServiceInstance instance
         self.o = Mock()
@@ -92,16 +92,18 @@
         sys.path = self.sys_path_save
 
     def test_sync_valid(self):
+        with patch.object(HippieOSSWhiteListEntry.objects, "get_items") as whitelist_items:
+            # Create a whitelist entry for self.o's serial number
+            whitelist_entry = HippieOSSWhiteListEntry(owner_id=self.oss.id, serial_number=self.o.serial_number)
+            whitelist_items.return_value = [whitelist_entry]
 
-        self.sync_step().sync_record(self.o)
+            self.sync_step().sync_record(self.o)
 
-        self.assertEqual(self.o.valid, "valid")
-        self.assertTrue(self.o.no_sync)
-        self.o.save.assert_called()
+            self.assertEqual(self.o.valid, "valid")
+            self.assertTrue(self.o.no_sync)
+            self.o.save.assert_called()
 
     def test_sync_rejected(self):
-        self.oss.whitelist = ""
-
         self.sync_step().sync_record(self.o)
 
         self.assertEqual(self.o.valid, "invalid")
