diff --git a/xos/synchronizer/model_policies/model_policy_att_workflow_driver_service.py b/xos/synchronizer/model_policies/model_policy_att_workflow_driver_service.py
index 5fb076c..0c9d978 100644
--- a/xos/synchronizer/model_policies/model_policy_att_workflow_driver_service.py
+++ b/xos/synchronizer/model_policies/model_policy_att_workflow_driver_service.py
@@ -28,14 +28,14 @@
         # TODO(smbaker): This is redudant with AttWorkflowDriverWhiteListEntry model policy, though etaining this does provide
         # a handy way to trigger a full reexamination of the whitelist.
 
-        whitelist = [x.serial_number for x in service.whitelist_entries.all()]
+        whitelist = [x.serial_number.lower() for x in service.whitelist_entries.all()]
 
         for si in sis:
-            if si.serial_number in whitelist and not si.valid == "valid":
+            if si.serial_number.lower() in whitelist and not si.valid == "valid":
                 self.logger.debug("MODEL_POLICY: activating AttWorkflowDriverServiceInstance because of change in the whitelist", si=si)
                 si.valid = "valid"
                 si.save(update_fields=["valid", "no_sync", "updated"], always_update_timestamp=True)
-            if si.serial_number not in whitelist and not si.valid == "invalid":
+            if si.serial_number.lower() not in whitelist and not si.valid == "invalid":
                 self.logger.debug(
                     "MODEL_POLICY: disabling AttWorkflowDriverServiceInstance because of change in the whitelist", si=si)
                 si.valid = "invalid"
diff --git a/xos/synchronizer/model_policies/model_policy_att_workflow_driver_serviceinstance.py b/xos/synchronizer/model_policies/model_policy_att_workflow_driver_serviceinstance.py
index ef3363b..26b0367 100644
--- a/xos/synchronizer/model_policies/model_policy_att_workflow_driver_serviceinstance.py
+++ b/xos/synchronizer/model_policies/model_policy_att_workflow_driver_serviceinstance.py
@@ -67,7 +67,7 @@
 
             subscriber = None
             try:
-                subscriber = RCORDSubscriber.objects.get(onu_device=si.serial_number)
+                subscriber = [s for s in RCORDSubscriber.objects.all() if s.onu_device.lower() == si.serial_number.lower()][0]
             except IndexError:
                 # we just want to find out if it exists or not
                 pass
diff --git a/xos/synchronizer/model_policies/model_policy_att_workflow_driver_whitelistentry.py b/xos/synchronizer/model_policies/model_policy_att_workflow_driver_whitelistentry.py
index c38e7ec..c788d23 100644
--- a/xos/synchronizer/model_policies/model_policy_att_workflow_driver_whitelistentry.py
+++ b/xos/synchronizer/model_policies/model_policy_att_workflow_driver_whitelistentry.py
@@ -26,10 +26,19 @@
     def handle_update(self, whitelist):
         self.logger.debug("MODEL_POLICY: handle_update for AttWorkflowDriverWhiteListEntry", whitelist=whitelist)
 
-        sis = AttWorkflowDriverServiceInstance.objects.filter(serial_number = whitelist.serial_number,
-                                                   owner_id = whitelist.owner.id)
+        # TODO is Django construct '__iexact' available here?
+        # sis = AttWorkflowDriverServiceInstance.objects.filter(
+        #     serial_number = whitelist.serial_number,
+        #     owner_id = whitelist.owner.id)
+
+        sis = AttWorkflowDriverServiceInstance.objects.all()
 
         for si in sis:
+
+            if si.serial_number.lower() != whitelist.serial_number.lower():
+                # NOTE we don't care about this SI as it has a different serial number
+                continue
+
             if si.valid != "valid":
                 self.logger.debug("MODEL_POLICY: activating AttWorkflowDriverServiceInstance because of change in the whitelist", si=si)
                 si.valid = "valid"
diff --git a/xos/synchronizer/model_policies/test_model_policy_att_workflow_driver_service.py b/xos/synchronizer/model_policies/test_model_policy_att_workflow_driver_service.py
index 3af7cfe..576233f 100644
--- a/xos/synchronizer/model_policies/test_model_policy_att_workflow_driver_service.py
+++ b/xos/synchronizer/model_policies/test_model_policy_att_workflow_driver_service.py
@@ -111,7 +111,7 @@
             oss_si.return_value = [self.si1, self.si2, self.si3, self.si4]
 
             wle1 = AttWorkflowDriverWhiteListEntry(owner_id=self.service.id, serial_number="BRCM111")
-            wle2 = AttWorkflowDriverWhiteListEntry(owner_id=self.service.id, serial_number="BRCM222")
+            wle2 = AttWorkflowDriverWhiteListEntry(owner_id=self.service.id, serial_number="brcm222")
             self.service.whitelist_entries = self.MockObjectList([wle1, wle2])
 
             self.policy.handle_update(self.service)
diff --git a/xos/synchronizer/model_policies/test_model_policy_att_workflow_driver_serviceinstance.py b/xos/synchronizer/model_policies/test_model_policy_att_workflow_driver_serviceinstance.py
index 774efda..c47738d 100644
--- a/xos/synchronizer/model_policies/test_model_policy_att_workflow_driver_serviceinstance.py
+++ b/xos/synchronizer/model_policies/test_model_policy_att_workflow_driver_serviceinstance.py
@@ -200,7 +200,7 @@
     def test_subscriber_enable_status_auth_state_approved(self):
         self.si.valid = "valid"
         self.si.backend_code = 1
-        self.si.serial_number = "BRCM1234"
+        self.si.serial_number = "brcm1234"
         self.si.onu_state = "ENABLED"
         self.si.authentication_state = "APPROVED"
 
@@ -210,7 +210,7 @@
         )
 
         subscriber = RCORDSubscriber(
-            onu_device=self.si.serial_number,
+            onu_device="BRCM1234",
             status='awaiting-auth'
         )
 
diff --git a/xos/synchronizer/model_policies/test_model_policy_att_workflow_driver_whitelistentry.py b/xos/synchronizer/model_policies/test_model_policy_att_workflow_driver_whitelistentry.py
index 73c077a..68e1752 100644
--- a/xos/synchronizer/model_policies/test_model_policy_att_workflow_driver_whitelistentry.py
+++ b/xos/synchronizer/model_policies/test_model_policy_att_workflow_driver_whitelistentry.py
@@ -87,6 +87,20 @@
 
             self.assertEqual(si.valid, "valid")
 
+    def test_whitelist_update_case_insensitive(self):
+        """
+        When a whitelist entry is added, see that the AttWorkflowDriverIServicenstance was set to valid
+        """
+        with patch.object(AttWorkflowDriverServiceInstance.objects, "get_items") as oss_si_items:
+            si = AttWorkflowDriverServiceInstance(serial_number="brcm333", owner_id=self.service.id, valid="invalid")
+            oss_si_items.return_value = [si]
+
+            wle = AttWorkflowDriverWhiteListEntry(serial_number="BRCM333", owner_id=self.service.id, owner=self.service)
+
+            self.policy.handle_update(wle)
+
+            self.assertEqual(si.valid, "valid")
+
     def test_whitelist_delete(self):
         """
         When a whitelist entry is deleted, see that the AttWorkflowDriverIServicenstance was set to invalid
