diff --git a/Sources/Integration/Session/Session+UD.swift b/Sources/Integration/Session/Session+UD.swift
index 6dd7472fedb8b3c9fd798134d8ede35a29ce3804..630d822af475c32bb21fb09bb4d9c8bc80a5a54f 100644
--- a/Sources/Integration/Session/Session+UD.swift
+++ b/Sources/Integration/Session/Session+UD.swift
@@ -41,20 +41,13 @@ extension Session {
 
                 switch $0 {
                 case .success(_):
-                    _ = try? self.dbManager.saveContact(.init(
-                        id: self.client.bindings.myId,
-                        marshaled: self.client.bindings.meMarshalled,
-                        username: value,
-                        email: nil,
-                        phone: nil,
-                        nickname: nil,
-                        photo: nil,
-                        authStatus: .friend,
-                        isRecent: false,
-                        createdAt: Date()
-                    ))
-
                     self.username = value
+
+                    if var me = try? self.myContact() {
+                        me.username = value
+                        _ = try? self.dbManager.saveContact(me)
+                    }
+
                     completion(.success(nil))
                 case .failure(let error):
                     completion(.failure(error))
diff --git a/Sources/Integration/Session/Session.swift b/Sources/Integration/Session/Session.swift
index 51234cabf4aa2f29f29bc41bfc4166cd5afa2ab9..ef6180d7cf2c1a507c5bb98633a58204e89ea514 100644
--- a/Sources/Integration/Session/Session.swift
+++ b/Sources/Integration/Session/Session.swift
@@ -183,6 +183,15 @@ public final class Session: SessionType {
     }
 
     private func continueInitialization() throws {
+        var myContact = try self.myContact()
+        myContact.marshaled = client.bindings.meMarshalled
+        myContact.username = username
+        myContact.email = email
+        myContact.phone = phone
+        myContact.authStatus = .friend
+        myContact.isRecent = false
+        _ = try dbManager.saveContact(myContact)
+
         setupBindings()
         networkMonitor.start()
 
@@ -467,4 +476,12 @@ public final class Session: SessionType {
             }
             .store(in: &cancellables)
     }
+
+    func myContact() throws -> Contact {
+        if let contact = try dbManager.fetchContacts(.init(id: [client.bindings.myId])).first {
+            return contact
+        } else {
+            return try dbManager.saveContact(.init(id: client.bindings.myId))
+        }
+    }
 }