diff --git a/dmi.pb b/dmi.pb
index ad8ef7a..2ded355 100644
--- a/dmi.pb
+++ b/dmi.pb
Binary files differ
diff --git a/docs/ManagingDevice.md b/docs/ManagingDevice.md
index 0d9f0c2..f6f545a 100644
--- a/docs/ManagingDevice.md
+++ b/docs/ManagingDevice.md
@@ -26,6 +26,13 @@
 
 *The device manager implementation should ensure that the `uuid` returned is universally unique and* ***does not change across reboots of the device.*** An example could be that the device manager first connects to the device and learns the serial number of the device and then uses this serial number to generate the `uuid` for the device.
 
+## StopManagingDevice
+``` protobuf
+// Stop management of a device and clean up any context caches for that device
+rpc StopManagingDevice(StopManagingDeviceRequest) returns(StopManagingDeviceResponse);
+```
+This RPC is to be used when a device is to be released from the system and no longer needs to be managed.
+
 ## GetPhysicalInventory
 ``` protobuf
 // Get the HW inventory details of the Device
diff --git a/go/dmi/hw_management_service.pb.go b/go/dmi/hw_management_service.pb.go
index 978f2bd..ef980fa 100644
--- a/go/dmi/hw_management_service.pb.go
+++ b/go/dmi/hw_management_service.pb.go
@@ -336,6 +336,92 @@
 	return nil
 }
 
+type StopManagingDeviceRequest struct {
+	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *StopManagingDeviceRequest) Reset()         { *m = StopManagingDeviceRequest{} }
+func (m *StopManagingDeviceRequest) String() string { return proto.CompactTextString(m) }
+func (*StopManagingDeviceRequest) ProtoMessage()    {}
+func (*StopManagingDeviceRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_eae902e73066286d, []int{6}
+}
+
+func (m *StopManagingDeviceRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StopManagingDeviceRequest.Unmarshal(m, b)
+}
+func (m *StopManagingDeviceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StopManagingDeviceRequest.Marshal(b, m, deterministic)
+}
+func (m *StopManagingDeviceRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StopManagingDeviceRequest.Merge(m, src)
+}
+func (m *StopManagingDeviceRequest) XXX_Size() int {
+	return xxx_messageInfo_StopManagingDeviceRequest.Size(m)
+}
+func (m *StopManagingDeviceRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_StopManagingDeviceRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_StopManagingDeviceRequest proto.InternalMessageInfo
+
+func (m *StopManagingDeviceRequest) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+type StopManagingDeviceResponse struct {
+	Status               Status   `protobuf:"varint,1,opt,name=status,proto3,enum=dmi.Status" json:"status,omitempty"`
+	Reason               Reason   `protobuf:"varint,2,opt,name=reason,proto3,enum=dmi.Reason" json:"reason,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *StopManagingDeviceResponse) Reset()         { *m = StopManagingDeviceResponse{} }
+func (m *StopManagingDeviceResponse) String() string { return proto.CompactTextString(m) }
+func (*StopManagingDeviceResponse) ProtoMessage()    {}
+func (*StopManagingDeviceResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_eae902e73066286d, []int{7}
+}
+
+func (m *StopManagingDeviceResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_StopManagingDeviceResponse.Unmarshal(m, b)
+}
+func (m *StopManagingDeviceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_StopManagingDeviceResponse.Marshal(b, m, deterministic)
+}
+func (m *StopManagingDeviceResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_StopManagingDeviceResponse.Merge(m, src)
+}
+func (m *StopManagingDeviceResponse) XXX_Size() int {
+	return xxx_messageInfo_StopManagingDeviceResponse.Size(m)
+}
+func (m *StopManagingDeviceResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_StopManagingDeviceResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_StopManagingDeviceResponse proto.InternalMessageInfo
+
+func (m *StopManagingDeviceResponse) GetStatus() Status {
+	if m != nil {
+		return m.Status
+	}
+	return Status_UNDEFINED_STATUS
+}
+
+func (m *StopManagingDeviceResponse) GetReason() Reason {
+	if m != nil {
+		return m.Reason
+	}
+	return Reason_UNDEFINED_REASON
+}
+
 func init() {
 	proto.RegisterType((*PhysicalInventoryRequest)(nil), "dmi.PhysicalInventoryRequest")
 	proto.RegisterType((*PhysicalInventoryResponse)(nil), "dmi.PhysicalInventoryResponse")
@@ -343,43 +429,47 @@
 	proto.RegisterType((*HWComponentInfoSetRequest)(nil), "dmi.HWComponentInfoSetRequest")
 	proto.RegisterType((*HWComponentInfoSetResponse)(nil), "dmi.HWComponentInfoSetResponse")
 	proto.RegisterType((*StartManagingDeviceResponse)(nil), "dmi.StartManagingDeviceResponse")
+	proto.RegisterType((*StopManagingDeviceRequest)(nil), "dmi.StopManagingDeviceRequest")
+	proto.RegisterType((*StopManagingDeviceResponse)(nil), "dmi.StopManagingDeviceResponse")
 }
 
 func init() { proto.RegisterFile("dmi/hw_management_service.proto", fileDescriptor_eae902e73066286d) }
 
 var fileDescriptor_eae902e73066286d = []byte{
-	// 487 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x54, 0xd1, 0x8a, 0xd3, 0x40,
-	0x14, 0x25, 0xad, 0xac, 0xf4, 0xd6, 0x2d, 0x38, 0xfa, 0x90, 0x46, 0x74, 0x97, 0x88, 0x20, 0xca,
-	0x36, 0xa5, 0xfb, 0x24, 0xbe, 0xa9, 0x6c, 0xbb, 0x0f, 0x5d, 0x24, 0x61, 0x29, 0xf8, 0x52, 0xa6,
-	0x99, 0xdb, 0x74, 0x60, 0x67, 0xa6, 0x66, 0x26, 0x5d, 0xf6, 0x37, 0xf4, 0x07, 0xfc, 0x28, 0x3f,
-	0xc2, 0xcf, 0x90, 0xcc, 0x6c, 0xd3, 0xd2, 0x6d, 0x44, 0x44, 0xc1, 0xb7, 0xe4, 0x9e, 0x73, 0x0f,
-	0xe7, 0xce, 0x9d, 0x33, 0x70, 0xc4, 0x04, 0x8f, 0x16, 0xd7, 0x53, 0x41, 0x25, 0xcd, 0x50, 0xa0,
-	0x34, 0x53, 0x8d, 0xf9, 0x8a, 0xa7, 0xd8, 0x5b, 0xe6, 0xca, 0x28, 0xd2, 0x64, 0x82, 0x07, 0x0f,
-	0x4b, 0x56, 0xaa, 0x84, 0x50, 0x52, 0xbb, 0x7a, 0xf0, 0xc0, 0x35, 0xba, 0xbf, 0xf0, 0x0c, 0xfc,
-	0x8f, 0x8b, 0x1b, 0xcd, 0x53, 0x7a, 0x75, 0x2e, 0x57, 0x28, 0x8d, 0xca, 0x6f, 0x62, 0xfc, 0x5c,
-	0xa0, 0x36, 0xe4, 0x15, 0xb4, 0x19, 0x96, 0x8a, 0xd3, 0xa2, 0xe0, 0xcc, 0xf7, 0x8e, 0xbd, 0x97,
-	0xed, 0x41, 0xab, 0xc7, 0x04, 0xef, 0x5d, 0x16, 0x9c, 0xc5, 0xe0, 0xd0, 0xf2, 0x3b, 0xfc, 0xe2,
-	0x41, 0x77, 0x8f, 0x90, 0x5e, 0x2a, 0xa9, 0x91, 0x3c, 0x87, 0x03, 0x6d, 0xa8, 0x29, 0xb4, 0x15,
-	0xe9, 0x0c, 0xda, 0x56, 0x24, 0xb1, 0xa5, 0xf8, 0x16, 0x2a, 0x49, 0x39, 0x52, 0xad, 0xa4, 0xdf,
-	0xd8, 0x22, 0xc5, 0xb6, 0x14, 0xdf, 0x42, 0xe4, 0x35, 0xb4, 0xf8, 0x5a, 0xde, 0x6f, 0x5a, 0x47,
-	0x87, 0x96, 0x37, 0xa2, 0x39, 0xbb, 0xa6, 0x39, 0xc6, 0x1b, 0x3c, 0xfc, 0xe6, 0x41, 0x77, 0x34,
-	0x79, 0xaf, 0xc4, 0x52, 0x49, 0x94, 0xe6, 0x5c, 0xce, 0xd5, 0x10, 0xcd, 0x1f, 0x8c, 0x47, 0xfa,
-	0xd0, 0x49, 0xd7, 0x32, 0x8e, 0xde, 0xd8, 0xa5, 0x1f, 0x56, 0x04, 0xdb, 0xf1, 0x62, 0xbb, 0x43,
-	0x52, 0x81, 0xd6, 0x6d, 0x6b, 0x8b, 0x76, 0x41, 0x05, 0x86, 0xdf, 0xef, 0x5a, 0x4c, 0xfe, 0x2f,
-	0x8b, 0x64, 0x00, 0xf7, 0xd3, 0x05, 0x95, 0x19, 0x6a, 0xff, 0x9e, 0x55, 0xf4, 0xad, 0xe2, 0x58,
-	0x31, 0x3e, 0xe7, 0x74, 0x76, 0x85, 0x95, 0xfb, 0x78, 0x4d, 0x0c, 0xe7, 0x10, 0xec, 0x9b, 0xea,
-	0x6f, 0x5f, 0x87, 0xf0, 0xab, 0x07, 0x4f, 0x12, 0x43, 0x73, 0x33, 0x2e, 0x63, 0xc0, 0x65, 0xf6,
-	0xc1, 0x1e, 0xc8, 0x3f, 0xb8, 0x78, 0x3b, 0xab, 0x68, 0xfe, 0x62, 0x15, 0x83, 0x1f, 0x0d, 0xe8,
-	0x5e, 0x50, 0xc3, 0x57, 0x38, 0x9a, 0x8c, 0xab, 0x7c, 0x26, 0x2e, 0x9e, 0x24, 0x81, 0x47, 0x7b,
-	0x2c, 0x93, 0xda, 0x53, 0x0d, 0x8e, 0xd7, 0xa6, 0xeb, 0xc6, 0xec, 0x7b, 0x64, 0x02, 0x8f, 0x87,
-	0x68, 0xee, 0x24, 0x90, 0x3c, 0xb5, 0xbd, 0x75, 0x11, 0x0f, 0x9e, 0xd5, 0xc1, 0x95, 0xf0, 0x19,
-	0x90, 0x21, 0x9a, 0x9d, 0x65, 0x12, 0xd7, 0x57, 0x9b, 0xad, 0xa0, 0x63, 0xf1, 0x0a, 0xed, 0x7b,
-	0xe4, 0x12, 0x48, 0xf2, 0x9b, 0x3a, 0x9b, 0x00, 0x04, 0x47, 0xb5, 0xb8, 0x33, 0xf8, 0xee, 0xed,
-	0xa7, 0x37, 0x19, 0x37, 0x8b, 0x62, 0xd6, 0x4b, 0x95, 0x88, 0xd4, 0x12, 0x65, 0xaa, 0x72, 0x16,
-	0xb9, 0x65, 0x9c, 0x6c, 0x1e, 0xc7, 0x13, 0x2e, 0x0d, 0xe6, 0x73, 0x9a, 0x62, 0xb4, 0x3a, 0x8d,
-	0x32, 0x15, 0x31, 0xc1, 0x67, 0x07, 0xf6, 0x0d, 0x3c, 0xfd, 0x19, 0x00, 0x00, 0xff, 0xff, 0xd3,
-	0x67, 0x56, 0xf0, 0x4c, 0x05, 0x00, 0x00,
+	// 527 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x55, 0xd1, 0x6a, 0x13, 0x41,
+	0x14, 0x65, 0x9b, 0x52, 0xc9, 0x8d, 0x0d, 0x38, 0xfa, 0xb0, 0x59, 0xb1, 0x2d, 0x2b, 0x82, 0x28,
+	0xcd, 0x96, 0xf4, 0x49, 0x7c, 0x53, 0x69, 0xd2, 0x87, 0x14, 0xd9, 0xa5, 0x04, 0x7c, 0x09, 0x93,
+	0x9d, 0x9b, 0x64, 0xa0, 0x33, 0xb3, 0xee, 0xcc, 0xa6, 0xf4, 0x37, 0xf4, 0x07, 0xfc, 0x13, 0x7f,
+	0xc2, 0x0f, 0x92, 0x9d, 0xdd, 0x6c, 0x42, 0x92, 0x15, 0x91, 0x0a, 0x7d, 0xdb, 0xcc, 0x39, 0xf7,
+	0x70, 0xee, 0x99, 0xb9, 0x37, 0x70, 0xcc, 0x04, 0x0f, 0xe6, 0xb7, 0x63, 0x41, 0x25, 0x9d, 0xa1,
+	0x40, 0x69, 0xc6, 0x1a, 0xd3, 0x05, 0x8f, 0xb1, 0x9b, 0xa4, 0xca, 0x28, 0xd2, 0x60, 0x82, 0x7b,
+	0x4f, 0x72, 0x56, 0xac, 0x84, 0x50, 0x52, 0x17, 0xe7, 0xde, 0xe3, 0xa2, 0xb0, 0xf8, 0xe5, 0x5f,
+	0x80, 0xfb, 0x79, 0x7e, 0xa7, 0x79, 0x4c, 0x6f, 0x2e, 0xe5, 0x02, 0xa5, 0x51, 0xe9, 0x5d, 0x88,
+	0x5f, 0x33, 0xd4, 0x86, 0xbc, 0x81, 0x16, 0xc3, 0x5c, 0x71, 0x9c, 0x65, 0x9c, 0xb9, 0xce, 0x89,
+	0xf3, 0xba, 0xd5, 0x6b, 0x76, 0x99, 0xe0, 0xdd, 0xeb, 0x8c, 0xb3, 0x10, 0x0a, 0x34, 0xff, 0xf6,
+	0xbf, 0x39, 0xd0, 0xd9, 0x21, 0xa4, 0x13, 0x25, 0x35, 0x92, 0x97, 0x70, 0xa0, 0x0d, 0x35, 0x99,
+	0xb6, 0x22, 0xed, 0x5e, 0xcb, 0x8a, 0x44, 0xf6, 0x28, 0x2c, 0xa1, 0x9c, 0x94, 0x22, 0xd5, 0x4a,
+	0xba, 0x7b, 0x6b, 0xa4, 0xd0, 0x1e, 0x85, 0x25, 0x44, 0xde, 0x42, 0x93, 0x2f, 0xe5, 0xdd, 0x86,
+	0x75, 0x74, 0x68, 0x79, 0x03, 0x9a, 0xb2, 0x5b, 0x9a, 0x62, 0xb8, 0xc2, 0xfd, 0x1f, 0x0e, 0x74,
+	0x06, 0xa3, 0x8f, 0x4a, 0x24, 0x4a, 0xa2, 0x34, 0x97, 0x72, 0xaa, 0xfa, 0x68, 0xfe, 0xa1, 0x3d,
+	0x72, 0x06, 0xed, 0x78, 0x29, 0x53, 0xd0, 0xf7, 0x36, 0xe9, 0x87, 0x15, 0xc1, 0x56, 0xbc, 0x5a,
+	0xaf, 0x90, 0x54, 0xa0, 0x75, 0xdb, 0x5c, 0xa3, 0x5d, 0x51, 0x81, 0xfe, 0xaf, 0x6d, 0x8b, 0xd1,
+	0xc3, 0xb2, 0x48, 0x7a, 0xf0, 0x28, 0x9e, 0x53, 0x39, 0x43, 0xed, 0xee, 0x5b, 0x45, 0xd7, 0x2a,
+	0x0e, 0x15, 0xe3, 0x53, 0x4e, 0x27, 0x37, 0x58, 0xb9, 0x0f, 0x97, 0x44, 0x7f, 0x0a, 0xde, 0xae,
+	0xae, 0xee, 0xfb, 0x39, 0xf8, 0xdf, 0x1d, 0x78, 0x1e, 0x19, 0x9a, 0x9a, 0x61, 0x3e, 0x06, 0x5c,
+	0xce, 0x3e, 0xd9, 0x40, 0xfe, 0xc3, 0xc3, 0xdb, 0xb8, 0x8a, 0xc6, 0x9f, 0x86, 0x21, 0x80, 0x4e,
+	0x64, 0x54, 0xb2, 0xe9, 0xa9, 0xb8, 0x53, 0x02, 0xfb, 0x36, 0x6b, 0xc7, 0x66, 0x6d, 0xbf, 0xf3,
+	0xb8, 0x76, 0x15, 0xdc, 0x77, 0x13, 0xbd, 0x9f, 0x0d, 0xe8, 0x5c, 0x51, 0xc3, 0x17, 0x38, 0x18,
+	0x0d, 0xab, 0xc5, 0x11, 0x15, 0x7b, 0x83, 0x44, 0xf0, 0x74, 0x47, 0x96, 0xa4, 0xf6, 0xba, 0xbd,
+	0x93, 0xa5, 0x91, 0xba, 0xfc, 0xcf, 0x1c, 0x72, 0x0d, 0x64, 0xbb, 0x35, 0x72, 0x54, 0x56, 0xd6,
+	0x84, 0xe4, 0x1d, 0xd7, 0xe2, 0x65, 0x26, 0x23, 0x78, 0xd6, 0x47, 0xb3, 0xb5, 0x71, 0xc8, 0x0b,
+	0x5b, 0x58, 0xb7, 0xd2, 0xbc, 0xa3, 0x3a, 0xb8, 0xf2, 0x7b, 0x01, 0xa4, 0x8f, 0x66, 0xe3, 0xf1,
+	0x96, 0x7e, 0x6b, 0x77, 0x89, 0xd7, 0xb6, 0x78, 0x85, 0x96, 0x7d, 0xff, 0xa5, 0xce, 0x6a, 0xe0,
+	0xcb, 0xbe, 0xeb, 0x47, 0xe7, 0xc3, 0xfb, 0x2f, 0xef, 0x66, 0xdc, 0xcc, 0xb3, 0x49, 0x37, 0x56,
+	0x22, 0x50, 0x09, 0xca, 0x58, 0xa5, 0x2c, 0x28, 0x1e, 0xdf, 0xe9, 0xea, 0xcf, 0xe0, 0x94, 0x4b,
+	0x83, 0xe9, 0x94, 0xc6, 0x18, 0x2c, 0xce, 0x83, 0x99, 0x0a, 0x98, 0xe0, 0x93, 0x03, 0xbb, 0xf3,
+	0xcf, 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0xe0, 0x47, 0xf4, 0xba, 0x3c, 0x06, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -404,6 +494,8 @@
 	// asset_id = Optional;
 	// uri = IP Address of the Hardware;
 	StartManagingDevice(ctx context.Context, in *ModifiableComponent, opts ...grpc.CallOption) (NativeHWManagementService_StartManagingDeviceClient, error)
+	// Stop management of a device and clean up any context and caches for that device
+	StopManagingDevice(ctx context.Context, in *StopManagingDeviceRequest, opts ...grpc.CallOption) (*StopManagingDeviceResponse, error)
 	// Get the HW inventory details of the Device
 	GetPhysicalInventory(ctx context.Context, in *PhysicalInventoryRequest, opts ...grpc.CallOption) (NativeHWManagementService_GetPhysicalInventoryClient, error)
 	// Get the details of a particular HW component
@@ -452,6 +544,15 @@
 	return m, nil
 }
 
+func (c *nativeHWManagementServiceClient) StopManagingDevice(ctx context.Context, in *StopManagingDeviceRequest, opts ...grpc.CallOption) (*StopManagingDeviceResponse, error) {
+	out := new(StopManagingDeviceResponse)
+	err := c.cc.Invoke(ctx, "/dmi.NativeHWManagementService/StopManagingDevice", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 func (c *nativeHWManagementServiceClient) GetPhysicalInventory(ctx context.Context, in *PhysicalInventoryRequest, opts ...grpc.CallOption) (NativeHWManagementService_GetPhysicalInventoryClient, error) {
 	stream, err := c.cc.NewStream(ctx, &_NativeHWManagementService_serviceDesc.Streams[1], "/dmi.NativeHWManagementService/GetPhysicalInventory", opts...)
 	if err != nil {
@@ -537,6 +638,8 @@
 	// asset_id = Optional;
 	// uri = IP Address of the Hardware;
 	StartManagingDevice(*ModifiableComponent, NativeHWManagementService_StartManagingDeviceServer) error
+	// Stop management of a device and clean up any context and caches for that device
+	StopManagingDevice(context.Context, *StopManagingDeviceRequest) (*StopManagingDeviceResponse, error)
 	// Get the HW inventory details of the Device
 	GetPhysicalInventory(*PhysicalInventoryRequest, NativeHWManagementService_GetPhysicalInventoryServer) error
 	// Get the details of a particular HW component
@@ -570,6 +673,24 @@
 	return x.ServerStream.SendMsg(m)
 }
 
+func _NativeHWManagementService_StopManagingDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(StopManagingDeviceRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(NativeHWManagementServiceServer).StopManagingDevice(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/dmi.NativeHWManagementService/StopManagingDevice",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(NativeHWManagementServiceServer).StopManagingDevice(ctx, req.(*StopManagingDeviceRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 func _NativeHWManagementService_GetPhysicalInventory_Handler(srv interface{}, stream grpc.ServerStream) error {
 	m := new(PhysicalInventoryRequest)
 	if err := stream.RecvMsg(m); err != nil {
@@ -635,6 +756,10 @@
 	HandlerType: (*NativeHWManagementServiceServer)(nil),
 	Methods: []grpc.MethodDesc{
 		{
+			MethodName: "StopManagingDevice",
+			Handler:    _NativeHWManagementService_StopManagingDevice_Handler,
+		},
+		{
 			MethodName: "SetHWComponentInfo",
 			Handler:    _NativeHWManagementService_SetHWComponentInfo_Handler,
 		},
diff --git a/protos/dmi/hw_management_service.proto b/protos/dmi/hw_management_service.proto
index 602aedf..abdcb4a 100644
--- a/protos/dmi/hw_management_service.proto
+++ b/protos/dmi/hw_management_service.proto
@@ -42,6 +42,15 @@
     Uuid device_uuid = 3;
 }
 
+message StopManagingDeviceRequest {
+    string name = 1;
+}
+
+message StopManagingDeviceResponse {
+    Status status = 1;
+    Reason reason = 2;
+}
+
 service NativeHWManagementService {
     // Initializes context for a device and sets up required states
     // In the call to StartManagingDevice, the fields of ModifiableComponent which are relevant
@@ -54,6 +63,9 @@
     // uri = IP Address of the Hardware;
     rpc StartManagingDevice(ModifiableComponent) returns(stream StartManagingDeviceResponse);
 
+    // Stop management of a device and clean up any context and caches for that device
+    rpc StopManagingDevice(StopManagingDeviceRequest) returns(StopManagingDeviceResponse);
+
     // Get the HW inventory details of the Device
     rpc GetPhysicalInventory(PhysicalInventoryRequest) returns(stream PhysicalInventoryResponse);
 
