diff --git a/duniter4j-es-subscription/src/main/java/org/duniter/elasticsearch/subscription/PluginSettings.java b/duniter4j-es-subscription/src/main/java/org/duniter/elasticsearch/subscription/PluginSettings.java
index 4d1473f82ff178d93af2ff3266c497404bd0b811..cff17baeb2507aabebb0ad7ab8f26eac43342f40 100644
--- a/duniter4j-es-subscription/src/main/java/org/duniter/elasticsearch/subscription/PluginSettings.java
+++ b/duniter4j-es-subscription/src/main/java/org/duniter/elasticsearch/subscription/PluginSettings.java
@@ -91,6 +91,15 @@ public class PluginSettings extends AbstractLifecycleComponent<PluginSettings> {
         return settings.getAsBoolean("duniter.subscription.email.atStartup", false);
     }
 
+    /**
+     * Should email subscription execute as DEBUG mode ?
+     * @return
+     */
+    public boolean isEmailSubscriptionsDebug() {
+        return settings.getAsBoolean("duniter.subscription.email.debug", false);
+    }
+
+
     /**
      * Day of the week to trigger weekly email subscription (default: 2 = monday)
      * @return
diff --git a/duniter4j-es-subscription/src/main/java/org/duniter/elasticsearch/subscription/service/SubscriptionService.java b/duniter4j-es-subscription/src/main/java/org/duniter/elasticsearch/subscription/service/SubscriptionService.java
index 8a955cbca1bd254ba38f1bd93c44da6b2d2eb463..86d613713d5a86641372e6e814fcbb41e5e5ba63 100644
--- a/duniter4j-es-subscription/src/main/java/org/duniter/elasticsearch/subscription/service/SubscriptionService.java
+++ b/duniter4j-es-subscription/src/main/java/org/duniter/elasticsearch/subscription/service/SubscriptionService.java
@@ -152,8 +152,8 @@ public class SubscriptionService extends AbstractService {
                 logger.warn(I18n.t("duniter4j.es.subscription.email.start", pluginSettings.getEmailSubscriptionsExecuteHour(), dayOfWeek));
             }
 
-            // Execution at startup
-            if (pluginSettings.isEmailSubscriptionsExecuteAtStartup()) {
+            // Execution at startup (or DEBUG mode)
+            if (pluginSettings.isEmailSubscriptionsExecuteAtStartup() || pluginSettings.isEmailSubscriptionsDebug()) {
                 threadPool.schedule(
                         () -> executeEmailSubscriptions(EmailSubscription.Frequency.daily),
                         new TimeValue(20, TimeUnit.SECONDS) /* after 20s */
@@ -213,7 +213,7 @@ public class SubscriptionService extends AbstractService {
             from += size;
         }
 
