diff --git a/src/services/__tests__/import-experiment-service.test.js b/src/services/__tests__/import-experiment-service.test.js
new file mode 100644
index 0000000000000000000000000000000000000000..4adb8571286d8b585bfcd1e918a6e0b53879dffd
--- /dev/null
+++ b/src/services/__tests__/import-experiment-service.test.js
@@ -0,0 +1,54 @@
+/**
+ * @jest-environment jsdom
+*/
+import '@testing-library/jest-dom';
+import 'jest-fetch-mock';
+
+import ErrorHandlerService from '../error-handler-service';
+
+test('makes sure that invoking the constructor fails with the right message', () => {
+  expect(() => {
+    new ErrorHandlerService();
+  }).toThrow(Error);
+  expect(() => {
+    new ErrorHandlerService();
+  }).toThrowError(Error('Use ErrorHandlerService.instance'));
+});
+
+test('the experiments service instance always refers to the same object', () => {
+  const instance1 = ErrorHandlerService.instance;
+  const instance2 = ErrorHandlerService.instance;
+  expect(instance1).toBe(instance2);
+});
+
+test('should emit an event on network error', () => {
+  jest.spyOn(ErrorHandlerService.instance, 'networkError').mockImplementation(() => {
+    return Promise.resolve();
+  });
+  let NetworkError = MockNetworkError;
+  ErrorHandlerService.instance.addListener(
+    ErrorHandlerService.EVENTS.Error,
+    confirmStartingExperiment
+  );
+  await ErrorHandlerService.instance.networkError(NetworkError);
+  ErrorHandlerService.instance.removeListener(
+    ErrorHandlerService.EVENTS.Error,
+    confirmStartingExperiment
+  );
+});
+
+test('should emit an event on data error', () => {
+  jest.spyOn(ErrorHandlerService.instance, 'dataError').mockImplementation(() => {
+    return Promise.resolve();
+  });
+  let DataError = DataNetworkError;
+  ErrorHandlerService.instance.addListener(
+    ErrorHandlerService.EVENTS.ERROR,
+    confirmStartingExperiment
+  );
+  await ErrorHandlerService.instance.dataError(NetworkError);
+  ErrorHandlerService.instance.removeListener(
+    ErrorHandlerService.EVENTS.ERROR,
+    confirmStartingExperiment
+  );
+});
diff --git a/src/services/experiments/files/import-experiment-service.js b/src/services/experiments/files/import-experiment-service.js
index 45709388d357a983d7d0e58d343506a9d696aa00..341e191e8dbfe51c5836397d79c329b6eaabcee2 100644
--- a/src/services/experiments/files/import-experiment-service.js
+++ b/src/services/experiments/files/import-experiment-service.js
@@ -7,8 +7,19 @@ import ErrorHandlerService from '../../error-handler-service.js';
 const importExperimentURL = `${config.api.proxy.url}${endpoints.proxy.storage.importExperiment.url}`;
 const scanStorageURL = `${config.api.proxy.url}${endpoints.proxy.storage.scanStorage.url}`;
 
+/**
+ * The Import Experiment Service performs the requests (Extract),
+ * processes data such as zip or folder (Transform), 
+ * and passes them to the Import Experiment Component (Load).
+ * Errors are handled by communicating witht he Error Handler Service.
+ */
+
 let _instance = null;
 const SINGLETON_ENFORCER = Symbol();
+
+/**
+ * Non-default options (content type) for the POST request
+ */
 const options = {
   mode: 'cors', // no-cors, *cors, same-origin
   cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached