diff --git a/cpp/dmi/hw_events_mgmt_service.pb.cc b/cpp/dmi/hw_events_mgmt_service.pb.cc
index 3480070..87c2a16 100644
--- a/cpp/dmi/hw_events_mgmt_service.pb.cc
+++ b/cpp/dmi/hw_events_mgmt_service.pb.cc
@@ -326,6 +326,7 @@
   PROTOBUF_FIELD_OFFSET(::dmi::EventsConfigurationRequest, device_uuid_),
   offsetof(::dmi::EventsConfigurationRequestDefaultTypeInternal, changes_),
   offsetof(::dmi::EventsConfigurationRequestDefaultTypeInternal, reset_to_default_),
+  PROTOBUF_FIELD_OFFSET(::dmi::EventsConfigurationRequest, component_uuid_),
   PROTOBUF_FIELD_OFFSET(::dmi::EventsConfigurationRequest, operation_),
   ~0u,  // no _has_bits_
   PROTOBUF_FIELD_OFFSET(::dmi::EventsConfigurationResponse, _internal_metadata_),
@@ -363,9 +364,9 @@
   { 39, -1, sizeof(::dmi::EventsCfg)},
   { 45, -1, sizeof(::dmi::ListEventsResponse)},
   { 54, -1, sizeof(::dmi::EventsConfigurationRequest)},
