diff --git a/migration/i2.1z/oracle/201504061604-IDEMPIERE-2558.sql b/migration/i2.1z/oracle/201504061604-IDEMPIERE-2558.sql
index 8da011e7ff..d6758379ab 100644
--- a/migration/i2.1z/oracle/201504061604-IDEMPIERE-2558.sql
+++ b/migration/i2.1z/oracle/201504061604-IDEMPIERE-2558.sql
@@ -1,7 +1,7 @@
 SET SQLBLANKLINES ON
 SET DEFINE OFF
 
--- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
+-- IDEMPIERE-2558:don't allow use old password when change password
 -- Apr 6, 2015 1:54:49 AM ICT
 UPDATE AD_Field SET IsActive='N',Updated=TO_DATE('2015-04-06 01:54:49','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200080
 ;
diff --git a/migration/i2.1z/oracle/201504061605-IDEMPIERE-2558.sql b/migration/i2.1z/oracle/201504061605-IDEMPIERE-2558.sql
index 1e6b797229..2c1c4c349e 100644
--- a/migration/i2.1z/oracle/201504061605-IDEMPIERE-2558.sql
+++ b/migration/i2.1z/oracle/201504061605-IDEMPIERE-2558.sql
@@ -1,7 +1,7 @@
 SET SQLBLANKLINES ON
 SET DEFINE OFF
 
--- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
+-- IDEMPIERE-2558:don't allow use old password when change password
 -- Apr 6, 2015 6:42:41 PM ICT
 INSERT INTO AD_Table (AD_Table_ID,Name,Help,TableName,LoadSeq,AccessLevel,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSecurityEnabled,IsDeleteable,IsHighVolume,IsView,EntityType,ImportTable,IsChangeLog,ReplicationType,CopyColumnsFromTable,IsCentrallyMaintained,AD_Table_UU,Processing,DatabaseViewDrop) VALUES (200171,'Password History ID','Save password history to void user from reuse it for time range','AD_Password_History',0,'4',0,0,'Y',TO_DATE('2015-04-06 18:42:41','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-04-06 18:42:41','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','N','N','D','N','N','L','N','Y','49da1460-ff37-4f00-9ace-97bdf44db0ad','N','N')
 ;
@@ -101,7 +101,7 @@ CREATE UNIQUE INDEX AD_Password_History_Password_uu_idx ON AD_Password_History (
 -- Apr 6, 2015 6:42:43 PM ICT
 INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,Help,PrintName,EntityType,AD_Element_UU) VALUES (202868,0,0,'Y',TO_DATE('2015-04-06 18:42:43','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2015-04-06 18:42:43','YYYY-MM-DD HH24:MI:SS'),100,'Days_Reuse_Password','Days Reuse Password','Define number of day can reuser password','Each time change password, old password keep in history
 Example this value = 60. user can''t reuse password in history has age < 60
-','Days Reuse Password','U','7f28c4dd-e1fb-41d6-a8b7-de18c205e6ac')
+','Days Reuse Password','D','7f28c4dd-e1fb-41d6-a8b7-de18c205e6ac')
 ;
 
 -- Apr 6, 2015 6:42:43 PM ICT
diff --git a/migration/i2.1z/postgresql/201504061604-IDEMPIERE-2558.sql b/migration/i2.1z/postgresql/201504061604-IDEMPIERE-2558.sql
index 944c5e088d..ec163d995d 100644
--- a/migration/i2.1z/postgresql/201504061604-IDEMPIERE-2558.sql
+++ b/migration/i2.1z/postgresql/201504061604-IDEMPIERE-2558.sql
@@ -1,4 +1,4 @@
--- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
+-- IDEMPIERE-2558:don't allow use old password when change password
 -- Apr 6, 2015 1:54:49 AM ICT
 UPDATE AD_Field SET IsActive='N',Updated=TO_TIMESTAMP('2015-04-06 01:54:49','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200080
 ;
diff --git a/migration/i2.1z/postgresql/201504061605-IDEMPIERE-2558.sql b/migration/i2.1z/postgresql/201504061605-IDEMPIERE-2558.sql
index fbb9f21191..fd6930e914 100644
--- a/migration/i2.1z/postgresql/201504061605-IDEMPIERE-2558.sql
+++ b/migration/i2.1z/postgresql/201504061605-IDEMPIERE-2558.sql
@@ -1,4 +1,4 @@
--- I forgot to set the DICTIONARY_ID_COMMENTS System Configurator
+-- IDEMPIERE-2558:don't allow use old password when change password
 -- Apr 6, 2015 6:42:41 PM ICT
 INSERT INTO AD_Table (AD_Table_ID,Name,Help,TableName,LoadSeq,AccessLevel,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsSecurityEnabled,IsDeleteable,IsHighVolume,IsView,EntityType,ImportTable,IsChangeLog,ReplicationType,CopyColumnsFromTable,IsCentrallyMaintained,AD_Table_UU,Processing,DatabaseViewDrop) VALUES (200171,'Password History ID','Save password history to void user from reuse it for time range','AD_Password_History',0,'4',0,0,'Y',TO_TIMESTAMP('2015-04-06 18:42:41','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-04-06 18:42:41','YYYY-MM-DD HH24:MI:SS'),100,'N','Y','N','N','D','N','N','L','N','Y','49da1460-ff37-4f00-9ace-97bdf44db0ad','N','N')
 ;
@@ -98,7 +98,7 @@ CREATE UNIQUE INDEX AD_Password_History_Password_uu_idx ON AD_Password_History (
 -- Apr 6, 2015 6:42:43 PM ICT
 INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,Description,Help,PrintName,EntityType,AD_Element_UU) VALUES (202868,0,0,'Y',TO_TIMESTAMP('2015-04-06 18:42:43','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2015-04-06 18:42:43','YYYY-MM-DD HH24:MI:SS'),100,'Days_Reuse_Password','Days Reuse Password','Define number of day can reuser password','Each time change password, old password keep in history
 Example this value = 60. user can''t reuse password in history has age < 60
-','Days Reuse Password','U','7f28c4dd-e1fb-41d6-a8b7-de18c205e6ac')
+','Days Reuse Password','D','7f28c4dd-e1fb-41d6-a8b7-de18c205e6ac')
 ;
 
 -- Apr 6, 2015 6:42:43 PM ICT
diff --git a/org.adempiere.base/src/org/compiere/model/MPasswordRule.java b/org.adempiere.base/src/org/compiere/model/MPasswordRule.java
index 01c80429f9..585d5a9ab6 100644
--- a/org.adempiere.base/src/org/compiere/model/MPasswordRule.java
+++ b/org.adempiere.base/src/org/compiere/model/MPasswordRule.java
@@ -105,11 +105,6 @@ public class MPasswordRule extends X_AD_PasswordRule {
 			if (Util.isEmpty(getPathDictionary())) {
 				msg.append(Msg.getElement(getCtx(), COLUMNNAME_PathDictionary));
 			}
-			if (getDictWordLength() <= 0) {
-				if (msg.length() > 0)
-					msg.append(", ");
-				msg.append(Msg.getElement(getCtx(), COLUMNNAME_DictWordLength));
-			}
 			if (msg.length() > 0) {
 				log.saveError("FillMandatory", msg.toString());
 				return false;
diff --git a/org.adempiere.base/src/org/compiere/model/MUser.java b/org.adempiere.base/src/org/compiere/model/MUser.java
index 2f0cabffae..39496a72c2 100644
--- a/org.adempiere.base/src/org/compiere/model/MUser.java
+++ b/org.adempiere.base/src/org/compiere/model/MUser.java
@@ -59,7 +59,7 @@ public class MUser extends X_AD_User
 	/**
 	 * 
 	 */
-	private static final long serialVersionUID = -1916348077418252152L;
+	private static final long serialVersionUID = 9027688865361175114L;
 
 	/**
 	 * Get active Users of BPartner