Index: source/python/classes/EcFlexpart.py
===================================================================
--- source/python/classes/EcFlexpart.py	(revision 092aaf1bfb2e76aea6d9a2079adf1b4bd81dcd37)
+++ source/python/classes/EcFlexpart.py	(revision bf48c8a560eeb923f526cddeb478e88a897576f1)
@@ -92,5 +92,6 @@
 from GribUtil import GribUtil
 from mods.tools import (init128, to_param_id, silent_remove, product,
-                        my_error, make_dir, get_informations, get_dimensions)
+                        my_error, make_dir, get_informations, get_dimensions,
+                        execute_subprocess)
 from MarsRetrieval import MarsRetrieval
 import mods.disaggregation as disaggregation
@@ -1427,6 +1428,8 @@
 
             # Fortran program creates file fort.15 (with u,v,etadot,t,sp,q)
-            p = subprocess.check_call([os.path.join(
-                c.exedir, _config.FORTRAN_EXECUTABLE)], shell=True)
+            execute_subprocess([os.path.join(c.exedir,
+                                _config.FORTRAN_EXECUTABLE)],
+                               error_msg='FORTRAN PROGRAM FAILED!')#shell=True)
+
             os.chdir(pwd)
 #============================================================================================
@@ -1507,22 +1510,30 @@
 
             if c.format.lower() == 'grib2':
-                p = subprocess.check_call(['grib_set', '-s', 'edition=2,',
-                                           'productDefinitionTemplateNumber=8',
-                                           ofile, ofile + '_2'])
-                p = subprocess.check_call(['mv', ofile + '_2', ofile])
+                execute_subprocess(['grib_set', '-s', 'edition=2,' +
+                                    'productDefinitionTemplateNumber=8',
+                                    ofile, ofile + '_2'],
+                                   error_msg='GRIB2 CONVERSION FAILED!')
+
+                execute_subprocess(['mv', ofile + '_2', ofile],
+                                   error_msg='RENAMING FOR NEW GRIB2 FORMAT '
+                                   'FILES FAILED!')
 
             if c.ectrans and not c.ecapi:
-                p = subprocess.check_call(['ectrans', '-overwrite', '-gateway',
-                                           c.gateway, '-remote', c.destination,
-                                           '-source', ofile])
+                execute_subprocess(['ectrans', '-overwrite', '-gateway',
+                                    c.gateway, '-remote', c.destination,
+                                    '-source', ofile],
+                                   error_msg='TRANSFER TO LOCAL SERVER FAILED!')
 
             if c.ecstorage and not c.ecapi:
-                p = subprocess.check_call(['ecp', '-o', ofile,
-                                           os.path.expandvars(c.ecfsdir)])
+                execute_subprocess(['ecp', '-o', ofile,
+                                    os.path.expandvars(c.ecfsdir)],
+                                   error_msg='COPY OF FILES TO ECSTORAGE '
+                                   'AREA FAILED!')
 
             if c.outputdir != c.inputdir:
-                p = subprocess.check_call(['mv',
-                                           os.path.join(c.inputdir, ofile),
-                                           c.outputdir])
+                execute_subprocess(['mv', os.path.join(c.inputdir, ofile),
+                                    c.outputdir],
+                                   error_msg='RELOCATION OF OUTPUT FILES '
+                                   'TO OUTPUTDIR FAILED!')
 
         return
@@ -1604,7 +1615,7 @@
         # afterwards switch back to the working dir
         os.chdir(c.outputdir)
-        p = subprocess.check_call([
-            os.path.expandvars(os.path.expanduser(c.flexpartdir))
-            + '/../FLEXPART_PROGRAM/grib2flexpart', 'useAvailable', '.'])
+        cmd = [os.path.expandvars(os.path.expanduser(c.flexpartdir)) +
+         '/../FLEXPART_PROGRAM/grib2flexpart', 'useAvailable', '.']
+        execute_subprocess(cmd)
         os.chdir(pwd)
 
Index: source/python/install.py
===================================================================
--- source/python/install.py	(revision 8652e7eb9cb79fed53ea3ae65f29e0431b4e9cef)
+++ source/python/install.py	(revision bf48c8a560eeb923f526cddeb478e88a897576f1)
@@ -62,5 +62,5 @@
 from classes.UioFiles import UioFiles
 from mods.tools import (make_dir, put_file_to_ecserver, submit_job_to_ecserver,
-                        silent_remove)
+                        silent_remove, execute_subprocess)
 
 # ------------------------------------------------------------------------------
@@ -677,7 +677,7 @@
         print(e)
     else:
-        subprocess.check_call(['ls', '-l',
-                               os.path.join(src_path,
-                                            _config.FORTRAN_EXECUTABLE)])
+        execute_subprocess(['ls', '-l', os.path.join(src_path,
+                            _config.FORTRAN_EXECUTABLE)], error_msg=
+                           'FORTRAN EXECUTABLE COULD NOT BE FOUND!')
 
     return
Index: source/python/mods/tools.py
===================================================================
--- source/python/mods/tools.py	(revision 9aefaadcad4f37803b25dccec9574c3b437be4e6)
+++ source/python/mods/tools.py	(revision bf48c8a560eeb923f526cddeb478e88a897576f1)
@@ -743,2 +743,38 @@
 
     return (ix, jy, it)
+
+
+def execute_subprocess(cmd_list, error_msg='SUBPROCESS FAILED!'):
+    '''Executes a command line instruction via a subprocess.
+
+    Error handling is done if an error occures.
+
+    Parameters
+    ----------
+    cmd_list : :obj:`list` of `:obj:`string`
+        A list of the components for the command line execution. Each
+        list entry is a single part of the command which is seperated from
+        the rest by a blank space.
+        E.g. ['mv', file1, file2]
+
+    Return
+    ------
+    error_msg : :obj:`string`, optional
+        The possible error message if the subprocess failed.
+        By default it will just tell "SUBPROCESS FAILED!".
+    '''
+
+    try:
+        subprocess.check_call(cmd_list)
+    except subprocess.CalledProcessError as e:
+        print('... ERROR CODE: ' + str(e.returncode))
+        print('... ERROR MESSAGE:\n \t ' + str(e))
+
+        sys.exit('... ' + error_msg)
+    except OSError as e:
+        print('... ERROR CODE: ' + str(e.errno))
+        print('... ERROR MESSAGE:\n \t ' + str(e.strerror))
+
+        sys.exit('... ' + error_msg)
+
+    return