-  { 63, -1, sizeof(::dmi::EventsConfigurationResponse)},
-  { 71, -1, sizeof(::dmi::EventMetaData)},
-  { 79, -1, sizeof(::dmi::Event)},
+  { 64, -1, sizeof(::dmi::EventsConfigurationResponse)},
+  { 72, -1, sizeof(::dmi::EventMetaData)},
+  { 80, -1, sizeof(::dmi::Event)},
 };
 
 static ::google::protobuf::Message const * const file_default_instances[] = {
@@ -411,88 +412,89 @@
   "Cfg\022\025\n\rreason_detail\030\004 \001(\t\"^\n\006Reason\022\024\n\020"
   "UNDEFINED_REASON\020\000\022\022\n\016UNKNOWN_DEVICE\020\001\022\022"
   "\n\016INTERNAL_ERROR\020\002\022\026\n\022DEVICE_UNREACHABLE"
-  "\020\003\"\210\001\n\032EventsConfigurationRequest\022\036\n\013dev"
+  "\020\003\"\253\001\n\032EventsConfigurationRequest\022\036\n\013dev"
   "ice_uuid\030\001 \001(\0132\t.dmi.Uuid\022!\n\007changes\030\002 \001"
   "(\0132\016.dmi.EventsCfgH\000\022\032\n\020reset_to_default"
-  "\030\003 \001(\010H\000B\013\n\toperation\"\376\001\n\033EventsConfigur"
-  "ationResponse\022\033\n\006status\030\001 \001(\0162\013.dmi.Stat"
-  "us\0227\n\006reason\030\002 \001(\0162\'.dmi.EventsConfigura"
-  "tionResponse.Reason\022\025\n\rreason_detail\030\003 \001"
-  "(\t\"r\n\006Reason\022\024\n\020UNDEFINED_REASON\020\000\022\022\n\016UN"
-  "KNOWN_DEVICE\020\001\022\022\n\016INTERNAL_ERROR\020\002\022\022\n\016IN"
-  "VALID_CONFIG\020\003\022\026\n\022DEVICE_UNREACHABLE\020\004\"j"
-  "\n\rEventMetaData\022\036\n\013device_uuid\030\001 \001(\0132\t.d"
-  "mi.Uuid\022!\n\016component_uuid\030\002 \001(\0132\t.dmi.Uu"
-  "id\022\026\n\016component_name\030\003 \001(\t\"\310\001\n\005Event\022*\n\016"
-  "event_metadata\030\001 \001(\0132\022.dmi.EventMetaData"
-  "\022\037\n\010event_id\030\002 \001(\0162\r.dmi.EventIds\022-\n\trai"
-  "sed_ts\030\003 \001(\0132\032.google.protobuf.Timestamp"
-  "\0221\n\016threshold_info\030\004 \001(\0132\031.dmi.Threshold"
-  "Information\022\020\n\010add_info\030\005 \001(\t*\202\020\n\010EventI"
-  "ds\022\030\n\024EVENT_NAME_UNDEFINED\020\000\022\036\n\032EVENT_TR"
-  "ANSCEIVER_PLUG_OUT\020d\022\035\n\031EVENT_TRANSCEIVE"
-  "R_PLUG_IN\020e\022-\n)EVENT_TRANSCEIVER_VOLTAGE"
-  "_ABOVE_THRESHOLD\020f\022-\n)EVENT_TRANSCEIVER_"
-  "VOLTAGE_BELOW_THRESHOLD\020g\0221\n-EVENT_TRANS"
-  "CEIVER_TEMPERATURE_ABOVE_THRESHOLD\020h\0221\n-"
-  "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRE"
-  "SHOLD\020i\022-\n)EVENT_TRANSCEIVER_CURRENT_ABO"
-  "VE_THRESHOLD\020j\022-\n)EVENT_TRANSCEIVER_CURR"
-  "ENT_BELOW_THRESHOLD\020k\022.\n*EVENT_TRANSCEIV"
-  "ER_RX_POWER_ABOVE_THRESHOLD\020l\022.\n*EVENT_T"
-  "RANSCEIVER_RX_POWER_BELOW_THRESHOLD\020m\022.\n"
-  "*EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESH"
-  "OLD\020n\022.\n*EVENT_TRANSCEIVER_TX_POWER_BELO"
-  "W_THRESHOLD\020o\022\035\n\031EVENT_TRANSCEIVER_FAILU"
-  "RE\020p\0227\n3EVENT_TRANSCEIVER_VOLTAGE_ABOVE_"
-  "THRESHOLD_RECOVERED\020q\0227\n3EVENT_TRANSCEIV"
-  "ER_VOLTAGE_BELOW_THRESHOLD_RECOVERED\020r\022;"
-  "\n7EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_TH"
-  "RESHOLD_RECOVERED\020s\022;\n7EVENT_TRANSCEIVER"
-  "_TEMPERATURE_BELOW_THRESHOLD_RECOVERED\020t"
-  "\0227\n3EVENT_TRANSCEIVER_CURRENT_ABOVE_THRE"
-  "SHOLD_RECOVERED\020u\0227\n3EVENT_TRANSCEIVER_C"
-  "URRENT_BELOW_THRESHOLD_RECOVERED\020v\0228\n4EV"
-  "ENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD"
-  "_RECOVERED\020w\0228\n4EVENT_TRANSCEIVER_RX_POW"
-  "ER_BELOW_THRESHOLD_RECOVERED\020x\0228\n4EVENT_"
-  "TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_REC"
-  "OVERED\020y\0228\n4EVENT_TRANSCEIVER_TX_POWER_B"
-  "ELOW_THRESHOLD_RECOVERED\020z\022\'\n#EVENT_TRAN"
-  "SCEIVER_FAILURE_RECOVERED\020{\022\027\n\022EVENT_PSU"
-  "_PLUG_OUT\020\310\001\022\026\n\021EVENT_PSU_PLUG_IN\020\311\001\022\026\n\021"
-  "EVENT_PSU_FAILURE\020\312\001\022 \n\033EVENT_PSU_FAILUR"
-  "E_RECOVERED\020\313\001\022\026\n\021EVENT_FAN_FAILURE\020\254\002\022\027"
-  "\n\022EVENT_FAN_PLUG_OUT\020\255\002\022\026\n\021EVENT_FAN_PLU"
-  "G_IN\020\256\002\022 \n\033EVENT_FAN_FAILURE_RECOVERED\020\257"
-  "\002\022)\n$EVENT_CPU_TEMPERATURE_ABOVE_CRITICA"
-  "L\020\220\003\022&\n!EVENT_CPU_TEMPERATURE_ABOVE_FATA"
-  "L\020\221\003\0223\n.EVENT_CPU_TEMPERATURE_ABOVE_CRIT"
-  "ICAL_RECOVERED\020\222\003\0220\n+EVENT_CPU_TEMPERATU"
-  "RE_ABOVE_FATAL_RECOVERED\020\223\003\022\032\n\025EVENT_HW_"
-  "DEVICE_RESET\020\364\003\022/\n*EVENT_HW_DEVICE_TEMPE"
-  "RATURE_ABOVE_CRITICAL\020\365\003\022,\n\'EVENT_HW_DEV"
-  "ICE_TEMPERATURE_ABOVE_FATAL\020\366\003\0229\n4EVENT_"
-  "HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_REC"
-  "OVERED\020\367\003\0226\n1EVENT_HW_DEVICE_TEMPERATURE"
-  "_ABOVE_FATAL_RECOVERED\020\370\003\022\033\n\026EVENT_HW_DE"
-  "VICE_REBOOT\020\371\003\022\'\n\"EVENT_HW_TEMPERATURE_S"
-  "ENSOR_FAILED\020\372\003\022,\n\'EVENT_HW_ALL_TEMPERAT"
-  "URE_SENSORS_FAILED\020\373\003\022\035\n\030EVENT_LINE_CARD"
-  "_PLUG_OUT\020\330\004\022\034\n\027EVENT_LINE_CARD_PLUG_IN\020"
-  "\331\0042\355\001\n\035NativeEventsManagementService\0226\n\n"
-  "ListEvents\022\017.dmi.HardwareID\032\027.dmi.ListEv"
-  "entsResponse\022^\n\031UpdateEventsConfiguratio"
-  "n\022\037.dmi.EventsConfigurationRequest\032 .dmi"
-  ".EventsConfigurationResponse\0224\n\014StreamEv"
-  "ents\022\026.google.protobuf.Empty\032\n.dmi.Event"
-  "0\001B;Z9github.com/opencord/device-managem"
-  "ent-interface/v3/go/dmib\006proto3"
+  "\030\003 \001(\010H\000\022!\n\016component_uuid\030\004 \001(\0132\t.dmi.U"
+  "uidB\013\n\toperation\"\376\001\n\033EventsConfiguration"
+  "Response\022\033\n\006status\030\001 \001(\0162\013.dmi.Status\0227\n"
+  "\006reason\030\002 \001(\0162\'.dmi.EventsConfigurationR"
+  "esponse.Reason\022\025\n\rreason_detail\030\003 \001(\t\"r\n"
+  "\006Reason\022\024\n\020UNDEFINED_REASON\020\000\022\022\n\016UNKNOWN"
+  "_DEVICE\020\001\022\022\n\016INTERNAL_ERROR\020\002\022\022\n\016INVALID"
+  "_CONFIG\020\003\022\026\n\022DEVICE_UNREACHABLE\020\004\"j\n\rEve"
+  "ntMetaData\022\036\n\013device_uuid\030\001 \001(\0132\t.dmi.Uu"
+  "id\022!\n\016component_uuid\030\002 \001(\0132\t.dmi.Uuid\022\026\n"
+  "\016component_name\030\003 \001(\t\"\310\001\n\005Event\022*\n\016event"
+  "_metadata\030\001 \001(\0132\022.dmi.EventMetaData\022\037\n\010e"
+  "vent_id\030\002 \001(\0162\r.dmi.EventIds\022-\n\traised_t"
+  "s\030\003 \001(\0132\032.google.protobuf.Timestamp\0221\n\016t"
+  "hreshold_info\030\004 \001(\0132\031.dmi.ThresholdInfor"
+  "mation\022\020\n\010add_info\030\005 \001(\t*\202\020\n\010EventIds\022\030\n"
+  "\024EVENT_NAME_UNDEFINED\020\000\022\036\n\032EVENT_TRANSCE"
+  "IVER_PLUG_OUT\020d\022\035\n\031EVENT_TRANSCEIVER_PLU"
+  "G_IN\020e\022-\n)EVENT_TRANSCEIVER_VOLTAGE_ABOV"
+  "E_THRESHOLD\020f\022-\n)EVENT_TRANSCEIVER_VOLTA"
+  "GE_BELOW_THRESHOLD\020g\0221\n-EVENT_TRANSCEIVE"
+  "R_TEMPERATURE_ABOVE_THRESHOLD\020h\0221\n-EVENT"
+  "_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD"
+  "\020i\022-\n)EVENT_TRANSCEIVER_CURRENT_ABOVE_TH"
+  "RESHOLD\020j\022-\n)EVENT_TRANSCEIVER_CURRENT_B"
+  "ELOW_THRESHOLD\020k\022.\n*EVENT_TRANSCEIVER_RX"
+  "_POWER_ABOVE_THRESHOLD\020l\022.\n*EVENT_TRANSC"
+  "EIVER_RX_POWER_BELOW_THRESHOLD\020m\022.\n*EVEN"
+  "T_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD\020n"
+  "\022.\n*EVENT_TRANSCEIVER_TX_POWER_BELOW_THR"
+  "ESHOLD\020o\022\035\n\031EVENT_TRANSCEIVER_FAILURE\020p\022"
+  "7\n3EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRES"
+  "HOLD_RECOVERED\020q\0227\n3EVENT_TRANSCEIVER_VO"
+  "LTAGE_BELOW_THRESHOLD_RECOVERED\020r\022;\n7EVE"
+  "NT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHO"
+  "LD_RECOVERED\020s\022;\n7EVENT_TRANSCEIVER_TEMP"
+  "ERATURE_BELOW_THRESHOLD_RECOVERED\020t\0227\n3E"
+  "VENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD"
+  "_RECOVERED\020u\0227\n3EVENT_TRANSCEIVER_CURREN"
+  "T_BELOW_THRESHOLD_RECOVERED\020v\0228\n4EVENT_T"
+  "RANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECO"
+  "VERED\020w\0228\n4EVENT_TRANSCEIVER_RX_POWER_BE"
+  "LOW_THRESHOLD_RECOVERED\020x\0228\n4EVENT_TRANS"
+  "CEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERE"
+  "D\020y\0228\n4EVENT_TRANSCEIVER_TX_POWER_BELOW_"
+  "THRESHOLD_RECOVERED\020z\022\'\n#EVENT_TRANSCEIV"
+  "ER_FAILURE_RECOVERED\020{\022\027\n\022EVENT_PSU_PLUG"
+  "_OUT\020\310\001\022\026\n\021EVENT_PSU_PLUG_IN\020\311\001\022\026\n\021EVENT"
+  "_PSU_FAILURE\020\312\001\022 \n\033EVENT_PSU_FAILURE_REC"
+  "OVERED\020\313\001\022\026\n\021EVENT_FAN_FAILURE\020\254\002\022\027\n\022EVE"
+  "NT_FAN_PLUG_OUT\020\255\002\022\026\n\021EVENT_FAN_PLUG_IN\020"
+  "\256\002\022 \n\033EVENT_FAN_FAILURE_RECOVERED\020\257\002\022)\n$"
+  "EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL\020\220\003\022"
+  "&\n!EVENT_CPU_TEMPERATURE_ABOVE_FATAL\020\221\003\022"
+  "3\n.EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_"
+  "RECOVERED\020\222\003\0220\n+EVENT_CPU_TEMPERATURE_AB"
+  "OVE_FATAL_RECOVERED\020\223\003\022\032\n\025EVENT_HW_DEVIC"
+  "E_RESET\020\364\003\022/\n*EVENT_HW_DEVICE_TEMPERATUR"
+  "E_ABOVE_CRITICAL\020\365\003\022,\n\'EVENT_HW_DEVICE_T"
+  "EMPERATURE_ABOVE_FATAL\020\366\003\0229\n4EVENT_HW_DE"
+  "VICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERE"
+  "D\020\367\003\0226\n1EVENT_HW_DEVICE_TEMPERATURE_ABOV"
+  "E_FATAL_RECOVERED\020\370\003\022\033\n\026EVENT_HW_DEVICE_"
+  "REBOOT\020\371\003\022\'\n\"EVENT_HW_TEMPERATURE_SENSOR"
+  "_FAILED\020\372\003\022,\n\'EVENT_HW_ALL_TEMPERATURE_S"
+  "ENSORS_FAILED\020\373\003\022\035\n\030EVENT_LINE_CARD_PLUG"
+  "_OUT\020\330\004\022\034\n\027EVENT_LINE_CARD_PLUG_IN\020\331\0042\355\001"
+  "\n\035NativeEventsManagementService\0226\n\nListE"
+  "vents\022\017.dmi.HardwareID\032\027.dmi.ListEventsR"
+  "esponse\022^\n\031UpdateEventsConfiguration\022\037.d"
+  "mi.EventsConfigurationRequest\032 .dmi.Even"
+  "tsConfigurationResponse\0224\n\014StreamEvents\022"
+  "\026.google.protobuf.Empty\032\n.dmi.Event0\001B;Z"
+  "9github.com/opencord/device-management-i"
+  "nterface/v3/go/dmib\006proto3"
   ;
 ::google::protobuf::internal::DescriptorTable descriptor_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto = {
   false, InitDefaults_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, 
   descriptor_table_protodef_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto,
-  "dmi/hw_events_mgmt_service.proto", &assign_descriptors_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, 3951,
+  "dmi/hw_events_mgmt_service.proto", &assign_descriptors_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, 3986,
 };
 
 void AddDescriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto() {
@@ -3274,11 +3276,14 @@
   ::dmi::_EventsConfigurationRequest_default_instance_.changes_ = const_cast< ::dmi::EventsCfg*>(
       ::dmi::EventsCfg::internal_default_instance());
   ::dmi::_EventsConfigurationRequest_default_instance_.reset_to_default_ = false;
+  ::dmi::_EventsConfigurationRequest_default_instance_._instance.get_mutable()->component_uuid_ = const_cast< ::dmi::Uuid*>(
+      ::dmi::Uuid::internal_default_instance());
 }
 class EventsConfigurationRequest::HasBitSetters {
  public:
   static const ::dmi::Uuid& device_uuid(const EventsConfigurationRequest* msg);
   static const ::dmi::EventsCfg& changes(const EventsConfigurationRequest* msg);
+  static const ::dmi::Uuid& component_uuid(const EventsConfigurationRequest* msg);
 };
 
 const ::dmi::Uuid&
@@ -3289,6 +3294,10 @@
 EventsConfigurationRequest::HasBitSetters::changes(const EventsConfigurationRequest* msg) {
   return *msg->operation_.changes_;
 }
+const ::dmi::Uuid&
+EventsConfigurationRequest::HasBitSetters::component_uuid(const EventsConfigurationRequest* msg) {
+  return *msg->component_uuid_;
+}
 void EventsConfigurationRequest::clear_device_uuid() {
   if (GetArenaNoVirtual() == nullptr && device_uuid_ != nullptr) {
     delete device_uuid_;
@@ -3309,10 +3318,17 @@
   }
   // @@protoc_insertion_point(field_set_allocated:dmi.EventsConfigurationRequest.changes)
 }
+void EventsConfigurationRequest::clear_component_uuid() {
+  if (GetArenaNoVirtual() == nullptr && component_uuid_ != nullptr) {
+    delete component_uuid_;
+  }
+  component_uuid_ = nullptr;
+}
 #if !defined(_MSC_VER) || _MSC_VER >= 1900
 const int EventsConfigurationRequest::kDeviceUuidFieldNumber;
 const int EventsConfigurationRequest::kChangesFieldNumber;
 const int EventsConfigurationRequest::kResetToDefaultFieldNumber;
+const int EventsConfigurationRequest::kComponentUuidFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 EventsConfigurationRequest::EventsConfigurationRequest()
@@ -3329,6 +3345,11 @@
   } else {
     device_uuid_ = nullptr;
   }
