diff --git a/scripts/SMCodeGen/README.txt b/scripts/SMCodeGen/README.txt
new file mode 100644
index 0000000..66c7ac3
--- /dev/null
+++ b/scripts/SMCodeGen/README.txt
@@ -0,0 +1,28 @@
+Requirements:
+1.Python3.6.
+2.Install the template-toolkit package.
+	a. pip install Template-Toolkit-Python or 
+	b. git clone https://github.com/lmr/Template-Toolkit-Python, and set the path of the package in the codeGen.py script [as argument in sys.path.append]
+
+Inputs:
+	2 Json files:
+		generateItem.json - Defines path of templates, the class type to be generated(State/actionHandler/Enum), output directory to be produced.
+		stateMachineAppModel.json - Defines procedures, states for each procedure, event for each state, actions to be taken under each event and nextstate of the procedure.
+	
+		Existing actionHandler.h and attachActionHandlers.cpp,detachActionHandlers.cpp,s1ReleaseActionHandlers.cpp files from <top-dir>/include/mme-app/actionHandlers and <top-dir>/src/mme-app/actionHandlers respectively.
+		Place it in output directories as the output produced should be merged with existing file properly. 
+
+Output:
+	1.	mme states .cpp and header files. Copy to <top-dir>/src/mme-app/mme-states and <top-dir>/include/mme-app/mme-states
+	2.	stateFactory.h and stateFactory.cpp Copy to <top-dir>/src/mme-app/mme-states and <top-dir>/include/mme-app/mme-states
+	3.	actionHandlers
+			actionHandler.h and actionHandler source files per procedure (eg: attachActionHandlers.cpp, detachActionHandlers.cpp )
+			actionHandler.h should be placed in <top-dir>/include/mme-app/actionHandlers
+			attachActionHandler.cpp should placed in <top-dir>/src/mme-app/actionHandlers
+	4.	enums used by the MME state machine - <top-dir>/include/stateMachineFwk
+
+Execution:
+-Run the below command:
+	python codeGen.py
+
+
diff --git a/scripts/SMCodeGen/__init__.py b/scripts/SMCodeGen/__init__.py
new file mode 100644
index 0000000..95b7eed
--- /dev/null
+++ b/scripts/SMCodeGen/__init__.py
@@ -0,0 +1,15 @@
+# 
+# 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.
+# 
diff --git a/scripts/SMCodeGen/codeGen.py b/scripts/SMCodeGen/codeGen.py
new file mode 100644
index 0000000..15259be
--- /dev/null
+++ b/scripts/SMCodeGen/codeGen.py
@@ -0,0 +1,79 @@
+# 
+# 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.
+# 
+
+import json, sys, os
+from os.path import join
+import utils
+
+with open('dataModels/stateMachineAppModel.json') as jsonFile:
+    stateMachineAppModelJSON = json.load(jsonFile)
+with open('dataModels/ctxtManagerAppModel.json') as jsonFile:
+    contextMgrAppModelJSON = json.load(jsonFile)
+
+def processTemplate(templateIp):
+    from template import Template
+    
+    utils.outputFileName = ''
+    if utils.outputFileKeyword != '':
+        utils.outputFileName = utils.getFileName(templateIp[utils.outputFileKeyword])    
+    if utils.outputFile != '':
+        utils.outputFileName = utils.outputFileName + utils.outputFile
+    
+    utils.outputFileName = utils.outputFileName + utils.outputFileExt
+
+    tt = Template({'EVAL_PYTHON':1, 'AUTO_RESET':1})
+    op = tt.process(utils.ttFileName, {'TemplateInputVar' : templateIp})
+    utils.WriteFile(utils.outputDir, utils.outputFileName, op, utils.mode)
+
+def getTemplateIn(appModelItems, depth):
+    depthChanged = False
+
+    if (depth == 0):
+        print(appModelItems)
+        processTemplate(appModelItems)
+        return
+    
+    if depthChanged == False:
+        depth = depth - 1
+        depthChanged = True
+        
+    for item in appModelItems:
+        getTemplateIn(item, depth)
+      
+def genCppCode(genModel, appModelJSON):
+    for item in genModel:
+        keyWord = item["appModelKeyword"]
+        depth = item["appModelValueDepth"]
+        utils.ttFileName = item["templateFile"]
+        utils.outputDir = item["outputPath"]
+        utils.outputFile = item["outputFile"]
+        utils.outputFileKeyword = item["outputFileKey"]
+        utils.outputFileExt = item["outputFileExt"]
+        utils.mode = item["mode"]
+        
+        if not os.path.exists(utils.outputDir):
+            os.makedirs(utils.outputDir)
+        
+        appModelItems = utils.get_key_values(appModelJSON, keyWord) 
+        getTemplateIn(appModelItems, depth)
+            
+with open('dataModels/generationItem.json') as JSONFile:
+    GenItemJSON = json.load(JSONFile)
+    if 'Model1' in GenItemJSON:
+        genCppCode(GenItemJSON['Model1'], stateMachineAppModelJSON)
+    if "Model2" in GenItemJSON:
+        genCppCode(GenItemJSON['Model2'], contextMgrAppModelJSON)
+    
diff --git a/scripts/SMCodeGen/dataModels/ctxtManagerAppModel.json b/scripts/SMCodeGen/dataModels/ctxtManagerAppModel.json
new file mode 100644
index 0000000..0d6c83e
--- /dev/null
+++ b/scripts/SMCodeGen/dataModels/ctxtManagerAppModel.json
@@ -0,0 +1,309 @@
+{
+"DataStore":
+	{
+     "DataGroups":[
+        {
+		"DgName":"SubscriberData",
+		"PoolSize":"8000",
+         "DataBlocks":[
+            {
+			"BlockName":"UEContext",
+            "BlockType":"Permanent",
+            "Parent":"None",
+            "Children":["MmContext", "SessionContext"],
+            "PoolSize":"8000",
+            "Cardinality":"1",
+            "Data":[
+                {
+				"Name": "enbFd",
+                "Type": "int",
+				"Key":"No"
+				},
+                {
+				"Name": "s1apEnbUeId",
+                "Type": "int",
+				"Key":"No"
+				},
+                {
+				"Name": "subscriptionStatus",
+                "Type": "int",
+				"Key":"No"
+				},
+                {
+				"Name": "netAccessMode",
+                "Type": "int",
+				"Key":"No"
+				},
+                {
+				"Name": "contextID",
+                "Type": "uint32_t",
+				"Key":"No"
+				},
+                {
+				"Name": "rauTauTimer",
+                "Type": "unsigned int",
+				"Key":"No"
+				},
+                {
+				"Name": "accessRestrictionData",
+                "Type": "unsigned int",
+				"Key":"No"
+				},
+                {
+				"Name": "imsi",
+                "Type": "DigitRegister15",
+				"Key":"Yes"
+				},
+                {
+				"Name": "mTmsi",
+                "Type": "uint32_t",
+				"Key":"Yes"
+				},
+                {
+				"Name": "msisdn",
+                "Type": "DigitRegister15",
+				"Key":"No"
+				},
+                {
+				"Name": "dwnLnkSeqNo",
+                "Type": "unsigned short",
+				"Key":"No"
+				},
+                {
+				"Name": "upLnkSeqNo",
+                "Type": "unsigned short",
+				"Key":"No"
+				},
+                {
+				"Name": "ueState",
+                "Type": "UE_State_e",
+				"Key":"No"
+				},
+                {
+				"Name": "tai",
+                "Type": "Tai",
+				"Key":"No"
+				},
+                {
+				"Name": "utranCgi",
+                "Type": "Cgi",
+				"Key":"No"
+				},
+                {
+				"Name": "msNetCapab",
+                "Type": "Ms_net_capab",
+				"Key":"No"
+				},
+                {
+				"Name": "ueNetCapab",
+                "Type": "Ue_net_capab",
+				"Key":"No"
+				},
+                {
+				"Name": "ueSecInfo",
+                "Type": "Secinfo",
+				"Key":"No"
+				},
+                {
+				"Name": "ambr",
+                "Type": "Ambr",
+				"Key":"No"
+				},
+                {
+				"Name": "aiaSecInfo",
+                "Type": "E_utran_sec_vector",
+				"Key":"No"
+				}
+                ]
+            },
+			{
+			"BlockName":"MmContext",
+            "BlockType":"Permanent",
+            "Parent":"UEContext",
+            "Children":[],
+            "PoolSize":"8000",
+            "Cardinality":"1",
+            "Data":[
+                {
+				"Name": "mmState",
+                "Type": "EmmState",
+				"Key":"No"
+				}
+				]
+            },
+            {
+			"BlockName":"SessionContext",
+            "BlockType":"Permanent",
+            "Parent":"UEContext",
+            "Children":["BearerContext"],
+            "PoolSize":"8000",
+            "Cardinality":"3",
+            "Data":[
+                {
+				"Name": "sessionId",
+                "Type": "uint8_t",
+				"Key" : "No"
+				},
+				{
+				"Name": "s11SgwCtrlFteid",
+                "Type": "Fteid",
+				"Key":"No"
+				},
+				{
+				"Name": "s5S8PgwCtrlFteid",
+                "Type": "Fteid",
+				"Key":"No"
+				},
+				{
+				"Name": "pdnAddr",
+                "Type": "Paa",
+				"Key":"No"
+				},
+				{
+				"Name": "accessPtName",
+                "Type": "Apn_name",
+				"Key":"No"
+				},
+				{
+				"Name": "apnConfigProfileCtxId",
+                "Type": "unsigned int",
+				"Key":"No"
+				}
+                ]
+            },
+            {
+			"BlockName":"BearerContext",
+            "BlockType":"Permanent",
+            "Parent":"SessionContext",
+            "PoolSize":"8000",
+            "Cardinality":"11",
+            "Data":[
+				{
+				"Name": "s1uSgwUserFteid",
+                "Type": "Fteid",
+				"Key":"No"
+				},
+                {
+				"Name": "s5S8PgwUserFteid",
+				"Type": "Fteid",
+				"Key":"No"
+				},
+                {
+				"Name": "s1uEnbUserFteid",
+				"Type": "Fteid",
+				"Key":"No"
+				},
+                {
+				"Name": "bearerId",
+				"Type": "unsigned char",
+				"Key":"No"
+				}
+                ]
+			},
+			{
+			"BlockName":"MmeProcedureCtxt",
+            "BlockType":"Temporary",
+            "PoolSize":"8000",
+            "Cardinality":"1",
+            "Data":[
+				{
+				"Name": "ctxtType",
+                "Type": "ProcedureType",
+				"Key":"No"
+				},
+				{
+				"Name": "mmeErrorCause",
+                "Type": "MmeErrorCause",
+				"Key":"No"
+				},	
+				{
+				"Name": "attachType",
+                "Type": "AttachType",
+				"Key":"No"
+				},
+				{
+				"Name": "pti",
+                "Type": "uint8_t",
+				"Key":"No"
+				},
+				{
+				"Name": "esmInfoTxRequired",
+                "Type": "bool",
+				"Key":"No"
+				}
+                ]
+			},
+			{
+			"BlockName":"MmeDetachProcedureCtxt",
+            "BlockType":"Temporary",
+            "PoolSize":"8000",
+            "Cardinality":"1",
+            "Data":[
+				{
+				"Name": "detachType",
+                "Type": "DetachType",
+				"Key":"No"
+				},
+				{
+				"Name": "cancellationType",
+                "Type": "CancellationType",
+				"Key":"No"
+				}
+                ]
+			},			
+            {
+			"BlockName":"MmeSvcReqProcedureCtxt",
+            "BlockType":"Temporary",
+            "PoolSize":"8000",
+            "Cardinality":"1",
+            "Data":[
+				{
+				"Name": "pagingTrigger",
+                "Type": "PagingTrigger",
+				"Key":"No"
+				},
+				{
+				"Name": "epsBearerId",
+                "Type": "uint8_t",
+				"Key":"No"
+				},
+				{
+				"Name": "arp",
+                "Type": "Arp",
+				"Key":"No"
+				},
+				{
+				"Name": "ddnSeqNum",
+                "Type": "uint32_t",
+				"Key":"No"
+				}
+			]
+			},
+			{
+			"BlockName":"MmeTauProcedureCtxt",
+            "BlockType":"Temporary",
+            "PoolSize":"8000",
+            "Cardinality":"1",
+            "Data":[
+				{
+				"Name": "s1apEnbUeId",
+                "Type": "int",
+				"Key":"No"
+				},
+                {
+				"Name": "tai",
+                "Type": "Tai",
+				"Key":"No"
+				},				
+				{
+				"Name": "enbFd",
+                "Type": "int",
+				"Key":"No"
+				}
+                ]
+			}
+            ]
+        }
+        ]
+	}
+}
diff --git a/scripts/SMCodeGen/dataModels/generationItem.json b/scripts/SMCodeGen/dataModels/generationItem.json
new file mode 100644
index 0000000..c14504a
--- /dev/null
+++ b/scripts/SMCodeGen/dataModels/generationItem.json
@@ -0,0 +1,118 @@
+{
+    "Model1" :
+    [  
+	    {
+            "appModelKeyword" : "States",
+            "appModelValueDepth" : 2, 
+            "templateFile" : "templates/stateMachineTmpls/state.h.tt",
+            "outputPath" : "output/states/headers",
+            "outputFile": "",
+            "outputFileKey": "Name",
+            "outputFileExt" : ".h",
+            "mode" : "overwrite"
+        },
+        {
+            "appModelKeyword" : "States",
+            "appModelValueDepth" : 2, 
+            "templateFile" : "templates/stateMachineTmpls/state.cpp.tt",
+            "outputPath" : "output/states/cpp",
+            "outputFile": "",
+            "outputFileKey": "Name",
+            "outputFileExt" : ".cpp",
+            "mode" : "overwrite"
+        },
+        {
+            "appModelKeyword" : "Procedures",
+            "appModelValueDepth" : 0, 
+            "templateFile" : "templates/stateMachineTmpls/enum.tt",
+            "outputPath" : "output/enums",
+            "outputFile": "smEnumTypes",
+            "outputFileKey": "",
+            "outputFileExt" : ".h",
+            "mode" : "overwrite"
+        },
+        {
+            "appModelKeyword" : "Actions",
+            "appModelValueDepth" : 0, 
+            "templateFile" : "templates/stateMachineTmpls/actionHandlers.h.tt",
+            "outputPath" : "output/actionHandler/header",
+            "outputFile": "actionHandlers",
+            "outputFileKey": "",
+            "outputFileExt" : ".h",
+            "mode" : "overwrite"
+        },    
+        {
+            "appModelKeyword" : "Procedures",
+            "appModelValueDepth" : 2, 
+            "templateFile" : "templates/stateMachineTmpls/actionHandlers.cpp.tt",
+            "outputPath" : "output/actionHandler/cpp",
+            "outputFile": "ActionHandlers",
+            "outputFileKey": "Name",
+            "outputFileExt" : ".cpp",
+            "mode" : "append"
+        },
+	    {
+    	    "appModelKeyword" : "States",
+            "appModelValueDepth" : 0,
+            "templateFile" : "templates/stateMachineTmpls/stateFactory.cpp.tt",
+            "outputPath" : "output/states/cpp",
+            "outputFile": "stateFactory",
+            "outputFileKey": "",
+            "outputFileExt" : ".cpp",
+            "mode" : "overwrite"
+	    },
+	    {
+    	    "appModelKeyword" : "States",
+            "appModelValueDepth" : 0,
+            "templateFile" : "templates/stateMachineTmpls/stateFactory.h.tt",
+            "outputPath" : "output/states/headers",
+            "outputFile": "stateFactory",
+            "outputFileKey": "",
+            "outputFileExt" : ".h",
+            "mode" : "overwrite"
+	    }
+    ],
+    "Model2" :
+    [
+	    {
+            "appModelKeyword" : "DataBlocks",
+            "appModelValueDepth" : 2,
+            "templateFile" : "templates/ctxtManagerTmpls/blockPoolManager.h.tt",
+            "outputPath" : "output/contextManager/dg/headers",
+            "outputFile": "Manager",
+            "outputFileKey": "BlockName",
+            "outputFileExt" : ".h",
+            "mode" : "overwrite"
+        },
+	    {
+            "appModelKeyword" : "DataBlocks",
+            "appModelValueDepth" : 2,
+            "templateFile" : "templates/ctxtManagerTmpls/blockPoolManager.cpp.tt",
+            "outputPath" : "output/contextManager/dg/cpp",
+            "outputFile": "Manager",
+            "outputFileKey": "BlockName",
+            "outputFileExt" : ".cpp",
+            "mode" : "overwrite"
+        },
+	    {
+            "appModelKeyword" : "DataGroups",
+            "appModelValueDepth" : 2,
+            "templateFile" : "templates/ctxtManagerTmpls/subsDataGroupManager.h.tt",
+            "outputPath" : "output/contextManager/dg/headers",
+            "outputFile": "subsDataGroupManager",
+            "outputFileKey": "",
+            "outputFileExt" : ".h",
+            "mode" : "overwrite"
+        },
+	    {
+            "appModelKeyword" : "DataGroups",
+            "appModelValueDepth" : 2,
+            "templateFile" : "templates/ctxtManagerTmpls/subsDataGroupManager.cpp.tt",
+            "outputPath" : "output/contextManager/dg/cpp",
+            "outputFile": "subsDataGroupManager",
+            "outputFileKey": "",
+            "outputFileExt" : ".cpp",
+            "mode" : "overwrite"
+        }
+    ]
+}
diff --git a/scripts/SMCodeGen/dataModels/stateMachineAppModel.json b/scripts/SMCodeGen/dataModels/stateMachineAppModel.json
new file mode 100644
index 0000000..d72b6d2
--- /dev/null
+++ b/scripts/SMCodeGen/dataModels/stateMachineAppModel.json
@@ -0,0 +1,540 @@
+{
+    "Application":{
+        "Name":"mme",
+        "Procedures":[
+            {
+                "Name":"DEFAULT_MME_PROCEDURE",
+                "States":[
+                    {
+                        "Name":"default_mme_state",
+                        "Events":[
+                            {
+                                "Name":"ATTACH_REQ_FROM_UE",
+                                "Actions":[
+                                    "DEFAULT_ATTACH_REQ_HANDLER"
+                                ],
+                                "NextState":"end_state"
+                            },
+                            {
+                                "Name":"DETACH_REQ_FROM_UE",
+                                "Actions":[
+                                    "DEFAULT_DETACH_REQ_HANDLER"
+                                ],
+                                "NextState":"end_state"
+                            },
+                            {
+                                "Name":"S1_REL_REQ_FROM_UE",
+                                "Actions":[
+                                    "DEFAULT_S1_RELEASE_REQ_HANDLER"
+                                ],
+                                "NextState":"end_state"
+                            },
+                            {
+                                "Name":"DDN_FROM_SGW",
+                                "Actions":[
+                                    "DEFAULT_DDN_HANDLER"
+                                ],
+                                "NextState":"end_state"
+                            },
+                            {
+                                "Name":"SERVICE_REQUEST_FROM_UE",
+                                "Actions":[
+                                    "DEFAULT_SERVICE_REQ_HANDLER"
+                                ],
+                                "NextState":"end_state"
+                            },
+                            {
+                                "Name":"CLR_FROM_HSS",
+                                "Actions":[
+                                    "DEFAULT_CANCEL_LOC_REQ_HANDLER"
+                                ],
+                                "NextState":"end_state"
+                            },
+                            {
+                                "Name":"TAU_REQUEST_FROM_UE",
+                                "Actions":[
+                                    "DEFAULT_TAU_REQ_HANDLER"
+                                ],
+                                "NextState":"end_state"
+                            }
+                        ]
+                    }
+                ]
+            },
+            {
+                "Name":"ATTACH",
+                "States":[
+                    {
+                        "Name":"attach_start",
+                        "Events":[
+                            {
+                                "Name":"VALIDATE_IMSI",
+                                "Actions":[
+                                    "VALIDATE_IMSI_IN_UE_CONTEXT"
+                                ],
+                                "NextState":"attach_wf_imsi_validate_action"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"attach_wf_imsi_validate_action",
+                        "Events":[
+                            {
+                                "Name":"IMSI_VALIDATION_SUCCESS",
+                                "Actions":[
+                                    "SEND_AIR_TO_HSS"
+                                ],
+                                "NextState":"attach_wf_aia"
+                            },
+                            {
+                                "Name":"IMSI_VALIDATION_FAILURE",
+                                "Actions":[
+                                    "SEND_IDENTITY_REQUEST_TO_UE"
+                                ],
+                                "NextState":"attach_wf_identity_response"
+                            }
+                        ]
+                    },					
+                    {
+                        "Name":"attach_wf_aia",
+                        "Events":[
+                            {
+                                "Name":"AIA_FROM_HSS",
+                                "Actions":[
+                                    "PROCESS_AIA",
+                                    "AUTH_REQ_TO_UE"
+                                ],
+                                "NextState":"attach_wf_auth_resp"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"attach_wf_identity_response",
+                        "Events":[
+                            {
+                                "Name":"IDENTITY_RESPONSE_FROM_UE",
+                                "Actions":[
+                                    "PROCESS_IDENTITY_RESPONSE",
+                                    "SEND_AIR_TO_HSS"
+                                ],
+                                "NextState":"attach_wf_aia"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"attach_wf_auth_resp",
+                        "Events":[
+                            {
+                                "Name":"AUTH_RESP_FROM_UE",
+                                "Actions":[
+                                    "AUTH_RESPONSE_VALIDATE"
+                                ],
+                                "NextState":"attach_wf_auth_resp_validate"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"attach_wf_auth_resp_validate",
+                        "Events":[
+                            {
+                                "Name":"AUTH_RESP_SUCCESS",
+                                "Actions":[
+                                    "SEC_MODE_CMD_TO_UE"
+                                ],
+                                "NextState":"attach_wf_sec_cmp"
+                            },
+                            {
+                                "Name":"AUTH_RESP_SYNC_FAILURE",
+                                "Actions":[
+                                    "SEND_AIR_TO_HSS"
+                                ],
+                                "NextState":"attach_wf_aia"
+                            },
+                            {
+                                "Name":"AUTH_RESP_FAILURE",
+                                "Actions":[
+                                    "SEND_AUTH_REJECT"
+                                ],
+                                "NextState":"end_state"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"attach_wf_sec_cmp",
+                        "Events":[
+                            {
+                                "Name":"SEC_MODE_RESP_FROM_UE",
+                                "Actions":[
+                                    "PROCESS_SEC_MODE_RESP",
+                                    "CHECK_ESM_INFO_REQ_REQUIRED"
+                                ],
+                                "NextState":"attach_wf_esm_info_check"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"attach_wf_esm_info_check",
+                        "Events":[
+                            {
+                                "Name":"ESM_INFO_REQUIRED",
+                                "Actions":[
+                                    "SEND_ESM_INFO_REQ_TO_UE"
+                                ],
+                                "NextState":"attach_wf_esm_info_resp"
+                            },
+                            {
+                                "Name":"ESM_INFO_NOT_REQUIRED",
+                                "Actions":[
+                                    "SEND_ULR_TO_HSS"
+                                ],
+                                "NextState":"attach_wf_ula"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"attach_wf_esm_info_resp",
+                        "Events":[
+                            {
+                                "Name":"ESM_INFO_RESP_FROM_UE",
+                                "Actions":[
+                                    "PROCESS_ESM_INFO_RESP",
+                                    "SEND_ULR_TO_HSS"
+                                ],
+                                "NextState":"attach_wf_ula"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"attach_wf_ula",
+                        "Events":[
+                            {
+                                "Name":"ULA_FROM_HSS",
+                                "Actions":[
+                                    "PROCESS_ULA",
+                                    "CS_REQ_TO_SGW"
+                                ],
+                                "NextState":"attach_wf_cs_resp"
+                            }
+                        ]
+                    },					
+                    {
+                        "Name":"attach_wf_cs_resp",
+                        "Events":[
+                            {
+                                "Name":"CS_RESP_FROM_SGW",
+                                "Actions":[
+                                    "PROCESS_CS_RESP",
+                                    "SEND_INIT_CTXT_REQ_TO_UE"
+                                ],
+                                "NextState":"attach_wf_init_ctxt_resp_att_cmp"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"attach_wf_init_ctxt_resp_att_cmp",
+                        "Events":[
+                            {
+                                "Name":"INIT_CTXT_RESP_FROM_UE",
+                                "Actions":[
+                                    "PROCESS_INIT_CTXT_RESP"
+                                ],
+                                "NextState":"attach_wf_att_cmp"
+                            },
+                            {
+                                "Name":"ATT_CMP_FROM_UE",
+                                "Actions":[
+                                    "PROCESS_ATTACH_CMP_FROM_UE"
+                                ],
+                                "NextState":"attach_wf_init_ctxt_resp"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"attach_wf_init_ctxt_resp",
+                        "Events":[
+                            {
+                                "Name":"INIT_CTXT_RESP_FROM_UE",
+                                "Actions":[
+                                    "PROCESS_INIT_CTXT_RESP",
+                                    "SEND_MB_REQ_TO_SGW"
+                                ],
+                                "NextState":"attach_wf_mb_resp"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"attach_wf_att_cmp",
+                        "Events":[
+                            {
+                                "Name":"ATT_CMP_FROM_UE",
+                                "Actions":[
+                                    "PROCESS_ATTACH_CMP_FROM_UE",
+                                    "SEND_MB_REQ_TO_SGW"
+                                ],
+                                "NextState":"attach_wf_mb_resp"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"attach_wf_mb_resp",
+                        "Events":[
+                            {
+                                "Name":"MB_RESP_FROM_SGW",
+                                "Actions":[
+                                    "PROCESS_MB_RESP",
+                                    "ATTACH_DONE"
+                                ],
+                                "NextState":"end_state"
+                            }
+                        ]
+                    }
+                ]
+            },
+            {
+                "Name":"UE_INIT_DETACH",
+                "States":[
+                    {
+                        "Name":"detach_start",
+                        "Events":[
+                            {
+                                "Name":"DETACH_REQ_FROM_UE",
+                                "Actions":[
+                                    "DEL_SESSION_REQ"
+                                ],
+                                "NextState":"detach_wf_del_session_resp"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"detach_wf_del_session_resp",
+                        "Events":[
+                            {
+                                "Name":"DEL_SESSION_RESP_FROM_SGW",
+                                "Actions":[
+                                    "PROCESS_DEL_SESSION_RESP",
+                                    "DETACH_ACCEPT_TO_UE"
+                                ],
+                                "NextState":"end_state"
+                            }
+                        ]
+                    }
+                ]
+            },
+            {
+                "Name":"S1_RELEASE",
+                "States":[
+                    {
+                        "Name":"s1_release_start",
+                        "Events":[
+                            {
+                                "Name":"S1_REL_REQ_FROM_UE",
+                                "Actions":[
+                                    "SEND_REL_AB_REQ_TO_SGW"
+                                ],
+                                "NextState":"s1_release_wf_release_access_bearer_resp"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"s1_release_wf_release_access_bearer_resp",
+                        "Events":[
+                            {
+                                "Name":"REL_AB_RESP_FROM_SGW",
+                                "Actions":[
+                                    "PROCESS_REL_AB_RESP_FROM_SGW",
+                                    "SEND_S1_REL_CMD_TO_UE"
+                                ],
+                                "NextState":"s1_release_wf_ue_ctxt_release_comp"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"s1_release_wf_ue_ctxt_release_comp",
+                        "Events":[
+                            {
+                                "Name":"UE_CTXT_REL_COMP_FROM_ENB",
+                                "Actions":[
+                                    "PROCESS_UE_CTXT_REL_COMP"
+                                ],
+                                "NextState":"end_state"
+                            }
+                        ]
+                    }
+                ]
+            },
+            {
+                "Name":"NETWORK_INIT_DETACH",
+                "States":[
+                    {
+                        "Name":"ni_detach_start",
+                        "Events":[
+                            {
+                                "Name":"CLR_FROM_HSS",
+                                "Actions":[
+                                    "NI_DETACH_REQ_TO_UE",
+                                    "DEL_SESSION_REQ"
+                                ],
+                                "NextState":"ni_detach_wf_det_accpt_del_sess_resp"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"ni_detach_wf_det_accpt_del_sess_resp",
+                        "Events":[
+                            {
+                                "Name":"DETACH_ACCEPT_FROM_UE",
+                                "Actions":[
+                                    "PROCESS_DETACH_ACCEPT_FROM_UE"
+                                ],
+                                "NextState":"ni_detach_wf_del_sess_resp"
+                            },
+                            {
+                                "Name":"DEL_SESSION_RESP_FROM_SGW",
+                                "Actions":[
+                                    "PROCESS_DEL_SESSION_RESP"
+                                ],
+                                "NextState":"ni_detach_wf_detach_accept"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"ni_detach_wf_del_sess_resp",
+                        "Events":[
+                            {
+                                "Name":"DEL_SESSION_RESP_FROM_SGW",
+                                "Actions":[
+                                    "PROCESS_DEL_SESSION_RESP",
+                                    "SEND_S1_REL_CMD_TO_UE"
+                                ],
+                                "NextState":"ni_detach_wf_s1_rel_comp"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"ni_detach_wf_detach_accept",
+                        "Events":[
+                            {
+                                "Name":"DETACH_ACCEPT_FROM_UE",
+                                "Actions":[
+                                    "PROCESS_DETACH_ACCEPT_FROM_UE",
+                                    "SEND_S1_REL_CMD_TO_UE_FOR_DETACH"
+                                ],
+                                "NextState":"ni_detach_wf_s1_rel_comp"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"ni_detach_wf_s1_rel_comp",
+                        "Events":[
+                            {
+                                "Name":"UE_CTXT_REL_COMP_FROM_ENB",
+                                "Actions":[
+                                    "PROCESS_UE_CTXT_REL_COMP_FOR_DETACH"
+                                ],
+                                "NextState":"end_state"
+                            }
+                        ]
+                    }
+                ]
+            },
+            {
+                "Name":"SERVICE_REQUEST",
+                "States":[
+                    {
+                        "Name":"paging_start",
+                        "Events":[
+                            {
+                                "Name":"DDN_FROM_SGW",
+                                "Actions":[
+                                    "SEND_PAGING_REQ_TO_UE"
+                                ],
+                                "NextState":"paging_wf_service_req"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"service_request_start",
+                        "Events":[
+                            {
+                                "Name":"SERVICE_REQUEST_FROM_UE",
+                                "Actions":[
+                                    "PROCESS_SERVICE_REQUEST",
+                                    "PERFORM_AUTH_AND_SEC_CHECK"
+                                ],
+                                "NextState":"service_request_wf_auth_and_sec_check_cmp"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"paging_wf_service_req",
+                        "Events":[
+                            {
+                                "Name":"SERVICE_REQUEST_FROM_UE",
+                                "Actions":[
+                                    "PROCESS_SERVICE_REQUEST",
+                                    "SEND_DDN_ACK_TO_SGW",
+                                    "PERFORM_AUTH_AND_SEC_CHECK"
+                                ],
+                                "NextState":"service_request_wf_auth_and_sec_check_cmp"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"service_request_wf_auth_and_sec_check_cmp",
+                        "Events":[
+                            {
+                                "Name":"AUTH_AND_SEC_CHECK_COMPLETE",
+                                "Actions":[
+                                    "SEND_INIT_CTXT_REQ_TO_UE_SVC_REQ"
+                                ],
+                                "NextState":"service_request_wf_init_ctxt_resp"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"service_request_wf_init_ctxt_resp",
+                        "Events":[
+                            {
+                                "Name":"INIT_CTXT_RESP_FROM_UE",
+                                "Actions":[
+                                    "PROCESS_INIT_CTXT_RESP_SVC_REQ",
+                                    "SEND_MB_REQ_TO_SGW_SVC_REQ"
+                                ],
+                                "NextState":"service_request_wf_mb_resp"
+                            }
+                        ]
+                    },
+                    {
+                        "Name":"service_request_wf_mb_resp",
+                        "Events":[
+                            {
+                                "Name":"MB_RESP_FROM_SGW",
+                                "Actions":[
+                                    "PROCESS_MB_RESP_SVC_REQ"
+                                ],
+                                "NextState":"end_state"
+                            }
+                        ]
+                    }
+                ]
+            },
+            {
+                "Name":"TAU",
+                "States":[
+                    {
+                        "Name":"tau_start",
+                        "Events":[
+                            {
+                                "Name":"TAU_REQUEST_FROM_UE",
+                                "Actions":[
+                                    "SEND_TAU_RESPONSE_TO_UE"
+                                ],
+                                "NextState":"end_state"
+                            }
+                        ]
+                    }
+                ]
+            }
+        ]
+    }
+}
\ No newline at end of file
diff --git a/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.cpp.tt b/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.cpp.tt
new file mode 100644
index 0000000..f95a5a7
--- /dev/null
+++ b/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.cpp.tt
@@ -0,0 +1,71 @@
+ [%- DataBlock = TemplateInputVar %]
+ [%- USE String %]
+ [%- MACRO CLASSNAME(str) BLOCK %]
+ [%- className =  String.new %]
+ [%- strList =  String.new(str).split("_") %]
+ [%- FOREACH str = strList %]
+ [%-    token = className.append(String.new(str).capital.text()) %]
+ [%- END %]
+ [%- className = className.append("Manager") %]
+ [%- className %]
+ [%- END %]
+ [%- MACRO FILENAME(str) BLOCK %]
+ [%- fileName =  String.new %]
+ [%- str = CLASSNAME(str) %]
+ [%- fileName = fileName.append(str.substr(0,1)).lower %]
+ [%- fileName = fileName.append(str.substr(1)) %]
+ [%- fileName %]
+ [%- END %] 
+ [%- poolMgrClassName = CLASSNAME(DataBlock.BlockName) -%]
+/*
+ * Copyright 2019-present Infosys Limited  
+ *   
+ * SPDX-License-Identifier: Apache-2.0    
+ */ 
+/******************************************************************************
+ * [% FILENAME(DataBlock.BlockName) %].cpp
+ * 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.cpp.tt>
+ ******************************************************************************/
+
+#include "memPoolManager.h"
+#include "contextManager/dataBlocks.h"
+#include "contextManager/[% FILENAME(DataBlock.BlockName) %].h"
+
+using namespace cmn::memPool;
+
+namespace mme
+{
+	/******************************************************************************
+	* Constructor
+	******************************************************************************/
+	[%poolMgrClassName%]::[%poolMgrClassName%](int numOfBlocks):poolManager_m(numOfBlocks)
+	{
+	}
+	
+	/******************************************************************************
+	* Destructor
+	******************************************************************************/
+	[%poolMgrClassName%]::~[%poolMgrClassName%]()
+	{
+	}
+	
+	/******************************************************************************
+	* Allocate [% DataBlock.BlockName %] data block
+	******************************************************************************/
+	[% DataBlock.BlockName %]* [%poolMgrClassName%]::allocate[% DataBlock.BlockName %]()
+	{
+		[% DataBlock.BlockName %]* [% DataBlock.BlockName %]_p = poolManager_m.allocate();
+		return [% DataBlock.BlockName %]_p;
+	}
+	
+	/******************************************************************************
+	* Deallocate a [% DataBlock.BlockName %] data block
+	******************************************************************************/
+	void [%poolMgrClassName%]::deallocate[% DataBlock.BlockName %]([% DataBlock.BlockName %]* [% DataBlock.BlockName %]p)
+	{
+		poolManager_m.free( [% DataBlock.BlockName %]p );
+	}
+}
\ No newline at end of file
diff --git a/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.h.tt b/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.h.tt
new file mode 100644
index 0000000..5055d19
--- /dev/null
+++ b/scripts/SMCodeGen/templates/ctxtManagerTmpls/blockPoolManager.h.tt
@@ -0,0 +1,82 @@
+ [%- DataBlock = TemplateInputVar %]
+ [%- USE String %]
+ [%- MACRO CLASSNAME(str) BLOCK %]
+ [%- className =  String.new %]
+ [%- strList =  String.new(str).split("_") %]
+ [%- FOREACH str = strList %]
+ [%-    token = className.append(String.new(str).capital.text()) %]
+ [%- END %]
+ [%- className = className.append("Manager") %]
+ [%- className %]
+ [%- END %]
+ [%- MACRO FILENAME(str) BLOCK %]
+ [%- fileName =  String.new %]
+ [%- str = CLASSNAME(str) %]
+ [%- fileName = fileName.append(str.substr(0,1)).lower %]
+ [%- fileName = fileName.append(str.substr(1)) %]
+ [%- fileName %]
+ [%- END %] 
+ [%- poolMgrClassName = CLASSNAME(DataBlock.BlockName) -%]
+/*
+ * 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 __[% poolMgrClassName %]__
+#define __[% poolMgrClassName %]__
+/******************************************************
+* [% FILENAME(DataBlock.BlockName) %].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 [%DataBlock.BlockName%];
+	class [%poolMgrClassName%]
+	{
+	public:
+		/****************************************
+		* [% poolMgrClassName %]
+		*  constructor
+		****************************************/
+		[%poolMgrClassName%](int numOfBlocks);
+		
+		/****************************************
+		* [% poolMgrClassName %]
+		*    Destructor
+		****************************************/
+		~[%poolMgrClassName%]();
+		
+		/******************************************
+		 * allocate[% DataBlock.BlockName %]
+		 *  allocate [% DataBlock.BlockName %] data block
+		 ******************************************/
+		[% DataBlock.BlockName %]* allocate[% DataBlock.BlockName %]();
+		
+		/******************************************
+		 * deallocate[% DataBlock.BlockName %]
+		 *  deallocate a [% DataBlock.BlockName %] data block
+		 ******************************************/
+		void deallocate[% DataBlock.BlockName %]([% DataBlock.BlockName %]* [% DataBlock.BlockName %]p );
+	
+	private:
+		cmn::memPool::MemPoolManager<[% DataBlock.BlockName %]> poolManager_m;
+	};
+};
+
+#endif
+		
+		
\ No newline at end of file
diff --git a/scripts/SMCodeGen/templates/ctxtManagerTmpls/dataBlocks.cpp.tt b/scripts/SMCodeGen/templates/ctxtManagerTmpls/dataBlocks.cpp.tt
new file mode 100644
index 0000000..18a1626
--- /dev/null
+++ b/scripts/SMCodeGen/templates/ctxtManagerTmpls/dataBlocks.cpp.tt
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2019-present Infosys Limited  
+ *   
+ * SPDX-License-Identifier: Apache-2.0    
+ */
+ [%- DataStore = templateIn %]
+ [%- USE String %]
+ [%- MACRO CLASSNAME(str) BLOCK %]
+ [%- className =  String.new %]
+ [%- strList =  String.new(str).split("_") %]
+ [%- FOREACH str = strList %]
+ [%-    token = className.append(String.new(str).capital.text()) %]
+ [%- END %]
+ [%- className %]
+ [%- END %]
+ [%- MACRO REF(str) BLOCK %]
+ [%- primTypeList = [ "int", "short", "uint8_t", "uint16_t", "uint32_t", "unsigned int", "unsigned char", "unsigned short", "bool" ] %]
+ [%- reference = String.new %]
+ [%- reference = '&' %]
+ [%- FOREACH type = primTypeList %]
+ [%- 	IF str == type %]
+ [%-			reference = '' %]
+ [%-		END %]
+ [%- END %]
+ [%- reference %]
+ [%- END %]
+/**************************************
+ *
+ * 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.cpp.tt>
+ ***************************************/
+#include "mmeBlocks/dataBlocks.h"
+
+namespace mme
+{
+	[%- FOREACH DataGroup = DataStore.DataGroups %]
+	[%- FOREACH DataBlock = DataGroup.DataBlocks %]
+	[%- dataBlockClassName = CLASSNAME(DataBlock.BlockName) %]
+	/******************************************************************************
+	*******************************************************************************
+	*							[% dataBlockClassName %]
+	*******************************************************************************
+	******************************************************************************/
+	
+	/******************************************************************************
+	* Constructor
+	******************************************************************************/
+	[% dataBlockClassName %]::[% dataBlockClassName %]()
+	{
+	}
+	
+	/******************************************************************************
+	* Destructor
+	******************************************************************************/
+	[% dataBlockClassName %]::~[% dataBlockClassName %]()
+	{
+	}
+	
+	[%- FOREACH Data = DataBlock.Data %]
+	/******************************************************************************
+	* sets [% Data.Name %]
+	******************************************************************************/
+	void [% dataBlockClassName %]::set[% Data.Name %]( const [% Data.Type %][% REF(Data.Type) %] [% Data.Name %]_i )
+	{
+		[% Data.Name %]_m = [% Data.Name %]_i;
+	}
+	
+	/******************************************************************************
+	* returns [% Data.Name %]
+	******************************************************************************/	
+	const [% Data.Type %][% REF(Data.Type) %] [% dataBlockClassName %]::get[% Data.Name %]()const
+	{
+		return [% Data.Name %]_m;
+	}
+	[%- END %]
+	
+	[%- FOREACH Child = DataBlock.Children %]
+	/******************************************************************************
+	* sets [% Child %]
+	******************************************************************************/
+	void [% dataBlockClassName %]::set[% Child %]( [% Child %]* [% Child %]p )
+	{
+		[% Child %]_mp = [% Child %]p;
+	}
+	
+	/******************************************************************************
+	* returns [% Child %]
+	******************************************************************************/
+	[% Child %]* [% dataBlockClassName %]::get[% Child %]()
+	{
+		return [% Child %]_mp;
+	}
+[%- END %]
+[%- END %]
+[%- END %]
+} // mme
\ No newline at end of file
diff --git a/scripts/SMCodeGen/templates/ctxtManagerTmpls/dataBlocks.h.tt b/scripts/SMCodeGen/templates/ctxtManagerTmpls/dataBlocks.h.tt
new file mode 100644
index 0000000..51a189d
--- /dev/null
+++ b/scripts/SMCodeGen/templates/ctxtManagerTmpls/dataBlocks.h.tt
@@ -0,0 +1,121 @@
+ [%- DataStore = templateIn %]
+ [%- USE String %]
+ [%- MACRO CLASSNAME(str) BLOCK %]
+ [%- className =  String.new %]
+ [%- strList =  String.new(str).split("_") %]
+ [%- FOREACH str = strList %]
+ [%-    token = className.append(String.new(str).capital.text()) %]
+ [%- END %]
+ [%- className %]
+ [%- END %]
+ [%- MACRO REF(str) BLOCK %]
+ [%- primTypeList = [ "int", "short", "uint8_t", "uint16_t", "uint32_t", "unsigned int", "unsigned char", "unsigned short", "bool" ] %]
+ [%- reference = String.new %]
+ [%- reference = '&' %]
+ [%- FOREACH type = primTypeList %]
+ [%- 	IF str == type %]
+ [%-			reference = '' %]
+ [%-		END %]
+ [%- END %]
+ [%- reference %]
+ [%- END %]
+ /*
+ * 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 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 "permDataBlock.h"
+#include "tempDataBlock.h"
+#include "structs.h"
+
+namespace mme
+{
+	[%- FOREACH DataGroup = DataStore.DataGroups %]
+	[%- FOREACH DataBlock = DataGroup.DataBlocks %]
+	[%- dataBlockClassName = CLASSNAME(DataBlock.BlockName) %]
+	class [% dataBlockClassName %];
+	[%- END %]
+	[%- END %]
+	
+	[%- FOREACH DataGroup = DataStore.DataGroups %]
+	[%- FOREACH DataBlock = DataGroup.DataBlocks %]
+	[%- dataBlockClassName = CLASSNAME(DataBlock.BlockName) %] 
+	class [% dataBlockClassName %]:public SM::[% IF DataBlock.BlockType == 'Permanent' %]PermDataBlock[% ELSE %]TempDataBlock[%- END %]
+	{
+		public:
+	
+			/****************************************
+			* [% dataBlockClassName %]
+			*    constructor
+			****************************************/
+			[% dataBlockClassName %]();
+			
+			/****************************************
+			* ~[% dataBlockClassName %]
+			*    destructor
+			****************************************/
+			~[% dataBlockClassName %]();
+			
+			[%- FOREACH Data = DataBlock.Data %]
+			/****************************************
+			* set[% Data.Name %]
+			*    set [% Data.Name %] to [% dataBlockClassName %]
+			****************************************/
+			void set[% Data.Name %]( const [% Data.Type %][% REF(Data.Type) %] [% Data.Name %]_i );
+			
+			/****************************************
+			* get[% Data.Name %]
+			*    get [% Data.Name %] from [% dataBlockClassName %]
+			****************************************/
+			const [% Data.Type %][% REF(Data.Type) %] get[% Data.Name %]()const;
+			[% END %]
+			
+			[%- FOREACH Child = DataBlock.Children %]
+			/****************************************
+			* set[% Child %]
+			*    set [% Child %] to [% dataBlockClassName %]
+			****************************************/
+			void set[% Child %]( [% Child %]* [% Child %]p ) ;
+			
+			/****************************************
+			* get[% Child %]
+			*    get [% Child %] to [% dataBlockClassName %]
+			****************************************/
+			[% Child %]* get[% Child %]();
+			[% END %]
+		
+		private:
+		
+			[%- FOREACH Data = DataBlock.Data %]
+			[%- DataName = CLASSNAME(Data.Name) %]
+			// DataName
+			[% Data.Type %] [% Data.Name %]_m;
+			[% END %]
+			
+			[%- FOREACH Child = DataBlock.Children %]
+			// [% Child %]
+			[% Child %]* [% Child %]_mp;
+			[% END %]
+	};
+	[% END %]
+	[% END %]
+} // mme
+#endif
\ No newline at end of file
diff --git a/scripts/SMCodeGen/templates/ctxtManagerTmpls/subsDataGroupManager.cpp.tt b/scripts/SMCodeGen/templates/ctxtManagerTmpls/subsDataGroupManager.cpp.tt
new file mode 100644
index 0000000..44b5a2f
--- /dev/null
+++ b/scripts/SMCodeGen/templates/ctxtManagerTmpls/subsDataGroupManager.cpp.tt
@@ -0,0 +1,135 @@
+[%- DataGroup = TemplateInputVar %]
+[%- USE String %]
+[%- MACRO CLASSNAME(str) BLOCK %]
+[%- className =  String.new %]
+[%- strList =  String.new(str).split("_") %]
+[%- FOREACH str = strList %]
+[%-    token = className.append(String.new(str).capital.text()) %]
+[%- END %]
+[%- className = className.append( "Manager" ) %]
+[%- className %]
+[%- END -%]
+/*
+ * Copyright 2019-present Infosys Limited  
+ *   
+ * SPDX-License-Identifier: Apache-2.0    
+ */
+ 
+/**************************************
+ *
+ * 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.cpp.tt>
+ ***************************************/
+#include "contextManager/subsDataGroupManager.h"
+#include "log.h"
+#include "mmeStates/defaultMmeState.h"
+#include <sstream>
+
+namespace mme
+{
+	/******************************************************************************
+	* Constructor
+	******************************************************************************/
+	SubsDataGroupManager::SubsDataGroupManager()
+	{
+		[%- FOREACH DataBlock = DataGroup.DataBlocks %]
+			[% CLASSNAME(DataBlock.BlockName) %]m_p = NULL;
+		[%- END %]
+
+		initialize();
+	}
+	
+	/******************************************************************************
+	* Destructor
+	******************************************************************************/
+	SubsDataGroupManager::~SubsDataGroupManager()
+	{
+		[%- FOREACH DataBlock = DataGroup.DataBlocks %]
+			delete [% CLASSNAME(DataBlock.BlockName) %]m_p;
+		[%- END %]
+	}
+	
+	/******************************************
+	*  Initializes control block and pool managers
+	******************************************/
+	void SubsDataGroupManager::initialize()
+	{
+	    initializeCBStore([% DataGroup.PoolSize %]);
+
+		[%- FOREACH DataBlock = DataGroup.DataBlocks %]
+		[% CLASSNAME(DataBlock.BlockName) %]m_p = new [% CLASSNAME(DataBlock.BlockName) %]([% DataBlock.PoolSize %]);
+		[%- END %]
+	}
+	
+	/******************************************************************************
+	* creates and returns static instance
+	******************************************************************************/
+	SubsDataGroupManager* SubsDataGroupManager::Instance()
+	{
+			static SubsDataGroupManager subDataGroupMgr;
+			return &subDataGroupMgr;
+	}
+
+	[%- FOREACH DataBlock = DataGroup.DataBlocks %]
+	[% DataBlock.BlockName %]* SubsDataGroupManager::get[% DataBlock.BlockName %]()
+	{
+		return [% CLASSNAME(DataBlock.BlockName) %]m_p->allocate[% DataBlock.BlockName %]();
+	}
+
+	void SubsDataGroupManager::delete[% DataBlock.BlockName %]([% DataBlock.BlockName %]* [% DataBlock.BlockName %]p )
+	{
+		[% CLASSNAME(DataBlock.BlockName) %]m_p->deallocate[% DataBlock.BlockName %]( [% DataBlock.BlockName %]p );
+	}
+	[%- END %]
+	
+	[%- FOREACH DataBlock = DataGroup.DataBlocks %]
+		[%- FOREACH Data = DataBlock.Data %]
+			[%- IF Data.Key == 'Yes' %]
+	/******************************************
+	* Add a [% Data.Name %] as key and cb index as value to [% Data.Name %]_cb_id_map
+	******************************************/
+	int SubsDataGroupManager::add[% Data.Name %]key( [% Data.Type %] key, int cb_index )
+	{
+        std::lock_guard<std::mutex> lock([% Data.Name %]_cb_id_map_mutex);
+        
+        int rc = 1;
+        
+		auto itr = [% Data.Name %]_cb_id_map.insert(std::pair<[% Data.Type %], int>( key, cb_index ));
+		if(itr.second == false)
+		{
+			rc = -1;
+		}
+		return rc;
+	}
+	
+	/******************************************
+	* Delete a [% Data.Name %] key from [% Data.Name %]_cb_id_map
+	******************************************/		
+	int SubsDataGroupManager::delete[% Data.Name %]key( [% Data.Type %] key )
+	{
+        std::lock_guard<std::mutex> lock([% Data.Name %]_cb_id_map_mutex);
+ 
+		return [% Data.Name %]_cb_id_map.erase( key );
+	}
+	
+	/******************************************
+	* Find cb with given [% Data.Name %] from [% Data.Name %]_cb_id_map
+	* returns -1 if not found, else cb index
+	******************************************/	
+	int SubsDataGroupManager::findCBWith[% Data.Name %]( [% Data.Type %] key )
+	{
+        std::lock_guard<std::mutex> lock([% Data.Name %]_cb_id_map_mutex);
+        
+		auto itr = [% Data.Name %]_cb_id_map.find( key );
+		if( itr != [% Data.Name %]_cb_id_map.end())
+		{
+			return itr->second;
+		}
+		return -1;
+	}
+		     [%- END %]
+	    [%- END %]
+[%- END %]
+}
\ No newline at end of file
diff --git a/scripts/SMCodeGen/templates/ctxtManagerTmpls/subsDataGroupManager.h.tt b/scripts/SMCodeGen/templates/ctxtManagerTmpls/subsDataGroupManager.h.tt
new file mode 100644
index 0000000..dc34dec
--- /dev/null
+++ b/scripts/SMCodeGen/templates/ctxtManagerTmpls/subsDataGroupManager.h.tt
@@ -0,0 +1,148 @@
+ [%- DataGroup = TemplateInputVar %]
+ [%- USE String %]
+ [%- MACRO CLASSNAME(str) BLOCK %]
+ [%- className =  String.new %]
+ [%- strList =  String.new(str).split("_") %]
+ [%- FOREACH str = strList %]
+ [%-    token = className.append(String.new(str).capital.text()) %]
+ [%- END %]
+ [%- className = className.append( "Manager" ) %]
+ [%- className %]
+ [%- END %]
+ [%- MACRO FILENAME(str) BLOCK %]
+ [%- fileName =  String.new %]
+ [%- str = CLASSNAME(str) %]
+ [%- fileName = fileName.append(str.substr(0,1)).lower %]
+ [%- fileName = fileName.append(str.substr(1)) %]
+ [%- fileName %]
+ [%- END -%]
+/*
+ * 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 "dataGroupManager.h"
+#include "contextManager/dataBlocks.h"
+[%- IF DataGroup.DgName == 'SubscriberData' %]
+[%- FOREACH DataBlock = DataGroup.DataBlocks %]
+#include "contextManager/[% FILENAME(DataBlock.BlockName) %].h"
+[%- END %]
+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();
+
+			[%- FOREACH DataBlock = DataGroup.DataBlocks %]
+			/******************************************
+			 * get[% DataBlock.BlockName %]
+			 *  Get [% DataBlock.BlockName %] data block
+			 ******************************************/
+			[% DataBlock.BlockName %]* get[% DataBlock.BlockName %]();
+			
+			/******************************************
+			 * delete[% DataBlock.BlockName %]
+			 *  Delete a [% DataBlock.BlockName %] data block
+			 ******************************************/
+			void delete[% DataBlock.BlockName %]([% DataBlock.BlockName %]* [% DataBlock.BlockName %]p );
+			[%- END %]
+			
+			[%- FOREACH DataBlock = DataGroup.DataBlocks %]
+				[%- FOREACH Data = DataBlock.Data %]
+					[%- IF Data.Key == 'Yes' %]
+			/******************************************
+			* add[% Data.Name %]key
+			* Add a [% Data.Name %] as key and cb index as value to [% Data.Name %]_cb_id_map
+			******************************************/
+			int add[% Data.Name %]key( [% Data.Type %] key, int cb_index );
+			
+			/******************************************
+			* delete[% Data.Name %]key
+			* delete a [% Data.Name %] key from [% Data.Name %]_cb_id_map
+			******************************************/		
+			int delete[% Data.Name %]key( [% Data.Type %] key );
+			
+			/******************************************
+			* findCBWith[% Data.Name %]
+			* Find cb with given [% Data.Name %] from [% Data.Name %]_cb_id_map
+			******************************************/	
+			int findCBWith[% Data.Name %]( [% Data.Type %] key );
+					[%- END %]
+				[%- END %]
+			[%- END %]
+			
+			
+		private:
+			
+			/****************************************
+			* SubsDataGroupManager
+			*    Private constructor
+			****************************************/
+			SubsDataGroupManager();  
+			
+			[%- FOREACH DataBlock = DataGroup.DataBlocks %]
+			/****************************************
+			* [% DataBlock.BlockName %] Pool Manager
+			****************************************/
+			[% CLASSNAME(DataBlock.BlockName) %]* [% CLASSNAME(DataBlock.BlockName) %]m_p;
+			
+			[%- END %]
+			
+			[%- FOREACH DataBlock = DataGroup.DataBlocks %]
+				[%- FOREACH Data = DataBlock.Data %]
+					[%- IF Data.Key == 'Yes' %]
+			/****************************************
+			* [% Data.Name %] Key Map
+			****************************************/
+			std::map<[% Data.Type %],int> [% Data.Name %]_cb_id_map;
+			
+			/****************************************
+			* [% Data.Name %] Key Map
+			****************************************/
+			std::mutex [% Data.Name %]_cb_id_map_mutex;			
+					[%- END %]
+				[%- END %]
+			[%- END %]
+	};
+};
+[% END %]
+
+#endif
\ No newline at end of file
diff --git a/scripts/SMCodeGen/templates/stateMachineTmpls/actionHandlers.cpp.tt b/scripts/SMCodeGen/templates/stateMachineTmpls/actionHandlers.cpp.tt
new file mode 100644
index 0000000..e4a98e2
--- /dev/null
+++ b/scripts/SMCodeGen/templates/stateMachineTmpls/actionHandlers.cpp.tt
@@ -0,0 +1,48 @@
+[%- BLOCK %]
+[%- actionList = [] %]
+[%- PYTHON %]
+procedure = [% TemplateInputVar %]
+actionNames = []
+import utils
+for state in procedure['States']:
+    for event in state['Events']:
+        for action in event['Actions']:
+            rc = utils.searchWordInDir(utils.outputDir, action.lower()) 
+            if rc is False:
+                actionNames.append(action.lower())
+flag =  utils.isFileEmpty(utils.outputDir, utils.outputFileName)
+stash.set('actionList', actionNames)
+stash.set('includeHeader', flag)
+[%- END %]
+[%- END %]
+[%- IF includeHeader == 1 -%]
+/*
+ * Copyright 2019-present Infosys Limited  
+ *   
+ * SPDX-License-Identifier: Apache-2.0    
+ */
+ 
+/******************************************************************************
+ *
+ * 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/stateMachineTmpls/actionHandlers.cpp.tt>
+ ******************************************************************************/
+#include "actionHandlers/actionHandlers.h"
+#include "controlBlock.h" 
+
+using namespace mme;
+using namespace SM;
+
+[% END %]
+[%- FOREACH action = actionList -%]
+/***************************************
+* Action handler : [% action %]
+***************************************/
+ActStatus ActionHandlers::[% action %](ControlBlock& cb)
+{
+    return ActStatus::PROCEED;
+}
+
+[% END -%]
diff --git a/scripts/SMCodeGen/templates/stateMachineTmpls/actionHandlers.h.tt b/scripts/SMCodeGen/templates/stateMachineTmpls/actionHandlers.h.tt
new file mode 100644
index 0000000..66fc613
--- /dev/null
+++ b/scripts/SMCodeGen/templates/stateMachineTmpls/actionHandlers.h.tt
@@ -0,0 +1,66 @@
+[%- actions = [] %]
+[%- FOREACH actionList = TemplateInputVar%]
+    [%- FOREACH actionObj = actionList%]
+    [%- actions.push(actionObj) %]
+    [%- END %]
+[%- END %]
+[%- actions = actions.unique.sort %]
+[%- USE String %]
+/*
+ * 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.
+ */
+
+/**************************************
+ * 
+ * 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/stateMachineTmpls/actionHandlers.h.tt>
+ **************************************/
+#ifndef ACTIONHANDLERS_H_
+#define ACTIONHANDLERS_H_
+
+#include "smTypes.h"
+
+namespace mme
+{
+    class ActionHandlers
+    {
+
+        /***************************************
+        * Constructor
+        ****************************************/
+        ActionHandlers()
+        {
+        }
+
+        /***************************************
+        * Destructor
+        ****************************************/
+        ~ActionHandlers()
+        {
+        }
+
+        public:
+        [%- FOREACH action = actions %]
+
+        /**********************************************
+        * Action handler : [%String.new(action).lower%]
+        ***********************************************/
+        static SM::ActStatus [%String.new(action).lower%](SM::ControlBlock& cb);                
+        [%-END%]
+    };//ActionHandlers
+};//mme
+
+#endif /* ACTIONHANDLERS_H_ */
\ No newline at end of file
diff --git a/scripts/SMCodeGen/templates/stateMachineTmpls/enum.tt b/scripts/SMCodeGen/templates/stateMachineTmpls/enum.tt
new file mode 100644
index 0000000..dd6c455
--- /dev/null
+++ b/scripts/SMCodeGen/templates/stateMachineTmpls/enum.tt
@@ -0,0 +1,85 @@
+[%- stateList = [] %]
+[%- eventList = [] %]
+[%- actionList = [] %]
+[%- FOREACH ProcedureList = TemplateInputVar %]
+    [%- FOREACH Procedure = ProcedureList %]
+        [%- FOREACH State = Procedure.States %]
+            [%- stateList.push(State.Name) %]
+            [%- FOREACH Event = State.Events %]
+                [%- eventList.push(Event.Name) %]
+                [%- actionList = actionList.merge(Event.Actions) %]
+            [%- END %]
+        [%- END %]
+    [%- END %]
+[%- END %]
+[%- stateList = stateList.unique.sort %]
+[%- eventList = eventList.unique.sort %]
+[%- actionList = actionList.unique.sort -%] 
+/*
+ * 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 SM_ENUMS_H
+#define SM_ENUMS_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/stateMachineTmpls/enum.tt>
+ **************************************/
+ 
+enum State_e
+{
+    [%- FOREACH state = stateList%] 
+    [% state %],[% END %]
+    END_STATE
+};
+
+static constexpr const char* States[] =
+{
+    [%- FOREACH state = stateList%]
+    "[% state %]",[%END%]
+    "END_STATE"
+};
+
+enum Event_e
+{
+    [%- FOREACH event = eventList%]
+    [% event %],[%END%]
+    END_EVENT
+};
+
+static constexpr const char* Events[] =
+{
+    [%- FOREACH event = eventList%]
+    "[% event %]",[%END%]
+    "END_EVENT"
+};
+
+enum Action_e
+{
+    [%- FOREACH actions = actionList%]
+    [% actions %],[% END %]
+    END_ACTION
+};
+
+static constexpr const char* Actions[] =
+{
+    [%- FOREACH action = actionList%]
+    "[% action %]",[%END%]
+    "END_ACTION"
+};
+
+#endif
\ No newline at end of file
diff --git a/scripts/SMCodeGen/templates/stateMachineTmpls/state.cpp.tt b/scripts/SMCodeGen/templates/stateMachineTmpls/state.cpp.tt
new file mode 100644
index 0000000..94e0425
--- /dev/null
+++ b/scripts/SMCodeGen/templates/stateMachineTmpls/state.cpp.tt
@@ -0,0 +1,87 @@
+ [%- State = TemplateInputVar %]
+ [%- USE String %]
+ [%- MACRO CLASSNAME(str) BLOCK %]
+ [%- className =  String.new %]
+ [%- strList =  String.new(str).lower.split("_") %]
+ [%- FOREACH str = strList %]
+ [%-    token = className.append(String.new(str).capital.text()) %]
+ [%- END %]
+ [%- className %]
+ [%- END %] 
+ [%- MACRO FILENAME(str) BLOCK %]
+ [%- fileName =  String.new %]
+ [%- str = CLASSNAME(str) %]
+ [%- fileName = fileName.append(str.substr(0,1)).lower %]
+ [%- fileName = fileName.append(str.substr(1)) %]
+ [%- fileName %]
+ [%- END %] 
+ [%- stateClassName = CLASSNAME(State.Name) %]
+/*
+ * Copyright 2019-present Infosys Limited  
+ *   
+ * SPDX-License-Identifier: Apache-2.0    
+ */
+ 
+/**************************************
+ * [% FILENAME(State.Name) %].cpp
+ * 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/stateMachineTmpls/state.cpp.tt>
+ **************************************/
+
+#include "smEnumTypes.h"
+#include "actionTable.h"
+#include "actionHandlers/actionHandlers.h"
+
+#include "mmeStates/[% FILENAME(State.Name) %].h"
+[%- FOREACH Event = State.Events %]
+[%- IF Event.NextState != "end_state" %]	
+#include "mmeStates/[% FILENAME(Event.NextState) %].h"
+[%- END %]
+[%- END %]
+
+using namespace mme;
+using namespace SM;
+
+/******************************************************************************
+* Constructor
+******************************************************************************/
+[% stateClassName %]::[% stateClassName %]():State(State_e::[% State.Name %])
+{
+}
+
+/******************************************************************************
+* Destructor
+******************************************************************************/
+[% stateClassName %]::~[% stateClassName %]()
+{
+}
+
+/******************************************************************************
+* creates and returns static instance
+******************************************************************************/
+[% stateClassName %]* [% stateClassName %]::Instance()
+{
+        static [% stateClassName %] state;
+        return &state;
+}
+
+/******************************************************************************
+* initializes eventToActionsMap
+******************************************************************************/
+void [% stateClassName %]::initialize()
+{
+        [%- FOREACH Event = State.Events %]
+        {
+                ActionTable actionTable;
+                [%- FOREACH Action = Event.Actions %]
+                actionTable.addAction(&ActionHandlers::[% String.new(Action).lower %]);
+                [%- END %]
+				[%- IF Event.NextState != "end_state" %]
+                actionTable.setNextState([% CLASSNAME(Event.NextState) %]::Instance());
+                [%- END %]
+                eventToActionsMap.insert(pair<Event_e, ActionTable>(Event_e::[% Event.Name %], actionTable));
+        }
+        [%- END %]
+}
diff --git a/scripts/SMCodeGen/templates/stateMachineTmpls/state.h.tt b/scripts/SMCodeGen/templates/stateMachineTmpls/state.h.tt
new file mode 100644
index 0000000..36feeec
--- /dev/null
+++ b/scripts/SMCodeGen/templates/stateMachineTmpls/state.h.tt
@@ -0,0 +1,79 @@
+ [%- State = TemplateInputVar %]
+ [%- USE String %]
+ [%- MACRO CLASSNAME(str) BLOCK %]
+ [%- className =  String.new %]
+ [%- strList =  String.new(str).lower.split("_") %]
+ [%- FOREACH str = strList %]
+ [%-    token = className.append(String.new(str).capital.text()) %]
+ [%- END %]
+ [%- className %]
+ [%- END %]
+ [%- MACRO FILENAME(str) BLOCK %]
+ [%- fileName =  String.new %]
+ [%- str = CLASSNAME(str) %]
+ [%- fileName = fileName.append(str.substr(0,1)).lower %]
+ [%- fileName = fileName.append(str.substr(1)) %]
+ [%- fileName %]
+ [%- END %] 
+ [%- stateClassName = CLASSNAME(State.Name) -%]
+/*
+ * 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.
+ */
+ 
+ /******************************************************
+ * [% FILENAME(State.Name) %].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/stateMachineTmpls/state.h.tt>
+ ******************************************************/
+ 
+#ifndef __[% stateClassName %]__
+#define __[% stateClassName %]__
+
+#include "state.h"
+
+namespace mme {
+
+	class [% stateClassName %] : public SM::State
+	{
+		public:
+			/******************************************
+			* Instance 
+			*    Creates static instance for the state
+			*******************************************/
+			static [% stateClassName %]* Instance();
+
+			/****************************************
+			* [% stateClassName %]
+			*    Destructor
+			****************************************/
+			~[% stateClassName %]();			
+			
+			/******************************************
+			* initialize
+			*  Initializes action handlers for the state
+			* and next state
+			******************************************/
+			void initialize();
+	
+		private:
+			/****************************************
+			* [% stateClassName %]
+			*    Private constructor
+			****************************************/
+			[% stateClassName %]();  
+	};
+};
+#endif // __[% stateClassName %]__
diff --git a/scripts/SMCodeGen/templates/stateMachineTmpls/stateFactory.cpp.tt b/scripts/SMCodeGen/templates/stateMachineTmpls/stateFactory.cpp.tt
new file mode 100644
index 0000000..74cb717
--- /dev/null
+++ b/scripts/SMCodeGen/templates/stateMachineTmpls/stateFactory.cpp.tt
@@ -0,0 +1,78 @@
+ [%- USE String %]
+ [%- MACRO CLASSNAME(str) BLOCK %]
+ [%- className =  String.new %]
+ [%- strList =  String.new(str).lower.split("_") %]
+ [%- FOREACH str = strList %]
+ [%-    token = className.append(String.new(str).capital.text()) %]
+ [%- END %]
+ [%- className %]
+ [%- END %]
+ [%- MACRO FILENAME(str) BLOCK %]
+ [%- fileName =  String.new %]
+ [%- str = CLASSNAME(str) %]
+ [%- fileName = fileName.append(str.substr(0,1)).lower %]
+ [%- fileName = fileName.append(str.substr(1)) %]
+ [%- fileName %]
+ [%- END %]
+ [%- stateList = [] %]
+ [%- FOREACH StatesArray = TemplateInputVar %]
+    [%- FOREACH State = StatesArray %]
+        [%- stateList.push(State.Name) %]
+    [%- END %]
+ [%- END %]
+ [%- stateList = stateList.unique.sort %]
+/*
+ * Copyright 2019-present Infosys Limited  
+ *   
+ * SPDX-License-Identifier: Apache-2.0    
+ */
+ 
+/**************************************
+ * [% FILENAME(State.Name) %].cpp
+ * 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/stateMachineTmpls/stateFactory.cpp.tt>
+ **************************************/
+
+#include "mmeStates/stateFactory.h"
+[%- FOREACH state = stateList%]
+[%- IF state != "end_state" %]
+#include "mmeStates/[% FILENAME(state) %].h"
+[%- END %]
+[%- END %]    
+
+using namespace mme;
+
+/**********************************************
+* Constructor
+***********************************************/
+StateFactory::StateFactory()
+{
+}
+
+/**********************************************
+* Destructor
+***********************************************/
+StateFactory::~StateFactory()
+{
+}
+
+/**********************************************
+* creates and returns static instance
+***********************************************/
+
+StateFactory* StateFactory::Instance()
+{
+	static StateFactory instance;
+	return &instance;
+}
+
+void StateFactory::initialize()
+{
+    [%- FOREACH state = stateList%]
+	[%- IF state != "end_state" %]
+	[% CLASSNAME(state) %]::Instance()->initialize();
+	[%- END %]
+    [%- END %]
+}
diff --git a/scripts/SMCodeGen/templates/stateMachineTmpls/stateFactory.h.tt b/scripts/SMCodeGen/templates/stateMachineTmpls/stateFactory.h.tt
new file mode 100644
index 0000000..5367e85
--- /dev/null
+++ b/scripts/SMCodeGen/templates/stateMachineTmpls/stateFactory.h.tt
@@ -0,0 +1,58 @@
+/*
+ * 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.
+ */
+ 
+/**************************************
+ * 
+ * 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/stateMachineTmpls/stateFactory.h.tt>
+ **************************************/
+
+#ifndef __StateFactory__
+#define __StateFactory__
+
+namespace mme {
+	class StateFactory {
+            public:
+			/******************************************
+			* Instance
+			*   Creates static instance for the state
+			*******************************************/
+            static StateFactory* Instance();
+
+			/*****************************************
+			* StateFactory
+			*   Destructor
+			*****************************************/
+			~StateFactory();
+
+			/******************************************
+			* initialize
+			*  Initializes action handlers for the state
+			* and next state
+			******************************************/
+             void initialize();
+
+            private:
+			/****************************************
+			* StateFactory
+			*	Private constructor
+			****************************************/
+            StateFactory();
+
+	};
+};
+#endif // __StateFactory__
diff --git a/scripts/SMCodeGen/utils.py b/scripts/SMCodeGen/utils.py
new file mode 100644
index 0000000..49e49cc
--- /dev/null
+++ b/scripts/SMCodeGen/utils.py
@@ -0,0 +1,96 @@
+# 
+# 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.
+# 
+
+import os
+from os import listdir
+from os.path import isfile, join
+
+# Globals
+ttFileName = ''            
+outputDir = ''
+outputFile = ''
+outputFileKeyword = ''
+outputFileExt = ''
+outputFileName = ''
+mode = ''
+
+def WriteFile(dirName, fileName, content, fileMode):
+    filePath = join(dirName, fileName)
+    accessMode = 'w+'
+    if (fileMode == 'append') :
+        accessMode = 'a+'
+    with open(filePath, accessMode) as File:
+        File.write(content)
+    
+def readFile(fileName):
+    if os.path.exists(fileName):
+        with open(fileName, 'r') as file:
+            return file.read()
+    return
+
+def searchWordInDir(path, word):
+    files = [f for f in listdir(path) if isfile(join(path, f))]
+    for i in files:
+        fileContent = open(join(path, i)).read()
+        if word in fileContent:
+            return True
+    return False
+
+
+def searchWordInFile(path, fileName, word):
+    if os.path.exists(join(path, fileName)):
+        with open(join(path, fileName)) as File:
+            fileContent = File.read()
+            if word in fileContent:
+                return True
+    return False
+
+def isFileEmpty(path, fileName):
+    fullPath = join(path, fileName)
+    if os.path.exists(fullPath):
+        if os.stat(fullPath).st_size > 0:
+            return 0
+        else :
+            return 1
+    return 1
+
+def getFileName(str):
+    if (str.find("_") != -1):
+        str = str.lower()
+        tokens = [x.capitalize() for x in str.split("_")]
+        fileName = ''
+        fileName = fileName.join(tokens)
+        return (fileName[0].lower() + fileName[1:])
+
+    return (str[0].lower() + str[1:])
+
+def get_key_values(obj, key):
+    arr = []
+    
+    def extract(obj, arr, key):
+        if isinstance(obj, dict):
+            for k,v in obj.items():
+                if k == key:
+                    arr.append(v)
+                elif isinstance(v, (dict, list)):
+                    extract(v, arr, key)
+        elif isinstance(obj,list):
+            for item in obj:
+                extract(item, arr, key)       
+        return arr
+    
+    results = extract (obj, arr, key)
+    return results
