htmlMail-Template adjusted
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/config/ResourceConfig.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/config/ResourceConfig.java
index ac058ee..56052b3 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/config/ResourceConfig.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/config/ResourceConfig.java
@@ -16,21 +16,42 @@
 
 import lombok.extern.log4j.Log4j2;
 import org.eclipse.openk.gridfailureinformation.service.DistributionTextPlaceholderService;
+import org.eclipse.openk.gridfailureinformation.util.ResourceLoaderBase;
 import org.eclipse.openk.gridfailureinformation.viewmodel.DistributionTextPlaceholderDto;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
+import javax.annotation.PostConstruct;
+
 @Log4j2
 @Configuration
 public class ResourceConfig {
 
+    private static final String EMAIL_BTN_TEMPLATE_PATH = "email/emailTemplateBtn.html";
+
+    @Value("${spring.settings.isUseHtmlEmailBtnTemplate:true}")
+    private boolean isUseHtmlEmailBtnTemplate;
+
     @Autowired
     DistributionTextPlaceholderService placeholderService;
 
+    private String htmlEmailBtnTemplate;
+
     @Bean
     public DistributionTextPlaceholderDto placeholderLoader() {
         return placeholderService.getPlaceholder();
     }
 
+    @PostConstruct
+    private void init(){
+        if (isUseHtmlEmailBtnTemplate) {
+            htmlEmailBtnTemplate = new ResourceLoaderBase().loadStringFromResource(EMAIL_BTN_TEMPLATE_PATH);
+        }
+    }
+
+    public String getHtmlEmailBtnTemplate() {
+        return htmlEmailBtnTemplate;
+    }
 }
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ExportService.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ExportService.java
index 28c3afd..22b5abf 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ExportService.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ExportService.java
@@ -42,6 +42,7 @@
 import org.eclipse.openk.gridfailureinformation.repository.StatusRepository;
 import org.eclipse.openk.gridfailureinformation.util.ExternalStatusCalculator;
 import org.eclipse.openk.gridfailureinformation.util.GroupMemberPlzFilter;
+import org.eclipse.openk.gridfailureinformation.util.ResourceLoaderBase;
 import org.eclipse.openk.gridfailureinformation.viewmodel.DistributionGroupMemberDto;
 import org.eclipse.openk.gridfailureinformation.viewmodel.DistributionTextPlaceholderDto;
 import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationDto;
@@ -57,6 +58,8 @@
 
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
@@ -138,6 +141,9 @@
     @Value("${distribution-group-publisher.name}")
     private String publisherDistributionGroup;
 
+    @Value("${spring.settings.isUseHtmlEmailBtnTemplate:true}")
+    private boolean isUseHtmlEmailBtnTemplate;
+
     public boolean exportFailureInformation(UUID uuid, String[] targetChannels, GfiProcessState processState){
         log.info("Start exporting failureInformation with uuid: " + uuid);
         countExportedMessages = 0;
@@ -526,11 +532,20 @@
             contentReplaceMap.put(placeholderDto.getRadius(), radius.getRadius().toString());
         }
 
-        String directFailureLink = authNAuthService.getDirectMeasureLink(tblFailureInfo.getUuid().toString());
-        contentReplaceMap.put(placeholderDto.getDirectFailureLink(), directFailureLink);
+        createDirectFailureLink(tblFailureInfo, placeholderDto);
 
     }
 
