diff --git a/mo/jobs/__init__.py b/mo/jobs/__init__.py
index 60b5d8119a945bfdc426dc82222a71550fa46659..b017d1c9ee4212b7d3f0e65d742dcb3273acd2e6 100644
--- a/mo/jobs/__init__.py
+++ b/mo/jobs/__init__.py
@@ -4,7 +4,7 @@ from datetime import timedelta
 import os
 import secrets
 from sqlalchemy import or_
-from typing import Optional, Dict, Callable
+from typing import Optional, Dict, Callable, List
 
 import mo
 import mo.config as config
@@ -28,10 +28,12 @@ class TheJob:
 
     job: db.Job
     job_id: Optional[int]
+    errors: List[str]
 
     def __init__(self, job_id: Optional[int] = None):
         """Pokud chceme pracovat s existujícím jobem, zadáme jeho ID."""
         self.job_id = job_id
+        self.errors = []
 
     def load(self) -> db.Job:
         sess = db.get_session()
@@ -95,6 +97,9 @@ class TheJob:
         logger.info(f'Job: Ruším job #{self.job.job_id}')
         return self._finish_remove()
 
+    def error(self, msg):
+        self.errors.append(msg)
+
     def run(self):
         sess = db.get_session()
         if not self.load() or self.job.state != db.JobState.ready:
@@ -110,11 +115,17 @@ class TheJob:
 
         try:
             _handler_table[job.type](self)
-            logger.info(f'Job: Úspěšně dokončen job #{job.job_id}')
-            job.state = db.JobState.done
+            if self.errors:
+                logger.info(f'Job: Neúspěšně dokončen job #{job.job_id}')
+                job.state = db.JobState.failed
+                job.out_json = {'errors': self.errors}
+            else:
+                logger.info(f'Job: Úspěšně dokončen job #{job.job_id}')
+                job.state = db.JobState.done
         except Exception as e:
             logger.error(f'Job: Chyba při zpracování jobu #{job.job_id}: %s', e, exc_info=e)
             job.state = db.JobState.failed
+            job.out_json = {'errors': 'Interní chyba, informujte prosím správce systému.'}
             return
 
         job.finished_at = mo.util.get_now()