Merge branch 'DEVELOP'
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/constants/Constants.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/constants/Constants.java
index 0162baa..f937246 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/constants/Constants.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/constants/Constants.java
@@ -47,6 +47,10 @@
 
     public static final String FREETEXT_ADDRESS_TYPE="freetext";
 
+    public static final String LOCATION_TYPE_ADDRESS="address";
+    public static final String LOCATION_TYPE_MAP="map";
+    public static final String LOCATION_TYPE_STATION="station";
+
     private Constants() {
         // empty Constructor for the sake of SONAR
     }
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ImportService.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ImportService.java
index 534688b..51e798b 100644
--- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ImportService.java
+++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ImportService.java
@@ -17,6 +17,7 @@
 import lombok.extern.log4j.Log4j2;
 import org.apache.commons.lang.StringUtils;
 import org.eclipse.openk.gridfailureinformation.bpmn.impl.GfiProcessState;
+import org.eclipse.openk.gridfailureinformation.bpmn.impl.tasks.ProcessHelper;
 import org.eclipse.openk.gridfailureinformation.constants.Constants;
 import org.eclipse.openk.gridfailureinformation.exceptions.InternalServerErrorException;
 import org.eclipse.openk.gridfailureinformation.mapper.FailureInformationMapper;
@@ -68,6 +69,9 @@
     @Autowired
     ImportDataValidator importDataValidator;
 
+    @Autowired
+    ProcessHelper processHelper;
+
     public boolean validateAndImport(ImportDataDto importDataDto) {
         ForeignFailureDataDto foreignFailureDataDto = importDataValidator.readSafeForeignFailureInfo(importDataDto);
 
@@ -104,6 +108,12 @@
 
             FailureInformationDto retVal = failureInformationService.insertFailureInfo(failureInformationDto, gfiProcessState);
             log.info("External failure information [MetaId: " + importDataDto.getMetaId() + "] from " + importDataDto.getSource() + " imported (inserted).");
+
+            if (foreignFailureDataDto.isAutopublish()) {
+                failureInformationService.insertPublicationChannelForFailureInfo(retVal.getUuid(), Constants.PUBLICATION_CHANNEL_OWNDMZ);
+                log.info("External failure information [MetaId: " + importDataDto.getMetaId() + "] from "
+                        + importDataDto.getSource() + "is prepared for autopublish to channel: " + Constants.PUBLICATION_CHANNEL_OWNDMZ);
+            }
             return retVal;
         } else {
 
@@ -128,6 +138,7 @@
                 );
             } else {
                 if (foreignFailureDataDto.isAutopublish()) {
+                    processHelper.resetPublishedStateForChannels(updatedDto);
                     log.info("Autopublish for external failure information [" + importDataDto.getMetaId() + "] from " + importDataDto.getSource() + " is true, current status remains unchanged.");
                 }
             }
@@ -171,6 +182,7 @@
         failureInformationDto.setHousenumber(foreignFailureDataDto.getHousenumber());
 
         setCoordinates(foreignFailureDataDto, failureInformationDto);
+        setLoationType(failureInformationDto);
 
         failureInformationDto.setStationIds(new LinkedList<>());
         if( foreignStationId != null && !foreignStationId.isEmpty()) {
@@ -191,6 +203,17 @@
         failureInformationDto.setObjectReferenceExternalSystem(importDataDto.getAssembledRefId());
     }
 
+    private void setLoationType(FailureInformationDto failureInformationDto) {
+        failureInformationDto.setFaultLocationArea(Constants.LOCATION_TYPE_ADDRESS);
+        if (failureInformationDto.getLatitude() != null && failureInformationDto.getLongitude() != null
+        && StringUtils.isBlank(failureInformationDto.getStreet())) {
+            failureInformationDto.setFaultLocationArea(Constants.LOCATION_TYPE_MAP);
+            failureInformationDto.setFreetextCity(failureInformationDto.getCity());
+            failureInformationDto.setFreetextDistrict(failureInformationDto.getDistrict());
+            failureInformationDto.setFreetextPostcode(failureInformationDto.getPostcode());
+        }
+    }
+
     private void setCoordinates(ForeignFailureDataDto foreignFailureDataDto, FailureInformationDto failureInformationDto) {
         BigDecimal latitude = foreignFailureDataDto.getLatitude();
         BigDecimal longitude = foreignFailureDataDto.getLongitude();