diff --git a/redback-common/redback-common-ldap/src/main/java/org/apache/archiva/redback/common/ldap/user/LdapUser.java b/redback-common/redback-common-ldap/src/main/java/org/apache/archiva/redback/common/ldap/user/LdapUser.java
index 1965ca3..8ecb1a6 100644
--- a/redback-common/redback-common-ldap/src/main/java/org/apache/archiva/redback/common/ldap/user/LdapUser.java
+++ b/redback-common/redback-common-ldap/src/main/java/org/apache/archiva/redback/common/ldap/user/LdapUser.java
@@ -259,4 +259,10 @@
     {
         this.dn = dn;
     }
+
+    @Override
+    public String getId( )
+    {
+        return userManagerId + ":" + dn;
+    }
 }
diff --git a/redback-users/redback-users-api/src/main/java/org/apache/archiva/redback/users/User.java b/redback-users/redback-users-api/src/main/java/org/apache/archiva/redback/users/User.java
index 392e906..dec23b6 100644
--- a/redback-users/redback-users-api/src/main/java/org/apache/archiva/redback/users/User.java
+++ b/redback-users/redback-users-api/src/main/java/org/apache/archiva/redback/users/User.java
@@ -38,6 +38,17 @@
     // --------------------------------------------------------------------
 
     /**
+     * This should return a global user id. Global user ids are built
+     * <code>MANAGER_ID:USER_IDENTIFIER</code>
+     * User identifier must not be the username but must be unique, e.g. for LDAP it may be the DN.
+     * @return
+     */
+    default String getId() {
+        return getUserManagerId( ) + ":" + getUsername( );
+    }
+
+
+    /**
      * Gets the User Name for this user.
      *
      * This field is required, and should never be empty.
@@ -298,6 +309,6 @@
      * @return userManager id
      */
     String getUserManagerId();
-    
+
 
 }
diff --git a/redback-users/redback-users-providers/redback-users-memory/src/main/java/org/apache/archiva/redback/users/memory/SimpleUser.java b/redback-users/redback-users-providers/redback-users-memory/src/main/java/org/apache/archiva/redback/users/memory/SimpleUser.java
index 2ced415..3bd0710 100644
--- a/redback-users/redback-users-providers/redback-users-memory/src/main/java/org/apache/archiva/redback/users/memory/SimpleUser.java
+++ b/redback-users/redback-users-providers/redback-users-memory/src/main/java/org/apache/archiva/redback/users/memory/SimpleUser.java
@@ -67,51 +67,61 @@
         // no op
     }
 
+    @Override
     public void addPreviousEncodedPassword( String encodedPassword )
     {
         getPreviousEncodedPasswords().add( encodedPassword );
     }
 
+    @Override
     public Date getAccountCreationDate()
     {
         return accountCreationDate;
     }
 
+    @Override
     public int getCountFailedLoginAttempts()
     {
         return countFailedLoginAttempts;
     }
 
+    @Override
     public String getEmail()
     {
         return email;
     }
 
+    @Override
     public String getEncodedPassword()
     {
         return encodedPassword;
     }
 
+    @Override
     public String getFullName()
     {
         return fullName;
     }
 
+    @Override
     public Date getLastLoginDate()
     {
         return lastLoginDate;
     }
 
+    @Override
     public Date getLastPasswordChange()
     {
         return lastPasswordChange;
     }
 
+    @Override
     public String getPassword()
     {
         return password;
     }
 
+    @Override
     public List<String> getPreviousEncodedPasswords()
     {
         if ( previousEncodedPasswords == null )
@@ -121,103 +131,124 @@
         return previousEncodedPasswords;
     }
 
+    @Override
     public String getUsername()
     {
         return username;
     }
 
+    @Override
     public boolean isLocked()
     {
         return locked;
     }
 
+    @Override
     public void setAccountCreationDate( Date accountCreationDate )
     {
         this.accountCreationDate = accountCreationDate;
     }
 
+    @Override
     public void setCountFailedLoginAttempts( int countFailedLoginAttempts )
     {
         this.countFailedLoginAttempts = countFailedLoginAttempts;
     }
 
+    @Override
     public void setEmail( String email )
     {
         this.email = email;
     }
 
+    @Override
     public void setEncodedPassword( String encodedPassword )
     {
         this.encodedPassword = encodedPassword;
     }
 
+    @Override
     public void setFullName( String fullName )
     {
         this.fullName = fullName;
     }
 
+    @Override
     public void setLastLoginDate( Date lastLoginDate )
     {
         this.lastLoginDate = lastLoginDate;
     }
 
+    @Override
     public void setLastPasswordChange( Date lastPasswordChange )
     {
         this.lastPasswordChange = lastPasswordChange;
     }
 
+    @Override
     public void setLocked( boolean locked )
     {
         this.locked = locked;
     }
 
+    @Override
     public void setPassword( String password )
     {
         this.password = password;
     }
 
+    @Override
     public void setPreviousEncodedPasswords( List<String> previousEncodedPasswords )
     {
         this.previousEncodedPasswords = previousEncodedPasswords;
     }
 
+    @Override
     public void setUsername( String username )
     {
         this.username = username;
     }
 
+    @Override
     public boolean isPasswordChangeRequired()
     {
         return passwordChangeRequired;
     }
 
+    @Override
     public void setPasswordChangeRequired( boolean passwordChangeRequired )
     {
         this.passwordChangeRequired = passwordChangeRequired;
     }
 
+    @Override
     public boolean isPermanent()
     {
         return permanent;
     }
 
+    @Override
     public void setPermanent( boolean permanent )
     {
         this.permanent = permanent;
     }
 
+    @Override
     public boolean isValidated()
     {
         return validated;
     }
 
+    @Override
     public void setValidated( boolean validated )
     {
         this.validated = validated;
     }
 
+    @Override
     public String getUserManagerId()
     {
         return "simple";
     }
+
 }
