diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2e14f7fe10f2d388bfa30f1fd319e6512fee7ae4..691cb4aaa8c8ac259cea2f86d8dfd6c53d3f8009 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1895,6 +1895,7 @@ set(libnrnas_emm_msg_OBJS
   ${NAS_SRC}COMMON/EMM/MSG/FGSUplinkNasTransport.c
   ${NAS_SRC}COMMON/ESM/MSG/PduSessionEstablishRequest.c
   ${NAS_SRC}COMMON/ESM/MSG/PduSessionEstablishmentAccept.c
+  ${NAS_SRC}COMMON/EMM/MSG/FGSDeregistrationRequestUEOriginating.c
   )
 
 set(libnrnas_ies_OBJS
diff --git a/openair3/NAS/COMMON/EMM/MSG/FGSDeregistrationRequestUEOriginating.c b/openair3/NAS/COMMON/EMM/MSG/FGSDeregistrationRequestUEOriginating.c
new file mode 100644
index 0000000000000000000000000000000000000000..0d9a4bbac221c40707dcac858b86488724f26503
--- /dev/null
+++ b/openair3/NAS/COMMON/EMM/MSG/FGSDeregistrationRequestUEOriginating.c
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
+
+/*! \file RegistrationRequest.c
+ * \brief registration request procedures for gNB
+ * \author Yoshio INOUE, Masayuki HARADA
+ * \email yoshio.inoue@fujitsu.com,masayuki.harada@fujitsu.com
+ * \date 2020
+ * \version 0.1
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+
+#include "FGSDeregistrationRequestUEOriginating.h"
+
+int encode_fgs_deregistration_request_ue_originating(fgs_deregistration_request_ue_originating_msg *drr,
+                                                     uint8_t *buffer,
+                                                     uint32_t len)
+{
+  int encoded = 0;
+  FGSDeregistrationType *dt = &drr->deregistrationtype;
+  *(buffer + encoded) = ((dt->switchoff & 0x1) << 7)
+                      | ((dt->reregistration_required & 0x1) << 6)
+                      | ((dt->access_type & 0x3) << 4);
+
+  int encode_result;
+  if ((encode_result = encode_nas_key_set_identifier(&drr->naskeysetidentifier, 0, buffer + encoded, len - encoded)) < 0)
+    return encode_result;
+
+  encoded++;
+
+  if ((encode_result = encode_5gs_mobile_identity(&drr->fgsmobileidentity, 0, buffer + encoded, len - encoded)) < 0)
+    return encode_result;
+  else
+    encoded += encode_result;
+
+  return encoded;
+}
diff --git a/openair3/NAS/COMMON/EMM/MSG/FGSDeregistrationRequestUEOriginating.h b/openair3/NAS/COMMON/EMM/MSG/FGSDeregistrationRequestUEOriginating.h
new file mode 100644
index 0000000000000000000000000000000000000000..2bccd8a5bd80d60f88300df8c386bd4cd34d664c
--- /dev/null
+++ b/openair3/NAS/COMMON/EMM/MSG/FGSDeregistrationRequestUEOriginating.h
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
+
+#ifndef FGS_DEREGISTRATION_REQUEST_UE_ORIGINATING_H_
+#define FGS_DEREGISTRATION_REQUEST_UE_ORIGINATING_H_
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdint.h>
+
+#include "ExtendedProtocolDiscriminator.h"
+#include "SecurityHeaderType.h"
+#include "SpareHalfOctet.h"
+#include "MessageType.h"
+#include "FGSDeregistrationType.h"
+#include "NasKeySetIdentifier.h"
+#include "FGSMobileIdentity.h"
+
+/*
+ * Message name: De-registration request (UE originating de-registration)
+ * Description: This message is sent by the UE to the AMF. See TS24.501 table 8.2.12.1.1.
+ * Significance: dual
+ * Direction: UE to network
+ */
+
+typedef struct fgs_deregistration_request_ue_originating_msg_tag {
+  /* Mandatory fields */
+  ExtendedProtocolDiscriminator protocoldiscriminator;
+  SecurityHeaderType securityheadertype: 4;
+  SpareHalfOctet sparehalfoctet: 4;
+  MessageType messagetype;
+  FGSDeregistrationType deregistrationtype;
+  NasKeySetIdentifier naskeysetidentifier;
+  FGSMobileIdentity fgsmobileidentity;
+} fgs_deregistration_request_ue_originating_msg;
+
+int encode_fgs_deregistration_request_ue_originating(fgs_deregistration_request_ue_originating_msg *registrationrequest,
+                                                     uint8_t *buffer,
+                                                     uint32_t len);
+
+#endif /* ! defined(REGISTRATION_REQUEST_H_) */
+
diff --git a/openair3/NAS/COMMON/IES/FGSDeregistrationType.h b/openair3/NAS/COMMON/IES/FGSDeregistrationType.h
new file mode 100644
index 0000000000000000000000000000000000000000..84a09657d40c89ef456fddee9e51eb0f5319bd4a
--- /dev/null
+++ b/openair3/NAS/COMMON/IES/FGSDeregistrationType.h
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The OpenAirInterface Software Alliance licenses this file to You under
+ * the OAI Public License, Version 1.1  (the "License"); you may not use this file
+ * except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.openairinterface.org/?page_id=698
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *-------------------------------------------------------------------------------
+ * For more information about the OpenAirInterface (OAI) Software Alliance:
+ *      contact@openairinterface.org
+ */
+
+#ifndef FGS_DEREGISTRATION_TYPE_H_
+#define FGS_DEREGISTRATION_TYPE_H_
+
+#include <stdint.h>
+#include "OctetString.h"
+
+#define FGS_DEREGISTRATION_TYPE_MINIMUM_LENGTH 1
+#define FGS_DEREGISTRATION_TYPE_MAXIMUM_LENGTH 1
+
+typedef struct FGSDeregistrationType_tag {
+#define NORMAL_DEREGISTRATION 0
+#define SWITCH_OFF 1
+  uint8_t switchoff: 1;
+#define REREGISTRATION_NOT_REQUIRED 0
+#define REREGISTRATION_REQUIRED 1
+  uint8_t reregistration_required: 1;
+#define TGPP_ACCESS 1
+#define NON_TGPP_ACCESS 2
+#define TGPP_AND_NON_TGPP_ACCESS 3
+  uint8_t access_type: 2;
+} FGSDeregistrationType;
+
+int encode_fgs_deregistration_type(FGSDeregistrationType *dt, uint8_t iei, uint8_t *buffer, uint32_t len);
+
+#endif /* FGS_DEREGISTRATION_TYPE_H_ */