diff --git a/maestro/subscription_registry.c b/maestro/subscription_registry.c
index 7e4f520eb52305ce8455cbf7cbc384c57d173aac..db4402a3d2912abf35f85155a9dc6fa8e5b594da 100644
--- a/maestro/subscription_registry.c
+++ b/maestro/subscription_registry.c
@@ -7,6 +7,8 @@
 #include "maestro/i_misc.h"
 #include "i_event.h"
 #include "maestro/i_cdo.h"
+#include "maestro/cdo.h"
+
 
 #include "attributes/maestro-schema.h"
 
@@ -1896,23 +1898,14 @@ mstro_pool_event_consume(const Mstro__Pool__Event *eventmsg)
              && eventmsg->origin_id->id!=MSTRO_APP_ID_INVALID);
       assert(eventmsg->offer->cdoid!=NULL);
       ev->offer.appid = eventmsg->origin_id->id;
-      {
-        WARN("FIXME: Missing CDO resolver, returning ID string\n");
-        struct mstro_cdo_id id = {.qw[0] = eventmsg->offer->cdoid->qw0,
-                                  .qw[1] = eventmsg->offer->cdoid->qw1 };
-
-        WITH_CDO_ID_STR(idstr, &id, {
-            ev->offer.cdo_name = strdup(idstr);
-          });
-        if(ev->offer.cdo_name == NULL) {
-          ERR("Failed to allocate event data\n");
-          free(ev);
-          return MSTRO_NOMEM;
-        }
-
-        DEBUG("Event: OFFER for |%s| from %" PRIu64 "\n",
+      const char* cdo_name;
+      cdo_name = malloc(MSTRO_CDO_NAME_MAX);
+      assert(cdo_name!=NULL);
+      mstro_status s = mstro__subscr_resolver_lookup_cdoid(
+                         (struct mstro_cdo_id*)eventmsg->offer->cdoid, &cdo_name);
+      ev->offer.cdo_name = (char*)cdo_name;
+      DEBUG("Event: OFFER for |%s| from %" PRIu64 "\n",
               ev->offer.cdo_name, ev->offer.appid);
-      }
       break;
       
     case MSTRO_POOL_EVENT_SEAL:
diff --git a/tests/simple_archiver.c b/tests/simple_archiver.c
index 6e9a2528675196a2fcdf90bad5b251cd7f3fd924..1bf74c66d8330495b876358186c10691e265f87f 100644
--- a/tests/simple_archiver.c
+++ b/tests/simple_archiver.c
@@ -147,6 +147,7 @@ CHEAT_TEST(simple_archiver,
                    switch(tmp->kind) {
                      case MSTRO_POOL_EVENT_OFFER:
                        /* FIXME: Immediately post a REQUIRE for it */
+                       fprintf(stderr, "Spotted an OFFER for CDO (`%s`)\n", e->offer.cdo_name);
 
                      case MSTRO_POOL_EVENT_DECLARE:
                      case MSTRO_POOL_EVENT_DISPOSE: