diff --git a/dap_chain_cert.c b/dap_chain_cert.c
index 73ed8d6bce68fc8504322d07ca6368ff304293b6..ba3c88d7f11ef7e5267f41b7f1fe0e7914f32f28 100755
--- a/dap_chain_cert.c
+++ b/dap_chain_cert.c
@@ -30,6 +30,8 @@
 #include "uthash.h"
 #include "utlist.h"
 #include "dap_common.h"
+#include "dap_string.h"
+#include "dap_strfuncs.h"
 #include "dap_chain_cert.h"
 #include "dap_chain_cert_file.h"
 //#include "dap_hash.h"
@@ -270,14 +272,14 @@ void dap_chain_cert_delete(dap_chain_cert_t * a_cert)
 /**
  * @brief dap_chain_cert_add_file
  * @param a_cert_name
- * @param a_file_path
+ * @param a_folder_path
  * @return
  */
-dap_chain_cert_t * dap_chain_cert_add_file(const char * a_cert_name,const char *a_file_path)
+dap_chain_cert_t * dap_chain_cert_add_file(const char * a_cert_name,const char *a_folder_path)
 {
-    size_t l_cert_path_length = strlen(a_cert_name)+8+strlen(a_file_path);
+    size_t l_cert_path_length = strlen(a_cert_name)+8+strlen(a_folder_path);
     char * l_cert_path = DAP_NEW_Z_SIZE(char,l_cert_path_length);
-    snprintf(l_cert_path,l_cert_path_length,"%s/%s.dcert",a_file_path,a_cert_name);
+    snprintf(l_cert_path,l_cert_path_length,"%s/%s.dcert",a_folder_path,a_cert_name);
     if( access( l_cert_path, F_OK ) == -1 ) {
         log_it (L_ERROR, "File %s is not exists! ", l_cert_path);
         exit(-701);
@@ -378,7 +380,22 @@ void dap_chain_cert_add_folder(const char *a_folder_path)
     if( l_dir ) {
         struct dirent * l_dir_entry;
         while((l_dir_entry=readdir(l_dir))!=NULL){
-            log_it(L_DEBUG,"%s",l_dir_entry->d_name);
+            const char * l_filename = l_dir_entry->d_name;
+            size_t l_filename_len = strlen (l_filename);
+            // Check if its not special dir entries . or ..
+            if( strcmp(l_filename,".") && strcmp(l_filename,"..") ){
+                // If not check the file's suffix
+                const char l_suffix[]=".dcert";
+                size_t l_suffix_len = strlen(l_suffix);
+                if (strncmp(l_filename+ l_filename_len-l_suffix_len,l_suffix,l_suffix_len) == 0 ){
+                    char * l_cert_name = dap_strdup(l_filename);
+                    l_cert_name[l_filename_len-l_suffix_len] = '\0'; // Remove suffix
+                    // Load the cert file
+                    log_it(L_DEBUG,"Trying to load %s",l_filename);
+                    dap_chain_cert_add_file(l_cert_name,a_folder_path);
+                }
+            }
+
         }
         closedir(l_dir);
     }
diff --git a/dap_chain_cert.h b/dap_chain_cert.h
index 3a49f5ede91dc130fc70733f18084dae24a3b0ad..ecce7ed4c35f32f7620c6f02350e843952b81868 100755
--- a/dap_chain_cert.h
+++ b/dap_chain_cert.h
@@ -52,7 +52,7 @@ dap_chain_cert_t * dap_chain_cert_generate_mem(const char * a_cert_name,
 
 dap_chain_addr_t * dap_chain_cert_to_addr(dap_chain_cert_t * a_cert, dap_chain_net_id_t a_net_id);
 
-dap_chain_cert_t * dap_chain_cert_add_file(const char * a_cert_name,const char *a_file_path);
+dap_chain_cert_t * dap_chain_cert_add_file(const char * a_cert_name,const char *a_folder_path);
 int dap_chain_cert_save_to_folder(dap_chain_cert_t * a_cert, const char *a_file_dir_path);
 void dap_chain_cert_add_folder(const char *a_folder_path);
 void dap_chain_cert_dump(dap_chain_cert_t * a_cert);