diff --git a/doc/conf/LSattribute/LSattr_ldap.docbook b/doc/conf/LSattribute/LSattr_ldap.docbook
index d7d563a1..aced44c1 100644
--- a/doc/conf/LSattribute/LSattr_ldap.docbook
+++ b/doc/conf/LSattribute/LSattr_ldap.docbook
@@ -5,6 +5,7 @@
&conf-LSattr_ldap_ascii;
&conf-LSattr_ldap_boolean;
+ &conf-LSattr_ldap_compositeValueToJSON;
&conf-LSattr_ldap_date;
&conf-LSattr_ldap_image;
&conf-LSattr_ldap_numeric;
diff --git a/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap.entities.xml b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap.entities.xml
index 9cf9b70a..ee8af9b6 100644
--- a/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap.entities.xml
+++ b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap.entities.xml
@@ -1,6 +1,7 @@
+
diff --git a/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_compositeValueToJSON.docbook b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_compositeValueToJSON.docbook
new file mode 100644
index 00000000..6f9a0fd5
--- /dev/null
+++ b/doc/conf/LSattribute/LSattr_ldap/LSattr_ldap_compositeValueToJSON.docbook
@@ -0,0 +1,9 @@
+
+ LSattr_ldap_compositeValueToJSON
+ Ce type est utilisé pour la gestion des attributs composites dont les
+ valeurs respectent le format suivant :
+ [key1=value1][key2=value2][...]
+ Ce type d'attribut LDAP sera utilisé pour convertir la valeur en son
+ équivalent JSON pour pouvoir être traité à l'aide du type d'
+ attribut HTML &LSattr_html_jsonCompositeAttribute;.
+
diff --git a/public_html/includes/class/class.LSattr_ldap_compositeValueToJSON.php b/public_html/includes/class/class.LSattr_ldap_compositeValueToJSON.php
new file mode 100644
index 00000000..5cf3e770
--- /dev/null
+++ b/public_html/includes/class/class.LSattr_ldap_compositeValueToJSON.php
@@ -0,0 +1,90 @@
+ $val)
+ $ret[$key] = json_encode(self :: parseValue($val));
+ return $ret;
+ }
+ return $data;
+ }
+
+ /**
+ * Retourne la valeur de l'attribut après traitement lié à son type ldap
+ *
+ * @param[in] $data mixed La valeur de l'attribut
+ *
+ * @retval mixed La valeur traitée de l'attribut
+ */
+ function getUpdateData($data) {
+ if ($data) {
+ if (!is_array($data))
+ $data = array($data);
+ $ret = array();
+ foreach($data as $key => $val)
+ $ret[$key] = self :: encodeValue(json_decode($val, true));
+ return $ret;
+ }
+ return $data;
+ }
+
+ function parseValue($value) {
+ if (preg_match_all('/\[([^=]*)=([^\]]*)\]/',$value,$matches)) {
+ $parseValue=array();
+ for($i=0;$i $val)
+ $ret.="[$key=$val]";
+ return $ret;
+ }
+ return False;
+ }
+}