diff --git a/classes/datalayer/UserDAO.php b/classes/datalayer/UserDAO.php
index ffd5695737fb110407f94353d980c594e8fd91e8..ea9be276ebf7065f0eb3dcb8de5a27f3520598ed 100644
--- a/classes/datalayer/UserDAO.php
+++ b/classes/datalayer/UserDAO.php
@@ -79,4 +79,6 @@ interface UserDAO {
     function isAdmin($userId): bool;
 
     function updateIdentity(Identity $identity): void;
+
+    function findJoinableUsers($userId): array;
 }
diff --git a/classes/datalayer/mysql/MySQLUserDAO.php b/classes/datalayer/mysql/MySQLUserDAO.php
index 6c2ed71b2225330d819e6aa328d54e9c5807ac03..a188f27bdc997bc9e434dce6af58e2fb42cbf814 100644
--- a/classes/datalayer/mysql/MySQLUserDAO.php
+++ b/classes/datalayer/mysql/MySQLUserDAO.php
@@ -301,4 +301,31 @@ class MySQLUserDAO extends BaseMySQLDAO implements UserDAO {
         $stmt->execute();
     }
 
+    function findJoinableUsers($userId): array {
+
+        $dbh = $this->getDBHandler();
+
+        $query = "SELECT DISTINCT(i3.user_id)\n"
+                . "FROM user u\n"
+                . "JOIN identity i ON i.user_id = u.id\n"
+                . "JOIN identity i2 ON i.user_id = i2.user_id\n"
+                . "JOIN identity i3 ON i2.email = i3.email\n"
+                . "WHERE i.email IN (SELECT email FROM identity where user_id = :user_id)\n"
+                . "AND i3.user_id NOT IN (SELECT :user_id UNION\n"
+                . "SELECT user_id2 FROM keep_separated WHERE user_id1 = :user_id\n"
+                . "UNION\n"
+                . "SELECT user_id1 FROM keep_separated WHERE user_id2 = :user_id)";
+
+        $stmt = $dbh->prepare($query);
+        $stmt->bindParam(':user_id', $userId);
+
+        $stmt->execute();
+
+        $results = [];
+        foreach ($stmt->fetchAll() as $row) {
+            array_push($results, $row['user_id']);
+        }
+        return $results;
+    }
+
 }
diff --git a/classes/model/SessionData.php b/classes/model/SessionData.php
index 54806aeb301ec26c92d413d3f7000b714285d46d..ba0e3ba51bc02eab63fe1530dc5492429226a5fc 100644
--- a/classes/model/SessionData.php
+++ b/classes/model/SessionData.php
@@ -38,6 +38,7 @@ class SessionData {
     private $oauth2RequestData;
     private $action;
     private $loginIdentityType;
+    private $autojoin = false;
 
     public function setUser(?User $user): void {
         $this->user = $user;
@@ -57,6 +58,15 @@ class SessionData {
         return $this->userToJoin;
     }
 
+    public function setAutojoin(bool $autojoin): void {
+        $this->autojoin = $autojoin;
+        $this->save();
+    }
+
+    public function isAutojoin(): bool {
+        return $this->autojoin;
+    }
+
     public function setLoginIdentityType(string $loginIdentityType): void {
         $this->loginIdentityType = $loginIdentityType;
         $this->save();
diff --git a/include/front-controller.php b/include/front-controller.php
index 41e2b5dda60690341df44c455ad528ca2ff42dcf..9685ca41e33a02628562cefdafa6dbab5e7bfe27 100644
--- a/include/front-controller.php
+++ b/include/front-controller.php
@@ -297,6 +297,7 @@ Flight::route('GET /confirm-join', function() {
         die("User data not retrieved.");
     } else {
         Flight::render('confirm-join.php', array('title' => 'Confirm join',
+            'autojoin' => $locator->getSession()->isAutojoin(),
             'user' => $locator->getSession()->getUser(),
             'user_to_join' => $locator->getSession()->getUserToJoin(),
             'version' => $locator->getVersion(),
diff --git a/sql/setup-database.sql b/sql/setup-database.sql
index e87e1960abd77d730a3daba80ff7f6dd3397ad5f..df4ef7b9faa3826a62b7a8e558b4f6b701163364 100644
--- a/sql/setup-database.sql
+++ b/sql/setup-database.sql
@@ -58,6 +58,15 @@ CREATE TABLE `identity` (
 ALTER TABLE identity ADD CONSTRAINT eppn_unique UNIQUE(eppn);
 ALTER TABLE identity ADD CONSTRAINT typed_id_unique UNIQUE(typed_id);
 
+-- remember that a user decided to avoid a join
+CREATE TABLE `keep_separated` (
+  `user_id1` bigint(20) NOT NULL,
+  `user_id2` bigint(20) NOT NULL,
+  PRIMARY KEY (`user_id1`, `user_id2`),
+  FOREIGN KEY (`user_id1`) REFERENCES `user`(`id`),
+  FOREIGN KEY (`user_id2`) REFERENCES `user`(`id`)
+);
+
 SET FOREIGN_KEY_CHECKS=0;
 ALTER TABLE `user` ADD FOREIGN KEY (`primary_identity`) REFERENCES `identity`(`id`);
 SET FOREIGN_KEY_CHECKS=1;
diff --git a/views/confirm-join.php b/views/confirm-join.php
index 7eb2095228ab58a6e6a6d68f2748bb4e6d66fb56..6a4e12fe018397c7150009d27233530513551e8d 100644
--- a/views/confirm-join.php
+++ b/views/confirm-join.php
@@ -4,7 +4,14 @@ include 'include/header.php';
 
 <br/>
 <div class="text-center">
-    <h3>Following identities will be joined:</h3><br/>
+    <?php if ($autojoin) { ?>
+        <h3>Multiple accounts detected</h3><br/>
+        <p>The system found multiple accounts associated with the same e-mail address. We suggest you to join them, so that
+            they will be seen as a single user. If you prefer to keep these accounts separated you can click on "Reject join" button.
+        </p>
+    <?php } else { ?>
+        <h3>Following identities will be joined:</h3><br/>
+    <?php } ?>
 </div>
 
 <div class="row">