diff --git a/kafka/kafka_inter_container_library.go b/kafka/kafka_inter_container_library.go
index 4a3ec92..2d2714f 100644
--- a/kafka/kafka_inter_container_library.go
+++ b/kafka/kafka_inter_container_library.go
@@ -26,6 +26,7 @@
 	"github.com/opencord/voltha-go/common/log"
 	ic "github.com/opencord/voltha-go/protos/inter_container"
 	"reflect"
+	"strings"
 	"sync"
 	"time"
 )
@@ -178,7 +179,7 @@
 }
 
 // DeviceDiscovered publish the discovered device onto the kafka messaging bus
-func (kp *InterContainerProxy) DeviceDiscovered(deviceId string, deviceType string, parentId string) error {
+func (kp *InterContainerProxy) DeviceDiscovered(deviceId string, deviceType string, parentId string, publisher string) error {
 	log.Debugw("sending-device-discovery-msg", log.Fields{"deviceId": deviceId})
 	//	Simple validation
 	if deviceId == "" || deviceType == "" {
@@ -197,6 +198,7 @@
 		Id:         deviceId,
 		DeviceType: deviceType,
 		ParentId:   parentId,
+		Publisher:publisher,
 	}
 
 	var marshalledData *any.Any
@@ -560,6 +562,9 @@
 
 func CallFuncByName(myClass interface{}, funcName string, params ...interface{}) (out []reflect.Value, err error) {
 	myClassValue := reflect.ValueOf(myClass)
+	// Capitalize the first letter in the funcName to workaround the first capital letters required to
+	// invoke a function from a different package
+	funcName = strings.Title(funcName)
 	m := myClassValue.MethodByName(funcName)
 	if !m.IsValid() {
 		return make([]reflect.Value, 0), fmt.Errorf("method-not-found \"%s\"", funcName)
diff --git a/protos/inter_container.proto b/protos/inter_container.proto
index 931ddb9..ac2af4f 100644
--- a/protos/inter_container.proto
+++ b/protos/inter_container.proto
@@ -86,6 +86,7 @@
     string id = 1;
     string parent_id = 2;
     string device_type = 3;
+    string publisher = 4;
 }
 
 message InterAdapterMessageType {
diff --git a/rw_core/core/core.go b/rw_core/core/core.go
index 298c3ce..c42a64e 100644
--- a/rw_core/core/core.go
+++ b/rw_core/core/core.go
@@ -75,28 +75,28 @@
 }
 
 func (core *Core) Start(ctx context.Context) {
-	log.Info("starting-core", log.Fields{"coreId": core.instanceId})
+	log.Info("starting-adaptercore", log.Fields{"coreId": core.instanceId})
 	core.startKafkaMessagingProxy(ctx)
 	log.Info("values", log.Fields{"kmp": core.kmp})
-	core.deviceMgr = newDeviceManager(core.kmp, core.clusterDataProxy)
+	core.deviceMgr = newDeviceManager(core.kmp, core.clusterDataProxy, core.instanceId)
 	core.logicalDeviceMgr = newLogicalDeviceManager(core.deviceMgr, core.kmp, core.clusterDataProxy)
 	core.registerAdapterRequestHandler(ctx, core.instanceId, core.deviceMgr, core.logicalDeviceMgr, core.clusterDataProxy, core.localDataProxy)
 	go core.startDeviceManager(ctx)
 	go core.startLogicalDeviceManager(ctx)
 	go core.startGRPCService(ctx)
 
-	log.Info("core-started")
+	log.Info("adaptercore-started")
 }
 
 func (core *Core) Stop(ctx context.Context) {
-	log.Info("stopping-core")
+	log.Info("stopping-adaptercore")
 	core.exitChannel <- 1
 	// Stop all the started services
 	core.grpcServer.Stop()
 	core.logicalDeviceMgr.stop(ctx)
 	core.deviceMgr.stop(ctx)
 	core.kmp.Stop()
-	log.Info("core-stopped")
+	log.Info("adaptercore-stopped")
 }
 
 //startGRPCService creates the grpc service handlers, registers it to the grpc server
diff --git a/rw_core/core/device_manager.go b/rw_core/core/device_manager.go
index 682de48..34fc956 100644
--- a/rw_core/core/device_manager.go
+++ b/rw_core/core/device_manager.go
@@ -38,16 +38,18 @@
 	kafkaICProxy        *kafka.InterContainerProxy
 	stateTransitions    *TransitionMap
 	clusterDataProxy    *model.Proxy
+	coreInstanceId string
 	exitChannel         chan int
 	lockDeviceAgentsMap sync.RWMutex
 }
 
-func newDeviceManager(kafkaICProxy *kafka.InterContainerProxy, cdProxy *model.Proxy) *DeviceManager {
+func newDeviceManager(kafkaICProxy *kafka.InterContainerProxy, cdProxy *model.Proxy, coreInstanceId string) *DeviceManager {
 	var deviceMgr DeviceManager
 	deviceMgr.exitChannel = make(chan int, 1)
 	deviceMgr.deviceAgents = make(map[string]*DeviceAgent)
 	deviceMgr.adapterProxy = NewAdapterProxy(kafkaICProxy)
 	deviceMgr.kafkaICProxy = kafkaICProxy
+	deviceMgr.coreInstanceId = coreInstanceId
 	deviceMgr.clusterDataProxy = cdProxy
 	deviceMgr.lockDeviceAgentsMap = sync.RWMutex{}
 	return &deviceMgr
@@ -360,7 +362,7 @@
 	}
 
 	// Publish on the messaging bus that we have discovered new devices
-	go dMgr.kafkaICProxy.DeviceDiscovered(agent.deviceId, deviceType, parentDeviceId)
+	go dMgr.kafkaICProxy.DeviceDiscovered(agent.deviceId, deviceType, parentDeviceId, dMgr.coreInstanceId)
 
 	return nil
 }
diff --git a/tests/kafka/kafka_inter_container_messaging_test.go b/tests/kafka/kafka_inter_container_messaging_test.go
index 57e7ab9..de97558 100644
--- a/tests/kafka/kafka_inter_container_messaging_test.go
+++ b/tests/kafka/kafka_inter_container_messaging_test.go
@@ -524,7 +524,7 @@
 	time.Sleep(time.Millisecond * 100)
 
 	// Send the message
-	go testProxy.DeviceDiscovered("TestDeviceId", "TestDevicetype", "TestParentId")
+	go testProxy.DeviceDiscovered("TestDeviceId", "TestDevicetype", "TestParentId", "myPODName")
 
 	msg := <-waitingChannel
 	totalTime := (time.Now().UnixNano() - msg.Header.Timestamp) / int64(time.Millisecond)
@@ -536,6 +536,7 @@
 	assert.Equal(t, dd.Id, "TestDeviceId")
 	assert.Equal(t, dd.DeviceType, "TestDevicetype")
 	assert.Equal(t, dd.ParentId, "TestParentId")
+	assert.Equal(t, dd.Publisher, "myPODName")
 	log.Debugw("TotalTime", log.Fields{"time": totalTime})
 }
 
