diff --git a/CHANGELOG.md b/CHANGELOG.md
index d0d25bfe..b5881296 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -24,6 +24,8 @@ will consitute of a breaking change warranting a new major release:
 
 ## Fixed
 
+- The firmware information event was not triggered even when possible because of an ordering
+  bug in the initializer function.
 - Empty dumps (no TM in time range) will now correctly be completed immediately
 
 ## Changed
diff --git a/bsp_q7s/core/CoreController.cpp b/bsp_q7s/core/CoreController.cpp
index 4387e788..cea6c700 100644
--- a/bsp_q7s/core/CoreController.cpp
+++ b/bsp_q7s/core/CoreController.cpp
@@ -170,9 +170,6 @@ ReturnValue_t CoreController::initialize() {
 
   sdStateMachine();
 
-  triggerEvent(core::REBOOT_SW, CURRENT_CHIP, CURRENT_COPY);
-  announceCurrentImageInfo();
-  announceVersionInfo();
   EventManagerIF *eventManager =
       ObjectManager::instance()->get<EventManagerIF>(objects::EVENT_MANAGER);
   if (eventManager == nullptr or eventQueue == nullptr) {
@@ -189,17 +186,22 @@ ReturnValue_t CoreController::initialize() {
   if (result != returnvalue::OK) {
     sif::warning << "Subscribing for GPS GPS_FIX_CHANGE event failed" << std::endl;
   }
-
+  triggerEvent(core::REBOOT_SW, CURRENT_CHIP, CURRENT_COPY);
+  announceCurrentImageInfo();
+  // This has to come before the version announce because it might be required for retrieving
+  // the firmware version.
   if (common::OBSW_VERSION_MAJOR >= 6 or common::OBSW_VERSION_MAJOR == 4) {
     UioMapper sysRomMapper(q7s::UIO_SYS_ROM);
     result = sysRomMapper.getMappedAdress(&mappedSysRomAddr, UioMapper::Permissions::READ_ONLY);
     if (result != returnvalue::OK) {
       // TODO: This might be a reason to switch to another image..
       sif::error << "Getting mapped SYS ROM UIO address failed" << std::endl;
-      return ObjectManager::CHILD_INIT_FAILED;
+      result = ObjectManager::CHILD_INIT_FAILED;
     }
   }
-  return returnvalue::OK;
+  announceVersionInfo();
+
+  return result;
 }
 
 ReturnValue_t CoreController::initializeAfterTaskCreation() {