diff --git a/util/data_file.cpp b/util/data_file.cpp
new file mode 100644
index 0000000..14266ca
--- /dev/null
+++ b/util/data_file.cpp
@@ -0,0 +1,44 @@
+#include <util/data_file.hpp>
+#include <valijson/adapters/nlohmann_json_adapter.hpp>
+#include <valijson/schema.hpp>
+#include <valijson/schema_parser.hpp>
+#include <valijson/validator.hpp>
+
+#include <regex>
+
+namespace fs = std::filesystem;
+
+namespace util
+{
+
+void findFiles(const fs::path& i_dirPath, const std::string& i_matchString,
+               std::vector<fs::path>& o_foundPaths)
+{
+    if (fs::exists(i_dirPath))
+    {
+        std::regex search{i_matchString};
+        for (const auto& file : fs::directory_iterator(i_dirPath))
+        {
+            std::string path = file.path().string();
+            if (std::regex_search(path, search))
+            {
+                o_foundPaths.emplace_back(file.path());
+            }
+        }
+    }
+}
+
+bool validateJson(const nlohmann::json& i_schema, const nlohmann::json& i_json)
+{
+    valijson::Schema schema;
+    valijson::SchemaParser parser;
+    valijson::adapters::NlohmannJsonAdapter schemaAdapter(i_schema);
+    parser.populateSchema(schemaAdapter, schema);
+
+    valijson::Validator validator;
+    valijson::adapters::NlohmannJsonAdapter targetAdapter(i_json);
+
+    return validator.validate(schema, targetAdapter, nullptr);
+}
+
+} // namespace util
