diff --git a/src/caoscrawler/crawl.py b/src/caoscrawler/crawl.py
index 2ce5eae9afbd78cbf4b78db0b152fa7578258ee9..627e1dc4ef041ea4dae03efedd2fabadb37bd07f 100644
--- a/src/caoscrawler/crawl.py
+++ b/src/caoscrawler/crawl.py
@@ -55,6 +55,9 @@ from linkahead.apiutils import (compare_entities,
                                 merge_entities)
 from linkahead.cached import cache_clear, cached_get_entity_by
 from linkahead.common.datatype import get_list_datatype, is_reference
+from linkahead.exceptions import (
+    TransactionError,
+)
 from linkahead.utils.escape import escape_squoted_text
 
 from .config import get_config_setting
@@ -1081,15 +1084,24 @@ def crawler_main(crawled_directory_path: str,
         logger.error(err)
         _update_status_record(crawler.run_id, 0, 0, status="FAILED")
         return 1
+    except TransactionError as err:
+        logger.debug(traceback.format_exc())
+        logger.error(err)
+        logger.error("Transaction error details:")
+        for suberr in err.errors:
+            logger.error("---")
+            logger.error(suberr.msg)
+            logger.error(suberr.entity)
+        return 1
     except Exception as err:
         logger.debug(traceback.format_exc())
-        logger.debug(err)
+        logger.error(err)
 
         if "SHARED_DIR" in os.environ:
             # pylint: disable=E0601
             domain = get_config_setting("public_host_url")
-            logger.error("Unexpected Error: Please tell your administrator about this and provide the"
-                         f" following path.\n{domain}/Shared/" + debuglog_public)
+            logger.error("Unexpected Error: Please tell your administrator about this and provide "
+                         f"the following path.\n{domain}/Shared/" + debuglog_public)
         _update_status_record(crawler.run_id, 0, 0, status="FAILED")
         return 1