diff --git a/src/lib/detail/impl.cpp b/src/lib/detail/impl.cpp
index db85beaca63e50cc760b0bc00c4ce1ddaee5da7f..1da6b6a0d6d9bfa97b5e7b73a725d45221a9c311 100644
--- a/src/lib/detail/impl.cpp
+++ b/src/lib/detail/impl.cpp
@@ -239,7 +239,8 @@ register_adhoc_storage(const server& srv, const std::string& name,
                 return tl::make_unexpected(ec);
             }
 
-            return scord::adhoc_storage{type, name, resp.value(), ctx};
+            return scord::adhoc_storage{type, name, resp.value(), ctx,
+                                        resources};
         }
     }
 
diff --git a/src/lib/scord/types.h b/src/lib/scord/types.h
index 8b2d939d24f0bde0db3b2b90f576fb65193009b8..f1f24923d809f780fdec61dce2839f3b028db3af 100644
--- a/src/lib/scord/types.h
+++ b/src/lib/scord/types.h
@@ -429,11 +429,13 @@ ADM_dataset_list_destroy(ADM_dataset_list_t list);
  * @param[in] adhoc_ctx Some specific context information for the storage
  * tier or NULL if none is required. For instance, an adhoc storage system may
  * find it useful to provide an ADM_adhoc_context_t describing the instance.
