diff --git a/python/adapters/brcm_openomci_onu/brcm_openomci_onu_handler.py b/python/adapters/brcm_openomci_onu/brcm_openomci_onu_handler.py
index 4fe1546..a159a91 100644
--- a/python/adapters/brcm_openomci_onu/brcm_openomci_onu_handler.py
+++ b/python/adapters/brcm_openomci_onu/brcm_openomci_onu_handler.py
@@ -399,7 +399,7 @@
 
         tcont = OnuTCont.create(self, tcont=tcontdict)
 
-        success = self._pon.add_tcont(tcont)
+        success = self._pon.add_tcont(tcont, True)
         if success:
             new_tconts.append(tcont)
             self.log.debug('pon-add-tcont', tcont=tcont)
diff --git a/python/adapters/brcm_openomci_onu/omci/brcm_tp_setup_task.py b/python/adapters/brcm_openomci_onu/omci/brcm_tp_setup_task.py
index 9d2eb09..fbbe86a 100644
--- a/python/adapters/brcm_openomci_onu/omci/brcm_tp_setup_task.py
+++ b/python/adapters/brcm_openomci_onu/omci/brcm_tp_setup_task.py
@@ -162,12 +162,13 @@
     @inlineCallbacks
     def perform_service_specific_steps(self):
         self.log.info('starting-tech-profile-setup', uni_id=self._uni_port.uni_id,
-                        tconts=self._tconts, gem_ports=self._gem_ports, tp_table_id=self._tp_table_id)
+                      tconts=self._tconts, gem_ports=self._gem_ports, tp_table_id=self._tp_table_id)
 
         omci_cc = self._onu_device.omci_cc
         gem_pq_associativity = dict()
         pq_to_related_port = dict()
         is_related_ports_configurable = False
+        tcont_entity_id = 0
 
         try:
             ################################################################################
@@ -197,6 +198,9 @@
             tcont_idents = self._onu_device.query_mib(Tcont.class_id)
             self.log.debug('tcont-idents', tcont_idents=tcont_idents)
 
+            # There can be only one tcont that can be installed per tech-profile download task
+            # Each tech-profile represents a single tcont and associated gemports
+            assert len(self._tconts) == 1
             for tcont in self._tconts:
                 self.log.debug('tcont-loop', tcont=tcont)
 
@@ -220,8 +224,13 @@
                     # Also assign entity id within tcont object
                     results = yield tcont.add_to_hardware(omci_cc, free_entity_id)
                     self.check_status_and_state(results, 'new-tcont-added')
+                    # There is only tcont to be added per tech-profile download procedure
+                    # So, there is no issue of overwriting the 'tcont_entity_id'
+                    tcont_entity_id = free_entity_id
+
                 else:
                     self.log.debug('tcont-already-assigned', tcont_entity_id=tcont.entity_id, alloc_id=tcont.alloc_id)
+                    tcont_entity_id = tcont.entity_id
 
             ################################################################################
             # GEMS  (GemPortNetworkCtp and GemInterworkingTp)
@@ -269,29 +278,32 @@
                 except TypeError:
                     continue
 
-                if 'instance_id' in v:
+                # Parse PQ MEs only with relevant information
+                if 'instance_id' in v and 'related_port' in v['attributes']:
                     related_port = v['attributes']['related_port']
                     pq_to_related_port[k] = related_port
-
+                    # If the MSB is set, it represents an Upstream PQ referencing the TCONT
                     if v['instance_id'] & 0b1000000000000000:
-                        tcont_me = (related_port & 0xffff0000) >> 16
-                        if tcont_me not in self.tcont_me_to_queue_map:
-                            self.log.debug("prior-q-related-port-and-tcont-me",
-                                           related_port=related_port,
-                                           tcont_me=tcont_me)
-                            self.tcont_me_to_queue_map[tcont_me] = list()
+                        # If it references the TCONT ME we have just installed
+                        if tcont_entity_id == (related_port & 0xffff0000) >> 16:
+                            if tcont_entity_id not in self.tcont_me_to_queue_map:
+                                self.log.debug("prior-q-related-port-and-tcont-me",
+                                               related_port=related_port,
+                                               tcont_me=tcont_entity_id)
+                                self.tcont_me_to_queue_map[tcont_entity_id] = list()
+                            # Store the PQ into the list which is referenced by TCONT ME we have provisioned
+                            self.tcont_me_to_queue_map[tcont_entity_id].append(k)
 
-                        self.tcont_me_to_queue_map[tcont_me].append(k)
                     else:
-                        uni_port = (related_port & 0xffff0000) >> 16
-                        if uni_port == self._uni_port.entity_id:
-                            if uni_port not in self.uni_port_to_queue_map:
+                        # This represents the PQ pointing to the UNI Port ME (Downstream PQ)
+                        if self._uni_port.entity_id == (related_port & 0xffff0000) >> 16:
+                            if self._uni_port.entity_id not in self.uni_port_to_queue_map:
                                 self.log.debug("prior-q-related-port-and-uni-port-me",
                                                related_port=related_port,
-                                               uni_port_me=uni_port)
-                                self.uni_port_to_queue_map[uni_port] = list()
-
-                            self.uni_port_to_queue_map[uni_port].append(k)
+                                               uni_port_me=self._uni_port.entity_id)
+                                self.uni_port_to_queue_map[self._uni_port.entity_id] = list()
+                            # Store the PQ into the list which is referenced by UNI Port ME we have provisioned
+                            self.uni_port_to_queue_map[self._uni_port.entity_id].append(k)
 
             self.log.debug("ul-prior-q", ul_prior_q=self.tcont_me_to_queue_map)
             self.log.debug("dl-prior-q", dl_prior_q=self.uni_port_to_queue_map)
diff --git a/python/adapters/brcm_openomci_onu/pon_port.py b/python/adapters/brcm_openomci_onu/pon_port.py
index 634fd7e..2ee3344 100644
--- a/python/adapters/brcm_openomci_onu/pon_port.py
+++ b/python/adapters/brcm_openomci_onu/pon_port.py
@@ -177,7 +177,8 @@
             return False # already created
 
         self.log.info('add-tcont', tcont=tcont.alloc_id, reflow=reflow)
-        self._tconts[tcont.alloc_id] = tcont
+        if tcont.alloc_id not in self._tconts:
+            self._tconts[tcont.alloc_id] = tcont
         return True
 
     @inlineCallbacks
