diff --git a/Framework/ScriptRepository/src/ScriptRepositoryImpl.cpp b/Framework/ScriptRepository/src/ScriptRepositoryImpl.cpp
index 25fc618fe7ddb678b4a7de41b9a3191f6b44b633..e0c48cd445ffb9f38930d58fa982e64c2fabcb36 100644
--- a/Framework/ScriptRepository/src/ScriptRepositoryImpl.cpp
+++ b/Framework/ScriptRepository/src/ScriptRepositoryImpl.cpp
@@ -1481,15 +1481,19 @@ void ScriptRepositoryImpl::parseLocalRepository(Repository &repo) {
 
  */
 void ScriptRepositoryImpl::parseDownloadedEntries(Repository &repo) {
-  ptree pt;
   std::string filename = std::string(local_repository).append(".local.json");
   std::vector<std::string> entries_to_delete;
   Repository::iterator entry_it;
   std::set<std::string> folders_of_deleted;
+
   try {
-    read_json(filename, pt);
-    BOOST_FOREACH (ptree::value_type &file, pt) {
-      entry_it = repo.find(file.first);
+    Json::Value pt = readJsonFile(filename, "Error reading .local.json file");
+    for( auto it = pt.begin() ; it != pt.end() ; it++ ) {
+
+      std::string filepath = it.key().asString();
+      Json::Value entry_json = pt.get(filepath, "");
+
+      entry_it = repo.find(filepath);
       if (entry_it != repo.end()) {
         // entry found, so, lets update the entry
         if (entry_it->second.local && entry_it->second.remote) {
@@ -1497,24 +1501,23 @@ void ScriptRepositoryImpl::parseDownloadedEntries(Repository &repo) {
           // was found at the local file system and at the remote repository
 
           entry_it->second.downloaded_pubdate =
-              DateAndTime(file.second.get<std::string>("downloaded_pubdate"));
+              DateAndTime(entry_json.get("downloaded_pubdate", "").asString());
           entry_it->second.downloaded_date =
-              DateAndTime(file.second.get<std::string>("downloaded_date"));
+              DateAndTime(entry_json.get("downloaded_date", "").asString());
           entry_it->second.auto_update =
-              (file.second.get<std::string>("auto_update", std::string()) ==
-               "true");
+              entry_json.get("auto_update", false).asBool();
 
         } else {
-          // if the entry was not found locally or remotelly, this means
-          // that this entry was deleted (remotelly or locally),
+          // if the entry was not found locally or remotely, this means
+          // that this entry was deleted (remotely or locally),
           // so it should not appear at local_repository json any more
-          entries_to_delete.push_back(file.first);
-          folders_of_deleted.insert(getParentFolder(file.first));
+          entries_to_delete.push_back(filepath);
+          folders_of_deleted.insert(getParentFolder(filepath));
         }
       } else {
         // this entry was never created before, so it should not
         // exist in local repository json
-        entries_to_delete.push_back(file.first);
+        entries_to_delete.push_back(filepath);
       }
 
     } // end loop FOREACH entry in local json
@@ -1524,8 +1527,7 @@ void ScriptRepositoryImpl::parseDownloadedEntries(Repository &repo) {
 
       // clear the auto_update flag from the folders if the user deleted files
       BOOST_FOREACH (const std::string &folder, folders_of_deleted) {
-        ptree::assoc_iterator pt_entry = pt.find(folder);
-        if (pt_entry == pt.not_found())
+        if (!pt.isMember(folder))
           continue;
 
         entry_it = repo.find(folder);
@@ -1541,27 +1543,19 @@ void ScriptRepositoryImpl::parseDownloadedEntries(Repository &repo) {
       for (std::vector<std::string>::iterator it = entries_to_delete.begin();
            it != entries_to_delete.end(); ++it) {
         // remove this entry
-        pt.erase(*it);
+        pt.removeMember(*it);
       }
 #if defined(_WIN32) || defined(_WIN64)
       // set the .repository.json and .local.json not hidden (to be able to edit
       // it)
       SetFileAttributes(filename.c_str(), FILE_ATTRIBUTE_NORMAL);
 #endif
-      write_json(filename, pt);
+      writeJsonFile(filename, pt, "Error writing .local.json file");
 #if defined(_WIN32) || defined(_WIN64)
       // set the .repository.json and .local.json hidden
       SetFileAttributes(filename.c_str(), FILE_ATTRIBUTE_HIDDEN);
 #endif
     }
-  } catch (boost::property_tree::json_parser_error &ex) {
-    std::stringstream ss;
-    ss << "Corrupted local database : " << filename;
-
-    g_log.error() << "ScriptRepository: " << ss.str()
-                  << "\nDetails: downloaded entries - json_parser_error: "
-                  << ex.what() << std::endl;
-    throw ScriptRepoException(ss.str(), ex.what());
   } catch (std::exception &ex) {
     std::stringstream ss;
     ss << "RuntimeError: checking downloaded entries >> " << ex.what();