diff --git a/lib/core-callback/dumper/req.js b/lib/core-callback/dumper/req.js
index 66b2345..a4b0e23 100644
--- a/lib/core-callback/dumper/req.js
+++ b/lib/core-callback/dumper/req.js
@@ -1,25 +1,16 @@
 const MODULE_NAME = 'CORE-CALLBACK.DUMPER.REQ';
 
-const fs = require('fs');
+// const fs = require('fs');
 const fsPromise = require('fs').promises;
 const path = require('path');
 const config = require('komodo-sdk/config');
 const logger = require('komodo-sdk/logger');
 const moment = require('moment');
 
-const baseDumpDir = 'dump';
-const subBaseDumpDir = path.join(baseDumpDir, 'core-callback');
-const lastDumpFileName = path.join(subBaseDumpDir, 'last-req');
+const mkdirIfNotExists = require('../../utils/mkdir-if-not-exists');
 
-if (!fs.existsSync(baseDumpDir)) {
-    logger.verbose(`${MODULE_NAME} B5785525: Creating base dump dir`);
-    fs.mkdirSync(baseDumpDir);
-}
-
-if (!fs.existsSync(subBaseDumpDir)) {
-    logger.verbose(`${MODULE_NAME} 13BD289A: Creating dump dir`);
-    fs.mkdirSync(subBaseDumpDir);
-}
+const baseDumpDir = path.join('dump', 'core-callback');
+const lastDumpFileName = path.join(baseDumpDir, 'last-req');
 
 module.exports = async (req, res, next) => {
     if (
@@ -48,19 +39,10 @@ REQ BODY:
 ${JSON.stringify(req.body, null, 2)}
 `;
 
-    const dumpDir = path.join(
-        subBaseDumpDir,
-        moment().format('YYYY-MM-DD'),
-    );
-
-    try {
-        await fsPromise.stat(dumpDir);
-    } catch (e) {
-        await fsPromise.mkdir(dumpDir, { recursive: true });
-    }
 
     const dumpFileName = path.join(
-        dumpDir,
+        baseDumpDir,
+        moment().format('YYYY-MM-DD'),
         [
             'req',
             moment().format('YYMMDD_HHmmss_SSS'),
@@ -68,8 +50,17 @@ ${JSON.stringify(req.body, null, 2)}
         ].join('_'),
     );
 
-    await fsPromise.writeFile(dumpFileName, data);
-    await fsPromise.writeFile(lastDumpFileName, data);
+    try {
+        await mkdirIfNotExists(xid, path.dirname(dumpFileName));
+        await fsPromise.writeFile(lastDumpFileName, data);
+        await fsPromise.writeFile(dumpFileName, data);
+    } catch (e) {
+        logger.warn(`${MODULE_NAME} E77C2B23: Exception on dumping file`, {
+            xid,
+            eCode: e.code,
+            eMessage: e.eMessage,
+        });
+    }
 
     next();
 };
diff --git a/lib/core-callback/dumper/sender.js b/lib/core-callback/dumper/sender.js
index e7c33a8..ea154aa 100644
--- a/lib/core-callback/dumper/sender.js
+++ b/lib/core-callback/dumper/sender.js
@@ -1,25 +1,15 @@
 const MODULE_NAME = 'CORE-CALLBACK.DUMPER.SENDER';
 
-const fs = require('fs');
 const fsPromise = require('fs').promises;
 const path = require('path');
 const config = require('komodo-sdk/config');
 const logger = require('komodo-sdk/logger');
 const moment = require('moment');
 
-const baseDumpDir = 'dump';
-const subBaseDumpDir = path.join(baseDumpDir, 'core-callback');
-const lastDumpFileName = path.join(subBaseDumpDir, 'last-sent');
+const mkdirIfNotExists = require('../../utils/mkdir-if-not-exists');
 
-if (!fs.existsSync(baseDumpDir)) {
-    logger.verbose(`${MODULE_NAME} CE7EA06A: Creating base dump dir`);
-    fs.mkdirSync(baseDumpDir);
-}
-
-if (!fs.existsSync(subBaseDumpDir)) {
-    logger.verbose(`${MODULE_NAME} A9807434: Creating dump dir`);
-    fs.mkdirSync(subBaseDumpDir);
-}
+const baseDumpDir = path.join('dump', 'core-callback');
+const lastDumpFileName = path.join(baseDumpDir, 'last-sent');
 
 module.exports = async (xid, httpMethod, endpointUrl, params, axiosResponse, axiosError) => {
     if (
@@ -55,19 +45,9 @@ ${
 }
 `;
 
-    const dumpDir = path.join(
-        subBaseDumpDir,
-        moment().format('YYYY-MM-DD'),
-    );
-
-    try {
-        await fsPromise.stat(dumpDir);
-    } catch (e) {
-        await fsPromise.mkdir(dumpDir, { recursive: true });
-    }
-
     const dumpFileName = path.join(
-        dumpDir,
+        baseDumpDir,
+        moment().format('YYYY-MM-DD'),
         [
             'sent',
             moment().format('YYMMDD_HHmmss_SSS'),
@@ -75,6 +55,15 @@ ${
         ].join('_'),
     );
 
-    await fsPromise.writeFile(dumpFileName, data);
-    await fsPromise.writeFile(lastDumpFileName, data);
+    try {
+        await mkdirIfNotExists(xid, path.dirname(dumpFileName));
+        await fsPromise.writeFile(lastDumpFileName, data);
+        await fsPromise.writeFile(dumpFileName, data);
+    } catch (e) {
+        logger.warn(`${MODULE_NAME} 9BA99454: Exception on dumping file`, {
+            xid,
+            eCode: e.code,
+            eMessage: e.eMessage,
+        });
+    }
 };
diff --git a/lib/utils/mkdir-if-not-exists.js b/lib/utils/mkdir-if-not-exists.js
new file mode 100644
index 0000000..60a3c44
--- /dev/null
+++ b/lib/utils/mkdir-if-not-exists.js
@@ -0,0 +1,29 @@
+const MODULE_NAME = 'MKDIR-IF-NOT-EXISTS';
+
+const fsPromise = require('fs').promises;
+const logger = require('komodo-sdk/logger');
+
+const mkdir = async (xid, dirname) => {
+    try {
+        await fsPromise.mkdir(dirname, { recursive: true });
+    } catch (e) {
+        logger.warn(`${MODULE_NAME} 857718E9: Exception on creating directory`, {
+            xid,
+            dirname,
+            eCode: e.code,
+            eMessage: e.message,
+        });
+    }
+};
+
+module.exports = async (xid, dirname) => {
+    try {
+        await fsPromise.stat(dirname);
+    } catch (e) {
+        logger.verbose(`${MODULE_NAME} 6B08D52D: Creating directory`, {
+            xid, dirname,
+        });
+
+        await mkdir(xid, dirname);
+    }
+};