+  if (from.has_component_uuid()) {
+    component_uuid_ = new ::dmi::Uuid(*from.component_uuid_);
+  } else {
+    component_uuid_ = nullptr;
+  }
   clear_has_operation();
   switch (from.operation_case()) {
     case kChanges: {
@@ -3349,7 +3370,9 @@
 void EventsConfigurationRequest::SharedCtor() {
   ::google::protobuf::internal::InitSCC(
       &scc_info_EventsConfigurationRequest_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base);
-  device_uuid_ = nullptr;
+  ::memset(&device_uuid_, 0, static_cast<size_t>(
+      reinterpret_cast<char*>(&component_uuid_) -
+      reinterpret_cast<char*>(&device_uuid_)) + sizeof(component_uuid_));
   clear_has_operation();
 }
 
@@ -3360,6 +3383,7 @@
 
 void EventsConfigurationRequest::SharedDtor() {
   if (this != internal_default_instance()) delete device_uuid_;
+  if (this != internal_default_instance()) delete component_uuid_;
   if (has_operation()) {
     clear_operation();
   }
@@ -3403,6 +3427,10 @@
     delete device_uuid_;
   }
   device_uuid_ = nullptr;
+  if (GetArenaNoVirtual() == nullptr && component_uuid_ != nullptr) {
+    delete component_uuid_;
+  }
+  component_uuid_ = nullptr;
   clear_operation();
   _internal_metadata_.Clear();
 }
@@ -3453,6 +3481,19 @@
         GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
         break;
       }
