diff --git a/5G_system_TS29594_Nchf_CNL113893.tpd b/5G_system_TS29594_Nchf_CNL113893.tpd
new file mode 100644
index 0000000..8bff08f
--- /dev/null
+++ b/5G_system_TS29594_Nchf_CNL113893.tpd
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>5G_system_TS29594_Nchf_CNL113893</ProjectName>
+  <ReferencedProjects>
+    <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/TS29594_Nchf_SpendingLimitControl.ttcn" relativeURI="src/TS29594_Nchf_SpendingLimitControl.ttcn"/>
+  </Files>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <GNUMake>true</GNUMake>
+          <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+          <targetExecutable>bin/5G_system_TS29594_Nchf_CNL113893</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_TS29594_Nchf_Description.adoc b/doc/5G_system_TS29594_Nchf_Description.adoc
new file mode 100644
index 0000000..68bfd5c
--- /dev/null
+++ b/doc/5G_system_TS29594_Nchf_Description.adoc
@@ -0,0 +1,74 @@
+= 5G system TS29594 Nchf 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 TS29594 Nchf protocol module. The 5G system TS29594 Nchf protocol modules are developed for the TTCN-3 Toolset with Titan. 
+
+== Functionality
+
+The 5G system TS29594 Nchf protocol module implements the object structures of the 3GPP TS 29594 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 TS29594 Nchf 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 TS29594 Nchf 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_SpendingLimitContext(in SpendingLimitContext pdu) return octetstring 
+f_dec_SpendingLimitContext(in octetstring stream, out SpendingLimitContext pdu) return integer 
+f_enc_SpendingLimitStatus(in SpendingLimitStatus pdu) return octetstring 
+f_dec_SpendingLimitStatus(in octetstring stream, out SpendingLimitStatus pdu) return integer 
+f_enc_SubscriptionTerminationInfo(in SubscriptionTerminationInfo pdu) return octetstring 
+f_dec_SubscriptionTerminationInfo(in octetstring stream, out SubscriptionTerminationInfo 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 function 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 29594 v15.1.0+
+55G System; Spending Limit Control Service; Stage 3
+
diff --git a/doc/change.log b/doc/change.log
new file mode 100644
index 0000000..75aec90
--- /dev/null
+++ b/doc/change.log
@@ -0,0 +1,9 @@
+= 5G system TS29594 Nchf 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/TS29594_Nchf_SpendingLimitControl.ttcn b/src/TS29594_Nchf_SpendingLimitControl.ttcn
new file mode 100644
index 0000000..e594aa8
--- /dev/null
+++ b/src/TS29594_Nchf_SpendingLimitControl.ttcn
@@ -0,0 +1,90 @@
+/******************************************************************************
+* 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:               TS29594_Nchf_SpendingLimitControl.ttcn
+//  Description:	      Type definitions for 3GPP TS29594 CommonData
+/////////////////////////////////////////////// 
+module TS29594_Nchf_SpendingLimitControl {
+
+  import from TS29571_CommonData all
+
+external function f_enc_SpendingLimitContext(in SpendingLimitContext pdu) return octetstring 
+with { extension "prototype(convert) encode(JSON)" }
+
+external function f_dec_SpendingLimitContext(in octetstring stream, out SpendingLimitContext pdu) return integer 
+with { extension "prototype(backtrack) decode(JSON)" }
+
+external function f_enc_SpendingLimitStatus(in SpendingLimitStatus pdu) return octetstring 
+with { extension "prototype(convert) encode(JSON)" }
+
+external function f_dec_SpendingLimitStatus(in octetstring stream, out SpendingLimitStatus pdu) return integer 
+with { extension "prototype(backtrack) decode(JSON)" }
+
+external function f_enc_SubscriptionTerminationInfo(in SubscriptionTerminationInfo pdu) return octetstring 
+with { extension "prototype(convert) encode(JSON)" }
+
+external function f_dec_SubscriptionTerminationInfo(in octetstring stream, out SubscriptionTerminationInfo pdu) return integer 
+with { extension "prototype(backtrack) decode(JSON)" }
+
+
+  type set SpendingLimitContext {
+    TS29571_CommonData.Supi    supi optional,
+    set of       PolicyCounterId    policyCounterIds optional,
+    TS29571_CommonData.Uri    notificationUri optional,
+    TS29571_CommonData.SupportedFeatures    supportedFeatures optional
+  }
+
+  type set SpendingLimitStatus {
+    TS29571_CommonData.Supi    supi optional,
+    set of record {
+      universal charstring key,
+      PolicyCounterInfo    additionalProperties
+    } statusInfos,
+    TS29571_CommonData.SupportedFeatures    supportedFeatures optional
+  } with {
+    variant (statusInfos) "as map"
+  }
+
+  type set PolicyCounterInfo {
+    PolicyCounterId    policyCounterId,
+    charstring currentStatus,
+    set of       PendingPolicyCounterStatus    penPolCounterStatuses optional
+  }
+
+  type set PendingPolicyCounterStatus {
+    charstring policyCounterStatus,
+    TS29571_CommonData.DateTime    activationTime
+  }
+
+  type charstring PolicyCounterId
+
+  type set SubscriptionTerminationInfo {
+    TS29571_CommonData.DateTime    supi,
+    TerminationCause    termCause optional
+  }
+
+  type enumerated TerminationCause_enum { REMOVED_SUBSCRIBER}
+
+  type union TerminationCause {
+    TerminationCause_enum  enum_val,
+    charstring           other_val
+  } with {
+    variant "JSON: as value"
+  }
+
+
+
+
+
+
+} with {
+  encode "JSON"
+}
