diff --git a/Examples/xx-messenger/Package.swift b/Examples/xx-messenger/Package.swift
index 4cf167f95221db4aa4230d79f1cba10952f7a19f..b310549f615363a0f38348b5c79f2d158d00c0e2 100644
--- a/Examples/xx-messenger/Package.swift
+++ b/Examples/xx-messenger/Package.swift
@@ -274,8 +274,10 @@ let package = Package(
     .target(
       name: "RestoreFeature",
       dependencies: [
+        .target(name: "AppCore"),
         .product(name: "ComposableArchitecture", package: "swift-composable-architecture"),
         .product(name: "XXMessengerClient", package: "elixxir-dapps-sdk-swift"),
+        .product(name: "XXModels", package: "client-ios-db"),
       ],
       swiftSettings: swiftSettings
     ),
diff --git a/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift b/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift
index c79d5b935e7f12255b852278256742608695734e..24e5bd8910a267354a1a608579e5ddb31d1f4cc0 100644
--- a/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift
+++ b/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift
@@ -103,7 +103,9 @@ extension AppEnvironment {
       restore: {
         RestoreEnvironment(
           messenger: messenger,
+          db: dbManager.getDB,
           loadData: .live,
+          now: Date.init,
           mainQueue: mainQueue,
           bgQueue: bgQueue
         )
diff --git a/Examples/xx-messenger/Sources/RestoreFeature/RestoreFeature.swift b/Examples/xx-messenger/Sources/RestoreFeature/RestoreFeature.swift
index 5339c89bbd3dba39edaf2cc8f0181e673b396f4b..c941a8f9c6087f2533309f7223b42f5ac487e7b0 100644
--- a/Examples/xx-messenger/Sources/RestoreFeature/RestoreFeature.swift
+++ b/Examples/xx-messenger/Sources/RestoreFeature/RestoreFeature.swift
@@ -1,8 +1,10 @@
+import AppCore
 import Combine
 import ComposableArchitecture
 import Foundation
 import XCTestDynamicOverlay
 import XXMessengerClient
+import XXModels
 
 public struct RestoreState: Equatable {
   public enum Field: String, Hashable {
@@ -58,18 +60,24 @@ public enum RestoreAction: Equatable, BindableAction {
 public struct RestoreEnvironment {
   public init(
     messenger: Messenger,
+    db: DBManagerGetDB,
     loadData: URLDataLoader,
+    now: @escaping () -> Date,
     mainQueue: AnySchedulerOf<DispatchQueue>,
     bgQueue: AnySchedulerOf<DispatchQueue>
   ) {
     self.messenger = messenger
+    self.db = db
     self.loadData = loadData
+    self.now = now
     self.mainQueue = mainQueue
     self.bgQueue = bgQueue
   }
 
   public var messenger: Messenger
+  public var db: DBManagerGetDB
   public var loadData: URLDataLoader
+  public var now: () -> Date
   public var mainQueue: AnySchedulerOf<DispatchQueue>
   public var bgQueue: AnySchedulerOf<DispatchQueue>
 }
@@ -77,7 +85,9 @@ public struct RestoreEnvironment {
 extension RestoreEnvironment {
   public static let unimplemented = RestoreEnvironment(
     messenger: .unimplemented,
+    db: .unimplemented,
     loadData: .unimplemented,
+    now: XCTUnimplemented("\(Self.self).now"),
     mainQueue: .unimplemented,
     bgQueue: .unimplemented
   )
@@ -118,10 +128,17 @@ public let restoreReducer = Reducer<RestoreState, RestoreAction, RestoreEnvironm
     state.restoreFailure = nil
     return Effect.result {
       do {
-        _ = try env.messenger.restoreBackup(
+        let result = try env.messenger.restoreBackup(
           backupData: backupData,
           backupPassphrase: backupPassphrase
         )
+        try env.db().saveContact(Contact(
+          id: try env.messenger.e2e.tryGet().getContact().getId(),
+          username: result.restoredParams.username,
+          email: result.restoredParams.email,
+          phone: result.restoredParams.phone,
+          createdAt: env.now()
+        ))
         return .success(.finished)
       } catch {
         return .success(.failed(error as NSError))
diff --git a/Examples/xx-messenger/Tests/RestoreFeatureTests/RestoreFeatureTests.swift b/Examples/xx-messenger/Tests/RestoreFeatureTests/RestoreFeatureTests.swift
index 9a3cde3227357eb11d878c8c8f7fd7cc76f00fb5..88bf551f47b1b30257c6d35c4374a8a2bf66d75d 100644
--- a/Examples/xx-messenger/Tests/RestoreFeatureTests/RestoreFeatureTests.swift
+++ b/Examples/xx-messenger/Tests/RestoreFeatureTests/RestoreFeatureTests.swift
@@ -1,8 +1,10 @@
-import CustomDump
 import ComposableArchitecture
+import CustomDump
 import XCTest
-@testable import RestoreFeature
+import XXClient
 import XXMessengerClient
+import XXModels
+@testable import RestoreFeature
 
 final class RestoreFeatureTests: XCTestCase {
   func testFileImport() {
@@ -79,15 +81,18 @@ final class RestoreFeatureTests: XCTestCase {
     let backupPassphrase = "backup-passphrase"
     let restoreResult = MessengerRestoreBackup.Result(
       restoredParams: BackupParams.init(
-        username: "",
-        email: nil,
-        phone: nil
+        username: "restored-username",
+        email: "restored-email",
+        phone: "restored-phone"
       ),
       restoredContacts: []
     )
+    let now = Date()
+    let contactId = "contact-id".data(using: .utf8)!
 
     var didRestoreWithData: [Data] = []
     var didRestoreWithPassphrase: [String] = []
+    var didSaveContact: [XXModels.Contact] = []
 
     let store = TestStore(
       initialState: RestoreState(
@@ -99,11 +104,29 @@ final class RestoreFeatureTests: XCTestCase {
 
     store.environment.bgQueue = .immediate
     store.environment.mainQueue = .immediate
+    store.environment.now = { now }
     store.environment.messenger.restoreBackup.run = { data, passphrase in
       didRestoreWithData.append(data)
       didRestoreWithPassphrase.append(passphrase)
       return restoreResult
     }
+    store.environment.messenger.e2e.get = {
+      var e2e: E2E = .unimplemented
+      e2e.getContact.run = {
+        var contact: XXClient.Contact = .unimplemented(Data())
+        contact.getIdFromContact.run = { _ in contactId }
+        return contact
+      }
+      return e2e
+    }
+    store.environment.db.run = {
+      var db: Database = .unimplemented
+      db.saveContact.run = { contact in
+        didSaveContact.append(contact)
+        return contact
+      }
+      return db
+    }
 
     store.send(.set(\.$passphrase, backupPassphrase)) {
       $0.passphrase = backupPassphrase
@@ -115,6 +138,13 @@ final class RestoreFeatureTests: XCTestCase {
 
     XCTAssertNoDifference(didRestoreWithData, [backupData])
     XCTAssertNoDifference(didRestoreWithPassphrase, [backupPassphrase])
+    XCTAssertNoDifference(didSaveContact, [Contact(
+      id: contactId,
+      username: restoreResult.restoredParams.username,
+      email: restoreResult.restoredParams.email,
+      phone: restoreResult.restoredParams.phone,
+      createdAt: now
+    )])
 
     store.receive(.finished) {
       $0.isRestoring = false