diff --git a/src/STS/Utils/MergeUtil.cs b/src/STS/Utils/MergeUtil.cs
index 80c412e44b876f239a4c341f4b92c9ce7d2e840c..880ce3043152e76d71fb89b1155f98d5db6e5823 100644
--- a/src/STS/Utils/MergeUtil.cs
+++ b/src/STS/Utils/MergeUtil.cs
@@ -5,6 +5,9 @@ using Coscine.Configuration;
 using Coscine.Database.DataModel;
 using Coscine.Database.Models;
 using LinqToDB.Tools;
+using Microsoft.IdentityModel.Protocols.WSFederation.Metadata;
+using System;
+using System.Collections.Generic;
 using System.Linq;
 
 namespace Coscine.Api.STS.Utils
@@ -46,6 +49,7 @@ namespace Coscine.Api.STS.Utils
             MergeUserDiscipline(mergeIntoUser, mergeFromUser);
             MergeResourceOwner(mergeIntoUser, mergeFromUser);
             MergeTOSAccepted(mergeIntoUser, mergeFromUser);
+            MergeUserProperties(mergeIntoUser, mergeFromUser);
             // ExternalId gets merged last, in case something goes wrong
             MergeExternalId(mergeIntoUser, mergeFromUser);
             DeleteUser(mergeFromUser);
@@ -169,6 +173,41 @@ namespace Coscine.Api.STS.Utils
             }
         }
 
+        private void MergeUserProperties(User mergeIntoUser, User mergeFromUser)
+        {
+            if (string.IsNullOrEmpty(mergeIntoUser.EmailAddress) && !string.IsNullOrEmpty(mergeFromUser.EmailAddress))
+            {
+                mergeIntoUser.EmailAddress = mergeFromUser.EmailAddress;
+            }
+
+            if (string.IsNullOrEmpty(mergeIntoUser.Surname) && !string.IsNullOrEmpty(mergeFromUser.Surname))
+            {
+                mergeIntoUser.Surname = mergeIntoUser.Surname;
+            }
+
+            if (string.IsNullOrEmpty(mergeIntoUser.Givenname) && !string.IsNullOrEmpty(mergeFromUser.Givenname))
+            {
+                mergeIntoUser.Givenname = mergeIntoUser.Givenname;
+            }
+
+            if (mergeIntoUser.TitleId == null && mergeFromUser.TitleId != null)
+            {
+                mergeIntoUser.TitleId = mergeFromUser.TitleId;
+            }
+
+            if (string.IsNullOrEmpty(mergeIntoUser.Organization) && !string.IsNullOrEmpty(mergeFromUser.Organization))
+            {
+                mergeIntoUser.Organization = mergeFromUser.Organization;
+            }
+
+            if (string.IsNullOrEmpty(mergeIntoUser.Institute) && !string.IsNullOrEmpty(mergeFromUser.Institute))
+            {
+                mergeIntoUser.Institute = mergeFromUser.Institute;
+            }
+
+            _userModel.Update(mergeIntoUser);
+        }
+
         private void DeleteUser(User user)
         {
             _userModel.Delete(user);