diff --git a/5G_system_TS29511_N5g_eir_CNL113887.tpd b/5G_system_TS29511_N5g_eir_CNL113887.tpd
new file mode 100644
index 0000000..0e5e0d4
--- /dev/null
+++ b/5G_system_TS29511_N5g_eir_CNL113887.tpd
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<TITAN_Project_File_Information version="1.0">
+  <ProjectName>5G_system_TS29511_N5g_eir_CNL113887</ProjectName>
+  <Folders>
+    <FolderResource projectRelativePath="src" relativeURI="src"/>
+  </Folders>
+  <Files>
+    <FileResource projectRelativePath="src/TS29511_N5g-eir_EquipmentIdentityCheck.ttcn" relativeURI="src/TS29511_N5g-eir_EquipmentIdentityCheck.ttcn"/>
+  </Files>
+  <ActiveConfiguration>Default</ActiveConfiguration>
+  <Configurations>
+    <Configuration name="Default">
+      <ProjectProperties>
+        <MakefileSettings>
+          <GNUMake>true</GNUMake>
+          <incrementalDependencyRefresh>true</incrementalDependencyRefresh>
+          <targetExecutable>bin/5G_system_TS29511_N5g_eir_CNL113887</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_TS29511_N5g_eir_Description.adoc b/doc/5G_system_TS29511_N5g_eir_Description.adoc
new file mode 100644
index 0000000..b64781c
--- /dev/null
+++ b/doc/5G_system_TS29511_N5g_eir_Description.adoc
@@ -0,0 +1,72 @@
+= 5G system TS29511 N5g eir 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 TS29511 N5g eir protocol module. The 5G system TS29511 N5g eir protocol modules are developed for the TTCN-3 Toolset with Titan. 
+
+== Functionality
+
+The 5G system TS29511 N5g eir protocol module implements the object structures of the 3GPP TS 29511 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 TS29511 N5g eir 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 TS29511 N5g eir 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_EirResponseData(in EirResponseData pdu) return octetstring 
+f_dec_EirResponseData(in octetstring stream, out EirResponseData pdu) return integer 
+f_enc_ProblemDetails_eir(in ProblemDetails_eir pdu) return octetstring 
+f_dec_ProblemDetails_eir(in octetstring stream, out ProblemDetails_eir 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 29511 v15.1.0+
+5G System; Equipment Identity Register Services; Stage 3
+
diff --git a/doc/change.log b/doc/change.log
new file mode 100644
index 0000000..a7e46bd
--- /dev/null
+++ b/doc/change.log
@@ -0,0 +1,9 @@
+= 5G system TS29511 N5g eir 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/TS29511_N5g_eir_EquipmentIdentityCheck.ttcn b/src/TS29511_N5g_eir_EquipmentIdentityCheck.ttcn
new file mode 100644
index 0000000..dc7d056
--- /dev/null
+++ b/src/TS29511_N5g_eir_EquipmentIdentityCheck.ttcn
@@ -0,0 +1,58 @@
+/******************************************************************************
+* 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:               TS29511_N5g_eir_EquipmentIdentityCheck.ttcn
+//  Description:	      Type definitions for 3GPP TS29511
+/////////////////////////////////////////////// 
+module TS29511_N5g_eir_EquipmentIdentityCheck {
+
+
+  external function f_enc_EirResponseData(in EirResponseData pdu) return octetstring 
+  with { extension "prototype(convert) encode(JSON)" }
+
+  external function f_dec_EirResponseData(in octetstring stream, out EirResponseData pdu) return integer 
+  with { extension "prototype(backtrack) decode(JSON)" }
+
+  external function f_enc_ProblemDetails_eir(in ProblemDetails_eir pdu) return octetstring 
+  with { extension "prototype(convert) encode(JSON)" }
+
+  external function f_dec_ProblemDetails_eir(in octetstring stream, out ProblemDetails_eir pdu) return integer 
+  with { extension "prototype(backtrack) decode(JSON)" }
+
+
+  type set EirResponseData {
+    EquipmentStatus    status
+  }
+
+  type charstring Pei // (pattern "([0-9]{14})")
+
+  type charstring Supi // (pattern "(imsi-[0-9]{5,15}|nai-.+)")
+
+  type enumerated EquipmentStatus { WHITELISTED, BLACKLISTED, GREYLISTED}
+
+
+  type set ProblemDetails_eir {
+    charstring type_,
+    charstring title optional,
+    integer status optional,
+    charstring detail optional,
+    charstring instance optional
+  } with {
+    variant (type_) "name as 'type'"
+  }
+
+
+
+
+
+} with {
+  encode "JSON"
+}
