From 6f36a02ffe2cd282accad8b46056cfe54aaf1bad Mon Sep 17 00:00:00 2001 From: Steve Hawkins Date: Fri, 3 Oct 2025 14:26:02 -0400 Subject: [PATCH] fix: retaining user creation timestamp when importing closes: #43195 Signed-off-by: Steve Hawkins --- .../storage/datastore/DefaultExportImportManager.java | 4 +++- .../org/keycloak/testsuite/exportimport/ExportImportUtil.java | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/model/storage-private/src/main/java/org/keycloak/storage/datastore/DefaultExportImportManager.java b/model/storage-private/src/main/java/org/keycloak/storage/datastore/DefaultExportImportManager.java index 70410b16034..90076b39ac4 100644 --- a/model/storage-private/src/main/java/org/keycloak/storage/datastore/DefaultExportImportManager.java +++ b/model/storage-private/src/main/java/org/keycloak/storage/datastore/DefaultExportImportManager.java @@ -974,7 +974,9 @@ public class DefaultExportImportManager implements ExportImportManager { // Import users just to user storage. Don't federate UserModel user = UserStoragePrivateUtil.userLocalStorage(session).addUser(newRealm, userRep.getId(), userRep.getUsername(), false, false); user.setEnabled(userRep.isEnabled() != null && userRep.isEnabled()); - user.setCreatedTimestamp(userRep.getCreatedTimestamp()); + if (userRep.getCreatedTimestamp() != null) { + user.setCreatedTimestamp(userRep.getCreatedTimestamp()); + } user.setEmail(userRep.getEmail()); if (userRep.isEmailVerified() != null) user.setEmailVerified(userRep.isEmailVerified()); user.setFirstName(userRep.getFirstName()); diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/exportimport/ExportImportUtil.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/exportimport/ExportImportUtil.java index 629ef53afaa..6e0d27f918a 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/exportimport/ExportImportUtil.java +++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/exportimport/ExportImportUtil.java @@ -165,8 +165,8 @@ public class ExportImportUtil { // Test role mappings UserRepresentation admin = findByUsername(realmRsc, "admin"); - // user without creation timestamp in import - Assert.assertNull(admin.getCreatedTimestamp()); + + Assert.assertNotNull(admin.getCreatedTimestamp()); Set allRoles = allRoles(realmRsc, admin); Assert.assertEquals(3, allRoles.size()); Assert.assertTrue(containsRole(allRoles, findRealmRole(realmRsc, "admin")));