diff --git a/5G_system_TS29509_Nausf_CNL113885.tpd b/5G_system_TS29509_Nausf_CNL113885.tpd
new file mode 100644
index 0000000..e58056a
--- /dev/null
+++ b/5G_system_TS29509_Nausf_CNL113885.tpd
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>5G_system_TS29509_Nausf_CNL113885</ProjectName>
+  <ReferencedProjects>
+    <ReferencedProject name="5G_system_TS29503_Nudm_CNL113883" projectLocationURI="../5G_system_TS29503_Nudm_CNL113883/5G_system_TS29503_Nudm_CNL113883.tpd"/>
+    <ReferencedProject name="5G_system_TS29571_CommonData_CNL113880" projectLocationURI="../5G_system_TS29571_CommonData_CNL113880/5G_system_TS29571_CommonData_CNL113880.tpd"/>
+  </ReferencedProjects>
+  <Folders>
+    <FolderResource projectRelativePath="src" relativeURI="src"/>
+  </Folders>
+  <Files>
+    <FileResource projectRelativePath="src/TS29509_Nausf_SoRProtection.ttcn" relativeURI="src/TS29509_Nausf_SoRProtection.ttcn"/>
+    <FileResource projectRelativePath="src/TS29509_Nausf_UEAuthentication.ttcn" relativeURI="src/TS29509_Nausf_UEAuthentication.ttcn"/>
+  </Files>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <GNUMake>true</GNUMake>
+          <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+          <targetExecutable>bin/5G_system_TS29509_Nausf_CNL113885</targetExecutable>
+        </MakefileSettings>
+        <LocalBuildSettings>
+          <workingDirectory>bin</workingDirectory>
+        </LocalBuildSettings>
+      </ProjectProperties>
+    </Configuration>
+  </Configurations>
+</TITAN_Project_File_Information>
\ No newline at end of file
diff --git a/doc/5G_system_TS29509_Nausf_Description.adoc b/doc/5G_system_TS29509_Nausf_Description.adoc
new file mode 100644
index 0000000..7807391
--- /dev/null
+++ b/doc/5G_system_TS29509_Nausf_Description.adoc
@@ -0,0 +1,82 @@
+= 5G system TS29509 Nausf Protocol Modules for TTCN-3 Toolset with TITAN, Description
+:author: Gábor Szalai
+:toc: left
+
+== About This Document
+
+This is the description for the 5G system TS29509 Nausf protocol module. The 5G system TS29509 Nausf protocol modules are developed for the TTCN-3 Toolset with Titan. 
+
+== Functionality
+
+The 5G system TS29509 Nausf protocol module implements the object structures of the 3GPP TS 29509 v15.1.0<<_5, [5]>> in a formalized way, using the standard specification language TTCN-3. This allows defining of test data (templates) in the TTCN-3 language and correctly encoding/decoding messages when executing test suites using the Titan TTCN-3 test environment.
+The 5G system TS29509 Nausf protocol module uses Titan’s JSON encoding <<_3, [3]>> and hence is usable with the Titan test toolset only.
+
+=== System Requirements
+Protocol modules are a set of TTCN-3 source code files that can be used as part of TTCN-3 test suites only. Hence, protocol modules alone do not put specific requirements on the system used. However, in order to compile and execute a TTCN-3 test suite using the set of protocol modules the following system requirements must be satisfied:
+
+* Titan TTCN-3 Test Executor version CRL 113 200/6 R5A (6.5.pl0) or higher installed. For Installation Guide see <<_2, [2]>>. Please note: This version of the test port is not compatible with Titan releases earlier than CRL 113 200/6 R5A.
+
+===	Installation
+The set of protocol modules can be used in developing TTCN-3 test suites using any text editor. Since the 5G system TS29509 Nausf protocol is used as a part of a TTCN-3 test suite, this requires TTCN-3 Test Executor be installed before the module can be compiled and executed together with other parts of the test suite. For more details on the installation of TTCN-3 Test Executor see the relevant section of <<_2, [2]>>.
+
+== Interface description
+
+=== Encoding/decoding and other related functions
+This product also contains encoding/decoding functions, which assure correct encoding of messages when sent from Titan and correct decoding of messages when received by Titan. 
+
+==== Implemented encoding and decoding functions
+
+[source]
+----
+Name	Type of formal parameters	Type of return value
+f_enc_SorInfo(in SorInfo pdu) return octetstring 
+f_dec_SorInfo(in octetstring stream, out SorInfo pdu) return integer 
+f_enc_SorSecurityInfo(in SorSecurityInfo pdu) return octetstring 
+f_dec_SorSecurityInfo(in octetstring stream, out SorSecurityInfo pdu) return integer 
+f_enc_AuthenticationInfo(in AuthenticationInfo pdu) return octetstring 
+f_dec_AuthenticationInfo(in octetstring stream, out AuthenticationInfo pdu) return integer 
+f_enc_UEAuthenticationCtx(in UEAuthenticationCtx pdu) return octetstring 
+f_dec_UEAuthenticationCtx(in octetstring stream, out UEAuthenticationCtx pdu) return integer 
+f_enc_ConfirmationData(in ConfirmationData pdu) return octetstring 
+f_dec_ConfirmationData(in octetstring stream, out ConfirmationData pdu) return integer 
+f_enc_ConfirmationDataResponse(in ConfirmationDataResponse pdu) return octetstring 
+f_dec_ConfirmationDataResponse(in octetstring stream, out ConfirmationDataResponse pdu) return integer 
+f_enc_EapSession(in EapSession pdu) return octetstring 
+f_dec_EapSession(in octetstring stream, out EapSession pdu) return integer 
+----
+
+== Usage
+
+The protocol module provides abstract data types for JSON objects used by the services defined in the standard <<_5, [5]>>. The protocol module provides encoder and decoder functions for the JSON objects. The decoder validates the received JSON object based on the JSON schema as well. Only the validated JSON value is decoded.
+
+== Terminology	
+
+=== Abbreviations
+
+JSON:: JavaScript Object Notation
+
+PDU:: Protocol Data Unit
+
+TTCN-3:: Testing and Test Control Notation version 3
+
+== References
+
+[[_1]]
+[1]	ETSI ES 201 873-1 v4.4.1 (2012-04) +
+The Testing and Test Control Notation version 3. Part 1: Core Language
+
+[[_2]]
+[2]	1/ 198 17-CRL 113 200/6 Uen +
+Installation Guide for the TITAN TTCN-3 Test Executor
+
+[[_3]]
+[3]	2/198 17-CRL 113 200/6 Uen +
+Programmer's Technical Reference for Titan TTCN-3 Test Executor
+
+[[_4]]
+[4]	https://www.json.org
+
+[[_5]]
+[5] 3GPP TS 29509 v15.1.0+
+5G System; Authentication Server Services; Stage 3
+
diff --git a/doc/change.log b/doc/change.log
new file mode 100644
index 0000000..3e36c9e
--- /dev/null
+++ b/doc/change.log
@@ -0,0 +1,9 @@
+= 5G system TS29509 Nausf Protocol Modules for TTCN-3 Toolset with TITAN, Change log
+:author: Gábor Szalai
+:toc: left
+
+== Changes
+
+=== R1A
+
+Initial revision
\ No newline at end of file
diff --git a/src/TS29509_Nausf_SoRProtection.ttcn b/src/TS29509_Nausf_SoRProtection.ttcn
new file mode 100644
index 0000000..efb3794
--- /dev/null
+++ b/src/TS29509_Nausf_SoRProtection.ttcn
@@ -0,0 +1,71 @@
+/******************************************************************************
+* Copyright (c) 2000-2019  Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v2.0
+* which accompanies this distribution, and is available at
+* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
+*
+* Contributors:
+*   Gabor Szalai - initial implementation and initial documentation
+******************************************************************************/
+//
+//  File:               TS29509_Nausf_SoRProtection.ttcn
+//  Description:	      Type definitions for 3GPP TS29509
+/////////////////////////////////////////////// 
+module TS29509_Nausf_SoRProtection {
+
+  import from TS29571_CommonData all
+
+  external function f_enc_SorInfo(in SorInfo pdu) return octetstring 
+  with { extension "prototype(convert) encode(JSON)" }
+
+  external function f_dec_SorInfo(in octetstring stream, out SorInfo pdu) return integer 
+  with { extension "prototype(backtrack) decode(JSON)" }
+
+  external function f_enc_SorSecurityInfo(in SorSecurityInfo pdu) return octetstring 
+  with { extension "prototype(convert) encode(JSON)" }
+
+  external function f_dec_SorSecurityInfo(in octetstring stream, out SorSecurityInfo pdu) return integer 
+  with { extension "prototype(backtrack) decode(JSON)" }
+
+
+
+  type set SorInfo {
+    set of       SteeringInfo    steeringInfoList,
+    AckInd    ackInd
+  }
+
+  type set SorSecurityInfo {
+    SorMac    sorMacIausf,
+    CounterSor    counterSor,
+    SorMac    sorXmacIue optional
+  }
+
+  type set SteeringInfo {
+    TS29571_CommonData.PlmnId    plmnId,
+    set of       AccessTech    accessTechList optional
+  }
+
+  type charstring SorMac // (pattern "^[A-Fa-f0-9]{32}$")
+
+  type charstring CounterSor // (pattern "^[A-Fa-f0-9]{4}$")
+
+  type boolean AckInd
+
+  type enumerated AccessTech_enum { NR, EUTRAN_IN_WBS1_MODE_AND_NBS1_MODE, EUTRAN_IN_NBS1_MODE_ONLY, EUTRAN_IN_WBS1_MODE_ONLY, UTRAN, GSM_AND_ECGSM_IoT, GSM_WITHOUT_ECGSM_IoT, ECGSM_IoT_ONLY, CDMA_1xRTT, CDMA_HRPD, GSM_COMPACT}
+
+  type union AccessTech {
+    AccessTech_enum  enum_val,
+    charstring           other_val
+  } with {
+    variant "JSON: as value"
+  }
+
+
+
+
+
+
+} with {
+  encode "JSON"
+}
diff --git a/src/TS29509_Nausf_UEAuthentication.ttcn b/src/TS29509_Nausf_UEAuthentication.ttcn
new file mode 100644
index 0000000..81457ee
--- /dev/null
+++ b/src/TS29509_Nausf_UEAuthentication.ttcn
@@ -0,0 +1,139 @@
+/******************************************************************************
+* Copyright (c) 2000-2019  Ericsson AB
+* All rights reserved. This program and the accompanying materials
+* are made available under the terms of the Eclipse Public License v2.0
+* which accompanies this distribution, and is available at
+* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
+*
+* Contributors:
+*   Gabor Szalai - initial implementation and initial documentation
+******************************************************************************/
+//
+//  File:               TS29509_Nausf_UEAuthentication.ttcn
+//  Description:	      Type definitions for 3GPP TS29509
+/////////////////////////////////////////////// 
+module TS29509_Nausf_UEAuthentication {
+
+  import from TS29503_Nudm_UEAU all
+  import from TS29571_CommonData all
+
+  external function f_enc_AuthenticationInfo(in AuthenticationInfo pdu) return octetstring 
+  with { extension "prototype(convert) encode(JSON)" }
+
+  external function f_dec_AuthenticationInfo(in octetstring stream, out AuthenticationInfo pdu) return integer 
+  with { extension "prototype(backtrack) decode(JSON)" }
+
+  external function f_enc_UEAuthenticationCtx(in UEAuthenticationCtx pdu) return octetstring 
+  with { extension "prototype(convert) encode(JSON)" }
+
+  external function f_dec_UEAuthenticationCtx(in octetstring stream, out UEAuthenticationCtx pdu) return integer 
+  with { extension "prototype(backtrack) decode(JSON)" }
+
+  external function f_enc_ConfirmationData(in ConfirmationData pdu) return octetstring 
+  with { extension "prototype(convert) encode(JSON)" }
+
+  external function f_dec_ConfirmationData(in octetstring stream, out ConfirmationData pdu) return integer 
+  with { extension "prototype(backtrack) decode(JSON)" }
+
+  external function f_enc_ConfirmationDataResponse(in ConfirmationDataResponse pdu) return octetstring 
+  with { extension "prototype(convert) encode(JSON)" }
+
+  external function f_dec_ConfirmationDataResponse(in octetstring stream, out ConfirmationDataResponse pdu) return integer 
+  with { extension "prototype(backtrack) decode(JSON)" }
+
+  external function f_enc_EapSession(in EapSession pdu) return octetstring 
+  with { extension "prototype(convert) encode(JSON)" }
+
+  external function f_dec_EapSession(in octetstring stream, out EapSession pdu) return integer 
+  with { extension "prototype(backtrack) decode(JSON)" }
+
+
+  type set AuthenticationInfo {
+    TS29503_Nudm_UEAU.SupiOrSuci    supiOrSuci,
+    TS29503_Nudm_UEAU.ServingNetworkName    servingNetworkName,
+    TS29503_Nudm_UEAU.ResynchronizationInfo    resynchronizationInfo optional,
+    TS29571_CommonData.NfInstanceId    amfInstanceId,
+    TS29571_CommonData.TraceData    traceData optional
+  }
+
+  type set UEAuthenticationCtx {
+    AuthType    authType,
+    union {
+      Av5gAka    av5gAka,
+      EapPayload   eapPayload 
+    } fivegAuthData,
+    set of record {
+      universal charstring key,
+      TS29571_CommonData.LinksValueSchema    additionalProperties
+    } links,
+    TS29503_Nudm_UEAU.ServingNetworkName    servingNetworkName optional
+  } with {
+    variant (fivegAuthData) "JSON: as value"
+    variant (fivegAuthData) "name as '5gAuthData'"
+    variant (links) "as map"
+    variant (links) "name as '_links'"
+  }
+  
+
+  type set Av5gAka {
+    TS29503_Nudm_UEAU.Rand    rand,
+    HxresStar    hxresStar,
+    TS29503_Nudm_UEAU.Autn    autn,
+    Kseaf    kSeaf
+  }
+
+  type set ConfirmationData {
+    ResStar    resStar,
+    TS29503_Nudm_UEAU.SupiOrSuci    supiOrSuci optional
+  }
+
+  type set ConfirmationDataResponse {
+    AuthResult    authResult,
+    TS29571_CommonData.Supi    supi optional
+  }
+
+  type set EapSession {
+    EapPayload    eapPayload,
+    Kseaf    kSeaf optional,
+    set of record {
+      universal charstring key,
+      TS29571_CommonData.LinksValueSchema    additionalProperties
+    } links optional
+  } with {
+    variant (links) "as map"
+    variant (links) "name as '_links'"
+  }
+
+
+  type enumerated AuthResult { AUTHENTICATION_SUCCESS, AUTHENTICATION_FAILURE, AUTHENTICATION_ONGOING}
+
+
+  type charstring EapPayload
+
+  type charstring Kseaf // (pattern "[A-Fa-f0-9]{64}")
+
+  type charstring ResStar // (pattern "[A-Fa-f0-9]{32}")
+
+  type charstring HxresStar // (pattern "[A-Fa-f0-9]{32}")
+
+  type enumerated AuthType_enum { FIVEG_AKA, EAP_AKA_PRIME, EAP_TLS}
+  with {
+    variant "text 'FIVEG_AKA' as '5G_AKA'"
+    variant "text 'EAP_TLS' as 'EAP-TLS'"
+  }
+
+  type union AuthType {
+    AuthType_enum  enum_val,
+    charstring           other_val
+  } with {
+    variant "JSON: as value"
+  }
+
+
+
+
+
+
+} with {
+  encode "JSON"
+}
