diff --git a/Examples/xx-messenger/Package.swift b/Examples/xx-messenger/Package.swift
index 9c44e4411327a01b3bd6b336b5a2216acedaf825..2736c69c437e636e8eabcc3eefda2a96b9f238fc 100644
--- a/Examples/xx-messenger/Package.swift
+++ b/Examples/xx-messenger/Package.swift
@@ -248,9 +248,11 @@ let package = Package(
     .target(
       name: "VerifyContactFeature",
       dependencies: [
+        .target(name: "AppCore"),
         .product(name: "ComposableArchitecture", package: "swift-composable-architecture"),
         .product(name: "XXClient", package: "elixxir-dapps-sdk-swift"),
         .product(name: "XXMessengerClient", package: "elixxir-dapps-sdk-swift"),
+        .product(name: "XXModels", package: "client-ios-db"),
       ]
     ),
     .testTarget(
diff --git a/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift b/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift
index fa3774e877a4e353dd66e13102da636af4bebd25..906e9992a9391461f0ff5410d196727996d7c892 100644
--- a/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift
+++ b/Examples/xx-messenger/Sources/AppFeature/AppEnvironment+Live.swift
@@ -47,6 +47,7 @@ extension AppEnvironment {
       verifyContact: {
         VerifyContactEnvironment(
           messenger: messenger,
+          db: dbManager.getDB,
           mainQueue: mainQueue,
           bgQueue: bgQueue
         )
diff --git a/Examples/xx-messenger/Sources/VerifyContactFeature/VerifyContactFeature.swift b/Examples/xx-messenger/Sources/VerifyContactFeature/VerifyContactFeature.swift
index 4a38f3ade560742fef925667c5d158b64894a1cf..8a69a072f8d2fa98fdd5426b9c91f970c42bd9bb 100644
--- a/Examples/xx-messenger/Sources/VerifyContactFeature/VerifyContactFeature.swift
+++ b/Examples/xx-messenger/Sources/VerifyContactFeature/VerifyContactFeature.swift
@@ -1,8 +1,10 @@
+import AppCore
 import ComposableArchitecture
 import Foundation
 import XCTestDynamicOverlay
 import XXClient
 import XXMessengerClient
+import XXModels
 
 public struct VerifyContactState: Equatable {
   public enum Result: Equatable {
@@ -11,7 +13,7 @@ public struct VerifyContactState: Equatable {
   }
 
   public init(
-    contact: Contact,
+    contact: XXClient.Contact,
     isVerifying: Bool = false,
     result: Result? = nil
   ) {
@@ -20,7 +22,7 @@ public struct VerifyContactState: Equatable {
     self.result = result
   }
 
-  public var contact: Contact
+  public var contact: XXClient.Contact
   public var isVerifying: Bool
   public var result: Result?
 }
@@ -33,15 +35,18 @@ public enum VerifyContactAction: Equatable {
 public struct VerifyContactEnvironment {
   public init(
     messenger: Messenger,
+    db: DBManagerGetDB,
     mainQueue: AnySchedulerOf<DispatchQueue>,
     bgQueue: AnySchedulerOf<DispatchQueue>
   ) {
     self.messenger = messenger
+    self.db = db
     self.mainQueue = mainQueue
     self.bgQueue = bgQueue
   }
 
   public var messenger: Messenger
+  public var db: DBManagerGetDB
   public var mainQueue: AnySchedulerOf<DispatchQueue>
   public var bgQueue: AnySchedulerOf<DispatchQueue>
 }
@@ -50,6 +55,7 @@ public struct VerifyContactEnvironment {
 extension VerifyContactEnvironment {
   public static let unimplemented = VerifyContactEnvironment(
     messenger: .unimplemented,
+    db: .unimplemented,
     mainQueue: .unimplemented,
     bgQueue: .unimplemented
   )
@@ -65,6 +71,11 @@ public let verifyContactReducer = Reducer<VerifyContactState, VerifyContactActio
     return Effect.result { [state] in
       do {
         let result = try env.messenger.verifyContact(state.contact)
+        let contactId = try state.contact.getId()
+        try env.db().bulkUpdateContacts.callAsFunction(
+          .init(id: [contactId]),
+          .init(authStatus: result ? .verified : .verificationFailed)
+        )
         return .success(.didVerify(.success(result)))
       } catch {
         return .success(.didVerify(.failure(error.localizedDescription)))
diff --git a/Examples/xx-messenger/Tests/VerifyContactFeatureTests/VerifyContactFeatureTests.swift b/Examples/xx-messenger/Tests/VerifyContactFeatureTests/VerifyContactFeatureTests.swift
index 3721bc46e99c93747fd3a5b3341e8a53770996e9..6ca82b1edec51dce43f8386867fc5fcbd7c9ebb4 100644
--- a/Examples/xx-messenger/Tests/VerifyContactFeatureTests/VerifyContactFeatureTests.swift
+++ b/Examples/xx-messenger/Tests/VerifyContactFeatureTests/VerifyContactFeatureTests.swift
@@ -1,19 +1,27 @@
 import ComposableArchitecture
+import CustomDump
 import XCTest
 import XXClient
+import XXModels
 @testable import VerifyContactFeature
 
 final class VerifyContactFeatureTests: XCTestCase {
   func testVerify() {
+    var contact = XXClient.Contact.unimplemented("contact-data".data(using: .utf8)!)
+    let contactId = "contact-id".data(using: .utf8)!
+    contact.getIdFromContact.run = { _ in contactId }
+
     let store = TestStore(
       initialState: VerifyContactState(
-        contact: .unimplemented("contact-data".data(using: .utf8)!)
+        contact: contact
       ),
       reducer: verifyContactReducer,
       environment: .unimplemented
     )
 
-    var didVerifyContact: [Contact] = []
+    var didVerifyContact: [XXClient.Contact] = []
+    var didBulkUpdateContactsWithQuery: [XXModels.Contact.Query] = []
+    var didBulkUpdateContactsWithAssignments: [XXModels.Contact.Assignments] = []
 
     store.environment.mainQueue = .immediate
     store.environment.bgQueue = .immediate
@@ -21,12 +29,25 @@ final class VerifyContactFeatureTests: XCTestCase {
       didVerifyContact.append(contact)
       return true
     }
+    store.environment.db.run = {
+      var db: Database = .failing
+      db.bulkUpdateContacts.run = { query, assignments in
+        didBulkUpdateContactsWithQuery.append(query)
+        didBulkUpdateContactsWithAssignments.append(assignments)
+        return 0
+      }
+      return db
+    }
 
     store.send(.verifyTapped) {
       $0.isVerifying = true
       $0.result = nil
     }
 
+    XCTAssertNoDifference(didVerifyContact, [contact])
+    XCTAssertNoDifference(didBulkUpdateContactsWithQuery, [.init(id: [contactId])])
+    XCTAssertNoDifference(didBulkUpdateContactsWithAssignments, [.init(authStatus: .verified)])
+
     store.receive(.didVerify(.success(true))) {
       $0.isVerifying = false
       $0.result = .success(true)
@@ -34,23 +55,47 @@ final class VerifyContactFeatureTests: XCTestCase {
   }
 
   func testVerifyNotVerified() {
+    var contact = XXClient.Contact.unimplemented("contact-data".data(using: .utf8)!)
+    let contactId = "contact-id".data(using: .utf8)!
+    contact.getIdFromContact.run = { _ in contactId }
+
     let store = TestStore(
       initialState: VerifyContactState(
-        contact: .unimplemented("contact-data".data(using: .utf8)!)
+        contact: contact
       ),
       reducer: verifyContactReducer,
       environment: .unimplemented
     )
 
+    var didVerifyContact: [XXClient.Contact] = []
+    var didBulkUpdateContactsWithQuery: [XXModels.Contact.Query] = []
+    var didBulkUpdateContactsWithAssignments: [XXModels.Contact.Assignments] = []
+
     store.environment.mainQueue = .immediate
     store.environment.bgQueue = .immediate
-    store.environment.messenger.verifyContact.run = { _ in false }
+    store.environment.messenger.verifyContact.run = { contact in
+      didVerifyContact.append(contact)
+      return false
+    }
+    store.environment.db.run = {
+      var db: Database = .failing
+      db.bulkUpdateContacts.run = { query, assignments in
+        didBulkUpdateContactsWithQuery.append(query)
+        didBulkUpdateContactsWithAssignments.append(assignments)
+        return 0
+      }
+      return db
+    }
 
     store.send(.verifyTapped) {
       $0.isVerifying = true
       $0.result = nil
     }
 
+    XCTAssertNoDifference(didVerifyContact, [contact])
+    XCTAssertNoDifference(didBulkUpdateContactsWithQuery, [.init(id: [contactId])])
+    XCTAssertNoDifference(didBulkUpdateContactsWithAssignments, [.init(authStatus: .verificationFailed)])
+
     store.receive(.didVerify(.success(false))) {
       $0.isVerifying = false
       $0.result = .success(false)