diff --git a/examples/c/ADM_cancel_transfer.c b/examples/c/ADM_cancel_transfer.c
index 806033118de5764719c6e85ff37f7d97c3804ad7..849eb7087ed482c3c695d922ee0aeb7ee2ba204a 100644
--- a/examples/c/ADM_cancel_transfer.c
+++ b/examples/c/ADM_cancel_transfer.c
@@ -71,8 +71,9 @@ main(int argc, char* argv[]) {
     const char* name = "adhoc_storage_42";
 
     ADM_adhoc_storage_t adhoc_storage;
-    ADM_return_t ret = ADM_register_adhoc_storage(
-            server, name, ADM_ADHOC_STORAGE_GEKKOFS, ctx, &adhoc_storage);
+    ADM_return_t ret =
+            ADM_register_adhoc_storage(server, name, ADM_ADHOC_STORAGE_GEKKOFS,
+                                       ctx, adhoc_resources, &adhoc_storage);
 
     if(ret != ADM_SUCCESS) {
         fprintf(stderr,
diff --git a/examples/c/ADM_connect_data_operation.c b/examples/c/ADM_connect_data_operation.c
index f9bf1eb3662b41be5240dca4c3dd473b76139e77..b46564725b0523d299f390d0037ee123cef461a8 100644
--- a/examples/c/ADM_connect_data_operation.c
+++ b/examples/c/ADM_connect_data_operation.c
@@ -67,8 +67,9 @@ main(int argc, char* argv[]) {
     const char* name = "adhoc_storage_42";
 
     ADM_adhoc_storage_t adhoc_storage;
-    ADM_return_t ret = ADM_register_adhoc_storage(
-            server, name, ADM_ADHOC_STORAGE_GEKKOFS, ctx, &adhoc_storage);
+    ADM_return_t ret =
+            ADM_register_adhoc_storage(server, name, ADM_ADHOC_STORAGE_GEKKOFS,
+                                       ctx, adhoc_resources, &adhoc_storage);
 
     if(ret != ADM_SUCCESS) {
         fprintf(stderr,
diff --git a/examples/c/ADM_define_data_operation.c b/examples/c/ADM_define_data_operation.c
index 19d2939e20e729b2349ab6366bba0151dc468130..2946d073971e03f39a4a67da0c24065c7e568e0c 100644
--- a/examples/c/ADM_define_data_operation.c
+++ b/examples/c/ADM_define_data_operation.c
@@ -72,8 +72,9 @@ main(int argc, char* argv[]) {
     const char* name = "adhoc_storage_42";
 
     ADM_adhoc_storage_t adhoc_storage;
-    ADM_return_t ret = ADM_register_adhoc_storage(
-            server, name, ADM_ADHOC_STORAGE_GEKKOFS, ctx, &adhoc_storage);
+    ADM_return_t ret =
+            ADM_register_adhoc_storage(server, name, ADM_ADHOC_STORAGE_GEKKOFS,
+                                       ctx, adhoc_resources, &adhoc_storage);
 
     if(ret != ADM_SUCCESS) {
         fprintf(stderr,
diff --git a/examples/c/ADM_deploy_adhoc_storage.c b/examples/c/ADM_deploy_adhoc_storage.c
index 1cfd70b9a16a7cc6ae539df20ff60e667a3186fc..73fe414c400ef6671b57622816bef70776be92eb 100644
--- a/examples/c/ADM_deploy_adhoc_storage.c
+++ b/examples/c/ADM_deploy_adhoc_storage.c
@@ -96,9 +96,9 @@ main(int argc, char* argv[]) {
     }
 
     // 2. Register the adhoc storage
-    if(ADM_register_adhoc_storage(server, adhoc_name,
-                                  ADM_ADHOC_STORAGE_DATACLAY, adhoc_ctx,
-                                  &adhoc_storage) != ADM_SUCCESS) {
+    if(ADM_register_adhoc_storage(
+               server, adhoc_name, ADM_ADHOC_STORAGE_DATACLAY, adhoc_ctx,
+               adhoc_resources, &adhoc_storage) != ADM_SUCCESS) {
         fprintf(stderr, "ADM_register_adhoc_storage() failed: %s\n",
                 ADM_strerror(ret));
         goto cleanup;
diff --git a/examples/c/ADM_finalize_data_operation.c b/examples/c/ADM_finalize_data_operation.c
index 39b311553adb4458126de2f616c55d93368ac7e5..1e32ffe5ff251dba35428588e01753d361bcee8c 100644
--- a/examples/c/ADM_finalize_data_operation.c
+++ b/examples/c/ADM_finalize_data_operation.c
@@ -68,8 +68,9 @@ main(int argc, char* argv[]) {
     const char* name = "adhoc_storage_42";
 
     ADM_adhoc_storage_t adhoc_storage;
-    ADM_return_t ret = ADM_register_adhoc_storage(
-            server, name, ADM_ADHOC_STORAGE_GEKKOFS, ctx, &adhoc_storage);
+    ADM_return_t ret =
+            ADM_register_adhoc_storage(server, name, ADM_ADHOC_STORAGE_GEKKOFS,
+                                       ctx, adhoc_resources, &adhoc_storage);
 
     if(ret != ADM_SUCCESS) {
         fprintf(stderr,
diff --git a/examples/c/ADM_get_pending_transfers.c b/examples/c/ADM_get_pending_transfers.c
index 7d4ba51c5d3675b30aff4ade11c7dedbe669bcc4..d8be0e76f39c63bc677d302fd85aaf7c93eda8b6 100644
--- a/examples/c/ADM_get_pending_transfers.c
+++ b/examples/c/ADM_get_pending_transfers.c
@@ -71,8 +71,9 @@ main(int argc, char* argv[]) {
     const char* name = "adhoc_storage_42";
 
     ADM_adhoc_storage_t adhoc_storage;
-    ADM_return_t ret = ADM_register_adhoc_storage(
-            server, name, ADM_ADHOC_STORAGE_GEKKOFS, ctx, &adhoc_storage);
+    ADM_return_t ret =
+            ADM_register_adhoc_storage(server, name, ADM_ADHOC_STORAGE_GEKKOFS,
+                                       ctx, adhoc_resources, &adhoc_storage);
 
     if(ret != ADM_SUCCESS) {
         fprintf(stderr,
diff --git a/examples/c/ADM_get_qos_constraints.c b/examples/c/ADM_get_qos_constraints.c
index 9bcb3abcb54b2b7a15071baeec52b81171286135..9707f69706c9fc1a4388b47280b142ad69f6f833 100644
--- a/examples/c/ADM_get_qos_constraints.c
+++ b/examples/c/ADM_get_qos_constraints.c
@@ -67,8 +67,9 @@ main(int argc, char* argv[]) {
     const char* name = "adhoc_storage_42";
 
     ADM_adhoc_storage_t adhoc_storage;
-    ADM_return_t ret = ADM_register_adhoc_storage(
-            server, name, ADM_ADHOC_STORAGE_GEKKOFS, ctx, &adhoc_storage);
+    ADM_return_t ret =
+            ADM_register_adhoc_storage(server, name, ADM_ADHOC_STORAGE_GEKKOFS,
+                                       ctx, adhoc_resources, &adhoc_storage);
 
     if(ret != ADM_SUCCESS) {
         fprintf(stderr,
diff --git a/examples/c/ADM_get_statistics.c b/examples/c/ADM_get_statistics.c
index 47b299681d74127c5dd2eabc2a0b3a588a3f43c3..21dd9a854f65754bf5b5acaaa081c821f691537b 100644
--- a/examples/c/ADM_get_statistics.c
+++ b/examples/c/ADM_get_statistics.c
@@ -67,8 +67,9 @@ main(int argc, char* argv[]) {
     const char* name = "adhoc_storage_42";
 
     ADM_adhoc_storage_t adhoc_storage;
-    ADM_return_t ret = ADM_register_adhoc_storage(
-            server, name, ADM_ADHOC_STORAGE_GEKKOFS, ctx, &adhoc_storage);
+    ADM_return_t ret =
+            ADM_register_adhoc_storage(server, name, ADM_ADHOC_STORAGE_GEKKOFS,
+                                       ctx, adhoc_resources, &adhoc_storage);
 
     if(ret != ADM_SUCCESS) {
         fprintf(stderr,
diff --git a/examples/c/ADM_get_transfer_priority.c b/examples/c/ADM_get_transfer_priority.c
index adad64834dd20356969206b2da01185572ea74e4..a1cb8bea687eff3a8a5dee06299da513feffbe47 100644
--- a/examples/c/ADM_get_transfer_priority.c
+++ b/examples/c/ADM_get_transfer_priority.c
@@ -71,8 +71,9 @@ main(int argc, char* argv[]) {
     const char* name = "adhoc_storage_42";
 
     ADM_adhoc_storage_t adhoc_storage;
-    ADM_return_t ret = ADM_register_adhoc_storage(
-            server, name, ADM_ADHOC_STORAGE_GEKKOFS, ctx, &adhoc_storage);
+    ADM_return_t ret =
+            ADM_register_adhoc_storage(server, name, ADM_ADHOC_STORAGE_GEKKOFS,
+                                       ctx, adhoc_resources, &adhoc_storage);
 
     if(ret != ADM_SUCCESS) {
         fprintf(stderr,
diff --git a/examples/c/ADM_link_transfer_to_data_operation.c b/examples/c/ADM_link_transfer_to_data_operation.c
index 7595b926512fec676dd59ab177272f34fda109d5..0922a684f54d159974cce852ed300e494556500c 100644
--- a/examples/c/ADM_link_transfer_to_data_operation.c
+++ b/examples/c/ADM_link_transfer_to_data_operation.c
@@ -68,8 +68,9 @@ main(int argc, char* argv[]) {
     const char* name = "adhoc_storage_42";
 
     ADM_adhoc_storage_t adhoc_storage;
-    ADM_return_t ret = ADM_register_adhoc_storage(
-            server, name, ADM_ADHOC_STORAGE_GEKKOFS, ctx, &adhoc_storage);
+    ADM_return_t ret =
+            ADM_register_adhoc_storage(server, name, ADM_ADHOC_STORAGE_GEKKOFS,
+                                       ctx, adhoc_resources, &adhoc_storage);
 
     if(ret != ADM_SUCCESS) {
         fprintf(stderr,
diff --git a/examples/c/ADM_register_adhoc_storage.c b/examples/c/ADM_register_adhoc_storage.c
index 9ffef223046b4f9a7e09d921e4b0bb108e8dd3e0..fb086f0dc6891a93796648783232fabf8e10e37e 100644
--- a/examples/c/ADM_register_adhoc_storage.c
+++ b/examples/c/ADM_register_adhoc_storage.c
@@ -93,7 +93,8 @@ main(int argc, char* argv[]) {
 
     // 2. Register the adhoc storage
     if(ADM_register_adhoc_storage(server, adhoc_name, ADM_ADHOC_STORAGE_GEKKOFS,
-                                  adhoc_ctx, &adhoc_storage) != ADM_SUCCESS) {
+                                  adhoc_ctx, adhoc_resources,
+                                  &adhoc_storage) != ADM_SUCCESS) {
         fprintf(stderr, "ADM_register_adhoc_storage() failed: %s\n",
                 ADM_strerror(ret));
         goto cleanup;
diff --git a/examples/c/ADM_register_job.c b/examples/c/ADM_register_job.c
index 7105607a04be7009ca01bf8a6c108ddb3671ce67..393cb450b19d666f8acdd9a11cc73513424a33b6 100644
--- a/examples/c/ADM_register_job.c
+++ b/examples/c/ADM_register_job.c
@@ -104,7 +104,8 @@ main(int argc, char* argv[]) {
 
     // 2. Register the adhoc storage
     if(ADM_register_adhoc_storage(server, adhoc_name, ADM_ADHOC_STORAGE_GEKKOFS,
-                                  adhoc_ctx, &adhoc_storage) != ADM_SUCCESS) {
+                                  adhoc_ctx, adhoc_resources,
+                                  &adhoc_storage) != ADM_SUCCESS) {
         fprintf(stderr, "ADM_register_adhoc_storage() failed: %s\n",
                 ADM_strerror(ret));
         goto cleanup;
diff --git a/examples/c/ADM_remove_adhoc_storage.c b/examples/c/ADM_remove_adhoc_storage.c
index 5d0834413b0b1b81167c0cd59c1bc6d16164421b..5a8f9b8574ea0a5fe5e4a78b0c1f2888efd04d01 100644
--- a/examples/c/ADM_remove_adhoc_storage.c
+++ b/examples/c/ADM_remove_adhoc_storage.c
@@ -96,7 +96,8 @@ main(int argc, char* argv[]) {
 
     // 2. Register the adhoc storage
     if(ADM_register_adhoc_storage(server, adhoc_name, ADM_ADHOC_STORAGE_GEKKOFS,
-                                  adhoc_ctx, &adhoc_storage) != ADM_SUCCESS) {
+                                  adhoc_ctx, adhoc_resources,
+                                  &adhoc_storage) != ADM_SUCCESS) {
         fprintf(stderr, "ADM_register_adhoc_storage() failed: %s\n",
                 ADM_strerror(ret));
         goto cleanup;
diff --git a/examples/c/ADM_remove_job.c b/examples/c/ADM_remove_job.c
index e95aeb55072968d7429893077850635958072673..0d3d28daf365c81672ce28a5e74ae940e1162d94 100644
--- a/examples/c/ADM_remove_job.c
+++ b/examples/c/ADM_remove_job.c
@@ -71,8 +71,9 @@ main(int argc, char* argv[]) {
     const char* name = "adhoc_storage_42";
 
     ADM_adhoc_storage_t adhoc_storage;
-    ADM_return_t ret = ADM_register_adhoc_storage(
-            server, name, ADM_ADHOC_STORAGE_GEKKOFS, ctx, &adhoc_storage);
+    ADM_return_t ret =
+            ADM_register_adhoc_storage(server, name, ADM_ADHOC_STORAGE_GEKKOFS,
+                                       ctx, adhoc_resources, &adhoc_storage);
 
     if(ret != ADM_SUCCESS) {
         fprintf(stderr,
diff --git a/examples/c/ADM_set_dataset_information.c b/examples/c/ADM_set_dataset_information.c
index 21aa11c556603ed7ce3759d6ef6d5e50dac13838..f314821b6424e9717f616514646de0d5d0f91948 100644
--- a/examples/c/ADM_set_dataset_information.c
+++ b/examples/c/ADM_set_dataset_information.c
@@ -68,8 +68,9 @@ main(int argc, char* argv[]) {
     const char* name = "adhoc_storage_42";
 
     ADM_adhoc_storage_t adhoc_storage;
-    ADM_return_t ret = ADM_register_adhoc_storage(
-            server, name, ADM_ADHOC_STORAGE_GEKKOFS, ctx, &adhoc_storage);
+    ADM_return_t ret =
+            ADM_register_adhoc_storage(server, name, ADM_ADHOC_STORAGE_GEKKOFS,
+                                       ctx, adhoc_resources, &adhoc_storage);
 
     if(ret != ADM_SUCCESS) {
         fprintf(stderr,
diff --git a/examples/c/ADM_set_io_resources.c b/examples/c/ADM_set_io_resources.c
index 8161aa0bb5b0c7347776654df72c242fe672cd5b..eb6b712ce97a8f61196a29e9b52b5e4aa82a19dc 100644
--- a/examples/c/ADM_set_io_resources.c
+++ b/examples/c/ADM_set_io_resources.c
@@ -67,8 +67,9 @@ main(int argc, char* argv[]) {
     const char* name = "adhoc_storage_42";
 
     ADM_adhoc_storage_t adhoc_storage;
-    ADM_return_t ret = ADM_register_adhoc_storage(
-            server, name, ADM_ADHOC_STORAGE_GEKKOFS, ctx, &adhoc_storage);
+    ADM_return_t ret =
+            ADM_register_adhoc_storage(server, name, ADM_ADHOC_STORAGE_GEKKOFS,
+                                       ctx, adhoc_resources, &adhoc_storage);
 
     if(ret != ADM_SUCCESS) {
         fprintf(stderr,
diff --git a/examples/c/ADM_set_qos_constraints.c b/examples/c/ADM_set_qos_constraints.c
index f3b6a40f2f8420d3e55ef59eb22807fd059997d8..6e74af4e86b7195d7c7d9b1e447200338b5ad248 100644
--- a/examples/c/ADM_set_qos_constraints.c
+++ b/examples/c/ADM_set_qos_constraints.c
@@ -71,8 +71,9 @@ main(int argc, char* argv[]) {
     const char* name = "adhoc_storage_42";
 
     ADM_adhoc_storage_t adhoc_storage;
-    ADM_return_t ret = ADM_register_adhoc_storage(
-            server, name, ADM_ADHOC_STORAGE_GEKKOFS, ctx, &adhoc_storage);
+    ADM_return_t ret =
+            ADM_register_adhoc_storage(server, name, ADM_ADHOC_STORAGE_GEKKOFS,
+                                       ctx, adhoc_resources, &adhoc_storage);
 
     if(ret != ADM_SUCCESS) {
         fprintf(stderr,
diff --git a/examples/c/ADM_set_transfer_priority.c b/examples/c/ADM_set_transfer_priority.c
index fbb71729923ea91eea334c48450fe5e003f2da3f..436614eb86e18d6679b259d57ce343171556a4ae 100644
--- a/examples/c/ADM_set_transfer_priority.c
+++ b/examples/c/ADM_set_transfer_priority.c
@@ -71,8 +71,9 @@ main(int argc, char* argv[]) {
     const char* name = "adhoc_storage_42";
 
     ADM_adhoc_storage_t adhoc_storage;
-    ADM_return_t ret = ADM_register_adhoc_storage(
-            server, name, ADM_ADHOC_STORAGE_GEKKOFS, ctx, &adhoc_storage);
+    ADM_return_t ret =
+            ADM_register_adhoc_storage(server, name, ADM_ADHOC_STORAGE_GEKKOFS,
+                                       ctx, adhoc_resources, &adhoc_storage);
 
     if(ret != ADM_SUCCESS) {
         fprintf(stderr,
diff --git a/examples/c/ADM_transfer_datasets.c b/examples/c/ADM_transfer_datasets.c
index 6f08030235dbca220ef79ddbe7fcedffebb66fce..7b5ce6ce8237959a0fa303a4c88ccac36676c50f 100644
--- a/examples/c/ADM_transfer_datasets.c
+++ b/examples/c/ADM_transfer_datasets.c
@@ -74,8 +74,9 @@ main(int argc, char* argv[]) {
     const char* name = "adhoc_storage_42";
 
     ADM_adhoc_storage_t adhoc_storage;
-    ADM_return_t ret = ADM_register_adhoc_storage(
-            server, name, ADM_ADHOC_STORAGE_GEKKOFS, ctx, &adhoc_storage);
+    ADM_return_t ret =
+            ADM_register_adhoc_storage(server, name, ADM_ADHOC_STORAGE_GEKKOFS,
+                                       ctx, adhoc_resources, &adhoc_storage);
 
     if(ret != ADM_SUCCESS) {
         fprintf(stderr,
diff --git a/examples/c/ADM_update_adhoc_storage.c b/examples/c/ADM_update_adhoc_storage.c
index ee74f4993c200d4e207bf8b8107d9ce6a27e83d5..eee79f24c65edd1ec2231761a4e117c87d27424f 100644
--- a/examples/c/ADM_update_adhoc_storage.c
+++ b/examples/c/ADM_update_adhoc_storage.c
@@ -97,7 +97,8 @@ main(int argc, char* argv[]) {
 
     // 2. Register the adhoc storage
     if(ADM_register_adhoc_storage(server, adhoc_name, ADM_ADHOC_STORAGE_GEKKOFS,
-                                  adhoc_ctx, &adhoc_storage) != ADM_SUCCESS) {
+                                  adhoc_ctx, adhoc_resources,
+                                  &adhoc_storage) != ADM_SUCCESS) {
         fprintf(stderr, "ADM_register_adhoc_storage() failed: %s\n",
                 ADM_strerror(ret));
         goto cleanup;
diff --git a/examples/c/ADM_update_job.c b/examples/c/ADM_update_job.c
index 5e7377be2f0379d4eaa638cfae0b37c4372306b2..1e4f46f7e4b81dcf9ad7ac804efb9e15913aa86e 100644
--- a/examples/c/ADM_update_job.c
+++ b/examples/c/ADM_update_job.c
@@ -71,8 +71,9 @@ main(int argc, char* argv[]) {
     const char* name = "adhoc_storage_42";
 
     ADM_adhoc_storage_t adhoc_storage;
-    ADM_return_t ret = ADM_register_adhoc_storage(
-            server, name, ADM_ADHOC_STORAGE_GEKKOFS, ctx, &adhoc_storage);
+    ADM_return_t ret =
+            ADM_register_adhoc_storage(server, name, ADM_ADHOC_STORAGE_GEKKOFS,
+                                       ctx, adhoc_resources, &adhoc_storage);
 
     if(ret != ADM_SUCCESS) {
         fprintf(stderr,
diff --git a/examples/cxx/ADM_deploy_adhoc_storage.cpp b/examples/cxx/ADM_deploy_adhoc_storage.cpp
index d7a34f302897497f77367e3ff15689f7ca76d788..7cfc53efc0b1e6e413c1fcdbe0ef4ad3e1d7ec60 100644
--- a/examples/cxx/ADM_deploy_adhoc_storage.cpp
+++ b/examples/cxx/ADM_deploy_adhoc_storage.cpp
@@ -52,11 +52,12 @@ main(int argc, char* argv[]) {
             scord::adhoc_storage::execution_mode::separate_new,
             scord::adhoc_storage::access_type::read_write,
             scord::adhoc_storage::resources{adhoc_nodes}, 100, false};
+    const auto adhoc_resources = scord::adhoc_storage::resources{adhoc_nodes};
 
     try {
         const auto adhoc_storage = scord::register_adhoc_storage(
                 server, name, scord::adhoc_storage::type::dataclay,
-                adhoc_storage_ctx);
+                adhoc_storage_ctx, adhoc_resources);
 
         fmt::print(stdout,
                    "ADM_register_adhoc_storage() remote procedure completed "
diff --git a/examples/cxx/ADM_register_adhoc_storage.cpp b/examples/cxx/ADM_register_adhoc_storage.cpp
index 894ccd92a4efd296ca53284730bf6d5698862252..5a21d1065cfcc0143cf26018362c133b55082fae 100644
--- a/examples/cxx/ADM_register_adhoc_storage.cpp
+++ b/examples/cxx/ADM_register_adhoc_storage.cpp
@@ -52,11 +52,12 @@ main(int argc, char* argv[]) {
             scord::adhoc_storage::execution_mode::separate_new,
             scord::adhoc_storage::access_type::read_write,
             scord::adhoc_storage::resources{adhoc_nodes}, 100, false};
+    const auto adhoc_resources = scord::adhoc_storage::resources{adhoc_nodes};
 
     try {
         const auto adhoc_storage = scord::register_adhoc_storage(
                 server, name, scord::adhoc_storage::type::gekkofs,
-                adhoc_storage_ctx);
+                adhoc_storage_ctx, adhoc_resources);
 
         fmt::print(stdout,
                    "ADM_register_adhoc_storage() remote procedure completed "
diff --git a/examples/cxx/ADM_register_job.cpp b/examples/cxx/ADM_register_job.cpp
index 634ed2ba7a0239246c264148cf8579ab4be98ed3..5ac731c40d04e1f65f298c839a0a6c76bc30457e 100644
--- a/examples/cxx/ADM_register_job.cpp
+++ b/examples/cxx/ADM_register_job.cpp
@@ -52,12 +52,13 @@ main(int argc, char* argv[]) {
             scord::adhoc_storage::execution_mode::separate_new,
             scord::adhoc_storage::access_type::read_write,
             scord::adhoc_storage::resources{adhoc_nodes}, 100, false};
+    const auto adhoc_resources = scord::adhoc_storage::resources{adhoc_nodes};
 
     try {
 
         const auto adhoc_storage = scord::register_adhoc_storage(
                 server, name, scord::adhoc_storage::type::gekkofs,
-                adhoc_storage_ctx);
+                adhoc_storage_ctx, adhoc_resources);
 
         scord::job::requirements reqs(inputs, outputs, adhoc_storage);
 
diff --git a/examples/cxx/ADM_remove_adhoc_storage.cpp b/examples/cxx/ADM_remove_adhoc_storage.cpp
index a804e41812e65341a651e3276af35a6c93d8c284..b0c70def0019255a1c4079177c7c219cda18110d 100644
--- a/examples/cxx/ADM_remove_adhoc_storage.cpp
+++ b/examples/cxx/ADM_remove_adhoc_storage.cpp
@@ -52,11 +52,12 @@ main(int argc, char* argv[]) {
             scord::adhoc_storage::execution_mode::separate_new,
             scord::adhoc_storage::access_type::read_write,
             scord::adhoc_storage::resources{adhoc_nodes}, 100, false};
+    const auto adhoc_resources = scord::adhoc_storage::resources{adhoc_nodes};
 
     try {
         const auto adhoc_storage = scord::register_adhoc_storage(
                 server, name, scord::adhoc_storage::type::gekkofs,
-                adhoc_storage_ctx);
+                adhoc_storage_ctx, adhoc_resources);
         scord::remove_adhoc_storage(server, adhoc_storage);
         fmt::print(stdout,
                    "ADM_remove_adhoc_storage() remote procedure completed "
diff --git a/examples/cxx/ADM_remove_job.cpp b/examples/cxx/ADM_remove_job.cpp
index ca3975f6945d80cc914a21bc406f16ce086a0dac..ecdbe165f644f39ccc2aecce9654543e145a4098 100644
--- a/examples/cxx/ADM_remove_job.cpp
+++ b/examples/cxx/ADM_remove_job.cpp
@@ -53,11 +53,13 @@ main(int argc, char* argv[]) {
             scord::adhoc_storage::access_type::read_write,
             scord::adhoc_storage::resources{adhoc_nodes}, 100, false};
 
+    const auto adhoc_resources = scord::adhoc_storage::resources{adhoc_nodes};
+
     try {
 
         const auto adhoc_storage = scord::register_adhoc_storage(
                 server, name, scord::adhoc_storage::type::gekkofs,
-                adhoc_storage_ctx);
+                adhoc_storage_ctx, adhoc_resources);
 
         scord::job::requirements reqs(inputs, outputs, adhoc_storage);
 
diff --git a/examples/cxx/ADM_transfer_datasets.cpp b/examples/cxx/ADM_transfer_datasets.cpp
index 56b5a24cd84da48c52dd00f2bc9d0d8dce97fed2..dcecdf2211942976b5c521a7e78508732085edbb 100644
--- a/examples/cxx/ADM_transfer_datasets.cpp
+++ b/examples/cxx/ADM_transfer_datasets.cpp
@@ -60,11 +60,12 @@ main(int argc, char* argv[]) {
             scord::adhoc_storage::execution_mode::separate_new,
             scord::adhoc_storage::access_type::read_write,
             scord::adhoc_storage::resources{adhoc_nodes}, 100, false};
+    const auto adhoc_resources = scord::adhoc_storage::resources{adhoc_nodes};
 
     try {
         const auto adhoc_storage = scord::register_adhoc_storage(
                 server, name, scord::adhoc_storage::type::gekkofs,
-                adhoc_storage_ctx);
+                adhoc_storage_ctx, adhoc_resources);
 
         scord::job::requirements reqs(inputs, outputs, adhoc_storage);
 
diff --git a/examples/cxx/ADM_update_adhoc_storage.cpp b/examples/cxx/ADM_update_adhoc_storage.cpp
index 62c3a93a39e94682dbc353894e322fd9960dce0c..5ecea6e3047d7f171f795b56098905b021ae9816 100644
--- a/examples/cxx/ADM_update_adhoc_storage.cpp
+++ b/examples/cxx/ADM_update_adhoc_storage.cpp
@@ -52,16 +52,19 @@ main(int argc, char* argv[]) {
             scord::adhoc_storage::execution_mode::separate_new,
             scord::adhoc_storage::access_type::read_write,
             scord::adhoc_storage::resources{adhoc_nodes}, 100, false};
+    const auto adhoc_resources = scord::adhoc_storage::resources{adhoc_nodes};
 
     const auto new_adhoc_storage_ctx = scord::adhoc_storage::ctx{
             scord::adhoc_storage::execution_mode::separate_new,
             scord::adhoc_storage::access_type::read_write,
             scord::adhoc_storage::resources{new_adhoc_nodes}, 200, false};
+    const auto new_adhoc_resources =
+            scord::adhoc_storage::resources{new_adhoc_nodes};
 
     try {
         const auto adhoc_storage = scord::register_adhoc_storage(
                 server, name, scord::adhoc_storage::type::gekkofs,
-                adhoc_storage_ctx);
+                adhoc_storage_ctx, adhoc_resources);
 
         scord::update_adhoc_storage(server, adhoc_storage,
                                     new_adhoc_storage_ctx);
diff --git a/examples/cxx/ADM_update_job.cpp b/examples/cxx/ADM_update_job.cpp
index 581029cc978a590d4a7e0d41d52a3e86c882e255..da68dc30f3429c9aa85dde6cd503aa8018aed316 100644
--- a/examples/cxx/ADM_update_job.cpp
+++ b/examples/cxx/ADM_update_job.cpp
@@ -53,7 +53,8 @@ main(int argc, char* argv[]) {
             scord::adhoc_storage::ctx{
                     scord::adhoc_storage::execution_mode::separate_new,
                     scord::adhoc_storage::access_type::read_write,
-                    scord::adhoc_storage::resources{adhoc_nodes}, 100, false});
+                    scord::adhoc_storage::resources{adhoc_nodes}, 100, false},
+            scord::adhoc_storage::resources{adhoc_nodes});
 
     scord::job::requirements reqs{inputs, outputs, gkfs_storage};
 
diff --git a/src/lib/c_wrapper.cpp b/src/lib/c_wrapper.cpp
index c00d09f38308ffd61bec57620d71d92461d42905..fec3516f836ab0c4a18790b295b24550eed3a09c 100644
--- a/src/lib/c_wrapper.cpp
+++ b/src/lib/c_wrapper.cpp
@@ -112,13 +112,14 @@ ADM_return_t
 ADM_register_adhoc_storage(ADM_server_t server, const char* name,
                            ADM_adhoc_storage_type_t type,
                            ADM_adhoc_context_t ctx,
+                           ADM_adhoc_resources_t resources,
                            ADM_adhoc_storage_t* adhoc_storage) {
 
-    const scord::server srv{server};
-
-    const auto cxx_type = static_cast<enum scord::adhoc_storage::type>(type);
     const auto rv = scord::detail::register_adhoc_storage(
-            srv, name, cxx_type, scord::adhoc_storage::ctx{ctx});
+            scord::server{server}, name,
+            static_cast<enum scord::adhoc_storage::type>(type),
+            scord::adhoc_storage::ctx{ctx},
+            scord::adhoc_storage::resources{resources});
 
     if(!rv) {
         return rv.error();
diff --git a/src/lib/detail/impl.cpp b/src/lib/detail/impl.cpp
index d197fb41566c379ac4d50c8d6bf75e9ffa7ba009..db85beaca63e50cc760b0bc00c4ce1ddaee5da7f 100644
--- a/src/lib/detail/impl.cpp
+++ b/src/lib/detail/impl.cpp
@@ -204,7 +204,8 @@ remove_job(const server& srv, const job& job) {
 tl::expected<scord::adhoc_storage, scord::error_code>
 register_adhoc_storage(const server& srv, const std::string& name,
                        enum adhoc_storage::type type,
-                       const adhoc_storage::ctx& ctx) {
+                       const adhoc_storage::ctx& ctx,
+                       const adhoc_storage::resources& resources) {
 
     scord::network::client rpc_client{srv.protocol()};
 
@@ -215,12 +216,14 @@ register_adhoc_storage(const server& srv, const std::string& name,
         const auto& endp = lookup_rv.value();
 
         LOGGER_INFO("rpc id: {} name: {} from: {} => "
-                    "body: {{name: {}, type: {}, adhoc_ctx: {}}}",
+                    "body: {{name: {}, type: {}, adhoc_ctx: {}, "
+                    "adhoc_resources: {}}}",
                     rpc_id, std::quoted("ADM_"s + __FUNCTION__),
-                    std::quoted(rpc_client.self_address()), name, type, ctx);
+                    std::quoted(rpc_client.self_address()), name, type, ctx,
+                    resources);
 
-        if(const auto& call_rv =
-                   endp.call("ADM_"s + __FUNCTION__, name, type, ctx);
+        if(const auto& call_rv = endp.call("ADM_"s + __FUNCTION__, name, type,
+                                           ctx, resources);
            call_rv.has_value()) {
 
             const scord::network::response_with_id resp{call_rv.value()};
diff --git a/src/lib/detail/impl.hpp b/src/lib/detail/impl.hpp
index d437b944aaa6cc46fbfa312d357da758607cff3a..309d376c0c690a01089212a6105cd51f4112ad9f 100644
--- a/src/lib/detail/impl.hpp
+++ b/src/lib/detail/impl.hpp
@@ -49,7 +49,8 @@ remove_job(const server& srv, const job& job);
 tl::expected<scord::adhoc_storage, scord::error_code>
 register_adhoc_storage(const server& srv, const std::string& name,
                        enum adhoc_storage::type type,
-                       const adhoc_storage::ctx& ctx);
+                       const adhoc_storage::ctx& ctx,
+                       const adhoc_storage::resources& resources);
 
 scord::error_code
 update_adhoc_storage(const server& srv, const adhoc_storage::ctx& new_ctx,
diff --git a/src/lib/libscord.cpp b/src/lib/libscord.cpp
index 39e00510f32428100beaab16d9f8a1692d98ebad..7b517491fb58c9c842e26ba435dc3f73cf35c598 100644
--- a/src/lib/libscord.cpp
+++ b/src/lib/libscord.cpp
@@ -250,9 +250,11 @@ remove_job(const server& srv, const job& job) {
 scord::adhoc_storage
 register_adhoc_storage(const server& srv, const std::string& name,
                        enum adhoc_storage::type type,
-                       const adhoc_storage::ctx& ctx) {
+                       const adhoc_storage::ctx& ctx,
+                       const adhoc_storage::resources& resources) {
 
-    const auto rv = detail::register_adhoc_storage(srv, name, type, ctx);
+    const auto rv =
+            detail::register_adhoc_storage(srv, name, type, ctx, resources);
 
     if(!rv) {
         throw std::runtime_error(
diff --git a/src/lib/scord/scord.h b/src/lib/scord/scord.h
index fcfe881599569f5d7e1a6949e911089a929e66d4..585582b411180ad727cabc618687f297279cc76f 100644
--- a/src/lib/scord/scord.h
+++ b/src/lib/scord/scord.h
@@ -115,6 +115,7 @@ ADM_return_t
 ADM_register_adhoc_storage(ADM_server_t server, const char* name,
                            ADM_adhoc_storage_type_t type,
                            ADM_adhoc_context_t ctx,
+                           ADM_adhoc_resources_t resources,
                            ADM_adhoc_storage_t* adhoc_storage);
 
 /**
diff --git a/src/lib/scord/scord.hpp b/src/lib/scord/scord.hpp
index d3642e2847408b22084c47582e4988b2f6d6a22f..f4fdab60271cbf11ea9225fef7cc1e1de4514c62 100644
--- a/src/lib/scord/scord.hpp
+++ b/src/lib/scord/scord.hpp
@@ -60,7 +60,8 @@ remove_job(const server& srv, const job& job);
 scord::adhoc_storage
 register_adhoc_storage(const server& srv, const std::string& name,
                        enum adhoc_storage::type type,
-                       const adhoc_storage::ctx& ctx);
+                       const adhoc_storage::ctx& ctx,
+                       const adhoc_storage::resources& resources);
 
 void
 update_adhoc_storage(const server& srv, const adhoc_storage& adhoc_storage,
diff --git a/src/scord/rpc_handlers.cpp b/src/scord/rpc_handlers.cpp
index 0f4909fa3c7c531f3a02a58302eaf5d6631cd6db..ac0b2f7c1bac57404ad5448d44d6509fc76e5f76 100644
--- a/src/scord/rpc_handlers.cpp
+++ b/src/scord/rpc_handlers.cpp
@@ -198,7 +198,8 @@ remove_job(const request& req, scord::job_id job_id) {
 void
 register_adhoc_storage(const request& req, const std::string& name,
                        enum scord::adhoc_storage::type type,
-                       const scord::adhoc_storage::ctx& ctx) {
+                       const scord::adhoc_storage::ctx& ctx,
+                       const scord::adhoc_storage::resources& resources) {
 
     using scord::network::get_address;
 
@@ -206,9 +207,10 @@ register_adhoc_storage(const request& req, const std::string& name,
     const auto rpc_id = remote_procedure::new_id();
 
     LOGGER_INFO("rpc id: {} name: {} from: {} => "
-                "body: {{name: {}, type: {}, adhoc_ctx: {}}}",
+                "body: {{name: {}, type: {}, adhoc_ctx: {}, "
+                "adhoc_resources: {}}}",
                 rpc_id, std::quoted(rpc_name), std::quoted(get_address(req)),
-                name, type, ctx);
+                name, type, ctx, resources);
 
     scord::error_code ec;
     std::optional<std::uint64_t> adhoc_id;
diff --git a/src/scord/rpc_handlers.hpp b/src/scord/rpc_handlers.hpp
index 94d84aebab169a3cc8396d3af98e4065ef07deda..279929a5b49967af63fa3cec2561536099b9966b 100644
--- a/src/scord/rpc_handlers.hpp
+++ b/src/scord/rpc_handlers.hpp
@@ -50,7 +50,8 @@ remove_job(const request& req, scord::job_id job_id);
 void
 register_adhoc_storage(const request& req, const std::string& name,
                        enum scord::adhoc_storage::type type,
-                       const scord::adhoc_storage::ctx& ctx);
+                       const scord::adhoc_storage::ctx& ctx,
+                       const scord::adhoc_storage::resources& resources);
 void
 update_adhoc_storage(const request& req, std::uint64_t adhoc_id,
                      const scord::adhoc_storage::ctx& new_ctx);