diff --git a/openair-cn/NAS/EURECOM-NAS/src/emm/msg/AttachRequest.c b/openair-cn/NAS/EURECOM-NAS/src/emm/msg/AttachRequest.c
index c5ecc4d540cd65d6d11980b0a980218973f36259..ab1ccf0ae231e79927ffe8aa2746a0df8c6995aa 100644
--- a/openair-cn/NAS/EURECOM-NAS/src/emm/msg/AttachRequest.c
+++ b/openair-cn/NAS/EURECOM-NAS/src/emm/msg/AttachRequest.c
@@ -235,11 +235,11 @@ int decode_attach_request(attach_request_msg *attach_request, uint8_t *buffer, u
                 attach_request->presencemask |= ATTACH_REQUEST_ADDITIONAL_UPDATE_TYPE_PRESENT;
                 break;
 
-	    case ATTACH_REQUEST_OLD_GUTI_TYPE_IEI:
-		if ((decoded_result =
-		     decode_guti_type(&attach_request->oldgutitype,
-				      ATTACH_REQUEST_OLD_GUTI_TYPE_IEI,
-				      buffer + decoded, len - decoded)) <= 0)
+            case ATTACH_REQUEST_OLD_GUTI_TYPE_IEI:
+                if ((decoded_result =
+                        decode_guti_type(&attach_request->oldgutitype,
+                                ATTACH_REQUEST_OLD_GUTI_TYPE_IEI,
+                                buffer + decoded, len - decoded)) <= 0)
                 {
                     //         return decoded_result;
                     LOG_FUNC_RETURN(decoded_result);
@@ -247,7 +247,22 @@ int decode_attach_request(attach_request_msg *attach_request, uint8_t *buffer, u
                 decoded += decoded_result;
                 /* Set corresponding mask to 1 in presencemask */
                 attach_request->presencemask |= ATTACH_REQUEST_OLD_GUTI_TYPE_PRESENT;
-		break;
+                break;
+
+            case ATTACH_REQUEST_VOICE_DOMAIN_PREFERENCE_AND_UE_USAGE_SETTING_IEI:
+                if ((decoded_result =
+                        decode_voice_domain_preference_and_ue_usage_setting(&attach_request->voicedomainpreferenceandueusagesetting,
+                                ATTACH_REQUEST_VOICE_DOMAIN_PREFERENCE_AND_UE_USAGE_SETTING_IEI,
+                                buffer + decoded, len - decoded)) <= 0)
+                {
+                    //         return decoded_result;
+                    LOG_FUNC_RETURN(decoded_result);
+                }
+                decoded += decoded_result;
+                /* Set corresponding mask to 1 in presencemask */
+                attach_request->presencemask |= ATTACH_REQUEST_VOICE_DOMAIN_PREFERENCE_AND_UE_USAGE_SETTING_PRESENT;
+                break;
+
 
             default:
                 errorCodeDecoder = TLV_DECODE_UNEXPECTED_IEI;
@@ -437,14 +452,27 @@ int encode_attach_request(attach_request_msg *attach_request, uint8_t *buffer, u
      if ((attach_request->presencemask & ATTACH_REQUEST_OLD_GUTI_TYPE_PRESENT)
         == ATTACH_REQUEST_OLD_GUTI_TYPE_PRESENT)
      {
-	 if ((encode_result =
-	      encode_guti_type(&attach_request->oldgutitype,
-			       ATTACH_REQUEST_OLD_GUTI_TYPE_IEI,
-			       buffer + encoded, len - encoded)) < 0)
-	     // Return in case of error
-	     return encode_result;
-	 else
-	     encoded += encode_result;
+         if ((encode_result =
+                 encode_guti_type(&attach_request->oldgutitype,
+                         ATTACH_REQUEST_OLD_GUTI_TYPE_IEI,
+                         buffer + encoded, len - encoded)) < 0)
+             // Return in case of error
+             return encode_result;
+         else
+             encoded += encode_result;
+     }
+
+     if ((attach_request->presencemask & ATTACH_REQUEST_VOICE_DOMAIN_PREFERENCE_AND_UE_USAGE_SETTING_PRESENT)
+        == ATTACH_REQUEST_VOICE_DOMAIN_PREFERENCE_AND_UE_USAGE_SETTING_PRESENT)
+     {
+         if ((encode_result =
+                 encode_voice_domain_preference_and_ue_usage_setting(&attach_request->voicedomainpreferenceandueusagesetting,
+                         ATTACH_REQUEST_VOICE_DOMAIN_PREFERENCE_AND_UE_USAGE_SETTING_IEI,
+                         buffer + encoded, len - encoded)) < 0)
+             // Return in case of error
+             return encode_result;
+         else
+             encoded += encode_result;
      }
 
    return encoded;
diff --git a/openair-cn/NAS/EURECOM-NAS/src/emm/msg/AttachRequest.h b/openair-cn/NAS/EURECOM-NAS/src/emm/msg/AttachRequest.h
index 076dcf675bf36fc60a766e5215c0b95e35b210c5..fee1473d77b09161e63206ed28ce5000971eca00 100644
--- a/openair-cn/NAS/EURECOM-NAS/src/emm/msg/AttachRequest.h
+++ b/openair-cn/NAS/EURECOM-NAS/src/emm/msg/AttachRequest.h
@@ -49,6 +49,7 @@
 #include "SupportedCodecList.h"
 #include "AdditionalUpdateType.h"
 #include "GutiType.h"
+#include "VoiceDomainPreferenceAndUeUsageSetting.h"
 
 #ifndef ATTACH_REQUEST_H_
 #define ATTACH_REQUEST_H_
@@ -84,32 +85,34 @@
 /* If an optional value is present and should be encoded, the corresponding
  * Bit mask should be set to 1.
  */
-# define ATTACH_REQUEST_OLD_PTMSI_SIGNATURE_PRESENT              (1<<0)
-# define ATTACH_REQUEST_ADDITIONAL_GUTI_PRESENT                  (1<<1)
-# define ATTACH_REQUEST_LAST_VISITED_REGISTERED_TAI_PRESENT      (1<<2)
-# define ATTACH_REQUEST_DRX_PARAMETER_PRESENT                    (1<<3)
-# define ATTACH_REQUEST_MS_NETWORK_CAPABILITY_PRESENT            (1<<4)
-# define ATTACH_REQUEST_OLD_LOCATION_AREA_IDENTIFICATION_PRESENT (1<<5)
-# define ATTACH_REQUEST_TMSI_STATUS_PRESENT                      (1<<6)
-# define ATTACH_REQUEST_MOBILE_STATION_CLASSMARK_2_PRESENT       (1<<7)
-# define ATTACH_REQUEST_MOBILE_STATION_CLASSMARK_3_PRESENT       (1<<8)
-# define ATTACH_REQUEST_SUPPORTED_CODECS_PRESENT                 (1<<9)
-# define ATTACH_REQUEST_ADDITIONAL_UPDATE_TYPE_PRESENT           (1<<10)
-# define ATTACH_REQUEST_OLD_GUTI_TYPE_PRESENT                    (1<<11)
+# define ATTACH_REQUEST_OLD_PTMSI_SIGNATURE_PRESENT                           (1<<0)
+# define ATTACH_REQUEST_ADDITIONAL_GUTI_PRESENT                               (1<<1)
+# define ATTACH_REQUEST_LAST_VISITED_REGISTERED_TAI_PRESENT                   (1<<2)
+# define ATTACH_REQUEST_DRX_PARAMETER_PRESENT                                 (1<<3)
+# define ATTACH_REQUEST_MS_NETWORK_CAPABILITY_PRESENT                         (1<<4)
+# define ATTACH_REQUEST_OLD_LOCATION_AREA_IDENTIFICATION_PRESENT              (1<<5)
+# define ATTACH_REQUEST_TMSI_STATUS_PRESENT                                   (1<<6)
+# define ATTACH_REQUEST_MOBILE_STATION_CLASSMARK_2_PRESENT                    (1<<7)
+# define ATTACH_REQUEST_MOBILE_STATION_CLASSMARK_3_PRESENT                    (1<<8)
+# define ATTACH_REQUEST_SUPPORTED_CODECS_PRESENT                              (1<<9)
+# define ATTACH_REQUEST_ADDITIONAL_UPDATE_TYPE_PRESENT                        (1<<10)
+# define ATTACH_REQUEST_OLD_GUTI_TYPE_PRESENT                                 (1<<11)
+# define ATTACH_REQUEST_VOICE_DOMAIN_PREFERENCE_AND_UE_USAGE_SETTING_PRESENT  (1<<12)
 
 typedef enum attach_request_iei_tag {
-    ATTACH_REQUEST_OLD_PTMSI_SIGNATURE_IEI               = 0x19, /* 0x19 = 25 */
-    ATTACH_REQUEST_ADDITIONAL_GUTI_IEI                   = 0x50, /* 0x50 = 80 */
-    ATTACH_REQUEST_LAST_VISITED_REGISTERED_TAI_IEI       = 0x52, /* 0x52 = 82 */
-    ATTACH_REQUEST_DRX_PARAMETER_IEI                     = 0x5C, /* 0x5C = 92 */
-    ATTACH_REQUEST_MS_NETWORK_CAPABILITY_IEI             = 0x31, /* 0x31 = 49 */
-    ATTACH_REQUEST_OLD_LOCATION_AREA_IDENTIFICATION_IEI  = 0x13, /* 0x13 = 19 */
-    ATTACH_REQUEST_TMSI_STATUS_IEI                       = 0x90, /* 0x90 = 144 */
-    ATTACH_REQUEST_MOBILE_STATION_CLASSMARK_2_IEI        = 0x11, /* 0x11 = 17 */
-    ATTACH_REQUEST_MOBILE_STATION_CLASSMARK_3_IEI        = 0x20, /* 0x20 = 32 */
-    ATTACH_REQUEST_SUPPORTED_CODECS_IEI                  = 0x40, /* 0x40 = 64 */
-    ATTACH_REQUEST_ADDITIONAL_UPDATE_TYPE_IEI            = 0xF0, /* 0xF0 = 240 */
-    ATTACH_REQUEST_OLD_GUTI_TYPE_IEI                     = 0xE0, /* 0xE0 = 224 */
+    ATTACH_REQUEST_OLD_PTMSI_SIGNATURE_IEI                          = 0x19, /* 0x19 = 25  */
+    ATTACH_REQUEST_ADDITIONAL_GUTI_IEI                              = 0x50, /* 0x50 = 80  */
+    ATTACH_REQUEST_LAST_VISITED_REGISTERED_TAI_IEI                  = 0x52, /* 0x52 = 82  */
+    ATTACH_REQUEST_DRX_PARAMETER_IEI                                = 0x5C, /* 0x5C = 92  */
+    ATTACH_REQUEST_MS_NETWORK_CAPABILITY_IEI                        = 0x31, /* 0x31 = 49  */
+    ATTACH_REQUEST_OLD_LOCATION_AREA_IDENTIFICATION_IEI             = 0x13, /* 0x13 = 19  */
+    ATTACH_REQUEST_TMSI_STATUS_IEI                                  = 0x90, /* 0x90 = 144 */
+    ATTACH_REQUEST_MOBILE_STATION_CLASSMARK_2_IEI                   = 0x11, /* 0x11 = 17  */
+    ATTACH_REQUEST_MOBILE_STATION_CLASSMARK_3_IEI                   = 0x20, /* 0x20 = 32  */
+    ATTACH_REQUEST_SUPPORTED_CODECS_IEI                             = 0x40, /* 0x40 = 64  */
+    ATTACH_REQUEST_ADDITIONAL_UPDATE_TYPE_IEI                       = 0xF0, /* 0xF0 = 240 */
+    ATTACH_REQUEST_OLD_GUTI_TYPE_IEI                                = 0xE0, /* 0xE0 = 224 */
+    ATTACH_REQUEST_VOICE_DOMAIN_PREFERENCE_AND_UE_USAGE_SETTING_IEI = 0x5D, /* 0x5D = 93  */
 } attach_request_iei;
 
 /*
@@ -121,28 +124,29 @@ typedef enum attach_request_iei_tag {
 
 typedef struct attach_request_msg_tag {
     /* Mandatory fields */
-    ProtocolDiscriminator         protocoldiscriminator:4;
-    SecurityHeaderType            securityheadertype:4;
-    MessageType                   messagetype;
-    EpsAttachType                 epsattachtype;
-    NasKeySetIdentifier           naskeysetidentifier;
-    EpsMobileIdentity             oldgutiorimsi;
-    UeNetworkCapability           uenetworkcapability;
-    EsmMessageContainer           esmmessagecontainer;
+    ProtocolDiscriminator                   protocoldiscriminator:4;
+    SecurityHeaderType                      securityheadertype:4;
+    MessageType                             messagetype;
+    EpsAttachType                           epsattachtype;
+    NasKeySetIdentifier                     naskeysetidentifier;
+    EpsMobileIdentity                       oldgutiorimsi;
+    UeNetworkCapability                     uenetworkcapability;
+    EsmMessageContainer                     esmmessagecontainer;
     /* Optional fields */
-    uint32_t                      presencemask;
-    PTmsiSignature                oldptmsisignature;
-    EpsMobileIdentity             additionalguti;
-    TrackingAreaIdentity          lastvisitedregisteredtai;
-    DrxParameter                  drxparameter;
-    MsNetworkCapability           msnetworkcapability;
-    LocationAreaIdentification    oldlocationareaidentification;
-    TmsiStatus                    tmsistatus;
-    MobileStationClassmark2       mobilestationclassmark2;
-    MobileStationClassmark3       mobilestationclassmark3;
-    SupportedCodecList            supportedcodecs;
-    AdditionalUpdateType          additionalupdatetype;
-    GutiType                      oldgutitype;
+    uint32_t                                presencemask;
+    PTmsiSignature                          oldptmsisignature;
+    EpsMobileIdentity                       additionalguti;
+    TrackingAreaIdentity                    lastvisitedregisteredtai;
+    DrxParameter                            drxparameter;
+    MsNetworkCapability                     msnetworkcapability;
+    LocationAreaIdentification              oldlocationareaidentification;
+    TmsiStatus                              tmsistatus;
+    MobileStationClassmark2                 mobilestationclassmark2;
+    MobileStationClassmark3                 mobilestationclassmark3;
+    SupportedCodecList                      supportedcodecs;
+    AdditionalUpdateType                    additionalupdatetype;
+    GutiType                                oldgutitype;
+    VoiceDomainPreferenceAndUeUsageSetting  voicedomainpreferenceandueusagesetting;
 } attach_request_msg;
 
 int decode_attach_request(attach_request_msg *attachrequest, uint8_t *buffer, uint32_t len);
diff --git a/openair-cn/NAS/Makefile.UE b/openair-cn/NAS/Makefile.UE
index 9d97e83c526c54b28d7ede7ed63f2ad8f4c9a359..09b96b3ab294594bae176df3db27f8888bf22b20 100644
--- a/openair-cn/NAS/Makefile.UE
+++ b/openair-cn/NAS/Makefile.UE
@@ -255,7 +255,8 @@ libnas_ies_OBJS =													\
     EURECOM-NAS/src/ies/EpsNetworkFeatureSupport.o					\
     EURECOM-NAS/src/ies/SsCode.o									\
     EURECOM-NAS/src/ies/DrxParameter.o								\
-    EURECOM-NAS/src/ies/KsiAndSequenceNumber.o
+    EURECOM-NAS/src/ies/KsiAndSequenceNumber.o						\
+    EURECOM-NAS/src/ies/VoiceDomainPreferenceAndUeUsageSetting.o
 
 libnas_utils_OBJS =								\
     EURECOM-NAS/src/util/device.o				\
diff --git a/openair-cn/NAS/Makefile.inc b/openair-cn/NAS/Makefile.inc
index 82ad2daf001bc91e23a4c50f5c00d1b59b45dec2..d4518ae5738799c782b09aed80c89ecfc10e30a5 100644
--- a/openair-cn/NAS/Makefile.inc
+++ b/openair-cn/NAS/Makefile.inc
@@ -393,8 +393,10 @@ libnas_ies_SRCS =													\
     EURECOM-NAS/src/ies/TmsiStatus.h								\
     EURECOM-NAS/src/ies/CipheringKeySequenceNumber.h				\
     EURECOM-NAS/src/ies/ApnAggregateMaximumBitRate.h				\
-    EURECOM-NAS/src/ies/EpsNetworkFeatureSupport.h
-
+    EURECOM-NAS/src/ies/EpsNetworkFeatureSupport.h					\
+    EURECOM-NAS/src/ies/VoiceDomainPreferenceAndUeUsageSetting.c	\
+    EURECOM-NAS/src/ies/VoiceDomainPreferenceAndUeUsageSetting.h
+    
 libnas_utils_SRCS =								\
     EURECOM-NAS/src/util/nas_log.h				\
     EURECOM-NAS/src/util/nas_log.c				\