diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/FailureInformationMapper.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/FailureInformationMapper.java
index 47543f1..7bdd411 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/FailureInformationMapper.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/FailureInformationMapper.java
@@ -14,7 +14,7 @@
  */
 package org.eclipse.openk.gridfailureinformation.mapper;
 
-import org.eclipse.openk.gridfailureinformation.constants.Constants;
+import org.eclipse.openk.gridfailureinformation.mapper.tools.AddressSplitterMerger;
 import org.eclipse.openk.gridfailureinformation.model.TblFailureInformation;
 import org.eclipse.openk.gridfailureinformation.model.TblStation;
 import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationDto;
@@ -28,7 +28,6 @@
 
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Optional;
 import java.util.stream.Collectors;
 
 @Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
@@ -78,33 +77,13 @@
 
     @AfterMapping
     default void splitFreetextAddress(TblFailureInformation source, @MappingTarget FailureInformationDto failureInformationDto){
-        if( Constants.FREETEXT_ADDRESS_TYPE.equalsIgnoreCase(source.getAddressType())) {
-            failureInformationDto.setFreetextCity(source.getCity());
-            failureInformationDto.setFreetextDistrict(source.getDistrict());
-            failureInformationDto.setFreetextPostcode(source.getPostcode());
-            failureInformationDto.setCity(null);
-            failureInformationDto.setDistrict(null);
-            failureInformationDto.setPostcode(null);
-            failureInformationDto.setStreet(null);
-            failureInformationDto.setHousenumber(null);
-        }
+        AddressSplitterMerger.splitFreetextAddress(source.getAddressType(), source.getCity(), source.getDistrict(),
+                source.getPostcode(), failureInformationDto);
     }
 
     @AfterMapping
     default void splitFreetextAddress(FailureInformationDto source, @MappingTarget TblFailureInformation destTbl){
-        StringBuilder sb = new StringBuilder();
-        sb.append(Optional.ofNullable(source.getFreetextCity()).orElse(""));
-        sb.append(Optional.ofNullable(source.getFreetextDistrict()).orElse(""));
-        sb.append(Optional.ofNullable(source.getFreetextPostcode()).orElse(""));
-        if( !sb.toString().trim().isEmpty()) { // freetextAddress is present
-            destTbl.setAddressType(Constants.FREETEXT_ADDRESS_TYPE);
-            destTbl.setCity(source.getFreetextCity());
-            destTbl.setDistrict(source.getFreetextDistrict());
-            destTbl.setPostcode(source.getFreetextPostcode());
-        }
-        else {
-            destTbl.setAddressType(null);
-        }
+        AddressSplitterMerger.mergeFreetextAddress(source, destTbl);
     }
 
 }
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/HistFailureInformationMapper.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/HistFailureInformationMapper.java
index 38d9b41..243e176 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/HistFailureInformationMapper.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/HistFailureInformationMapper.java
@@ -14,10 +14,13 @@
  */
 package org.eclipse.openk.gridfailureinformation.mapper;
 
+import org.eclipse.openk.gridfailureinformation.mapper.tools.AddressSplitterMerger;
 import org.eclipse.openk.gridfailureinformation.model.HtblFailureInformation;
 import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationDto;
+import org.mapstruct.AfterMapping;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
+import org.mapstruct.MappingTarget;
 import org.mapstruct.Mappings;
 import org.mapstruct.ReportingPolicy;
 
@@ -28,7 +31,6 @@
             @Mapping(source = "refFailureClassification.classification", target = "failureClassification"),
             @Mapping(source = "refStatusIntern.uuid", target = "statusInternId"),
             @Mapping(source = "refStatusIntern.status", target = "statusIntern"),
-            //@Mapping(source = "refStatusExtern.status", target = "statusExtern"),
             @Mapping(source = "refBranch.uuid", target = "branchId"),
             @Mapping(source = "refBranch.name", target = "branch"),
             @Mapping(source = "refBranch.colorCode", target = "branchColorCode"),
@@ -44,7 +46,6 @@
             @Mapping(target = "refFailureClassification.classification", source = "failureClassification"),
             @Mapping(target = "refStatusIntern.uuid", source = "statusInternId"),
             @Mapping(target = "refStatusIntern.status", source = "statusIntern"),
-            //@Mapping(target = "refStatusExtern.status", source = "statusExtern"),
             @Mapping(target = "refBranch.uuid", source = "branchId"),
             @Mapping(target = "refBranch.name", source = "branch"),
             @Mapping(target = "refBranch.colorCode", source = "branchColorCode"),
