Index: main/plugin-sms/i18n/messages_en.xml
===================================================================
--- main/plugin-sms/i18n/messages_en.xml	(revision 29771)
+++ main/plugin-sms/i18n/messages_en.xml	(working copy)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-   Copyright 2011 Anyware Services
+   Copyright 2015 Anyware Services
 
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
@@ -58,7 +58,7 @@
     <message key="PLUGINS_SMS_SEND_FORM_ERROR_TITLE">Invalid form</message>
     <message key="PLUGINS_SMS_SEND_FORM_ERROR_MESSAGE">The SMS form is invalid.</message>
     <message key="PLUGINS_SMS_SEND_WAITING_MSG">Sending SMS. Please wait ...</message>
-    <message key="PLUGINS_SMS_SEND_SUCCESS">The SMS message was successfully sent.</message>
+    <message key="PLUGINS_SMS_SEND_SUCCESS">Your request was taken into account. The SMS is being sent.</message>
     
     <!--  List SMS -->
     <message key="PLUGINS_SMS_LIST_UITOOL_LABEL">SMS lists.</message>
@@ -79,7 +79,7 @@
     <message key="PLUGINS_SMS_LIST_NO_RIGHT_DESC">This button is disabled because you haven't the convenient rights.</message>
     <message key="PLUGINS_SMS_LIST_WAIT_DESC">Please wait...</message>
     
-     <!--  +
+     <!-- +
           | BUS
           + -->
     <message key="PLUGINS_SMS_SMSLISTMESSAGETARGET_BUS_ERROR">An error occurred: it prevented the selection of the list to complete successfully. It is advisable to close and reopen the tool responsible for the selection.</message>
@@ -114,61 +114,72 @@
     <message key="RIBBON_TABS_TAB_SMS_LABEL">SMS lists</message>
     
     <!--  Subscribtion Service -->
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_LABEL">Subscribers SMS</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_LABEL_DESC">Form to subscribe to a mailing list.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_TITLE_LABEL">Title</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_TITLE_LABEL_DESC">Subscriber service title</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_SUBSCRIBE_LIST_LABEL">Mailing list</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_SUBSCRIBE_LIST_LABEL_DESC">Choice of the mailing list.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_REGISTER_TYPE_USER_CHOICE">In a drop-down menu for the user</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_PHONE">Your phone number</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_PHONE_INFO_1">in the form of </message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_PHONE_INFO_2"> ,</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_PHONE_INFO_3"> or </message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_LIST">Mailing List</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_CAPTCHA">Enter the characters in the picture below</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_SUBMIT">Validate</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_REGISTER_TYPE_LABEL">Type</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_REGISTER_TYPE_DESC">Choice of the type of the form (subscribe form, unsubscribe form or we let the user choose).</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_UNSUBSCRIBE">Unsubscribe</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_SUBSCRIBE">Subscribe</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_INFO">Please fill out the form below to subscribe of unsubscribe to the mailing list <strong>{0}</strong>.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_SUBSCRIBE_INFO">Please fill out the form below to subscribe to the mailing list <strong>{0}</strong>.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_UNSUBSCRIBE_INFO">Please fill out the form below to unsubscribe to the mailing list <strong>{0}</strong>.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_INFO_LIST">Please fill out the form below to subscribe or unsubscribe to a mailing list.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_SUBSCRIBE_INFO_LIST">Please fill out the form below to subscribe to a mailing list.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_UNSUBSCRIBE_INFO_LIST">Please fill out the form below to unsubscribe a the mailing list.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MANDATORY_INFO">Fields with an asterisk * are mandatory</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_DIRECTORY">The mailing list is undefined</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_CAPTCHA">The characters of the picture are not valid</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_PHONE">The phone number is not valid</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_PHONE2">The phone number recorded doesn't match with the international format</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_REGISTER">The form type is undefined</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MESSAGE_ALREADY_RECORD">The phone number already exists in this mailing list.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MESSAGE_DELETE">Your phone number was deleted successfully of the mailing list.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MESSAGE_ADD">Your phone number was added successfully of the mailing list.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MESSAGE_NOT_RECORD">Your phone number doesn't exist in this mailing list.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_TITLE">Incorrect input</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_DESCRIPTION">Your form contains the following mistake :</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_BACK_ALT_SUCCESS">Use the 'back' button of your web browser to come back to the form</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_BACK_ALT">Use the 'back' button of your web browser to correct your data and refresh the image.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_BACK">Click here to come back to the form</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MESSAGE_RECORD_TITLE">Subscribtion is successfull</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MESSAGE_DELETED_TITLE">Unsubscribtion is successfull</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MESSAGE_ISSUE_TITLE">An error occurred</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_AUTORIZED_LABEL">Regular expression of the authorized number</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_AUTORIZED_DESCRIPTION">This is regular expression which defined the different authorized phone number formats.&lt;br/&gt;Each expression must match with the international format (begin with '+' and follow by the country code, for example +33 for France).&lt;br/&gt;One regular expression by line.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_CONVERT_LABEL">Regular expression to convert numbers</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_CONVERT_DESCRIPTION">To allow other phone number format than the international one.&lt;br/&gt;Each line is a conversion to transform a well-formed phone number to the international format.&lt;br/&gt; To the form 'regexp/transformation' :&lt;br/&gt; regexp: it defined the phone number format that the user can enter.&lt;br/&gt; transformation: each group in the regular expression will be replaced by the corresponding group in the transformation (group number begin to 1).</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_SAMPLE_LABEL">Authorized number example</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_SAMPLE_DESCRIPTION">This is the sample you show to the user to help him to enter phone number in the good format.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_CATEGORY">SMS</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_GROUP">Phone number management</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_NO_LIST">There is currently no diffusion list on the site</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_XSLT_LABEL">Display</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_XSLT_DESC">Service rendering</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_RIGHT_LABEL">Subscribers SMS</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_RIGHT_DESC">Right to create subscribers sms service</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_LIST_CHOOSE">- Choose a list -</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_ERROR_DESCRIPTION">An error occurred: your subscription was not taken into account.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_LABEL">Subscribers SMS</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_LABEL_DESC">Form to subscribe to a mailing list.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_TITLE_LABEL">Title</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_TITLE_LABEL_DESC">Subscriber service title</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_SUBSCRIBE_LIST_LABEL">Mailing list</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_SUBSCRIBE_LIST_LABEL_DESC">Choice of the mailing list.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_REGISTER_TYPE_USER_CHOICE">In a drop-down menu for the user</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_PHONE">Your phone number</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_PHONE_INFO_1">in the form of </message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_PHONE_INFO_2"> ,</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_PHONE_INFO_3"> or </message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_LIST">Mailing List</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_CAPTCHA">Enter the characters in the picture below</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_SUBMIT">Validate</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_REGISTER_TYPE_LABEL">Type</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_REGISTER_TYPE_DESC">Choice of the type of the form (subscribe form, unsubscribe form or we let the user choose).</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_UNSUBSCRIBE">Unsubscribe</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_SUBSCRIBE">Subscribe</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_INFO">Please fill out the form below to subscribe of unsubscribe to the mailing list <strong>{0}</strong>.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_SUBSCRIBE_INFO">Please fill out the form below to subscribe to the mailing list <strong>{0}</strong>.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_UNSUBSCRIBE_INFO">Please fill out the form below to unsubscribe to the mailing list <strong>{0}</strong>.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_INFO_LIST">Please fill out the form below to subscribe or unsubscribe to a mailing list.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_SUBSCRIBE_INFO_LIST">Please fill out the form below to subscribe to a mailing list.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_UNSUBSCRIBE_INFO_LIST">Please fill out the form below to unsubscribe a the mailing list.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MANDATORY_INFO">Fields with an asterisk * are mandatory</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_DIRECTORY">The mailing list is undefined</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_CAPTCHA">The characters of the picture are not valid</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_PHONE">The phone number is not valid</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_PHONE2">The phone number recorded doesn't match with the international format</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_REGISTER">The form type is undefined</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MESSAGE_ALREADY_RECORD">The phone number already exists in this mailing list.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MESSAGE_DELETE">Your phone number was deleted successfully of the mailing list.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MESSAGE_ADD">Your phone number was added successfully of the mailing list.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MESSAGE_NOT_RECORD">Your phone number doesn't exist in this mailing list.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_TITLE">Incorrect input</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_DESCRIPTION">Your form contains the following mistake :</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_BACK_ALT_SUCCESS">Use the 'back' button of your web browser to come back to the form</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_BACK_ALT">Use the 'back' button of your web browser to correct your data and refresh the image.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_BACK">Click here to come back to the form</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MESSAGE_RECORD_TITLE">Subscription is successful</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MESSAGE_DELETED_TITLE">Unsubscription is successful</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MESSAGE_ISSUE_TITLE">An error occurred</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_NO_LIST">There is currently no diffusion list on the site</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_XSLT_LABEL">Display</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_XSLT_DESC">Service rendering</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_RIGHT_LABEL">Subscribers SMS</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_RIGHT_DESC">Right to create subscribers sms service</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_LIST_CHOOSE">- Choose a list -</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_ERROR_DESCRIPTION">An error occurred: your subscription was not taken into account.</message>
+    
+     <!-- +
+          | CONFIGURATION PARAMETERS
+          + -->
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_CATEGORY">SMS</message>
+    
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_GROUP">Phone number management</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_AUTHORIZED_LABEL">Regular expression of the authorized number</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_AUTHORIZED_DESCRIPTION">This is regular expression which defined the different authorized phone number formats.&lt;br/&gt;Each expression must match with the international format (begin with '+' and follow by the country code, for example +33 for France).&lt;br/&gt;One regular expression by line.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_CONVERT_LABEL">Regular expression to convert numbers</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_CONVERT_DESCRIPTION">To allow other phone number format than the international one.&lt;br/&gt;Each line is a conversion to transform a well-formed phone number to the international format.&lt;br/&gt; To the form 'regexp/transformation' :&lt;br/&gt; regexp: it defined the phone number format that the user can enter.&lt;br/&gt; transformation: each group in the regular expression will be replaced by the corresponding group in the transformation (group number begin to 1).</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_SAMPLE_LABEL">Authorized number example</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_SAMPLE_DESCRIPTION">This is the sample you show to the user to help him to enter phone number in the good format.</message>
+    
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_SERVICE_CONNECTION_GROUP">Connection to the SMS delivering service</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_SERVICE_CONNECTION_USERNAME">User</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_SERVICE_CONNECTION_USERNAME_DESC">The login of the user</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_SERVICE_CONNECTION_PASSWORD">Password</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_SERVICE_CONNECTION_PASSWORD_DESC">Grants access to the sms delivery service</message>
 </catalogue>