+ * @param[in] adhoc_resources The adhoc resources for this instance.
  * @return A valid ADM_ADHOC_STORAGE if successful, or NULL in case of failure.
  */
 ADM_adhoc_storage_t
 ADM_adhoc_storage_create(const char* name, ADM_adhoc_storage_type_t type,
-                         uint64_t id, ADM_adhoc_context_t adhoc_ctx);
+                         uint64_t id, ADM_adhoc_context_t adhoc_ctx,
+                         ADM_adhoc_resources_t adhoc_resources);
 
 /**
  * Destroy an ADM_ADHOC_STORAGE created by ADM_adhoc_storage_destroy().
diff --git a/src/lib/scord/types.hpp b/src/lib/scord/types.hpp
index 775d2ad272f176e5a8cb1eaeaae6b450f0d1577c..12722a39b236dc38119a590b7af9c56d9947a08a 100644
--- a/src/lib/scord/types.hpp
+++ b/src/lib/scord/types.hpp
@@ -255,7 +255,8 @@ struct adhoc_storage {
     explicit adhoc_storage(ADM_adhoc_storage_t storage);
     explicit operator ADM_adhoc_storage_t() const;
     adhoc_storage(enum adhoc_storage::type type, std::string name,
-                  std::uint64_t id, const scord::adhoc_storage::ctx& ctx);
+                  std::uint64_t id, const scord::adhoc_storage::ctx& ctx,
+                  adhoc_storage::resources resources);
 
     adhoc_storage(const adhoc_storage& other) noexcept;
     adhoc_storage(adhoc_storage&&) noexcept;
@@ -274,6 +275,9 @@ struct adhoc_storage {
     adhoc_storage::ctx
     context() const;
 
+    adhoc_storage::resources
+    get_resources() const;
+
     void
     update(scord::adhoc_storage::ctx new_ctx);
 
diff --git a/src/lib/types.c b/src/lib/types.c
index a3f560ea54879036491cab8b6f4ab1d341a5f9ab..0a44d15f7034a397d93e263c26faf5e53b1d05f7 100644
--- a/src/lib/types.c
+++ b/src/lib/types.c
@@ -430,7 +430,8 @@ ADM_dataset_list_destroy(ADM_dataset_list_t list) {
 
 ADM_adhoc_storage_t
 ADM_adhoc_storage_create(const char* name, ADM_adhoc_storage_type_t type,
-                         uint64_t id, ADM_adhoc_context_t adhoc_ctx) {
+                         uint64_t id, ADM_adhoc_context_t adhoc_ctx,
+                         ADM_adhoc_resources_t adhoc_resources) {
 
     struct adm_adhoc_storage* adm_adhoc_storage =
             (struct adm_adhoc_storage*) malloc(sizeof(*adm_adhoc_storage));
@@ -466,6 +467,8 @@ ADM_adhoc_storage_create(const char* name, ADM_adhoc_storage_type_t type,
 
     memcpy(adm_adhoc_storage->s_adhoc_ctx, adhoc_ctx, sizeof(*adhoc_ctx));
 
+    adm_adhoc_storage->s_resources = adhoc_resources;
+
     return adm_adhoc_storage;
 
 cleanup_on_error:
@@ -824,7 +827,7 @@ ADM_job_requirements_create(ADM_dataset_t inputs[], size_t inputs_len,
 
     adm_job_reqs->r_adhoc_storage = ADM_adhoc_storage_create(
             adhoc_storage->s_name, adhoc_storage->s_type, adhoc_storage->s_id,
-            adhoc_storage->s_adhoc_ctx);
+            adhoc_storage->s_adhoc_ctx, adhoc_storage->s_resources);
 
     return adm_job_reqs;
 
diff --git a/src/lib/types.cpp b/src/lib/types.cpp
index 4b7c2b0c0d50eb51c513c61c5ece6f3cf1ad25c9..023ff07520f7bb0d70ca72b15eac09ce9b709be3 100644
--- a/src/lib/types.cpp
+++ b/src/lib/types.cpp
@@ -585,9 +585,10 @@ class adhoc_storage::impl {
 public:
     impl() = default;
     explicit impl(enum adhoc_storage::type type, std::string name,
-                  std::uint64_t id, adhoc_storage::ctx ctx)
+                  std::uint64_t id, adhoc_storage::ctx ctx,
+                  struct adhoc_storage::resources resources)
         : m_type(type), m_name(std::move(name)), m_id(id),
-          m_ctx(std::move(ctx)) {}
+          m_ctx(std::move(ctx)), m_resources(std::move(resources)) {}
     impl(const impl& rhs) = default;
     impl(impl&& rhs) = default;
     impl&
@@ -616,6 +617,11 @@ public:
         return m_ctx;
     }
 
+    struct adhoc_storage::resources
+    resources() const {
+        return m_resources;
+    };
+
     void
     update(adhoc_storage::ctx new_ctx) {
         m_ctx = std::move(new_ctx);
@@ -645,6 +651,7 @@ private:
     std::string m_name;
     std::uint64_t m_id;
     adhoc_storage::ctx m_ctx;
+    struct adhoc_storage::resources m_resources;
 };
 
 adhoc_storage::adhoc_storage() = default;
@@ -652,29 +659,32 @@ adhoc_storage::adhoc_storage() = default;
 adhoc_storage::adhoc_storage(enum adhoc_storage::type type, std::string name,
                              std::uint64_t id, execution_mode exec_mode,
                              access_type access_type,
-                             adhoc_storage::resources res,
+                             struct adhoc_storage::resources res,
                              std::uint32_t walltime, bool should_flush)
-    : m_pimpl(std::make_unique<impl>(
-              type, std::move(name), id,
-              adhoc_storage::ctx{exec_mode, access_type, std::move(res),
-                                 walltime, should_flush})) {}
+    : m_pimpl(std::make_unique<impl>(type, std::move(name), id,
+                                     adhoc_storage::ctx{exec_mode, access_type,
+                                                        walltime, should_flush},
+                                     std::move(res))) {}
 
 adhoc_storage::adhoc_storage(ADM_adhoc_storage_t st)
     : m_pimpl(std::make_unique<impl>(
               static_cast<enum adhoc_storage::type>(st->s_type), st->s_name,
-              st->s_id, adhoc_storage::ctx{st->s_adhoc_ctx})) {}
+              st->s_id, adhoc_storage::ctx{st->s_adhoc_ctx},
+              adhoc_storage::resources{st->s_resources})) {}
 
 adhoc_storage::operator ADM_adhoc_storage_t() const {
     return ADM_adhoc_storage_create(
             m_pimpl->name().c_str(),
             static_cast<ADM_adhoc_storage_type_t>(m_pimpl->type()),
-            m_pimpl->id(),
-            static_cast<ADM_adhoc_context_t>(m_pimpl->context()));
+            m_pimpl->id(), static_cast<ADM_adhoc_context_t>(m_pimpl->context()),
+            static_cast<ADM_adhoc_resources_t>(m_pimpl->resources()));
 }
 
 adhoc_storage::adhoc_storage(enum adhoc_storage::type type, std::string name,
-                             std::uint64_t id, const adhoc_storage::ctx& ctx)
-    : m_pimpl(std::make_unique<impl>(type, std::move(name), id, ctx)) {}
+                             std::uint64_t id, const adhoc_storage::ctx& ctx,
+                             adhoc_storage::resources resources)
+    : m_pimpl(std::make_unique<impl>(type, std::move(name), id, ctx,
+                                     std::move(resources))) {}
 
 adhoc_storage::adhoc_storage(const adhoc_storage& other) noexcept
     : m_pimpl(std::make_unique<impl>(*other.m_pimpl)) {}
@@ -710,6 +720,11 @@ adhoc_storage::context() const {
     return m_pimpl->context();
 }
 
+adhoc_storage::resources
+adhoc_storage::get_resources() const {
+    return m_pimpl->resources();
+}
+
 void
 adhoc_storage::update(scord::adhoc_storage::ctx new_ctx) {
     return m_pimpl->update(std::move(new_ctx));
diff --git a/src/lib/types_private.h b/src/lib/types_private.h
index b90a7fc118dad09563dc26008da2b3464ef915f1..db44caf5dd896f24341082fffeddcb6814cf5d60 100644
--- a/src/lib/types_private.h
+++ b/src/lib/types_private.h
@@ -95,6 +95,8 @@ struct adm_adhoc_storage {
     ADM_adhoc_storage_type_t s_type;
     uint64_t s_id;
     ADM_adhoc_context_t s_adhoc_ctx;
+    /** The resources assigned for the adhoc storage system */
+    ADM_adhoc_resources_t s_resources;
 };
 
 struct adm_pfs_storage {
diff --git a/src/scord/adhoc_storage_manager.hpp b/src/scord/adhoc_storage_manager.hpp
index c0d6d051ebafbc374bec87634b0cb2b296d69358..eeb7b88ac43471b283c170e926676cc696bc8378 100644
--- a/src/scord/adhoc_storage_manager.hpp
+++ b/src/scord/adhoc_storage_manager.hpp
@@ -43,7 +43,8 @@ struct adhoc_storage_manager : scord::utils::singleton<adhoc_storage_manager> {
     tl::expected<std::shared_ptr<scord::internal::adhoc_storage_info>,
                  scord::error_code>
     create(enum scord::adhoc_storage::type type, const std::string& name,
-           const scord::adhoc_storage::ctx& ctx) {
+           const scord::adhoc_storage::ctx& ctx,
+           const scord::adhoc_storage::resources& resources) {
 
         static std::atomic_uint64_t current_id;
         std::uint64_t id = current_id++;
@@ -54,7 +55,8 @@ struct adhoc_storage_manager : scord::utils::singleton<adhoc_storage_manager> {
            it == m_adhoc_storages.end()) {
             const auto& [it_adhoc, inserted] = m_adhoc_storages.emplace(
                     id, std::make_shared<scord::internal::adhoc_storage_info>(
-                                scord::adhoc_storage{type, name, id, ctx}));
+                                scord::adhoc_storage{type, name, id, ctx,
+                                                     resources}));
 
             if(!inserted) {
                 LOGGER_ERROR("{}: Emplace failed", __FUNCTION__);
diff --git a/src/scord/rpc_handlers.cpp b/src/scord/rpc_handlers.cpp
index ac0b2f7c1bac57404ad5448d44d6509fc76e5f76..999d4ff0395cdc1356f1bb969561ac05e87944d6 100644
--- a/src/scord/rpc_handlers.cpp
+++ b/src/scord/rpc_handlers.cpp
@@ -216,7 +216,7 @@ register_adhoc_storage(const request& req, const std::string& name,
     std::optional<std::uint64_t> adhoc_id;
     auto& adhoc_manager = scord::adhoc_storage_manager::instance();
 
-    if(const auto am_result = adhoc_manager.create(type, name, ctx);
+    if(const auto am_result = adhoc_manager.create(type, name, ctx, resources);
        am_result.has_value()) {
         const auto& adhoc_storage_info = am_result.value();
         adhoc_id = adhoc_storage_info->adhoc_storage().id();
@@ -325,8 +325,8 @@ deploy_adhoc_storage(const request& req, std::uint64_t adhoc_id) {
         if(adhoc_storage.type() == scord::adhoc_storage::type::gekkofs) {
             const auto adhoc_ctx = adhoc_storage.context();
             /* Number of nodes */
-            const std::string nodes =
-                    std::to_string(adhoc_ctx.resources().nodes().size());
+            const std::string nodes = std::to_string(
+                    adhoc_storage.get_resources().nodes().size());
 
             /* Walltime */
             const std::string walltime = std::to_string(adhoc_ctx.walltime());