+      // .dmi.Uuid component_uuid = 4;
+      case 4: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 34) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::dmi::Uuid::_InternalParse;
+        object = msg->mutable_component_uuid();
+        if (size > end - ptr) goto len_delim_till_end;
+        ptr += size;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
+            {parser_till_end, object}, ptr - size, ptr));
+        break;
+      }
       default: {
       handle_unusual:
         if ((tag & 7) == 4 || tag == 0) {
@@ -3519,6 +3560,17 @@
         break;
       }
 
+      // .dmi.Uuid component_uuid = 4;
+      case 4: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (34 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_component_uuid()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
       default: {
       handle_unusual:
         if (tag == 0) {
@@ -3563,6 +3615,12 @@
     ::google::protobuf::internal::WireFormatLite::WriteBool(3, this->reset_to_default(), output);
   }
 
+  // .dmi.Uuid component_uuid = 4;
+  if (this->has_component_uuid()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      4, HasBitSetters::component_uuid(this), output);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         _internal_metadata_.unknown_fields(), output);
@@ -3595,6 +3653,13 @@
     target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(3, this->reset_to_default(), target);
   }
 
+  // .dmi.Uuid component_uuid = 4;
+  if (this->has_component_uuid()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        4, HasBitSetters::component_uuid(this), target);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         _internal_metadata_.unknown_fields(), target);
@@ -3623,6 +3688,13 @@
         *device_uuid_);
   }
 