Index: main/plugin-sms/i18n/messages_fr.xml
===================================================================
--- main/plugin-sms/i18n/messages_fr.xml	(revision 29771)
+++ main/plugin-sms/i18n/messages_fr.xml	(working copy)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
-   Copyright 2011 Anyware Services
+   Copyright 2015 Anyware Services
 
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
@@ -58,7 +58,7 @@
     <message key="PLUGINS_SMS_SEND_FORM_ERROR_TITLE">Formulaire invalide</message>
     <message key="PLUGINS_SMS_SEND_FORM_ERROR_MESSAGE">Le formulaire d'envoi de SMS est invalide : sélectionnez une liste de diffusion et saisissez un message de moins de 160 caractères.</message>
     <message key="PLUGINS_SMS_SEND_WAITING_MSG">Envoi du SMS en cours. Veuillez patientez ...</message>
-    <message key="PLUGINS_SMS_SEND_SUCCESS">Le message SMS a bien été envoyé.</message>
+    <message key="PLUGINS_SMS_SEND_SUCCESS">Votre demande a bien été enregistrée. Le message est en cours d'envoi.</message>
     
     <!--  List SMS -->
     <message key="PLUGINS_SMS_LIST_UITOOL_LABEL">Listes de diffusion SMS.</message>
@@ -114,61 +114,72 @@
     <message key="RIBBON_TABS_TAB_SMS_LABEL">Liste de diffusion SMS</message>
     
     <!--  Subscribtion Service -->
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_LABEL">Abonnement SMS</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_LABEL_DESC">Formulaire d'abonnement ou désabonnement à une liste de diffusion SMS.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_TITLE_LABEL">Titre</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_TITLE_LABEL_DESC">Titre du service d'enregistrement des numéros</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_SUBSCRIBE_LIST_LABEL">Choix de la liste de diffusion</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_SUBSCRIBE_LIST_LABEL_DESC">Choix de la liste de diffusion dans laquelle l'utilisateur enregistrera son numéro.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_REGISTER_TYPE_USER_CHOICE">Dans une liste déroulante pour le visiteur</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_PHONE">Votre numéro de téléphone</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_PHONE_INFO_1">au format </message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_PHONE_INFO_2"> ,</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_PHONE_INFO_3"> ou </message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_LIST">Liste de diffusion</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_CAPTCHA">Entrez les caractères figurant dans l'image ci-contre</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_SUBMIT">Valider</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_REGISTER_TYPE_LABEL">Type de demande</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_REGISTER_TYPE_DESC">Choix du type de formulaire (formulaire d'inscription, de désinscription ou on laisse le choix à l'utilisateur).</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_UNSUBSCRIBE">Désinscription</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_SUBSCRIBE">Inscription</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_INFO">Veuillez remplir le formulaire ci-dessous pour vous inscrire ou vous désinscrire à la liste de diffusion <strong>{0}</strong>.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_SUBSCRIBE_INFO">Veuillez remplir le formulaire ci-dessous pour vous inscrire à la liste de diffusion <strong>{0}</strong>.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_UNSUBSCRIBE_INFO">Veuillez remplir le formulaire ci-dessous pour vous désinscrire à la liste de diffusion <strong>{0}</strong>.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_INFO_LIST">Veuillez remplir le formulaire ci-dessous pour vous inscrire ou vous désinscrire à une liste de diffusion.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_SUBSCRIBE_INFO_LIST">Veuillez remplir le formulaire ci-dessous pour vous inscrire à une liste de diffusion.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_UNSUBSCRIBE_INFO_LIST">Veuillez remplir le formulaire ci-dessous pour vous désinscrire à une liste de diffusion.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MANDATORY_INFO">Les champs suivis d'un astérisque * sont obligatoires.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_DIRECTORY">La liste de diffusion n'est pas définie</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_CAPTCHA">Le texte de l'image est invalide</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_PHONE">Le numéro de téléphone est invalide</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_PHONE2">Le numéro de téléphone enregistré ne correspond pas au format internationnal</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_REGISTER">Le type du formulaire n'est pas défini</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MESSAGE_ALREADY_RECORD">Vous êtes déjà inscrit à cette liste de diffusion.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MESSAGE_DELETE">Votre désabonnement à la liste de diffusion a bien été pris en compte.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MESSAGE_ADD">Votre abonnement à la liste de diffusion a bien été pris en compte.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MESSAGE_NOT_RECORD">Vous n'êtes pas abonné à cette liste de diffusion.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_TITLE">Saisie incorrecte</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_DESCRIPTION">Votre formulaire contient les erreurs suivantes :</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_BACK">Cliquez ici pour revenir à la page précédente</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_BACK_ALT_SUCCESS">Utilisez le bouton 'Précédent' de votre navigateur web pour revenir à la page précédente.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_BACK_ALT">Utilisez le bouton 'Précédent' de votre navigateur web pour corriger votre formulaire d'inscription/désinscription et rafraichissez l'image.</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MESSAGE_RECORD_TITLE">Inscription réussie</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MESSAGE_DELETED_TITLE">Supression réussie</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MESSAGE_ISSUE_TITLE">Une erreur est survenue</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_AUTORIZED_LABEL">Expression régulière des numéros autorisés</message>
-	<message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_AUTORIZED_DESCRIPTION">Ce sont les expressions régulières qui définissent les différents formats de numéro de téléphone autorisés pour l'envoi de sms.&lt;br/&gt;Chaque expression doit être au format internationnal (commençant par '+' et suivi du code du pays, par exemple +33 pour la France).&lt;br/&gt;Une expression régulière par ligne.</message>
-	<message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_CONVERT_LABEL">Expression régulière de conversion des numéros</message>
-	<message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_CONVERT_DESCRIPTION">Ce paramètre permet d'accepter d'autres formats de numéro que le format international.&lt;br/&gt;Chaque ligne représente une conversion à opérer d'un format lisible vers le format international.&lt;br/&gt; Elle prend la forme 'regexp/transformation' :&lt;br/&gt; regexp: elle définit le format du numéro que peut entrer l'utilisateur.&lt;br/&gt; transformation: chacun des groupes de l'expression régulière sera remplacé par le groupe dans la transformation (les numéros commencent à 1).&lt;br/&gt; Un paramètre par ligne.</message>
-	<message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_SAMPLE_LABEL">Exemple des formats autorisés</message>
-	<message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_SAMPLE_DESCRIPTION">Ce sont les exemples que vous fournissez à l'utilisateur pour qu'il rentre les numéros de téléphone au bon format.</message>
-	<message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_CATEGORY">Envoi de SMS</message>
-	<message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_GROUP">Gestion des numéros</message>
-	<message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_NO_LIST">Il n'existe actuellement aucune liste de diffusion sur le site</message>
-	<message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_XSLT_LABEL">Affichage</message>
-	<message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_XSLT_DESC">Rendu du service</message>
-	<message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_RIGHT_LABEL">Abonnement SMS</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_RIGHT_DESC">Droit de créer les services d'abonnement aux listes de diffusion SMS</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_LIST_CHOOSE">- Choisissez une liste -</message>
-    <message key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_ERROR_DESCRIPTION">Une erreur est survenue: votre inscription n'a pas été prise en compte.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_LABEL">Abonnement SMS</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_LABEL_DESC">Formulaire d'abonnement ou désabonnement à une liste de diffusion SMS.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_TITLE_LABEL">Titre</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_TITLE_LABEL_DESC">Titre du service d'enregistrement des numéros</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_SUBSCRIBE_LIST_LABEL">Choix de la liste de diffusion</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_SUBSCRIBE_LIST_LABEL_DESC">Choix de la liste de diffusion dans laquelle l'utilisateur enregistrera son numéro.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_REGISTER_TYPE_USER_CHOICE">Dans une liste déroulante pour le visiteur</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_PHONE">Votre numéro de téléphone</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_PHONE_INFO_1">au format </message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_PHONE_INFO_2"> ,</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_PHONE_INFO_3"> ou </message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_LIST">Liste de diffusion</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_CAPTCHA">Entrez les caractères figurant dans l'image ci-contre</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_SUBMIT">Valider</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_REGISTER_TYPE_LABEL">Type de demande</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_REGISTER_TYPE_DESC">Choix du type de formulaire (formulaire d'inscription, de désinscription ou on laisse le choix à l'utilisateur).</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_UNSUBSCRIBE">Désinscription</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_SUBSCRIBE">Inscription</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_INFO">Veuillez remplir le formulaire ci-dessous pour vous inscrire ou vous désinscrire à la liste de diffusion <strong>{0}</strong>.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_SUBSCRIBE_INFO">Veuillez remplir le formulaire ci-dessous pour vous inscrire à la liste de diffusion <strong>{0}</strong>.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_UNSUBSCRIBE_INFO">Veuillez remplir le formulaire ci-dessous pour vous désinscrire à la liste de diffusion <strong>{0}</strong>.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_INFO_LIST">Veuillez remplir le formulaire ci-dessous pour vous inscrire ou vous désinscrire à une liste de diffusion.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_SUBSCRIBE_INFO_LIST">Veuillez remplir le formulaire ci-dessous pour vous inscrire à une liste de diffusion.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_UNSUBSCRIBE_INFO_LIST">Veuillez remplir le formulaire ci-dessous pour vous désinscrire à une liste de diffusion.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MANDATORY_INFO">Les champs suivis d'un astérisque * sont obligatoires.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_DIRECTORY">La liste de diffusion n'est pas définie</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_CAPTCHA">Le texte de l'image est invalide</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_PHONE">Le numéro de téléphone est invalide</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_PHONE2">Le numéro de téléphone enregistré ne correspond pas au format internationnal</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_REGISTER">Le type du formulaire n'est pas défini</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MESSAGE_ALREADY_RECORD">Vous êtes déjà inscrit à cette liste de diffusion.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MESSAGE_DELETE">Votre désabonnement à la liste de diffusion a bien été pris en compte.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MESSAGE_ADD">Votre abonnement à la liste de diffusion a bien été pris en compte.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MESSAGE_NOT_RECORD">Vous n'êtes pas abonné à cette liste de diffusion.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_TITLE">Saisie incorrecte</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_DESCRIPTION">Votre formulaire contient les erreurs suivantes :</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_BACK">Cliquez ici pour revenir à la page précédente</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_BACK_ALT_SUCCESS">Utilisez le bouton 'Précédent' de votre navigateur web pour revenir à la page précédente.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_BACK_ALT">Utilisez le bouton 'Précédent' de votre navigateur web pour corriger votre formulaire d'inscription/désinscription et rafraichissez l'image.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MESSAGE_RECORD_TITLE">Inscription réussie</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MESSAGE_DELETED_TITLE">Supression réussie</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MESSAGE_ISSUE_TITLE">Une erreur est survenue</message>
+	<message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_NO_LIST">Il n'existe actuellement aucune liste de diffusion sur le site</message>
+	<message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_XSLT_LABEL">Affichage</message>
+	<message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_XSLT_DESC">Rendu du service</message>
+	<message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_RIGHT_LABEL">Abonnement SMS</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_RIGHT_DESC">Droit de créer les services d'abonnement aux listes de diffusion SMS</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_LIST_CHOOSE">- Choisissez une liste -</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_ERROR_DESCRIPTION">Une erreur est survenue : votre inscription n'a pas été prise en compte.</message>
+    
+     <!-- +
+          | CONFIGURATION PARAMETERS
+          + -->
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_CATEGORY">Envoi de SMS</message>
+    
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_GROUP">Gestion des numéros</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_AUTHORIZED_LABEL">Expression régulière des numéros autorisés</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_AUTHORIZED_DESCRIPTION">Ce sont les expressions régulières qui définissent les différents formats de numéro de téléphone autorisés pour l'envoi de sms.&lt;br/&gt;Chaque expression doit être au format internationnal (commençant par '+' et suivi du code du pays, par exemple +33 pour la France).&lt;br/&gt;Une expression régulière par ligne.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_CONVERT_LABEL">Expression régulière de conversion des numéros</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_CONVERT_DESCRIPTION">Ce paramètre permet d'accepter d'autres formats de numéro que le format international.&lt;br/&gt;Chaque ligne représente une conversion à opérer d'un format lisible vers le format international.&lt;br/&gt; Elle prend la forme 'regexp/transformation' :&lt;br/&gt; regexp: elle définit le format du numéro que peut entrer l'utilisateur.&lt;br/&gt; transformation: chacun des groupes de l'expression régulière sera remplacé par le groupe dans la transformation (les numéros commencent à 1).&lt;br/&gt; Un paramètre par ligne.</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_SAMPLE_LABEL">Exemple des formats autorisés</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_SAMPLE_DESCRIPTION">Ce sont les exemples que vous fournissez à l'utilisateur pour qu'il rentre les numéros de téléphone au bon format.</message>
+    
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_SERVICE_CONNECTION_GROUP">Connexion au service d'envoi de SMS</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_SERVICE_CONNECTION_USERNAME">Utilisateur</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_SERVICE_CONNECTION_USERNAME_DESC">Identifiant de l'utilisateur</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_SERVICE_CONNECTION_PASSWORD">Mot de passe</message>
+    <message key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_SERVICE_CONNECTION_PASSWORD_DESC">Mot de passe permettant d'accéder au service</message>
 </catalogue>