+    private void createDirectFailureLink(TblFailureInformation tblFailureInfo,
+                                         DistributionTextPlaceholderDto placeholderDto) {
+        String directFailureLink = authNAuthService.getDirectMeasureLink(tblFailureInfo.getUuid().toString());
+        if (isUseHtmlEmailBtnTemplate) {
+            String htmlEmailBtnTemplate = resourceConfig.getHtmlEmailBtnTemplate();
+            directFailureLink = htmlEmailBtnTemplate.replace(placeholderDto.getDirectFailureLink(), directFailureLink);
+        }
+        contentReplaceMap.put(placeholderDto.getDirectFailureLink(), directFailureLink);
+    }
+
     private String getStatusExtern(TblFailureInformation tblFailureInfo) {
         FailureInformationDto failureInformationDto = failureInformationMapper.toFailureInformationDto(tblFailureInfo);
         return ExternalStatusCalculator.addExternalStatus(statusRepository, failureInformationDto);
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/util/ResourceLoaderBase.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/util/ResourceLoaderBase.java
index 5f06ea0..64a47e9 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/util/ResourceLoaderBase.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/util/ResourceLoaderBase.java
@@ -36,10 +36,10 @@
 
     private String stream2String(InputStream is, String filename) {
         StringWriter writer = new StringWriter();
-        BOMInputStream bomInputStream = new BOMInputStream(is, false, ByteOrderMark.UTF_8, ByteOrderMark.UTF_16BE, ByteOrderMark.UTF_16LE,
-            ByteOrderMark.UTF_32BE, ByteOrderMark.UTF_32LE);
 
-        try {
+        try (BOMInputStream bomInputStream = new BOMInputStream(is, false,
+                ByteOrderMark.UTF_8, ByteOrderMark.UTF_16BE, ByteOrderMark.UTF_16LE,
+                ByteOrderMark.UTF_32BE, ByteOrderMark.UTF_32LE)) {
             IOUtils.copy(bomInputStream, writer, StandardCharsets.UTF_8.name());
         } catch (IOException e) {
             log.error("Fehler in stream2String()", e);
diff --git a/gfsBackendService/src/main/resources/application.yml b/gfsBackendService/src/main/resources/application.yml
index 903142a..f6114ed 100644
--- a/gfsBackendService/src/main/resources/application.yml
+++ b/gfsBackendService/src/main/resources/application.yml
@@ -54,45 +54,30 @@
     overviewMapInitialLongitude: 8.423207
     daysInPastToShowClosedInfos: 365
     dataExternInitialVisibility: hide
-    
+
+    isUseHtmlEmailBtnTemplate: true
     # Mail settings (Default templates)
     emailSubjectPublishInit: "Die Störung (Sparte: $Sparte$) mit Beginn: $Störungsbeginn_gemeldet$ wurde in den Status veröffentlicht geändert."
-    emailContentPublishInit: "Veröffentlicht [TEST]\n
-
-    Sehr geehrte Damen und Herren,\n
-    
-    die im Betreff genannte Meldung ist über folgenden Link erreichbar:\n
-    
-    $Direkter_Link_zur_Störung$\n
-    
-    Mit freundlichen Grüßen
-
-    Ihre Admin-Meister-Team der PTA GmbH"
+    emailContentPublishInit: "<p><b>Veröffentlicht [TEST]</b></p>
+                              <p>Sehr geehrte Damen und Herren,</p>
+                              <p>die im Betreff genannte Meldung ist über folgenden Link erreichbar:</p>
+                              $Direkter_Link_zur_Störung$
+                              <p>Mit freundlichen Grüßen</p>
+                              <p>Ihr Admin-Meister-Team der PTA GmbH</p>"
     emailSubjectUpdateInit: "Die Störung (Sparte: $Sparte$) mit Beginn: $Störungsbeginn_gemeldet$ wurde in den Status aktualisiert geändert."
-    emailContentUpdateInit: "Aktualisiert [TEST]\n
-
-    Sehr geehrte Damen und Herren,\n
-
-    die im Betreff genannte Meldung ist über folgenden Link erreichbar:\n
-
-    $Direkter_Link_zur_Störung$\n
-
-    Mit freundlichen Grüßen
-    
-    Ihr Admin-Meister-Team der PTA GmbH"
-
+    emailContentUpdateInit: "<p><b>Aktualisiert [TEST]</b></p>
+                             <p>Sehr geehrte Damen und Herren,</p>
+                             <p>die im Betreff genannte Meldung ist über folgenden Link erreichbar:</p>
+                             $Direkter_Link_zur_Störung$
+                             <p>Mit freundlichen Grüßen</p>
+                             <p>Ihr Admin-Meister-Team der PTA GmbH</p>"
     emailSubjectCompleteInit: "Die Störung (Sparte: $Sparte$) mit Beginn: $Störungsbeginn_gemeldet$ wurde in den Status beendet geändert."
-    emailContentCompleteInit: "Beendet [TEST]\n
-
-    Sehr geehrte Damen und Herren,\n
-
-    die im Betreff genannte Meldung ist über folgenden Link erreichbar:\n
-
-    $Direkter_Link_zur_Störung$\n
-
-    Mit freundlichen Grüßen
-    
-    Ihr Admin-Meister-Team der PTA GmbH"
+    emailContentCompleteInit: "<p><b>Beendet [TEST]</b></p>
+                              <p>Sehr geehrte Damen und Herren,</p>
+                              <p>die im Betreff genannte Meldung ist über folgenden Link erreichbar:</p>
+                              $Direkter_Link_zur_Störung$
+                              <p>Mit freundlichen Grüßen</p>
+                              <p>Ihr Admin-Meister-Team der PTA GmbH</p>"
 
     visibilityConfiguration:
       fieldVisibility:
diff --git a/gfsBackendService/src/main/resources/application_localdev.yml b/gfsBackendService/src/main/resources/application_localdev.yml
index ecc1e0b..dfac132 100644
--- a/gfsBackendService/src/main/resources/application_localdev.yml
+++ b/gfsBackendService/src/main/resources/application_localdev.yml
@@ -13,8 +13,8 @@
 backend-version: 1.0.0
 spring:
   datasource:
-    url: jdbc:postgresql://entopticadirx:5432/GridFailureInfoDevelop
-    #url: jdbc:postgresql://entopticadirx:5432/GridFailureInfoDevServer
+    #url: jdbc:postgresql://entopticadirx:5432/GridFailureInfoDevelop
+    url: jdbc:postgresql://entopticadirx:5432/GridFailureInfoDevServer
     username: ${GFI_DB_USERNAME}
     password: ${GFI_DB_PASSWORD}
     max-active: 5
@@ -50,44 +50,30 @@
     overviewMapInitialLongitude: 8.423207
     daysInPastToShowClosedInfos: 365
     dataExternInitialVisibility: hide
+
+    isUseHtmlEmailBtnTemplate: true
     # Initial emailsubject and content
     emailSubjectPublishInit: "Die Störung (Sparte: $Sparte$) mit Beginn: $Störungsbeginn_gemeldet$ wurde in den Status veröffentlicht geändert."
-    emailContentPublishInit: "Veröffentlicht [TEST]\n
-
-    Sehr geehrte Damen und Herren,\n
-
-    die im Betreff genannte Meldung ist über folgenden Link erreichbar:\n
-
-    $Direkter_Link_zur_Störung$\n
-
-    Mit freundlichen Grüßen
-
-    Ihre Admin-Meister-Team der PTA GmbH"
+    emailContentPublishInit: "<b>Veröffentlicht [TEST]</b><br>
+                              <p> Sehr geehrte Damen und Herren,</p>
+                              <p>die im Betreff genannte Meldung ist über folgenden Link erreichbar:</p>
+                              $Direkter_Link_zur_Störung$
+                              <p>Mit freundlichen Grüßen</p>
+                              <p>Ihr Admin-Meister-Team der PTA GmbH</p>"
     emailSubjectUpdateInit: "Die Störung (Sparte: $Sparte$) mit Beginn: $Störungsbeginn_gemeldet$ wurde in den Status aktualisiert geändert."
-    emailContentUpdateInit: "Aktualisiert [TEST]\n
-
-    Sehr geehrte Damen und Herren,\n
-
-    die im Betreff genannte Meldung ist über folgenden Link erreichbar:\n
-
-    $Direkter_Link_zur_Störung$\n
-
-    Mit freundlichen Grüßen
-
-    Ihr Admin-Meister-Team der PTA GmbH"
-
+    emailContentUpdateInit: "<b>Aktualisiert [TEST]</b><br>
+                             <p> Sehr geehrte Damen und Herren,</p>
+                             <p>die im Betreff genannte Meldung ist über folgenden Link erreichbar:</p>
+                             $Direkter_Link_zur_Störung$
+                             <p>Mit freundlichen Grüßen</p>
+                             <p>Ihr Admin-Meister-Team der PTA GmbH</p>"
     emailSubjectCompleteInit: "Die Störung (Sparte: $Sparte$) mit Beginn: $Störungsbeginn_gemeldet$ wurde in den Status beendet geändert."
-    emailContentCompleteInit: "Beendet [TEST]\n
-
-    Sehr geehrte Damen und Herren,\n
-
-    die im Betreff genannte Meldung ist über folgenden Link erreichbar:\n
-
-    $Direkter_Link_zur_Störung$\n
-
-    Mit freundlichen Grüßen
-
-    Ihr Admin-Meister-Team der PTA GmbH"
+    emailContentCompleteInit: "<b>Beendet [TEST]</b><br>
+                              <p> Sehr geehrte Damen und Herren,</p>
+                              <p>die im Betreff genannte Meldung ist über folgenden Link erreichbar:</p>
+                              $Direkter_Link_zur_Störung$
+                              <p>Mit freundlichen Grüßen</p>
+                              <p>Ihr Admin-Meister-Team der PTA GmbH</p>"
 
     visibilityConfiguration:
       fieldVisibility:
diff --git a/gfsBackendService/src/main/resources/db/migration/V0_62__CREATE_GFI_DB_Complete_V_1.0.0.sql b/gfsBackendService/src/main/resources/db/migration/V0_62__CREATE_GFI_DB_Complete_V_1.0.0.sql
index 5a6f0a6..228b92c 100644
--- a/gfsBackendService/src/main/resources/db/migration/V0_62__CREATE_GFI_DB_Complete_V_1.0.0.sql
+++ b/gfsBackendService/src/main/resources/db/migration/V0_62__CREATE_GFI_DB_Complete_V_1.0.0.sql
@@ -372,6 +372,14 @@
   OWNER TO GFI_SERVICE;
 GRANT ALL ON TABLE public.TBL_DISTRIBUTION_GROUP TO GFI_SERVICE;
 
+INSERT INTO public.tbl_distribution_group(UUID, NAME, EMAIL_SUBJECT_PUBLISH, DISTRIBUTION_TEXT_PUBLISH)
+VALUES('f71660e2-aee1-11ea-b3de-0242ac130004', 'Veröffentlicher', 'Bitte Anpassen - Das geplannte Ende der Störung (Sparte: $Sparte$) wird demnächst erreicht. Der Statuswechsel erfolgt automatisch.',
+'<b>Veröffentlichen</b><br>
+<p>Sehr geehrte Damen und Herren,</p>
+<p>die im Betreff genannte Meldung ist über folgenden Link erreichbar:</p>
+$Direkter_Link_zur_Störung$
+<p>Mit freundlichen Grüßen</p>
+<p>Ihr Admin-Meister-Team der PTA GmbH</p>');
 
 -- ---------------------------------------------
 -- TABLE TBL_DISTRIBUTION_GROUP_MEMBER
@@ -402,19 +410,6 @@
   OWNER TO GFI_SERVICE;
 GRANT ALL ON TABLE public.TBL_DISTRIBUTION_GROUP_MEMBER TO GFI_SERVICE;
 
-INSERT INTO public.tbl_distribution_group(UUID, NAME, EMAIL_SUBJECT_PUBLISH, DISTRIBUTION_TEXT_PUBLISH)
-VALUES('f71660e2-aee1-11ea-b3de-0242ac130004', 'Veröffentlicher', 'Subject: Bitte Anpassen - Das geplannte Ende der Störung (Sparte: $Sparte$) wird demnächst erreicht. Der Statuswechsel erfolgt automatisch.',
-'Body:
-Veröffentlicher
-
-Sehr geehrte Damen und Herren,
-
-die im Betreff genannte Meldung ist über folgenden Link erreichbar:
-
-$Direkter_Link_zur_Störung$
-
-Mit freundlichen Grüßen');
-
 -- ---------------------------------------------
 -- TABLE TBL_FAILURE_INFORMATION_DISTRIBUTION_GROUP
 -- ---------------------------------------------
diff --git a/gfsBackendService/src/main/resources/email/emailTemplateBtn.html b/gfsBackendService/src/main/resources/email/emailTemplateBtn.html
new file mode 100644
index 0000000..291c905
--- /dev/null
+++ b/gfsBackendService/src/main/resources/email/emailTemplateBtn.html
@@ -0,0 +1,17 @@
+<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%; box-sizing: border-box;">
+  <tbody>
+    <tr>
+      <td align="center" style="font-family: sans-serif; font-size: 14px; vertical-align: top; padding: 15px 0;">
+        <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: auto;">
+          <tbody>
+            <tr>
+              <td class="btn btn-primary" style="font-family: sans-serif; font-size: 14px; vertical-align: top; background-color: #337ab7; border-radius: 5px; text-align: center; padding: 0;">
+                <a href="$Direkter_Link_zur_Störung$" target="_blank" style="display: inline-block; color: #ffffff; background-color: #337ab7; border: solid 1px #2e6da4; border-radius: 5px; box-sizing: border-box; cursor: pointer; text-decoration: none; font-size: 14px; font-weight: bold; margin: 0; padding: 12px 25px; text-transform: capitalize; border-color: #2e6da4;">zur Störungsmeldung</a>
+              </td>
+            </tr>
+          </tbody>
+        </table>
+      </td>
+    </tr>
+  </tbody>
+</table>
diff --git a/mailExport/src/main/java/org/eclipse/openk/gridfailureinformation/mailexport/util/ResourceLoaderBase.java b/mailExport/src/main/java/org/eclipse/openk/gridfailureinformation/mailexport/util/ResourceLoaderBase.java
index e341217..9ae045a 100644
--- a/mailExport/src/main/java/org/eclipse/openk/gridfailureinformation/mailexport/util/ResourceLoaderBase.java
+++ b/mailExport/src/main/java/org/eclipse/openk/gridfailureinformation/mailexport/util/ResourceLoaderBase.java
@@ -36,10 +36,10 @@
 
     private String stream2String(InputStream is, String filename) {
         StringWriter writer = new StringWriter();
-        BOMInputStream bomInputStream = new BOMInputStream(is, false, ByteOrderMark.UTF_8, ByteOrderMark.UTF_16BE, ByteOrderMark.UTF_16LE,
-            ByteOrderMark.UTF_32BE, ByteOrderMark.UTF_32LE);
 
-        try {
+        try (BOMInputStream bomInputStream = new BOMInputStream(is, false,
+                ByteOrderMark.UTF_8, ByteOrderMark.UTF_16BE, ByteOrderMark.UTF_16LE,
+                ByteOrderMark.UTF_32BE, ByteOrderMark.UTF_32LE)) {
             IOUtils.copy(bomInputStream, writer, StandardCharsets.UTF_8.name());
         } catch (IOException e) {
             log.error("Fehler in stream2String()", e);