diff --git a/tempest/api/network/admin/test_routers.py b/tempest/api/network/admin/test_routers.py
index 90e0917..5c32ea4 100644
--- a/tempest/api/network/admin/test_routers.py
+++ b/tempest/api/network/admin/test_routers.py
@@ -12,6 +12,7 @@
 #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 #    License for the specific language governing permissions and limitations
 #    under the License.
+import time
 
 import testtools
 
@@ -22,6 +23,7 @@
 from tempest.lib.common.utils import data_utils
 from tempest.lib.common.utils import test_utils
 from tempest.lib import decorators
+from tempest.lib import exceptions as lib_exc
 
 CONF = config.CONF
 
@@ -115,7 +117,30 @@
         for k, v in exp_ext_gw_info.items():
             self.assertEqual(v, actual_ext_gw_info[k])
 
+    def _wait_for_ports(self, router_id, timeout=30):
+        start = int(time.time())
+        list_body = self.admin_ports_client.list_ports(
+            network_id=CONF.network.public_network_id,
+            device_id=router_id,
+            device_owner="network:router_gateway")
+
+        while not len(list_body['ports']):
+            time.sleep(5)
+            list_body = self.admin_ports_client.list_ports(
+                network_id=CONF.network.public_network_id,
+                device_id=router_id,
+                device_owner="network:router_gateway")
+            timed_out = int(time.time()) - start >= timeout
+            if not len(list_body['ports']) and timed_out:
+                message = ('Router %s failed to attach ports within '
+                           'the required time (%s s).' %
+                           (router_id, timeout))
+                raise lib_exc.TimeoutException(message)
+
     def _verify_gateway_port(self, router_id):
+        # Workaround for PRODX-8489
+        if CONF.get('sdn').get('service_name') == "tungstenfabric":
+            self._wait_for_ports(router_id)
         list_body = self.admin_ports_client.list_ports(
             network_id=CONF.network.public_network_id,
             device_id=router_id,
