diff -r 03bb4bfa60a1 src-test/src/org/openbravo/test/system/ErrorTextParserTest.java
--- a/src-test/src/org/openbravo/test/system/ErrorTextParserTest.java	Mon Sep 12 10:24:52 2016 +0200
+++ b/src-test/src/org/openbravo/test/system/ErrorTextParserTest.java	Mon Sep 12 17:30:25 2016 +0200
@@ -88,6 +88,7 @@
     // only test on pgsql, as specifically testing against es_ES/pgsql error messsage
     if (getConnectionProvider().getRDBMS().equals("POSTGRE")) {
       doErrorTextParserTestWithoutDB(1);
+      doErrorTextParserTestWithoutDB(2);
     }
   }
 
@@ -161,6 +162,10 @@
       expectedMessage = "This record cannot be deleted because it is associated with other existing elements. Please see Linked Items";
       errorMessage = "inserción o actualización en la tabla «c_bpartner» viola la llave foránea «c_bpartner_c_bp_group»";
       break;
+    case 2:
+      expectedMessage = "This record cannot be deleted because it is associated with other existing elements. Please see Linked Items";
+      errorMessage = "ERREUR: la valeur d'une clé dupliquée rompt la contrainte unique « ad_user_un_username » Détail : La clé « (username)=(Anthony) » existe déjà.";
+      break;
     }
 
     OBError trlError = Utility.translateError(conn, vars, "en_US", errorMessage);
diff -r 03bb4bfa60a1 src/org/openbravo/erpCommon/utility/ErrorTextParserPOSTGRE.java
--- a/src/org/openbravo/erpCommon/utility/ErrorTextParserPOSTGRE.java	Mon Sep 12 10:24:52 2016 +0200
+++ b/src/org/openbravo/erpCommon/utility/ErrorTextParserPOSTGRE.java	Mon Sep 12 17:30:25 2016 +0200
@@ -81,7 +81,7 @@
    */
   private static String findConstraintName(String input) {
     log4j.debug("find constraint name in : " + input);
-    Pattern p = Pattern.compile("\".+?\"|«.+?»");
+    Pattern p = Pattern.compile("\".+?\"|«\\s?.+?\\s?»");
     Matcher m = p.matcher(input);
     if (!m.find()) {
       log4j.info("did not find constraint name for error message: " + input);
