diff --git a/tests/atests/common/dhcp.py b/tests/atests/common/dhcp.py
index 391c2dc..9647ba6 100644
--- a/tests/atests/common/dhcp.py
+++ b/tests/atests/common/dhcp.py
@@ -41,6 +41,7 @@
         self.dirs['voltha'] = None
 
         self.__rgName = testCaseUtils.discover_rg_pod_name()
+        self.__onuCount = None
         self.__fields = None
         self.__deviceId = None
         self.__portNumber = None
@@ -48,25 +49,20 @@
     def h_set_log_dirs(self, root_dir, voltha_dir, log_dir):
         testCaseUtils.config_dirs(self, log_dir, root_dir, voltha_dir)
 
+    def h_configure(self, onu_count):
+        self.__onuCount = onu_count
+
     def discover_authorized_users(self):
         testCaseUtils.send_command_to_onos_cli(testCaseUtils.get_dir(self, 'log'),
                                                'voltha_onos_users.log', 'aaa-users')
 
-    def retrieve_authorized_users_device_id_and_port_number(self):
+    def extract_authorized_user_device_id_and_port_number(self):
         statusLines = testCaseUtils.get_fields_from_grep_command(self, 'AUTHORIZED', 'voltha_onos_users.log')
-        assert statusLines, 'No Users Authorized'
-        self.__fields = testCaseUtils.parse_fields(statusLines, ',')
-        deviceField = self.__fields[2].strip()
-        deviceStr, equal, deviceId = deviceField.partition('=')
-        self.__deviceId = deviceId
-        portField = self.__fields[4].strip()
-        portNumStr, equal, portNum = portField.partition('=')
-        self.__portNumber = portNum
+        assert statusLines, 'No ONU has been authenticated'
+        self.__deviceId, self.__portNumber = testCaseUtils.retrieve_authorized_users_device_id_and_port_number(statusLines)
 
-    def add_subscriber_access(self):
-        testCaseUtils.send_command_to_onos_cli(testCaseUtils.get_dir(self, 'log'),
-                                               'voltha_add_subscriber_access.log', 'volt-add-subscriber-access %s %s'
-                                               % (self.__deviceId, self.__portNumber))
+    def add_onu_bound_dhcp_flows(self):
+        testCaseUtils.add_subscriber_access(self, self.__deviceId, self.__portNumber)
 
     def should_now_have_two_dhcp_flows(self):
         testCaseUtils.send_command_to_onos_cli(testCaseUtils.get_dir(self, 'log'),
@@ -206,25 +202,42 @@
         statusLines = testCaseUtils.get_fields_from_grep_command(self, 'inet', self.CHECK_ASSIGNED_IP_FILENAME)
         assert statusLines, 'DHCP IP addr not assigned'
 
+    def should_have_ips_assigned_to_all_onus(self):
+        logging.info('Verifying IP Address assignment on all ONUs')
+        testCaseUtils.send_command_to_onos_cli(testCaseUtils.get_dir(self, 'log'),
+                                               '_voltha_onos_dhcpl2relay_allocations.log', 'dhcpl2relay-allocations')
+        statusLines = testCaseUtils.get_fields_from_grep_command(self, 'DHCPACK', '_voltha_onos_dhcpl2relay_allocations.log')
+        assert statusLines, 'No DHCP addresses allocated'
+        lines = statusLines.splitlines()
+        assert len(lines) == self.__onuCount, 'Allocated IPs does not match ONU count but result was %s' % len(lines)
+        for line in lines:
+            self.__fields = testCaseUtils.parse_fields(line, ',')
+            allocIp = self.__fields[5].strip()
+            allocated, delimiter, ipAddr = allocIp.partition('=')
+            assert ipAddr != '0.0.0.0', 'Invalid IP Address Allocated'
+
 
 def set_firewall_rules():
     logging.info('Setting Firewall rules for DHCP test')
     os.system('sudo iptables -P FORWARD ACCEPT')
 
 
-def run_test(root_dir, voltha_dir, log_dir):
-
-    set_firewall_rules()
+def run_test(onu_count, root_dir, voltha_dir, log_dir, simtype):
     dhcp = DHCP()
     dhcp.h_set_log_dirs(root_dir, voltha_dir, log_dir)
-    dhcp.discover_authorized_users()
-    dhcp.retrieve_authorized_users_device_id_and_port_number()
-    dhcp.add_subscriber_access()
-    dhcp.should_now_have_two_dhcp_flows()
-    dhcp.deactivate_dhcp_server_in_onos()
-    dhcp.add_dhcp_server_configuration_data_in_onos()
-    dhcp.activate_dhcp_server_in_onos()
-    dhcp.query_for_default_ip_on_rg()
-    dhcp.de_assign_default_ip_on_rg()
-    dhcp.assign_dhcp_ip_addr_to_rg()
-    dhcp.should_have_dhcp_assigned_ip()
+    dhcp.h_configure(onu_count)
+    if simtype == 'ponsim':
+        set_firewall_rules()
+        dhcp.discover_authorized_users()
+        dhcp.extract_authorized_user_device_id_and_port_number()
+        dhcp.add_onu_bound_dhcp_flows()
+        dhcp.should_now_have_two_dhcp_flows()
+        dhcp.deactivate_dhcp_server_in_onos()
+        dhcp.add_dhcp_server_configuration_data_in_onos()
+        dhcp.activate_dhcp_server_in_onos()
+        dhcp.query_for_default_ip_on_rg()
+        dhcp.de_assign_default_ip_on_rg()
+        dhcp.assign_dhcp_ip_addr_to_rg()
+        dhcp.should_have_dhcp_assigned_ip()
+    elif simtype == 'bbsim':
+        dhcp.should_have_ips_assigned_to_all_onus()
