diff --git a/adaptercore/openolt_flowmgr.go b/adaptercore/openolt_flowmgr.go
index dc250c1..03fa739 100644
--- a/adaptercore/openolt_flowmgr.go
+++ b/adaptercore/openolt_flowmgr.go
@@ -877,24 +877,24 @@
 	log.Debugw("Got child device from OLT device handler", log.Fields{"device": *onuDevice})
 	/* TODO: uncomment once voltha-proto is ready with changes */
 	/*
-	        tpPath := f.getTPpath(intfId, uni)
-	        tpDownloadMsg := &ic.TechProfileDownload{UniId: uniId, Path: tpPath}
-	        var tpDownloadMsg interface{}
-	        log.Infow("Sending Load-tech-profile-request-to-brcm-onu-adapter",log.Fields{"msg": *tpDownloadMsg})
-	        sendErr := f.deviceHandler.AdapterProxy.SendInterAdapterMessage(context.Background(),
-	                                                           tpDownloadMsg,
-	                                                           //ic.InterAdapterMessageType_TECH_PROFILE_DOWNLOAD_REQUEST,
-	                                                           ic.InterAdapterMessageType_OMCI_REQUEST,
-	                                                           f.deviceHandler.deviceType,
-	                                                           onuDevice.Type,
-			                                           onuDevice.Id,
-	                                                           onuDevice.ProxyAddress.DeviceId, "")
-	        if sendErr != nil {
-	            log.Errorw("send techprofile-download request error", log.Fields{"fromAdapter": f.deviceHandler.deviceType,
-	                                          "toAdapter": onuDevice.Type, "onuId": onuDevice.Id,
-	                                          "proxyDeviceId": onuDevice.ProxyAddress.DeviceId})
-	            return sendErr
-	       }
-	       log.Debugw("success Sending Load-tech-profile-request-to-brcm-onu-adapter",log.Fields{"msg":tpDownloadMsg})*/
+		        tpPath := f.getTPpath(intfId, uni)
+		        tpDownloadMsg := &ic.TechProfileDownload{UniId: uniId, Path: tpPath}
+		        var tpDownloadMsg interface{}
+		        log.Infow("Sending Load-tech-profile-request-to-brcm-onu-adapter",log.Fields{"msg": *tpDownloadMsg})
+		        sendErr := f.deviceHandler.AdapterProxy.SendInterAdapterMessage(context.Background(),
+		                                                           tpDownloadMsg,
+		                                                           //ic.InterAdapterMessageType_TECH_PROFILE_DOWNLOAD_REQUEST,
+		                                                           ic.InterAdapterMessageType_OMCI_REQUEST,
+		                                                           f.deviceHandler.deviceType,
+		                                                           onuDevice.Type,
+				                                           onuDevice.Id,
+		                                                           onuDevice.ProxyAddress.DeviceId, "")
+		        if sendErr != nil {
+		            log.Errorw("send techprofile-download request error", log.Fields{"fromAdapter": f.deviceHandler.deviceType,
+		                                          "toAdapter": onuDevice.Type, "onuId": onuDevice.Id,
+		                                          "proxyDeviceId": onuDevice.ProxyAddress.DeviceId})
+		            return sendErr
+		       }
+		       log.Debugw("success Sending Load-tech-profile-request-to-brcm-onu-adapter",log.Fields{"msg":tpDownloadMsg})*/
 	return nil
 }
