diff --git a/src/oai_pcf/main.cpp b/src/oai_pcf/main.cpp
index 369c395b6b9c710831a479f8fd8d9d654713f300..27dc594c7873e0ba1a390ef583be33bfa1447e9f 100644
--- a/src/oai_pcf/main.cpp
+++ b/src/oai_pcf/main.cpp
@@ -64,6 +64,9 @@ void my_app_signal_handler(int s) {
   if (pcf_api_server_2) {
     pcf_api_server_2->stop();
   }
+  if (pcf_app_inst) {
+    pcf_app_inst->stop();
+  }
 }
 //------------------------------------------------------------------------------
 // We are doing a check to see if an existing process already runs this program.
diff --git a/src/pcf_app/pcf_app.cpp b/src/pcf_app/pcf_app.cpp
index 2a11ae49e6b0b19b9aad37b55a73fe3dcccef86f..d785cf34c5d5be292a19d2893c9906d4b2c6dec1 100644
--- a/src/pcf_app/pcf_app.cpp
+++ b/src/pcf_app/pcf_app.cpp
@@ -77,4 +77,10 @@ pcf_app::~pcf_app() {
 
 std::shared_ptr<pcf_smpc> pcf_app::get_pcf_smpc_service() {
   return pcf_smpc_service;
+}
+
+void pcf_app::stop() {
+  if (pcf_nrf_inst) {
+    pcf_nrf_inst->deregister_to_nrf();
+  }
 }
\ No newline at end of file
diff --git a/src/pcf_app/pcf_app.hpp b/src/pcf_app/pcf_app.hpp
index 15cbac2c523e76ccaa363c7a26d335e3de6a4816..2bea9c30b228746b55c615a929a36f6d25b2b51d 100644
--- a/src/pcf_app/pcf_app.hpp
+++ b/src/pcf_app/pcf_app.hpp
@@ -57,6 +57,12 @@ class pcf_app {
 
   std::shared_ptr<pcf_smpc> get_pcf_smpc_service();
 
+  /**
+   * Stops all the ongoing processes and procedures of the PCF APP layer,
+   * deregisters at NRF
+   */
+  void stop();
+
  private:
   pcf_profile nf_instance_profile;  // PCF profile
   std::string pcf_instance_id;      // PCF instance id
diff --git a/src/pcf_app/pcf_nrf.cpp b/src/pcf_app/pcf_nrf.cpp
index 95d576f04e15843dd04b2a78a138453b39acc340..71d8d87120f7043ce7696c1b06697c312bb536d6 100644
--- a/src/pcf_app/pcf_nrf.cpp
+++ b/src/pcf_app/pcf_nrf.cpp
@@ -203,3 +203,21 @@ void pcf_nrf::trigger_nf_heartbeat_procedure(uint64_t ms) {
 pcf_nrf::~pcf_nrf() {
   Logger::pcf_sbi().debug("Delete PCF_NRF instance...");
 }
+
+//------------------------------------------------------------------------------
+void pcf_nrf::deregister_to_nrf() {
+  std::string body_response;
+  std::string response_header;
+
+  Logger::pcf_sbi().info("Sending NF de-registration request");
+
+  http_response_codes_e res =
+      pcf_client_inst->send_delete(nrf_url, body_response, response_header);
+
+  if (res != http_response_codes_e::HTTP_RESPONSE_CODE_NO_CONTENT) {
+    Logger::pcf_sbi().warn(
+        "NF Deregistration failed! Wrong response code: %d", res);
+  } else {
+    Logger::pcf_sbi().info("NF Deregistration successful");
+  }
+}