diff --git a/src/ca-module.cpp b/src/ca-module.cpp
index edd61dc..6b93ee4 100644
--- a/src/ca-module.cpp
+++ b/src/ca-module.cpp
@@ -35,9 +35,19 @@
   : m_face(face)
   , m_keyChain(keyChain)
 {
+  // load the config and create storage
   m_config.load(configPath);
   m_storage = CaStorage::createCaStorage(storageType);
 
+  // set default handler and callback
+  m_probeHandler = [&] (const std::string& probeInfo) {
+    return probeInfo;
+  };
+  m_requestUpdateCallback = [&] (const CertificateRequest& CertRequest) {
+    // do nothing
+  };
+
+  // register prefix
   for (const auto& item : m_config.m_caItems) {
     Name prefix = item.m_caName;
     prefix.append("CA");
@@ -131,6 +141,7 @@
   }
   std::string requestId = std::to_string(random::generateWord64());
   CertificateRequest certRequest(caItem.m_caName, requestId, clientCert);
+  certRequest.setStatus(ChallengeModule::WAIT_SELECTION);
   try {
     m_storage->addRequest(certRequest);
   }
@@ -141,11 +152,12 @@
 
   Data result;
   result.setName(request.getName());
-  result.setContent(dataContentFromJson(genResponseNewJson(requestId,
-                                                           ChallengeModule::WAIT_SELECTION,
+  result.setContent(dataContentFromJson(genResponseNewJson(requestId, certRequest.getStatus(),
                                                            caItem.m_supportedChallenges)));
   m_keyChain.sign(result, signingByCertificate(caItem.m_anchor));
   m_face.put(result);
+
+  m_requestUpdateCallback(certRequest);
 }
 
 void
@@ -193,6 +205,8 @@
   result.setContent(dataContentFromJson(contentJson));
   m_keyChain.sign(result, signingByCertificate(caItem.m_anchor));
   m_face.put(result);
+
+  m_requestUpdateCallback(certRequest);
 }
 
 void
@@ -233,6 +247,8 @@
   m_keyChain.sign(result, signingByCertificate(caItem.m_anchor));
   m_face.put(result);
 
+  m_requestUpdateCallback(certRequest);
+
   if (certRequest.getStatus() == ChallengeModule::SUCCESS) {
     issueCertificate(certRequest, caItem);
   }
diff --git a/src/ca-module.hpp b/src/ca-module.hpp
index 39597e9..0e768da 100644
--- a/src/ca-module.hpp
+++ b/src/ca-module.hpp
@@ -47,6 +47,11 @@
    */
   using ProbeHandler = function<std::string (const std::string&)>;
 
+  /**
+   * @brief The function would be invoked whenever the certificate request gets update
+   */
+  using RequestUpdateCallback = function<void (const CertificateRequest&)>;
+
 public:
   CaModule(Face& face, security::v2::KeyChain& keyChain, const std::string& configPath,
            const std::string& storageType = "ca-storage-sqlite3");
@@ -71,6 +76,12 @@
     m_probeHandler = handler;
   }
 
+  void
+  setRequestUpdateCallback(const RequestUpdateCallback& onUpateCallback)
+  {
+    m_requestUpdateCallback = onUpateCallback;
+  }
+
 PUBLIC_WITH_TESTS_ELSE_PRIVATE:
   void
   handleProbe(const Interest& request, const CaItem& caItem);
@@ -105,13 +116,14 @@
   static Block
   dataContentFromJson(const JsonSection& jsonSection);
 
-PUBLIC_WITH_TESTS_ELSE_PROTECTED:
+PUBLIC_WITH_TESTS_ELSE_PRIVATE:
   Face& m_face;
   CaConfig m_config;
   unique_ptr<CaStorage> m_storage;
   security::v2::KeyChain& m_keyChain;
 
   ProbeHandler m_probeHandler;
+  RequestUpdateCallback m_requestUpdateCallback;
   std::list<const RegisteredPrefixId*> m_registeredPrefixIds;
   std::list<const InterestFilterId*> m_interestFilterIds;
 };
