diff --git a/addressImport/src/test/java/org/eclipse/openk/gridfailureinformation/importadresses/jobs/JobManagerTest.java b/addressImport/src/test/java/org/eclipse/openk/gridfailureinformation/importadresses/jobs/JobManagerTest.java
index 4f198e9..1b682a5 100644
--- a/addressImport/src/test/java/org/eclipse/openk/gridfailureinformation/importadresses/jobs/JobManagerTest.java
+++ b/addressImport/src/test/java/org/eclipse/openk/gridfailureinformation/importadresses/jobs/JobManagerTest.java
@@ -17,11 +17,16 @@
 import org.eclipse.openk.gridfailureinformation.importadresses.config.TestConfiguration;
 import org.eclipse.openk.gridfailureinformation.importadresses.service.AddressImportService;
 import org.junit.jupiter.api.Test;
+import org.mockito.internal.stubbing.answers.DoesNothing;
 import org.powermock.reflect.Whitebox;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
 import org.springframework.boot.test.mock.mockito.MockBean;
+import org.springframework.http.HttpStatus;
 import org.springframework.test.context.ContextConfiguration;
+
+import javax.xml.ws.http.HTTPException;
+
 import static java.lang.Boolean.TRUE;
 import static java.lang.Boolean.FALSE;
 import static org.junit.jupiter.api.Assertions.*;
@@ -41,7 +46,7 @@
     public void shouldTriggerStartImport() {
         jobManager.triggerStartImport();
         Boolean startImport = Whitebox.getInternalState(jobManager, "startImport");
-        assertEquals(startImport, TRUE);
+        assertEquals(TRUE, startImport);
     }
 
     @Test
@@ -55,7 +60,7 @@
         }
 
         Boolean startImport = Whitebox.getInternalState(jobManager, "startImport");
-        assertEquals(startImport, FALSE);
+        assertEquals(FALSE, startImport);
     }
 
     @Test
@@ -69,7 +74,7 @@
         }
 
         Boolean startImport = Whitebox.getInternalState(jobManager, "startImport");
-        assertEquals(startImport, FALSE);
+        assertEquals(FALSE, startImport);
     }
 
     @Test
@@ -82,4 +87,29 @@
         }
         verify(addressImportService, times(1)).importAddresses(false);
     }
+
+
+    @Test
+    public void shouldNotImportAddressdataDueToAnException() {
+        jobManager.cleanUp = false;
+
+        doThrow(new HTTPException(HttpStatus.PROCESSING.value())).when(addressImportService).importAddresses(anyBoolean());
+        try {
+            Whitebox.invokeMethod(jobManager, "importAddressdata");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        verify(addressImportService, times(1)).importAddresses(false);
+    }
+
+
+    @Test
+    public void shouldNotImportAddressdataDueToAnUnknownException() throws Exception {
+        jobManager.cleanUp = false;
+
+        doThrow(new HTTPException(HttpStatus.INTERNAL_SERVER_ERROR.value())).when(addressImportService).importAddresses(anyBoolean());
+
+        assertThrows(HTTPException.class, () -> Whitebox.invokeMethod(jobManager, "importAddressdata") );
+
+    }
 }