+  // .dmi.Uuid component_uuid = 4;
+  if (this->has_component_uuid()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *component_uuid_);
+  }
+
   switch (operation_case()) {
     // .dmi.EventsCfg changes = 2;
     case kChanges: {
@@ -3670,6 +3742,9 @@
   if (from.has_device_uuid()) {
     mutable_device_uuid()->::dmi::Uuid::MergeFrom(from.device_uuid());
   }
+  if (from.has_component_uuid()) {
+    mutable_component_uuid()->::dmi::Uuid::MergeFrom(from.component_uuid());
+  }
   switch (from.operation_case()) {
     case kChanges: {
       mutable_changes()->::dmi::EventsCfg::MergeFrom(from.changes());
@@ -3711,6 +3786,7 @@
   using std::swap;
   _internal_metadata_.Swap(&other->_internal_metadata_);
   swap(device_uuid_, other->device_uuid_);
+  swap(component_uuid_, other->component_uuid_);
   swap(operation_, other->operation_);
   swap(_oneof_case_[0], other->_oneof_case_[0]);
 }
diff --git a/cpp/dmi/hw_events_mgmt_service.pb.h b/cpp/dmi/hw_events_mgmt_service.pb.h
index 1812d2c..9939a73 100644
--- a/cpp/dmi/hw_events_mgmt_service.pb.h
+++ b/cpp/dmi/hw_events_mgmt_service.pb.h
@@ -1299,6 +1299,15 @@
   ::dmi::Uuid* mutable_device_uuid();
   void set_allocated_device_uuid(::dmi::Uuid* device_uuid);
 
+  // .dmi.Uuid component_uuid = 4;
+  bool has_component_uuid() const;
+  void clear_component_uuid();
+  static const int kComponentUuidFieldNumber = 4;
+  const ::dmi::Uuid& component_uuid() const;
+  ::dmi::Uuid* release_component_uuid();
+  ::dmi::Uuid* mutable_component_uuid();
+  void set_allocated_component_uuid(::dmi::Uuid* component_uuid);
+
   // .dmi.EventsCfg changes = 2;
   bool has_changes() const;
   void clear_changes();
@@ -1330,6 +1339,7 @@
 
   ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
   ::dmi::Uuid* device_uuid_;
+  ::dmi::Uuid* component_uuid_;
   union OperationUnion {
     OperationUnion() {}
     ::dmi::EventsCfg* changes_;
@@ -2589,6 +2599,51 @@
   // @@protoc_insertion_point(field_set:dmi.EventsConfigurationRequest.reset_to_default)
 }
 
+// .dmi.Uuid component_uuid = 4;
+inline bool EventsConfigurationRequest::has_component_uuid() const {
+  return this != internal_default_instance() && component_uuid_ != nullptr;
+}
+inline const ::dmi::Uuid& EventsConfigurationRequest::component_uuid() const {
+  const ::dmi::Uuid* p = component_uuid_;
+  // @@protoc_insertion_point(field_get:dmi.EventsConfigurationRequest.component_uuid)
+  return p != nullptr ? *p : *reinterpret_cast<const ::dmi::Uuid*>(
+      &::dmi::_Uuid_default_instance_);
+}
+inline ::dmi::Uuid* EventsConfigurationRequest::release_component_uuid() {
+  // @@protoc_insertion_point(field_release:dmi.EventsConfigurationRequest.component_uuid)
+  
+  ::dmi::Uuid* temp = component_uuid_;
+  component_uuid_ = nullptr;
+  return temp;
+}
+inline ::dmi::Uuid* EventsConfigurationRequest::mutable_component_uuid() {
+  
+  if (component_uuid_ == nullptr) {
+    auto* p = CreateMaybeMessage<::dmi::Uuid>(GetArenaNoVirtual());
+    component_uuid_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:dmi.EventsConfigurationRequest.component_uuid)
+  return component_uuid_;
+}
+inline void EventsConfigurationRequest::set_allocated_component_uuid(::dmi::Uuid* component_uuid) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == nullptr) {
+    delete reinterpret_cast< ::google::protobuf::MessageLite*>(component_uuid_);
+  }
+  if (component_uuid) {
+    ::google::protobuf::Arena* submessage_arena = nullptr;
+    if (message_arena != submessage_arena) {
+      component_uuid = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, component_uuid, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  component_uuid_ = component_uuid;
+  // @@protoc_insertion_point(field_set_allocated:dmi.EventsConfigurationRequest.component_uuid)
+}
+
 inline bool EventsConfigurationRequest::has_operation() const {
   return operation_case() != OPERATION_NOT_SET;
 }
