diff --git a/demo_test/cmd_client/Note b/demo_test/cmd_client/Note
index ca0c094..4781181 100644
--- a/demo_test/cmd_client/Note
+++ b/demo_test/cmd_client/Note
@@ -47,11 +47,14 @@
 Set IP 192.168.4.27 port 8888 vendor "edgecore" freq 180
 									attach:192.168.4.27:8888:edgecore:180
 --------------------------------------------------------------------------------------
-set multi-deivies info                                                  Example:
+set multi-device info                                                  Example:
 
 									attach:192.168.4.27:8888:edgecore:180
 									attach:192.168.3.34:8888:edgecore:180
 --------------------------------------------------------------------------------------
+Get Current List of Devices monitored					showdevices
+									Return from server: 192.168.4.26:8888,192.168.4.27:8888
+--------------------------------------------------------------------------------------
 UnSubscribe all events(ResourceAdded/ResourceRemoved/Alert)		unsub:192.168.4.27:8888:add:rm:alert
 --------------------------------------------------------------------------------------
 Subscribe all events(ResourceAdded/ResourceRemoved/Alert) 		sub:192.168.4.27:8888:add:rm:alert
diff --git a/demo_test/test.go b/demo_test/test.go
index 05582ad..d1d7ca9 100644
--- a/demo_test/test.go
+++ b/demo_test/test.go
@@ -128,8 +128,11 @@
 	vendorinfo.Vendor = vendor
 	var ret_msg *importer.EventList
 	ret_msg, err := cc.GetEventList(ctx, vendorinfo)
-
-	return err, ret_msg.Events
+	if err != nil {
+		return err, nil
+	} else {
+		return err, ret_msg.Events
+	}
 }
 
 /*///////////////////////////////////////////////////////////////////////*/
@@ -143,8 +146,11 @@
 	currentdeviceinfo.IpAddress = ip_address
 	var ret_msg *importer.EventList
 	ret_msg, err := cc.GetCurrentEventList(ctx, currentdeviceinfo)
-
-	return err, ret_msg.Events
+	if err != nil {
+		return err, nil
+	} else {
+		return err, ret_msg.Events
+	}
 }
 
 /*///////////////////////////////////////////////////////////////////////*/
@@ -161,6 +167,23 @@
 	return err
 }
 
+/*///////////////////////////////////////////////////////////////////////*/
+// Allows user to get the current devices that are monitored
+//
+//
+/*///////////////////////////////////////////////////////////////////////*/
+func GetCurrentDevices() (error, []string) {
+	fmt.Println("Testing GetCurrentDevices\n")
+	empty := new(importer.Empty)
+	var ret_msg *importer.DeviceList
+	ret_msg, err := cc.GetCurrentDevices(ctx, empty)
+	if err != nil {
+		return err, nil
+	} else {
+		return err, ret_msg.Ip
+	}
+}
+
 func init() {
 	Formatter := new(log.TextFormatter)
 	Formatter.TimestampFormat = "02-01-2006 15:04:05"
@@ -439,6 +462,26 @@
 					}
 				}
 
+			case "showdevices":
+				cmd_size := len(s)
+				fmt.Print("cmd is :", cmd, cmd_size)
+				if cmd_size > 2 || cmd_size < 0 {
+					fmt.Print("error event !!")
+					newmessage = "error event !!"
+				} else {
+					err, currentlist := GetCurrentDevices()
+
+					if err != nil {
+						errStatus, _ := status.FromError(err)
+						fmt.Println(errStatus.Message())
+						fmt.Println(errStatus.Code())
+						newmessage = errStatus.Message()
+						fmt.Print("showdevices error!!")
+					} else {
+						fmt.Print("showdevices ", currentlist)
+						newmessage = strings.Join(currentlist[:], ", ")
+					}
+				}
 			case "QUIT":
 				loop = false
 				newmessage = "QUIT"
diff --git a/main.go b/main.go
index bc0e3ba..0510876 100644
--- a/main.go
+++ b/main.go
@@ -75,7 +75,7 @@
 }
 
 func (s *Server) ClearCurrentEventList(c context.Context, info *importer.Device) (*empty.Empty, error) {
-	fmt.Println("Received GetCurrentEventList\n")
+	fmt.Println("Received ClearCurrentEventList\n")
 	ip_address := info.IpAddress
 	_, found := s.devicemap[ip_address]
 	if !found {
@@ -97,7 +97,7 @@
 }
 
 func (s *Server) GetCurrentEventList(c context.Context, info *importer.Device) (*importer.EventList, error) {
-	fmt.Println("Received ClearCurrentEventList\n")
+	fmt.Println("Received GetCurrentEventList\n")
 	_, found := s.devicemap[info.IpAddress]
 	if !found {
 		return nil, status.Errorf(codes.NotFound, "Device not registered")
@@ -277,6 +277,22 @@
 	return &empty.Empty{}, nil
 }
 
+func (s *Server) GetCurrentDevices(c context.Context, e *importer.Empty) (*importer.DeviceList, error) {
+	fmt.Println("In Received GetCurrentDevices\n")
+
+	if len(s.devicemap) == 0 {
+		return nil, status.Errorf(codes.NotFound, "Devices not registered")
+	}
+	dl := new(importer.DeviceList)
+	for k, v := range s.devicemap {
+		if v != nil {
+			fmt.Printf("IpAdd[%s] \n", k)
+			dl.Ip = append(dl.Ip, k)
+		}
+	}
+	return dl, nil
+}
+
 func NewGrpcServer(grpcport string) (l net.Listener, g *grpc.Server, e error) {
 	fmt.Printf("Listening %s\n", grpcport)
 	g = grpc.NewServer()
diff --git a/proto/importer.proto b/proto/importer.proto
index dd85cd1..e7117b1 100644
--- a/proto/importer.proto
+++ b/proto/importer.proto
@@ -36,8 +36,12 @@
 	string IpAddress = 1;
 }
 
+message DeviceList {
+        repeated string ip = 1;
+}
 
 message Empty {}
+
 service device_management {
     rpc SendDeviceInfo(DeviceInfo) returns (google.protobuf.Empty) {}
 
@@ -53,6 +57,7 @@
 
     rpc ClearCurrentEventList(Device) returns (google.protobuf.Empty) {}
 
+	rpc GetCurrentDevices(Empty) returns (DeviceList) {}
 }
 
 
