diff --git a/RELNOTES b/RELNOTES
index 4e64950..99d79ef 100644
--- a/RELNOTES
+++ b/RELNOTES
@@ -1,4 +1,4 @@
-### v0.1.0
+### v0.1.0i
 * Receives and Forwards RMR Subscription Requests
 * Introduces RCO (Stub xApp) and E2T (Stub Platform Component) for testing purposes
 * Builder and Deployer scripts and manifests 
diff --git a/manifests/submgr/submgr-dep.yaml b/manifests/submgr/submgr-dep.yaml
index 0ed7bec..9e282f8 100644
--- a/manifests/submgr/submgr-dep.yaml
+++ b/manifests/submgr/submgr-dep.yaml
@@ -37,7 +37,7 @@
     spec:
       containers:
       - name: submgr
-        image: cmaster:5000/submgr:0.1.0
+        image: cmaster:5000/submgr:0.1.0i
         command: ["/run_submgr.sh"]
         env:
         - name: DBAAS_SERVICE_HOST
diff --git a/pkg/control/control.go b/pkg/control/control.go
index 6c75063..d213c65 100644
--- a/pkg/control/control.go
+++ b/pkg/control/control.go
@@ -67,21 +67,29 @@
 }
 
 func (c *Control) handleSubscriptionRequest(datagram *RmrDatagram) ( err error) {
+  /* TODO: removed to being able to integrate with UEMGR
   content, err := c.e2ap.GetPayloadContent(datagram.Payload)
-  xapp.Logger.Info("Subscription Request received: %v", content)
+  */
+  xapp.Logger.Info("Subscription Request Message received with ID: %v", datagram.SubscriptionId)
   new_sub_id := c.registry.GetSubscriptionId()
+  /* TODO: removed to being able to integrate with UEMGR
   payload, err := c.e2ap.SetSubscriptionSequenceNumber(datagram.Payload, new_sub_id)
   if err != nil {
     xapp.Logger.Error("Unable to set Subscription Sequence Number in Payload due to: "+ err.Error())
     return
   }
-  xapp.Logger.Info("New Subscription Accepted, Forwarding to E2T")
-  c.rmrSend(&RmrDatagram{C.RIC_SUB_REQ , new_sub_id, payload})
+  */
+  xapp.Logger.Info("New Subscription Registered, forwarding to E2T")
+  c.rmrSend(&RmrDatagram{C.RIC_SUB_REQ , new_sub_id, datagram.Payload})
   return
 }
 
 func (c *Control) handleSubscriptionResponse(datagram *RmrDatagram) ( err error) {
+  /* TODO: removed to being able to integrate with UEMGR
   content, err := c.e2ap.GetPayloadContent(datagram.Payload)
-  xapp.Logger.Info("Subscription Response received: %v", content)
+  */
+  xapp.Logger.Info("Subscription Response Message received with ID: %v", datagram.SubscriptionId)
+  xapp.Logger.Info("Subscription Response Registered, forwarding to Requestor")
+  c.rmrSend(&RmrDatagram{C.RIC_SUB_RESP , datagram.SubscriptionId, datagram.Payload})
   return
 }
\ No newline at end of file
diff --git a/test/e2t/e2t.go b/test/e2t/e2t.go
index 119e59e..2e1f4ac 100644
--- a/test/e2t/e2t.go
+++ b/test/e2t/e2t.go
@@ -21,7 +21,9 @@
 
 import (
 	"gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
+	/* TODO: removed to being able to integrate with UEMGR
 	submgr "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/control"
+	*/
 	"errors"
 )
 
@@ -29,23 +31,27 @@
 }
 
 func (e E2t ) Consume(mtype, sub_id int, len int, payload []byte) (err error) {
+	/* TODO: removed to being able to integrate with UEMGR
 	asn1 := submgr.Asn1{}
 	message, err := asn1.Decode(payload)
 	if err != nil {
 		xapp.Logger.Debug("E2T asn1Decoding failure due to "+ err.Error())
 		return
 	}
-	xapp.Logger.Info("E2T Received Message content: %v", message)
-	err = e.subscriptionResponse(sub_id)
+	*/
+	xapp.Logger.Info("E2T Received Message with RMR Subsriprion ID: %v, Responding...", sub_id)
+	err = e.subscriptionResponse(sub_id, payload)
 	return
 }
 
-func (e E2t ) subscriptionResponse(sub_id int) (err error) {
+func (e E2t ) subscriptionResponse(sub_id int, payload []byte) (err error) {
+	/* TODO: removed to being able to integrate with UEMGR
 	asn1 := submgr.Asn1{}
 	payload, err := asn1.Encode(submgr.RmrPayload{8, sub_id, "E2T: RCO Subscribed"})
 	if err != nil {
 		return
 	}
+	*/
 	if !xapp.Rmr.Send(12011, sub_id, len(payload), payload) {
 		err = errors.New("rmr.Send() failed")	
 	}