@@ -56,4 +57,14 @@
     HtblFailureInformation toHtblFailureInformation(FailureInformationDto failureInformationDto);
 
 
+    @AfterMapping
+    default void splitFreetextAddress(HtblFailureInformation source, @MappingTarget FailureInformationDto failureInformationDto){
+        AddressSplitterMerger.splitFreetextAddress(source.getAddressType(), source.getCity(),
+                source.getDistrict(), source.getPostcode(), failureInformationDto);
+    }
+
+    @AfterMapping
+    default void splitFreetextAddress(FailureInformationDto source, @MappingTarget HtblFailureInformation destTbl){
+        AddressSplitterMerger.mergeFreetextAddress(source, destTbl);
+    }
 }
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/tools/AddressSplitterMerger.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/tools/AddressSplitterMerger.java
new file mode 100644
index 0000000..ca367d8
--- /dev/null
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/mapper/tools/AddressSplitterMerger.java
@@ -0,0 +1,60 @@
+package org.eclipse.openk.gridfailureinformation.mapper.tools;
+
+import org.eclipse.openk.gridfailureinformation.constants.Constants;
+import org.eclipse.openk.gridfailureinformation.model.HtblFailureInformation;
+import org.eclipse.openk.gridfailureinformation.model.TblFailureInformation;
+import org.eclipse.openk.gridfailureinformation.viewmodel.FailureInformationDto;
+
+import java.util.Optional;
+
+public class AddressSplitterMerger {
+    private AddressSplitterMerger() {}
+
+    public static void splitFreetextAddress(String srcAddressType, String srcCity, String srcDistrict, String srcPostcode,
+                                            FailureInformationDto failureInformationDto){
+        if( Constants.FREETEXT_ADDRESS_TYPE.equalsIgnoreCase(srcAddressType)) {
+            failureInformationDto.setFreetextCity(srcCity);
+            failureInformationDto.setFreetextDistrict(srcDistrict);
+            failureInformationDto.setFreetextPostcode(srcPostcode);
+            failureInformationDto.setCity(null);
+            failureInformationDto.setDistrict(null);
+            failureInformationDto.setPostcode(null);
+            failureInformationDto.setStreet(null);
+            failureInformationDto.setHousenumber(null);
+        }
+    }
+
+    public static void mergeFreetextAddress(FailureInformationDto source, TblFailureInformation destTbl){
+
+        if( isFreetextPresent(source) ) { // freetextAddress is present
+            destTbl.setAddressType(Constants.FREETEXT_ADDRESS_TYPE);
+            destTbl.setCity(source.getFreetextCity());
+            destTbl.setDistrict(source.getFreetextDistrict());
+            destTbl.setPostcode(source.getFreetextPostcode());
+        }
+        else {
+            destTbl.setAddressType(null);
+        }
+    }
+
+    public static void mergeFreetextAddress(FailureInformationDto source, HtblFailureInformation destTbl){
+
+        if( isFreetextPresent(source) ) { // freetextAddress is present
+            destTbl.setAddressType(Constants.FREETEXT_ADDRESS_TYPE);
+            destTbl.setCity(source.getFreetextCity());
+            destTbl.setDistrict(source.getFreetextDistrict());
+            destTbl.setPostcode(source.getFreetextPostcode());
+        }
+        else {
+            destTbl.setAddressType(null);
+        }
+    }
+
+    private static boolean isFreetextPresent(FailureInformationDto source) {
+        StringBuilder sb = new StringBuilder();
+        sb.append(Optional.ofNullable(source.getFreetextCity()).orElse(""));
+        sb.append(Optional.ofNullable(source.getFreetextDistrict()).orElse(""));
+        sb.append(Optional.ofNullable(source.getFreetextPostcode()).orElse(""));
+        return !sb.toString().trim().isEmpty();
+    }
+}
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/HtblFailureInformation.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/HtblFailureInformation.java
index dbbc3fd..9bc57c7 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/HtblFailureInformation.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/model/HtblFailureInformation.java
@@ -21,7 +21,15 @@
 import org.springframework.data.annotation.LastModifiedDate;
 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
 
-import javax.persistence.*;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.EntityListeners;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.SequenceGenerator;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.UUID;
@@ -64,6 +72,7 @@
     private String publicationStatus;
     private String publicationFreetext;
     private Boolean condensed;
+    private String addressType;
 
     @CreatedDate
     @Column(name = "create_date")