-        logger.info(String.format("Executing %s email subscription... [OK] (%s executions in %s ms)",
+        logger.info(String.format("Executing %s email subscription... [OK] emails sent [%s] (in %s ms)",
                 frequency.name(), executionCount, System.currentTimeMillis()-now));
 
     }
@@ -259,7 +259,24 @@ public class SubscriptionService extends AbstractService {
                                                          final Map<String, String> profileTitles) {
         Preconditions.checkNotNull(subscription);
 
-        logger.info(String.format("Processing email subscription [%s]", subscription.getId()));
+        boolean debug = pluginSettings.isEmailSubscriptionsDebug();
+        if (subscription.getContent() != null && subscription.getContent().getEmail() != null) {
+            if (debug) {
+                logger.info(String.format("Processing email subscription to [%s - %s] on account [%s]",
+                        senderName,
+                        subscription.getContent().getEmail(),
+                        ModelUtils.minifyPubkey(subscription.getIssuer())));
+            }
+            else {
+                logger.info(String.format("Processing email subscription [%s] on account [%s]",
+                        subscription.getId(),
+                        ModelUtils.minifyPubkey(subscription.getIssuer())));
+            }
+        }
+        else {
+            logger.warn(String.format("Processing email subscription [%s] - no email found in subscription content: skipping", subscription.getId()));
+            return null;
+        }
 
         SubscriptionExecution lastExecution = subscriptionExecutionDao.getLastExecution(subscription);
         Long lastExecutionTime;
@@ -319,12 +336,21 @@ public class SubscriptionService extends AbstractService {
                 pluginSettings.getCesiumUrl())
                 .render(issuerLocale);
 
-        // Schedule email sending
-        threadPool.schedule(() -> mailService.sendHtmlEmailWithText(
-                emailSubjectPrefix + I18n.t("duniter4j.es.subscription.email.subject", userEvents.size()),
-                text,
-                "<body>" + html + "</body>",
-                subscription.getContent().getEmail()));
+        final String object = emailSubjectPrefix + I18n.t("duniter4j.es.subscription.email.subject", userEvents.size());
+        if (pluginSettings.isEmailSubscriptionsDebug()) {
+            logger.info(String.format("---- Email to send (debug mode) ------\nTo:%s\nObject: %s\nText content:\n%s",
+                    subscription.getContent().getEmail(),
+                    object,
+                    text));
+        }
+        else {
+            // Schedule email sending
+            threadPool.schedule(() -> mailService.sendHtmlEmailWithText(
+                    object,
+                    text,
+                    "<body>" + html + "</body>",
+                    subscription.getContent().getEmail()));
+        }
 
         // Compute last time (should be the first one, as events are sorted in DESC order)
         Long lastEventTime = userEvents.get(0).getTime();
@@ -352,6 +378,9 @@ public class SubscriptionService extends AbstractService {
                 issuerProfilNames.get(subscription.getIssuer()) :
                 ModelUtils.minifyPubkey(subscription.getIssuer());
 
+        // Remove comma (to avoid to be used as many args in the i18n_args template)
+        issuerName = issuerName.replaceAll("[, ]+", " ");
+        senderName = StringUtils.isNotBlank(senderName) ? senderName.replaceAll("[, ]+", " ") : senderName;
 
         try {
             // Compute body
@@ -393,11 +422,10 @@ public class SubscriptionService extends AbstractService {
         execution.setSignature(cryptoService.sign(json, pluginSettings.getNodeKeypair().getSecKey()));
 
         if (execution.getId() == null) {
-
-            //subscriptionExecutionDao.create(json, false/*not wait*/);
+            subscriptionExecutionDao.create(toJson(execution), false/*not wait*/);
         }
         else {
-            //subscriptionExecutionDao.update(execution.getId(), json, false/*not wait*/);
+            subscriptionExecutionDao.update(execution.getId(), toJson(execution), false/*not wait*/);
         }
         return execution;
     }
diff --git a/duniter4j-es-subscription/src/main/resources/templates/text_event_item.st b/duniter4j-es-subscription/src/main/resources/templates/text_event_item.st
index 701a00ec5f4c16cd5e632b5674879ce598ee2f6a..df9c16e49beda7258a3423b83ccc2a483d3a6771 100644
--- a/duniter4j-es-subscription/src/main/resources/templates/text_event_item.st
+++ b/duniter4j-es-subscription/src/main/resources/templates/text_event_item.st
@@ -1,3 +1,4 @@
 text_event_item(e) ::= <<
    - [$e.time; format="short"$] $e.description$
+
 >>
\ No newline at end of file
diff --git a/duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/service/SynchroService.java b/duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/service/SynchroService.java
index 0fc9540733629281c6c8a252714a691ab71d1bfe..38cdb593fc2347b7938e347d327de553c1f49700 100644
--- a/duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/service/SynchroService.java
+++ b/duniter4j-es-user/src/main/java/org/duniter/elasticsearch/user/service/SynchroService.java
@@ -73,7 +73,7 @@ public class SynchroService extends AbstractSynchroService {
         importInvitationChanges(result, peer, sinceTime);
 
         long duration = System.currentTimeMillis() - time;
-        logger.info(String.format("[%s] Synchronizing user data since %s [OK] %s (ins %s ms)", peer.toString(), sinceTime, result.toString(), duration));
+        logger.info(String.format("[%s] Synchronizing user data since %s [OK] %s (in %s ms)", peer.toString(), sinceTime, result.toString(), duration));
     }
 
     protected void importHistoryChanges(SynchroResult result, Peer peer, long sinceTime) {