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

Change-Id: Ie55032217232214ac8544ca76ea34335205329e4
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