Index: main/plugin-sms/pages/services/subscribe/result/result.xsl
===================================================================
--- main/plugin-sms/pages/services/subscribe/result/result.xsl	(revision 29771)
+++ main/plugin-sms/pages/services/subscribe/result/result.xsl	(working copy)
@@ -26,54 +26,54 @@
 				<xsl:choose>
 					<xsl:when test="error">
 						<div class="form-errors">
-							<h1><i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_TITLE" i18n:catalogue="plugin.sms"/></h1>
-							<p><i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_DESCRIPTION" i18n:catalogue="plugin.sms"/></p>
+							<h1><i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_TITLE" i18n:catalogue="plugin.sms"/></h1>
+							<p><i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_DESCRIPTION" i18n:catalogue="plugin.sms"/></p>
 							<ul class="field-errors">
 								<xsl:for-each select="error">
 									<li><xsl:value-of select="."/></li>
 								</xsl:for-each>
 							</ul>
 							<noscript>
-								<p><i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_BACK_ALT" i18n:catalogue="plugin.sms"/></p>
+								<p><i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_BACK_ALT" i18n:catalogue="plugin.sms"/></p>
 							</noscript>
 							<script type="text/javascript">
-								document.write("&lt;p&gt;&lt;a href='javascript: history.back();'&gt;<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_BACK" i18n:catalogue="plugin.sms"/>&lt;/a&gt;&lt;/p&gt;")
+								document.write("&lt;p&gt;&lt;a href='javascript: history.back();'&gt;<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_BACK" i18n:catalogue="plugin.sms"/>&lt;/a&gt;&lt;/p&gt;")
 							</script>
 						</div>
 					</xsl:when>
 					<xsl:when test="messageDelete">
 						<div class="form-message">
-							<h1><i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MESSAGE_DELETED_TITLE" i18n:catalogue="plugin.sms"/></h1>
+							<h1><i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MESSAGE_DELETED_TITLE" i18n:catalogue="plugin.sms"/></h1>
 							<p><xsl:value-of select="messageDelete"/></p>
 							<noscript>
-								<p><i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_BACK_ALT_SUCCESS" i18n:catalogue="plugin.sms"/></p>
+								<p><i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_BACK_ALT_SUCCESS" i18n:catalogue="plugin.sms"/></p>
 							</noscript>
 							<script type="text/javascript">
-								document.write("&lt;p&gt;&lt;a href='javascript: history.back();'&gt;<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_BACK" i18n:catalogue="plugin.sms"/>&lt;/a&gt;&lt;/p&gt;")
+								document.write("&lt;p&gt;&lt;a href='javascript: history.back();'&gt;<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_BACK" i18n:catalogue="plugin.sms"/>&lt;/a&gt;&lt;/p&gt;")
 							</script>
 						</div>
 					</xsl:when>
 					<xsl:when test="messageRecord">
 						<div class="form-message">		
-							<h1><i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MESSAGE_RECORD_TITLE" i18n:catalogue="plugin.sms"/></h1>
+							<h1><i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MESSAGE_RECORD_TITLE" i18n:catalogue="plugin.sms"/></h1>
 							<p><xsl:value-of select="messageRecord"/></p>
 							<noscript>
-								<p><i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_BACK_ALT_SUCCESS" i18n:catalogue="plugin.sms"/></p>
+								<p><i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_BACK_ALT_SUCCESS" i18n:catalogue="plugin.sms"/></p>
 							</noscript>
 							<script type="text/javascript">
-								document.write("&lt;p&gt;&lt;a href='javascript: history.back();'&gt;<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_BACK" i18n:catalogue="plugin.sms"/>&lt;/a&gt;&lt;/p&gt;")
+								document.write("&lt;p&gt;&lt;a href='javascript: history.back();'&gt;<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_BACK" i18n:catalogue="plugin.sms"/>&lt;/a&gt;&lt;/p&gt;")
 							</script>
 						</div>
 					</xsl:when>
 					<xsl:otherwise>
 						<div class="form-message">	
-							<h1><i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MESSAGE_ISSUE_TITLE" i18n:catalogue="plugin.sms"/></h1>
+							<h1><i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MESSAGE_ISSUE_TITLE" i18n:catalogue="plugin.sms"/></h1>
 							<p><xsl:value-of select="messageError"/></p>
 							<noscript>
-								<p><i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_BACK_ALT" i18n:catalogue="plugin.sms"/></p>
+								<p><i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_BACK_ALT" i18n:catalogue="plugin.sms"/></p>
 							</noscript>
 							<script type="text/javascript">
-								document.write("&lt;p&gt;&lt;a href='javascript: history.back();'&gt;<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_BACK" i18n:catalogue="plugin.sms"/>&lt;/a&gt;&lt;/p&gt;")
+								document.write("&lt;p&gt;&lt;a href='javascript: history.back();'&gt;<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_BACK" i18n:catalogue="plugin.sms"/>&lt;/a&gt;&lt;/p&gt;")
 							</script>
 						</div>							
 					</xsl:otherwise>
Index: main/plugin-sms/pages/services/subscribe/subscribe_1.2.xml
===================================================================
--- main/plugin-sms/pages/services/subscribe/subscribe_1.2.xml	(revision 29771)
+++ main/plugin-sms/pages/services/subscribe/subscribe_1.2.xml	(working copy)
@@ -15,5 +15,5 @@
    limitations under the License.
    -->
 <service>
-	<label i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_LABEL</label>
+	<label i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_LABEL</label>
 </service>
\ No newline at end of file
Index: main/plugin-sms/pages/services/subscribe/subscribe_1.2.xsl
===================================================================
--- main/plugin-sms/pages/services/subscribe/subscribe_1.2.xsl	(revision 29771)
+++ main/plugin-sms/pages/services/subscribe/subscribe_1.2.xsl	(working copy)
@@ -62,26 +62,26 @@
 	   					<xsl:choose>
 	   						<xsl:when test="count(/form/lists/list) = 0">
 		   						<i18n:translate>
-									<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_NO_LIST" i18n:catalogue="plugin.sms"/>
+									<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_NO_LIST" i18n:catalogue="plugin.sms"/>
 								</i18n:translate>
 	   						</xsl:when>
 		   					<xsl:when test="count(/form/lists/list) = 1">
 			   					<xsl:choose>
 				   					<xsl:when test="$registerType = 'user-choice'">
 					   					<i18n:translate>
-											<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_INFO" i18n:catalogue="plugin.sms"/>
+											<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_INFO" i18n:catalogue="plugin.sms"/>
 											<i18n:param><xsl:value-of select="/form/lists/list"/></i18n:param>
 										</i18n:translate>
 									</xsl:when>
 									<xsl:when test="$registerType = 'subscribe'">
 										<i18n:translate>
-											<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_SUBSCRIBE_INFO" i18n:catalogue="plugin.sms"/>
+											<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_SUBSCRIBE_INFO" i18n:catalogue="plugin.sms"/>
 											<i18n:param><xsl:value-of select="/form/lists/list"/></i18n:param>
 										</i18n:translate>
 									</xsl:when>
 									<xsl:when test="$registerType = 'unsubscribe'">
 										<i18n:translate>
-											<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_UNSUBSCRIBE_INFO" i18n:catalogue="plugin.sms"/>
+											<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_UNSUBSCRIBE_INFO" i18n:catalogue="plugin.sms"/>
 											<i18n:param><xsl:value-of select="/form/lists/list"/></i18n:param>
 										</i18n:translate>
 									</xsl:when>
@@ -92,17 +92,17 @@
 			   					<xsl:choose>
 									<xsl:when test="$registerType = 'user-choice'">
 				   						<i18n:translate>
-											<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_INFO_LIST" i18n:catalogue="plugin.sms"/>
+											<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_INFO_LIST" i18n:catalogue="plugin.sms"/>
 										</i18n:translate>
 									</xsl:when>
 									<xsl:when test="$registerType = 'subscribe'">
 					   					<i18n:translate>
-											<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_SUBSCRIBE_INFO_LIST" i18n:catalogue="plugin.sms"/>
+											<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_SUBSCRIBE_INFO_LIST" i18n:catalogue="plugin.sms"/>
 										</i18n:translate>
 									</xsl:when>
 									<xsl:when test="$registerType = 'unsubscribe'">
 					   					<i18n:translate>
-											<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_UNSUBSCRIBE_INFO_LIST" i18n:catalogue="plugin.sms"/>
+											<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_UNSUBSCRIBE_INFO_LIST" i18n:catalogue="plugin.sms"/>
 										</i18n:translate>
 									</xsl:when>
 								</xsl:choose>
@@ -110,7 +110,7 @@
 		   					</xsl:otherwise>
 						</xsl:choose>
 						<xsl:if test="count(/form/lists/list) > 0">
-							<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MANDATORY_INFO" i18n:catalogue="plugin.sms"/>
+							<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MANDATORY_INFO" i18n:catalogue="plugin.sms"/>
 	   					</xsl:if>
 	   				</p>
 	   				<br/>
@@ -252,7 +252,7 @@
                                     $j.each(errors, function(i) {
                                         errorInfo += "\n* " + $j(errors[i]).text();
                                     }); 
-                                    alert("<i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_DESCRIPTION"/>" + errorInfo)
+                                    alert("<i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_DESCRIPTION"/>" + errorInfo)
                                 }
                             }
                             else
@@ -268,7 +268,7 @@
                         
                         function handleError(jqXHR, textStatus, errorThrown)
                         {
-                            alert("<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_ERROR_DESCRIPTION" i18n:catalogue="plugin.sms" />");
+                            alert("<i18n:text i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_ERROR_DESCRIPTION" i18n:catalogue="plugin.sms" />");
                         }
 
                         $j.ajax({
@@ -289,10 +289,10 @@
 		<div class="field">
 			<div class="label">
 				<label for="smsList-{$uniqueId}-phone">
-					<i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_PHONE"/>
+					<i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_PHONE"/>
 					<xsl:call-template name="smsList-form-mandatorymarker" />
 					<br/>
-					<xsl:text/>(<i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_PHONE_INFO_1"/>
+					<xsl:text/>(<i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_PHONE_INFO_1"/>
 					<xsl:variable name="lenght" select="count(/form/samples/sample)"/>
 					<xsl:for-each select="/form/samples/sample">
 					    <xsl:variable name="i" select="position()"/>
@@ -300,10 +300,10 @@
    					    	<xsl:when test="$i = 1">
 							</xsl:when>	    
 					    	<xsl:when test="$i != $lenght">
-					    		<xsl:text/><i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_PHONE_INFO_2"/>
+					    		<xsl:text/><i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_PHONE_INFO_2"/>
 					    	</xsl:when>
 					    	<xsl:otherwise>
-					    		<xsl:text/><i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_PHONE_INFO_3"/>
+					    		<xsl:text/><i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_PHONE_INFO_3"/>
 					    	</xsl:otherwise>
 					    </xsl:choose>
 						<xsl:value-of select="."></xsl:value-of>
@@ -323,17 +323,17 @@
 			<div class="field">
 				<div class="label">
 					<label for="smsList-{$uniqueId}-register">
-						<i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_REGISTER_TYPE_LABEL"/>
+						<i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_REGISTER_TYPE_LABEL"/>
 						<xsl:call-template name="smsList-form-mandatorymarker" />
 					</label>
 				</div>
 				<div class="select">
 					<select id="smsList-{$uniqueId}-register" name="register">
 						<option value="subscribe">
-							<i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_SUBSCRIBE"/>
+							<i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_SUBSCRIBE"/>
 						</option>
 						<option value="unsubscribe">
-							<i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_UNSUBSCRIBE"/>
+							<i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_UNSUBSCRIBE"/>
 						</option>
 					</select>
 				</div>
@@ -352,13 +352,13 @@
     			<div class="field">
     				<div class="label">
     					<label for="smsList-{$uniqueId}-list">
-    						<i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_LIST"/>
+    						<i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_LIST"/>
     						<xsl:call-template name="smsList-form-mandatorymarker" />
     					</label>
     				</div>
     				<div class="select">
     					<select id="smsList-{$uniqueId}-list" name="list">
-    						<option selected="true" value=""><i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_LIST_CHOOSE"/></option>
+    						<option selected="true" value=""><i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_LIST_CHOOSE"/></option>
     						<xsl:for-each select="/form/lists/list">
     							<xsl:sort select="."/>
     							<xsl:variable name="value" select="@id"/>
@@ -383,7 +383,7 @@
 		<div class="field">
 			<div class="label">
 				<label for="smsList-{$uniqueId}-captcha">
-					<i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_CAPTCHA"/>
+					<i18n:text i18n:catalogue="plugin.sms" i18n:key="PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_CAPTCHA"/>
 					<xsl:call-template name="smsList-form-mandatorymarker" />			
 				</label>
 			</div>
@@ -411,7 +411,7 @@
          <!-- Template for submit button -->
          <div id="smsList-submit-{$uniqueId}">
 	         <xsl:call-template name="common-utils-input-submit">
-	             <xsl:with-param name="i18nkey" select="'plugin.sms:PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_SUBMIT'" />                
+	             <xsl:with-param name="i18nkey" select="'plugin.sms:PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_SUBMIT'" />                
 	             <xsl:with-param name="onclick">return smsList_form_submit_<xsl:value-of select="$uniqueId"/>();</xsl:with-param>
              </xsl:call-template>
          </div>
Index: main/plugin-sms/plugin.xml
===================================================================
--- main/plugin-sms/plugin.xml	(revision 29771)
+++ main/plugin-sms/plugin.xml	(working copy)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!--
-   Copyright 2011 Anyware Services
+   Copyright 2015 Anyware Services
 
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
@@ -22,38 +22,38 @@
     
     <config>
     	<param id="org.ametys.plugins.sms.broker.autorized" type="string">
-            <label i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_AUTORIZED_LABEL</label>
-            <description i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_AUTORIZED_DESCRIPTION</description>
+            <label i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_AUTORIZED_LABEL</label>
+            <description i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_AUTORIZED_DESCRIPTION</description>
         	<validation>
                 <mandatory/>
             </validation>
             <default-value>\+33[67][0-9]{8}</default-value>
-            <category i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_CATEGORY</category>
-            <group i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_GROUP</group>
+            <category i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_CATEGORY</category>
+            <group i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_GROUP</group>
             <order>10</order>
             <widget>textarea</widget>
         </param>
         <param id="org.ametys.plugins.sms.broker.convert" type="string">
-            <label i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_CONVERT_LABEL</label>
-            <description i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_CONVERT_DESCRIPTION</description>
+            <label i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_CONVERT_LABEL</label>
+            <description i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_CONVERT_DESCRIPTION</description>
         	<validation>
                 <mandatory/>
             </validation>
             <default-value>0([67][0-9]{8})/+33{1}&#13;0([67])[ .]([0-9]{2})[ .]([0-9]{2})[ .]([0-9]{2})[ .]([0-9]{2})/+33{1}{2}{3}{4}{5}</default-value>
-            <category i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_CATEGORY</category>
-            <group i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_GROUP</group>
+            <category i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_CATEGORY</category>
+            <group i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_GROUP</group>
             <order>20</order>
             <widget>textarea</widget>
         </param>
         <param id="org.ametys.plugins.sms.broker.sample" type="string">
-            <label i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_SAMPLE_LABEL</label>
-            <description i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_SAMPLE_DESCRIPTION</description>
+            <label i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_SAMPLE_LABEL</label>
+            <description i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_SAMPLE_DESCRIPTION</description>
         	<validation>
                 <mandatory/>
             </validation>
             <default-value>+336XXXXXXXX&#13;06XXXXXXXX</default-value>         
-            <category i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_CATEGORY</category>
-            <group i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_BROKER_GROUP</group>
+            <category i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_CATEGORY</category>
+            <group i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_GROUP</group>
             <order>30</order>
             <widget>textarea</widget>
         </param>
@@ -92,7 +92,7 @@
         </extensions>
     </feature>
     
-    <feature name="org.ametys.plugins.sms.brokers.logger">
+    <feature name="org.ametys.plugins.sms.broker.logger">
         <extensions>
             <extension point="org.ametys.plugins.sms.broker.Broker"
                        id="org.ametys.plugins.sms.broker.LoggerBroker"
@@ -101,6 +101,40 @@
         </extensions>
     </feature>
     
+    <feature name="org.ametys.plugins.sms.broker.etoilediese">
+        <config>
+            <param id="org.ametys.plugins.sms.broker.user" type="string">
+                <label i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_SERVICE_CONNECTION_USERNAME</label>
+                <description i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_SERVICE_CONNECTION_USERNAME_DESC</description>
+                <validation>
+                    <mandatory/>
+                </validation>
+                <default-value>username</default-value>
+                <category i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_CATEGORY</category>
+                <group i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_SERVICE_CONNECTION_GROUP</group>
+                <order>1</order>
+            </param>
+            <param id="org.ametys.plugins.sms.broker.password" type="password">
+                <label i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_SERVICE_CONNECTION_PASSWORD</label>
+                <description i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_SERVICE_CONNECTION_PASSWORD_DESC</description>
+                <validation>
+                    <mandatory/>
+                </validation>
+                <category i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_BROKER_CATEGORY</category>
+                <group i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_SERVICE_CONNECTION_GROUP</group>
+                <order>2</order>
+            </param>
+        </config>
+        <extensions>
+            <extension point="org.ametys.plugins.sms.broker.Broker"
+                       id="org.ametys.plugins.sms.broker.EtoileDieseBroker"
+                       class="org.ametys.plugins.sms.broker.EtoileDieseBroker"
+                       logger="org.ametys.plugins.sms.broker.EtoileDieseBroker">
+                <etoilediese-bulk-ws-url>https://ssl.etoilediese.fr/envoi/sms/envoicsv.php</etoilediese-bulk-ws-url>
+            </extension>
+        </extensions>
+    </feature>
+        
     <feature name="org.ametys.plugins.sms.rights">
         <extensions>
             <extension point="org.ametys.runtime.plugins.core.right.RightsExtensionPoint"
@@ -252,7 +286,7 @@
                        point="org.ametys.cms.workspace.ribbon.RibbonControlsManager" 
                        class="org.ametys.runtime.ui.impl.StaticContextualClientSideElement">
                 <action class="org.ametys.ribbon.control.button.ActionSelectionButton">
-                    <param name="target-type">^sms-list$</param>
+                    <param name="target-type">^sms-list-provider$</param>
                     <param name="action">org.ametys.sms.list.Edit.edit</param>
                     <param name="enable-multiselection">false</param>                    
                     <param name="label" i18n="true">PLUGINS_SMS_LIST_UITOOL_SMS_EDIT_LABEL</param>
@@ -272,7 +306,7 @@
                        point="org.ametys.cms.workspace.ribbon.RibbonControlsManager" 
                        class="org.ametys.runtime.ui.impl.StaticContextualClientSideElement">
                 <action class="org.ametys.ribbon.control.button.ActionSelectionButton">
-                    <param name="target-type">^sms-list$</param>
+                    <param name="target-type">^sms-list-provider$</param>
                     <param name="action">org.ametys.sms.list.Delete.act</param>
                     <param name="label" i18n="true">PLUGINS_SMS_LIST_UITOOL_SMS_DELETE_LABEL</param>
                     <param name="default-description" i18n="true">PLUGINS_SMS_LIST_UITOOL_SMS_DELETE_DESC</param>
@@ -310,8 +344,8 @@
     		<extension point="org.ametys.runtime.plugins.core.right.RightsExtensionPoint"
                        id="org.ametys.plugins.sms.services.rights">
                 <right id="SMS_Right_Service_SMS">
-                    <label i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_RIGHT_LABEL</label>
-                    <description i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_RIGHT_DESC</description>
+                    <label i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_RIGHT_LABEL</label>
+                    <description i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_RIGHT_DESC</description>
                     <category i18n="true">plugin.web:PLUGINS_WEB_RIGHTS_SERVICE_CREATE_CATEGORY</category>
                 </right>
             </extension>
@@ -321,8 +355,8 @@
 				id="org.ametys.plugins.sms.service.subscribe">
 				<right>SMS_Right_Service_SMS</right>
 				<url>service/subscribe.html</url>
-				<label i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_LABEL</label>
-				<description i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_LABEL_DESC</description>
+				<label i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_LABEL</label>
+				<description i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_LABEL_DESC</description>
 				<thumbnail>
 					<small>img/service/subscription_16.png</small>
 					<medium>img/service/subscription_32.png</medium>
@@ -330,12 +364,12 @@
 				</thumbnail>
 				<parameters>
 					<parameter name="title" type="string">
-						<label i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_TITLE_LABEL</label>
-						<description i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_TITLE_LABEL_DESC</description>
+						<label i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_TITLE_LABEL</label>
+						<description i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_TITLE_LABEL_DESC</description>
 					</parameter>
 					<parameter name="subscribers-list" type="string">
-						<label i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_SUBSCRIBE_LIST_LABEL</label>
-						<description i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_SUBSCRIBE_LIST_LABEL_DESC</description>
+						<label i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_SUBSCRIBE_LIST_LABEL</label>
+						<description i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_SUBSCRIBE_LIST_LABEL_DESC</description>
 						<default-value>-</default-value>
 						<validation>
 							<mandatory/>
@@ -346,8 +380,8 @@
 						</enumeration>
 					</parameter>
 					<parameter name="register-type" type="string">
-						<label i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_REGISTER_TYPE_LABEL</label>
-						<description i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_REGISTER_TYPE_DESC</description>
+						<label i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_REGISTER_TYPE_LABEL</label>
+						<description i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_REGISTER_TYPE_DESC</description>
 						<default-value>user-choice</default-value>
 						<validation>
 							<mandatory/>
@@ -355,22 +389,22 @@
 						<widget>sorted-enumeration</widget>
 						<enumeration>
 			            	<entry>
-			            		<label i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_REGISTER_TYPE_USER_CHOICE</label>
+			            		<label i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_REGISTER_TYPE_USER_CHOICE</label>
 			            		<value>user-choice</value>
 			            	</entry>
 			            	<entry>
-			            		<label i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_SUBSCRIBE</label>
+			            		<label i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_SUBSCRIBE</label>
 			            		<value>subscribe</value>
 			            	</entry>
 			            	<entry>
-			            		<label i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_UNSUBSCRIBE</label>
+			            		<label i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_UNSUBSCRIBE</label>
 			            		<value>unsubscribe</value>
 			            	</entry>
 						</enumeration>
 					</parameter>
 					<parameter name="xslt" type="string">
-						<label i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_XSLT_LABEL</label>
-						<description i18n="true">PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_XSLT_DESC</description>
+						<label i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_XSLT_LABEL</label>
+						<description i18n="true">PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_XSLT_DESC</description>
 						<default-value>pages/services/subscribe/subscribe_1.2.xsl</default-value>
 						<validation>
 							<mandatory/>
Index: main/plugin-sms/resources/js/org/ametys/sms/SendSMSAction.i18n.js
===================================================================
--- main/plugin-sms/resources/js/org/ametys/sms/SendSMSAction.i18n.js	(revision 29771)
+++ main/plugin-sms/resources/js/org/ametys/sms/SendSMSAction.i18n.js	(working copy)
@@ -55,6 +55,11 @@
 			}
 		}
 		
+		function resetSMSTextCounter()
+		{
+			document.getElementById(org.ametys.sms.SendSmsDialog._textMessage.id + "-counter-val").innerHTML = 0;
+		}
+		
 		org.ametys.sms.SendSmsDialog._textMessage = new org.ametys.form.TextAreaField({
             id: 'sms-message',
             name: 'message',
@@ -146,6 +151,9 @@
 	        autoScroll: false,	        
 	        items: [ org.ametys.sms.SendSmsDialog._formPanel ],        
 	        closeAction: 'hide',
+	        listeners: {
+	        	'show': resetSMSTextCounter 
+        	},
 	        buttons: [{
 	            text: "<i18n:text i18n:key='PLUGINS_SMS_SEND_DIALOG_BUTTON_OK'/>",
 	            handler: org.ametys.sms.SendSmsDialog._send
Index: main/plugin-sms/resources/js/org/ametys/sms/list/ListActions.i18n.js
===================================================================
--- main/plugin-sms/resources/js/org/ametys/sms/list/ListActions.i18n.js	(revision 29771)
+++ main/plugin-sms/resources/js/org/ametys/sms/list/ListActions.i18n.js	(working copy)
@@ -25,16 +25,11 @@
 	org.ametys.sms.list.Edit._mode = "add";
 	org.ametys.sms.list.Edit._pluginName = pluginName;
 	
-	var targets = org.ametys.ribbon.RibbonManager.getInstance().getCurrentSelectionTargets();
-	var targetProvider = org.ametys.messagebus.message.MessageTargetHelper.findFirst(targets, function(target) { return target.getType() == "sms-list-provider" });
-
-	if (targetProvider == null)
-		return;
-	
 	org.ametys.sms.list.Edit._delayedInitialized();
 	org.ametys.sms.list.Edit._box.show();
-
-	org.ametys.sms.list.Edit._lang = targetProvider.getParameters().lang;
+	
+	var smsListTool = org.ametys.uitool.ToolsManager.getInstance().getTool('uitool-smslist');
+	org.ametys.sms.list.Edit._lang = smsListTool._lang;
 	org.ametys.sms.list.Edit._inputTitle.setValue("");
 	org.ametys.sms.list.Edit._textDesc.setValue("");
 }
@@ -118,16 +113,16 @@
 	var targets = org.ametys.ribbon.RibbonManager.getInstance().getCurrentSelectionTargets();
 	var target = org.ametys.messagebus.message.MessageTargetHelper.findFirst(targets, function(target) { return target.getType() == "sms-list" });
 	
-	var targetProvider = org.ametys.messagebus.message.MessageTargetHelper.findFirst(targets, function(target) { return target.getType() == "sms-list-provider" });
-	
-	if (target == null || targetProvider == null)
+	if (target == null)
 		return; 
 	
+	var smsListTool = org.ametys.uitool.ToolsManager.getInstance().getTool('uitool-smslist');
+	
 	org.ametys.sms.list.Edit._delayedInitialized();
 	org.ametys.sms.list.Edit._box.show();
 	
 	org.ametys.sms.list.Edit._idList = target.getParameters().id;
-	org.ametys.sms.list.Edit._lang = targetProvider.getParameters().lang;
+	org.ametys.sms.list.Edit._lang = smsListTool._lang;
 
 	var label = target.getParameters().label;
 	var desc = target.getParameters().desc;
Index: main/plugin-sms/resources/js/org/ametys/sms/tool/SmsListTool.i18n.js
===================================================================
--- main/plugin-sms/resources/js/org/ametys/sms/tool/SmsListTool.i18n.js	(revision 29771)
+++ main/plugin-sms/resources/js/org/ametys/sms/tool/SmsListTool.i18n.js	(working copy)
@@ -23,8 +23,6 @@
 
 Ext.extend(org.ametys.sms.tool.SmsListTool, org.ametys.uitool.tool.Tool, {});
 
-org.ametys.sms.tool.SmsListTool._lang = 'fr';
-
 org.ametys.sms.tool.SmsListTool.prototype.createPanel = function()
 {
 	// The mapping for XML doc
@@ -251,7 +249,7 @@
 
 org.ametys.sms.tool.SmsListTool.prototype._langChange = function(combo, record, index)
 {
-    if (this._lang == record.data.lang)
+	if (this._lang == record.data.lang)
     {
         return;
     }
@@ -298,7 +296,7 @@
 org.ametys.sms.tool.SmsListTool.prototype._sendSelectionMessage = function()
 {
 	var records = this._grid.getSelectionModel().getSelections();
-	var parentTarget = 	org.ametys.messagebus.bus.MessageBuilder.getInstance().createTarget('sms-list-provider', {'lang': 'fr'}); // FIXME
+	var parentTarget = 	org.ametys.messagebus.bus.MessageBuilder.getInstance().createTarget('sms-list-provider', null); 
     for (var i=0; i &lt; records.length; i++)
     {
     	parentTarget.getSubTargets().push(org.ametys.messagebus.bus.MessageBuilder.getInstance().createTarget('sms-list', {'id': records[i].id}));
Index: main/plugin-sms/sitemap.xmap
===================================================================
--- main/plugin-sms/sitemap.xmap	(revision 29771)
+++ main/plugin-sms/sitemap.xmap	(working copy)
@@ -63,9 +63,9 @@
                     </map:select>
             	</map:act>
 			</map:match>
-
+            
 			<map:match pattern="stop-sms">	
-				<map:act type="stop-sms" >
+				<map:act type="stop-sms">
 					<map:generate type="action-result" />
 					<map:serialize type="xml"/>
 				</map:act>
Index: main/plugin-sms/src/org/ametys/plugins/sms/SendSMSAction.java
===================================================================
--- main/plugin-sms/src/org/ametys/plugins/sms/SendSMSAction.java	(revision 29771)
+++ main/plugin-sms/src/org/ametys/plugins/sms/SendSMSAction.java	(working copy)
@@ -68,11 +68,16 @@
         
         if (_rightsManager.hasRight(login, "Plugins_SMS_Right_Send", "/contributor") != RightResult.RIGHT_OK)
         {
-            throw new IllegalAccessException("The user '" + login + "' tried to send a message to the list '" + phoneList + "' without the convenient right: " + message);
+            throw new IllegalAccessException("The user '" + login + "' tried to send a message to the list '" + phoneList + "' but right did not have the right to: " + message);
         }
         
         Set<String> phoneNumberList = _subscribeDAO.getPhoneNumbersFromList(phoneList).keySet();
-        _broker.send(phoneNumberList, message);
+        if (phoneNumberList.size() == 0)
+        {
+            throw new IllegalArgumentException("The user '" + login + "' tried to send a message to the empty list '" + phoneList + "'");
+        }
+        
+        _broker.send(phoneNumberList, message, phoneList);
 
         return EMPTY_MAP;
     }
Index: main/plugin-sms/src/org/ametys/plugins/sms/broker/Broker.java
===================================================================
--- main/plugin-sms/src/org/ametys/plugins/sms/broker/Broker.java	(revision 29771)
+++ main/plugin-sms/src/org/ametys/plugins/sms/broker/Broker.java	(working copy)
@@ -27,14 +27,17 @@
     
     /**
      * Send the message from the sender to all the phones in the list
-     * @param phonesList
-     * @param message
+     * @param phoneNumbersList the list of phone numbers
+     * @param message the message to send
+     * @param listId the jcr id of the list to send mail to
+     * @throws Exception If the message was not sent correctly
      */
-    public void send(Set<String> phonesList, String message);
+    public void send(Set<String> phoneNumbersList, String message, String listId) throws Exception;
 
     /**
-     * When a stop request is arriving from broker, the implementation extract the phone number associated
-     * @return the phone number from the 'stop' sender
+     * When a stop request is arriving from broker, the implementation extract the phone number associated 
+     * @return the phone number from the 'stop' sender at format +{countryCode}{number} (ex: +33612345678), it can be null if the phone number cannot be extracted from the stop request
+     * @throws Exception if the phone number was not provided within the stop request
      */
-    public String getPhoneNumberFromStopRequest();
+    public String getPhoneNumberFromStopRequest() throws Exception;
 }
Index: main/plugin-sms/src/org/ametys/plugins/sms/broker/EtoileDieseBroker.java
===================================================================
--- main/plugin-sms/src/org/ametys/plugins/sms/broker/EtoileDieseBroker.java	(revision 0)
+++ main/plugin-sms/src/org/ametys/plugins/sms/broker/EtoileDieseBroker.java	(revision 0)
@@ -0,0 +1,194 @@
+package org.ametys.plugins.sms.broker;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.Set;
+
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+import org.apache.cocoon.ProcessingException;
+import org.apache.cocoon.components.ContextHelper;
+import org.apache.cocoon.environment.Request;
+import org.apache.commons.codec.digest.DigestUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.mime.MultipartEntity;
+import org.apache.http.entity.mime.content.InputStreamBody;
+import org.apache.http.entity.mime.content.StringBody;
+import org.apache.http.impl.client.DefaultHttpClient;
+
+import org.ametys.runtime.config.Config;
+import org.ametys.runtime.user.UsersManager;
+import org.ametys.runtime.util.BOMInputStream;
+
+/**
+ * Broker implementation using the "etoile diese" web service
+ */
+public class EtoileDieseBroker extends LoggerBroker implements Configurable, Contextualizable
+{
+    private static SimpleDateFormat __DATE_FORMAT = new SimpleDateFormat("YYYYMMddHHmmss");
+    
+    /** Url of Etoile diese's send sms web service in bulk mode (the recipients are listed in a CSV file) */
+    private String _etoileDieseBulkWSUrl;
+    
+    /** The Avalon context */
+    private Context _context;
+    
+    /** The users manager */
+    private UsersManager _usersManager;
+    
+    @Override
+    public void configure(Configuration configuration) throws ConfigurationException
+    {
+        _etoileDieseBulkWSUrl = configuration.getChild("etoilediese-bulk-ws-url").getValue();
+    }
+    
+    @Override
+    public void contextualize(Context context) throws ContextException
+    {
+        _context = context;
+    }
+    
+    @Override
+    public void service(ServiceManager manager) throws ServiceException
+    {
+        super.service(manager);
+        _usersManager= (UsersManager) manager. lookup(UsersManager.ROLE);
+    }
+    
+    @Override
+    public void send(Set<String> phoneNumbersList, String message, String listId) throws Exception
+    {   
+        super.send(phoneNumbersList, message, listId);
+        
+        String username = Config.getInstance().getValueAsString("org.ametys.plugins.sms.broker.user");
+        String password = Config.getInstance().getValueAsString("org.ametys.plugins.sms.broker.password");
+        String now = __DATE_FORMAT.format(new Date());
+        InputStream csvFile = _getCSVFile(phoneNumbersList, message);
+        String userLogin = _currentUserProvider.getUser();
+        String userFullName = _usersManager.getUser(userLogin).getFullName();
+        
+        String computedPwd = DigestUtils.md5Hex(password + username + now);
+        
+        HttpClient httpClient = null;
+
+        try
+        {
+            // HTTP parameters
+            MultipartEntity reqEntity = new MultipartEntity();
+            // User
+            reqEntity.addPart("u", new StringBody(username));
+            // Password
+            reqEntity.addPart("p", new StringBody(computedPwd));
+            // Current date for MD5 sum 
+            reqEntity.addPart("date", new StringBody(now));
+            // Category
+            reqEntity.addPart("c", new StringBody(getCategory(listId)));
+            // Message type
+            reqEntity.addPart("f", new StringBody("sms"));
+            // CSV file
+            reqEntity.addPart("file", new InputStreamBody(csvFile, "text/csv", "sms.csv"));
+            // Additionnal information
+            reqEntity.addPart("sender-login", new StringBody(userLogin));
+            reqEntity.addPart("sender-fullname", new StringBody(userFullName));
+            
+            // Prepare a request object
+            HttpPost postRequest = new HttpPost(_etoileDieseBulkWSUrl);
+            postRequest.setEntity(reqEntity);
+            
+            // Execute the request
+            httpClient = new DefaultHttpClient();
+            HttpResponse httpResponse = httpClient.execute(postRequest);
+            
+            if (httpResponse.getStatusLine().getStatusCode() == 200)
+            {
+                HttpEntity responseEntity = httpResponse.getEntity();
+                if (responseEntity != null)
+                {
+                    InputStream is = responseEntity.getContent();
+                    String response = IOUtils.toString(is, "ISO-8859-1");
+                    IOUtils.closeQuietly(is);
+                    
+                    if (response.contains("bulk"))
+                    {
+                        getLogger().info("EtoileDiese's response: " + response);
+                        return;
+                    }
+                    else
+                    {
+                        throw new ProcessingException("EtoileDiese failed to process delivering with the following message: " + response);
+                    }                        
+                }
+                throw new ProcessingException("EtoileDiese has not sent any response");
+            }
+            
+            throw new ProcessingException("Unable to call the web service: " + _etoileDieseBulkWSUrl + ", response: " + httpResponse.getStatusLine());
+        }
+        finally 
+        {
+            // HttpClient instance is no longer needed, shut down
+            // the connection manager to ensure immediate deallocation
+            // of all system resources
+            if (httpClient != null)
+            {
+                httpClient.getConnectionManager().shutdown();
+            }
+            IOUtils.closeQuietly(csvFile);
+        }
+    }
+    
+    @Override
+    public String getPhoneNumberFromStopRequest() throws Exception
+    {
+        Request request = ContextHelper.getRequest(_context);
+        String responseText = request.getParameter("txt");
+        String phoneNumber = request.getParameter("num");
+        
+        if (StringUtils.containsIgnoreCase(responseText, "stop"))
+        {
+            if (phoneNumber != null)
+            {
+                return "+" + phoneNumber;
+            }
+
+            throw new ProcessingException("EtoileDiese did not provide a phone number for the stop sms request");
+        }
+        
+        getLogger().info("The sms response of number [" + (phoneNumber != null ? phoneNumber : "unknown") + "] does not contain the 'stop' string: " + (responseText != null ? responseText : "[empty message]"));
+        return null;
+    }
+
+    /**
+     * Creates and return a CSV file from a list of numbers and a message
+     * @param phoneNumbersList the list of phone numbers to send a SMS to
+     * @param message the message to send
+     * @return the csv file
+     */
+    private InputStream _getCSVFile(Set<String> phoneNumbersList, String message) throws IOException
+    {
+        StringBuffer sb = new StringBuffer();
+        String banalizedNewLinesMessage = message.replace("\n", "\\n");
+        
+        for (String phoneNumber : phoneNumbersList)
+        {
+            sb.append(phoneNumber);
+            sb.append(" ; ");
+            sb.append(banalizedNewLinesMessage);
+            sb.append('\n');
+        }
+
+        return new BOMInputStream(IOUtils.toInputStream(sb.toString(), "UTF-8"));
+    }
+}
Index: main/plugin-sms/src/org/ametys/plugins/sms/broker/LoggerBroker.java
===================================================================
--- main/plugin-sms/src/org/ametys/plugins/sms/broker/LoggerBroker.java	(revision 29836)
+++ main/plugin-sms/src/org/ametys/plugins/sms/broker/LoggerBroker.java	(working copy)
@@ -22,6 +22,8 @@
 import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.avalon.framework.service.Serviceable;
 
+import org.ametys.plugins.repository.AmetysObject;
+import org.ametys.plugins.repository.AmetysObjectResolver;
 import org.ametys.runtime.user.CurrentUserProvider;
 
 /**
@@ -29,24 +31,40 @@
  */
 public class LoggerBroker extends AbstractLogEnabled implements Broker, Serviceable
 {
-    private CurrentUserProvider _userProvider;
+    /** The user provider */
+    protected CurrentUserProvider _currentUserProvider;
 
+    /** Avalon component resolving ametys objects */
+    protected AmetysObjectResolver _ametysObjectResolver;
+    
     public void service(ServiceManager manager) throws ServiceException
     {
-        _userProvider = (CurrentUserProvider) manager.lookup(CurrentUserProvider.ROLE);        
+        _currentUserProvider = (CurrentUserProvider) manager.lookup(CurrentUserProvider.ROLE);
+        _ametysObjectResolver = (AmetysObjectResolver) manager.lookup(AmetysObjectResolver.ROLE);
     }
     
-    public void send(Set<String> phoneNumbers, String message)
+    public void send(Set<String> phoneNumbers, String message, String listId) throws Exception
     {
         if (getLogger().isInfoEnabled())
         {
-            getLogger().info("The user '" + _userProvider.getUser() + "' send a sms message to " + phoneNumbers.toString() + ": " + message);
+            getLogger().info("The user '" + _currentUserProvider.getUser() + "' send a sms message to the category :" + getCategory(listId) + ". The recipients phone numbers are : " + phoneNumbers.toString() + ". The message is: " + message);
         }
     }
 
-    public String getPhoneNumberFromStopRequest()
+    public String getPhoneNumberFromStopRequest() throws Exception
     {
         throw new UnsupportedOperationException("The LoggerBroker does not support STOP request");
     }
+    
+    /**
+     * Computes the name of the subscribers' list node corresponding to the list id passed as a parameter
+     * @param listId the id of the jcr node of the subscribers list
+     * @return the name of the category
+     */
+    protected String getCategory (String listId)
+    {
+        AmetysObject subscribers = _ametysObjectResolver.resolveById(listId);
+        return subscribers.getName();
+    }
 
 }
Index: main/plugin-sms/src/org/ametys/plugins/sms/dao/SubscriberListsDAO.java
===================================================================
--- main/plugin-sms/src/org/ametys/plugins/sms/dao/SubscriberListsDAO.java	(revision 29771)
+++ main/plugin-sms/src/org/ametys/plugins/sms/dao/SubscriberListsDAO.java	(working copy)
@@ -45,7 +45,7 @@
     public static final String ROLE = SubscriberListsDAO.class.getName(); 
     
     /** The site manager */
-    protected SiteManager _siteManager;
+    private SiteManager _siteManager;
     
     public void service(ServiceManager manager) throws ServiceException
     {
@@ -92,7 +92,7 @@
      */
     public List<JCRSubscribersList> getSubscribersLists(String sitename, String lang) throws RepositoryException
     {
-        List<JCRSubscribersList> subsribersLists = new ArrayList<JCRSubscribersList>();
+        List<JCRSubscribersList> subscribersLists = new ArrayList<JCRSubscribersList>();
         TraversableAmetysObject parentNode = _getRootNode(sitename, lang);
         
         AmetysObjectIterable<AmetysObject> children = parentNode.getChildren();
@@ -100,10 +100,10 @@
         {
             if (child instanceof JCRSubscribersList)
             {
-                subsribersLists.add((JCRSubscribersList) child);
+                subscribersLists.add((JCRSubscribersList) child);
             }
         }
-        return subsribersLists;
+        return subscribersLists;
     }
     
     private TraversableAmetysObject _getRootNode (String sitename, String lang) throws RepositoryException
Index: main/plugin-sms/src/org/ametys/plugins/sms/service/SubscribeAction.java
===================================================================
--- main/plugin-sms/src/org/ametys/plugins/sms/service/SubscribeAction.java	(revision 29771)
+++ main/plugin-sms/src/org/ametys/plugins/sms/service/SubscribeAction.java	(working copy)
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2014 Anyware Services
+ *  Copyright 2015 Anyware Services
  *
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -41,7 +41,6 @@
 import org.ametys.runtime.util.cocoon.ActionResultGenerator;
 import org.ametys.web.cache.PageHelper;
 import org.ametys.web.pageaccess.PageAccessManager;
-import org.ametys.web.repository.page.Page;
 import org.ametys.web.repository.page.ZoneItem;
 import org.ametys.web.site.SiteConfigurationExtensionPoint;
 
@@ -99,7 +98,7 @@
             register = request.getParameter("register");
             if (register == null)
             {
-                errors.add(new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_REGISTER"));
+                errors.add(new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_REGISTER"));
             }
         }
         
@@ -112,7 +111,7 @@
             list = request.getParameter("list");
             if (list == null)
             {
-                errors.add(new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_DIRECTORY"));
+                errors.add(new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_DIRECTORY"));
             }
         }
 
@@ -124,14 +123,14 @@
             // We check if the captcha is correct
             if (captchaKey == null || captchaValue == null || !CaptchaHelper.checkAndInvalidate(captchaKey, captchaValue)) 
             {
-                errors.add(new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_CAPTCHA"));
+                errors.add(new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_CAPTCHA"));
             }
         }
         
         // We check if the phone number is correct
         if (phoneNumber == null)
         {
-            errors.add(new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_PHONE"));
+            errors.add(new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_PHONE"));
         }
         else
         {
@@ -140,11 +139,11 @@
 
             if (!_checkPhoneNumber(phoneNumber))
             {   
-                errors.add(new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_PHONE"));
+                errors.add(new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_PHONE"));
             }
             else if (!PHONE_NUMBER_INTERNATIONAL_VALIDATOR.matcher(phoneNumber).matches())
             {
-                errors.add(new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_ERROR_PHONE2"));                
+                errors.add(new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_ERROR_PHONE2"));                
                 getLogger().error("The phone number entered by the user: " + request.getParameter("phone") + ", we tried to insert this number: " + phoneNumber + ". This is not match the internationnal format. Look the global configuration.");
             }
         }
@@ -168,12 +167,12 @@
         {
             if (register.equals("subscribe"))
             {
-                result.put("messageError", new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MESSAGE_ALREADY_RECORD"));
+                result.put("messageError", new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MESSAGE_ALREADY_RECORD"));
             }
             else
             {
                 _subscribeDAO.deleteNumber(phoneNumber, list);
-                result.put("messageDelete", new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MESSAGE_DELETE"));
+                result.put("messageDelete", new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MESSAGE_DELETE"));
             }
         }
         else
@@ -181,16 +180,16 @@
             if (register.equals("subscribe"))
             {
                 _subscribeDAO.insertNumber(phoneNumber, list);
-                result.put("messageRecord", new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MESSAGE_ADD"));
+                result.put("messageRecord", new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MESSAGE_ADD"));
             }
             else
             {
-                result.put("messageError", new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIBTION_SERVICE_FORM_MESSAGE_NOT_RECORD"));                    
+                result.put("messageError", new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIPTION_SERVICE_FORM_MESSAGE_NOT_RECORD"));                    
             }
         }
     }
 
-    // Transform the phoneNumber to the internationnal format defined by the admin
+    // Transform the phoneNumber to the international format defined by the admin
     private String _transformPhoneNumber(String phoneNumber)
     {
         String regexConvert = Config.getInstance().getValueAsString("org.ametys.plugins.sms.broker.convert");
@@ -213,7 +212,7 @@
                 regex = regex + "$";
             }
              
-            // We transform the phone number to an internationnal phone number
+            // We transform the phone number to an international phone number
             Matcher m = Pattern.compile(regex).matcher(phoneNumber);
             if (m.matches())
             {
@@ -230,7 +229,7 @@
         return newPhoneNumber;
     }
     
-    // Check if the phoneNumber is in the internationnal format defined by the admin
+    // Check if the phoneNumber is in the international format defined by the admin
     private boolean _checkPhoneNumber(String phoneNumber)
     {
         String regexPhone = Config.getInstance().getValueAsString("org.ametys.plugins.sms.broker.autorized");         
Index: main/plugin-sms/src/org/ametys/plugins/sms/service/SubscribersListEnumerator.java
===================================================================
--- main/plugin-sms/src/org/ametys/plugins/sms/service/SubscribersListEnumerator.java	(revision 29771)
+++ main/plugin-sms/src/org/ametys/plugins/sms/service/SubscribersListEnumerator.java	(working copy)
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2014 Anyware Services
+ *  Copyright 2015 Anyware Services
  *
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -26,13 +26,16 @@
 import org.apache.avalon.framework.service.ServiceException;
 import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.avalon.framework.service.Serviceable;
+import org.apache.cocoon.ProcessingException;
 import org.apache.cocoon.components.ContextHelper;
 import org.apache.cocoon.environment.Request;
 
+import org.ametys.plugins.repository.AmetysObjectResolver;
 import org.ametys.plugins.sms.dao.JCRSubscribersList;
 import org.ametys.plugins.sms.dao.SubscriberListsDAO;
 import org.ametys.runtime.util.I18nizableText;
 import org.ametys.runtime.util.parameter.Enumerator;
+import org.ametys.web.repository.page.Page;
 
 /**
  * Enumerate all the SubscribersList
@@ -40,12 +43,18 @@
 public class SubscribersListEnumerator implements Enumerator, Serviceable, Contextualizable
 {
     /** Subscriber list DAO */
-    protected SubscriberListsDAO _subscriberListDAO;
+    private SubscriberListsDAO _subscriberListDAO;
+    
+    /** The Ametys object resolver */
+    private AmetysObjectResolver _ametysObjectResolver;
+    
+    /** The Avalon context */
     private Context _context;
     
     public void service(ServiceManager manager) throws ServiceException
     {
         _subscriberListDAO = (SubscriberListsDAO) manager.lookup(SubscriberListsDAO.ROLE);
+        _ametysObjectResolver = (AmetysObjectResolver) manager.lookup(AmetysObjectResolver.ROLE);
     }
     
     public void contextualize(Context context) throws ContextException
@@ -61,18 +70,22 @@
     public Map<Object, I18nizableText> getEntries() throws Exception
     {
         Request request = ContextHelper.getRequest(_context); 
+       
         String siteName = (String) request.getAttribute("siteName");  
-        String lang = "fr"; //(String) request.getAttribute("lang"); FIXME
-
+        String pageId = request.getParameter("pageId");
+        
+        Page page = _ametysObjectResolver.resolveById(pageId);
+        String language = page.getSitemapName();
+        
         Map<Object, I18nizableText> entries = new HashMap<Object, I18nizableText>();
         
-        // we get all the subscribers list
+        // We get all the subscribers list for the request's site and language
         try
         {
-            I18nizableText label = new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIBTION_SERVICE_REGISTER_TYPE_USER_CHOICE");
+            I18nizableText label = new I18nizableText("plugin.sms", "PLUGINS_SMS_SUBSCRIPTION_SERVICE_REGISTER_TYPE_USER_CHOICE");
             entries.put("-", label);
             
-            for (JCRSubscribersList subList : _subscriberListDAO.getSubscribersLists(siteName, lang))
+            for (JCRSubscribersList subList : _subscriberListDAO.getSubscribersLists(siteName, language))
             {    
                 label = new I18nizableText(subList.getTitle());
                 entries.put(subList.getId(), label);
@@ -80,8 +93,7 @@
         }
         catch (RepositoryException e)
         {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
+            throw new ProcessingException("An error occurred while getting the subscribers' lists for site: '" + siteName + "' and language '" + language + "'.", e);
         }
         
         return entries;
Index: main/plugin-sms/src/org/ametys/plugins/sms/stop/UnsubscribeAction.java
===================================================================
--- main/plugin-sms/src/org/ametys/plugins/sms/stop/UnsubscribeAction.java	(revision 29771)
+++ main/plugin-sms/src/org/ametys/plugins/sms/stop/UnsubscribeAction.java	(working copy)
@@ -1,5 +1,5 @@
 /*
- *  Copyright 2014 Anyware Services
+ *  Copyright 2015 Anyware Services
  *
  *  Licensed under the Apache License, Version 2.0 (the "License");
  *  you may not use this file except in compliance with the License.
@@ -16,51 +16,51 @@
 package org.ametys.plugins.sms.stop;
 
 import java.util.Map;
+import java.util.regex.Pattern;
 
 import org.apache.avalon.framework.parameters.Parameters;
 import org.apache.avalon.framework.service.ServiceException;
 import org.apache.avalon.framework.service.ServiceManager;
 import org.apache.cocoon.acting.ServiceableAction;
-import org.apache.cocoon.environment.ObjectModelHelper;
 import org.apache.cocoon.environment.Redirector;
-import org.apache.cocoon.environment.Request;
 import org.apache.cocoon.environment.SourceResolver;
 
+import org.ametys.plugins.sms.broker.Broker;
 import org.ametys.plugins.sms.dao.SubscribeDAO;
-import org.ametys.plugins.sms.dao.SubscriberListsDAO;
-import org.ametys.plugins.sms.dao.JCRSubscribersList;
 
 /**
  * Unsubscribe the sender of the a STOP request
  */
 public class UnsubscribeAction extends ServiceableAction
 {
+    /** The pattern for international phone numbers */
+    private static final Pattern __PHONE_NUMBER_INTERNATIONAL_VALIDATOR = Pattern.compile("^\\+[0-9]{6,}$");
+    
     /** The subscribe DAO */
-    protected SubscribeDAO _subscribeDAO;
-
-    /** The subscriber List DAO */
-    protected SubscriberListsDAO _subscriberListDAO;
+    private SubscribeDAO _subscribeDAO;
 
+    /** The broker */
+    private Broker _broker;
     
     @Override
     public void service(ServiceManager serviceManager) throws ServiceException
     {
         super.service(serviceManager);
+        _broker = (Broker) serviceManager.lookup(Broker.ROLE);
         _subscribeDAO = (SubscribeDAO) serviceManager.lookup(SubscribeDAO.ROLE);
-        _subscriberListDAO = (SubscriberListsDAO) serviceManager.lookup(SubscriberListsDAO.ROLE);
     }
     
     public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String source, Parameters parameters) throws Exception
     {
-        Request request = ObjectModelHelper.getRequest(objectModel);
-        String siteName = (String) request.getAttribute("site");
-        String lang = (String) request.getAttribute("lang");
-        
-        String phoneNumber = request.getParameter("number"); // TODO broker
-        
-        for (JCRSubscribersList list : _subscriberListDAO.getSubscribersLists(siteName, lang))
+        String phoneNumber = _broker.getPhoneNumberFromStopRequest();
+        if (phoneNumber != null)
         {
-            _subscribeDAO.deleteNumber(phoneNumber, list.getId());
+            if (!__PHONE_NUMBER_INTERNATIONAL_VALIDATOR.matcher(phoneNumber).matches())
+            {   
+                throw new IllegalArgumentException("The phone number [" + phoneNumber + "] is invalid.");
+            }
+            
+            _subscribeDAO.deleteNumber(phoneNumber, null);
         }
         
         return EMPTY_MAP;
