diff --git a/src/warden-server/bin/registerReceiver.pl b/src/warden-server/bin/registerReceiver.pl
index abd215c3555ee0472c817ad9e03cc6a004b28614..c521d1b75b1ec258031893a742311363a33e9420 100755
--- a/src/warden-server/bin/registerReceiver.pl
+++ b/src/warden-server/bin/registerReceiver.pl
@@ -137,41 +137,64 @@ my $valid		= "t";
 my $registered		= DateTime->now;
 my $service		= undef;
 my $description_tags	= undef;
+my $warden_server = WardenCommon::trim(`hostname -f`);
 
 # connect to DB
 my $dbh = WardenCommon::connectDB($WardenCommon::DB_NAME, $WardenCommon::DB_HOST, $WardenCommon::DB_USER, $WardenCommon::DB_PASS);
 
-my $warden_server = WardenCommon::trim(`hostname -f`);
-
-# check if user defined client_id wasn't used
-my ($sth, $client_id_db, $registered_db);
+# register receiver
+my ($sth, $client_id_db, $hostname_db, $registered_db, $requestor_db, $client_type_db, $type_db, $receive_own_events_db, $ip_net_client_db, $valid_db);
+# check if user client_id is specified and prepare statement according to this
 if (defined $client_id) {
-  $sth = $dbh->prepare("SELECT client_id, registered FROM clients WHERE client_id = ?;") or die "Cannot prepare statement: " . $dbh->errstr;
+  $sth = $dbh->prepare("SELECT client_id, hostname, registered, requestor, client_type, type, receive_own_events, ip_net_client, valid FROM clients WHERE client_id = ?;") or die "Cannot prepare statement: " . $dbh->errstr;
   $sth->execute($client_id) or die "Cannot execute statement: " . $sth->errstr;
-  ($client_id_db, $registered_db) = $sth->fetchrow();
-  if (defined $client_id_db) {
-    sendMsg("err", "Attempt to use client_id (#$client_id_db) registered at Warden server '$warden_server' in '$registered_db'");
-    WardenCommon::errMsg("Client with ID '$client_id_db' has been already registered at Warden server '$warden_server' in '$registered_db'");
-  }
-}
-# check if receiver has been already registered
-$sth = $dbh->prepare("SELECT client_id, registered FROM clients WHERE hostname = ? AND client_type = ? AND type = ? AND ip_net_client = ? LIMIT 1;") or die "Cannot prepare statement: " . $dbh->errstr;
-$sth->execute($hostname, $client_type, $type, $ip_net_client) or die "Cannot execute statement: " . $sth->errstr;
-($client_id_db, $registered_db) = $sth->fetchrow();
-if (defined $client_id_db) {
-  sendMsg("err", "Attempt to re-register receiver (#$client_id_db) registered at Warden server '$warden_server' in '$registered_db'");
-  WardenCommon::errMsg("Receiver has been already registered at Warden server '$warden_server' in '$registered_db' with ID '$client_id_db'");
 } else {
-  # register receiver
+  $sth = $dbh->prepare("SELECT client_id, hostname, registered, requestor, client_type, type, receive_own_events, ip_net_client, valid FROM clients WHERE hostname = ? AND client_type = ? AND type = ? AND ip_net_client = ? LIMIT 1;") or die "Cannot prepare statement: " . $dbh->errstr;
+  $sth->execute($hostname, $client_type, $type, $ip_net_client) or die "Cannot execute statement: " . $sth->errstr;
+}
+($client_id_db, $hostname_db, $registered_db, $requestor_db, $client_type_db, $type_db, $receive_own_events_db, $ip_net_client_db, $valid_db) = $sth->fetchrow();
+# register receiver without user specified client_id
+if (!defined $client_id_db) {
   $sth = $dbh->prepare("INSERT INTO clients VALUES (?,?,?,?,?,?,?,?,?,?,?);") or die "Cannot prepare statement: " . $dbh->errstr;
   my $ret_val = $sth->execute($client_id, $hostname, $registered, $requestor, $service, $client_type, $type, $receive_own_events, $description_tags, $ip_net_client, $valid) or die "Cannot execute statement: " . $sth->errstr;
   if ($ret_val == 1) {
-    my $last_insert_id = $dbh->last_insert_id(undef, undef, "clients", undef);
-    sendMsg("info", "New receiver [ID: '$last_insert_id', Hostname: '$hostname', Requestor: '$requestor', Type: '$type', ROE: '$receive_own_events', CIDR: '$ip_net_client'] has been registered");
-    WardenCommon::succMsg("Registration of receiver (#$last_insert_id) was SUCCESSFUL!!!");
+    if (!defined $client_id) {
+      $client_id = $dbh->last_insert_id(undef, undef, "clients", undef);
+    }
+    sendMsg("info", "New receiver [ID: '$client_id', Hostname: '$hostname', Requestor: '$requestor', Type: '$type', ROE: '$receive_own_events', CIDR: '$ip_net_client'] was registered");
+    WardenCommon::succMsg("Registration of receiver (#$client_id) was SUCCESSFUL!");
   } else {
-    WardenCommon::errMsg("Registration of receiver $hostname ($type) FAILED!!!");
+    WardenCommon::errMsg("Registration of receiver $hostname ($service) FAILED!");
   }
+# re-activate old sender if is already registered but is not valid
+} elsif (defined $client_id_db && $hostname eq $hostname_db && $client_type eq $client_type_db && $type eq $type_db && $ip_net_client eq $ip_net_client_db  && $valid_db eq 'f') {
+  # change requestor if is needed
+  if ($requestor ne $requestor_db) {
+    $sth = $dbh->prepare("UPDATE clients SET requestor = ? WHERE client_id = ?;") or die "Cannot prepare statement: " . $dbh->errstr;
+    $sth->execute($requestor, $client_id_db) or die "Cannot execute statement: " . $sth->errstr;
+  }
+  # change receive_own_events if is needed
+  if ($receive_own_events ne $receive_own_events_db) {
+    $sth = $dbh->prepare("UPDATE clients SET receive_own_events = ? WHERE client_id = ?;") or die "Cannot prepare statement: " . $dbh->errstr;
+    $sth->execute($receive_own_events, $client_id_db) or die "Cannot execute statement: " . $sth->errstr;
+  }
+  # reactivate old receiver
+  $sth = $dbh->prepare("UPDATE clients SET valid = 't' WHERE client_id = ?;") or die "Cannot prepare statement: " . $dbh->errstr;
+  my $ret_val = $sth->execute($client_id_db) or die "Cannot execute statement: " . $sth->errstr;
+  if ($ret_val == 1) {
+    sendMsg("info", "Receiver [ID: '$client_id_db', Hostname: '$hostname', Requestor: '$requestor', Type: '$type', ROE: '$receive_own_events', CIDR: '$ip_net_client'] was re-activated");
+    WardenCommon::succMsg("Re-activation of receiver (#$client_id_db) was SUCCESSFUL!");
+  } else {
+    WardenCommon::errMsg("Re-activation of receiver (#$client_id_db) FAILED!");
+  }
+# receiver is already registered and valid - send error msg
+} elsif (defined $client_id_db && $hostname eq $hostname_db && $client_type eq $client_type_db && $type eq $type_db && $ip_net_client eq $ip_net_client_db  && $valid_db eq 't') {
+  sendMsg("err", "Attempt to register receiver (#$client_id_db) registered at Warden server '$warden_server' in '$registered_db'");
+  WardenCommon::errMsg("Receiver has been already registered at Warden server '$warden_server' in '$registered_db' with ID '$client_id_db'");
+# user specified client_id is already used - send error msg
+} else {
+  sendMsg("err", "Attempt to use client_id (#$client_id_db) registered at Warden server '$warden_server' in '$registered_db'");
+  WardenCommon::errMsg("Client ID (#$client_id_db) has been already used at Warden server '$warden_server' in '$registered_db'");
 }
 
 # cleanup section
