MME2 changes - Propped commits from openmme/paging branch. Added scripts
for code gen

Change-Id: Ie55032217232214ac8544ca76ea34335205329e4
diff --git a/include/mme-app/contextManager/bearerContextManager.h b/include/mme-app/contextManager/bearerContextManager.h
new file mode 100644
index 0000000..5f33047
--- /dev/null
+++ b/include/mme-app/contextManager/bearerContextManager.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2019-present, Infosys Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.
+ */
+
+#ifndef __BearerContextManager__
+#define __BearerContextManager__
+/******************************************************
+* bearerContextManager.h
+ * This is an auto generated file.
+ * Please do not edit this file.
+ * All edits to be made through template source file
+ * <TOP-DIR/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.h.tt>
+ ***************************************/
+#include "memPoolManager.h"
+
+namespace mme
+{
+	class BearerContext;
+
+	class BearerContextManager
+	{
+	public:
+		/****************************************
+		* BearerContextManager
+		*  constructor
+		****************************************/
+		BearerContextManager(int numOfBlocks);
+		
+		/****************************************
+		* BearerContextManager
+		*    Destructor
+		****************************************/
+		~BearerContextManager();
+		
+		/******************************************
+		 * allocateBearerContext
+		 *  allocate BearerContext data block
+		 ******************************************/
+		BearerContext* allocateBearerContext();
+		
+		/******************************************
+		 * deallocateBearerContext
+		 *  deallocate a BearerContext data block
+		 ******************************************/
+		void deallocateBearerContext(BearerContext* BearerContextp );
+	
+	private:
+		cmn::memPool::MemPoolManager<BearerContext> poolManager_m;
+	};
+};
+
+#endif
+		
+		
diff --git a/include/mme-app/contextManager/dataBlocks.h b/include/mme-app/contextManager/dataBlocks.h
new file mode 100644
index 0000000..b3b4809
--- /dev/null
+++ b/include/mme-app/contextManager/dataBlocks.h
@@ -0,0 +1,962 @@
+/*
+ * Copyright (c) 2019, Infosys Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.
+ */
+
+#ifndef DGM_BLOCKSTRUCTURES_H
+#define DGM_BLOCKSTRUCTURES_H
+/**************************************
+*
+* This is an auto generated file.
+ * Please do not edit this file.
+ * All edits to be made through template source file
+ * <TOP-DIR/scripts/SMCodeGen/templates/ctxtManagerTmpls/dataBlocks.h.tt>
+ ***************************************/
+#include "structs.h"
+#include "permDataBlock.h"
+#include "tempDataBlock.h"
+#include <utils/mmeCauseTypes.h>
+
+namespace mme
+{
+	class UEContext;
+	class MmContext;
+	class SessionContext;
+	class BearerContext;
+	class MmeProcedureCtxt;
+	class MmeDetachProcedureCtxt;
+	class MmeSvcReqProcedureCtxt;
+	class MmeTauProcedureCtxt;
+
+	class UEContext:public SM::PermDataBlock
+	{
+		public:
+	
+			/****************************************
+			* UEContext
+			*    constructor
+			****************************************/
+			UEContext();
+			
+			/****************************************
+			* ~UEContext
+			*    destructor
+			****************************************/
+			~UEContext();
+			
+			/****************************************
+			* setenbFd
+			*    set enbFd to UEContext
+			****************************************/
+			void setEnbFd( int enbFd_i );
+			
+			/****************************************
+			* getenbFd
+			*    get enbFd from UEContext
+			****************************************/
+			int getEnbFd();
+			
+			/****************************************
+			* sets1apEnbUeId
+			*    set s1apEnbUeId to UEContext
+			****************************************/
+			void setS1apEnbUeId( int s1apEnbUeId_i );
+			
+			/****************************************
+			* gets1apEnbUeId
+			*    get s1apEnbUeId from UEContext
+			****************************************/
+			int getS1apEnbUeId();
+			
+			/****************************************
+			* setsubscriptionStatus
+			*    set subscriptionStatus to UEContext
+			****************************************/
+			void setSubscriptionStatus( int subscriptionStatus_i );
+			
+			/****************************************
+			* getsubscriptionStatus
+			*    get subscriptionStatus from UEContext
+			****************************************/
+			int getSubscriptionStatus();
+			
+			/****************************************
+			* setnetAccessMode
+			*    set netAccessMode to UEContext
+			****************************************/
+			void setNetAccessMode( int netAccessMode_i );
+			
+			/****************************************
+			* getnetAccessMode
+			*    get netAccessMode from UEContext
+			****************************************/
+			int getNetAccessMode();
+			
+			/****************************************
+			* setcontextID
+			*    set contextID to UEContext
+			****************************************/
+			void setContextID( uint32_t contextID_i );
+			
+			/****************************************
+			* getcontextID
+			*    get contextID from UEContext
+			****************************************/
+			uint32_t getContextID();
+			
+			/****************************************
+			* setrauTauTimer
+			*    set rauTauTimer to UEContext
+			****************************************/
+			void setRauTauTimer( unsigned int rauTauTimer_i );
+			
+			/****************************************
+			* getrauTauTimer
+			*    get rauTauTimer from UEContext
+			****************************************/
+			unsigned int getRauTauTimer();
+			
+			/****************************************
+			* setaccessRestrictionData
+			*    set accessRestrictionData to UEContext
+			****************************************/
+			void setAccessRestrictionData( unsigned int accessRestrictionData_i );
+			
+			/****************************************
+			* getaccessRestrictionData
+			*    get accessRestrictionData from UEContext
+			****************************************/
+			unsigned int getAccessRestrictionData();
+			
+			/****************************************
+			* setimsi
+			*    set imsi to UEContext
+			****************************************/
+			void setImsi( const DigitRegister15& imsi_i );
+			
+			/****************************************
+			* getimsi
+			*    get imsi from UEContext
+			****************************************/
+			const DigitRegister15& getImsi()const;
+			
+			/****************************************
+			* setmsisdn
+			*    set msisdn to UEContext
+			****************************************/
+			void setMsisdn( const DigitRegister15& msisdn_i );
+			
+			/****************************************
+			* getmsisdn
+			*    get msisdn from UEContext
+			****************************************/
+			const DigitRegister15& getMsisdn()const;
+			
+			/****************************************
+			* setdwnLnkSeqNo
+			*    set dwnLnkSeqNo to UEContext
+			****************************************/
+			void setDwnLnkSeqNo( unsigned short dwnLnkSeqNo_i );
+			
+			/****************************************
+			* getdwnLnkSeqNo
+			*    get dwnLnkSeqNo from UEContext
+			****************************************/
+			unsigned short getDwnLnkSeqNo();
+			
+			/****************************************
+			* setupLnkSeqNo
+			*    set upLnkSeqNo to UEContext
+			****************************************/
+			void setUpLnkSeqNo( unsigned short upLnkSeqNo_i );
+			
+			/****************************************
+			* getupLnkSeqNo
+			*    get upLnkSeqNo from UEContext
+			****************************************/
+			unsigned short getUpLnkSeqNo();
+			
+			/****************************************
+			* setueState
+			*    set ueState to UEContext
+			****************************************/
+			void setUeState( UE_State_e ueState_i );
+			
+			/****************************************
+			* getueState
+			*    get ueState from UEContext
+			****************************************/
+			UE_State_e getUeState();
+			
+			/****************************************
+			* settai
+			*    set tai to UEContext
+			****************************************/
+			void setTai( const Tai& tai_i );
+			
+			/****************************************
+			* gettai
+			*    get tai from UEContext
+			****************************************/
+			const Tai& getTai()const;
+			
+			/****************************************
+			* setutranCgi
+			*    set utranCgi to UEContext
+			****************************************/
+			void setUtranCgi( const Cgi& utranCgi_i );
+			
+			/****************************************
+			* getutranCgi
+			*    get utranCgi from UEContext
+			****************************************/
+			const Cgi& getUtranCgi()const;
+			
+			/****************************************
+			* setmsNetCapab
+			*    set msNetCapab to UEContext
+			****************************************/
+			void setMsNetCapab( const Ms_net_capab& msNetCapab_i );
+			
+			/****************************************
+			* getmsNetCapab
+			*    get msNetCapab from UEContext
+			****************************************/
+			const Ms_net_capab& getMsNetCapab()const;
+			
+			/****************************************
+			* setueNetCapab
+			*    set ueNetCapab to UEContext
+			****************************************/
+			void setUeNetCapab( const Ue_net_capab& ueNetCapab_i );
+			
+			/****************************************
+			* getueNetCapab
+			*    get ueNetCapab from UEContext
+			****************************************/
+			const Ue_net_capab& getUeNetCapab()const;
+			
+			/****************************************
+			* setueSecInfo
+			*    set ueSecInfo to UEContext
+			****************************************/
+			void setUeSecInfo( const Secinfo& ueSecInfo_i );
+			
+			/****************************************
+			* getueSecInfo
+			*    get ueSecInfo from UEContext
+			****************************************/
+			const Secinfo& getUeSecInfo()const;
+			
+			/****************************************
+			* setambr
+			*    set ambr to UEContext
+			****************************************/
+			void setAmbr( const Ambr& ambr_i );
+			
+			/****************************************
+			* getambr
+			*    get ambr from UEContext
+			****************************************/
+			const Ambr& getAmbr()const;
+			
+			/****************************************
+			* setaiaSecInfo
+			*    set aiaSecInfo to UEContext
+			****************************************/
+			void setAiaSecInfo( const E_utran_sec_vector& aiaSecInfo_i );
+			
+			/****************************************
+			* getaiaSecInfo
+			*    get aiaSecInfo from UEContext
+			****************************************/
+			const E_utran_sec_vector& getAiaSecInfo()const;
+			
+			/****************************************
+			* setmTmsi
+			*    set mTmsi to UEContext
+			****************************************/
+			void setMtmsi( uint32_t mTmsi );
+
+			/****************************************
+			* getaiaSecInfo
+			*    get aiaSecInfo from UEContext
+			****************************************/
+			uint32_t getMtmsi();
+			
+			/****************************************
+			* setMmContext
+			*    set MmContext to UEContext
+			****************************************/
+			void setMmContext( MmContext* MmContextp ) ;
+			
+			/****************************************
+			* getMmContext
+			*    get MmContext to UEContext
+			****************************************/
+			MmContext* getMmContext();
+			
+			/****************************************
+			* setSessionContext
+			*    set SessionContext to UEContext
+			****************************************/
+			void setSessionContext( SessionContext* SessionContextp ) ;
+			
+			/****************************************
+			* getSessionContext
+			*    get SessionContext to UEContext
+			****************************************/
+			SessionContext* getSessionContext();
+			
+		
+		private:
+		
+			// DataName
+			int enbFd_m;
+			
+			// DataName
+			int s1apEnbUeId_m;
+			
+			// DataName
+			int subscriptionStatus_m;
+			
+			// DataName
+			int netAccessMode_m;
+			
+			// DataName
+			uint32_t contextID_m;
+			
+			// DataName
+			unsigned int rauTauTimer_m;
+			
+			// DataName
+			unsigned int accessRestrictionData_m;
+			
+			// DataName
+			DigitRegister15 imsi_m;
+			
+			// DataName
+			DigitRegister15 msisdn_m;
+			
+			// DataName
+			unsigned short dwnLnkSeqNo_m;
+			
+			// DataName
+			unsigned short upLnkSeqNo_m;
+			
+			// DataName
+			UE_State_e ueState_m;
+			
+			// DataName
+			Tai tai_m;
+			
+			// DataName
+			Cgi utranCgi_m;
+			
+			// DataName
+			Ms_net_capab msNetCapab_m;
+			
+			// DataName
+			Ue_net_capab ueNetCapab_m;
+			
+			// DataName
+			Secinfo ueSecInfo_m;
+			
+			// DataName
+			Ambr ambr_m;
+			
+			// DataName
+			E_utran_sec_vector aiaSecInfo_m;
+			
+			// DataName
+			uint32_t mTmsi_m;
+
+			// MmContext
+			MmContext* MmContext_mp;
+			
+			// SessionContext
+			SessionContext* SessionContext_mp;
+			
+	};
+	 
+	class MmContext:public SM::PermDataBlock
+	{
+		public:
+	
+			/****************************************
+			* MmContext
+			*    constructor
+			****************************************/
+			MmContext();
+			
+			/****************************************
+			* ~MmContext
+			*    destructor
+			****************************************/
+			~MmContext();
+			
+			/****************************************
+			* setmmState
+			*    set mmState to MmContext
+			****************************************/
+			void setMmState(EmmState mmState_i );
+			
+			/****************************************
+			* getmmState
+			*    get mmState from MmContext
+			****************************************/
+			EmmState getMmState();
+			
+			
+		private:
+		
+			// DataName
+			EmmState mmState_m;
+			
+			
+	};
+	 
+	class SessionContext:public SM::PermDataBlock
+	{
+		public:
+	
+			/****************************************
+			* SessionContext
+			*    constructor
+			****************************************/
+			SessionContext();
+			
+			/****************************************
+			* ~SessionContext
+			*    destructor
+			****************************************/
+			~SessionContext();
+			
+			/****************************************
+			* setsessionId
+			*    set sessionId to SessionContext
+			****************************************/
+			void setSessionId( uint8_t sessionId_i );
+			
+			/****************************************
+			* getsessionId
+			*    get sessionId from SessionContext
+			****************************************/
+			uint8_t getSessionId();
+			
+			/****************************************
+			* sets11SgwCtrlFteid
+			*    set s11SgwCtrlFteid to SessionContext
+			****************************************/
+			void setS11SgwCtrlFteid( const Fteid& s11SgwCtrlFteid_i );
+			
+			/****************************************
+			* gets11SgwCtrlFteid
+			*    get s11SgwCtrlFteid from SessionContext
+			****************************************/
+			const Fteid& getS11SgwCtrlFteid()const;
+			
+			/****************************************
+			* sets5S8PgwCtrlFteid
+			*    set s5S8PgwCtrlFteid to SessionContext
+			****************************************/
+			void setS5S8PgwCtrlFteid( const Fteid& s5S8PgwCtrlFteid_i );
+			
+			/****************************************
+			* gets5S8PgwCtrlFteid
+			*    get s5S8PgwCtrlFteid from SessionContext
+			****************************************/
+			const Fteid& getS5S8PgwCtrlFteid()const;
+			
+			/****************************************
+			* setpdnAddr
+			*    set pdnAddr to SessionContext
+			****************************************/
+			void setPdnAddr( const Paa& pdnAddr_i );
+			
+			/****************************************
+			* getpdnAddr
+			*    get pdnAddr from SessionContext
+			****************************************/
+			const Paa& getPdnAddr()const;
+			
+			/****************************************
+			* setaccessPtName
+			*    set accessPtName to SessionContext
+			****************************************/
+			void setAccessPtName( const Apn_name& accessPtName_i );
+			
+			/****************************************
+			* getaccessPtName
+			*    get accessPtName from SessionContext
+			****************************************/
+			const Apn_name& getAccessPtName()const;
+			
+			/****************************************
+			* geteRabId
+			*    get eRabId from SessionContext
+			****************************************/
+			unsigned short getErabId();
+			
+			/****************************************
+			* setapnConfigProfileCtxId
+			*    set apnConfigProfileCtxId to SessionContext
+			****************************************/
+			void setApnConfigProfileCtxId( unsigned int apnConfigProfileCtxId_i );
+			
+			/****************************************
+			* getapnConfigProfileCtxId
+			*    get apnConfigProfileCtxId from SessionContext
+			****************************************/
+			unsigned int getApnConfigProfileCtxId();
+
+			/****************************************
+		        * setpti
+			*    set pti to SessionContext
+			****************************************/
+			void setPti( uint8_t pti_i );
+
+			/****************************************
+			* getpti
+			*    get pti from SessionContext
+			****************************************/
+			uint8_t getPti();
+			
+			/****************************************
+			* setBearerContext
+			*    set BearerContext to SessionContext
+			****************************************/
+			void setBearerContext( BearerContext* BearerContextp ) ;
+			
+			/****************************************
+			* getBearerContext
+			*    get BearerContext to SessionContext
+			****************************************/
+			BearerContext* getBearerContext();
+		
+		
+		private:
+		
+			// DataName
+			uint8_t sessionId_m;
+			
+			// DataName
+			Fteid s11SgwCtrlFteid_m;
+			
+			// DataName
+			Fteid s5S8PgwCtrlFteid_m;
+			
+			// DataName
+			Paa pdnAddr_m;
+			
+			// DataName
+			Apn_name accessPtName_m;
+
+			// DataName
+			unsigned int apnConfigProfileCtxId_m;
+			
+			// DataName
+			uint8_t pti_m;
+			
+			// BearerContext
+			BearerContext* BearerContext_mp;
+			
+	};
+	 
+	class BearerContext:public SM::PermDataBlock
+	{
+		public:
+	
+			/****************************************
+			* BearerContext
+			*    constructor
+			****************************************/
+			BearerContext();
+			
+			/****************************************
+			* ~BearerContext
+			*    destructor
+			****************************************/
+			~BearerContext();
+			
+			/****************************************
+			* sets1uSgwUserFteid
+			*    set s1uSgwUserFteid to BearerContext
+			****************************************/
+			void setS1uSgwUserFteid( const Fteid& s1uSgwUserFteid_i );
+			
+			/****************************************
+			* gets1uSgwUserFteid
+			*    get s1uSgwUserFteid from BearerContext
+			****************************************/
+			const Fteid& getS1uSgwUserFteid()const;
+			
+			/****************************************
+			* sets5S8PgwUserFteid
+			*    set s5S8PgwUserFteid to BearerContext
+			****************************************/
+			void setS5S8PgwUserFteid( const Fteid& s5S8PgwUserFteid_i );
+			
+			/****************************************
+			* gets5S8PgwUserFteid
+			*    get s5S8PgwUserFteid from BearerContext
+			****************************************/
+			const Fteid& getS5S8PgwUserFteid()const;
+			
+			/****************************************
+			* sets1uEnbUserFteid
+			*    set s1uEnbUserFteid to BearerContext
+			****************************************/
+			void setS1uEnbUserFteid( const Fteid& s1uEnbUserFteid_i );
+			
+			/****************************************
+			* gets1uEnbUserFteid
+			*    get s1uEnbUserFteid from BearerContext
+			****************************************/
+			const Fteid& getS1uEnbUserFteid()const;
+			
+			/****************************************
+			* setbearerId
+			*    set bearerId to BearerContext
+			****************************************/
+			void setBearerId( unsigned char bearerId_i );
+			
+			/****************************************
+			* getbearerId
+			*    get bearerId from BearerContext
+			****************************************/
+			unsigned char getBearerId();
+			
+			
+		
+		private:
+		
+			// DataName
+			Fteid s1uSgwUserFteid_m;
+			
+			// DataName
+			Fteid s5S8PgwUserFteid_m;
+			
+			// DataName
+			Fteid s1uEnbUserFteid_m;
+			
+			// DataName
+			unsigned char bearerId_m;
+			
+			
+	};
+	 
+	class MmeProcedureCtxt:public SM::TempDataBlock
+	{
+		public:
+	
+			/****************************************
+			* MmeProcedureCtxt
+			*    constructor
+			****************************************/
+			MmeProcedureCtxt();
+			
+			/****************************************
+			* ~MmeProcedureCtxt
+			*    destructor
+			****************************************/
+			~MmeProcedureCtxt();
+			
+			/****************************************
+			* setctxtType
+			*    set ctxtType to MmeProcedureCtxt
+			****************************************/
+			void setCtxtType( ProcedureType ctxtType_i );
+			
+			/****************************************
+			* getctxtType
+			*    get ctxtType from MmeProcedureCtxt
+			****************************************/
+			ProcedureType getCtxtType();
+
+			/****************************************
+			* setesmInfoTxRequired
+			*    set esmInfoTxRequired to MmeProcedureCtxt
+			****************************************/
+			void setEsmInfoTxRequired( bool esmInfoTxRequired_i );
+			
+			/****************************************
+			* getesmInfoTxRequired
+			*    get esmInfoTxRequired from MmeProcedureCtxt
+			****************************************/
+			bool getEsmInfoTxRequired();
+			
+			/****************************************
+			* setpti
+			*    set pti to MmeProcedureCtxt
+			****************************************/
+			void setPti( uint8_t pti_i );
+
+			/****************************************
+			* getpti
+			*    get pti from MmeProcedureCtxt
+			****************************************/
+			uint8_t getPti();
+			
+			/****************************************
+			* setpcoOptions
+			*    set pcoOptions to MmeProcedureCtxt
+			****************************************/
+			void setPcoOptions(const unsigned short int* pco_options_i);
+
+			/****************************************
+			* getpcoOptions
+			*    get pcoOptions from MmeProcedureCtxt
+			****************************************/
+			const unsigned short int* getPcoOptions()const;
+
+			/****************************************
+			* setattachType
+			*    set attachType to MmeProcedureCtxt
+			****************************************/
+			void setAttachType( AttachType attachType_i );
+
+			/****************************************
+			* getattachType
+			*    get attachType from MmeProcedureCtxt
+			****************************************/
+			AttachType getAttachType();
+
+			/****************************************
+			* setMmeErrorCause
+			*    set mmeErrorCause to MmeProcedureCtxt
+			*******************************************/
+			void setMmeErrorCause( MmeErrorCause mmeErrorCause_i );
+
+			/*******************************************
+			* getMmeErrorCause
+			*    get mmeErrorCause from MmeProcedureCtxt
+			*********************************************/
+			MmeErrorCause getMmeErrorCause();
+
+
+		private:
+		
+			// DataName
+			ProcedureType ctxtType_m;
+
+            // DataName
+            MmeErrorCause mmeErrorCause_m;
+	
+			//DataName
+			AttachType attachType_m;
+
+			//DataName
+			unsigned short int pcoOptions_m[10];
+
+			// DataName
+			uint8_t pti_m;
+
+			//DataName
+			bool esmInfoTxRequired_m;
+
+	};
+	
+	class MmeDetachProcedureCtxt:public MmeProcedureCtxt
+	{
+		public:
+
+			/****************************************
+			* MmeDetachProcedureCtxt
+			*    constructor
+			****************************************/
+			MmeDetachProcedureCtxt();
+
+			/****************************************
+			* ~MmeDetachProcedureCtxt
+			*    destructor
+			****************************************/
+			~MmeDetachProcedureCtxt();
+
+			/****************************************
+			* setdetachType
+			*    set detachType to MmeDetachProcedureCtxt
+			****************************************/
+			void setDetachType(DetachType detachType_i );
+
+			/****************************************
+			* getdetachType
+			*    get detachType from MmeDetachProcedureCtxt
+			****************************************/
+			DetachType getDetachType();
+
+			/****************************************
+			* setcancellationType
+			*    set cancellationType to MmeProcedureCtxt
+			****************************************/
+			void setCancellationType(CancellationType cancellationType_i );
+
+			/****************************************
+			* getcancellationType
+			*    get cancellationType from MmeProcedureCtxt
+			****************************************/
+			CancellationType getCancellationType();
+
+		private:
+
+			// DataName
+			DetachType detachType_m;
+
+			//DataName
+			CancellationType cancellationType_m;
+	};
+
+
+
+	class MmeSvcReqProcedureCtxt:public MmeProcedureCtxt
+	{
+		public:
+		    /****************************************
+		    * MmeSvcReqProcedureCtxt
+		    *    constructor
+		    ****************************************/
+		    MmeSvcReqProcedureCtxt();
+
+		    /****************************************
+		    * ~MmeSvcReqProcedureCtxt
+		    *    destructor
+		    ****************************************/
+		    ~MmeSvcReqProcedureCtxt();
+			
+		    /****************************************
+		    * setseqNo
+		    *    set seqNo to MmeSvcReqProcedureCtxt
+		    ****************************************/
+		    void setDdnSeqNo( uint32_t ddnSeqNum_i );
+
+		    /****************************************
+		    * getseqNo
+		    *    get seqNo from MmeSvcReqProcedureCtxt
+		    ****************************************/
+		    uint32_t getDdnSeqNo();
+
+		    /**************************************************
+		    * setPagingTrigger
+		    *    set pagingTrigger to MmeSvcReqProcedureCtxt
+		    **************************************************/
+		    void setPagingTrigger( PagingTrigger pagingTrigger_i );
+	
+		    /****************************************
+		    * getPagingTrigger
+		    *    get pagingTrigger from MmeSvcReqProcedureCtxt
+		    ****************************************/
+		    PagingTrigger getPagingTrigger();
+	
+		    /****************************************
+		    * setEpsBearerId
+		    *    set epsBearerId to MmeSvcReqProcedureCtxt
+		    ****************************************/
+		    void setEpsBearerId( unsigned char epsBearerId_i );
+	
+		    /****************************************
+		    * getEpsBearerId
+		    *    get epsBearerId from MmeSvcReqProcedureCtxt
+		    ****************************************/
+		    unsigned char getEpsBearerId();
+	
+		    /****************************************
+		    * setArp
+		    *    set arp to MmeSvcReqProcedureCtxt
+	   	    ****************************************/
+		    void setArp( const Arp& arp_i );
+	
+		    /****************************************
+		    * getArp
+		    *    get arp from MmeSvcReqProcedureCtxt
+		    ****************************************/
+		    const Arp& getArp()const;
+	
+		    					
+	    private:
+			// DataName
+			PagingTrigger pagingTrigger_m;
+			
+			// DataName
+			unsigned char epsBearerId_m;
+			
+			// DataName
+			Arp arp_m;
+			
+			// DataName
+			uint32_t ddnSeqNum_m;
+			
+	};
+	
+	class MmeTauProcedureCtxt:public MmeProcedureCtxt
+	{
+		public:
+			/****************************************
+			* MmeTauProcedureCtxt
+			*    constructor
+			****************************************/
+			MmeTauProcedureCtxt();
+
+			/****************************************
+			* ~MmeTauProcedureCtxt
+			*    destructor
+			****************************************/
+			~MmeTauProcedureCtxt();
+				
+			/****************************************
+			* sets1apEnbUeId
+			*    set s1apEnbUeId to MmeTauProcedureCtxt
+			****************************************/
+			void setS1apEnbUeId( int s1apEnbUeId_i );
+			
+			/****************************************
+			* gets1apEnbUeId
+			*    get s1apEnbUeId from MmeTauProcedureCtxt
+			****************************************/
+			int getS1apEnbUeId();
+			
+			/****************************************
+			* settai
+			*    set tai to MmeTauProcedureCtxt
+			****************************************/
+			void setTai( const Tai& tai_i );
+			
+			/****************************************
+			* gettai
+			*    get tai from MmeTauProcedureCtxt
+			****************************************/
+			const Tai& getTai()const;
+			
+			/****************************************
+			* setenbFd
+			*    set enbFd to MmeTauProcedureCtxt
+			****************************************/
+			void setEnbFd( int enbFd_i );
+			
+			/****************************************
+			* getenbFd
+			*    get enbFd from MmeTauProcedureCtxt
+			****************************************/
+			int getEnbFd();		
+			
+			
+				
+		private:
+			int s1apEnbUeId_m;
+			Tai tai_m;
+			int enbFd_m;			
+			
+	};
+	
+} // mme
+#endif
diff --git a/include/mme-app/contextManager/mmContextManager.h b/include/mme-app/contextManager/mmContextManager.h
new file mode 100644
index 0000000..cdf2113
--- /dev/null
+++ b/include/mme-app/contextManager/mmContextManager.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2019-present, Infosys Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.
+ */
+
+#ifndef __MmContextManager__
+#define __MmContextManager__
+/******************************************************
+* mmContextManager.h
+ * This is an auto generated file.
+ * Please do not edit this file.
+ * All edits to be made through template source file
+ * <TOP-DIR/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.h.tt>
+ ***************************************/
+#include "memPoolManager.h"
+
+namespace mme
+{
+	class MmContext;
+	class MmContextManager
+	{
+	public:
+		/****************************************
+		* MmContextManager
+		*  constructor
+		****************************************/
+		MmContextManager(int numOfBlocks);
+		
+		/****************************************
+		* MmContextManager
+		*    Destructor
+		****************************************/
+		~MmContextManager();
+		
+		/******************************************
+		 * allocateMmContext
+		 *  allocate MmContext data block
+		 ******************************************/
+		MmContext* allocateMmContext();
+		
+		/******************************************
+		 * deallocateMmContext
+		 *  deallocate a MmContext data block
+		 ******************************************/
+		void deallocateMmContext(MmContext* MmContextp );
+	
+	private:
+		cmn::memPool::MemPoolManager<MmContext> poolManager_m;
+	};
+};
+
+#endif
+		
+		
diff --git a/include/mme-app/contextManager/mmeDetachProcedureCtxtManager.h b/include/mme-app/contextManager/mmeDetachProcedureCtxtManager.h
new file mode 100644
index 0000000..b7c3197
--- /dev/null
+++ b/include/mme-app/contextManager/mmeDetachProcedureCtxtManager.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2019, Infosys Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.
+ */
+
+#ifndef __MmeDetachProcedureCtxtManager__
+#define __MmeDetachProcedureCtxtManager__
+/******************************************************
+ * mmeDetachProcedureCtxtManager.h
+ * This is an auto generated file.
+ * Please do not edit this file.
+ * All edits to be made through template source file
+ * <TOP-DIR/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.h.tt>
+ ***************************************/
+#include "memPoolManager.h"
+
+namespace mme
+{
+	class MmeDetachProcedureCtxt;
+	class MmeDetachProcedureCtxtManager
+	{
+	public:
+		/****************************************
+		* MmeDetachProcedureCtxtManager
+		*  constructor
+		****************************************/
+		MmeDetachProcedureCtxtManager(int numOfBlocks);
+		
+		/****************************************
+		* MmeDetachProcedureCtxtManager
+		*    Destructor
+		****************************************/
+		~MmeDetachProcedureCtxtManager();
+		
+		/******************************************
+		 * allocateMmeDetachProcedureCtxt
+		 *  allocate MmeDetachProcedureCtxt data block
+		 ******************************************/
+		MmeDetachProcedureCtxt* allocateMmeDetachProcedureCtxt();
+		
+		/******************************************
+		 * deallocateMmeDetachProcedureCtxt
+		 *  deallocate a MmeDetachProcedureCtxt data block
+		 ******************************************/
+		void deallocateMmeDetachProcedureCtxt(MmeDetachProcedureCtxt* MmeDetachProcedureCtxtp );
+	
+	private:
+		cmn::memPool::MemPoolManager<MmeDetachProcedureCtxt> poolManager_m;
+	};
+};
+
+#endif
+		
+		
diff --git a/include/mme-app/contextManager/mmeProcedureCtxtManager.h b/include/mme-app/contextManager/mmeProcedureCtxtManager.h
new file mode 100644
index 0000000..c244fd4
--- /dev/null
+++ b/include/mme-app/contextManager/mmeProcedureCtxtManager.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2019-present, Infosys Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.
+ */
+
+#ifndef __MmeProcedureCtxtManager__
+#define __MmeProcedureCtxtManager__
+/******************************************************
+* mmeProcedureCtxtManager.h
+ * This is an auto generated file.
+ * Please do not edit this file.
+ * All edits to be made through template source file
+ * <TOP-DIR/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.h.tt>
+ ***************************************/
+#include "memPoolManager.h"
+
+namespace mme
+{
+	class MmeProcedureCtxt;
+	class MmeProcedureCtxtManager
+	{
+	public:
+		/****************************************
+		* MmeProcedureCtxtManager
+		*  constructor
+		****************************************/
+		MmeProcedureCtxtManager(int numOfBlocks);
+		
+		/****************************************
+		* MmeProcedureCtxtManager
+		*    Destructor
+		****************************************/
+		~MmeProcedureCtxtManager();
+		
+		/******************************************
+		 * allocateMmeProcedureCtxt
+		 *  allocate MmeProcedureCtxt data block
+		 ******************************************/
+		MmeProcedureCtxt* allocateMmeProcedureCtxt();
+		
+		/******************************************
+		 * deallocateMmeProcedureCtxt
+		 *  deallocate a MmeProcedureCtxt data block
+		 ******************************************/
+		void deallocateMmeProcedureCtxt(MmeProcedureCtxt* MmeProcedureCtxtp );
+	
+	private:
+		cmn::memPool::MemPoolManager<MmeProcedureCtxt> poolManager_m;
+	};
+};
+
+#endif
+		
+		
diff --git a/include/mme-app/contextManager/mmeSvcReqProcedureCtxtManager.h b/include/mme-app/contextManager/mmeSvcReqProcedureCtxtManager.h
new file mode 100644
index 0000000..cd3e55a
--- /dev/null
+++ b/include/mme-app/contextManager/mmeSvcReqProcedureCtxtManager.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2019, Infosys Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.
+ */
+
+#ifndef __MmeSvcReqProcedureCtxtManager__
+#define __MmeSvcReqProcedureCtxtManager__
+/******************************************************
+* mmeSvcReqProcedureCtxtManager.h
+ * This is an auto generated file.
+ * Please do not edit this file.
+ * All edits to be made through template source file
+ * <TOP-DIR/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.h.tt>
+ ***************************************/
+#include "memPoolManager.h"
+
+namespace mme
+{
+	class MmeSvcReqProcedureCtxt;
+	class MmeSvcReqProcedureCtxtManager
+	{
+	public:
+		/****************************************
+		* MmeSvcReqProcedureCtxtManager
+		*  constructor
+		****************************************/
+		MmeSvcReqProcedureCtxtManager(int numOfBlocks);
+		
+		/****************************************
+		* MmeSvcReqProcedureCtxtManager
+		*    Destructor
+		****************************************/
+		~MmeSvcReqProcedureCtxtManager();
+		
+		/******************************************
+		 * allocateMmeSvcReqProcedureCtxt
+		 *  allocate MmeSvcReqProcedureCtxt data block
+		 ******************************************/
+		MmeSvcReqProcedureCtxt* allocateMmeSvcReqProcedureCtxt();
+		
+		/******************************************
+		 * deallocateMmeSvcReqProcedureCtxt
+		 *  deallocate a MmeSvcReqProcedureCtxt data block
+		 ******************************************/
+		void deallocateMmeSvcReqProcedureCtxt(MmeSvcReqProcedureCtxt* MmeSvcReqProcedureCtxtp );
+	
+	private:
+		cmn::memPool::MemPoolManager<MmeSvcReqProcedureCtxt> poolManager_m;
+	};
+};
+
+#endif
+		
+		
diff --git a/include/mme-app/contextManager/mmeTauProcedureCtxtManager.h b/include/mme-app/contextManager/mmeTauProcedureCtxtManager.h
new file mode 100644
index 0000000..da46b7f
--- /dev/null
+++ b/include/mme-app/contextManager/mmeTauProcedureCtxtManager.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2019, Infosys Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.
+ */
+
+#ifndef __MmeTauProcedureCtxtManager__
+#define __MmeTauProcedureCtxtManager__
+/******************************************************
+ * MmeTauProcedureCtxtManager.h
+ * This is an auto generated file.
+ * Please do not edit this file.
+ * All edits to be made through template source file
+ * <TOP-DIR/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.h.tt>
+ ***************************************/
+#include "memPoolManager.h"
+
+namespace mme
+{
+	class MmeTauProcedureCtxt;
+	class MmeTauProcedureCtxtManager
+	{
+	public:
+		/****************************************
+		* MmeTauProcedureCtxtManager
+		*  constructor
+		****************************************/
+		MmeTauProcedureCtxtManager(int numOfBlocks);
+		
+		/****************************************
+		* MmeTauProcedureCtxtManager
+		*    Destructor
+		****************************************/
+		~MmeTauProcedureCtxtManager();
+		
+		/******************************************
+		* allocateMmeTauProcedureCtxt
+		*  allocate MmeTauProcedureCtxt data block
+		******************************************/
+		MmeTauProcedureCtxt* allocateMmeTauProcedureCtxt();
+		
+		/******************************************
+		* deallocateMmeTauProcedureCtxt
+		*  deallocate a MmeTauProcedureCtxt data block
+		******************************************/
+		void deallocateMmeTauProcedureCtxt(MmeTauProcedureCtxt* MmeTauProcedureCtxtp );
+	
+	private:
+		cmn::memPool::MemPoolManager<MmeTauProcedureCtxt> poolManager_m;
+	};
+};
+
+#endif
+		
+		
diff --git a/include/mme-app/contextManager/sessionContextManager.h b/include/mme-app/contextManager/sessionContextManager.h
new file mode 100644
index 0000000..7b55924
--- /dev/null
+++ b/include/mme-app/contextManager/sessionContextManager.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2019-present, Infosys Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.
+ */
+
+#ifndef __SessionContextManager__
+#define __SessionContextManager__
+/******************************************************
+* sessionContextManager.h
+ * This is an auto generated file.
+ * Please do not edit this file.
+ * All edits to be made through template source file
+ * <TOP-DIR/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.h.tt>
+ ***************************************/
+#include "memPoolManager.h"
+
+namespace mme
+{
+	class SessionContext;
+	class SessionContextManager
+	{
+	public:
+		/****************************************
+		* SessionContextManager
+		*  constructor
+		****************************************/
+		SessionContextManager(int numOfBlocks);
+		
+		/****************************************
+		* SessionContextManager
+		*    Destructor
+		****************************************/
+		~SessionContextManager();
+		
+		/******************************************
+		 * allocateSessionContext
+		 *  allocate SessionContext data block
+		 ******************************************/
+		SessionContext* allocateSessionContext();
+		
+		/******************************************
+		 * deallocateSessionContext
+		 *  deallocate a SessionContext data block
+		 ******************************************/
+		void deallocateSessionContext(SessionContext* SessionContextp );
+	
+	private:
+		cmn::memPool::MemPoolManager<SessionContext> poolManager_m;
+	};
+};
+
+#endif
+		
+		
diff --git a/include/mme-app/contextManager/subsDataGroupManager.h b/include/mme-app/contextManager/subsDataGroupManager.h
new file mode 100644
index 0000000..b8d7b16
--- /dev/null
+++ b/include/mme-app/contextManager/subsDataGroupManager.h
@@ -0,0 +1,270 @@
+/*
+ * Copyright 2019-present, Infosys Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.
+ */
+
+#ifndef __SUBS_DATAGROUPMANAGER__
+#define __SUBS_DATAGROUPMANAGER__
+/**************************************
+ *
+ * This is an auto generated file.
+ * Please do not edit this file.
+ * All edits to be made through template source file
+ * <TOP-DIR/scripts/SMCodeGen/templates/ctxtManagerTmpls/subsDataGroupManager.h.tt>
+ ***************************************/
+#include <map>
+#include <mutex>
+
+#include "dataGroupManager.h"
+#include "contextManager/dataBlocks.h"
+#include "contextManager/uEContextManager.h"
+#include "contextManager/mmContextManager.h"
+#include "contextManager/sessionContextManager.h"
+#include "contextManager/bearerContextManager.h"
+#include "contextManager/mmeProcedureCtxtManager.h"
+#include "contextManager/mmeDetachProcedureCtxtManager.h"
+#include "contextManager/mmeSvcReqProcedureCtxtManager.h"
+#include "contextManager/mmeTauProcedureCtxtManager.h"
+
+
+namespace mme
+{	
+	class SubsDataGroupManager:public cmn::DGM::DataGroupManager
+	{
+		public:
+		
+			/******************************************
+			* Instance 
+			*    Creates static instance for the SubsDataGroupManager
+			*******************************************/
+			static SubsDataGroupManager* Instance();
+	
+			/****************************************
+			* SubsDataGroupManager
+			*    Destructor
+			****************************************/
+			virtual ~SubsDataGroupManager();
+			
+			/******************************************
+			* initialize
+			*  Initializes control block and pool managers
+			******************************************/
+			void initialize();
+
+			/******************************************
+			* getUEContext
+			*  Get UEContext data block
+			******************************************/
+			UEContext* getUEContext();
+			
+			/******************************************
+			* deleteUEContext
+			*  Delete a UEContext data block
+			******************************************/
+			void deleteUEContext(UEContext* UEContextp );
+			
+			/******************************************
+			* getMmContext
+			*  Get MmContext data block
+			******************************************/
+			MmContext* getMmContext();
+			
+			/******************************************
+			* deleteMmContext
+			*  Delete a MmContext data block
+			******************************************/
+			void deleteMmContext(MmContext* MmContextp );
+			
+			/******************************************
+			* getSessionContext
+			*  Get SessionContext data block
+			******************************************/
+			SessionContext* getSessionContext();
+			
+			/******************************************
+			* deleteSessionContext
+			*  Delete a SessionContext data block
+			******************************************/
+			void deleteSessionContext(SessionContext* SessionContextp );
+			
+			/******************************************
+			* getBearerContext
+			*  Get BearerContext data block
+			******************************************/
+			BearerContext* getBearerContext();
+			
+			/******************************************
+			* deleteBearerContext
+			*  Delete a BearerContext data block
+			******************************************/
+			void deleteBearerContext(BearerContext* BearerContextp );
+			
+			/******************************************
+			* getMmeProcedureCtxt
+			*  Get MmeProcedureCtxt data block
+			******************************************/
+			MmeProcedureCtxt* getMmeProcedureCtxt();
+			
+			/******************************************
+			* deleteMmeProcedureCtxt
+			*  Delete a MmeProcedureCtxt data block
+			******************************************/
+			void deleteMmeProcedureCtxt(MmeProcedureCtxt* MmeProcedureCtxtp );
+			
+			/******************************************
+			* getMmeDetachProcedureCtxt
+			*  Get MmeDetachProcedureCtxt data block
+			****************************************/
+			MmeDetachProcedureCtxt* getMmeDetachProcedureCtxt();
+
+			/******************************************
+                        * deleteMmeDetachProcedureCtxt
+                        *  Delete a MmeDetachProcedureCtxt data block
+                        ******************************************/
+                        void deleteMmeDetachProcedureCtxt(MmeDetachProcedureCtxt* MmeDetachProcedureCtxtp );
+			
+			/******************************************
+			* getMmeSvcReqProcedureCtxt
+			*  Get MmeSvcReqProcedureCtxt data block
+			******************************************/
+			MmeSvcReqProcedureCtxt* getMmeSvcReqProcedureCtxt();
+
+                        /******************************************
+                        * deleteMmeSvcReqProcedureCtxt
+                        *  Delete a MmeSvcReqProcedureCtxt data block
+                        ******************************************/
+                        void deleteMmeSvcReqProcedureCtxt(MmeSvcReqProcedureCtxt* MmeSvcReqProcedureCtxtp );
+						
+			/******************************************
+			* getMmeTauProcedureCtxt
+			*  Get MmeTauProcedureCtxt data block
+			******************************************/
+			MmeTauProcedureCtxt* getMmeTauProcedureCtxt();
+			
+			/******************************************
+			* deleteMmeTauProcedureCtxt
+			*  Delete a MmeTauProcedureCtxt data block
+			******************************************/
+			void deleteMmeTauProcedureCtxt(MmeTauProcedureCtxt* MmeTauProcedureCtxtp );
+
+			/******************************************
+			* addimsikey
+			* Add a imsi as key and cb index as value to imsi_cb_id_map
+			******************************************/
+			int addimsikey( DigitRegister15 key, int cb_index );
+			
+			/******************************************
+			* deleteimsikey
+			* delete a imsi key from imsi_cb_id_map
+			******************************************/
+			int deleteimsikey( DigitRegister15 key );
+			
+			/******************************************
+			* findCBWithimsi
+			* Find cb with given imsi from imsi_cb_id_map
+			******************************************/
+			int findCBWithimsi( DigitRegister15 key );
+
+			/******************************************
+			* addmTmsikey
+			* Add a mTmsi as key and cb index as value to mTmsi_cb_id_map
+			******************************************/
+			int addmTmsikey( uint32_t mTmsi, int cb_index );
+
+			/******************************************
+			* deletemTmsikey
+			* delete a mTmsi key from mTmsi_cb_id_map
+			******************************************/
+			int deletemTmsikey( uint32_t key );
+			
+			/******************************************
+			* findCBWithmTmsi
+			* Find cb with given mTmsi from mTmsi_cb_id_map
+			******************************************/
+			int findCBWithmTmsi( uint32_t key );
+			
+		private:
+			
+			/****************************************
+			* SubsDataGroupManager
+			*    Private constructor
+			****************************************/
+			SubsDataGroupManager();  
+			
+			/****************************************
+			* UEContext Pool Manager
+			****************************************/
+			UEContextManager* UEContextManagerm_p;
+			
+			/****************************************
+			* MmContext Pool Manager
+			****************************************/
+			MmContextManager* MmContextManagerm_p;
+			
+			/****************************************
+			* SessionContext Pool Manager
+			****************************************/
+			SessionContextManager* SessionContextManagerm_p;
+			
+			/****************************************
+			* BearerContext Pool Manager
+			****************************************/
+			BearerContextManager* BearerContextManagerm_p;
+			
+			/****************************************
+			* MmeProcedureCtxt Pool Manager
+			****************************************/
+			MmeProcedureCtxtManager* MmeProcedureCtxtManagerm_p;
+			
+			/****************************************
+			* MmeDetachProcedureCtxt Pool Manager
+			****************************************/
+			MmeDetachProcedureCtxtManager* MmeDetachProcedureCtxtManagerm_p;
+
+			/****************************************
+			* MmeSvcReqProcedureCtxt Pool Manager
+			****************************************/
+			MmeSvcReqProcedureCtxtManager* MmeSvcReqProcedureCtxtManagerm_p;
+						
+			/****************************************
+			* MmeTauProcedureCtxt Pool Manager
+			****************************************/
+			MmeTauProcedureCtxtManager* MmeTauProcedureCtxtManagerm_p;
+
+			/****************************************
+			* imsi Key Map
+			****************************************/
+			std::map<DigitRegister15, int> imsi_cb_id_map;
+
+			/****************************************
+			 * imsi Key Map Mutex
+			 ****************************************/
+			std::mutex imsi_cb_id_map_mutex;
+
+			/****************************************
+			* mTmsi Key Map
+			****************************************/
+			std::map<uint32_t, int> mTmsi_cb_id_map;
+
+			/****************************************
+			* mTmsi Key Map Mutex
+			****************************************/
+			std::mutex mTmsi_cb_id_map_mutex;
+
+	};
+};
+
+
+
+#endif
diff --git a/include/mme-app/contextManager/uEContextManager.h b/include/mme-app/contextManager/uEContextManager.h
new file mode 100644
index 0000000..1daa305
--- /dev/null
+++ b/include/mme-app/contextManager/uEContextManager.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2019, Infosys Limited.
+ *
+ * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.
+ */
+
+#ifndef __UEContextManager__
+#define __UEContextManager__
+/******************************************************
+* uEContextManager.h
+ * This is an auto generated file.
+ * Please do not edit this file.
+ * All edits to be made through template source file
+ * <TOP-DIR/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.h.tt>
+ ***************************************/
+#include "memPoolManager.h"
+
+namespace mme
+{
+	class UEContext;
+
+	class UEContextManager
+	{
+	public:
+		/****************************************
+		* UEContextManager
+		*  constructor
+		****************************************/
+		UEContextManager(int numOfBlocks);
+		
+		/****************************************
+		* UEContextManager
+		*    Destructor
+		****************************************/
+		~UEContextManager();
+		
+		/******************************************
+		 * getUEContext
+		 *  get UEContext data block
+		 ******************************************/
+		UEContext* allocateUEContext();
+		
+		/******************************************
+		 * deleteUEContext
+		 *  deallocate a UEContext data block
+		 ******************************************/
+		void deallocateUEContext(UEContext* UEContextp );
+	
+	private:
+		cmn::memPool::MemPoolManager<UEContext> poolManager_m;
+	};
+};
+
+#endif
+		
+