diff --git a/ipaacalib/java/ivy.xml b/ipaacalib/java/ivy.xml
index 8023c27a1dc4f2f71d0d7cfcebe49d55bd8a2475..e1baa4bdf6aa9cbd3606fabf7e9c053a45c286fa 100644
--- a/ipaacalib/java/ivy.xml
+++ b/ipaacalib/java/ivy.xml
@@ -9,5 +9,6 @@
       <dependency org="google"  name="protobuf-java"          rev="latest.release"  />
       <dependency org="rsb"     name="rsb"                    rev="latest.release"  />
       <dependency org="lombok"  name="lombok"                 rev="latest.release"  />
+      <dependency org="apache"  name="commons-lang"           rev="latest.release"  />
    </dependencies>
 </ivy-module>
diff --git a/ipaacalib/java/src/ipaaca/Payload.java b/ipaacalib/java/src/ipaaca/Payload.java
index 315d6867878e9f720633f78ecc11e91a4d4f4eb1..f2d08337ac9e8602e6165e958a446df538a6ae46 100644
--- a/ipaacalib/java/src/ipaaca/Payload.java
+++ b/ipaacalib/java/src/ipaaca/Payload.java
@@ -34,6 +34,8 @@ package ipaaca;
 
 import ipaaca.protobuf.Ipaaca.PayloadItem;
 
+import org.apache.commons.lang.StringEscapeUtils;
+
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
@@ -93,18 +95,19 @@ public class Payload implements Map<String, String>
             map.put(item.getKey(), pseudoConvertFromJSON(item.getValue(), item.getType()));
         }
     }
-    
+
     public String pseudoConvertFromJSON(String value, String type) {
-    	if (type.equals("JSON")) {
-    		if (value.startsWith("\"")) {
-    			return value.replaceAll("\\\"", "");
-    		} else if (value.startsWith("{") || value.startsWith("[") || value.matches("true") || value.matches("false") || value.matches("-?[0-9]*[.,]?[0-9][0-9]*.*")) { 
-    			return value;
-    		} else if (value.equals("null")) {
-    			return "";
-    		}
-    	}
-    	return value;
+        if (type.equals("JSON")) {
+            if (value.startsWith("\"")) {
+                //return value.replaceAll("\\\"", "");
+                return StringEscapeUtils.unescapeJava(value.substring(1, value.length() - 1));
+            } else if (value.startsWith("{") || value.startsWith("[") || value.matches("true") || value.matches("false") || value.matches("-?[0-9]*[.,]?[0-9][0-9]*.*")) { 
+                return value;
+            } else if (value.equals("null")) {
+                return "";
+            }
+        }
+        return value;
     }
 
     void enforcedSetItem(String key, String value)