diff --git a/src/warden-server/bin/registerSender.pl b/src/warden-server/bin/registerSender.pl
index a8ee7e2fa8c012f37410f018a7875b288555ac51..725069d08f657bfd6ac914767b134ef86c02f83e 100755
--- a/src/warden-server/bin/registerSender.pl
+++ b/src/warden-server/bin/registerSender.pl
@@ -133,41 +133,64 @@ my $valid		= "t";
 my $registered		= DateTime->now;
 my $type		= undef;
 my $receive_own_events	= undef;
+my $warden_server = WardenCommon::trim(`hostname -f`);
 
 # connect to DB
 my $dbh = WardenCommon::connectDB($WardenCommon::DB_NAME, $WardenCommon::DB_HOST, $WardenCommon::DB_USER, $WardenCommon::DB_PASS);
 
-my $warden_server = WardenCommon::trim(`hostname -f`);
-
-# check if user defined client_id wasn't used
-my ($sth, $client_id_db, $registered_db);
+# register sender
+my ($sth, $client_id_db, $hostname_db, $registered_db, $requestor_db, $service_db, $client_type_db, $description_tags_db, $ip_net_client_db, $valid_db);
+# check if user client_id is specified and prepare statement according to this
 if (defined $client_id) {
-  $sth = $dbh->prepare("SELECT client_id, registered FROM clients WHERE client_id = ?;") or die "Cannot prepare statement: " . $dbh->errstr;
+  $sth = $dbh->prepare("SELECT client_id, hostname, registered, requestor, service, client_type, description_tags, ip_net_client, valid FROM clients WHERE client_id = ?;") or die "Cannot prepare statement: " . $dbh->errstr;
   $sth->execute($client_id) or die "Cannot execute statement: " . $sth->errstr;
-  ($client_id_db, $registered_db) = $sth->fetchrow();
-  if (defined $client_id_db) {
-    sendMsg("err", "Attempt to use client_id (#$client_id_db) registered at Warden server '$warden_server' in '$registered_db'");
-    WardenCommon::errMsg("Client with ID '$client_id_db' has been already registered at Warden server '$warden_server' in '$registered_db'");
-  }
-}
-# check if sender has been already registered
-$sth = $dbh->prepare("SELECT client_id, registered FROM clients WHERE hostname = ? AND service = ? AND client_type = ? AND ip_net_client = ? LIMIT 1;") or die "Cannot prepare statement: " . $dbh->errstr;
-$sth->execute($hostname, $service, $client_type, $ip_net_client) or die "Cannot execute statement: " . $sth->errstr;
-($client_id_db, $registered_db) = $sth->fetchrow();
-if (defined $client_id_db) {
-  sendMsg("err", "Attempt to re-register sender (#$client_id_db) registered at Warden server '$warden_server' in '$registered_db'");
-  WardenCommon::errMsg("Sender has been already registered at Warden server '$warden_server' in '$registered_db' with ID '$client_id_db'");
 } else {
-  # register sender
+  $sth = $dbh->prepare("SELECT client_id, hostname, registered, requestor, service, client_type, description_tags, ip_net_client, valid FROM clients WHERE hostname = ? AND service = ? AND client_type = ? AND ip_net_client = ? LIMIT 1;") or die "Cannot prepare statement: " . $dbh->errstr;
+  $sth->execute($hostname, $service, $client_type, $ip_net_client) or die "Cannot execute statement: " . $sth->errstr;
+}
+($client_id_db, $hostname_db, $registered_db, $requestor_db, $service_db, $client_type_db, $description_tags_db, $ip_net_client_db, $valid_db) = $sth->fetchrow();
+# register sender without user specified client_id
+if (!defined $client_id_db) {
   $sth = $dbh->prepare("INSERT INTO clients VALUES (?,?,?,?,?,?,?,?,?,?,?);") or die "Cannot prepare statement: " . $dbh->errstr;
   my $ret_val = $sth->execute($client_id, $hostname, $registered, $requestor, $service, $client_type, $type, $receive_own_events, $description_tags, $ip_net_client, $valid) or die "Cannot execute statement: " . $sth->errstr;
   if ($ret_val == 1) {
-    my $last_insert_id = $dbh->last_insert_id(undef, undef, "clients", undef);
-    sendMsg("info", "New sender [ID: '$last_insert_id', Hostname: '$hostname', Requestor: '$requestor', Service: '$service', Description_tags: '$description_tags', CIDR: '$ip_net_client'] has been registered");
-    WardenCommon::succMsg("Registration of sender (#$last_insert_id) was SUCCESSFUL!!!");
+    if (!defined $client_id) {
+      $client_id = $dbh->last_insert_id(undef, undef, "clients", undef);
+    }
+    sendMsg("info", "New sender [ID: '$client_id', Hostname: '$hostname', Requestor: '$requestor', Service: '$service', Description_tags: '$description_tags', CIDR: '$ip_net_client'] was registered");
+    WardenCommon::succMsg("Registration of sender (#$client_id) was SUCCESSFUL!");
   } else {
-    WardenCommon::errMsg("Registration of sender $hostname ($service) FAILED!!!");
+    WardenCommon::errMsg("Registration of sender $hostname ($service) FAILED!");
   }
+# re-activate old sender if is already registered but is not valid
+} elsif (defined $client_id_db && $hostname eq $hostname_db && $service eq $service_db && $client_type eq $client_type_db && $ip_net_client eq $ip_net_client_db  && $valid_db eq 'f') {
+  # change requestor if is needed
+  if ($requestor ne $requestor_db) {
+    $sth = $dbh->prepare("UPDATE clients SET requestor = ? WHERE client_id = ?;") or die "Cannot prepare statement: " . $dbh->errstr;
+    $sth->execute($requestor, $client_id_db) or die "Cannot execute statement: " . $sth->errstr;
+  }
+  # change description_tags if is needed
+  if ($description_tags ne $description_tags_db) {
+    $sth = $dbh->prepare("UPDATE clients SET description_tags = ? WHERE client_id = ?;") or die "Cannot prepare statement: " . $dbh->errstr;
+    $sth->execute($description_tags, $client_id_db) or die "Cannot execute statement: " . $sth->errstr;
+  }
+  # re-activate old sender
+  $sth = $dbh->prepare("UPDATE clients SET valid = 't' WHERE client_id = ?;") or die "Cannot prepare statement: " . $dbh->errstr;
+  my $ret_val = $sth->execute($client_id_db) or die "Cannot execute statement: " . $sth->errstr;
+  if ($ret_val == 1) {
+    sendMsg("info", "Sender [ID: '$client_id_db', Hostname: '$hostname', Requestor: '$requestor', Service: '$service', Description_tags: '$description_tags', CIDR: '$ip_net_client'] was re-activated");
+    WardenCommon::succMsg("Re-activation of sender (#$client_id_db) was SUCCESSFUL! (Client's old data are still obsoleted.)");
+  } else {
+    WardenCommon::errMsg("Re-activation of sender (#$client_id_db) FAILED!");
+  }
+# sender is already registered and valid - send error msg
+} elsif (defined $client_id_db && $hostname eq $hostname_db && $service eq $service_db && $client_type eq $client_type_db && $ip_net_client eq $ip_net_client_db  && $valid_db eq 't') {
+  sendMsg("err", "Attempt to register sender (#$client_id_db) registered at Warden server '$warden_server' in '$registered_db'");
+  WardenCommon::errMsg("Sender has been already registered at Warden server '$warden_server' in '$registered_db' with ID '$client_id_db'");
+# user specified client_id is already used - send error msg
+} else {
+  sendMsg("err", "Attempt to use client_id (#$client_id_db) registered at Warden server '$warden_server' in '$registered_db'");
+  WardenCommon::errMsg("Client ID (#$client_id_db) has been already used at Warden server '$warden_server' in '$registered_db'");
 }
 
 # cleanup section